├── .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 | 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 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <% show_diff = @article.versions.size > 1 %> 16 | <% line_num = 1 %> 17 | <% @article.versions.reverse.each do |ver| %> 18 | "> 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | <% line_num += 1 %> 27 | <% end %> 28 | 29 |
<%= l(:field_version) %><%= l(:field_updated_at) %><%= l(:field_article_updater) %><%= l(:field_version_comments) %>
<%=h @article.version == ver.version ? l(:text_current_version) : link_to((ver.version), {:action => 'version', :kb_article_id => @article.id, :version => ver.version}) %><%= 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) %><%= radio_button_tag('version_from', ver.version, (line_num==2), :id => "cbto-#{line_num}") if show_diff && (line_num > 1) %><%= format_time(ver.updated_at) %><%= ver.updater ? link_to_user(ver.updater) : link_to_user(ver.author) %><%=h ver.version_comments %>
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 | 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 | 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 |
2 | 3 | 4 | 5 | <% if redmine_knowledgebase_settings_value(:show_thumbnails_for_articles) %> 6 | 7 | <% end %> 8 | 9 | 10 | <% if not @category and redmine_knowledgebase_settings_value(:show_breadcrumbs_for_article_lists) %> 11 | 12 | <% end %> 13 | 14 | 15 | 16 | <% unless @author_id %><% end %> 17 | 18 | 19 | 20 | 21 | 22 | <% articles.each do |article| %> 23 | 24 | 25 | <% if redmine_knowledgebase_settings_value(:show_thumbnails_for_articles) %> 26 | 29 | <% end %> 30 | 31 | 43 | 44 | <% if not @category and redmine_knowledgebase_settings_value(:show_breadcrumbs_for_article_lists) %> 45 | 48 | <% end %> 49 | 50 | 51 | 52 | <% unless @author_id %> 53 | 59 | <% end %> 60 | 61 | 62 | 63 | 64 | <% end %> 65 | 66 |
<%= "Thumbnail" %><%= sortable "title" %><%= "Category" %><%= "Rating" %><%= sortable "author_id", "Author" %><%= sortable "created_at", "Created" %><%= sortable "updated_at", "Updated" %>
27 | <%= render :partial => "articles/thumbnail", :locals => { :article => article, :imgclass => 'thumbnail-table', :project_id => @project } %> 28 | 32 | <%= link_to article.title, { :controller => 'articles', 33 | :action => 'show', 34 | :id => article.id, 35 | :project_id => @project} %> 36 | <% unless redmine_knowledgebase_settings_value(:disable_article_summaries) %> 37 |
38 |
39 | <%= article.summary %> 40 |
41 | <% end %> 42 |
46 | <%= render :partial => "articles/breadcrumb", :locals => { :article => article, :project => @project } %> 47 | <% rating = article.rating_average.to_i %><%= rating != 0 ? "#{rating} / 5" : "-" %> 54 | <%= link_to article.author.name, { :controller => 'articles', 55 | :action => 'authored', 56 | :author_id => article.author.id, 57 | :project_id => @project} %> 58 | <%= time_ago_in_words article.created_at %> ago<%= time_ago_in_words article.updated_at %> ago
67 |
68 | 69 | -------------------------------------------------------------------------------- /app/views/articles/_list_tiled.html.erb: -------------------------------------------------------------------------------- 1 |
2 | 3 | <%= render :partial => 'articles/sortbar', :locals => { :articles => articles } %> 4 | 5 |
6 | <%= render :partial => 'articles/list_articles', :locals => { :articles => articles, :project_id => @project } %> 7 |
8 |
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 | 4 | 5 | 6 | 7 |
Sort by:<%= sortable "title" %><%= sortable "updated_at", "Updated" %>
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 | <%= pagination_links_full @article_pages, @article_count %> 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 |
<%= l(:label_summary) %> 3 | <%= textilizable @summary, :object => @article %> 4 |
5 | <% end %> 6 | 7 | <% if @content %> 8 |
<%= l(:label_content) %> 9 | <%= textilizable @content, :object => @article %> 10 |
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 |
2 | <% @comments.each do |comment| %> 3 |

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 |
-------------------------------------------------------------------------------- /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 | 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 | 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 | 14 | 15 | <% content_for :sidebar do %> 16 |

<%= l(:title_edit_article) %>

17 | 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 | 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 |
2 | 3 | 4 | 5 | <% cats = @categories %> 6 | <% cats = cats.sort_by(&:title) if sort_categories? %> 7 | <% cats.each do |category| %> 8 | <%= render :partial => "categories/tree_row", :locals => { :category => category } %> 9 | <% end %> 10 | 11 |
12 |
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 | 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 | <%= pagination_links_full @article_pages, @article_count %> 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 | 19 | 20 |

<%= @category.title %>

21 | 22 | <% content_for :sidebar do %> 23 | 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 |
<%= l(:label_subcategories) %>
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 | <%= pagination_links_full @article_pages, @article_count %> 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]

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 | 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 | 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 | --------------------------------------------------------------------------------