├── .travis-database.yml
├── .travis-init.sh
├── .travis.yml
├── AUTHORS
├── Gemfile
├── README.md
├── app
├── controllers
│ ├── articles_controller.rb
│ └── categories_controller.rb
├── helpers
│ └── knowledgebase_helper.rb
├── models
│ ├── kb_article.rb
│ ├── kb_category.rb
│ └── kb_mailer.rb
└── views
│ ├── articles
│ ├── _breadcrumb.html.erb
│ ├── _comment_modal.html.erb
│ ├── _form.html.erb
│ ├── _history.html.erb
│ ├── _index_original.html.erb
│ ├── _index_tiled.html.erb
│ ├── _list.html.erb
│ ├── _list_articles.html.erb
│ ├── _list_table.html.erb
│ ├── _list_tiled.html.erb
│ ├── _rating.html.erb
│ ├── _sortbar.html.erb
│ ├── _thumbnail.html.erb
│ ├── _watchers.html.erb
│ ├── authored.html.erb
│ ├── comment.js.erb
│ ├── diff.html.erb
│ ├── edit.html.erb
│ ├── index.html.erb
│ ├── new.html.erb
│ ├── preview.html.erb
│ ├── rate.js.erb
│ ├── sections
│ │ ├── _attachments.html.erb
│ │ ├── _comments.html.erb
│ │ ├── _content.html.erb
│ │ └── _history.html.erb
│ ├── show.html.erb
│ ├── tagged.html.erb
│ └── version.html.erb
│ ├── categories
│ ├── _form.html.erb
│ ├── _jump_box.html.erb
│ ├── _tags.html.erb
│ ├── _tags_used.html.erb
│ ├── _tree.html.erb
│ ├── _tree_row.html.erb
│ ├── _watchers.html.erb
│ ├── edit.html.erb
│ ├── index.html.erb
│ ├── new.html.erb
│ └── show.html.erb
│ ├── kb_mailer
│ ├── article_comment.html.erb
│ ├── article_comment.text.erb
│ ├── article_create.html.erb
│ ├── article_create.text.erb
│ ├── article_destroy.html.erb
│ ├── article_destroy.text.erb
│ ├── article_update.html.erb
│ └── article_update.text.erb
│ └── redmine_knowledgebase
│ └── _knowledgebase_settings.html.erb
├── assets
├── images
│ ├── attachments.png
│ ├── category.png
│ ├── comments.png
│ ├── default-thumbnail.png
│ ├── delete.gif
│ ├── icon-bookmark.png
│ ├── icon-home.png
│ ├── icon-pdf.png
│ ├── icon-printer.png
│ ├── icon-word.png
│ ├── loading.gif
│ ├── page.png
│ ├── page_add.png
│ ├── page_edit.png
│ ├── page_white_add.png
│ ├── page_white_edit.png
│ ├── page_white_find.png
│ ├── page_white_key.png
│ ├── page_white_link.png
│ ├── page_white_magnify.png
│ ├── page_white_medal.png
│ ├── page_white_star.png
│ ├── page_white_text.png
│ └── star.gif
├── javascripts
│ ├── jquery.MetaData.js
│ ├── jquery.form.js
│ ├── jquery.rating.pack.js
│ ├── tag-it.LICENSE.txt
│ └── tag-it.min.js
└── stylesheets
│ ├── jquery.tagit.css
│ └── knowledgebase.css
├── bin
└── sync_translations.rb
├── config
├── locales
│ ├── bg.yml
│ ├── cs.yml
│ ├── de.yml
│ ├── el.yml
│ ├── en.yml
│ ├── es.yml
│ ├── fr.yml
│ ├── hu.yml
│ ├── it.yml
│ ├── ja.yml
│ ├── ko.yml
│ ├── nl.yml
│ ├── pl.yml
│ ├── pt-BR.yml
│ ├── ru.yml
│ ├── tr.yml
│ ├── zh-TW.yml
│ └── zh.yml
└── routes.rb
├── db
└── migrate
│ ├── 20100210212009_create_categories.rb
│ ├── 20100211210218_add_parent_id_to_categories.rb
│ ├── 20100211212704_create_articles.rb
│ ├── 20100213145708_add_author_to_article.rb
│ ├── 20100213201848_add_viewing_tables.rb
│ ├── 20100216000133_add_nested_set_boundries_to_category.rb
│ ├── 20100317201659_add_ratings_to_articles.rb
│ ├── 20100329103527_add_comments_count_to_articles.rb
│ ├── 20110131145123_add_project_id_to_articles.rb
│ ├── 20121005075010_add_updater_to_article.rb
│ ├── 20121030102100_add_project_id_to_categories.rb
│ ├── 20121205100143_add_versioning.rb
│ ├── 20130513154700_add_tags_and_taggings.rb
│ ├── 20141215120000_add_article_versions_comments.rb
│ ├── 20150326093104_add_missing_unique_indice.rb
│ ├── 20150326093122_add_taggings_counter_cache_to_tags.rb
│ ├── 20150326093139_add_missing_taggable_index.rb
│ ├── 20150616103300_change_column_article_to_long_text.rb
│ └── 20200409165301_add_redmineup_tags.rb.old
├── init.rb
├── lib
├── active_record
│ └── acts
│ │ ├── rated.rb
│ │ └── versioned.rb
├── concerns
│ └── knowledgebase_project_extension.rb
├── helpers
│ ├── knowledgebase_link_helper.rb
│ └── knowledgebase_settings_helper.rb
├── macros.rb
├── patches
│ └── user_patch.rb
└── redmine_knowledgebase.rb
├── screenshots
└── tiled-articles-201801.jpg
└── test
├── fixtures
├── enabled_modules.yml
├── kb_articles.yml
└── kb_categories.yml
├── functional
├── articles_controller_test.rb
└── categories_controller_test.rb
├── integration
└── accessing_articles_test.rb
├── test_helper.rb
└── unit
├── article_test.rb
└── category_test.rb
/.travis-database.yml:
--------------------------------------------------------------------------------
1 | test:
2 | adapter: sqlite3
3 | database: db/redmine_test.sqlite3
--------------------------------------------------------------------------------
/.travis-init.sh:
--------------------------------------------------------------------------------
1 | #/bin/bash
2 |
3 | if [[ ! "$WORKSPACE" = /* ]] ||
4 | [[ ! "$PATH_TO_PLUGIN" = /* ]] ||
5 | [[ ! "$PATH_TO_REDMINE" = /* ]];
6 | then
7 | echo "You should set"\
8 | " WORKSPACE, PATH_TO_PLUGIN, PATH_TO_REDMINE"\
9 | " environment variables"
10 | echo "You set:"\
11 | "$WORKSPACE"\
12 | "$PATH_TO_PLUGIN"\
13 | "$PATH_TO_REDMINE"
14 | exit 1;
15 | fi
16 |
17 | case $REDMINE_VERSION in
18 | 1.4.*) export PATH_TO_PLUGINS=./vendor/plugins # for redmine < 2.0
19 | export GENERATE_SECRET=generate_session_store
20 | export MIGRATE_PLUGINS=db:migrate_plugins
21 | export REDMINE_TARBALL=https://github.com/edavis10/redmine/archive/$REDMINE_VERSION.tar.gz
22 | ;;
23 | 2.*) export PATH_TO_PLUGINS=./plugins # for redmine 2.0
24 | export GENERATE_SECRET=generate_secret_token
25 | export MIGRATE_PLUGINS=redmine:plugins:migrate
26 | export REDMINE_TARBALL=https://github.com/edavis10/redmine/archive/$REDMINE_VERSION.tar.gz
27 | ;;
28 | master) export PATH_TO_PLUGINS=./plugins
29 | export GENERATE_SECRET=generate_secret_token
30 | export MIGRATE_PLUGINS=redmine:plugins:migrate
31 | export REDMINE_GIT_REPO=git://github.com/edavis10/redmine.git
32 | export REDMINE_GIT_TAG=master
33 | ;;
34 | *) echo "Unsupported platform $REDMINE_VERSION"
35 | exit 1
36 | ;;
37 | esac
38 |
39 | export BUNDLE_GEMFILE=$PATH_TO_REDMINE/Gemfile
40 |
41 | clone_redmine() {
42 | set -e # exit if clone fails
43 | rm -rf $PATH_TO_REDMINE
44 | if [ ! "$VERBOSE" = "yes" ]; then
45 | QUIET=--quiet
46 | fi
47 | if [ -n "${REDMINE_GIT_TAG}" ]; then
48 | git clone -b $REDMINE_GIT_TAG --depth=100 $QUIET $REDMINE_GIT_REPO $PATH_TO_REDMINE
49 | cd $PATH_TO_REDMINE
50 | git checkout $REDMINE_GIT_TAG
51 | else
52 | mkdir -p $PATH_TO_REDMINE
53 | wget $REDMINE_TARBALL -O- | tar -C $PATH_TO_REDMINE -xz --strip=1 --show-transformed -f -
54 | fi
55 | }
56 |
57 | run_tests() {
58 | # exit if tests fail
59 | set -e
60 |
61 | cd $PATH_TO_REDMINE
62 |
63 | if [ "$VERBOSE" = "yes" ]; then
64 | TRACE=--trace
65 | fi
66 |
67 | script -e -c "bundle exec rake redmine:plugins:test NAME="$PLUGIN $VERBOSE
68 | }
69 |
70 | uninstall() {
71 | set -e # exit if migrate fails
72 | cd $PATH_TO_REDMINE
73 | # clean up database
74 | if [ "$VERBOSE" = "yes" ]; then
75 | TRACE=--trace
76 | fi
77 | bundle exec rake $TRACE $MIGRATE_PLUGINS NAME=$PLUGIN VERSION=0
78 | }
79 |
80 | run_install() {
81 | # exit if install fails
82 | set -e
83 |
84 | # cd to redmine folder
85 | cd $PATH_TO_REDMINE
86 |
87 | # create a link to the plugin, but avoid recursive link.
88 | if [ -L "$PATH_TO_PLUGINS/$PLUGIN" ]; then rm "$PATH_TO_PLUGINS/$PLUGIN"; fi
89 | ln -s "$PATH_TO_PLUGIN" "$PATH_TO_PLUGINS/$PLUGIN"
90 |
91 | if [ "$VERBOSE" = "yes" ]; then
92 | export TRACE=--trace
93 | fi
94 |
95 | cp $PATH_TO_PLUGINS/$PLUGIN/.travis-database.yml config/database.yml
96 |
97 | # install gems
98 | mkdir -p vendor/bundle
99 | bundle install --path vendor/bundle
100 |
101 | bundle exec rake db:migrate $TRACE
102 | bundle exec rake redmine:load_default_data REDMINE_LANG=en $TRACE
103 | bundle exec rake $GENERATE_SECRET $TRACE
104 | bundle exec rake $MIGRATE_PLUGINS $TRACE
105 | }
106 |
107 | while getopts :irtu opt
108 | do case "$opt" in
109 | r) clone_redmine; exit 0;;
110 | i) run_install; exit 0;;
111 | t) run_tests $2; exit 0;;
112 | u) uninstall; exit 0;;
113 | [?]) echo "i: install; r: clone redmine; t: run tests; u: uninstall";;
114 | esac
115 | done
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: ruby
2 | rvm:
3 | - 2.0.0
4 | - 1.9.3
5 | env:
6 | - REDMINE_VERSION=2.3.3 VERBOSE=yes
7 | script:
8 | - export WORKSPACE=$(pwd)/workspace
9 | - export PLUGIN=redmine_knowledgebase
10 | - export PATH_TO_PLUGIN=$(pwd)
11 | - export PATH_TO_REDMINE=$WORKSPACE/redmine
12 | - mkdir $WORKSPACE
13 | - bash -x ./.travis-init.sh -r || exit 1
14 | - bash -x ./.travis-init.sh -i || exit 1
15 | - bash -x ./.travis-init.sh -t || exit 1
16 | - bash -x ./.travis-init.sh -u || exit 1
17 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
1 | ########################################################################
2 | # Developers #
3 | ########################################################################
4 |
5 | Lead Developers:
6 | * Alex Bevilacqua
7 | * Rob Spearman
8 |
9 | Contributors:
10 | * guilhem
11 | * shoorick
12 | * fabiob
13 | * Martin Denizet
14 | * Vojtech Horky
15 | * Yusuke Kokubo
16 | * Eduardo Aceituno
17 | * Keith Humm
18 | * Luis Saavedra
19 | * duanejevon
20 | * bennun
21 | * Harry Garrood
22 | * Daniel Felix
23 | * Messinger
24 | * xarlie
25 | * Eduard Kuleshov
26 | * Axel Kämpfe
27 | * jdkemme
28 |
29 | Documentation:
30 | * Alan Bowman
31 | * michaeljs1990
32 |
33 | ########################################################################
34 | # Translators #
35 | ########################################################################
36 |
37 | Brazilian Portugese:
38 | * Fábio D. Batista
39 |
40 | Bulgarian:
41 | * Ivan Cenov
42 |
43 | Chinese/Mandarin:
44 | * Martin Denizet
45 | * archonwang
46 | * igame2000
47 |
48 | Chinese/Taiwan:
49 | * Meng-yang
50 |
51 | Czech:
52 | * Vojtech Horky
53 |
54 | Dutch
55 | * greenwellness
56 |
57 | French:
58 | * Imrane Dessaï
59 | * Guilhem Lettron
60 | * myorama
61 | * Xavier Calland
62 | * LabriePierre
63 |
64 | German:
65 | * eschsa
66 | * cforce
67 | * Christoph Ackermann
68 | * Daniel Felix
69 | * namezero111111
70 |
71 | Greek:
72 | * Stef Kariotidis
73 |
74 | Hungarian:
75 | * László Kurta
76 |
77 | Japanese
78 | * maple
79 | * Shinichi Yanagisawa
80 |
81 | Korean
82 | * 오재복
83 | * Jong-Ha Ahn
84 |
85 | Italian:
86 | * Carlo Banfi
87 | * Andrea Saccavini
88 |
89 | Polish:
90 | * Tomasz Sawicki
91 | * jerzych
92 |
93 | Russian:
94 | * Pavel Lovtsevich
95 | * Sergey Bershadsky
96 | * DarkWanderer
97 | * Luckyvb
98 | * SlowProg
99 | * DiDimus
100 |
101 | Spanish:
102 | * Carlos Solano
103 | * dtamajon
104 |
105 | Swedish:
106 | * Peter Brauner
107 |
108 | Turkish:
109 | * Ismail Sezen
110 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | gem 'redmineup'
2 | gem 'ya2yaml'
3 | gem 'awesome_nested_set'
4 |
--------------------------------------------------------------------------------
/app/controllers/categories_controller.rb:
--------------------------------------------------------------------------------
1 | class CategoriesController < ApplicationController
2 | menu_item :articles
3 | helper :knowledgebase
4 | include KnowledgebaseHelper
5 | helper :watchers
6 | include WatchersHelper
7 |
8 | before_action :find_project_by_project_id, :authorize
9 | before_action :get_category, :only => [:show, :edit, :update, :destroy, :index]
10 | Rails.version > '5.0' ? accept_atom_auth(:show) : accept_rss_auth(:show)
11 |
12 | rescue_from ActiveRecord::RecordNotFound, :with => :force_404
13 |
14 | def index
15 |
16 | @articles = @project.articles.order("#{sort_column} #{sort_direction}")
17 |
18 | prepare
19 |
20 | respond_to do |format|
21 | format.html { render :template => 'categories/index', :layout => !request.xhr? }
22 | end
23 |
24 | end
25 |
26 | def show
27 |
28 | @articles = @category.articles.order("#{sort_column} #{sort_direction}")
29 |
30 | prepare
31 |
32 | @tags = @articles.tag_counts.sort { |a, b| a.name.downcase <=> b.name.downcase }
33 |
34 | respond_to do |format|
35 | format.html { render :template => 'categories/show', :layout => !request.xhr? }
36 | format.atom { render_feed(@articles, :title => "#{l(:knowledgebase_title)}: #{l(:label_category)}: #{@category.title}") }
37 | end
38 |
39 | end
40 |
41 | def new
42 | @category = KbCategory.new
43 | @parent_id = params[:parent_id]
44 | @categories=@project.categories.all
45 | end
46 |
47 | def create
48 | @category = KbCategory.new
49 | @category.safe_attributes = params[:category]
50 | @category.project_id=@project.id
51 | if @category.save
52 | # Test if the new category is a root category, and if more categories exist.
53 | # We check for a value > 1 because if this is the first entry, the category
54 | # count would be 1 (since the create operation already succeeded)
55 | if !params[:root_category] and @project.categories.count > 1
56 | @category.move_to_child_of(KbCategory.find(params[:parent_id]))
57 | end
58 |
59 | flash[:notice] = l(:label_category_created, :title => @category.title)
60 | redirect_to({ :action => 'show', :id => @category.id, :project_id => @project })
61 | else
62 | render(:action => 'new')
63 | end
64 | end
65 |
66 | def edit
67 | @parent_id = @category.parent_id
68 | @categories=@project.categories.all
69 | end
70 |
71 | def destroy
72 | @categories = @project.categories.all
73 |
74 | # Do not allow deletion of categories with existing subcategories
75 | @subcategories = @project.categories.where(:parent_id => @category.id)
76 |
77 | if @subcategories.size != 0
78 | @articles = @category.articles.all
79 | flash[:error] = l(:label_category_has_subcategory_cannot_delete)
80 | render(:action => 'show')
81 | elsif @category.articles.size != 0
82 | @articles = @category.articles.all
83 | flash[:error] = l(:label_category_not_empty_cannot_delete)
84 | render(:action => 'show')
85 | else
86 | @category.destroy
87 | flash[:notice] = l(:label_category_deleted)
88 | redirect_to({ :controller => :articles, :action => 'index', :project_id => @project})
89 | end
90 | end
91 |
92 | def update
93 | if params[:root_category] == "yes"
94 | @category.parent_id = nil
95 | else
96 | @category.move_to_child_of(KbCategory.find(params[:parent_id]))
97 | end
98 |
99 | @category.safe_attributes = params[:category]
100 | if @category.save
101 | flash[:notice] = l(:label_category_updated)
102 | redirect_to({ :action => 'show', :id => @category.id, :project_id => @project })
103 | else
104 | render :action => 'edit'
105 | end
106 | end
107 |
108 | #######
109 | private
110 | #######
111 |
112 | def get_category
113 | if params[:id] != nil
114 | @category = @project.categories.find(params[:id])
115 | end
116 | end
117 |
118 | def force_404
119 | render_404
120 | end
121 |
122 | def prepare
123 |
124 | if params[:tag]
125 | @tag = params[:tag]
126 | @tag_array = *@tag.split(',')
127 | @tag_hash = Hash[ @tag_array.map{ |tag| [tag.downcase, 1] } ]
128 | @articles = KbArticle.where(id: @articles.tagged_with(@tag).map(&:id))
129 | end
130 |
131 | @tags = @articles.tag_counts.sort { |a, b| a.name.downcase <=> b.name.downcase }
132 | @tags_hash = Hash[ @articles.tag_counts.map{ |tag| [tag.name.downcase, 1] } ]
133 |
134 | # Pagination of article lists
135 | @limit = redmine_knowledgebase_settings_value( :articles_per_list_page).to_i
136 | @article_count = @articles.count
137 | @article_pages = Redmine::Pagination::Paginator.new @article_count, @limit, params['page']
138 | @offset ||= @article_pages.offset
139 | @articles = @articles.offset(@offset).limit(@limit)
140 |
141 | @categories = @project.categories.where(:parent_id => nil)
142 | end
143 |
144 | end
145 |
--------------------------------------------------------------------------------
/app/models/kb_article.rb:
--------------------------------------------------------------------------------
1 | require Rails.version > '5.0' ? 'redmine/string_array_diff/diff' : 'diff'
2 |
3 | class KbArticle < ApplicationRecord
4 | include Redmine::SafeAttributes
5 |
6 | self.locking_column = 'version'
7 | self.table_name = "kb_articles"
8 |
9 | validates_presence_of :title
10 | validates_presence_of :category_id
11 |
12 | belongs_to :project
13 | belongs_to :category, :class_name => "KbCategory"
14 | belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
15 | belongs_to :updater, :class_name => 'User', :foreign_key => 'updater_id'
16 |
17 | up_acts_as_viewed
18 | acts_as_rated :no_rater => true
19 | up_acts_as_taggable
20 | acts_as_attachable
21 | acts_as_watchable
22 |
23 | acts_as_versioned :table_name => :kb_article_versions, :if_changed => [:title, :content, :summary]
24 | self.non_versioned_columns << 'comments_count'
25 |
26 | acts_as_event :title => Proc.new {|o| status = (o.new_status ? "(#{l(:label_new_article)})" : nil ); "#{status} #{l(:label_title_articles)} ##{o.id} - #{o.title}" },
27 | :description => :content,
28 | :datetime => :updated_at,
29 | :type => Proc.new { |o| 'article-' + (o.new_status ? 'add' : 'edit') },
30 | :url => Proc.new { |o| {:controller => 'articles', :action => 'show', :id => o.id, :project_id => o.project} }
31 |
32 | safe_attributes 'category_id',
33 | 'title',
34 | 'summary',
35 | 'content',
36 | 'author_id',
37 | 'comments_count',
38 | 'project_id',
39 | 'updater_id',
40 | 'version_comments',
41 | 'version',
42 | 'tag_list'
43 |
44 |
45 | # Redmine 3.1.X
46 | if ActiveRecord::VERSION::MAJOR >= 4
47 | acts_as_activity_provider :scope => joins(:project),
48 | :permission => :view_kb_articles,
49 | :author_key => :author_id,
50 | :type => 'kb_articles',
51 | :timestamp => :updated_at
52 |
53 | acts_as_searchable :columns => [ "#{table_name}.title", "#{table_name}.summary", "#{table_name}.content"],
54 | :preload => [ :project ],
55 | :date_column => :created_at
56 |
57 | scope :visible, lambda {|*args|
58 | joins(:project).
59 | where(Project.allowed_to_condition(args.shift || User.current, :view_kb_articles, *args))}
60 | else
61 | acts_as_activity_provider :find_options => {:include => :project},
62 | :author_key => :author_id,
63 | :type => 'kb_articles',
64 | :timestamp => :updated_at
65 |
66 | acts_as_searchable :columns => [ "#{table_name}.title", "#{table_name}.summary", "#{table_name}.content"],
67 | :include => [ :project ],
68 | :order_column => "#{table_name}.id",
69 | :date_column => "#{table_name}.created_at"
70 |
71 | scope :visible, lambda {|*args| { :include => :project,
72 | :conditions => Project.allowed_to_condition(args.shift || User.current, :view_kb_articles, *args) } }
73 | end
74 |
75 | has_many :comments, -> { order 'created_on DESC' }, :as => :commented, :dependent => :destroy
76 |
77 |
78 | def recipients
79 | notified = []
80 | # Author and assignee are always notified unless they have been
81 | # locked or don't want to be notified
82 | notified << author if author
83 | notified = notified.select {|u| u.active? && u.notify_about?(self)}
84 | notified.uniq!
85 | notified.collect(&:mail)
86 | end
87 |
88 | def editable_by?(user = User.current)
89 | return user.allowed_to?(:edit_articles, self.project) ||
90 | user.allowed_to?(:manage_articles, self.project) ||
91 | (user.allowed_to?(:manage_own_articles, self.project) && self.author_id == user.id)
92 | end
93 |
94 | def attachments_deletable?(user = User.current)
95 | editable_by?(user) || super(user)
96 | end
97 |
98 | def new_status
99 | if self.updater_id == 0
100 | true
101 | end
102 | end
103 |
104 | def content_for_version(version=nil)
105 | result = self.versions.find_by_version(version.to_i) if version
106 | result ||= self
107 | result
108 | end
109 |
110 | def diff(version_to=nil, version_from=nil)
111 | version_to = version_to ? version_to.to_i : self.version
112 | version_from = version_from ? version_from.to_i : version_to - 1
113 | version_to, version_from = version_from, version_to unless version_from < version_to
114 |
115 | content_to = self.versions.find_by_version(version_to)
116 | content_from = self.versions.find_by_version(version_from)
117 |
118 | (content_to && content_from) ? KbDiff.new(content_to, content_from) : nil
119 | end
120 |
121 | # Return true if the content is the current page content
122 | def current_version?
123 | true
124 | end
125 |
126 | #define the method to auto-remove new versions when reverting
127 | def clear_newer_versions
128 | excess_baggage = send(self.class.version_column).to_i
129 | if excess_baggage > 0
130 | sql = "DELETE FROM #{self.class.versioned_table_name} WHERE version > #{excess_baggage} AND #{self.class.versioned_foreign_key} = #{self.id}"
131 | self.class.versioned_class.connection.execute sql
132 | end
133 | end
134 |
135 | def self.count_article_summaries
136 | KbArticle.where("summary is not null and summary <> ''").count
137 | end
138 |
139 | class Version
140 |
141 | belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
142 | belongs_to :updater, :class_name => 'User', :foreign_key => 'updater_id'
143 |
144 | # Return true if the content is the current page content
145 | def current_version?
146 | KbArticle.version == self.version
147 | end
148 |
149 | end
150 | end
151 |
152 | class KbDiff < Redmine::Helpers::Diff
153 | attr_reader :content_to, :content_from
154 |
155 | def initialize(content_to, content_from)
156 | @content_to = content_to
157 | @content_from = content_from
158 | super(content_to.content, content_from.content)
159 | end
160 | end
161 |
--------------------------------------------------------------------------------
/app/models/kb_category.rb:
--------------------------------------------------------------------------------
1 | class KbCategory < ApplicationRecord
2 | include Redmine::SafeAttributes
3 |
4 | self.table_name = "kb_categories"
5 |
6 | validates_presence_of :title
7 |
8 | belongs_to :project
9 | has_many :articles, :class_name => "KbArticle", :foreign_key => "category_id"
10 |
11 | acts_as_nested_set :order => 'title'
12 | acts_as_watchable
13 |
14 | safe_attributes 'title',
15 | 'description',
16 | 'parent_id',
17 | 'project_id'
18 |
19 | end
20 |
--------------------------------------------------------------------------------
/app/models/kb_mailer.rb:
--------------------------------------------------------------------------------
1 | class KbMailer < Mailer
2 | helper KnowledgebaseHelper
3 |
4 | def article_create(_user = User.current, article)
5 | redmine_headers 'Project' => article.project.identifier
6 | @project = article.project
7 | @article = article
8 | @article_url = url_for(:controller => 'articles', :action => 'show', :id => article.id, :project_id => @project)
9 | recipients = article.recipients
10 | cc = article.category.watcher_recipients - recipients
11 | mail :to => recipients,
12 | :cc => cc,
13 | :subject => "[#{@project.name}] #{@article.category.title}: \"#{article.title}\" - #{l(:label_new_article)}"
14 | end
15 |
16 | def article_update(_user = User.current, article)
17 | redmine_headers 'Project' => article.project.identifier
18 | @project = article.project
19 | @article = article
20 | @article_url = url_for(:controller => 'articles', :action => 'show', :id => article.id, :project_id => @project)
21 | recipients = article.recipients
22 | cc = ((article.watcher_recipients + article.category.watcher_recipients).uniq - recipients)
23 | mail :to => recipients,
24 | :cc => cc,
25 | :subject => "[#{@project.name}] #{@article.category.title}: \"#{article.title}\" - #{l(:label_article_updated)}"
26 | end
27 |
28 | def article_destroy(_user = User.current, article)
29 | redmine_headers 'Project' => article.project.identifier
30 | @project = article.project
31 | @article = article
32 | @destroyer = User.current
33 | recipients = article.recipients
34 | cc = ((article.watcher_recipients + article.category.watcher_recipients).uniq - recipients)
35 | mail :to => recipients,
36 | :cc => cc,
37 | :subject => "[#{@project.name}] #{@article.category.title}: \"#{article.title}\" - #{l(:label_article_removed)}"
38 | end
39 |
40 | def article_comment(_user = User.current, article, comment)
41 | redmine_headers 'Project' => article.project.identifier
42 | @project = article.project
43 | @article = article
44 | @comment = comment
45 | @article_url = url_for(:controller => 'articles', :action => 'show', :id => article.id, :project_id => @project)
46 | recipients = article.recipients
47 | cc = article.watcher_recipients - recipients
48 | mail :to => recipients,
49 | :cc => cc,
50 | :subject => "[#{@project.name}] #{@article.category.title}: \"#{article.title}\" - #{l(:label_comment_added)}"
51 | end
52 |
53 | end
54 |
--------------------------------------------------------------------------------
/app/views/articles/_breadcrumb.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% article.category.ancestors.each do |ancestor| %>
5 | »
6 | <%= link_to ancestor.title, { :controller => 'categories', :action => 'show', :id => ancestor.id, :project_id => @project} %>
7 | <% end %>
8 | »
9 | <%= link_to article.category.title, { :controller => 'categories', :action => 'show', :id => article.category.id, :project_id => @project} %>
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/views/articles/_comment_modal.html.erb:
--------------------------------------------------------------------------------
1 | <%= l(:title_add_comment) %>
2 |
3 | <%= form_tag({:action => 'add_comment', :id => @article_id, :project_id => @project}, :id => "add_comment_form") do %>
4 |
5 | <%= text_area 'comment', 'comments', :cols => 80, :rows => 15, :class => 'wiki-edit' %>
6 |
7 | <%= submit_tag l(:button_add) %>
8 | <% end %>
9 |
--------------------------------------------------------------------------------
/app/views/articles/_form.html.erb:
--------------------------------------------------------------------------------
1 | <%= error_messages_for 'article' %>
2 |
3 | <% content_for :header_tags do %>
4 | <%= stylesheet_link_tag 'jquery.tagit', :plugin => 'redmine_knowledgebase' %>
5 | <%= javascript_include_tag 'tag-it.min.js', :plugin => 'redmine_knowledgebase' %>
6 | <% end %>
7 |
8 |
16 |
17 |
18 |
19 |
20 |
21 | <%= select_tag :category_id, options_for_select(nested_set_options(@categories) {|i| "#{'»' * i.level} #{i.title}" }, @article.category_id) %>
22 |
23 |
<%= f.text_field :title, :size => 60, :label => l(:label_title), :required => true %>
24 |
25 | <% unless redmine_knowledgebase_settings_value(:disable_article_summaries) %>
26 |
<%= f.text_area :summary, :cols => 60, :rows => 5, :label => l(:label_summary) %>
27 | <% end %>
28 |
29 |
<%= f.text_area :content, :cols => 60, :rows => 15, :class => 'wiki-edit', :label => l(:label_content) %>
30 |
31 |
<%= f.text_field :tag_list, :size => 80, :value => "#{@article.tag_list.join(",")}" %>
32 |
33 |
<%= f.text_field :version_comments, :size => 120, :label => l(:field_version_comments) %>
34 |
35 |
36 | <% if @article.attachments.exists? %>
37 |
38 |
39 | <%= link_to_attachments @article,
40 | :thumbnails => true,
41 | :author => false %>
42 |
43 |
44 | <% end %>
45 |
46 | <% if redmine_knowledgebase_settings_value(:show_thumbnails_for_articles) %>
47 | <%= l(:thumbnail_explanation) %>
48 | <% end %>
49 |
50 |
51 |
52 |
<%= render :partial => 'attachments/form' %>
53 |
54 |
55 | <%= wikitoolbar_for 'article_content', preview_articles_path(project_id: @project, id: @article) %>
56 |
--------------------------------------------------------------------------------
/app/views/articles/_history.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <%= form_tag({:controller => 'articles', :action => 'diff',
3 | :project_id => @project, :id => @article.id},
4 | :method => :get) do %>
5 |
6 |
7 | <%= l(:field_version) %> |
8 | |
9 | |
10 | <%= l(:field_updated_at) %> |
11 | <%= l(:field_article_updater) %> |
12 | <%= l(:field_version_comments) %> |
13 |
14 |
15 | <% show_diff = @article.versions.size > 1 %>
16 | <% line_num = 1 %>
17 | <% @article.versions.reverse.each do |ver| %>
18 | ">
19 | <%=h @article.version == ver.version ? l(:text_current_version) : link_to((ver.version), {:action => 'version', :kb_article_id => @article.id, :version => ver.version}) %> |
20 | <%= radio_button_tag('version', ver.version, (line_num==1), :id => "cb-#{line_num}", :onclick => "$('#cbto-#{line_num+1}').attr('checked', true);") if show_diff && (line_num < @versions.size) %> |
21 | <%= radio_button_tag('version_from', ver.version, (line_num==2), :id => "cbto-#{line_num}") if show_diff && (line_num > 1) %> |
22 | <%= format_time(ver.updated_at) %> |
23 | <%= ver.updater ? link_to_user(ver.updater) : link_to_user(ver.author) %> |
24 |
25 |
26 | <% line_num += 1 %>
27 | <% end %>
28 |
29 |
30 | <%= submit_tag l(:label_view_diff), :class => 'small' if show_diff %>
31 | <% end %>
32 |
--------------------------------------------------------------------------------
/app/views/articles/_index_original.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
<%=l(:label_overview)%>
4 |
5 |
<%= l(:title_overview_summary) %>
6 |
7 | - <%= l(:label_overview_total_categories, :total_categories => @total_categories.to_i) %>
8 | - <%= l(:label_overview_total_articles, :total_articles => @total_articles.to_i) %>
9 |
10 | <% if User.current.allowed_to?(:create_articles, @project) %>
11 | - <%= link_to_if_authorized l(:label_overview_my_articles, :total_articles_by_me => @total_articles_by_me.to_i), { :controller => 'articles', :action => 'authored', :project_id => @project, :author_id => User.current.id} %>
12 | <% end %>
13 |
14 |
15 | <% if User.current.allowed_to?(:view_recent_articles, @project) %>
16 |
<%= l(:title_recently_updated_articles) %>
17 |
18 | <%= render :partial => 'articles/list', :locals => { :summary_format => "updated", :articles => @articles_latest, :default_icon => 'recently-changed' } %>
19 |
20 | <% end %>
21 |
22 |
23 |
24 | <% if User.current.allowed_to?(:view_most_popular_articles,@project) %>
25 |
<%= l(:title_most_popular_articles) %>
26 |
27 | <%= render :partial => 'articles/list', :locals => { :summary_format => "popular", :articles => @articles_popular, :default_icon => 'popular' } %>
28 |
29 | <% end %>
30 | <% if User.current.allowed_to?(:view_top_rated_articles, @project) %>
31 |
<%= l(:title_top_rated_articles) %>
32 |
33 | <%= render :partial => 'articles/list', :locals => { :summary_format => "toprated", :articles => @articles_toprated, :default_icon => 'top-rated' } %>
34 |
35 | <% end %>
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/views/articles/_index_tiled.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <%=l(:label_overview)%>
3 |
4 |
<%= l(:title_overview_summary) %>
5 |
6 | - <%= l(:label_overview_total_categories, :total_categories => @total_categories.to_i) %>
7 | - <%= l(:label_overview_total_articles, :total_articles => @total_articles.to_i) %>
8 |
9 | <% if User.current.allowed_to?(:create_articles, @project) %>
10 | - <%= link_to_if_authorized l(:label_overview_my_articles, :total_articles_by_me => @total_articles_by_me.to_i), { :controller => 'articles', :action => 'authored', :project_id => @project, :author_id => User.current.id} %>
11 | <% end %>
12 |
13 |
14 |
15 | <% if User.current.allowed_to?(:view_recent_articles, @project) %>
16 |
17 |
<%= l(:title_recently_updated_articles) %>
18 |
19 | <%= render :partial => 'articles/list_articles', :locals => { :summary_format => "updated", :articles => @articles_latest, :default_icon => 'recently-changed' } %>
20 |
21 |
22 | <% end %>
23 |
24 | <% if User.current.allowed_to?(:view_top_rated_articles, @project) %>
25 |
26 |
<%= l(:title_top_rated_articles) %>
27 |
28 | <%= render :partial => 'articles/list_articles', :locals => { :summary_format => "toprated", :articles => @articles_toprated, :default_icon => 'top-rated' } %>
29 |
30 |
31 | <% end %>
32 |
33 |
34 | <% if User.current.allowed_to?(:view_most_popular_articles,@project) %>
35 |
36 |
<%= l(:title_most_popular_articles) %>
37 |
38 |
39 | <%= render :partial => 'articles/list_articles', :locals => { :summary_format => "popular", :articles => @articles_popular, :default_icon => 'popular' } %>
40 |
41 |
42 | <% end %>
43 |
44 |
45 |
--------------------------------------------------------------------------------
/app/views/articles/_list.html.erb:
--------------------------------------------------------------------------------
1 | <% articles.each do |article| %>
2 |
3 | <% category = "category"
4 | allcats = ""
5 | article.category.ancestors.each do |ancestor|
6 | category = category + "-" + ancestor.title.gsub(/\s+/, "_")
7 | allcats = allcats + " " + category
8 | end
9 | category = category + "-" + article.category.title.gsub(/\s+/, "_")
10 | allcats = allcats + " " + category
11 | %>
12 |
13 |
14 |
15 | <% truncate_length = 100 if local_assigns[:truncate_length].nil? %>
16 | <%= link_to truncate(article.title, :length => truncate_length), { :controller => 'articles', :action => 'show', :id => article.id, :project_id => @project}, :title => article.title %>
17 |
18 | <% if redmine_knowledgebase_settings_value(:show_breadcrumbs_for_article_lists) %>
19 | <%= render :partial => "articles/breadcrumb", :locals => { :article => article, :project => @project } %>
20 | <% end %>
21 |
22 | <% if redmine_knowledgebase_settings_value(:show_thumbnails_for_articles) %>
23 |
24 | <%= render :partial => "articles/thumbnail", :locals => { :article => article, :imgclass => 'thumbnail-list', :project_id => @project } %>
25 |
26 | <% end %>
27 |
28 | <%= format_article_summary(article, summary_format, :truncate => truncate_length ) %>
29 |
30 |
31 | <% end %>
32 |
--------------------------------------------------------------------------------
/app/views/articles/_list_articles.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% articles.each do |article| %>
3 |
4 | <% category_id = article.category.ancestors.first ? article.category.ancestors.first.id : article.category.id %>
5 |
6 |
7 |
8 | <% style = '' %>
9 | <% thumb = get_article_thumbnail_url( article ) %>
10 | <% if thumb %>
11 | <% style = 'background-image: url(' + thumb + ');' %>
12 | <% end %>
13 |
14 |
15 |
16 |
17 | <%= link_to '', { :controller => 'articles',
18 | :action => 'show',
19 | :id => article.id,
20 | :project_id => @project}, :class => 'flex-link', :title => article.title %>
21 |
22 |
23 |
24 |
<%= article.title %>
25 |
26 | <% unless @author_id %>
27 |
28 | <%= link_to article.author.name, { :controller => 'articles',
29 | :action => 'authored',
30 | :author_id => article.author.id,
31 | :project_id => @project} %>
32 |
33 | <% end %>
34 |
35 |
<% rating = article.rating_average.to_i %>
36 | <% for i in 1..rating do %> ★ <% end %>
37 |
38 |
39 |
40 |
41 | <% end %>
42 |
--------------------------------------------------------------------------------
/app/views/articles/_list_table.html.erb:
--------------------------------------------------------------------------------
1 |
68 |
69 |
--------------------------------------------------------------------------------
/app/views/articles/_list_tiled.html.erb:
--------------------------------------------------------------------------------
1 |
9 |
10 |
--------------------------------------------------------------------------------
/app/views/articles/_rating.html.erb:
--------------------------------------------------------------------------------
1 | <%= l(:title_article_rating) %> (<%= l(:title_votes, :count => @article.rated_count) %>)
2 |
3 | <% avg = @article.rating_average.to_i %>
4 | <% (1..5).each do |star| %>
5 | />
6 | <% end %>
7 |
8 |
24 |
--------------------------------------------------------------------------------
/app/views/articles/_sortbar.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if articles.count > 1 %>
3 | Sort by: |
4 | <%= sortable "title" %> |
5 | <%= sortable "updated_at", "Updated" %> |
6 |
7 |
8 | <% end %>
9 |
10 |
--------------------------------------------------------------------------------
/app/views/articles/_thumbnail.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if thumb = get_article_thumbnail_url(article) %>
3 | <%= link_to image_tag( thumb ),
4 | { :controller => 'articles', :action => 'show', :id => article.id, :project_id => project_id}, :title => article.title %>
5 | <% end %>
6 |
--------------------------------------------------------------------------------
/app/views/articles/_watchers.html.erb:
--------------------------------------------------------------------------------
1 | <% if User.current.allowed_to?(:watch_articles, @project) %>
2 |
3 | <%= link_to l(:button_add),
4 | {:controller => 'watchers', :action => 'new', :object_type => watched.class.name.underscore, :object_id => watched},
5 | :remote => true,
6 | :method => 'get' %>
7 |
8 | <% end %>
9 |
10 | <%= l(:label_issue_watchers) %> (<%= watched.watcher_users.size %>)
11 |
12 | <%= watchers_list(watched) %>
13 |
--------------------------------------------------------------------------------
/app/views/articles/authored.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= render :partial => "categories/jump_box" %>
4 |
5 |
6 | <%= l(:label_authored_by) %> <%= link_to_user(User.find(@author_id)) %>
7 |
8 |
9 | <% content_for :sidebar do %>
10 |
11 | <%= l(:title_browse_by_category) %>
12 | <%= render :partial => "categories/tree" %>
13 |
14 | <%= render :partial => "categories/tags", :locals => { :controller => 'articles', :action => 'authored', :author_id => @author_id } %>
15 |
16 | <% end %>
17 |
18 |
19 | <% if @tag %>
20 | <%= l(:label_filtered_by_tag) %>
21 | <% n = 0 %>
22 | <% @tag_array.each do |tag| %><%= n >= 1 ? ', ' : '' %><%= tag %><% n += 1 %><% end %>
23 | <%= link_to("", {:controller => 'articles', :action => 'authored', :author_id => @author_id, :project_id => @project }, :class => "icon icon-del") %>
24 |
25 | <% end %>
26 |
27 | <% if @articles.length > 0%>
28 |
29 | <% if redmine_knowledgebase_settings_value(:show_tiled_article_lists) %>
30 | <%= render :partial => 'articles/list_tiled', :locals => { :articles => @articles } %>
31 | <% else %>
32 | <%= render :partial => 'articles/list_table', :locals => { :articles => @articles } %>
33 | <% end %>
34 |
35 | <% end %>
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/app/views/articles/comment.js.erb:
--------------------------------------------------------------------------------
1 | $('#ajax-modal').html('<%= escape_javascript(render :partial => 'articles/comment_modal') %>');
2 | showModal('ajax-modal', '600px');
3 | document.getElementById('comment_comments').focus();
4 |
--------------------------------------------------------------------------------
/app/views/articles/diff.html.erb:
--------------------------------------------------------------------------------
1 | <%= @article.title %>
2 |
3 |
4 | <%= l(:label_version) %> <%= link_to @diff.content_from.version, :action => 'version', :id => @articleversion.kb_article_id, :project_id => @project, :version => @diff.content_from.version %>
5 | (<%= @diff.content_from.updater ?
6 | link_to_user(@diff.content_to.updater.name) : link_to_user(@diff.content_to.author.name)
7 | %>, <%= format_time(@diff.content_from.updated_at) %>)
8 | →
9 | <%= l(:label_version) %> <%= link_to @diff.content_to.version, :action => 'version',
10 | :id => @articleversion.kb_article_id, :project_id => @project,
11 | :version => @diff.content_to.version
12 | %>/<%= @article.version %>
13 | (<%= @diff.content_to.updater ?
14 | link_to_user(@diff.content_to.updater.name) : link_to_user(@diff.content_to.author.name)
15 | %>, <%= format_time(@diff.content_to.updated_at) %>)
16 |
17 |
18 |
19 | <%= simple_format_without_paragraph @diff.to_html %>
20 |
--------------------------------------------------------------------------------
/app/views/articles/edit.html.erb:
--------------------------------------------------------------------------------
1 | <% html_title l(:title_edit_article) %>
2 |
3 | <%= l(:title_edit_article) %>
4 |
5 | <%= labelled_form_for :article, @article, :url => { :action => "update" }, :html => { :multipart => true, :id => "articles-form" } do |form| %>
6 | <%= render :partial => 'form', :locals => { :f => form } %>
7 | <%= submit_tag l(:button_update) %>
8 | <%= create_preview_link %>
9 | <% end %>
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/views/articles/index.html.erb:
--------------------------------------------------------------------------------
1 | <% html_title l(:knowledgebase_title) %>
2 |
3 | <% if not User.current.allowed_to?(:view_kb_articles, @project) %>
4 | <%=l(:message_no_permissions)%>
5 | <% else %>
6 |
7 |
8 |
9 | <%= render :partial => "categories/jump_box" %>
10 | <%= link_to_if_authorized l(:title_create_category), { :controller => 'categories', :action => 'new', :project_id => @project}, :class => 'icon icon-add' %>
11 | <% if @project.categories.length > 0 %>
12 | <%= link_to_if_authorized l(:title_create_article), { :controller => 'articles', :action => 'new', :project_id => @project}, :class => 'icon icon-add' %>
13 | <% end %>
14 |
15 |
16 | <% if @project.categories.count == 0 %>
17 | <%= l(:knowledgebase_title) %>
18 | <%= l(:message_no_categories) %>
19 |
20 | <% elsif @project.articles.count == 0 %>
21 | <%= l(:knowledgebase_title) %>
22 | <%= l(:message_no_articles) %>
23 |
24 | <% else %>
25 |
26 | <% if redmine_knowledgebase_settings_value(:show_tiled_article_lists) %>
27 | <%= render :partial => 'articles/index_tiled', :locals => { :articles => @articles } %>
28 | <% else %>
29 | <%= render :partial => 'articles/index_original', :locals => { :articles => @articles } %>
30 | <% end %>
31 |
32 | <% content_for :sidebar do %>
33 | <%= l(:title_browse_by_category) %>
34 | <%= render :partial => "categories/tree" %>
35 |
36 |
37 | <%= render :partial => "categories/tags", :locals => { :controller => 'categories', :action => 'index', :id => '', :author_id => '' } %>
38 |
39 | <% end %>
40 | <% end %>
41 |
42 | <% end %>
43 |
44 |
--------------------------------------------------------------------------------
/app/views/articles/new.html.erb:
--------------------------------------------------------------------------------
1 | <% html_title l(:title_create_article) %>
2 |
3 | <%= l(:title_create_article) %>
4 |
5 | <%= raw("#{l(:description_create_article)}
") %>
6 |
7 | <%= labelled_form_for :article, @article, :url => { :action => "create" }, :html => { :multipart => true, :id => "articles-form" } do |form| %>
8 | <%= render :partial => 'form', :locals => { :f => form } %>
9 | <%= submit_tag l(:button_create) %>
10 | <%= create_preview_link %>
11 | <% end %>
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/views/articles/preview.html.erb:
--------------------------------------------------------------------------------
1 | <% if @summary %>
2 |
5 | <% end %>
6 |
7 | <% if @content %>
8 |
11 | <% end %>
--------------------------------------------------------------------------------
/app/views/articles/rate.js.erb:
--------------------------------------------------------------------------------
1 | $('#rating-container').html('<%= escape_javascript(render :partial => 'articles/rating') %>');
2 | $('#article-ratings :radio.rate').rating('readOnly', true);
--------------------------------------------------------------------------------
/app/views/articles/sections/_attachments.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if @article.attachments.find {|a| a.description != 'thumbnail' } %>
3 |
4 | <%= l(:label_attachment_plural) %>
5 |
6 | <%= link_to_attachments @article,
7 | :thumbnails => true,
8 | :author => false %>
9 |
10 | <% end %>
11 |
12 |
--------------------------------------------------------------------------------
/app/views/articles/sections/_comments.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/articles/sections/_content.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% unless @article.versions.size == 0 %>
3 | <%= l(:label_article_version, :version => @article.version) %>
4 | <% end %>
5 | <%= authoring @article.created_at, @article.author %>
6 | <% if @article.created_at != @article.updated_at %>
7 | | <%= updated_by @article.updated_at, @article.updater %>.
8 | <% end %>
9 | | <%= l(:label_article_viewed, :count => @article.view_count) %>
10 |
11 |
12 |
13 |
<%= textilizable @article, :content, :attachments => @article.attachments %>
14 |
--------------------------------------------------------------------------------
/app/views/articles/sections/_history.html.erb:
--------------------------------------------------------------------------------
1 | <% if User.current.allowed_to?(:view_article_history, @project) %>
2 |
3 | <% unless @article.versions.size == 0 %>
4 | <%= render :partial => 'articles/history', :locals => {:article_id => @article, :project_id => @project } %>
5 | <% end %>
6 |
7 | <% end %>
8 |
--------------------------------------------------------------------------------
/app/views/articles/show.html.erb:
--------------------------------------------------------------------------------
1 | <% html_title @article.title %>
2 |
3 | <% content_for :header_tags do %>
4 | <%= stylesheet_link_tag 'scm' %>
5 | <%= javascript_include_tag 'jquery.form.js', 'jquery.MetaData.js', 'jquery.rating.pack.js', :plugin => 'redmine_knowledgebase' %>
6 | <% end %>
7 |
8 | <% if not User.current.allowed_to?(:view_kb_articles, @project) %>
9 | <%=l(:message_no_permissions)%>
10 | <% else %>
11 |
12 |
13 |
14 | <%= render :partial => "categories/jump_box" %>
15 |
16 | <% if @project.categories.length > 0 %>
17 | <%= link_to_if_authorized l(:title_create_article), { :controller => 'articles', :action => 'new', :project_id => @project}, :class => 'icon icon-add' %>
18 | <% end %>
19 |
20 |
21 | <% content_for :sidebar do %>
22 |
23 | <% if @article.editable_by?(User.current) %>
24 | - <%= link_to l(:label_edit_article), { :controller => 'articles', :action => 'edit', :id => @article.id, :project_id => @project}, :class => 'icon icon-edit' %>
25 | - <%= link_to l(:label_delete_article), { :controller => 'articles', :action => 'destroy', :id => @article.id, :project_id => @project}, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %>
26 | <% end %>
27 |
28 | - <%= link_to_if_authorized l(:label_new_comment), { :controller => "articles", :action => "comment", :article_id => @article.id, :project_id => @project}, :class => "icon icon-comment", :remote => true, :method => :get %>
29 | - <%= watcher_link(@article, User.current) %>
30 | -
31 | <%= render :partial => 'articles/watchers', :locals => {:watched => @article} %>
32 |
33 |
34 |
35 |
36 | <%= render :partial => "rating" %>
37 |
38 | <% unless @article.tag_list.empty? %>
39 |
40 | <%= l(:title_tags) %>
41 |
42 |
43 | <% @article.tag_list.each do |tag| %>
44 | <%= link_to tag, { :controller => 'categories', :action => "index", :tag => tag, :project_id => @project }, :class => "tag" %>
45 | <% end %>
46 |
47 |
48 | <% end %>
49 | <% end %>
50 |
51 |
52 | <%= link_to l(:label_kb_home), { :controller => 'articles', :action => 'index', :project_id => @project} %>
53 | <% @article.category.ancestors.each do |ancestor| %>
54 | »
55 | <%= link_to ancestor.title, { :controller => 'categories', :action => 'show', :id => ancestor.id, :project_id => @project} %>
56 | <% end %>
57 | »
58 | <%= link_to @article.category.title, { :controller => 'categories', :action => 'show', :id => @article.category.id, :project_id => @project} %>
59 |
60 |
61 | <% other_formats_links do |f| %>
62 | <%= f.link_to 'PDF', :url => params.to_unsafe_hash %>
63 | <% end %>
64 |
65 | <%= @article.title %>
66 |
67 | <% unless redmine_knowledgebase_settings_value(:disable_article_summaries) %>
68 |
69 | <% if redmine_knowledgebase_settings_value(:show_thumbnails_for_articles) %>
70 | <%= image_tag( get_article_thumbnail_url( @article ), :class => 'article-summary-thumbnail' ) %>
71 | <% end %>
72 |
73 |
74 |
<%= @article.summary %>
75 |
76 | <% end %>
77 |
78 | <% unless redmine_knowledgebase_settings_value(:show_article_without_tabs) %>
79 | <%= render_tabs article_tabs %>
80 |
81 | <% else %>
82 |
83 |
84 |
85 | <% if redmine_knowledgebase_settings_value(:show_attachments_first) %>
86 | <%= render :partial => "articles/sections/attachments" %>
87 | <% end %>
88 |
89 | <%= l(:label_description) %>
90 | <%= render :partial => "articles/sections/content" %>
91 |
92 |
93 | <%= l(:label_comment_plural) %>
94 |
95 | <%= link_to_if_authorized l(:label_new_comment), { :controller => "articles", :action => "comment", :article_id => @article.id, :project_id => @project}, :class => "icon icon-comment", :remote => true, :method => :get %>
96 |
97 | <%= render :partial => "articles/sections/comments" %>
98 |
99 |
100 |
101 | <% unless redmine_knowledgebase_settings_value(:show_attachments_first) %>
102 | <%= render :partial => "articles/sections/attachments" %>
103 | <% end %>
104 |
105 | <% if User.current.allowed_to?(:view_article_history, @project) %>
106 | <%= l(:label_history) %>
107 | <%= render :partial => "articles/sections/history" %>
108 | <% end %>
109 |
110 | <% end %>
111 |
112 | <% end %>
113 |
--------------------------------------------------------------------------------
/app/views/articles/tagged.html.erb:
--------------------------------------------------------------------------------
1 | <%= l(:title_tagged_articles, :tag => @tag) %>
2 |
3 | <% if @list.length > 0 %>
4 | <%= render :partial => 'articles/list_table', :locals => { :articles => @list } %>
5 | <% end %>
6 |
7 |
--------------------------------------------------------------------------------
/app/views/articles/version.html.erb:
--------------------------------------------------------------------------------
1 | <% content_for :header_tags do %>
2 | <%= stylesheet_link_tag 'scm' %>
3 | <% end %>
4 |
5 |
6 | <%= link_to l(:label_kb_home), { :controller => 'articles', :action => 'index', :project_id => @project} %>
7 | <% @article.category.ancestors.each do |ancestor| %>
8 | »
9 | <%= link_to ancestor.title, { :controller => 'categories', :action => 'show', :id => ancestor.id, :project_id => @project} %>
10 | <% end %>
11 | »
12 | <%= link_to @article.category.title, { :controller => 'categories', :action => 'show', :id => @article.category.id, :project_id => @project} %>
13 |
14 |
15 | <% content_for :sidebar do %>
16 | <%= l(:title_edit_article) %>
17 |
18 | <%= link_to_if_authorized l(:button_rollback), {:action => 'revert', :id => @article.id, :version => @articleversion.version }, :confirm => l(:text_confirm_versions_delete), :class => 'icon icon-cancel' %>
19 |
20 |
21 | <% end %>
22 |
23 |
24 | <%= link_to(("\xc2\xab " + l(:label_previous)),
25 | :action => 'version', :id => @articleversion.kb_article_id, :project_id => @project,
26 | :version => (@articleversion.version - 1)) + " - " if @articleversion.version > 1 %>
27 | <%= "#{l(:label_version)} #{@articleversion.version}/#{@article.version}" %>
28 | <%= '('.html_safe + link_to(l(:label_diff), :controller => 'articles', :action => 'diff',
29 | :id => @articleversion.kb_article_id, :project_id => @project,
30 | :version => @articleversion.version) + ')'.html_safe if @articleversion.version > 1 %> -
31 | <%= link_to((l(:label_next) + " \xc2\xbb"), :action => 'version',
32 | :id => @articleversion.kb_article_id, :project_id => @project,
33 | :version => (@articleversion.version + 1)) + " - " if @articleversion.version < @article.version %>
34 | <%= link_to(l(:label_current_version), :action => 'show', :id => @article.id, :project_id => @project) %>
35 |
36 |
37 |
38 | <%= @articleversion.author ? link_to_user(@articleversion.author) : l(:label_user_anonymous)
39 | %>, <%= format_time(@articleversion.updated_at) %> | <%= l(:field_version_comments) %>: <%= @articleversion.version_comments %>
40 |
41 |
42 |
43 | <% html_title @articleversion.title %>
44 |
45 | <%= @articleversion.title %>
46 |
47 | <%= l(:label_summary) %>
48 | <%= @articleversion.summary %>
49 |
50 | <%= l(:label_content) %>
51 |
52 |
53 |
<%= textilizable @articleversion, :content %>
54 |
55 |
--------------------------------------------------------------------------------
/app/views/categories/_form.html.erb:
--------------------------------------------------------------------------------
1 |
10 |
11 | <%= error_messages_for 'category' %>
12 |
13 |
<%= check_box_tag 'root_category', 'yes', @parent_id.nil?, :id => "chk_root", :onclick => "parentshow();" %>
14 |
15 |
16 |
17 | <%= select_tag :parent_id, options_for_select(nested_set_options(@categories) {|i| "#{'»' * i.level} #{i.title}" }, @parent_id.to_i) %>
18 |
19 |
20 | <%= hidden_field_tag 'project_id', @project.id %>
21 |
<%= f.text_field :title, :label => l(:label_title), :required => true %>
22 |
<%= f.text_area :description, :cols => 60, :rows => 10, :label => l(:label_description) %>
23 |
--------------------------------------------------------------------------------
/app/views/categories/_jump_box.html.erb:
--------------------------------------------------------------------------------
1 | <% cats = @project.categories %>
2 | <% if cats.count > 0 %>
3 |
4 |
5 | <%= select_tag :category_id, options_for_select([""] + nested_set_options(cats) {|i| raw("#{'▹' * i.level} #{i.title}") }), :onchange => "if (this.value != \'\') { window.location = '#{categories_path}/' + this.value; }" %>
6 | <% end %>
--------------------------------------------------------------------------------
/app/views/categories/_tags.html.erb:
--------------------------------------------------------------------------------
1 | <% if @tags %>
2 | <% @tag ? currentTags = @tag + ',' : currentTags = '' %>
3 |
4 |
<%= l(:label_filter_by_tag) %>
5 |
6 | <% critical_tag_hash = Hash[] %>
7 | <% if redmine_knowledgebase_settings_value(:critical_tags) %>
8 | <% critical_array = redmine_knowledgebase_settings_value(:critical_tags).split(/\s*,\s*/) %>
9 | <% critical_tag_hash = Hash[ critical_array.map { |tag| [tag.downcase, 1] } ] %>
10 | <% critical_array.each do |critical| %>
11 | <% critical_low = critical.downcase %>
12 |
13 |
14 | <% if @tag && @tag_hash.has_key?( critical_low ) %>
15 |
<%= critical %>
16 | <% elsif !@tags_hash.has_key?( critical_low ) %>
17 |
<%= critical %>
18 | <% else %>
19 | <%= link_to( critical, {:controller => controller, :action => action, :author_id => author_id, :project_id => @project, :tag => currentTags + critical_low }, :class => "tag tag-large tag-critical") %>
20 | <% end %>
21 | <% end %>
22 |
23 | <% end %>
24 |
25 | <% tag_cloud(@tags, ['tag-x-small', 'tag-small', 'tag-medium', 'tag-large', 'tag-x-large']) do |tag, css_class| %>
26 |
27 | <% if !critical_tag_hash.has_key?( tag.name.downcase ) %>
28 | <% if @tag && @tag_hash.has_key?( tag.name.downcase ) %>
29 |
<%= tag.name %>
30 | <% else %>
31 | <%= link_to( tag.name, {:controller => controller, :action => action, :author_id => author_id, :project_id => @project, :tag => currentTags + tag.name }, :class => "tag #{css_class}") %>
32 | <% end %>
33 | <% end %>
34 | <% end %>
35 |
36 | <% end %>
37 |
38 |
--------------------------------------------------------------------------------
/app/views/categories/_tags_used.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if @tag %>
3 | <%= l(:label_filtered_by_tag) %>
4 | <% n = 0 %>
5 | <% @tag_array.each do |tag| %><%= n >= 1 ? ', ' : '' %><%= tag %><% n += 1 %><% end %>
6 | <%= link_to("", {:controller => 'categories', :action => 'index', :project_id => @project }, :class => "icon icon-del") %>
7 |
8 | <% end %>
9 |
--------------------------------------------------------------------------------
/app/views/categories/_tree.html.erb:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/app/views/categories/_tree_row.html.erb:
--------------------------------------------------------------------------------
1 | ">
2 |
3 |
4 | <%= link_to(category.title, {:controller => 'categories', :action => 'show', :id => category.id, :project_id => @project} ) %>
5 | <%= " (#{category.articles.count})" if (category.articles.count > 0 && show_category_totals?) %>
6 |
7 | |
8 |
9 |
10 | <% subs = category.children %>
11 | <% subs = subs.sort_by(&:title) if sort_categories? %>
12 | <% subs.each do |subcat| %>
13 | <%= render :partial => 'categories/tree_row', :locals => { :category => subcat } %>
14 | <% end %>
15 |
--------------------------------------------------------------------------------
/app/views/categories/_watchers.html.erb:
--------------------------------------------------------------------------------
1 | <% if User.current.allowed_to?(:watch_categories, @project) %>
2 |
3 | <%= link_to l(:button_add),
4 | {:controller => 'watchers', :action => 'new', :object_type => watched.class.name.underscore, :object_id => watched},
5 | :remote => true,
6 | :method => 'get' %>
7 |
8 | <% end %>
9 |
10 | <%= l(:label_issue_watchers) %> (<%= watched.watcher_users.size %>)
11 |
12 | <%= watchers_list(watched) %>
13 |
--------------------------------------------------------------------------------
/app/views/categories/edit.html.erb:
--------------------------------------------------------------------------------
1 | <% html_title l(:title_edit_category) << " " << @category.title %>
2 |
3 | <%= l(:title_edit_category) %>
4 |
5 | <%= labelled_form_for :category, @category, :url => { :action => 'update', :id => @category.id } do |form| %>
6 | <%= render :partial => 'form', :locals => { :f => form } %>
7 | <%= submit_tag l(:button_update) %>
8 | <% end %>
9 |
--------------------------------------------------------------------------------
/app/views/categories/index.html.erb:
--------------------------------------------------------------------------------
1 | <% html_title 'Index' %>
2 |
3 |
4 | <% if not User.current.allowed_to?(:view_kb_articles, @project) %>
5 | <%=l(:message_no_permissions)%>
6 | <% else %>
7 |
8 |
9 | <% content_for :sidebar do %>
10 |
11 |
12 | - <%= link_to_if_authorized l(:label_new_article), { :controller => 'articles', :action => 'new', :project_id => @project}, :class => 'icon icon-add' %>
13 |
14 |
15 | <%= l(:title_browse_by_category) %>
16 |
17 | <%= render :partial => "categories/tree" %>
18 |
19 | <% @category ? cat_id = @category.id : cat_id = '' %>
20 | <%= render :partial => "categories/tags", :locals => { :controller => 'categories', :action => 'index', :id => cat_id, :author_id => '' } %>
21 |
22 | <% end %>
23 |
24 | <%= render :partial => "categories/tags_used" %>
25 |
26 | <% if @articles.length > 0%>
27 |
28 | <% if redmine_knowledgebase_settings_value(:show_tiled_article_lists) %>
29 | <%= render :partial => 'articles/list_tiled', :locals => { :articles => @articles } %>
30 | <% else %>
31 | <%= render :partial => 'articles/list_table', :locals => { :articles => @articles } %>
32 | <% end %>
33 |
34 | <% end %>
35 |
36 |
37 |
38 |
39 |
40 | <% other_formats_links do |f| %>
41 | <%= f.link_to 'Atom', :url => { :key => User.current.atom_key } %>
42 | <% end %>
43 |
44 | <% end %>
45 |
--------------------------------------------------------------------------------
/app/views/categories/new.html.erb:
--------------------------------------------------------------------------------
1 | <% html_title l(:title_create_category) %>
2 |
3 | <%= l(:title_create_category) %>
4 | <%= labelled_form_for :category, @category, :url => { :action => 'create' } do |form| %>
5 | <%= render :partial => 'form', :locals => { :f => form } %>
6 | <%= submit_tag l(:button_create) %>
7 | <% end %>
8 |
--------------------------------------------------------------------------------
/app/views/categories/show.html.erb:
--------------------------------------------------------------------------------
1 | <% html_title @category.title %>
2 |
3 | <% if not User.current.allowed_to?(:view_kb_articles, @project) %>
4 | <%=l(:message_no_permissions)%>
5 | <% else %>
6 |
7 |
8 |
9 | <%= render :partial => "categories/jump_box" %>
10 |
11 |
12 |
13 | <%= link_to l(:label_kb_home), { :controller => 'articles', :action => 'index', :project_id => @project } %>
14 | <% @category.ancestors.each do |ancestor| %>
15 | »
16 | <%= link_to ancestor.title, { :controller => 'categories', :action => 'show', :id => ancestor.id, :project_id=>@project } %>
17 | <% end %>
18 |
19 |
20 | <%= @category.title %>
21 |
22 | <% content_for :sidebar do %>
23 |
24 | - <%= link_to_if_authorized l(:label_new_article), { :controller => 'articles', :action => 'new', :category_id => @category.id, :project_id => @project}, :class => 'icon icon-add' %>
25 | - <%= link_to_if_authorized l(:label_new_category), { :controller => 'categories', :action => 'new', :parent_id => @category.id, :project_id => @project}, :class => 'icon icon-add' %>
26 | - <%= link_to_if_authorized l(:label_edit_category), { :controller => 'categories', :action => 'edit', :id => @category.id, :project_id => @project}, :class => 'icon icon-edit' %>
27 | - <%= link_to_if_authorized l(:label_delete_category), { :controller => 'categories', :action => 'destroy', :id => @category.id, :project_id => @project}, :confirm => l(:text_are_you_sure), :method => :delete, :class => 'icon icon-del' %>
28 | - <%= watcher_link(@category, User.current) %>
29 | -
30 | <%= render :partial => 'categories/watchers', :locals => {:watched => @category} %>
31 |
32 |
33 | <%= l(:title_browse_by_category) %>
34 | <%= render :partial => "categories/tree" %>
35 |
36 | <%= render :partial => "categories/tags", :locals => { :controller => 'categories', :action => 'show', :id => @category.id, :author_id => '' } %>
37 |
38 | <% end %>
39 |
40 | <%= textilizable @category.description unless @category.description.nil? %>
41 |
42 | <% @kids = @category.children %>
43 | <% if @kids.length > 0 %>
44 |
45 |
46 |
47 | <% @kids.each do |subs| %>
48 | <%= link_to subs.title + " (" + subs.articles.length.to_s + ")", { :controller => 'categories', :action => 'show', :id => subs.id, :project_id => @project }, :class => 'category-title' %>
49 | <% end %>
50 |
51 | <% end %>
52 |
53 | <%= render :partial => "categories/tags_used" %>
54 |
55 | <% if @articles.length > 0 %>
56 |
57 | <% if redmine_knowledgebase_settings_value(:show_tiled_article_lists) %>
58 | <%= render :partial => 'articles/list_tiled', :locals => { :articles => @articles } %>
59 | <% else %>
60 | <%= render :partial => 'articles/list_table', :locals => { :articles => @articles } %>
61 | <% end %>
62 |
63 |
64 | <% if @article_pages %>
65 |
66 | <% end %>
67 | <% end %>
68 |
69 |
70 | <% other_formats_links do |f| %>
71 | <%= f.link_to 'Atom', :url => { :key => User.current.atom_key } %>
72 | <% end %>
73 |
74 |
75 | <% end %>
76 |
--------------------------------------------------------------------------------
/app/views/kb_mailer/article_comment.html.erb:
--------------------------------------------------------------------------------
1 | <%= l(:label_comment_added) %>: <%= link_to(h(@article.title), @article_url) %>
2 |
3 | <%= l(:label_comment) %>: <%= @comment.comments %>
4 |
5 |
6 | <%= l(:label_added_time_by, :author => link_to_user(@comment.author), :age => content_tag('abbr', distance_of_time_in_words(Time.now, @comment.created_on), :title => format_time(@comment.created_on))).html_safe %>
7 |
--------------------------------------------------------------------------------
/app/views/kb_mailer/article_comment.text.erb:
--------------------------------------------------------------------------------
1 | <%= l(:label_comment_added) %>: <%= @article.title %>
2 |
3 | <%= l(:label_comment) %>: <%= @comment.comments %>
4 |
5 | <%= l(:label_added_time_by, :author => link_to_user(@comment.author), :age => content_tag('abbr', distance_of_time_in_words(Time.now, @comment.created_on), :title => format_time(@comment.created_on))).html_safe %>
6 |
--------------------------------------------------------------------------------
/app/views/kb_mailer/article_create.html.erb:
--------------------------------------------------------------------------------
1 | <%= l(:label_new_article) %>: <%= link_to(h(@article.title), @article_url) %>
2 | (<%=h @article.category.title %>)
3 |
4 | <% if thumb = get_article_thumbnail_url_absolute( @article ) %>
5 | ![[Thumbnail]](<%= thumb %>)
6 | <% end %>
7 |
8 |
9 | <%= l(:label_summary) %>: <%=h @article.summary %>
10 |
11 |
12 |
13 | <% unless @article.tag_list.empty? %>
14 | <%= l(:title_tags) %>: <%= @article.tag_list.join(", ") %>
15 |
16 | <% end %>
17 |
18 |
19 | <%=l(:field_article_author)%>: <%=h @article.author %>
20 |
21 |
22 | <% if @article.version_comments.to_s != '' %>
23 |
24 | <%=l(:field_version_comments)%>: <%=h @article.version_comments %>
25 |
26 | <% end %>
27 |
28 |
--------------------------------------------------------------------------------
/app/views/kb_mailer/article_create.text.erb:
--------------------------------------------------------------------------------
1 | <%= l(:label_new_article) %>: <%= @article.title %> (<%= @article.category.title %>)
2 | =================================
3 |
4 | <%= l(:label_summary) %>: <%= @article.summary %>
5 |
6 | <% unless @article.tag_list.empty? %><%= l(:title_tags) %>: <%= @article.tag_list.join(", ") %>
7 | <% end %>
8 | <%=l(:field_article_author)%>: <%= @article.author %>
9 |
10 | <% if @article.version_comments.to_s != '' %><%=l(:field_version_comments)%>: <%= @article.version_comments %>
11 | <% end %>
12 | Link: <%= @article_url %>
13 |
--------------------------------------------------------------------------------
/app/views/kb_mailer/article_destroy.html.erb:
--------------------------------------------------------------------------------
1 | <%= l(:label_article_removed) %>: <%=h @article.title %>
2 |
3 |
4 | - <%=l(:field_article_destroyer)%>: <%=h @destroyer %>
5 | - <%=l(:label_category)%>: <%=h @article.category.title %>
6 |
7 |
--------------------------------------------------------------------------------
/app/views/kb_mailer/article_destroy.text.erb:
--------------------------------------------------------------------------------
1 | <%= l(:label_article_removed) %>: <%= @article.title %>
2 | =================================
3 |
4 | <%=l(:field_article_destroyer)%>: <%= @destroyer %>
5 | <%=l(:label_category)%>: <%= @article.category %>
6 |
7 |
--------------------------------------------------------------------------------
/app/views/kb_mailer/article_update.html.erb:
--------------------------------------------------------------------------------
1 | <%= l(:label_article_updated) %>: <%= link_to(h(@article.title), @article_url) %>
2 |
3 |
4 | - <%=l(:field_version_comments)%>: <%=h @article.version_comments %>
5 | - <%=l(:field_article_updater)%>: <%=h @article.updater %>
6 | - <%=l(:label_category)%>: <%=h @article.category.title %>
7 |
8 |
--------------------------------------------------------------------------------
/app/views/kb_mailer/article_update.text.erb:
--------------------------------------------------------------------------------
1 | <%= l(:label_article_updated) %>: <%= @article.title %>
2 | =================================
3 |
4 | <%=l(:field_version_comments)%>: <%= @article.version_comments %>
5 | <%=l(:field_article_updater)%>: <%= @article.updater %>
6 | <%=l(:label_category)%>: <%= @article.category %>
7 |
8 |
--------------------------------------------------------------------------------
/app/views/redmine_knowledgebase/_knowledgebase_settings.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <%= label_tag :settings_sort_category_tree, l(:allow_sort_category_tree) %>
3 | <%= check_box_tag 'settings[sort_category_tree]', 1, @settings[:sort_category_tree] %>
4 |
5 |
6 | <%= label_tag :settings_show_category_totals, l(:show_category_totals) %>
7 | <%= check_box_tag 'settings[show_category_totals]', 1, @settings[:show_category_totals] %>
8 |
9 |
10 | <%= label_tag :settings_summary_limit, l(:summary_item_limit) %>
11 | <%= text_field_tag "settings[summary_limit]", @settings[:summary_limit] %>
12 |
13 |
14 | <%= label_tag :articles_per_list_page, l(:articles_per_list_page) %>
15 | <%= text_field_tag "settings[articles_per_list_page]", @settings[:articles_per_list_page] %>
16 |
17 |
18 | <%= label_tag :settings_disable_article_summaries, l(:disable_article_summaries) %>
19 | <%= check_box_tag 'settings[disable_article_summaries]', 1, @settings[:disable_article_summaries] %>
20 | <%= redmine_knowledgebase_count_article_summaries rescue I18n.t(:message_summary_count_not_available) %>
21 |
22 |
23 |
24 | <%= label_tag :settings_show_article_without_tabs, l(:show_article_without_tabs) %>
25 | <%= check_box_tag 'settings[show_article_without_tabs]', 1, @settings[:show_article_without_tabs] %>
26 |
27 |
28 |
29 | <%= label_tag :settings_show_attachments_first, l(:show_attachments_first) %>
30 | <%= check_box_tag 'settings[show_attachments_first]', 1, @settings[:show_attachments_first] %>
31 |
32 |
33 |
34 | <%= label_tag :settings_show_thumbnails_for_articles, l(:show_thumbnails_for_articles) %>
35 | <%= check_box_tag 'settings[show_thumbnails_for_articles]', 1, @settings[:show_thumbnails_for_articles] %>
36 |
37 |
38 |
39 | <%= label_tag :settings_show_breadcrumbs_for_article_lists, l(:show_breadcrumbs_for_article_lists) %>
40 | <%= check_box_tag 'settings[show_breadcrumbs_for_article_lists]', 1, @settings[:show_breadcrumbs_for_article_lists] %>
41 |
42 |
43 |
44 | <%= label_tag :settings_tiled_article_lists, l(:show_tiled_article_lists) %>
45 | <%= check_box_tag 'settings[show_tiled_article_lists]', 1, @settings[:show_tiled_article_lists] %>
46 |
47 |
48 |
49 | <%= label_tag :settings_critical_tags, l(:critical_tags) %>
50 | <%= text_field_tag "settings[critical_tags]", @settings[:critical_tags] %>
51 |
52 |
--------------------------------------------------------------------------------
/assets/images/attachments.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/attachments.png
--------------------------------------------------------------------------------
/assets/images/category.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/category.png
--------------------------------------------------------------------------------
/assets/images/comments.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/comments.png
--------------------------------------------------------------------------------
/assets/images/default-thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/default-thumbnail.png
--------------------------------------------------------------------------------
/assets/images/delete.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/delete.gif
--------------------------------------------------------------------------------
/assets/images/icon-bookmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/icon-bookmark.png
--------------------------------------------------------------------------------
/assets/images/icon-home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/icon-home.png
--------------------------------------------------------------------------------
/assets/images/icon-pdf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/icon-pdf.png
--------------------------------------------------------------------------------
/assets/images/icon-printer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/icon-printer.png
--------------------------------------------------------------------------------
/assets/images/icon-word.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/icon-word.png
--------------------------------------------------------------------------------
/assets/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/loading.gif
--------------------------------------------------------------------------------
/assets/images/page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page.png
--------------------------------------------------------------------------------
/assets/images/page_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_add.png
--------------------------------------------------------------------------------
/assets/images/page_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_edit.png
--------------------------------------------------------------------------------
/assets/images/page_white_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_add.png
--------------------------------------------------------------------------------
/assets/images/page_white_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_edit.png
--------------------------------------------------------------------------------
/assets/images/page_white_find.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_find.png
--------------------------------------------------------------------------------
/assets/images/page_white_key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_key.png
--------------------------------------------------------------------------------
/assets/images/page_white_link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_link.png
--------------------------------------------------------------------------------
/assets/images/page_white_magnify.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_magnify.png
--------------------------------------------------------------------------------
/assets/images/page_white_medal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_medal.png
--------------------------------------------------------------------------------
/assets/images/page_white_star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_star.png
--------------------------------------------------------------------------------
/assets/images/page_white_text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/page_white_text.png
--------------------------------------------------------------------------------
/assets/images/star.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/images/star.gif
--------------------------------------------------------------------------------
/assets/javascripts/jquery.MetaData.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/assets/javascripts/jquery.MetaData.js
--------------------------------------------------------------------------------
/assets/javascripts/jquery.rating.pack.js:
--------------------------------------------------------------------------------
1 | /*
2 | ### jQuery Star Rating Plugin v4.11 - 2013-03-14 ###
3 | * Home: http://www.fyneworks.com/jquery/star-rating/
4 | * Code: http://code.google.com/p/jquery-star-rating-plugin/
5 | *
6 | * Licensed under http://en.wikipedia.org/wiki/MIT_License
7 | ###
8 | */
9 | eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';5(1W.1C)(8($){5((!$.1s.1V&&!$.1s.1U))2d{1j.1X("1T",C,s)}1R(e){};$.o.4=8(j){5(3.u==0)9 3;5(M V[0]==\'1m\'){5(3.u>1){7 k=V;9 3.18(8(){$.o.4.K($(3),k)})};$.o.4[V[0]].K(3,$.27(V).26(1)||[]);9 3};7 j=$.1b({},$.o.4.1w,j||{});$.o.4.P++;3.1y(\'.l-4-1g\').p(\'l-4-1g\').18(8(){7 b,m=$(3);7 c=(3.2g||\'28-4\').1f(/\\[|\\]/g,\'Y\').1f(/^\\Y+|\\Y+$/g,\'\');7 d=$(3.2h||1j.1H);7 e=d.6(\'4\');5(!e||e.1o!=$.o.4.P)e={E:0,1o:$.o.4.P};7 f=e[c]||d.6(\'4\'+c);5(f)b=f.6(\'4\');5(f&&b)b.E++;R{b=$.1b({},j||{},($.1d?m.1d():($.25?m.6():w))||{},{E:0,L:[],v:[]});b.z=e.E++;f=$(\'<1G 13="l-4-1I"/>\');m.1J(f);f.p(\'4-12-11-10\');5(m.Z(\'G\')||m.14(\'G\'))b.n=s;5(m.14(\'1c\'))b.1c=s;f.1r(b.D=$(\'\'+b.1B+\'\').q(\'1e\',8(){$(3).4(\'N\');$(3).p(\'l-4-T\')}).q(\'1h\',8(){$(3).4(\'x\');$(3).I(\'l-4-T\')}).q(\'1i\',8(){$(3).4(\'y\')}).6(\'4\',b))};7 g=$(\'\'+3.1k+\'\');f.1r(g);5(3.X)g.Z(\'X\',3.X);5(3.1x)g.p(3.1x);5(b.29)b.B=2;5(M b.B==\'1l\'&&b.B>0){7 h=($.o.15?g.15():0)||b.1n;7 i=(b.E%b.B),17=1K.1L(h/b.B);g.15(17).1M(\'a\').1N({\'1O-1P\':\'-\'+(i*17)+\'1Q\'})};5(b.n)g.p(\'l-4-1p\');R g.p(\'l-4-1S\').q(\'1e\',8(){$(3).4(\'1q\');$(3).4(\'J\')}).q(\'1h\',8(){$(3).4(\'x\');$(3).4(\'H\')}).q(\'1i\',8(){$(3).4(\'y\')});5(3.S)b.r=g;5(3.1Y=="A"){5($(3).14(\'1Z\'))b.r=g};m.1t();m.q(\'1u.4\',8(a){5(a.1v)9 C;$(3).4(\'y\')});g.6(\'4.m\',m.6(\'4.l\',g));b.L[b.L.u]=g[0];b.v[b.v.u]=m[0];b.t=e[c]=f;b.23=d;m.6(\'4\',b);f.6(\'4\',b);g.6(\'4\',b);d.6(\'4\',e);d.6(\'4\'+c,f)});$(\'.4-12-11-10\').4(\'x\').I(\'4-12-11-10\');9 3};$.1b($.o.4,{P:0,J:8(){7 a=3.6(\'4\');5(!a)9 3;5(!a.J)9 3;7 b=$(3).6(\'4.m\')||$(3.19==\'1a\'?3:w);5(a.J)a.J.K(b[0],[b.Q(),$(\'a\',b.6(\'4.l\'))[0]])},H:8(){7 a=3.6(\'4\');5(!a)9 3;5(!a.H)9 3;7 b=$(3).6(\'4.m\')||$(3.19==\'1a\'?3:w);5(a.H)a.H.K(b[0],[b.Q(),$(\'a\',b.6(\'4.l\'))[0]])},1q:8(){7 a=3.6(\'4\');5(!a)9 3;5(a.n)9;3.4(\'N\');3.1z().1A().O(\'.t-\'+a.z).p(\'l-4-T\')},N:8(){7 a=3.6(\'4\');5(!a)9 3;5(a.n)9;a.t.2a().O(\'.t-\'+a.z).I(\'l-4-q\').I(\'l-4-T\')},x:8(){7 a=3.6(\'4\');5(!a)9 3;3.4(\'N\');7 b=$(a.r);7 c=b.u?b.1z().1A().O(\'.t-\'+a.z):w;5(c)c.p(\'l-4-q\');a.D[a.n||a.1c?\'1t\':\'2b\']();3.2c()[a.n?\'p\':\'I\'](\'l-4-1p\')},y:8(a,b){7 c=3.6(\'4\');5(!c)9 3;5(c.n)9;c.r=w;5(M a!=\'F\'||3.u>1){5(M a==\'1l\')9 $(c.L[a]).4(\'y\',F,b);5(M a==\'1m\'){$.18(c.L,8(){5($(3).6(\'4.m\').Q()==a)$(3).4(\'y\',F,b)});9 3}}R{c.r=3[0].19==\'1a\'?3.6(\'4.l\'):(3.2e(\'.t-\'+c.z)?3:w)};3.6(\'4\',c);3.4(\'x\');7 d=$(c.r?c.r.6(\'4.m\'):w);7 e=$(c.v).O(\':S\');7 f=$(c.v).1y(d);f.1D(\'S\',C);d.1D(\'S\',s);$(d.u?d:e).2f({1E:\'1u\',1v:s});5((b||b==F)&&c.1F)c.1F.K(d[0],[d.Q(),$(\'a\',c.r)[0]]);9 3},n:8(a,b){7 c=3.6(\'4\');5(!c)9 3;c.n=a||a==F?s:C;5(b)$(c.v).Z("G","G");R $(c.v).2i("G");3.6(\'4\',c);3.4(\'x\')},2j:8(){3.4(\'n\',s,s)},2k:8(){3.4(\'n\',C,C)}});$.o.4.1w={D:\'2l 2m\',1B:\'\',B:0,1n:16};$(8(){$(\'m[1E=2n].l\').4()})})(1C);',62,148,'|||this|rating|if|data|var|function|return||||||||||||star|input|readOnly|fn|addClass|on|current|true|rater|length|inputs|null|draw|select|serial||split|false|cancel|count|undefined|disabled|blur|removeClass|focus|apply|stars|typeof|drain|filter|calls|val|else|checked|hover|title|arguments|div|id|_|attr|drawn|be|to|class|hasClass|width||spw|each|tagName|INPUT|extend|required|metadata|mouseover|replace|applied|mouseout|click|document|value|number|string|starWidth|call|readonly|fill|append|support|hide|change|selfTriggered|options|className|not|prevAll|addBack|cancelValue|jQuery|prop|type|callback|span|body|control|before|Math|floor|find|css|margin|left|px|catch|live|BackgroundImageCache|style|opacity|window|execCommand|nodeName|selected|role|text|aria|context|label|meta|slice|makeArray|unnamed|half|children|show|siblings|try|is|trigger|name|form|removeAttr|disable|enable|Cancel|Rating|radio'.split('|'),0,{}))
--------------------------------------------------------------------------------
/assets/javascripts/tag-it.LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011 Levy Carneiro Jr.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/assets/stylesheets/jquery.tagit.css:
--------------------------------------------------------------------------------
1 | ul.tagit {
2 | padding: 1px 5px;
3 | overflow: auto;
4 | margin-left: inherit; /* usually we don't want the regular ul margins. */
5 | margin-right: inherit;
6 | }
7 | ul.tagit li {
8 | display: block;
9 | float: left;
10 | margin: 2px 5px 2px 0;
11 | }
12 | ul.tagit li.tagit-choice {
13 | position: relative;
14 | line-height: inherit;
15 | }
16 | input.tagit-hidden-field {
17 | display: none;
18 | }
19 | ul.tagit li.tagit-choice-read-only {
20 | padding: .2em .5em .2em .5em;
21 | }
22 |
23 | ul.tagit li.tagit-choice-editable {
24 | padding: .2em 18px .2em .5em;
25 | }
26 |
27 | ul.tagit li.tagit-new {
28 | padding: .25em 4px .25em 0;
29 | }
30 |
31 | ul.tagit li.tagit-choice a.tagit-label {
32 | cursor: pointer;
33 | text-decoration: none;
34 | }
35 | ul.tagit li.tagit-choice .tagit-close {
36 | cursor: pointer;
37 | position: absolute;
38 | right: .1em;
39 | top: 50%;
40 | margin-top: -8px;
41 | line-height: 17px;
42 | }
43 |
44 | /* used for some custom themes that don't need image icons */
45 | ul.tagit li.tagit-choice .tagit-close .text-icon {
46 | display: none;
47 | }
48 |
49 | ul.tagit li.tagit-choice input {
50 | display: block;
51 | float: left;
52 | margin: 2px 5px 2px 0;
53 | }
54 | ul.tagit input[type="text"] {
55 | -moz-box-sizing: border-box;
56 | -webkit-box-sizing: border-box;
57 | box-sizing: border-box;
58 |
59 | -moz-box-shadow: none;
60 | -webkit-box-shadow: none;
61 | box-shadow: none;
62 |
63 | border: none;
64 | margin: 0;
65 | padding: 0;
66 | width: inherit;
67 | background-color: inherit;
68 | outline: none;
69 | }
70 |
71 | /* Customizations for Knowledgebase plugin below */
72 |
73 | .tagit-choice {
74 | color:#060 !important;
75 | background-color:#E1FFD1 !important;
76 | background-image: none !important;
77 | border:solid 1px #C5F8AC !important;
78 | -moz-border-radius: 5px !important;
79 | -webkit-border-radius: 5px !important;
80 | border-radius: 5px !important;
81 | white-space: nowrap !important;
82 | }
83 |
84 | .tabular .ui-widget-content {
85 | max-width: 95%;
86 | }
87 |
--------------------------------------------------------------------------------
/bin/sync_translations.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | #
3 | # refresh.rb
4 | # (c) 2011, Alex Bevilacqua
5 | #
6 | # This script takes all yaml localization files in the target directory
7 | # (as defined by PATH) and re-orders them so that they appear in
8 | # alphabetical order.
9 | # It also takes the control (primary) localization file and injects any keys
10 | # that may be missing from the derivative files.
11 | #
12 | # TODO don't discard comments
13 | # TODO don't discard other elements in the file that don't match
14 | # hash.keys.first
15 | ###############################################################################
16 | $KCODE = 'UTF8' unless RUBY_VERSION >= '1.9'
17 |
18 | require 'rubygems'
19 | require 'yaml'
20 | require 'ya2yaml'
21 |
22 | # The location of the locale files
23 | PATH = "config/locales/"
24 |
25 | # The "control" file is the one we assume will always have the latest
26 | # translatable fields that should be copied to all other translation files
27 | CONTROL = "en.yml"
28 |
29 | class Hash
30 | # Replacing the to_yaml function so it'll serialize hashes sorted (by their keys)
31 | #
32 | # Original function is in /usr/lib/ruby/1.8/yaml/rubytypes.rb
33 | def to_yaml( opts = {} )
34 | YAML::quick_emit( object_id, opts ) do |out|
35 | out.map( taguri, to_yaml_style ) do |map|
36 | # sort keys alphabetically
37 | sort.each do |k, v|
38 | map.add( k, v )
39 | end
40 | end
41 | end
42 | end
43 | end
44 |
45 | # open the control file before processing the file list
46 | ctrl = YAML::load(File.open(PATH + CONTROL))
47 |
48 | # iterate over each YAML file in the target directory
49 | Dir["#{PATH}*.yml"].each do |lang|
50 | puts "Processing #{lang} ..."
51 | data = YAML::load(File.open(lang))
52 |
53 | unless lang == CONTROL
54 | # Fill the current translation template with any keys that may be missing
55 | # from the control template
56 | # We assume that the YAML structure will always be:
57 | # lang:
58 | # entry_1: value
59 | # entry_2: value
60 | # so we fetch the first hash value and work the it's children
61 | ctrl["#{ctrl.keys.first}"].each do |c|
62 | data["#{data.keys.first}"][c[0]] = c[1] unless data["#{data.keys.first}"].has_key?(c[0])
63 | end
64 | end
65 |
66 | # overwrite the original file with the sorted and refreshed translation files
67 | file = File.open(lang, 'w')
68 | file.write(data.ya2yaml(:syck_compatible => true))
69 | file.close
70 | end
71 |
--------------------------------------------------------------------------------
/config/locales/bg.yml:
--------------------------------------------------------------------------------
1 | ---
2 | bg:
3 | allow_anon_access: "Разрешаване на анонимен достъп?"
4 | allow_sort_category_tree: "Азбучно сортиране на дървото на категориите?"
5 | disable_article_summaries: "Disable Article Summaries"
6 | field_article_author: "Created by"
7 | field_article_destroyer: "Deleted by"
8 | field_article_updater: "Updated by"
9 | field_tag_list: "Сипсък на маркерите"
10 | field_updated_at: "Updated at"
11 | field_version: Version
12 | field_version_comments: "Change comments"
13 | knowledgebase_title: "База знания"
14 | label_article_created: "Създадена статия '%{title}'"
15 | label_article_plural: Статии
16 | label_article_removed: "Статията е премахната"
17 | label_article_updated: "Статията е обновена"
18 | label_article_version: "Article version: %{version} - "
19 | label_article_viewed:
20 | one: "Разглеждана един път"
21 | other: "Разглеждана %{count} пъти"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Категория
25 | label_category_created: "Създадена категория '%{title}'"
26 | label_category_deleted: "Категорията е премахната"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "В категорията има статии и поради това не може да бъде премахната."
29 | label_category_plural: Категории
30 | label_category_updated: "Категорията е обновена"
31 | label_content: Съдържание
32 | label_delete_article: Премахване
33 | label_delete_category: "Премахване на категория"
34 | label_description: Описание
35 | label_edit_article: Редактиране
36 | label_edit_category: "Редактиране на категория"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Преход към категория"
40 | label_kb_article_plural: "Knowledgebase articles"
41 | label_kb_home: Начало
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "Нова статия"
44 | label_new_category: "Нова категория"
45 | label_new_comment: "Нов коментар"
46 | label_overview_my_articles: "Articles written by me: %{total_articles_by_me}"
47 | label_overview_total_articles: "Total number of articles: %{total_articles}"
48 | label_overview_total_categories: "Total number of categories: %{total_categories}"
49 | label_parent_category: "Родителска категория"
50 | label_root_category: "Коренна категория"
51 | label_subcategories: Под-категории
52 | label_summary: Анотация
53 | label_summary_newest_articles: "Създадена преди %{ago} в %{category}"
54 | label_summary_popular_articles:
55 | one: "Разглеждана един път след %{created}"
56 | other: "Разглеждана %{count} пъти след %{created}"
57 | label_summary_toprated_articles:
58 | one: "Рейтинг: %{rating_avg}/%{rating_max} от един вот"
59 | other: "Рейтинг: %{rating_avg}/%{rating_max} от %{count} вота"
60 | label_summary_updated_articles: "Обновени преди %{ago}"
61 | label_title: Заглавие
62 | label_title_articles: Статия
63 | label_title_category: Категория
64 | label_unrated_article: Unrated
65 | label_updated_who: "Обновено от %{updater} преди %{age}"
66 | message_no_articles: "Все още няма добавени статии в базата знания. Може би сега ще започнете с първата ..."
67 | message_no_categories: "За съжаление няма дефинирани категории, и вие трябва да влезете в Redmine за да създадете нови категории."
68 | message_no_permissions: "You do not have permission to view any articles or categories. Please contact your administrator."
69 | message_summary_count_not_available: "Summary Count Not Available!"
70 | permission_comment_and_rate_articles: "Коментиране и оценка на статии"
71 | permission_create_article_categories: "Създаване на категории"
72 | permission_create_articles: "Създаване на статии"
73 | permission_edit_articles: "Редкатиране на статии"
74 | permission_manage_article_categories: "Управление на категориите"
75 | permission_manage_article_history: "manage article history"
76 | permission_manage_articles: "Управление на статии"
77 | permission_manage_articles_comments: "Управление на коментарите"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "view article history"
80 | permission_view_articles: "Разглеждане на статии"
81 | permission_view_kb_articles: "View articles"
82 | permission_view_most_popular_articles: "view most popular articles"
83 | permission_view_recent_articles: "View recent articles"
84 | permission_view_top_rated_articles: "view top rated articles"
85 | permission_watch_articles: "Watch articles"
86 | permission_watch_categories: "Watch categories"
87 | project_module_knowledgebase: Knowledgebase
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Показване на информацията за категориите в дървовидна структура?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Ограничение на анотациите по размер"
94 | text_confirm_versions_delete: "This will revert and delete any newer versions of this document that may exist. Are you sure?"
95 | text_current_version: Current
96 | title_add_comment: "Добавяне на коментар"
97 | title_article_rating: "Рейтинг на статията"
98 | title_browse_by_category: "Разглеждане по категории"
99 | title_browse_by_tags: "Browse by Tags"
100 | title_create_article: "Създаване на статия"
101 | title_create_category: "Създаване на категория"
102 | title_edit_article: "Редактиране на статия"
103 | title_edit_category: "Редактиране на категория"
104 | title_most_popular_articles: "Най-популярни статии"
105 | title_new_category: "Нова категория"
106 | title_newest_articles: "Нови статии"
107 | title_overview_summary: "Knowledgebase Summary"
108 | title_recently_updated_articles: "Наскоро обновени статии"
109 | title_tagged_articles: "Статии, маркирани с %{tag}"
110 | title_tags: Маркери
111 | title_top_rated_articles: "Статии с най-голям рейтинг"
112 | title_votes:
113 | one: "един глас"
114 | other: "%{count} гласа"
115 | zero: гласа
116 |
--------------------------------------------------------------------------------
/config/locales/cs.yml:
--------------------------------------------------------------------------------
1 | ---
2 | cs:
3 | allow_anon_access: "Dovolit anonymní přístup?"
4 | allow_sort_category_tree: "Řadit strom kategorií podle abecedy?"
5 | disable_article_summaries: "Disable Article Summaries"
6 | field_article_author: "Created by"
7 | field_article_destroyer: "Deleted by"
8 | field_article_updater: "Updated by"
9 | field_tag_list: "Seznam štítků"
10 | field_updated_at: "Updated at"
11 | field_version: Version
12 | field_version_comments: "Change comments"
13 | knowledgebase_title: "Znalostní databáze"
14 | label_article_created: "Byl vytvořen článek %{title}"
15 | label_article_plural: Články
16 | label_article_removed: "Článek byl smazán"
17 | label_article_updated: "Článek byl aktualizován"
18 | label_article_version: "Article version: %{version} - "
19 | label_article_viewed:
20 | one: "Zobrazeno jednou"
21 | other: "Zobrazeno %{count} krát"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Kategorie
25 | label_category_created: "Byla vytvořena kategorie %{title}"
26 | label_category_deleted: "Kategorie byla smazána"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "Kategorie obsahuje články a nemůže být smazána."
29 | label_category_plural: Kategorie
30 | label_category_updated: "Kategorie byla aktualizována"
31 | label_content: Obsah
32 | label_delete_article: Smazat
33 | label_delete_category: "Odstranit kategorii"
34 | label_description: Popis
35 | label_edit_article: Upravit
36 | label_edit_category: "Upravit kategorii"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_home: Úvodní
40 | label_jump_category: "Skočit na kategorii"
41 | label_kb_article_plural: "Knowledgebase articles"
42 | label_kb_home: Home
43 | label_kb_link: "KB#%{kb_id}"
44 | label_new_article: "Nový článek"
45 | label_new_category: "Nová kategorie"
46 | label_new_comment: "Nový komentář"
47 | label_overview_my_articles: "Articles written by me: %{total_articles_by_me}"
48 | label_overview_total_articles: "Total number of articles: %{total_articles}"
49 | label_overview_total_categories: "Total number of categories: %{total_categories}"
50 | label_parent_category: "Nadřazená kategorie"
51 | label_root_category: "Kategorie nejvyšší úrovně"
52 | label_subcategories: Podkategorie
53 | label_summary: Souhrn
54 | label_summary_newest_articles: "Vytvořeno před %{ago} v %{category}"
55 | label_summary_popular_articles:
56 | one: "Zobrazeno jednou od %{created}"
57 | other: "Zobrazeno %{count} krát od %{created}"
58 | label_summary_toprated_articles:
59 | one: "Hodnoceno jedním hlasem, %{rating_avg}/%{rating_max}"
60 | other: "Hodnoceno %{count} hlasy, %{rating_avg}/%{rating_max}"
61 | label_summary_updated_articles: "Aktualizováno před %{ago}"
62 | label_title: Název
63 | label_title_articles: Články
64 | label_title_category: Kategorie
65 | label_unrated_article: Unrated
66 | label_updated_who: "Updated by %{updater} %{age} ago"
67 | message_no_articles: "Zatím nejsou ve znalostní databázi žádné články. Asi byste měli začít něco dělat..."
68 | message_no_categories: "Unfortunately, there aren't any Categories defined, and you need to be logged in to create new categories."
69 | message_no_permissions: "You do not have permission to view any articles or categories. Please contact your administrator."
70 | message_summary_count_not_available: "Summary Count Not Available!"
71 | permission_comment_and_rate_articles: "Komentovat a hodnotit články"
72 | permission_create_article_categories: "Vytvářet kategorie"
73 | permission_create_articles: "Vytvářet články"
74 | permission_edit_articles: "Upravovat články"
75 | permission_manage_article_categories: "Spravovat kategorie"
76 | permission_manage_article_history: "manage article history"
77 | permission_manage_articles: "Spravovat články"
78 | permission_manage_articles_comments: "Spravovat komentáře"
79 | permission_manage_own_articles: "Manage own articles"
80 | permission_view_article_history: "view article history"
81 | permission_view_articles: "Zobrazit články"
82 | permission_view_kb_articles: "View articles"
83 | permission_view_most_popular_articles: "view most popular articles"
84 | permission_view_recent_articles: "View recent articles"
85 | permission_view_top_rated_articles: "view top rated articles"
86 | permission_watch_articles: "Watch articles"
87 | permission_watch_categories: "Watch categories"
88 | project_module_knowledgebase: Knowledgebase
89 | show_article_without_tabs: "Show articles without tabs?"
90 | show_attachments_first: "Show attachments before article content?"
91 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
92 | show_category_totals: "Zobrazit součty pro kategorie ve stromě?"
93 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
94 | summary_item_limit: "Limit pro délku souhrnu"
95 | text_confirm_versions_delete: "This will revert and delete any newer versions of this document that may exist. Are you sure?"
96 | text_current_version: Current
97 | title_add_comment: "Přidat komentář"
98 | title_article_rating: "Hodnocení článku"
99 | title_browse_by_category: "Procházet podle kategorie"
100 | title_browse_by_tags: "Browse by Tags"
101 | title_create_article: "Vytvořit článek"
102 | title_create_category: "Vytvořit kategorii"
103 | title_edit_article: "Upravit článek"
104 | title_edit_category: "Upravit kategrii"
105 | title_most_popular_articles: "Nejpopulárnější články"
106 | title_new_category: "Nová kategorie"
107 | title_newest_articles: "Nejnovější články"
108 | title_overview_summary: "Knowledgebase Summary"
109 | title_recently_updated_articles: "Nedávno upravené články"
110 | title_tagged_articles: "Články se štítkem %{tag}"
111 | title_tags: Štítky
112 | title_top_rated_articles: "Nejlépe hodnocené články"
113 | title_votes:
114 | few: hlasy
115 | one: "jeden hlas"
116 | other: "%{count} hlasů"
117 | zero: "žádné hlasy"
118 |
--------------------------------------------------------------------------------
/config/locales/de.yml:
--------------------------------------------------------------------------------
1 | ---
2 | de:
3 | allow_anon_access: "Anonymen Zugriff erlauben?"
4 | allow_sort_category_tree: "Den Katgegoriebaum alphabetisch sortieren?"
5 | disable_article_summaries: "Artikelzusammenfassungen deaktivieren"
6 | field_article_author: "Erstellt von"
7 | field_article_destroyer: "Gelöscht von"
8 | field_article_updater: "Aktualisiert von"
9 | field_tag_list: "Tag Liste"
10 | field_updated_at: "Aktualisiert am"
11 | field_version: Version
12 | field_version_comments: Änderungskommentare
13 | knowledgebase_title: Wissensbasis
14 | label_article_created: "Artikel '%{title}' erstellt"
15 | label_article_plural: Artikel
16 | label_article_removed: "Artikel entfernt"
17 | label_article_updated: "Artikel aktualisiert"
18 | label_article_version: "Article version: %{version} - "
19 | label_article_viewed:
20 | one: "Einmal gesehen"
21 | other: "%{count} mal gesehen"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Kategorie
25 | label_category_created: "Kategorie '%{title}' erstellt"
26 | label_category_deleted: "Kategorie gelöscht"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "Dieser Kategorie sind noch Artikel zugewiesen und kann nicht gelöscht werden,"
29 | label_category_plural: Kategorien
30 | label_category_updated: "Kategorie aktualisiert"
31 | label_content: Inhalt
32 | label_delete_article: Löschen
33 | label_delete_category: "Kategorie entfernen"
34 | label_description: Beschreibung
35 | label_edit_article: Bearbeiten
36 | label_edit_category: "Kategorie bearbeiten"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Zur Kategorie wechseln "
40 | label_kb_article_plural: "Wissensbasis Artikel"
41 | label_kb_home: Home
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "Artikel erstellen"
44 | label_new_category: "Kategorie erstellen"
45 | label_new_comment: "Neuer Kommentar"
46 | label_overview_my_articles: "Von mir geschriebene Artikel: %{total_articles_by_me}"
47 | label_overview_total_articles: "Artikelanzahl: %{total_articles}"
48 | label_overview_total_categories: "Kategorieanzahl: %{total_categories}"
49 | label_parent_category: "Übergeordnete Kategorie"
50 | label_root_category: "Root Kategorie"
51 | label_subcategories: Unterkategorien
52 | label_summary: Zusammenfassung
53 | label_summary_newest_articles: "Erstellt vor %{ago} in %{category}"
54 | label_summary_popular_articles:
55 | one: "Einmal angezeigt seit %{created}"
56 | other: "%{count} mal angezeigt seit %{created}"
57 | label_summary_toprated_articles:
58 | one: "Rating: %{rating_avg}/%{rating_max} aus einer Stimme"
59 | other: "Rating: %{rating_avg}/%{rating_max} aus %{count} Stimmen"
60 | label_summary_updated_articles: "Vor %{ago} aktualisiert"
61 | label_title: Titel
62 | label_title_articles: Artikel
63 | label_title_category: Kategorie
64 | label_unrated_article: Unrated
65 | label_updated_who: "Aktualisiert von %{updater} vor %{age}"
66 | message_no_articles: "Es wurde noch kein Artikel eingegeben. Beginnen Sie mit einem Artikel zum Thema..."
67 | message_no_categories: "Leider sind keine Kategorien definiert und Sie müssen eingeloggt sein um neue Kategorien zu erstellen."
68 | message_no_permissions: "Sie haben nicht die Berechtigungen Artikel oder Kategorien zu sehen. Bitte kontaktieren Sie ihren Administrator."
69 | message_summary_count_not_available: "Additionsnummer nicht verfügbar!"
70 | permission_comment_and_rate_articles: "Artikel kommentieren und bewerten"
71 | permission_create_article_categories: "Artikelkategorien erstellen"
72 | permission_create_articles: "Artikel erstellen"
73 | permission_edit_articles: "Artikel bearbeiten"
74 | permission_manage_article_categories: "Artikelkategorien verwalten"
75 | permission_manage_article_history: "Artikelhistorie verwalten"
76 | permission_manage_articles: "Artikel verwalten"
77 | permission_manage_articles_comments: "Artikelkommentare verwalten"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "Artikelhistorie ansehen"
80 | permission_view_articles: "Artikel anzeigen"
81 | permission_view_kb_articles: "Artikel anzeigen"
82 | permission_view_most_popular_articles: "Beliebteste Artikel ansehen"
83 | permission_view_recent_articles: "Zuletzt geänderte Artikel ansehen"
84 | permission_view_top_rated_articles: "Bestbewerteste Artikel ansehen"
85 | permission_watch_articles: "Artikel beobachten"
86 | permission_watch_categories: "Kategorien beobachten"
87 | project_module_knowledgebase: Wissensbasis
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Anzahl der Artikel pro Katgeorie im Katgeoriebaum anzeigen?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Maximale Artikel in der Übersicht"
94 | text_confirm_versions_delete: "Diese Aktion wird alle eventuell vorliegenden neueren Versionen dieses Dokumentes revidieren und löschen. Sind Sie sicher?"
95 | text_current_version: Aktuell
96 | title_add_comment: "Kommentar hinzufügen"
97 | title_article_rating: "Artikel Rating"
98 | title_browse_by_category: "Nach Kategorie filtern"
99 | title_browse_by_tags: "Nach Tags filtern"
100 | title_create_article: "Artikel erstellen"
101 | title_create_category: "Kategorie erzeugen"
102 | title_edit_article: "Artikel ändern"
103 | title_edit_category: "Kategorie ändern"
104 | title_most_popular_articles: "Beliebteste Artikel"
105 | title_new_category: "Neue Kategorie"
106 | title_newest_articles: "Neueste Artikel"
107 | title_overview_summary: "Wissensbasis Zusammenfassung"
108 | title_recently_updated_articles: "Artikel zuletzt aktualisiert"
109 | title_tagged_articles: "Artikel getaggt mit %{tag}"
110 | title_tags: Tags
111 | title_top_rated_articles: "Bestbewertete Artikel"
112 | title_votes:
113 | one: "Eine Stimme"
114 | other: "%{count} Stimmen"
115 | zero: "Keine Stimmen"
116 |
--------------------------------------------------------------------------------
/config/locales/el.yml:
--------------------------------------------------------------------------------
1 | ---
2 | el:
3 | allow_anon_access: "Να επιτραπεί ανώνυμη πρόσβαση;"
4 | allow_sort_category_tree: "Ταξινόμηση δέντρου κατα αλφαβητική σειρά;"
5 | disable_article_summaries: "Disable Article Summaries"
6 | field_article_author: "Created by"
7 | field_article_destroyer: "Deleted by"
8 | field_article_updater: "Updated by"
9 | field_tag_list: "Λίστα ετικετών"
10 | field_updated_at: "Updated at"
11 | field_version: Version
12 | field_version_comments: "Change comments"
13 | knowledgebase_title: "Γνωσιακή βάση"
14 | label_article_created: "Δημιουργηθέν άρθρο '%{title}'"
15 | label_article_plural: Άρθρα
16 | label_article_removed: "Το άρθρο διαγράφηκε"
17 | label_article_updated: "Το άρθρο επικαιροποιήθηκε"
18 | label_article_version: "Article version: %{version} - "
19 | label_article_viewed:
20 | one: "Προβλήθηκε μία φορά"
21 | other: "Προβλήθηκε %{count} φορές"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Κατηγορία
25 | label_category_created: "Δημιουργημένη κατηγορία '%{title}'"
26 | label_category_deleted: "Η κατηγορία διαγράφηκε"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "Η κατηγορία έχει ανατεθεί σε άρθρα με αποτέλεσμα να μη μπορεί να διαγραφεί."
29 | label_category_plural: Κατηγορίες
30 | label_category_updated: "Η κατηγορία επικαιροποιήθηκε"
31 | label_content: Περιεχόμενο
32 | label_delete_article: Διαγραφή
33 | label_delete_category: "Διαγραφή Κατηγορίας"
34 | label_description: Περιγραφή
35 | label_edit_article: Επεξεργασία
36 | label_edit_category: "Επεξεργασία Κατηγορίας"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Μεταπήδηση σε Κατηγορία"
40 | label_kb_article_plural: "Knowledgebase articles"
41 | label_kb_home: Αρχική
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "Νέο Άρθρο"
44 | label_new_category: "Νέα Κατηγορία"
45 | label_new_comment: "Νέο Σχόλιο"
46 | label_overview_my_articles: "Articles written by me: %{total_articles_by_me}"
47 | label_overview_total_articles: "Total number of articles: %{total_articles}"
48 | label_overview_total_categories: "Total number of categories: %{total_categories}"
49 | label_parent_category: "Μητρική Κατηγορία"
50 | label_root_category: "Αρχική Κατηγορία"
51 | label_subcategories: Υποκατηγορείες
52 | label_summary: Περίληψη
53 | label_summary_newest_articles: "Δημιουργήθηκε πριν από %{ago} στην %{category}"
54 | label_summary_popular_articles:
55 | one: "Προβλήθηκε μία φορά την %{created}"
56 | other: "Προβλήθηκε %{count} φορές από την %{created}"
57 | label_summary_toprated_articles:
58 | one: "Βαθμολογία: %{rating_avg}/%{rating_max} από μία ψήφο"
59 | other: "Βαθμολογία: %{rating_avg}/%{rating_max} από %{count} ψήφους"
60 | label_summary_updated_articles: "Επικαιροποιήθηκε πριν %{ago}"
61 | label_title: Τίτλος
62 | label_title_articles: Άρθρο
63 | label_title_category: Κατηγορία
64 | label_unrated_article: Unrated
65 | label_updated_who: "Updated by %{updater} %{age} ago"
66 | message_no_articles: "Δεν έχουν προστεθέι άρθρα στην Γνωσιακή Βάση για την ώρα. Ίσως θέλετε να κάνετε την αρχή ..."
67 | message_no_categories: "Δυστυχώς, δεν έχουν καθοριστεί κατηγορίες, πρέπει να να συνδεθεί για να δημιουργήσετε νέες κατηγορίες."
68 | message_no_permissions: "You do not have permission to view any articles or categories. Please contact your administrator."
69 | message_summary_count_not_available: "Summary Count Not Available!"
70 | permission_comment_and_rate_articles: "Comment and rate articles"
71 | permission_create_article_categories: "Create article categories"
72 | permission_create_articles: "Create articles"
73 | permission_edit_articles: "Edit articles"
74 | permission_manage_article_categories: "Manage article categories"
75 | permission_manage_article_history: "manage article history"
76 | permission_manage_articles: "Manage articles"
77 | permission_manage_articles_comments: "Manage articles comments"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "view article history"
80 | permission_view_articles: "View articles"
81 | permission_view_kb_articles: "View articles"
82 | permission_view_most_popular_articles: "view most popular articles"
83 | permission_view_recent_articles: "View recent articles"
84 | permission_view_top_rated_articles: "view top rated articles"
85 | permission_watch_articles: "Watch articles"
86 | permission_watch_categories: "Watch categories"
87 | project_module_knowledgebase: Knowledgebase
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Εμφάνιση συνόλων κατηγοριών στο δέντρο;"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Όριο σύνοψης σελίδας της Γνωσιακής Βάσης"
94 | text_confirm_versions_delete: "This will revert and delete any newer versions of this document that may exist. Are you sure?"
95 | text_current_version: Current
96 | title_add_comment: "Προσθήκη Σχολίου"
97 | title_article_rating: "Βαθμολογία Άρθρου"
98 | title_browse_by_category: "Περιήγηση στην Κατηγορία"
99 | title_browse_by_tags: "Browse by Tags"
100 | title_create_article: "Δημιουργία Άρθρου"
101 | title_create_category: "Δημιουργία Κατηγορίας"
102 | title_edit_article: "Επεξεργασία Άρθρου"
103 | title_edit_category: "Έπεξεργασία Κατηγορίας"
104 | title_most_popular_articles: "Δημοφιλέστερα Άρθρα"
105 | title_new_category: "Νέα Κατηγορία"
106 | title_newest_articles: "Νεότερα Άρθρα"
107 | title_overview_summary: "Knowledgebase Summary"
108 | title_recently_updated_articles: "Πρόσφατα ενημερωμένα άρθρα"
109 | title_tagged_articles: "Άρθα επισημασμένα με %{tag}"
110 | title_tags: Ετικέτες
111 | title_top_rated_articles: "Κορυφαία βαθμολογημένα άρθρα"
112 | title_votes:
113 | one: "μία ψήφος"
114 | other: "%{count} ψήφοι"
115 | zero: "χωρίς ψήφους"
116 |
--------------------------------------------------------------------------------
/config/locales/en.yml:
--------------------------------------------------------------------------------
1 | ---
2 | en:
3 | articles_per_list_page: "Articles per list page?"
4 | allow_anon_access: "Allow anonymous access?"
5 | allow_sort_category_tree: "Sort the category tree alphabetically?"
6 | critical_tags: "Critical tags to show first (comma separated)."
7 | disable_article_summaries: "Disable Article Summaries"
8 | description_create_article: ""
9 | field_article_author: "Created by"
10 | field_article_destroyer: "Deleted by"
11 | field_article_updater: "Updated by"
12 | field_tag_list: "Tag List"
13 | field_updated_at: "Updated at"
14 | field_version: Version
15 | field_version_comments: "Change comments"
16 | knowledgebase_title: Knowledgebase
17 | label_article_created: "Created article '%{title}'"
18 | label_article_plural: Articles
19 | label_article_removed: "Article removed"
20 | label_article_updated: "Article updated"
21 | label_article_version: "Article version: %{version} - "
22 | label_article_viewed:
23 | one: "Viewed once"
24 | other: "Viewed %{count} times"
25 | label_attachment_add: "Add files"
26 | label_authored_by: "Articles authored by"
27 | label_category: Category
28 | label_category_created: "Created category '%{title}'"
29 | label_category_deleted: "Category deleted"
30 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
31 | label_category_not_empty_cannot_delete: "Category can not be deleted because it contains articles."
32 | label_category_plural: Categories
33 | label_category_updated: "Category updated"
34 | label_content: Content
35 | label_delete_article: Delete
36 | label_delete_category: "Delete Category"
37 | label_description: Description
38 | label_edit_article: Edit
39 | label_edit_category: "Edit Category"
40 | label_filter_by_tag: "Filter by Tag"
41 | label_filtered_by_tag: "Filtered by:"
42 | label_jump_category: "Jump Category"
43 | label_kb_article_plural: "Knowledgebase articles"
44 | label_kb_home: Home
45 | label_kb_link: "KB#%{kb_id}"
46 | label_new_article: "New Article"
47 | label_new_category: "New Category"
48 | label_new_comment: "New Comment"
49 | label_overview_my_articles: "Articles written by me: %{total_articles_by_me}"
50 | label_overview_total_articles: "Total number of articles: %{total_articles}"
51 | label_overview_total_categories: "Total number of categories: %{total_categories}"
52 | label_parent_category: "Parent Category"
53 | label_root_category: "Root Category"
54 | label_subcategories: Sub-categories
55 | label_summary: Summary
56 | label_summary_newest_articles: "Created %{ago} ago in %{category}"
57 | label_summary_popular_articles:
58 | one: "Viewed once since %{created}"
59 | other: "Viewed %{count} times since %{created}"
60 | label_summary_toprated_articles:
61 | one: "Rating: %{rating_avg}/%{rating_max} from one vote"
62 | other: "Rating: %{rating_avg}/%{rating_max} from %{count} votes"
63 | label_summary_updated_articles: "Updated %{ago} ago"
64 | label_title: Title
65 | label_title_articles: Article
66 | label_title_category: Category
67 | label_unrated_article: Unrated
68 | label_updated_who: "Updated by %{updater} %{age} ago"
69 | label_unrated_article: "Unrated"
70 | message_no_articles: "No articles have been added yet. Click Create Article to get started."
71 | message_no_categories: "No categories have been created. Click Create Category to get started."
72 | message_no_permissions: "You do not have permission to view any articles or categories. Please contact your administrator."
73 | message_summary_count_not_available: "Summary Count Not Available!"
74 | permission_comment_and_rate_articles: "Comment and rate articles"
75 | permission_create_article_categories: "Create article categories"
76 | permission_create_articles: "Create articles"
77 | permission_edit_articles: "Edit articles"
78 | permission_manage_article_categories: "Manage article categories"
79 | permission_manage_article_history: "Manage article history"
80 | permission_manage_articles: "Manage articles"
81 | permission_manage_articles_comments: "Manage articles comments"
82 | permission_manage_own_articles: "Manage own articles"
83 | permission_view_article_history: "View article history"
84 | permission_view_articles: "View articles"
85 | permission_view_kb_articles: "View articles"
86 | permission_view_most_popular_articles: "View most popular articles"
87 | permission_view_recent_articles: "View recent articles"
88 | permission_view_top_rated_articles: "View top rated articles"
89 | permission_watch_articles: "Watch articles"
90 | permission_watch_categories: "Watch categories"
91 | project_module_knowledgebase: Knowledgebase
92 | show_article_without_tabs: "Show articles without tabs?"
93 | show_attachments_first: "Show attachments before article content?"
94 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
95 | show_category_totals: "Show category totals in tree?"
96 | show_article_without_tabs: "Show articles without tabs?"
97 | show_attachments_first: "Show attachments before article content?"
98 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
99 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
100 | show_tiled_article_lists: "Show tiled article lists?"
101 | summary_item_limit: "Knowledgebase summary page article limit"
102 | text_confirm_versions_delete: "This will revert and delete any newer versions of this document that may exist. Are you sure?"
103 | text_current_version: Current
104 | thumbnail_explanation: "When adding a file, use the description \"thumbnail\" to set an image as (only) the thumbnail for this item. Otherwise the last uploaded image file will also be used as the thumbnail."
105 | title_add_comment: "Add Comment"
106 | title_article_rating: "Article Rating"
107 | title_browse_by_category: "Browse by Category"
108 | title_browse_by_tags: "Browse by Tags"
109 | title_create_article: "Create Article"
110 | title_create_category: "Create Category"
111 | title_edit_article: "Edit Article"
112 | title_edit_category: "Edit Category"
113 | title_most_popular_articles: "Most Popular Articles"
114 | title_new_category: "New Category"
115 | title_newest_articles: "Newest Articles"
116 | title_overview_summary: "Knowledgebase Summary"
117 | title_recently_updated_articles: "Recent Articles"
118 | title_tagged_articles: "Articles tagged with %{tag}"
119 | title_tags: Tags
120 | title_top_rated_articles: "Top Rated Articles"
121 | title_votes:
122 | one: "one vote"
123 | other: "%{count} votes"
124 | zero: "no votes"
125 |
--------------------------------------------------------------------------------
/config/locales/es.yml:
--------------------------------------------------------------------------------
1 | ---
2 | es:
3 | allow_anon_access: "¿Permitir acceso anónimo?"
4 | allow_sort_category_tree: "¿Ordenar el árbol de categorías alfabéticamente?"
5 | disable_article_summaries: "Resumen de artículos desactivado"
6 | field_article_author: "Creado por"
7 | field_article_destroyer: "Eliminado por"
8 | field_article_updater: "Actualizado por"
9 | field_tag_list: "Lista de etiquetas"
10 | field_updated_at: "Actualizado en "
11 | field_version: Versión
12 | field_version_comments: "Cambiar comentarios"
13 | knowledgebase_title: "Base de conocimientos"
14 | label_article_created: "Creado el artículo '%{title}'"
15 | label_article_plural: Artículos
16 | label_article_removed: "Artículo eliminado"
17 | label_article_updated: "Artículo actualizado"
18 | label_article_version: "Versión del artículo: %{version} - "
19 | label_article_viewed:
20 | one: "Visto una vez"
21 | other: "Visto %{count} veces"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Categoría
25 | label_category_created: "Creada la categoría '%{title}'"
26 | label_category_deleted: "Categoría eliminada"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "La categoría está asignada a artículos y no se puede borrar."
29 | label_category_plural: Categorías
30 | label_category_updated: "Categoría actualizada"
31 | label_content: Contenido
32 | label_delete_article: Borrar
33 | label_delete_category: "Borrar categoría"
34 | label_description: Descripción
35 | label_edit_article: Editar
36 | label_edit_category: "Editar categoría"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Saltar categoría"
40 | label_kb_article_plural: "Artículos de Conocimiento"
41 | label_kb_home: Inicio
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "Nuevo artículo"
44 | label_new_category: "Nueva categoría"
45 | label_new_comment: "Nuevo comentario"
46 | label_overview_my_articles: "Artículos escritos por mí: %{total_articles_by_me}"
47 | label_overview_total_articles: "Número total de artículos: %{total_articles}"
48 | label_overview_total_categories: "Número total de categorías: %{total_categories}"
49 | label_parent_category: "Categoría principal"
50 | label_root_category: "Categoría raíz"
51 | label_subcategories: Sub-categorías
52 | label_summary: Resumen
53 | label_summary_newest_articles: "Creadho hace %{ago} en %{category}"
54 | label_summary_popular_articles:
55 | one: "Visto una vez desde %{created}"
56 | other: "Visto %{count} veces desde %{created}"
57 | label_summary_toprated_articles:
58 | one: "Valoración: %{rating_avg}/%{rating_max} de un voto"
59 | other: "Valoración: %{rating_avg}/%{rating_max} de %{count} votos"
60 | label_summary_updated_articles: "Actualizado hace %{ago}"
61 | label_title: Título
62 | label_title_articles: Artículo
63 | label_title_category: Categoría
64 | label_unrated_article: Unrated
65 | label_updated_who: "Actualizado por %{updater} hace %{age}"
66 | message_no_articles: "No hay artículos agregados. Empieza cuando quieras..."
67 | message_no_categories: "No hay ninguna categoría definida y necesitas estar validado para crear una nueva."
68 | message_no_permissions: "No tienes permisos para ver ningún artículo o categoría. Por favor, contacta con el administrador."
69 | message_summary_count_not_available: "El resumen podría no estar disponible!"
70 | permission_comment_and_rate_articles: "Comentar y valorar artículos"
71 | permission_create_article_categories: "Crear categorías de artículos"
72 | permission_create_articles: "Crear artículos"
73 | permission_edit_articles: "Editar artículos"
74 | permission_manage_article_categories: "Gestionar categorías de artículos"
75 | permission_manage_article_history: "Gestionar historia de los artículos"
76 | permission_manage_articles: "Gestionar artículos"
77 | permission_manage_articles_comments: "Gestionar comentarios de los artículos"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "Ver historia de los artículos"
80 | permission_view_articles: "Ver artículos"
81 | permission_view_kb_articles: "Ver artículos"
82 | permission_view_most_popular_articles: "ver artículos más populares"
83 | permission_view_recent_articles: "Ver artículos recientes"
84 | permission_view_top_rated_articles: "ver los artículos más valorados"
85 | permission_watch_articles: "Monitorizar artículos"
86 | permission_watch_categories: "Monitorizar categorías"
87 | project_module_knowledgebase: "Base de conocimientos"
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "¿Mostrar los totales de categorías en el árbol?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Límite de artículos por página en el resumen de Conocimientos"
94 | text_confirm_versions_delete: "Esta acción revertirá y eliminará cualquier versión más nueva que pudiera existir de este documento.¿Estás seguro?"
95 | text_current_version: Actual
96 | title_add_comment: "Nuevo comentario"
97 | title_article_rating: "Valoración del artículo"
98 | title_browse_by_category: "Explorar por categoría"
99 | title_browse_by_tags: "Navegar por etiquetas"
100 | title_create_article: "Crear artículo"
101 | title_create_category: "Crear categoría"
102 | title_edit_article: "Editar artículo"
103 | title_edit_category: "Editar categoría"
104 | title_most_popular_articles: "Artículos populares"
105 | title_new_category: "Nueva categoría"
106 | title_newest_articles: "Articulos más recientes"
107 | title_overview_summary: "Resumen de Conocimientos"
108 | title_recently_updated_articles: "Artículos actualizados"
109 | title_tagged_articles: "Artículos etiquetados con %{tag}"
110 | title_tags: Etiquetas
111 | title_top_rated_articles: "Artículos de más valor"
112 | title_votes:
113 | one: "un voto"
114 | other: "%{count} votos"
115 | zero: "sin votos"
116 |
--------------------------------------------------------------------------------
/config/locales/fr.yml:
--------------------------------------------------------------------------------
1 | ---
2 | fr:
3 | allow_anon_access: "Consultation anonyme ?"
4 | allow_sort_category_tree: "Trier les catégories par ordre alphabétique ?"
5 | disable_article_summaries: "Ne pas présenter les sommaires"
6 | field_article_author: "Créé par"
7 | field_article_destroyer: "Retiré par"
8 | field_article_updater: "Mis à jour par"
9 | field_created_at: "Créé le"
10 | field_tag_list: "Liste des mots clés (séparés par une virgule)"
11 | field_updated_at: "Mis à jour le"
12 | field_version: Version
13 | field_version_comments: "Changement des commentaires"
14 | knowledgebase_title: "Base de connaissances"
15 | label_article_created: "Article '%{title}' créé"
16 | label_article_plural: Articles
17 | label_article_removed: "Article supprimé"
18 | label_article_updated: "Article mis à jour"
19 | label_article_version: "Article version: %{version} - "
20 | label_article_viewed:
21 | one: "Consulté une fois"
22 | other: "Consulté %{count} fois"
23 | label_attachment_add: "Add files"
24 | label_authored_by: "Articles authored by"
25 | label_category: Catégorie
26 | label_category_created: "Categorie '%{title}' créée"
27 | label_category_deleted: "Catégorie supprimée"
28 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
29 | label_category_not_empty_cannot_delete: "Cette catégorie contient des articles et ne peut être supprimée."
30 | label_category_plural: Catégories
31 | label_category_updated: "Catégorie mise à jour"
32 | label_content: Contenu
33 | label_delete_article: Supprimer
34 | label_delete_category: "Supprimer la catégorie"
35 | label_description: Description
36 | label_edit_article: Éditer
37 | label_edit_category: "Modifier la catégorie"
38 | label_filter_by_tag: "Filter by Tag"
39 | label_filtered_by_tag: "Filtered by tag:"
40 | label_jump_category: "Aller à la catégorie"
41 | label_kb_article_plural: "Articles de la base de connaissance"
42 | label_kb_home: "Page d'accueil"
43 | label_kb_link: "KB#%{kb_id}"
44 | label_list_updated_articles: "Il y a %{ago}"
45 | label_new_article: "Nouvel article"
46 | label_new_category: "Nouvelle catégorie"
47 | label_new_comment: "Nouveau commentaire"
48 | label_overview_my_articles: "Articles écrits par moi: %{total_articles_by_me}"
49 | label_overview_total_articles: "Nombre total d'articles: %{total_articles}"
50 | label_overview_total_categories: "Nombre total de catégories: %{total_categories}"
51 | label_parent_category: "Catégorie parente"
52 | label_root_category: "Catégorie racine"
53 | label_subcategories: Sous-catégories
54 | label_summary: Résumé
55 | label_summary_newest_articles: "Créé il y a %{ago} dans %{category}"
56 | label_summary_popular_articles:
57 | one: "Lu une fois depuis le %{created}"
58 | other: "Lu %{count} fois depuis le %{created}"
59 | label_summary_toprated_articles:
60 | one: "Note : %{rating_avg}/%{rating_max} sur un vote"
61 | other: "Note : %{rating_avg}/%{rating_max} sur %{count} votes"
62 | label_summary_updated_articles: "Mis à jour il y a %{ago}"
63 | label_title: Titre
64 | label_title_articles: Article
65 | label_title_category: Catégorie
66 | label_unrated_article: Unrated
67 | label_updated_who: "Mis à jour par %{updater}, il y a %{age}"
68 | message_no_articles: "Aucun article n'a été ajouté à la base de connaissance."
69 | message_no_categories: "Il n'y a aucune catégorie pour l'instant, connectez-vous pour en créer une."
70 | message_no_permissions: "Vous n'avez pas les permissions pour voir les articles ou catégories."
71 | message_summary_count_not_available: "Le compte des sommaires n'est pas disponible!"
72 | permission_comment_and_rate_articles: "Commenter et noter les articles"
73 | permission_create_article_categories: "Créer des catégories d'articles"
74 | permission_create_articles: "Créer des articles"
75 | permission_edit_articles: "Editer les articles"
76 | permission_manage_article_categories: "Gérer les catégories d'articles"
77 | permission_manage_article_history: "Gérer l'historique des articles"
78 | permission_manage_articles: "Gérer les articles"
79 | permission_manage_articles_comments: "Gérer les commentaires d'articles"
80 | permission_manage_own_articles: "Manage own articles"
81 | permission_view_article_history: "Voir l'historique des articles"
82 | permission_view_articles: "Voir les articles"
83 | permission_view_kb_articles: "Voir les articles"
84 | permission_view_most_popular_articles: "Voir les articles les plus populaires"
85 | permission_view_recent_articles: "Voir les articles récents"
86 | permission_view_top_rated_articles: "Voir les articles le mieux notés"
87 | permission_watch_articles: "Surveiller les articles"
88 | permission_watch_categories: "Surveiller les catégories"
89 | project_module_knowledgebase: "Base de connaissances"
90 | show_article_without_tabs: "Show articles without tabs?"
91 | show_attachments_first: "Show attachments before article content?"
92 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
93 | show_category_totals: "Afficher le total par catégorie dans l'arbre ?"
94 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
95 | summary_item_limit: "Nombre maximum d'articles dans la page de résumé de la base de connaissance"
96 | text_confirm_versions_delete: "Retour en arrière et retrait de toutes nouvelles versions de ce document."
97 | text_current_version: "Version courrante"
98 | title_add_comment: "Ajouter un commentaire"
99 | title_article_rating: "Évaluation de l'article"
100 | title_browse_by_category: "Parcourir par catégorie"
101 | title_browse_by_tags: "Parcourir par mots clés"
102 | title_create_article: "Créer un article"
103 | title_create_category: "Créer une catégorie"
104 | title_edit_article: "Modifier l'article"
105 | title_edit_category: "Éditer la catégorie"
106 | title_most_popular_articles: "Articles les plus populaires"
107 | title_new_category: "Nouvelle catégorie"
108 | title_newest_articles: "Derniers articles"
109 | title_overview_summary: "Sommaire de la base de connaissance"
110 | title_recently_updated_articles: "Articles récemment modifiés"
111 | title_tagged_articles: "Articles associés au mot clé « %{tag} »"
112 | title_tags: "Mots clés"
113 | title_top_rated_articles: "Articles les mieux notés"
114 | title_votes: Votes
115 |
--------------------------------------------------------------------------------
/config/locales/hu.yml:
--------------------------------------------------------------------------------
1 | ---
2 | hu:
3 | allow_anon_access: "Anonymous hozzáférése engedélyezett?"
4 | allow_sort_category_tree: "Kategória-fa ABC sorrend szerint legyen rendezve?"
5 | disable_article_summaries: "Cikk összesítő letiltása"
6 | field_article_author: Létrehozta
7 | field_article_destroyer: Törölte
8 | field_article_updater: Frissítette
9 | field_tag_list: "Cimke lista"
10 | field_updated_at: Frissítve
11 | field_version: Verzió
12 | field_version_comments: "Hozzászólások módosítása"
13 | knowledgebase_title: Tudásbázis
14 | label_article_created: "Cikk létrehozva '%{title}'"
15 | label_article_plural: Cikkek
16 | label_article_removed: "Cikk törölve"
17 | label_article_updated: "Cikk frissítve"
18 | label_article_version: "Cikk verzió: %{version} - "
19 | label_article_viewed:
20 | one: "Megtekintve egyszer"
21 | other: "Megtekintve %{count} alkalommal"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Kategória
25 | label_category_created: "'%{title}' kategória létrehozva"
26 | label_category_deleted: "Kategória törölve"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "A kategória cikk(ek)hez van rendelve, ezért nem törölhető"
29 | label_category_plural: Kategóriák
30 | label_category_updated: "Kategória frissítve"
31 | label_content: Tartalom
32 | label_delete_article: Törlés
33 | label_delete_category: "Kategória törlése"
34 | label_description: Leírás
35 | label_edit_article: Szerkesztés
36 | label_edit_category: "Kategória szerkesztése"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Ugrás kategóriára"
40 | label_kb_article_plural: "Tudásbázis cikkek"
41 | label_kb_home: _
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "Új cikk"
44 | label_new_category: "Új kategória"
45 | label_new_comment: "Új hozzászólás"
46 | label_overview_my_articles: "Általam létrehozott cikkek: %{total_articles_by_me}"
47 | label_overview_total_articles: "Összes cikk száma: %{total_articles}"
48 | label_overview_total_categories: "Összes kategória száma: %{total_categories}"
49 | label_parent_category: "Szülő kategória"
50 | label_root_category: "Fő kategória"
51 | label_subcategories: Alkategóriák
52 | label_summary: Összesítő
53 | label_summary_newest_articles: "Létrehozva %{ago} itt: %{category}"
54 | label_summary_popular_articles:
55 | one: "Egyszer megtekintve %{created} óta"
56 | other: "%{count} alkalommal megtekintve %{created} óta"
57 | label_summary_toprated_articles:
58 | one: "Minősítés: %{rating_avg}/%{rating_max} egy szavazat alapján"
59 | other: "Minősítés: %{rating_avg}/%{rating_max} %{count} szavazat alapján"
60 | label_summary_updated_articles: "Frissítve %{ago}"
61 | label_title: Cím
62 | label_title_articles: Cikkek
63 | label_title_category: Kategória
64 | label_unrated_article: Unrated
65 | label_updated_who: "Frissítve %{updater} által %{age}"
66 | message_no_articles: "Még nem lettek cikkek létrehozva. Kattints a Cikkek létrehozására."
67 | message_no_categories: "Még nem lettek kategóriák létrehozva. Kattints a Kategóriák létrehozására."
68 | message_no_permissions: "Nincs jogosultságod a cikkek és a ketegóriák megtekintéséhez. Fordulj a rendszergazdához!"
69 | message_summary_count_not_available: "Összesítő számláló nem elérhető!"
70 | permission_comment_and_rate_articles: "Szólj hozzá a cikkekhez!"
71 | permission_create_article_categories: "Hozz létre cikk kategóriákat!"
72 | permission_create_articles: "Cikkek létrehozása"
73 | permission_edit_articles: "Cikkek szerkesztése"
74 | permission_manage_article_categories: "Cikk kategóriák kezelése"
75 | permission_manage_article_history: "Cikk történetének kezelése"
76 | permission_manage_articles: "Cikkek kezelése"
77 | permission_manage_articles_comments: "Cikk hozzászólásainak kezelése"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "Cikk történetének megtekintése"
80 | permission_view_articles: "Cikkek megtekintése"
81 | permission_view_kb_articles: "Cikkek megtekintése"
82 | permission_view_most_popular_articles: "A legnépszerűbb cikkek megtekintése"
83 | permission_view_recent_articles: "A legfrissebb cikkek megtekintése"
84 | permission_view_top_rated_articles: "A legjobb minősítésű cikkek megtekintése"
85 | permission_watch_articles: "Cikkek megfigyelése"
86 | permission_watch_categories: "Kategóriák megfigyelése"
87 | project_module_knowledgebase: Tudásbázis
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Mutassuk a kategória összesítőket a fában?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Tudásbázis összesítőben megjelenített cikkek száma"
94 | text_confirm_versions_delete: "A művelet visszaállítja és törli az összes újabb verzióját ennek a dokumentumnak. Biztos vagy benne?"
95 | text_current_version: Aktuális
96 | title_add_comment: Hozzászólás
97 | title_article_rating: "Cikk minősítése"
98 | title_browse_by_category: "Tallózás kategória alapján"
99 | title_browse_by_tags: "Tallózás cimke alapján"
100 | title_create_article: "Cikk létrehozása"
101 | title_create_category: "Kategória létrehozása"
102 | title_edit_article: "Cikk szerkesztése"
103 | title_edit_category: "Kategória szerkesztése"
104 | title_most_popular_articles: "A legnépszerűbb cikkek"
105 | title_new_category: "Új kategória"
106 | title_newest_articles: "Legújabb cikkek"
107 | title_overview_summary: "Tudásbázis összesítés"
108 | title_recently_updated_articles: "Legújabb cikkek"
109 | title_tagged_articles: "Cikkek megjelölve: %{tag}"
110 | title_tags: Cimkék
111 | title_top_rated_articles: "A legjobb minősítésű cikkek"
112 | title_votes:
113 | one: "egy szavazat"
114 | other: "%{count} szavazat"
115 | zero: "nincsenek szavazatok"
116 |
--------------------------------------------------------------------------------
/config/locales/it.yml:
--------------------------------------------------------------------------------
1 | ---
2 | it:
3 | allow_anon_access: "Allow anonymous access?"
4 | allow_sort_category_tree: "Sort the category tree alphabetically?"
5 | disable_article_summaries: "Disable Article Summaries"
6 | field_article_author: "Created by"
7 | field_article_destroyer: "Deleted by"
8 | field_article_updater: "Updated by"
9 | field_tag_list: Tag
10 | field_updated_at: "Updated at"
11 | field_version: Version
12 | field_version_comments: "Change comments"
13 | knowledgebase_title: "Conoscenza di base"
14 | label_article_created: "Created article '%{title}'"
15 | label_article_plural: Articoli
16 | label_article_removed: "Article removed"
17 | label_article_updated: "Article updated"
18 | label_article_version: "Article version: %{version} - "
19 | label_article_viewed:
20 | one: "Viewed once"
21 | other: "Viewed %{count} times"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Categoria
25 | label_category_created: "Created category '%{title}'"
26 | label_category_deleted: "Category deleted"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "Category is assigned to articles and could not be deleted."
29 | label_category_plural: Categorie
30 | label_category_updated: "Category updated"
31 | label_content: Contenuto
32 | label_delete_article: Delete
33 | label_delete_category: "Delete Category"
34 | label_description: Descrizione
35 | label_edit_article: Edit
36 | label_edit_category: "Edit Category"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Vai alla categoria"
40 | label_kb_article_plural: "Knowledgebase articles"
41 | label_kb_home: Home
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "New Article"
44 | label_new_category: "New Category"
45 | label_new_comment: "New Comment"
46 | label_overview_my_articles: "Articles written by me: %{total_articles_by_me}"
47 | label_overview_total_articles: "Total number of articles: %{total_articles}"
48 | label_overview_total_categories: "Total number of categories: %{total_categories}"
49 | label_parent_category: "Categoria padre"
50 | label_root_category: "Categoria principale"
51 | label_subcategories: Sub-categories
52 | label_summary: Sommario
53 | label_summary_newest_articles: "Created %{ago} ago in %{category}"
54 | label_summary_popular_articles:
55 | one: "Viewed once since %{created}"
56 | other: "Viewed %{count} times since %{created}"
57 | label_summary_toprated_articles:
58 | one: "Rating: %{rating_avg}/%{rating_max} from one vote"
59 | other: "Rating: %{rating_avg}/%{rating_max} from %{count} votes"
60 | label_summary_updated_articles: "Updated %{ago} ago"
61 | label_title: Titolo
62 | label_title_articles: Articolo
63 | label_title_category: Categoria
64 | label_unrated_article: Unrated
65 | label_updated_who: "Updated by %{updater} %{age} ago"
66 | message_no_articles: "Nessun articolo è stato ancora aggiunto alla knowledgebase."
67 | message_no_categories: "Unfortunately, there aren't any Categories defined, and you need to be logged in to create new categories."
68 | message_no_permissions: "You do not have permission to view any articles or categories. Please contact your administrator."
69 | message_summary_count_not_available: "Summary Count Not Available!"
70 | permission_comment_and_rate_articles: "Comment and rate articles"
71 | permission_create_article_categories: "Create article categories"
72 | permission_create_articles: "Create articles"
73 | permission_edit_articles: "Edit articles"
74 | permission_manage_article_categories: "Manage article categories"
75 | permission_manage_article_history: "manage article history"
76 | permission_manage_articles: "Manage articles"
77 | permission_manage_articles_comments: "Manage articles comments"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "view article history"
80 | permission_view_articles: "View articles"
81 | permission_view_kb_articles: "View articles"
82 | permission_view_most_popular_articles: "view most popular articles"
83 | permission_view_recent_articles: "View recent articles"
84 | permission_view_top_rated_articles: "view top rated articles"
85 | permission_watch_articles: "Watch articles"
86 | permission_watch_categories: "Watch categories"
87 | project_module_knowledgebase: Knowledgebase
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Show category totals in tree?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Knowledgebase summary page article limit"
94 | text_confirm_versions_delete: "This will revert and delete any newer versions of this document that may exist. Are you sure?"
95 | text_current_version: Current
96 | title_add_comment: "Add Comment"
97 | title_article_rating: "Popolarità Articolo"
98 | title_browse_by_category: "Naviga per categoria"
99 | title_browse_by_tags: "Browse by Tags"
100 | title_create_article: "Nuovo Articolo"
101 | title_create_category: "Nuovo Categoria"
102 | title_edit_article: "Modifica Articolo"
103 | title_edit_category: "Modifica Categoria"
104 | title_most_popular_articles: "Articoli più letti"
105 | title_new_category: "Nuova categoria"
106 | title_newest_articles: "Articoli recenti"
107 | title_overview_summary: "Knowledgebase Summary"
108 | title_recently_updated_articles: "Articoli modificati di recente"
109 | title_tagged_articles: "Articles tagged with %{tag}"
110 | title_tags: Tags
111 | title_top_rated_articles: "Articoli più votati"
112 | title_votes: Voti
113 |
--------------------------------------------------------------------------------
/config/locales/ja.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ja:
3 | articles_per_list_page: "1ページに表示する記事数"
4 | allow_anon_access: 匿名アクセス許可
5 | allow_sort_category_tree: カテゴリをアルファベット順に並び替える
6 | critical_tags: "重要なタグを最初に表示する(カンマ区切り)"
7 | disable_article_summaries: 記事要約の非表示
8 | description_create_article: ""
9 | field_article_author: 作成者
10 | field_article_destroyer: 削除者
11 | field_article_updater: 更新者
12 | field_tag_list: タグリスト
13 | field_updated_at: 更新日
14 | field_version: バージョン
15 | field_version_comments: 変更コメント
16 | knowledgebase_title: ナレッジベース
17 | label_article_created: "'%{title}'の記事を作成しました。"
18 | label_article_plural: ナレッジベース記事
19 | label_article_removed: 記事を削除しました。
20 | label_article_updated: 記事を更新しました。
21 | label_article_version: "記事のバージョン: %{version} - "
22 | label_article_viewed:
23 | one: 1人が閲覧
24 | other: "%{count}人が閲覧"
25 | label_attachment_add: "ファイルを追加"
26 | label_authored_by: "指定著者による記事:"
27 | label_category: カテゴリ
28 | label_category_created: "'%{title}'カテゴリーを作成しました。"
29 | label_category_deleted: カテゴリーを削除しました。
30 | label_category_has_subcategory_cannot_delete: "サブカテゴリがあるためこのカテゴリを削除できません。"
31 | label_category_not_empty_cannot_delete: 関連記事があるため,カテゴリーを削除できません。
32 | label_category_plural: カテゴリ一覧
33 | label_category_updated: カテゴリーを更新しました。
34 | label_content: 詳細
35 | label_delete_article: 削除
36 | label_delete_category: カテゴリを削除
37 | label_description: 説明
38 | label_edit_article: 編集
39 | label_edit_category: カテゴリを編集
40 | label_filter_by_tag: "タグによるフィルタリング"
41 | label_filtered_by_tag: "指定タグによるフィルタ結果:"
42 | label_jump_category: カテゴリー選択
43 | label_kb_article_plural: ナレッジベースの記事
44 | label_kb_home: ホーム
45 | label_kb_link: "KB#%{kb_id}"
46 | label_new_article: 新しい記事
47 | label_new_category: 新しいカテゴリ
48 | label_new_comment: コメントする
49 | label_overview_my_articles: "自分で作成した記事数の合計: %{total_articles_by_me}"
50 | label_overview_total_articles: "記事数の合計: %{total_articles}"
51 | label_overview_total_categories: "カテゴリ数の合計: %{total_categories}"
52 | label_parent_category: 親カテゴリ
53 | label_root_category: 最上位カテゴリ
54 | label_subcategories: サブカテゴリ群
55 | label_summary: 概要
56 | label_summary_newest_articles: "%{ago}前に作成 in %{category}"
57 | label_summary_popular_articles:
58 | one: "作成日:%{created} / 閲覧者数:1"
59 | other: "作成日:%{created} / 閲覧者数:%{count}"
60 | label_summary_toprated_articles:
61 | one: "評価: %{rating_avg}/%{rating_max} from 1票"
62 | other: "評価: %{rating_avg}/%{rating_max} from %{count} 票"
63 | label_summary_updated_articles: "%{ago}前に更新"
64 | label_title: タイトル
65 | label_title_articles: 記事
66 | label_title_category: カテゴリ
67 | label_unrated_article: 投票なし
68 | label_updated_who: "%{updater}によって%{age}に更新"
69 | message_no_articles: ナレッジベースに追加された記事はありません。早速作りましょう!
70 | message_no_categories: 定義されたカテゴリがありません。新しいカテゴリを作成するにはログインする必要があります。
71 | message_no_permissions: 記事やカテゴリの閲覧権限がありません。管理者にお問い合わせください。
72 | message_summary_count_not_available: サマリーの集計が有効ではありません!
73 | permission_comment_and_rate_articles: 記事のコメントとレーティング
74 | permission_create_article_categories: 記事のカテゴリ追加
75 | permission_create_articles: 記事の追加
76 | permission_edit_articles: 記事の編集
77 | permission_manage_article_categories: 記事のカテゴリ管理
78 | permission_manage_article_history: 記事の履歴管理
79 | permission_manage_articles: 記事の管理
80 | permission_manage_articles_comments: 記事のコメント管理
81 | permission_manage_own_articles: "所有する記事の管理"
82 | permission_view_article_history: 記事履歴の閲覧
83 | permission_view_articles: 記事の閲覧
84 | permission_view_kb_articles: 記事の閲覧
85 | permission_view_most_popular_articles: 人気記事の閲覧
86 | permission_view_recent_articles: 最近の記事閲覧
87 | permission_view_top_rated_articles: トップレート記事の閲覧
88 | permission_watch_articles: 記事のウォッチ
89 | permission_watch_categories: カテゴリのウォッチ
90 | project_module_knowledgebase: ナレッジベース
91 | show_article_without_tabs: "TABなしの記事を表示しますか?"
92 | show_attachments_first: "記事の前に添付ファイルを表示しますか?"
93 | show_breadcrumbs_for_article_lists: "記事一覧の記事にパンくずを表示しますか?"
94 | show_category_totals: ツリーの全てのカテゴリを表示する
95 | show_thumbnails_for_articles: "記事一覧の記事にサムネイルを表示しますか?"
96 | show_tiled_article_lists: "記事一覧をタイル表示しますか?"
97 | summary_item_limit: ナレッジベースに表示する記事数
98 | text_confirm_versions_delete: このドキュメントの新しいバージョンが存在する場合、記事は逆戻りして削除されます。よろしいですか?
99 | text_current_version: 現在のバージョン
100 | thumbnail_explanation: "ファイルを登録する場合、説明欄に\"thumbnail\"が設定している画像ファイルが記事のサムネイルとして表示します。それ以外の場合は最後に登録した画像ファイルをサムネイルとして表示します。"
101 | title_add_comment: コメントを追加
102 | title_article_rating: 評価レート
103 | title_browse_by_category: カテゴリ別一覧
104 | title_browse_by_tags: タグ別一覧
105 | title_create_article: 新規記事発行
106 | title_create_category: カテゴリを追加
107 | title_edit_article: 記事を編集
108 | title_edit_category: カテゴリを編集
109 | title_most_popular_articles: 人気の記事
110 | title_new_category: 新規カテゴリ
111 | title_newest_articles: 最新の記事
112 | title_overview_summary: ナレッジベース要約
113 | title_recently_updated_articles: 最近更新された記事
114 | title_tagged_articles: "「%{tag}」のタグが付いている記事"
115 | title_tags: タグ
116 | title_top_rated_articles: 評価の高い記事
117 | title_votes: 投票数
118 |
--------------------------------------------------------------------------------
/config/locales/ko.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ko:
3 | allow_anon_access: "익명 접근허가"
4 | allow_sort_category_tree: "카테고리를 알파벳순 정렬"
5 | disable_article_summaries: "Disable Article Summaries"
6 | field_article_author: "Created by"
7 | field_article_destroyer: "Deleted by"
8 | field_article_updater: "Updated by"
9 | field_tag_list: 태그목록
10 | field_updated_at: "Updated at"
11 | field_version: Version
12 | field_version_comments: "Change comments"
13 | knowledgebase_title: 지식자료
14 | label_article_created: "'%{title}' 지식을 작성했습니다."
15 | label_article_plural: 지식자료
16 | label_article_removed: "지식을 삭제했습니다."
17 | label_article_updated: "지식을 수정했습니다.."
18 | label_article_version: "Article version: %{version} - "
19 | label_article_viewed:
20 | one: "1회 조회"
21 | other: "%{count}회 조회"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: 카테고리
25 | label_category_created: "'%{title}' 카테고리를 작성했습니다."
26 | label_category_deleted: "카테고리를 삭제했습니다.."
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "관련지식이 있는 관계로 카테고리를 삭제할 수 없습니다."
29 | label_category_plural: "카테고리 목록"
30 | label_category_updated: "카테고리를 수정했습니다."
31 | label_content: 상세
32 | label_delete_article: 삭제
33 | label_delete_category: "카테고리 삭제"
34 | label_description: 설명
35 | label_edit_article: 수정
36 | label_edit_category: "카테고리 수정"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_home: Home
40 | label_jump_category: "카테고리 선택"
41 | label_kb_article_plural: "Knowledgebase articles"
42 | label_kb_home: Home
43 | label_kb_link: "KB#{{kb_id}}"
44 | label_new_article: "새로운 지식"
45 | label_new_category: "새로운 카테고리"
46 | label_new_comment: 댓글달기
47 | label_overview_my_articles: "Articles written by me: %{total_articles_by_me}"
48 | label_overview_total_articles: "Total number of articles: %{total_articles}"
49 | label_overview_total_categories: "Total number of categories: %{total_categories}"
50 | label_parent_category: "상위 카테고리"
51 | label_root_category: "최상위 카테고리"
52 | label_subcategories: "하위 카테고리들"
53 | label_summary: 개요
54 | label_summary_newest_articles: "%{ago}전에 작성 in %{category}"
55 | label_summary_popular_articles:
56 | one: "1회 조회 %{created}"
57 | other: "%{count}회 조회 %{created}부터"
58 | label_summary_toprated_articles:
59 | one: "평가: %{rating_avg}/%{rating_max} from 1표"
60 | other: "평가: %{rating_avg}/%{rating_max} from %{count}표"
61 | label_summary_updated_articles: "%{ago}전에 수정"
62 | label_title: 제목
63 | label_title_articles: 지식명
64 | label_title_category: 카테고리명
65 | label_unrated_article: Unrated
66 | label_updated_who: "%{updater}이(가) %{age}전에 수정했습니다."
67 | message_no_articles: "지식 데이터베이스에 추가된 지식이 없습니다."
68 | message_no_categories: "죄송합니다. 등록된 카테고리가 없습니다. 새로운 카테고리를 작성하시려면 로그인이 필요합니다."
69 | message_no_permissions: "You do not have permission to view any articles or categories. Please contact your administrator."
70 | message_summary_count_not_available: "Summary Count Not Available!"
71 | permission_comment_and_rate_articles: "지식에 댓글과 평가"
72 | permission_create_article_categories: "지식 카테고리 생성"
73 | permission_create_articles: "지식 생성"
74 | permission_edit_articles: "지식 수정"
75 | permission_manage_article_categories: "지식 카테고리 관리"
76 | permission_manage_article_history: "manage article history"
77 | permission_manage_articles: "지식 관리"
78 | permission_manage_articles_comments: "지식 댓글 관리"
79 | permission_manage_own_articles: "Manage own articles"
80 | permission_view_article_history: "view article history"
81 | permission_view_articles: "지식 보기"
82 | permission_view_kb_articles: "View articles"
83 | permission_view_most_popular_articles: "view most popular articles"
84 | permission_view_recent_articles: "View recent articles"
85 | permission_view_top_rated_articles: "view top rated articles"
86 | permission_watch_articles: "Watch articles"
87 | permission_watch_categories: "Watch categories"
88 | project_module_knowledgebase: Knowledgebase
89 | show_article_without_tabs: "Show articles without tabs?"
90 | show_attachments_first: "Show attachments before article content?"
91 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
92 | show_category_totals: "모든 카테고리 표시"
93 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
94 | summary_item_limit: "지식자료에 표시되는 지식수"
95 | text_confirm_versions_delete: "This will revert and delete any newer versions of this document that may exist. Are you sure?"
96 | text_current_version: Current
97 | title_add_comment: "댓글 추가"
98 | title_article_rating: 평가순위
99 | title_browse_by_category: "카테고리 목록"
100 | title_browse_by_tags: "Browse by Tags"
101 | title_create_article: "새로운 지식 작성"
102 | title_create_category: "카테고리 추가"
103 | title_edit_article: "지식 수정"
104 | title_edit_category: "카테고리 수정"
105 | title_most_popular_articles: "인기 지식"
106 | title_new_category: "새로운 카테고리"
107 | title_newest_articles: "최근 지식"
108 | title_overview_summary: "Knowledgebase Summary"
109 | title_recently_updated_articles: "최근에 수정된 지식"
110 | title_tagged_articles: "이 지식은 %{tag}로 태그됨"
111 | title_tags: 태그
112 | title_top_rated_articles: "평가가 높은 지식"
113 | title_votes: 투표수
114 |
--------------------------------------------------------------------------------
/config/locales/nl.yml:
--------------------------------------------------------------------------------
1 | ---
2 | nl:
3 | allow_anon_access: "Anonieme toegang toestaan?"
4 | allow_sort_category_tree: "Categoriën alfabetisch rangschikken?"
5 | disable_article_summaries: "Uitschakelen artikel samenvattingen"
6 | field_article_author: "Aangemaakt door"
7 | field_article_destroyer: "Verwijderd door"
8 | field_article_updater: "Bijgewerkt door"
9 | field_tag_list: "Overzicht labels"
10 | field_updated_at: "Bijgewerkt op"
11 | field_version: Version
12 | field_version_comments: "Opmerkingen wijzigen"
13 | knowledgebase_title: Kennisbank
14 | label_article_created: "Artikel aangemaakt '%{title}'"
15 | label_article_plural: Artikelen
16 | label_article_removed: "Artikel verwijderd"
17 | label_article_updated: "Artikel bijgewerkt"
18 | label_article_version: "Artikel versie %{version} - "
19 | label_article_viewed:
20 | one: "Eenmaal gezien"
21 | other: "Gezien: %{count} keer"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Categorie
25 | label_category_created: "Aangemaakt categorie '%{title}'"
26 | label_category_deleted: "Categorie verwijderd"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "De categorie is aan een of meerdere artikelen toegewezen en kan nu niet worden verwijderd."
29 | label_category_plural: Categoriën
30 | label_category_updated: "Categorie bijgewerkt"
31 | label_content: Inhoud
32 | label_delete_article: Verwijderen
33 | label_delete_category: "Verwijder categorie"
34 | label_description: Beschrijving
35 | label_edit_article: Bewerken
36 | label_edit_category: "Bewerk categorie"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Snel naar categorie"
40 | label_kb_article_plural: "Kennisbank artikelen"
41 | label_kb_home: Home
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "Nieuw artikel"
44 | label_new_category: "Nieuwe categorie"
45 | label_new_comment: "Nieuwe reactie"
46 | label_overview_my_articles: "Artikelen geschreven door mijzelf: %{total_articles_by_me}"
47 | label_overview_total_articles: "Totaal aantal artikelen: %{total_articles}"
48 | label_overview_total_categories: "Totaal aantal categoriën: %{total_categories}"
49 | label_parent_category: Bovenliggende-categorie
50 | label_root_category: Hoofdcategorie
51 | label_subcategories: Subcategoriën
52 | label_summary: Samenvatting
53 | label_summary_newest_articles: "Gemaakt %{ago} geleden in %{category}"
54 | label_summary_popular_articles:
55 | one: "Eenmaal bekeken sinds %{created}"
56 | other: "Bekeken %{count} keer sinds %{created}"
57 | label_summary_toprated_articles:
58 | one: "Waardering: %{rating_avg}/%{rating_max} van een stem"
59 | other: "Waardering: %{rating_avg}/%{rating_max} van %{count} stemmers"
60 | label_summary_updated_articles: "Bijgewerkt %{ago} geleden"
61 | label_title: Titel
62 | label_title_articles: Artikel
63 | label_title_category: Categorie
64 | label_unrated_article: Unrated
65 | label_updated_who: "Bijgewerkt door %{updater} %{age} geleden"
66 | message_no_articles: "Er zijn nog geen artikelen toegevoegd. Klik op 'Maak artikel' om er een te beginnen."
67 | message_no_categories: "Er zijn nog geen categoriën toegevoegd. Klik op 'Maak categorie' om er een te beginnen."
68 | message_no_permissions: "Je hebt geen toestemming om artikelen of categoriën te bekijken. Neem contact met een beheerder op."
69 | message_summary_count_not_available: "Samenvatting teller niet beschikbaar!"
70 | permission_comment_and_rate_articles: "Reageer en waardeer artikelen"
71 | permission_create_article_categories: "Maak artikelcategoriën"
72 | permission_create_articles: "Maak artikelen"
73 | permission_edit_articles: "Bewerk artikelen"
74 | permission_manage_article_categories: "Beheer artikelcategoriën"
75 | permission_manage_article_history: "Beheer artikelgeschiedenis"
76 | permission_manage_articles: "Beheer artikelen"
77 | permission_manage_articles_comments: "Beheer gebruikersreacties"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "Weergeven artikelgeschiedenis"
80 | permission_view_articles: "Weergeven artikelen"
81 | permission_view_kb_articles: "Weergeven artikelen"
82 | permission_view_most_popular_articles: "bekijk meest populaire artikelen"
83 | permission_view_recent_articles: "Bekijk recent gepubliceerde"
84 | permission_view_top_rated_articles: "bekijk meest gewaardeerde artikelen"
85 | permission_watch_articles: "Bekijk artikelen"
86 | permission_watch_categories: "Bekijk categoriën"
87 | project_module_knowledgebase: Kennisbank
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Totalen categorie in hierarchie?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "KB samenvatting artikel limiet per pagina"
94 | text_confirm_versions_delete: "Dit zal nieuwere versies en recente wijzigingen mogelijk verwijderen. Weet je dat zeker?"
95 | text_current_version: Huidige
96 | title_add_comment: "Reactie toevoegen"
97 | title_article_rating: "Waardering artikel"
98 | title_browse_by_category: "Blader door categorieindeling"
99 | title_browse_by_tags: "Labels doorbladeren"
100 | title_create_article: "Maak artikel"
101 | title_create_category: "Maak categorie"
102 | title_edit_article: "Bewerk artikel"
103 | title_edit_category: "Bewerk categorie"
104 | title_most_popular_articles: "Meest populaire artikelen"
105 | title_new_category: "Nieuwe categorie"
106 | title_newest_articles: "Nieuwste artikelen"
107 | title_overview_summary: "Kennisbank samenvatting"
108 | title_recently_updated_articles: "Recente artikelen"
109 | title_tagged_articles: "Artikelen gelabeled met %{tag}"
110 | title_tags: Labels
111 | title_top_rated_articles: "Meest gewaardeerde artikelen"
112 | title_votes:
113 | one: "een stem"
114 | other: "%{count} stemmen"
115 | zero: "geen stemmen"
116 |
--------------------------------------------------------------------------------
/config/locales/pl.yml:
--------------------------------------------------------------------------------
1 | ---
2 | pl:
3 | allow_anon_access: "Zezwolić na anonimowy dostęp?"
4 | allow_sort_category_tree: "Sortować drzewo kategorii alfabetycznie?"
5 | disable_article_summaries: "Wyłącz podsumowania artykułów"
6 | field_article_author: "Utworzone przez"
7 | field_article_destroyer: "Usunięte przez"
8 | field_article_updater: "Zaktualizowane przez"
9 | field_tag_list: "Słowa kluczowe"
10 | field_updated_at: Zaktualizowane
11 | field_version: Wersja
12 | field_version_comments: "Zmień komentarze"
13 | knowledgebase_title: "Baza Wiedzy"
14 | label_article_created: "Artykuł '%{title}' utworzony"
15 | label_article_plural: Artykuły
16 | label_article_removed: "Artykuł usunięty"
17 | label_article_updated: "Artykuł zaktualizowany"
18 | label_article_version: "Wersja artykułu: %{version} - "
19 | label_article_viewed:
20 | one: "Oglądany raz"
21 | other: "Oglądany %{count} razy"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Kategoria
25 | label_category_created: "Kategoria '%{title}' utworzona"
26 | label_category_deleted: "Kategoria usunięta"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "Kategoria jest przypisana do artykułów, więc nie mogła zostać usunięta."
29 | label_category_plural: Kategorie
30 | label_category_updated: "Kategoria zaktualizowana"
31 | label_content: Treść
32 | label_delete_article: Usuń
33 | label_delete_category: "Usuń kategorię"
34 | label_description: Opis
35 | label_edit_article: Edytuj
36 | label_edit_category: "Edytuj kategorię"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Idź do kategorii"
40 | label_kb_article_plural: "Artykuły bazy wiedzy"
41 | label_kb_home: "Strona główna"
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "Dodaj artykuł"
44 | label_new_category: "Dodaj kategorię"
45 | label_new_comment: "Nowy komentarz"
46 | label_overview_my_articles: "Artykuły napisane przeze mnie: %{total_articles_by_me}"
47 | label_overview_total_articles: "Całkowita liczba artykułów: %{total_articles}"
48 | label_overview_total_categories: "Całkowita liczba kategorii: %{total_categories}"
49 | label_parent_category: "Nadrzędna kategoria"
50 | label_root_category: "Główna kategoria"
51 | label_subcategories: "Kategorie podrzędne"
52 | label_summary: Podsumowanie
53 | label_summary_newest_articles: "Utworzono %{ago} temu w %{category}"
54 | label_summary_popular_articles:
55 | one: "Oglądane raz od %{created}"
56 | other: "Oglądane %{count} razy od %{created}"
57 | label_summary_toprated_articles:
58 | one: "Ocena: %{rating_avg}/%{rating_max} z jednego głosu"
59 | other: "Ocena: %{rating_avg}/%{rating_max} z %{count} głosów"
60 | label_summary_updated_articles: "Zaktualizowane %{ago} temu"
61 | label_title: Tytuł
62 | label_title_articles: Artykuł
63 | label_title_category: Kategoria
64 | label_unrated_article: Unrated
65 | label_updated_who: "Zaktualizowane przez %{updater} %{age} temu"
66 | message_no_articles: "W bazie wiedzy nie ma jeszcze żadnych artykułów."
67 | message_no_categories: "Niestety, niema zdefiniowanych żadnych kategorii. Musisz być zalogowany by utworzyć nowe kategorie."
68 | message_no_permissions: "Niemasz uprawnień do oglądania żadnych artykułów ani kategorii. Proszę skontaktować się z administratorem."
69 | message_summary_count_not_available: "Podsumowanie niedostępne!"
70 | permission_comment_and_rate_articles: "Komentuj i oceniaj artykuły"
71 | permission_create_article_categories: "Utwórz kategorie artykułów"
72 | permission_create_articles: "Utwórz artykuły"
73 | permission_edit_articles: "Edytuj artykuły"
74 | permission_manage_article_categories: "Zarządzaj kategoriami artykułów"
75 | permission_manage_article_history: "Zarządzaj historią artykułów"
76 | permission_manage_articles: "Zarządzaj artykułami"
77 | permission_manage_articles_comments: "Zarządzaj komentarzami artykułów"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "Przeglądaj historię artykułu"
80 | permission_view_articles: "Przeglądaj artykuły"
81 | permission_view_kb_articles: "Przeglądaj artykuły"
82 | permission_view_most_popular_articles: "Przeglądaj najpopularniejsze artykuły"
83 | permission_view_recent_articles: "Przeglądaj ostatnie artykuły"
84 | permission_view_top_rated_articles: "Przeglądaj najlepiej oceniane artykuły"
85 | permission_watch_articles: "Obserwuj artykuły"
86 | permission_watch_categories: "Obserwuj kategorie"
87 | project_module_knowledgebase: "Baza wiedzy"
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Pokazywać podsumowania kategorii w drzewie?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Ograniczenie strony podsumowania artykułu bazy wiedzy"
94 | text_confirm_versions_delete: "To cofnie i usunie wszystkie nowsze wersje tego dokumentu, które mogą istnieć. Jesteś pewien?"
95 | text_current_version: Aktualna
96 | title_add_comment: "Dodaj komentarz"
97 | title_article_rating: "Ocena artykułu"
98 | title_browse_by_category: "Podsumowanie wg kategorii"
99 | title_browse_by_tags: "Przeglądaj po słowach kluczowych"
100 | title_create_article: "Nowy artykuł"
101 | title_create_category: "Nowa kategoria"
102 | title_edit_article: "Edycja artykułu"
103 | title_edit_category: "Edycja kategorii"
104 | title_most_popular_articles: "Najpopularniejsze artykuły"
105 | title_new_category: "Nowa kategoria"
106 | title_newest_articles: "Najnowsze artykuły"
107 | title_overview_summary: "Podsumowanie bazy wiedzy"
108 | title_recently_updated_articles: "Ostatnio zaktualizowane artykuły"
109 | title_tagged_articles: "Artykuły z słowem kluczowym %{tag}"
110 | title_tags: "Słowa kluczowe"
111 | title_top_rated_articles: "Najlepiej ocenione artykuły"
112 | title_votes:
113 | one: "jeden głos"
114 | other: "%{count} głosów"
115 | zero: "brak głosów"
116 |
--------------------------------------------------------------------------------
/config/locales/pt-BR.yml:
--------------------------------------------------------------------------------
1 | ---
2 | pt-BR:
3 | allow_anon_access: "Allow anonymous access?"
4 | allow_sort_category_tree: "Sort the category tree alphabetically?"
5 | disable_article_summaries: "Disable Article Summaries"
6 | field_article_author: "Created by"
7 | field_article_destroyer: "Deleted by"
8 | field_article_updater: "Updated by"
9 | field_tag_list: "Lista de Tags"
10 | field_updated_at: "Updated at"
11 | field_version: Version
12 | field_version_comments: "Change comments"
13 | knowledgebase_title: "Base de conhecimento"
14 | label_article_created: "Created article '%{title}'"
15 | label_article_plural: Artigos
16 | label_article_removed: "Article removed"
17 | label_article_updated: "Article updated"
18 | label_article_version: "Article version: %{version} - "
19 | label_article_viewed:
20 | one: "Viewed once"
21 | other: "Viewed %{count} times"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Categoria
25 | label_category_created: "Created category '%{title}'"
26 | label_category_deleted: "Category deleted"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "Category is assigned to articles and could not be deleted."
29 | label_category_plural: Categorias
30 | label_category_updated: "Category updated"
31 | label_content: Conteúdo
32 | label_delete_article: Delete
33 | label_delete_category: "Delete Category"
34 | label_description: Descrição
35 | label_edit_article: Edit
36 | label_edit_category: "Edit Category"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Ir para Categoria"
40 | label_kb_article_plural: "Knowledgebase articles"
41 | label_kb_home: "Página Inicial"
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "New Article"
44 | label_new_category: "New Category"
45 | label_new_comment: "New Comment"
46 | label_overview_my_articles: "Articles written by me: %{total_articles_by_me}"
47 | label_overview_total_articles: "Total number of articles: %{total_articles}"
48 | label_overview_total_categories: "Total number of categories: %{total_categories}"
49 | label_parent_category: "Categoria Pai"
50 | label_root_category: "Categoria Raiz"
51 | label_subcategories: Sub-categories
52 | label_summary: Resumo
53 | label_summary_newest_articles: "Created %{ago} ago in %{category}"
54 | label_summary_popular_articles:
55 | one: "Viewed once since %{created}"
56 | other: "Viewed %{count} times since %{created}"
57 | label_summary_toprated_articles:
58 | one: "Rating: %{rating_avg}/%{rating_max} from one vote"
59 | other: "Rating: %{rating_avg}/%{rating_max} from %{count} votes"
60 | label_summary_updated_articles: "Updated %{ago} ago"
61 | label_title: Título
62 | label_title_articles: Artigo
63 | label_title_category: Categoria
64 | label_unrated_article: Unrated
65 | label_updated_who: "Updated by %{updater} %{age} ago"
66 | message_no_articles: "Nenhum artigo cadastrado ainda, talvez você queira começar..."
67 | message_no_categories: "Unfortunately, there aren't any Categories defined, and you need to be logged in to create new categories."
68 | message_no_permissions: "You do not have permission to view any articles or categories. Please contact your administrator."
69 | message_summary_count_not_available: "Summary Count Not Available!"
70 | permission_comment_and_rate_articles: "Comment and rate articles"
71 | permission_create_article_categories: "Create article categories"
72 | permission_create_articles: "Create articles"
73 | permission_edit_articles: "Edit articles"
74 | permission_manage_article_categories: "Manage article categories"
75 | permission_manage_article_history: "manage article history"
76 | permission_manage_articles: "Manage articles"
77 | permission_manage_articles_comments: "Manage articles comments"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "view article history"
80 | permission_view_articles: "View articles"
81 | permission_view_kb_articles: "View articles"
82 | permission_view_most_popular_articles: "view most popular articles"
83 | permission_view_recent_articles: "View recent articles"
84 | permission_view_top_rated_articles: "view top rated articles"
85 | permission_watch_articles: "Watch articles"
86 | permission_watch_categories: "Watch categories"
87 | project_module_knowledgebase: Knowledgebase
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Show category totals in tree?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Knowledgebase summary page article limit"
94 | text_confirm_versions_delete: "This will revert and delete any newer versions of this document that may exist. Are you sure?"
95 | text_current_version: Current
96 | title_add_comment: "Add Comment"
97 | title_article_rating: "Classificação do Artigo"
98 | title_browse_by_category: "Navegar por Categoria"
99 | title_browse_by_tags: "Browse by Tags"
100 | title_create_article: "Criar Artigo"
101 | title_create_category: "Criar Categoria"
102 | title_edit_article: "Editar Artigo"
103 | title_edit_category: "Editar Categoria"
104 | title_most_popular_articles: "Artigos Mais Populares"
105 | title_new_category: "Nova Categoria"
106 | title_newest_articles: "Novos Artigos"
107 | title_overview_summary: "Knowledgebase Summary"
108 | title_recently_updated_articles: "Artigos Recentemente Atualizados"
109 | title_tagged_articles: "Articles tagged with %{tag}"
110 | title_tags: Tags
111 | title_top_rated_articles: "Artigos Mais Bem Classificados"
112 | title_votes: Votos
113 |
--------------------------------------------------------------------------------
/config/locales/ru.yml:
--------------------------------------------------------------------------------
1 | ---
2 | ru:
3 | allow_anon_access: "Разрешить анонимный доступ?"
4 | allow_sort_category_tree: "Сортировать дерево каталогов по алфавиту?"
5 | disable_article_summaries: "Отключить сводки для статей"
6 | field_article_author: Автор
7 | field_article_destroyer: Удалил
8 | field_article_updater: Редактировал
9 | field_tag_list: "Список меток"
10 | field_updated_at: "Изменено в"
11 | field_version: Версия
12 | field_version_comments: "Комментарий к изменению"
13 | knowledgebase_title: "База знаний"
14 | label_article_created: "Создана статья '%{title}'"
15 | label_article_plural: Статьи
16 | label_article_removed: "Статья удалена"
17 | label_article_updated: "Статья обновлена"
18 | label_article_version: "Версия статьи: %{version} - "
19 | label_article_viewed:
20 | one: "Просмотрена один раз"
21 | few: "Просмотрена %{count} раза"
22 | many: "Просмотрена %{count} раз"
23 | other: "Просмотрена %{count} раза"
24 | label_attachment_add: "Добавить файлы"
25 | label_authored_by: "Автор статей"
26 | label_category: Категория
27 | label_category_created: "Создана категория '%{title}'"
28 | label_category_deleted: "Категория удалена"
29 | label_category_has_subcategory_cannot_delete: "Категорию нельзя удалить, так как она содержит подкатегорию."
30 | label_category_not_empty_cannot_delete: "Категория содержит статьи и не может быть удалена."
31 | label_category_plural: Категории
32 | label_category_updated: "Категория обновлена"
33 | label_content: "Текст статьи"
34 | label_delete_article: "Удалить статью"
35 | label_delete_category: "Удалить категорию"
36 | label_description: Описание
37 | label_edit_article: Редактировать
38 | label_edit_category: "Редактировать категорию"
39 | label_filter_by_tag: "Фильтр по тегу"
40 | label_filtered_by_tag: "Отфильтровано по тегу:"
41 | label_jump_category: "Перейти к категории"
42 | label_kb_article_plural: "Статьи базы знаний"
43 | label_kb_home: Начало
44 | label_kb_link: "KB#%{kb_id}"
45 | label_new_article: "Новая статья"
46 | label_new_category: "Новая категория"
47 | label_new_comment: "Создать комментарий"
48 | label_overview_my_articles: "Статьи написанные мной: %{total_articles_by_me}"
49 | label_overview_total_articles: "Общее число статей: %{total_articles}"
50 | label_overview_total_categories: "Общее число категорий: %{total_categories}"
51 | label_parent_category: "Родительская категория"
52 | label_root_category: "Корневая категория"
53 | label_subcategories: Подкатегории
54 | label_summary: Сводка
55 | label_summary_newest_articles: "Создан %{ago} в категории %{category}"
56 | label_summary_popular_articles:
57 | one: "Один просмотр с %{created}"
58 | few: "Было %{count} просмотра с %{created}"
59 | many: "Было %{count} просмотров с %{created}"
60 | other: "Было %{count} просмотров с %{created}"
61 | label_summary_toprated_articles:
62 | one: "Рейтинг: %{rating_avg}/%{rating_max} после одного голоса"
63 | few: "Рейтинг: %{rating_avg}/%{rating_max} после %{count} голосов"
64 | many: "Рейтинг: %{rating_avg}/%{rating_max} после %{count} голосов"
65 | other: "Рейтинг: %{rating_avg}/%{rating_max} после %{count} голосов"
66 | zero: "Голосов нет"
67 | label_summary_updated_articles: "Обновлено %{ago}"
68 | label_title: Заголовок
69 | label_title_articles: Статьи
70 | label_title_category: Категория
71 | label_unrated_article: Голосов нет
72 | label_updated_who: "Обновлено %{updater} %{age} назад"
73 | message_no_articles: "В базе знаний нет ни одной статьи. Чтобы начать нажмите Создать статью..."
74 | message_no_categories: "В базе знаний нет ни одной категории. Чтобы начать нажмите Создать категорию..."
75 | message_no_permissions: "У вас нет прав на просмотр статей или категорий. Свяжитесь с вашим Администратором."
76 | message_summary_count_not_available: "Счетчик сводок не доступен!"
77 | permission_comment_and_rate_articles: "Комментировать и голосовать за статьи"
78 | permission_create_article_categories: "Создавать категории"
79 | permission_create_articles: "Создавать статьи"
80 | permission_edit_articles: "Редактировать статьи"
81 | permission_manage_article_categories: "Управлять категориями"
82 | permission_manage_article_history: "Управлять историей статей"
83 | permission_manage_articles: "Управлять статьями"
84 | permission_manage_articles_comments: "Управлять комментариями к статьям"
85 | permission_manage_own_articles: "Управлять своими статьями"
86 | permission_view_article_history: "Просматривать историю статей"
87 | permission_view_articles: "Просматривать статьи"
88 | permission_view_kb_articles: "Просматривать статьи базы знаний"
89 | permission_view_most_popular_articles: "Просматривать наиболее популярные"
90 | permission_view_recent_articles: "Просматривать недавние статьи"
91 | permission_view_top_rated_articles: "Просматривать статьи с наивысшим рейтингом"
92 | permission_watch_articles: "Следить за статьями"
93 | permission_watch_categories: "Следить за категориями"
94 | project_module_knowledgebase: Knowledgebase
95 | show_article_without_tabs: "Показать статьи без вкладок"
96 | show_attachments_first: "Показать вложения перед содержимым статьи"
97 | show_breadcrumbs_for_article_lists: "Показать \"хлебные крошки\" для статей в списках"
98 | show_tiled_article_lists: "Показать список статей в виде плитки"
99 | show_category_totals: "Показать информацию по категориям в виде дерева?"
100 | show_thumbnails_for_articles: "Показать эскизы статей в списках"
101 | critical_tags: "Показать важные теги первыми (разделять запятыми)"
102 | summary_item_limit: "Лимит статей на странице сводки"
103 | articles_per_list_page: "Лимит статей на страницу"
104 | text_confirm_versions_delete: "Данное изменение отменит и удалит все возможные новые версии данного докмуента. Вы уверены?"
105 | text_current_version: Текущая
106 | title_add_comment: "Добавить комментарий"
107 | title_article_rating: "Рейтинг статьи"
108 | title_browse_by_category: "Просмотр по категориям"
109 | title_browse_by_tags: "Просмотр по тегам"
110 | title_create_article: "Создать статью"
111 | title_create_category: "Создать категорию"
112 | title_edit_article: "Редактировать статью"
113 | title_edit_category: "Редактировать категорию"
114 | title_most_popular_articles: "Наиболее популярные статьи"
115 | title_new_category: "Новая категория"
116 | title_newest_articles: "Последние статьи"
117 | title_overview_summary: "Сводка по базе знаний"
118 | title_recently_updated_articles: "Недавно обновлённые статьи"
119 | title_tagged_articles: "Статьи отмеченные тегом %{tag}"
120 | title_tags: Тег
121 | title_top_rated_articles: "Статьи с наибольшим рейтингом"
122 | title_votes:
123 | one: "один голос"
124 | few: "%{count} голоса"
125 | many: "%{count} голосов"
126 | other: "%{count} голосов"
127 | zero: "голосов нет"
128 |
--------------------------------------------------------------------------------
/config/locales/tr.yml:
--------------------------------------------------------------------------------
1 | ---
2 | tr:
3 | allow_anon_access: "Anonim erişime izin ver?"
4 | allow_sort_category_tree: "Kategori ağacını alfabetik olarak sırala?"
5 | disable_article_summaries: "Disable Article Summaries"
6 | field_article_author: "Created by"
7 | field_article_destroyer: "Deleted by"
8 | field_article_updater: "Updated by"
9 | field_tag_list: "Etiket Listesi"
10 | field_updated_at: "Updated at"
11 | field_version: Version
12 | field_version_comments: "Change comments"
13 | knowledgebase_title: "Bilgi Bankası"
14 | label_article_created: "'%{title} makalesi oluşturuldu'"
15 | label_article_plural: Makaleler
16 | label_article_removed: "Makale kaldırıldı"
17 | label_article_updated: "Makale güncellendi"
18 | label_article_version: "Article version: %{version} - "
19 | label_article_viewed:
20 | one: "Bir kez görüntülendi"
21 | other: "%{count} defa görüntülendi"
22 | label_attachment_add: "Add files"
23 | label_authored_by: "Articles authored by"
24 | label_category: Kategori
25 | label_category_created: "'%{title}' kategorisi oluşturuldu"
26 | label_category_deleted: "Kategori silindi"
27 | label_category_has_subcategory_cannot_delete: "Category can not be deleted because it contains a subcategory."
28 | label_category_not_empty_cannot_delete: "Bu kategoride makaleler var ve silinemez."
29 | label_category_plural: Kategoriler
30 | label_category_updated: "Kategori güncellendi"
31 | label_content: İçerik
32 | label_delete_article: Sil
33 | label_delete_category: "Kategoriyi sil"
34 | label_description: Açıklama
35 | label_edit_article: Düzenle
36 | label_edit_category: "Kategoriyi düzenle"
37 | label_filter_by_tag: "Filter by Tag"
38 | label_filtered_by_tag: "Filtered by tag:"
39 | label_jump_category: "Kategoriye git"
40 | label_kb_article_plural: "Knowledgebase articles"
41 | label_kb_home: Anasayfa
42 | label_kb_link: "KB#%{kb_id}"
43 | label_new_article: "Yeni Makale"
44 | label_new_category: "Yeni Kategori"
45 | label_new_comment: "Yeni Yorum"
46 | label_overview_my_articles: "Articles written by me: %{total_articles_by_me}"
47 | label_overview_total_articles: "Total number of articles: %{total_articles}"
48 | label_overview_total_categories: "Total number of categories: %{total_categories}"
49 | label_parent_category: "Üst Kategori"
50 | label_root_category: "Temel Kategori"
51 | label_subcategories: Alt-kategoriler
52 | label_summary: Özet
53 | label_summary_newest_articles: "%{ago} önce %{category} içinde oluşturuldu"
54 | label_summary_popular_articles:
55 | one: "%{created} tarihinden bu yana bir kez görüntülendi"
56 | other: "%{created} tarihinden bu yana %{count} kez görüntülendi"
57 | label_summary_toprated_articles:
58 | one: "Derecelendirme: Bir oy ile %{rating_avg}/%{rating_max}"
59 | other: "Derecelendirme: %{count} oy ile %{rating_avg}/%{rating_max}"
60 | label_summary_updated_articles: "%{ago} önce güncellendi"
61 | label_title: Başlık
62 | label_title_articles: Makale
63 | label_title_category: Kategori
64 | label_unrated_article: Unrated
65 | label_updated_who: "Updated by %{updater} %{age} ago"
66 | message_no_articles: "Henüz bilgi bankasına hiç bir makale eklenmedi. Belki bir kaç tane eklemek istersiniz..."
67 | message_no_categories: "Unfortunately, there aren't any Categories defined, and you need to be logged in to create new categories."
68 | message_no_permissions: "You do not have permission to view any articles or categories. Please contact your administrator."
69 | message_summary_count_not_available: "Summary Count Not Available!"
70 | permission_comment_and_rate_articles: "Comment and rate articles"
71 | permission_create_article_categories: "Create article categories"
72 | permission_create_articles: "Create articles"
73 | permission_edit_articles: "Edit articles"
74 | permission_manage_article_categories: "Manage article categories"
75 | permission_manage_article_history: "manage article history"
76 | permission_manage_articles: "Manage articles"
77 | permission_manage_articles_comments: "Manage articles comments"
78 | permission_manage_own_articles: "Manage own articles"
79 | permission_view_article_history: "view article history"
80 | permission_view_articles: "View articles"
81 | permission_view_kb_articles: "View articles"
82 | permission_view_most_popular_articles: "view most popular articles"
83 | permission_view_recent_articles: "View recent articles"
84 | permission_view_top_rated_articles: "view top rated articles"
85 | permission_watch_articles: "Watch articles"
86 | permission_watch_categories: "Watch categories"
87 | project_module_knowledgebase: Knowledgebase
88 | show_article_without_tabs: "Show articles without tabs?"
89 | show_attachments_first: "Show attachments before article content?"
90 | show_breadcrumbs_for_article_lists: "Show breadcrumbs for articles in lists?"
91 | show_category_totals: "Kategori toplamını ağaç yapısnda göster?"
92 | show_thumbnails_for_articles: "Show thumbnails for articles in lists?"
93 | summary_item_limit: "Bilgi bankası özet sayfası makale sınırı"
94 | text_confirm_versions_delete: "This will revert and delete any newer versions of this document that may exist. Are you sure?"
95 | text_current_version: Current
96 | title_add_comment: "Yorum ekle"
97 | title_article_rating: "Makale Derecelendirmesi"
98 | title_browse_by_category: Kategoriler
99 | title_browse_by_tags: "Browse by Tags"
100 | title_create_article: "Makale oluştur"
101 | title_create_category: "Kategori oluştur"
102 | title_edit_article: "Makaleyi düzenle"
103 | title_edit_category: "Kategoriyi düzenle"
104 | title_most_popular_articles: "En Beğenilen Makaleler"
105 | title_new_category: "Yeni Kategori"
106 | title_newest_articles: "En Yeni Makaleler"
107 | title_overview_summary: "Knowledgebase Summary"
108 | title_recently_updated_articles: "Yakın zamanda Güncellenmiş Makaleler"
109 | title_tagged_articles: "%{tag} ile etiketlenmiş makaleler"
110 | title_tags: Etiketler
111 | title_top_rated_articles: "En Çok Oy Alan Makaleler"
112 | title_votes:
113 | one: "Bir oy"
114 | other: "%{count} oy"
115 | zero: "Oy yok"
116 |
--------------------------------------------------------------------------------
/config/locales/zh-TW.yml:
--------------------------------------------------------------------------------
1 | ---
2 | zh-TW:
3 | articles_per_list_page: "文章列表每頁顯示文章數量"
4 | allow_anon_access: "允許匿名使用者存取?"
5 | allow_sort_category_tree: "依字母排序類別瀏覽?"
6 | critical_tags: "優先顯示的重要標籤 (以逗號【,】分隔)."
7 | disable_article_summaries: "關閉文章摘要?"
8 | description_create_article: ""
9 | field_article_author: 作者
10 | field_article_destroyer: 刪除者
11 | field_article_updater: 修訂人
12 | field_tag_list: 標籤
13 | field_updated_at: 更新於
14 | field_version: 版本
15 | field_version_comments: 版本註解
16 | knowledgebase_title: 知識庫
17 | label_article_created: "文章【'%{title}'】已建立。"
18 | label_article_plural: 文章
19 | label_article_removed: "文章已移除。"
20 | label_article_updated: "文章已更新。"
21 | label_article_version: "文章版本: %{version} - "
22 | label_article_viewed:
23 | one: "已被閱讀 1 次。"
24 | other: "已被閱讀 %{count} 次。"
25 | label_attachment_add: 新增附件
26 | label_authored_by: 作者
27 | label_category: 類別
28 | label_category_created: "類別【'%{title}'】已建立"
29 | label_category_deleted: 類別已刪除
30 | label_category_has_subcategory_cannot_delete: "該類別包含子類別,不能刪除。"
31 | label_category_not_empty_cannot_delete: "該類別下有文章,不能刪除。"
32 | label_category_plural: 類別
33 | label_category_updated: "類別已更新。"
34 | label_content: 內容
35 | label_delete_article: 刪除文章
36 | label_delete_category: 刪除類別
37 | label_description: 描述
38 | label_edit_article: 編輯文章
39 | label_edit_category: 編輯類別
40 | label_filter_by_tag: "依標籤過濾"
41 | label_filtered_by_tag: "依標籤過濾:"
42 | label_jump_category: "移動到類別"
43 | label_kb_article_plural: 知識庫文章
44 | label_kb_home: 知識庫主頁
45 | label_kb_link: "KB#%{kb_id}"
46 | label_new_article: "新建文章"
47 | label_new_category: "新建類別"
48 | label_new_comment: "新增回應"
49 | label_overview_my_articles: "我所撰寫的文章:%{total_articles_by_me}"
50 | label_overview_total_articles: "文章總數:%{total_articles}"
51 | label_overview_total_categories: "知識類別總數:%{total_categories}"
52 | label_parent_category: 上層類別
53 | label_root_category: 主要類別
54 | label_subcategories: 子類別
55 | label_summary: 摘要
56 | label_summary_newest_articles: "%{ago} 前建立於 【%{category}】"
57 | label_summary_popular_articles:
58 | one: "自 %{created} 起,已被閱讀 1 次。"
59 | other: "自 %{created} 起,已被閱讀 %{count} 次。"
60 | label_summary_toprated_articles:
61 | one: "綜合評分: %{rating_avg}/%{rating_max} 來自於 1 次評分。"
62 | other: "綜合評分: %{rating_avg}/%{rating_max} 來自於 %{count} 次評分。"
63 | label_summary_updated_articles: "%{ago} 之前更新"
64 | label_title: 標題
65 | label_title_articles: 文章標題
66 | label_title_category: 所屬類別
67 | label_unrated_article: 未評分
68 | label_updated_who: "%{updater} 於 %{age} 前更新"
69 | label_unrated_article: "未評分"
70 | message_no_articles: "目前尚未有任何文章。"
71 | message_no_categories: "目前未定義任何類別。您需要至少建立一個知識類別。"
72 | message_no_permissions: "您無權檢視任何文章或類別,請聯絡管理員。"
73 | message_summary_count_not_available: "摘要不可用!"
74 | permission_comment_and_rate_articles: 文章回應和評分
75 | permission_create_article_categories: 建立知識類別
76 | permission_create_articles: 建立文章
77 | permission_edit_articles: 編輯文章
78 | permission_manage_article_categories: 管理文章類別
79 | permission_manage_article_history: 管理文章歷史
80 | permission_manage_articles: 管理文章
81 | permission_manage_articles_comments: 管理文章回應
82 | permission_manage_own_articles: 管理自己的文章
83 | permission_view_article_history: 檢視文章歷史
84 | permission_view_articles: 檢視文章
85 | permission_view_kb_articles: 檢視文章
86 | permission_view_most_popular_articles: 檢視人氣最高的文章
87 | permission_view_recent_articles: 檢視最近的文章
88 | permission_view_top_rated_articles: 檢視評分最高的文章
89 | permission_watch_articles: 關注文章
90 | permission_watch_categories: 關注類別
91 | project_module_knowledgebase: 知識庫
92 | show_article_without_tabs: "文章內容不以頁籤方式顯示?"
93 | show_attachments_first: "在文章內容前先顯示附件?"
94 | show_breadcrumbs_for_article_lists: "在文章列表中顯示類別導覽?"
95 | show_category_totals: "在類別瀏覽中顯示數量?"
96 | show_thumbnails_for_articles: "顯示文章縮略圖?"
97 | show_tiled_article_lists: "以磚型縮略圖顯示文章列表?"
98 | summary_item_limit: 知識庫摘要中每個列表的文章數量
99 | text_confirm_versions_delete: "還原文章內容並刪除較該版本新的內容,是否繼續?"
100 | text_current_version: 目前版本
101 | thumbnail_explanation: "在新增附件時,在敘述欄中填寫 \"thumbnail\" ,則該圖片會優先被用作縮略圖。否則,以最後上傳的圖片作為縮略圖。"
102 | title_add_comment: 新增回應
103 | title_article_rating: 文章評分
104 | title_browse_by_category: 依類別瀏覽
105 | title_browse_by_tags: 依標籤瀏覽
106 | title_create_article: 新建文章
107 | title_create_category: 新建類別
108 | title_edit_article: 編輯文章
109 | title_edit_category: 編輯類別
110 | title_most_popular_articles: 最熱門文章
111 | title_new_category: 新類別
112 | title_newest_articles: 最新文章
113 | title_overview_summary: 知識庫摘要
114 | title_recently_updated_articles: 最近更新的文章
115 | title_tagged_articles: "含【%{tag}】標籤的文章"
116 | title_tags: 標籤
117 | title_top_rated_articles: 評分最高的文章
118 | title_votes:
119 | one: "被評分 1 次。"
120 | other: "被評分 %{count} 次。"
121 | zero: "未被評分。"
--------------------------------------------------------------------------------
/config/locales/zh.yml:
--------------------------------------------------------------------------------
1 | ---
2 | zh:
3 | articles_per_list_page: "每页显示多少篇文章?"
4 | allow_anon_access: "是否允许匿名访问?"
5 | allow_sort_category_tree: "分类树按字母排序?"
6 | critical_tags: "优先显示关键标签(逗号【,】分隔)"
7 | disable_article_summaries: "禁用文章摘要"
8 | description_create_article: "在知识库的【%{category}】分类中,添加一篇新文章。"
9 | field_article_author: "作者"
10 | field_article_destroyer: "删除者"
11 | field_article_updater: "修订人"
12 | field_tag_list: "标签列表"
13 | field_updated_at: "更新于"
14 | field_version: 版本
15 | field_version_comments: "版本修订注释"
16 | knowledgebase_title: 知识库
17 | label_article_created: "文章【'%{title}'】已创建。"
18 | label_article_plural: 文章
19 | label_article_removed: "文章已移除。"
20 | label_article_updated: "文章已更新。"
21 | label_article_version: "文章版本: %{version} - "
22 | label_article_viewed:
23 | one: "已阅 1 次。"
24 | other: "已阅 %{count} 次。"
25 | label_attachment_add: "添加附件"
26 | label_authored_by: "文章作者"
27 | label_category: 分类
28 | label_category_created: "分类【'%{title}'】已创建"
29 | label_category_deleted: "分类已删除"
30 | label_category_has_subcategory_cannot_delete: "当前分类包含子分类,不能删除。"
31 | label_category_not_empty_cannot_delete: "当前分类下有文章,不能删除。"
32 | label_category_plural: 分类
33 | label_category_updated: "分类已更新。"
34 | label_content: 内容
35 | label_delete_article: 删除文章
36 | label_delete_category: "删除分类"
37 | label_description: 描述
38 | label_edit_article: 编辑文章
39 | label_edit_category: "编辑分类"
40 | label_filter_by_tag: "按标签过滤"
41 | label_filtered_by_tag: "按标签过滤:"
42 | label_jump_category: "跳转到分类"
43 | label_kb_article_plural: "知识库文章"
44 | label_kb_home: 知识库主页
45 | label_kb_link: "KB#%{kb_id}"
46 | label_new_article: "新建文章"
47 | label_new_category: "新建分类"
48 | label_new_comment: "添加评论"
49 | label_overview_my_articles: "我所编写的文章:%{total_articles_by_me}"
50 | label_overview_total_articles: "文章总数:%{total_articles}"
51 | label_overview_total_categories: "知识分类总数:%{total_categories}"
52 | label_parent_category: "父分类"
53 | label_root_category: "根分类"
54 | label_subcategories: 子分类
55 | label_summary: 摘要
56 | label_summary_newest_articles: "位于【%{category}】分类,创建于 %{ago} 之前"
57 | label_summary_popular_articles:
58 | one: "自 %{created} 起,已阅 1 次。"
59 | other: "自 %{created} 起,已阅 %{count} 次。"
60 | label_summary_toprated_articles:
61 | one: "综合评分: %{rating_avg}/%{rating_max} 来自于 1 次评分。"
62 | other: "综合评分: %{rating_avg}/%{rating_max} 来自于 %{count} 次评分。"
63 | label_summary_updated_articles: "更新于 %{ago} 之前"
64 | label_title: 标题
65 | label_title_articles: 文章标题
66 | label_title_category: 所属分类
67 | label_unrated_article: 未评分
68 | label_updated_who: "由 %{updater} 更新于 %{age} 前"
69 | label_unrated_article: "未评分"
70 | message_no_articles: "目前尚未有任何文章。"
71 | message_no_categories: "目前未定义任何分类。您需要至少创建一个知识分类。"
72 | message_no_permissions: "你无权查看任何文章或分类,请联系管理员。"
73 | message_summary_count_not_available: "汇总不可用!"
74 | permission_comment_and_rate_articles: "文章评论和打分"
75 | permission_create_article_categories: "创建文章分类"
76 | permission_create_articles: "创建文章"
77 | permission_edit_articles: "编辑文章"
78 | permission_manage_article_categories: "管理文章分类"
79 | permission_manage_article_history: "管理文章历史"
80 | permission_manage_articles: "管理文章"
81 | permission_manage_articles_comments: "管理文章评论"
82 | permission_manage_own_articles: "管理自己的文章"
83 | permission_view_article_history: "查看文章历史"
84 | permission_view_articles: "查看文章"
85 | permission_view_kb_articles: "查看文章"
86 | permission_view_most_popular_articles: "查看人气最高文章"
87 | permission_view_recent_articles: "查看最近文章"
88 | permission_view_top_rated_articles: "查看评分最高文章"
89 | permission_watch_articles: "关注文章"
90 | permission_watch_categories: "关注分类"
91 | project_module_knowledgebase: 知识库
92 | show_article_without_tabs: "不使用 TAB 页方式显示文章所有内容?"
93 | show_attachments_first: "在文章内容前显示附件?"
94 | show_breadcrumbs_for_article_lists: "列表中的文章显示面包屑?"
95 | show_category_totals: "在分类树中显示数量?"
96 | show_breadcrumbs_for_article_lists: "列表中的文章显示面包屑?"
97 | show_thumbnails_for_articles: "在文章中显示略缩图?"
98 | show_tiled_article_lists: "以平铺形式显示文章列表?"
99 | summary_item_limit: "知识库主页文章限制"
100 | text_confirm_versions_delete: "文章所有改动将丢失,是否继续?"
101 | text_current_version: 当前版本
102 | thumbnail_explanation: "在添加文章的附件文件时,在描述栏中填写 \"thumbnail\" ,则会将该图片设置为文章的的唯一缩略图。否则,最后上传的图像文件将被用作该文章的缩略图。"
103 | title_add_comment: "添加评论"
104 | title_article_rating: "文章评分"
105 | title_browse_by_category: "按分类浏览"
106 | title_browse_by_tags: "按标签浏览"
107 | title_create_article: "新建文章"
108 | title_create_category: "新建分类"
109 | title_edit_article: "编辑文章"
110 | title_edit_category: "编辑分类"
111 | title_most_popular_articles: "最热门文章"
112 | title_new_category: "新分类"
113 | title_newest_articles: "最新文章"
114 | title_overview_summary: "知识库概述"
115 | title_recently_updated_articles: "最近更新的文章"
116 | title_tagged_articles: "含【%{tag}】标签的文章"
117 | title_tags: 标签
118 | title_top_rated_articles: "评分最高的文章"
119 | title_votes:
120 | one: "评分 1 次。"
121 | other: "评分 %{count} 次。"
122 | zero: "未评分。"
123 |
--------------------------------------------------------------------------------
/config/routes.rb:
--------------------------------------------------------------------------------
1 | RedmineApp::Application.routes.draw do
2 | scope "/projects/:project_id/knowledgebase" do
3 | resources :categories, :via => [:get, :post]
4 | get 'articles/:id/diff/:version/vs/:version_from', :controller => 'articles', :action => 'diff'
5 | get 'articles/:id/diff/:version', :controller => 'articles', :action => 'diff'
6 | resources :articles do
7 | collection do
8 | get "tagged"
9 | get "authored"
10 | post "preview"
11 | end
12 |
13 | get "comment"
14 |
15 | member do
16 | patch "preview"
17 | post "add_comment"
18 | post "destroy_comment"
19 | post "rate"
20 | get "diff"
21 | get "version"
22 | get "revert"
23 | end
24 | end
25 | end
26 | end
27 |
--------------------------------------------------------------------------------
/db/migrate/20100210212009_create_categories.rb:
--------------------------------------------------------------------------------
1 | class CreateCategories < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | create_table :kb_categories do |t|
4 | t.column :title, :string, :null => false
5 | t.column :description, :text
6 | t.timestamps
7 | end
8 | end
9 |
10 | def self.down
11 | drop_table :kb_categories
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/db/migrate/20100211210218_add_parent_id_to_categories.rb:
--------------------------------------------------------------------------------
1 | class AddParentIdToCategories < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_categories, :parent_id, :int
4 | end
5 |
6 | def self.down
7 | remove_column :kb_categories, :parent_id
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/db/migrate/20100211212704_create_articles.rb:
--------------------------------------------------------------------------------
1 | class CreateArticles < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | create_table :kb_articles do |t|
4 | t.column :category_id, :int, :null => false
5 | t.column :title, :string, :null => false
6 | t.column :summary, :text
7 | t.column :content, :text
8 | t.timestamps
9 | end
10 | end
11 |
12 | def self.down
13 | drop_table :kb_articles
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/db/migrate/20100213145708_add_author_to_article.rb:
--------------------------------------------------------------------------------
1 | class AddAuthorToArticle < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_articles, :author_id, :int, :default => 0, :null => false
4 | end
5 |
6 | def self.down
7 | remove_column :kb_articles, :author_id
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/db/migrate/20100213201848_add_viewing_tables.rb:
--------------------------------------------------------------------------------
1 | class AddViewingTables < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | ActiveRecord::Base.create_viewings_table
4 | end
5 |
6 | def self.down
7 | ActiveRecord::Base.drop_viewings_table
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/db/migrate/20100216000133_add_nested_set_boundries_to_category.rb:
--------------------------------------------------------------------------------
1 | class AddNestedSetBoundriesToCategory < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_categories, :lft, :int
4 | add_column :kb_categories, :rgt, :int
5 | end
6 |
7 | def self.down
8 | remove_column :kb_categories, :lft
9 | remove_column :kb_categories, :rgt
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/db/migrate/20100317201659_add_ratings_to_articles.rb:
--------------------------------------------------------------------------------
1 | class AddRatingsToArticles < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | require 'acts_as_rated'
3 |
4 | def self.up
5 | ActiveRecord::Base.create_ratings_table :with_rater => false
6 | end
7 |
8 | def self.down
9 | ActiveRecord::Base.drop_ratings_table
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/db/migrate/20100329103527_add_comments_count_to_articles.rb:
--------------------------------------------------------------------------------
1 | class AddCommentsCountToArticles < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_articles, :comments_count, :int
4 | end
5 |
6 | def self.down
7 | remove_column :kb_articles, :comments_count
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/db/migrate/20110131145123_add_project_id_to_articles.rb:
--------------------------------------------------------------------------------
1 | class AddProjectIdToArticles < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_articles, :project_id, :int, :default => 0
4 | end
5 |
6 | def self.down
7 | remove_column :kb_articles, :project_id
8 | end
9 | end
10 |
11 |
--------------------------------------------------------------------------------
/db/migrate/20121005075010_add_updater_to_article.rb:
--------------------------------------------------------------------------------
1 | class AddUpdaterToArticle < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_articles, :updater_id, :int, :default => 0, :null => false
4 | end
5 |
6 | def self.down
7 | remove_column :kb_articles, :updater_id
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/db/migrate/20121030102100_add_project_id_to_categories.rb:
--------------------------------------------------------------------------------
1 | class AddProjectIdToCategories < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_categories, :project_id, :int, :default => 0
4 | end
5 |
6 | def self.down
7 | remove_column :kb_categories, :project_id
8 | end
9 | end
10 |
11 |
12 |
--------------------------------------------------------------------------------
/db/migrate/20121205100143_add_versioning.rb:
--------------------------------------------------------------------------------
1 | class AddVersioning < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_articles, :version_comments, :string, :limit => 255, :default => ""
4 | KbArticle.create_versioned_table
5 | add_index KbArticle.versioned_table_name, :kb_article_id, :name => :kb_article_versions_kbaid
6 | add_index KbArticle.versioned_table_name, :updated_at, :name => :index_kb_article_versions_on_updated_at
7 | KbArticle.update_all('version = 0')
8 | end
9 |
10 | def self.down
11 | KbArticle.drop_versioned_table
12 | remove_column :kb_articles, :version
13 | remove_column :kb_articles, :version_comments
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/db/migrate/20130513154700_add_tags_and_taggings.rb:
--------------------------------------------------------------------------------
1 | class AddTagsAndTaggings < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2];
2 | def self.up
3 | ActiveRecord::Base.create_taggable_table
4 | end
5 |
6 | def self.down
7 | ActiveRecord::Base.drop_taggable_table
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/db/migrate/20141215120000_add_article_versions_comments.rb:
--------------------------------------------------------------------------------
1 | class AddArticleVersionsComments < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | add_column :kb_article_versions, :version_comments, :string, limit: 255, default: "" unless column_exists?(:kb_article_versions, :version_comments)
4 | end
5 | end
6 |
--------------------------------------------------------------------------------
/db/migrate/20150326093104_add_missing_unique_indice.rb:
--------------------------------------------------------------------------------
1 | class AddMissingUniqueIndice < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]; end
2 |
--------------------------------------------------------------------------------
/db/migrate/20150326093122_add_taggings_counter_cache_to_tags.rb:
--------------------------------------------------------------------------------
1 | class AddTaggingsCounterCacheToTags < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | RedmineCrm::Tag.reset_column_information
4 | RedmineCrm::Tag.find_each do |tag|
5 | RedmineCrm::Tag.reset_counters(tag.id, :taggings)
6 | rescue
7 | next
8 | end
9 | end
10 |
11 | def self.down
12 | remove_column :tags, :taggings_count
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/db/migrate/20150326093139_add_missing_taggable_index.rb:
--------------------------------------------------------------------------------
1 | class AddMissingTaggableIndex < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]; end
2 |
--------------------------------------------------------------------------------
/db/migrate/20150616103300_change_column_article_to_long_text.rb:
--------------------------------------------------------------------------------
1 | class ChangeColumnArticleToLongText < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | change_column :kb_articles, :content, :text, :limit => 16.megabytes + 3
4 | end
5 |
6 | end
7 |
--------------------------------------------------------------------------------
/db/migrate/20200409165301_add_redmineup_tags.rb.old:
--------------------------------------------------------------------------------
1 | class AddRedmineupTags < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
2 | def self.up
3 | # unless table_exists?(:viewings)
4 | ActiveRecord::Base.create_taggable_table
5 | # end
6 | end
7 |
8 | def self.down
9 | ActiveRecord::Base.drop_taggable_table
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/init.rb:
--------------------------------------------------------------------------------
1 | require 'redmine'
2 |
3 | if (Rails.configuration.respond_to?(:autoloader) && Rails.configuration.autoloader == :zeitwerk) || Rails.version > '7.0'
4 | Rails.autoloaders.each { |loader| loader.ignore(File.dirname(__FILE__) + '/lib') }
5 | end
6 | require File.dirname(__FILE__) + '/lib/redmine_knowledgebase'
7 |
8 | Project.send :include, KnowledgebaseProjectExtension
9 | SettingsHelper.send :include, KnowledgebaseSettingsHelper
10 | ApplicationHelper.send :include, Redmineup::TagsHelper
11 |
12 | Rails.configuration.to_prepare do
13 | Redmine::Activity.register :kb_articles
14 | Redmine::Search.available_search_types << 'kb_articles'
15 | end
16 |
17 | Redmine::Plugin.register :redmine_knowledgebase do
18 | name 'Knowledgebase'
19 | author 'Alex Bevilacqua'
20 | author_url "http://www.alexbevi.com"
21 | description 'A plugin for Redmine that adds knowledgebase functionality'
22 | url 'https://github.com/alexbevi/redmine_knowledgebase'
23 | version '5.0.0'
24 |
25 | requires_redmine :version_or_higher => '4.0.0'
26 |
27 | # Do not set any default boolean settings to true or will override user false setting!
28 | settings :default => {
29 | :summary_limit => 25,
30 | :articles_per_list_page => 100,
31 | :disable_article_summaries => false
32 | }, :partial => 'redmine_knowledgebase/knowledgebase_settings'
33 |
34 | project_module :knowledgebase do
35 | permission :view_kb_articles, {
36 | :articles => [:index, :show, :tagged, :authored],
37 | :categories => [:index, :show]
38 | }
39 | permission :comment_and_rate_articles, {
40 | :articles => [:index, :show, :tagged, :rate, :comment, :add_comment],
41 | :categories => [:index, :show]
42 | }
43 | permission :create_articles, {
44 | :articles => [:index, :show, :tagged, :new, :create, :add_attachment, :preview],
45 | :categories => [:index, :show]
46 | }
47 | permission :edit_articles, {
48 | :articles => [:index, :show, :tagged, :edit, :update, :add_attachment, :preview],
49 | :categories => [:index, :show]
50 | }
51 | permission :manage_articles, {
52 | :articles => [:index, :show, :new, :create, :edit, :update, :destroy, :add_attachment,
53 | :preview, :comment, :add_comment, :destroy_comment, :tagged],
54 | :categories => [:index, :show]
55 | }
56 | permission :manage_own_articles, {
57 | :articles => [:index, :show, :edit, :update, :destroy, :add_attachment, :preview, :tagged],
58 | :categories => [:index, :show]
59 | }
60 | permission :manage_articles_comments, {
61 | :articles => [:index, :show, :comment, :add_comment, :destroy_comment],
62 | :categories => [:index, :show]
63 | }
64 | permission :create_article_categories, {
65 | :articles => :index,
66 | :categories => [:index, :show, :new, :create]
67 | }
68 | permission :manage_article_categories, {
69 | :articles => :index,
70 | :categories => [:index, :show, :new, :create, :edit, :update, :destroy]
71 | }
72 | permission :watch_articles, {
73 | :watchers => [:new, :destroy]
74 | }
75 | permission :watch_categories, {
76 | :watchers => [:new, :destroy]
77 | }
78 | permission :view_recent_articles, {
79 | :articles => :index
80 | }
81 | permission :view_most_popular_articles, {
82 | :articles => :index
83 | }
84 | permission :view_top_rated_articles, {
85 | :articles => :index
86 | }
87 | permission :view_article_history, {
88 | :articles => [:diff, :version]
89 | }
90 | permission :manage_article_history, {
91 | :articles => [:diff, :version, :revert]
92 | }
93 | end
94 |
95 | menu :project_menu, :articles, { :controller => 'articles', :action => 'index' }, :caption => :knowledgebase_title, :after => :activity, :param => :project_id
96 |
97 | end
98 |
99 | class RedmineKnowledgebaseHookListener < Redmine::Hook::ViewListener
100 | render_on :view_layouts_base_html_head, :inline => "<%= stylesheet_link_tag 'knowledgebase', :plugin => :redmine_knowledgebase %>"
101 | end
102 |
--------------------------------------------------------------------------------
/lib/concerns/knowledgebase_project_extension.rb:
--------------------------------------------------------------------------------
1 | module KnowledgebaseProjectExtension
2 | extend ActiveSupport::Concern
3 | included do
4 | has_many :categories, :class_name => "KbCategory", :foreign_key => "project_id"
5 | has_many :articles, :class_name => "KbArticle", :foreign_key => "project_id"
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/lib/helpers/knowledgebase_link_helper.rb:
--------------------------------------------------------------------------------
1 | module KnowledgebaseLinkHelper
2 |
3 | def link_to_article(article)
4 | link_to l(:label_kb_link, :kb_id => article.id.to_s), article_path(article.project, article.id), :title => article.title
5 | end
6 |
7 | def link_to_article_with_title(article)
8 | link_to "#{l(:label_kb_link, :kb_id => article.id.to_s)}: #{article.title}", article_path(article.project, article.id)
9 | end
10 |
11 | def link_to_category_with_title(category)
12 | link_to category.title, category_path(category.project, category.id)
13 | end
14 |
15 | end
16 |
--------------------------------------------------------------------------------
/lib/helpers/knowledgebase_settings_helper.rb:
--------------------------------------------------------------------------------
1 | module KnowledgebaseSettingsHelper
2 | def redmine_knowledgebase_settings_value(key)
3 | defaults = Redmine::Plugin::registered_plugins[:redmine_knowledgebase].settings[:default]
4 |
5 | value = begin
6 | Setting['plugin_redmine_knowledgebase'][key]
7 | rescue
8 | nil
9 | end
10 |
11 | value.blank? ? defaults[key] : value
12 | end
13 |
14 | def redmine_knowledgebase_count_article_summaries
15 | "#{KbArticle.count_article_summaries} of #{KbArticle.count} have summaries"
16 | end
17 | end
--------------------------------------------------------------------------------
/lib/macros.rb:
--------------------------------------------------------------------------------
1 | include KnowledgebaseLinkHelper
2 |
3 | module Macros
4 |
5 | Redmine::WikiFormatting::Macros.register do
6 |
7 | #A macro named KB in upper case will be considered as an acronym and will break the macro
8 | desc "Knowledge base Article link Macro, using the kb# format"
9 | macro :kb do |obj, args|
10 | args, options = extract_macro_options(args, :parent)
11 | raise 'No or bad arguments.' if args.size != 1
12 | article = KbArticle.find(args.first)
13 | link_to_article(article)
14 | end
15 |
16 | desc "Knowledge base Article link Macro, using the article_id# format"
17 | macro :article_id do |obj, args|
18 | args, options = extract_macro_options(args, :parent)
19 | raise 'No or bad arguments.' if args.size != 1
20 | article = KbArticle.find(args.first)
21 | link_to_article(article)
22 | end
23 |
24 | desc "Knowledge base Article link Macro, using the article# format"
25 | macro :article do |obj, args|
26 | args, options = extract_macro_options(args, :parent)
27 | raise 'No or bad arguments.' if args.size != 1
28 | article = KbArticle.find(args.first)
29 | link_to_article_with_title(article)
30 | end
31 |
32 | desc "Knowledge base Category link Macro, using the category# format"
33 | macro :category do |obj, args|
34 | args, options = extract_macro_options(args, :parent)
35 | raise 'No or bad arguments.' if args.size != 1
36 | category = KbCategory.find(args.first)
37 | link_to_category_with_title(category)
38 | end
39 | end
40 | end
41 |
--------------------------------------------------------------------------------
/lib/patches/user_patch.rb:
--------------------------------------------------------------------------------
1 | module RedmineKnowledgebase
2 | module Patches
3 | module UserPatch
4 | def self.included(base)
5 | base.send(:include, InstanceMethods)
6 | end
7 |
8 | module InstanceMethods
9 | def atom_key
10 | return super if Redmine::VERSION.to_s >= '5.0'
11 |
12 | rss_key
13 | end
14 | end
15 | end
16 | end
17 | end
18 |
19 | unless User.included_modules.include?(RedmineKnowledgebase::Patches::UserPatch)
20 | User.send(:include, RedmineKnowledgebase::Patches::UserPatch)
21 | end
22 |
--------------------------------------------------------------------------------
/lib/redmine_knowledgebase.rb:
--------------------------------------------------------------------------------
1 | REQUIRED_FILES = [
2 | 'active_record/acts/rated.rb',
3 | 'active_record/acts/versioned.rb',
4 | 'concerns/knowledgebase_project_extension',
5 | 'helpers/knowledgebase_link_helper',
6 | 'helpers/knowledgebase_settings_helper',
7 | 'patches/user_patch',
8 | 'macros',
9 | ]
10 |
11 | base_url = File.dirname(__FILE__)
12 | REQUIRED_FILES.each { |file| require(base_url + '/' + file) }
13 |
14 | module RedmineKnowledgebase
15 | end
16 |
--------------------------------------------------------------------------------
/screenshots/tiled-articles-201801.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alexbevi/redmine_knowledgebase/f90393ed938cb4cfab058e22cb556b12e375457f/screenshots/tiled-articles-201801.jpg
--------------------------------------------------------------------------------
/test/fixtures/enabled_modules.yml:
--------------------------------------------------------------------------------
1 | enabled_modules_027:
2 | name: knowledgebase
3 | project_id: 1
4 | id: 27
--------------------------------------------------------------------------------
/test/fixtures/kb_articles.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2 | one:
3 | id: 1
4 | category_id: 1
5 | title: MyString
6 | summary: MyText
7 | content: MyText
8 | two:
9 | id: 2
10 | category_id: 1
11 | title: MyString
12 | summary: MyText
13 | content: MyText
14 |
--------------------------------------------------------------------------------
/test/fixtures/kb_categories.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2 | one:
3 | id: 1
4 | title: MyString
5 | description: MyText
6 | two:
7 | id: 2
8 | title: MyString
9 | description: MyText
10 |
--------------------------------------------------------------------------------
/test/functional/articles_controller_test.rb:
--------------------------------------------------------------------------------
1 | require File.dirname(__FILE__) + '/../test_helper'
2 |
3 | class ArticlesControllerTest < ActionController::TestCase
4 | fixtures :projects, :roles, :users
5 | plugin_fixtures :kb_articles, :enabled_modules
6 |
7 | def setup
8 | User.current = User.find(1)
9 | @request.session[:user_id] = 1
10 | @project = Project.find(1)
11 | end
12 |
13 | def test_index
14 | Role.find(1).add_permission! :view_kb_articles
15 | get :index, :project_id => @project.id
16 |
17 | assert_response :success
18 | assert_template 'index'
19 | end
20 |
21 | end
22 |
--------------------------------------------------------------------------------
/test/functional/categories_controller_test.rb:
--------------------------------------------------------------------------------
1 | require File.dirname(__FILE__) + '/../test_helper'
2 |
3 | class CategoriesControllerTest < ActionController::TestCase
4 | # Replace this with your real tests.
5 | def test_truth
6 | assert true
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/test/integration/accessing_articles_test.rb:
--------------------------------------------------------------------------------
1 | require File.dirname(__FILE__) + '/../test_helper'
2 |
3 | class AccessingArticlesTest < ActionController::IntegrationTest
4 | def setup
5 | assert true
6 | end
7 |
8 | test "access an article with access defined by the whitelist" do
9 | assert true
10 | end
11 | end
--------------------------------------------------------------------------------
/test/test_helper.rb:
--------------------------------------------------------------------------------
1 | # Load the normal Rails helper
2 | require File.expand_path(File.dirname(__FILE__) + '/../../../test/test_helper')
3 |
4 | module Redmine
5 | module PluginFixturesLoader
6 | def self.included(base)
7 | base.class_eval do
8 | def self.plugin_fixtures(*symbols)
9 | ActiveRecord::Fixtures.create_fixtures(File.dirname(__FILE__) + '/fixtures/', symbols)
10 | end
11 | end
12 | end
13 | end
14 | end
15 |
16 | unless ActionController::TestCase.included_modules.include?(Redmine::PluginFixturesLoader)
17 | ActionController::TestCase.send :include, Redmine::PluginFixturesLoader
18 | end
19 |
20 | unless ActiveSupport::TestCase.included_modules.include?(Redmine::PluginFixturesLoader)
21 | ActiveSupport::TestCase.send :include, Redmine::PluginFixturesLoader
22 | end
--------------------------------------------------------------------------------
/test/unit/article_test.rb:
--------------------------------------------------------------------------------
1 | require File.dirname(__FILE__) + '/../test_helper'
2 |
3 | class ArticleTest < ActiveSupport::TestCase
4 | plugin_fixtures :kb_articles
5 |
6 | # Replace this with your real tests.
7 | def test_truth
8 | assert true
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/test/unit/category_test.rb:
--------------------------------------------------------------------------------
1 | require File.dirname(__FILE__) + '/../test_helper'
2 |
3 | class CategoryTest < ActiveSupport::TestCase
4 | plugin_fixtures :kb_categories
5 |
6 | test "should not save category without title" do
7 | category = KbCategory.new
8 | assert !category.save, "Saved the category without a title"
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
4 | <%= avatar(comment.author, :size => "24") %> 5 | <%= authoring comment.created_on, comment.author %> 6 | <%= link_to_if_authorized image_tag('delete.png'), 7 | { :controller => 'articles', :action => 'destroy_comment', :id => @article.id, :comment_id => comment.id }, 8 | :confirm => l(:text_are_you_sure), 9 | :method => :post, :title => l(:button_delete) %> 10 |
11 | <%= textilizable(comment.comments) %> 12 | <% end %> 13 |