Merge branch 'ticket/master/30-upstream-code-review-cherry-pick' into ticket/master/30-upstream-code-review
This commit is contained in:
commit
8e60c5bf1c
|
@ -1,4 +1,5 @@
|
|||
/config/additional_environment.rb
|
||||
/config/configuration.yml
|
||||
/config/database.yml
|
||||
/config/email.yml
|
||||
/config/initializers/session_store.rb
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
syntax: glob
|
||||
|
||||
config/additional_environment.rb
|
||||
config/configuration.yml
|
||||
config/database.yml
|
||||
config/email.yml
|
||||
config/initializers/session_store.rb
|
||||
|
|
|
@ -203,13 +203,25 @@ class AccountController < ApplicationController
|
|||
self.logged_user = user
|
||||
# generate a key and set cookie if autologin
|
||||
if params[:autologin] && Setting.autologin?
|
||||
token = Token.create(:user => user, :action => 'autologin')
|
||||
cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now }
|
||||
set_autologin_cookie(user)
|
||||
end
|
||||
call_hook(:controller_account_success_authentication_after, {:user => user })
|
||||
redirect_back_or_default :controller => 'my', :action => 'page'
|
||||
end
|
||||
|
||||
def set_autologin_cookie(user)
|
||||
token = Token.create(:user => user, :action => 'autologin')
|
||||
cookie_name = Redmine::Configuration['autologin_cookie_name'] || 'autologin'
|
||||
cookie_options = {
|
||||
:value => token.value,
|
||||
:expires => 1.year.from_now,
|
||||
:path => (Redmine::Configuration['autologin_cookie_path'] || '/'),
|
||||
:secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false),
|
||||
:httponly => true
|
||||
}
|
||||
cookies[cookie_name] = cookie_options
|
||||
end
|
||||
|
||||
# Onthefly creation failed, display the registration form to fill/fix attributes
|
||||
def onthefly_creation_failed(user, auth_source_options = { })
|
||||
@user = user
|
||||
|
|
|
@ -28,6 +28,7 @@ class IssueRelationsController < ApplicationController
|
|||
respond_to do |format|
|
||||
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
|
||||
format.js do
|
||||
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
|
||||
render :update do |page|
|
||||
page.replace_html "relations", :partial => 'issues/relations'
|
||||
if @relation.errors.empty?
|
||||
|
@ -47,7 +48,10 @@ class IssueRelationsController < ApplicationController
|
|||
end
|
||||
respond_to do |format|
|
||||
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
|
||||
format.js { render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} }
|
||||
format.js {
|
||||
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
|
||||
render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -108,6 +108,7 @@ class IssuesController < ApplicationController
|
|||
@journals.reverse! if User.current.wants_comments_in_reverse_order?
|
||||
@changesets = @issue.changesets.visible.all
|
||||
@changesets.reverse! if User.current.wants_comments_in_reverse_order?
|
||||
@relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
|
||||
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
|
||||
@edit_allowed = User.current.allowed_to?(:edit_issues, @project)
|
||||
@priorities = IssuePriority.all
|
||||
|
|
|
@ -94,6 +94,7 @@ class RepositoriesController < ApplicationController
|
|||
(show_error_not_found; return) unless @entry
|
||||
@changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i)
|
||||
@properties = @repository.properties(@path, @rev)
|
||||
@changeset = @repository.find_changeset_by_name(@rev)
|
||||
end
|
||||
|
||||
def revisions
|
||||
|
@ -127,6 +128,7 @@ class RepositoriesController < ApplicationController
|
|||
else
|
||||
# Prevent empty lines when displaying a file with Windows style eol
|
||||
@content.gsub!("\r\n", "\n")
|
||||
@changeset = @repository.find_changeset_by_name(@rev)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -136,6 +138,7 @@ class RepositoriesController < ApplicationController
|
|||
|
||||
@annotate = @repository.scm.annotate(@path, @rev)
|
||||
(render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty?
|
||||
@changeset = @repository.find_changeset_by_name(@rev)
|
||||
end
|
||||
|
||||
def revision
|
||||
|
|
|
@ -110,6 +110,20 @@ module ApplicationHelper
|
|||
:title => l(:label_revision_id, format_revision(revision)))
|
||||
end
|
||||
|
||||
# Generates a link to a message
|
||||
def link_to_message(message, options={}, html_options = nil)
|
||||
link_to(
|
||||
h(truncate(message.subject, :length => 60)),
|
||||
{ :controller => 'messages', :action => 'show',
|
||||
:board_id => message.board_id,
|
||||
:id => message.root,
|
||||
:r => (message.parent_id && message.id),
|
||||
:anchor => (message.parent_id ? "message-#{message.id}" : nil)
|
||||
}.merge(options),
|
||||
html_options
|
||||
)
|
||||
end
|
||||
|
||||
# Generates a link to a project if active
|
||||
# Examples:
|
||||
#
|
||||
|
@ -588,16 +602,26 @@ module ApplicationHelper
|
|||
# source:some/file#L120 -> Link to line 120 of the file
|
||||
# source:some/file@52#L120 -> Link to line 120 of the file's revision 52
|
||||
# export:some/file -> Force the download of the file
|
||||
# Forum messages:
|
||||
# Forum messages:
|
||||
# message#1218 -> Link to message with id 1218
|
||||
#
|
||||
# Links can refer other objects from other projects, using project identifier:
|
||||
# identifier:r52
|
||||
# identifier:document:"Some document"
|
||||
# identifier:version:1.0.0
|
||||
# identifier:source:some/file
|
||||
def parse_redmine_links(text, project, obj, attr, only_path, options)
|
||||
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m|
|
||||
leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8
|
||||
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-]+):)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m|
|
||||
leading, esc, project_prefix, project_identifier, prefix, sep, identifier = $1, $2, $3, $4, $5, $7 || $9, $8 || $10
|
||||
link = nil
|
||||
if project_identifier
|
||||
project = Project.visible.find_by_identifier(project_identifier)
|
||||
end
|
||||
if esc.nil?
|
||||
if prefix.nil? && sep == 'r'
|
||||
if project && (changeset = project.changesets.find_by_revision(identifier))
|
||||
link = link_to("r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision},
|
||||
# project.changesets.visible raises an SQL error because of a double join on repositories
|
||||
if project && project.repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(project.repository.id, identifier))
|
||||
link = link_to("#{project_prefix}r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision},
|
||||
:class => 'changeset',
|
||||
:title => truncate_single_line(changeset.comments, :length => 100))
|
||||
end
|
||||
|
@ -611,24 +635,18 @@ module ApplicationHelper
|
|||
:title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
|
||||
end
|
||||
when 'document'
|
||||
if document = Document.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current))
|
||||
if document = Document.visible.find_by_id(oid)
|
||||
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
||||
:class => 'document'
|
||||
end
|
||||
when 'version'
|
||||
if version = Version.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current))
|
||||
if version = Version.visible.find_by_id(oid)
|
||||
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
||||
:class => 'version'
|
||||
end
|
||||
when 'message'
|
||||
if message = Message.find_by_id(oid, :include => [:parent, {:board => :project}], :conditions => Project.visible_by(User.current))
|
||||
link = link_to h(truncate(message.subject, :length => 60)), {:only_path => only_path,
|
||||
:controller => 'messages',
|
||||
:action => 'show',
|
||||
:board_id => message.board,
|
||||
:id => message.root,
|
||||
:anchor => (message.parent ? "message-#{message.id}" : nil)},
|
||||
:class => 'message'
|
||||
if message = Message.visible.find_by_id(oid, :include => :parent)
|
||||
link = link_to_message(message, {:only_path => only_path}, :class => 'message')
|
||||
end
|
||||
when 'project'
|
||||
if p = Project.visible.find_by_id(oid)
|
||||
|
@ -640,26 +658,26 @@ module ApplicationHelper
|
|||
name = identifier.gsub(%r{^"(.*)"$}, "\\1")
|
||||
case prefix
|
||||
when 'document'
|
||||
if project && document = project.documents.find_by_title(name)
|
||||
if project && document = project.documents.visible.find_by_title(name)
|
||||
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
||||
:class => 'document'
|
||||
end
|
||||
when 'version'
|
||||
if project && version = project.versions.find_by_name(name)
|
||||
if project && version = project.versions.visible.find_by_name(name)
|
||||
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
||||
:class => 'version'
|
||||
end
|
||||
when 'commit'
|
||||
if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"]))
|
||||
link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier},
|
||||
if project && project.repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", project.repository.id, "#{name}%"]))
|
||||
link = link_to h("#{project_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier},
|
||||
:class => 'changeset',
|
||||
:title => truncate_single_line(changeset.comments, :length => 100)
|
||||
end
|
||||
when 'source', 'export'
|
||||
if project && project.repository
|
||||
if project && project.repository && User.current.allowed_to?(:browse_repository, project)
|
||||
name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$}
|
||||
path, rev, anchor = $1, $3, $5
|
||||
link = link_to h("#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project,
|
||||
link = link_to h("#{project_prefix}#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project,
|
||||
:path => to_path_param(path),
|
||||
:rev => rev,
|
||||
:anchor => anchor,
|
||||
|
@ -679,7 +697,7 @@ module ApplicationHelper
|
|||
end
|
||||
end
|
||||
end
|
||||
leading + (link || "#{prefix}#{sep}#{identifier}")
|
||||
leading + (link || "#{project_prefix}#{prefix}#{sep}#{identifier}")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -16,14 +16,4 @@
|
|||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
module MessagesHelper
|
||||
|
||||
def link_to_message(message)
|
||||
return '' unless message
|
||||
link_to h(truncate(message.subject, :length => 60)), :controller => 'messages',
|
||||
:action => 'show',
|
||||
:board_id => message.board_id,
|
||||
:id => message.root,
|
||||
:r => (message.parent_id && message.id),
|
||||
:anchor => (message.parent_id ? "message-#{message.id}" : nil)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -43,7 +43,7 @@ class Attachment < ActiveRecord::Base
|
|||
"LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"}
|
||||
|
||||
cattr_accessor :storage_path
|
||||
@@storage_path = "#{RAILS_ROOT}/files"
|
||||
@@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files"
|
||||
|
||||
def validate
|
||||
if self.filesize > Setting.attachment_max_size.to_i.kilobytes
|
||||
|
|
|
@ -29,6 +29,9 @@ class Document < ActiveRecord::Base
|
|||
validates_presence_of :project, :title, :category
|
||||
validates_length_of :title, :maximum => 60
|
||||
|
||||
named_scope :visible, lambda {|*args| { :include => :project,
|
||||
:conditions => Project.allowed_to_condition(args.first || User.current, :view_documents) } }
|
||||
|
||||
def visible?(user=User.current)
|
||||
!user.nil? && user.allowed_to?(:view_documents, project)
|
||||
end
|
||||
|
|
|
@ -34,7 +34,7 @@ class Issue < ActiveRecord::Base
|
|||
has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all
|
||||
has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all
|
||||
|
||||
acts_as_nested_set :scope => 'root_id'
|
||||
acts_as_nested_set :scope => 'root_id', :dependent => :destroy
|
||||
acts_as_attachable :after_remove => :attachment_removed
|
||||
acts_as_customizable
|
||||
acts_as_watchable
|
||||
|
@ -89,7 +89,6 @@ class Issue < ActiveRecord::Base
|
|||
before_create :default_assign
|
||||
before_save :close_duplicates, :update_done_ratio_from_issue_status
|
||||
after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :create_journal
|
||||
after_destroy :destroy_children
|
||||
after_destroy :update_parent_attributes
|
||||
|
||||
# Returns true if usr or current user is allowed to view the issue
|
||||
|
@ -758,14 +757,6 @@ class Issue < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
def destroy_children
|
||||
unless leaf?
|
||||
children.each do |child|
|
||||
child.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Update issues so their versions are not pointing to a
|
||||
# fixed_version that is not shared with the issue's project
|
||||
def self.update_versions(conditions=nil)
|
||||
|
|
|
@ -296,7 +296,7 @@ class Mailer < ActionMailer::Base
|
|||
if raise_errors
|
||||
raise e
|
||||
elsif mylogger
|
||||
mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/email.yml."
|
||||
mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/configuration.yml."
|
||||
end
|
||||
ensure
|
||||
self.class.raise_delivery_errors = raise_errors
|
||||
|
|
|
@ -42,6 +42,9 @@ class Message < ActiveRecord::Base
|
|||
|
||||
after_create :add_author_as_watcher
|
||||
|
||||
named_scope :visible, lambda {|*args| { :include => {:board => :project},
|
||||
:conditions => Project.allowed_to_condition(args.first || User.current, :view_messages) } }
|
||||
|
||||
def visible?(user=User.current)
|
||||
!user.nil? && user.allowed_to?(:view_messages, project)
|
||||
end
|
||||
|
|
|
@ -104,10 +104,11 @@ class Repository::Cvs < Repository
|
|||
scm.revisions('', fetch_since, nil, :with_paths => true) do |revision|
|
||||
# only add the change to the database, if it doen't exists. the cvs log
|
||||
# is not exclusive at all.
|
||||
unless changes.find_by_path_and_revision(scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision])
|
||||
revision
|
||||
tmp_time = revision.time.clone
|
||||
unless changes.find_by_path_and_revision(
|
||||
scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision])
|
||||
cs = changesets.find(:first, :conditions=>{
|
||||
:committed_on=>revision.time-time_delta..revision.time+time_delta,
|
||||
:committed_on=>tmp_time - time_delta .. tmp_time + time_delta,
|
||||
:committer=>revision.author,
|
||||
:comments=>Changeset.normalize_comments(revision.message)
|
||||
})
|
||||
|
@ -116,11 +117,14 @@ class Repository::Cvs < Repository
|
|||
unless cs
|
||||
# we use a temporaray revision number here (just for inserting)
|
||||
# later on, we calculate a continous positive number
|
||||
latest = changesets.find(:first, :order => 'id DESC')
|
||||
tmp_time2 = tmp_time.clone.gmtime
|
||||
branch = revision.paths[0][:branch]
|
||||
scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S")
|
||||
cs = Changeset.create(:repository => self,
|
||||
:revision => "_#{tmp_rev_num}",
|
||||
:revision => "tmp#{tmp_rev_num}",
|
||||
:scmid => scmid,
|
||||
:committer => revision.author,
|
||||
:committed_on => revision.time,
|
||||
:committed_on => tmp_time,
|
||||
:comments => revision.message)
|
||||
tmp_rev_num += 1
|
||||
end
|
||||
|
@ -144,10 +148,13 @@ class Repository::Cvs < Repository
|
|||
end
|
||||
|
||||
# Renumber new changesets in chronological order
|
||||
changesets.find(:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'").each do |changeset|
|
||||
changesets.find(
|
||||
:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE 'tmp%'"
|
||||
).each do |changeset|
|
||||
changeset.update_attribute :revision, next_revision_number
|
||||
end
|
||||
end # transaction
|
||||
@current_revision_number = nil
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -155,7 +162,9 @@ class Repository::Cvs < Repository
|
|||
# Returns the next revision number to assign to a CVS changeset
|
||||
def next_revision_number
|
||||
# Need to retrieve existing revision numbers to sort them as integers
|
||||
@current_revision_number ||= (connection.select_values("SELECT revision FROM #{Changeset.table_name} WHERE repository_id = #{id} AND revision NOT LIKE '_%'").collect(&:to_i).max || 0)
|
||||
sql = "SELECT revision FROM #{Changeset.table_name} "
|
||||
sql << "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'"
|
||||
@current_revision_number ||= (connection.select_values(sql).collect(&:to_i).max || 0)
|
||||
@current_revision_number += 1
|
||||
end
|
||||
end
|
||||
|
|
|
@ -260,12 +260,16 @@ class User < Principal
|
|||
notified_projects_ids
|
||||
end
|
||||
|
||||
# Only users that belong to more than 1 project can select projects for which they are notified
|
||||
def valid_notification_options
|
||||
self.class.valid_notification_options(self)
|
||||
end
|
||||
|
||||
# Only users that belong to more than 1 project can select projects for which they are notified
|
||||
def self.valid_notification_options(user=nil)
|
||||
# Note that @user.membership.size would fail since AR ignores
|
||||
# :include association option when doing a count
|
||||
if memberships.length < 1
|
||||
MAIL_NOTIFICATION_OPTIONS.delete_if {|option| option.first == 'selected'}
|
||||
if user.nil? || user.memberships.length < 1
|
||||
MAIL_NOTIFICATION_OPTIONS.reject {|option| option.first == 'selected'}
|
||||
else
|
||||
MAIL_NOTIFICATION_OPTIONS
|
||||
end
|
||||
|
@ -418,7 +422,12 @@ class User < Principal
|
|||
when 'all'
|
||||
true
|
||||
when 'selected'
|
||||
# Handled by the Project
|
||||
# user receives notifications for created/assigned issues on unselected projects
|
||||
if object.is_a?(Issue) && (object.author == self || object.assigned_to == self)
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
when 'none'
|
||||
false
|
||||
when 'only_my_events'
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
<p><strong><%=l(:label_related_issues)%></strong></p>
|
||||
|
||||
<% if @issue.relations.any? %>
|
||||
<% if @relations.present? %>
|
||||
<table style="width:100%">
|
||||
<% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %>
|
||||
<% @relations.each do |relation| %>
|
||||
<tr>
|
||||
<td><%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %>
|
||||
<%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %>
|
||||
|
|
|
@ -26,10 +26,10 @@ api.issue do
|
|||
render_api_issue_children(@issue, api) if include_in_api_response?('children')
|
||||
|
||||
api.array :relations do
|
||||
@issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation|
|
||||
@relations.each do |relation|
|
||||
api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay)
|
||||
end
|
||||
end if include_in_api_response?('relations')
|
||||
end if include_in_api_response?('relations') && @relations.present?
|
||||
|
||||
api.array :changesets do
|
||||
@issue.changesets.each do |changeset|
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<%= javascript_include_tag :defaults %>
|
||||
<%= heads_for_theme %>
|
||||
<%= heads_for_wiki_formatter %>
|
||||
<!--[if IE]>
|
||||
<!--[if IE 6]>
|
||||
<style type="text/css">
|
||||
* html body{ width: expression( document.documentElement.clientWidth < 900 ? '900px' : '100%' ); }
|
||||
body {behavior: url(<%= stylesheet_path "csshover.htc" %>);}
|
||||
|
|
|
@ -16,6 +16,6 @@ dirs.each do |dir|
|
|||
/ <%= link_to h(filename), :action => 'changes', :id => @project, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev %>
|
||||
<% end %>
|
||||
|
||||
<%= "@ #{h revision}" if revision %>
|
||||
<%= "@ #{h format_revision(@changeset)}" if @changeset %>
|
||||
|
||||
<% html_title(with_leading_slash(path)) -%>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<p><%= setting_check_box :plain_text_mail %></p>
|
||||
|
||||
<p><%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %></p>
|
||||
<p><%= setting_select(:default_notification_option, User.valid_notification_options.collect {|o| [l(o.last), o.first.to_s]}) %></p>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<h3><%= l(:label_history) %></h3>
|
||||
|
||||
<% form_tag({:action => "diff"}, :method => :get) do %>
|
||||
<%= hidden_field_tag('project_id', h(@project.to_param)) %>
|
||||
<table class="list wiki-page-versions">
|
||||
<thead><tr>
|
||||
<th>#</th>
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
# = Redmine configuration file
|
||||
#
|
||||
# Each environment has it's own configuration options. If you are only
|
||||
# running in production, only the production block needs to be configured.
|
||||
# Environment specific configuration options override the default ones.
|
||||
#
|
||||
# Note that this file needs to be a valid YAML file.
|
||||
#
|
||||
# == Outgoing email settings (email_delivery setting)
|
||||
#
|
||||
# === Common configurations
|
||||
#
|
||||
# ==== Sendmail command
|
||||
#
|
||||
# production:
|
||||
# email_delivery:
|
||||
# delivery_method: :sendmail
|
||||
#
|
||||
# ==== Simple SMTP server at localhost
|
||||
#
|
||||
# production:
|
||||
# email_delivery:
|
||||
# delivery_method: :smtp
|
||||
# smtp_settings:
|
||||
# address: "localhost"
|
||||
# port: 25
|
||||
#
|
||||
# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com
|
||||
#
|
||||
# production:
|
||||
# email_delivery:
|
||||
# delivery_method: :smtp
|
||||
# smtp_settings:
|
||||
# address: "example.com"
|
||||
# port: 25
|
||||
# authentication: :login
|
||||
# domain: 'foo.com'
|
||||
# user_name: 'myaccount'
|
||||
# password: 'password'
|
||||
#
|
||||
# ==== SMTP server at example.com using PLAIN authentication
|
||||
#
|
||||
# production:
|
||||
# email_delivery:
|
||||
# delivery_method: :smtp
|
||||
# smtp_settings:
|
||||
# address: "example.com"
|
||||
# port: 25
|
||||
# authentication: :plain
|
||||
# domain: 'example.com'
|
||||
# user_name: 'myaccount'
|
||||
# password: 'password'
|
||||
#
|
||||
# ==== SMTP server at using TLS (GMail)
|
||||
#
|
||||
# This requires some additional configuration. See the article at:
|
||||
# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/
|
||||
#
|
||||
# production:
|
||||
# email_delivery:
|
||||
# delivery_method: :smtp
|
||||
# smtp_settings:
|
||||
# tls: true
|
||||
# address: "smtp.gmail.com"
|
||||
# port: 587
|
||||
# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
|
||||
# authentication: :plain
|
||||
# user_name: "your_email@gmail.com"
|
||||
# password: "your_password"
|
||||
#
|
||||
#
|
||||
# === More configuration options
|
||||
#
|
||||
# See the "Configuration options" at the following website for a list of the
|
||||
# full options allowed:
|
||||
#
|
||||
# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer
|
||||
|
||||
|
||||
# default configuration options for all environments
|
||||
default:
|
||||
# Outgoing emails configuration (see examples above)
|
||||
email_delivery:
|
||||
delivery_method: :smtp
|
||||
smtp_settings:
|
||||
address: smtp.example.net
|
||||
port: 25
|
||||
domain: example.net
|
||||
authentication: :login
|
||||
user_name: "redmine@example.net"
|
||||
password: "redmine"
|
||||
|
||||
# Absolute path to the directory where attachments are stored.
|
||||
# The default is the 'files' directory in your Redmine instance.
|
||||
# Your Redmine instance needs to have write permission on this
|
||||
# directory.
|
||||
# Examples:
|
||||
# attachments_storage_path: /var/redmine/files
|
||||
# attachments_storage_path: D:/redmine/files
|
||||
attachments_storage_path:
|
||||
|
||||
# Configuration of the autologin cookie.
|
||||
# autologin_cookie_name: the name of the cookie (default: autologin)
|
||||
# autologin_cookie_path: the cookie path (default: /)
|
||||
# autologin_cookie_secure: true sets the cookie secure flag (default: false)
|
||||
autologin_cookie_name:
|
||||
autologin_cookie_path:
|
||||
autologin_cookie_secure:
|
||||
|
||||
# Configuration of SCM executable command.
|
||||
# Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe)
|
||||
# On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
|
||||
scm_subversion_command: svn # (default: svn)
|
||||
scm_mercurial_command: "\"C:\Program Files\TortoiseHg\hg.exe\"" # (default: hg)
|
||||
scm_git_command: /usr/local/bin/git # (default: git)
|
||||
scm_cvs_command: cvs # (default: cvs)
|
||||
scm_bazaar_command: bzr.exe # (default: bzr)
|
||||
scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
|
||||
|
||||
# specific configuration options for production environment
|
||||
# that overrides the default ones
|
||||
production:
|
||||
|
||||
# specific configuration options for development environment
|
||||
# that overrides the default ones
|
||||
development:
|
|
@ -36,4 +36,4 @@ test_pgsql:
|
|||
|
||||
test_sqlite3:
|
||||
adapter: sqlite3
|
||||
database: db/test.db
|
||||
database: db/test.sqlite3
|
||||
|
|
|
@ -1,87 +0,0 @@
|
|||
# = Outgoing email settings
|
||||
#
|
||||
# Each environment has it's own configuration options. If you are only
|
||||
# running in production, only the production block needs to be configured.
|
||||
#
|
||||
# == Common configurations
|
||||
#
|
||||
# === Sendmail command
|
||||
#
|
||||
# production:
|
||||
# delivery_method: :sendmail
|
||||
#
|
||||
# === Simple SMTP server at localhost
|
||||
#
|
||||
# production:
|
||||
# delivery_method: :smtp
|
||||
# smtp_settings:
|
||||
# address: "localhost"
|
||||
# port: 25
|
||||
#
|
||||
# === SMTP server at example.com using LOGIN authentication and checking HELO for foo.com
|
||||
#
|
||||
# production:
|
||||
# delivery_method: :smtp
|
||||
# smtp_settings:
|
||||
# address: "example.com"
|
||||
# port: 25
|
||||
# authentication: :login
|
||||
# domain: 'foo.com'
|
||||
# user_name: 'myaccount'
|
||||
# password: 'password'
|
||||
#
|
||||
# === SMTP server at example.com using PLAIN authentication
|
||||
#
|
||||
# production:
|
||||
# delivery_method: :smtp
|
||||
# smtp_settings:
|
||||
# address: "example.com"
|
||||
# port: 25
|
||||
# authentication: :plain
|
||||
# domain: 'example.com'
|
||||
# user_name: 'myaccount'
|
||||
# password: 'password'
|
||||
#
|
||||
# === SMTP server at using TLS (GMail)
|
||||
#
|
||||
# This requires some additional configuration. See the article at:
|
||||
# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/
|
||||
#
|
||||
# production:
|
||||
# delivery_method: :smtp
|
||||
# smtp_settings:
|
||||
# tls: true
|
||||
# address: "smtp.gmail.com"
|
||||
# port: 587
|
||||
# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
|
||||
# authentication: :plain
|
||||
# user_name: "your_email@gmail.com"
|
||||
# password: "your_password"
|
||||
#
|
||||
#
|
||||
# == More configuration options
|
||||
#
|
||||
# See the "Configuration options" at the following website for a list of the
|
||||
# full options allowed:
|
||||
#
|
||||
# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer
|
||||
|
||||
production:
|
||||
delivery_method: :smtp
|
||||
smtp_settings:
|
||||
address: smtp.example.net
|
||||
port: 25
|
||||
domain: example.net
|
||||
authentication: :login
|
||||
user_name: "redmine@example.net"
|
||||
password: "redmine"
|
||||
|
||||
development:
|
||||
delivery_method: :smtp
|
||||
smtp_settings:
|
||||
address: 127.0.0.1
|
||||
port: 25
|
||||
domain: example.net
|
||||
authentication: :login
|
||||
user_name: "redmine@example.net"
|
||||
password: "redmine"
|
|
@ -46,11 +46,12 @@ Rails::Initializer.run do |config|
|
|||
# config.active_record.schema_format = :ruby
|
||||
|
||||
# Deliveries are disabled by default. Do NOT modify this section.
|
||||
# Define your email configuration in email.yml instead.
|
||||
# Define your email configuration in configuration.yml instead.
|
||||
# It will automatically turn deliveries on
|
||||
config.action_mailer.perform_deliveries = false
|
||||
|
||||
config.gem 'rubytree', :lib => 'tree'
|
||||
config.gem 'coderay', :version => '~>0.9.7'
|
||||
|
||||
# Load any local configuration that is kept out of source control
|
||||
# (e.g. gems, patches).
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
# Loads action_mailer settings from email.yml
|
||||
# and turns deliveries on if configuration file is found
|
||||
|
||||
filename = File.join(File.dirname(__FILE__), '..', 'email.yml')
|
||||
if File.file?(filename)
|
||||
mailconfig = YAML::load_file(filename)
|
||||
|
||||
if mailconfig.is_a?(Hash) && mailconfig.has_key?(Rails.env)
|
||||
# Enable deliveries
|
||||
ActionMailer::Base.perform_deliveries = true
|
||||
|
||||
mailconfig[Rails.env].each do |k, v|
|
||||
v.symbolize_keys! if v.respond_to?(:symbolize_keys!)
|
||||
ActionMailer::Base.send("#{k}=", v)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,11 +1,12 @@
|
|||
bg:
|
||||
# Text direction: Left-to-Right (ltr) or Right-to-Left (rtl)
|
||||
direction: ltr
|
||||
date:
|
||||
formats:
|
||||
# Use the strftime parameters for formats.
|
||||
# When no format has been given, it uses default.
|
||||
# You can provide other formats here if you like!
|
||||
default: "%Y-%m-%d"
|
||||
default: "%d-%m-%Y"
|
||||
short: "%b %d"
|
||||
long: "%B %d, %Y"
|
||||
|
||||
|
@ -65,6 +66,7 @@ bg:
|
|||
other: "почти %{count} години"
|
||||
|
||||
number:
|
||||
# Default format for numbers
|
||||
format:
|
||||
separator: "."
|
||||
delimiter: ""
|
||||
|
@ -84,6 +86,7 @@ bg:
|
|||
gb: "GB"
|
||||
tb: "TB"
|
||||
|
||||
|
||||
# Used in array.to_sentence.
|
||||
support:
|
||||
array:
|
||||
|
@ -94,8 +97,8 @@ bg:
|
|||
errors:
|
||||
template:
|
||||
header:
|
||||
one: "1 error prohibited this %{model} from being saved"
|
||||
other: "%{count} errors prohibited this %{model} from being saved"
|
||||
one: "1 грешка попречи този %{model} да бъде записан"
|
||||
other: "%{count} грешки попречиха този %{model} да бъде записан"
|
||||
messages:
|
||||
inclusion: "не съществува в списъка"
|
||||
exclusion: "е запазено"
|
||||
|
@ -120,6 +123,7 @@ bg:
|
|||
greater_than_start_date: "трябва да е след началната дата"
|
||||
not_same_project: "не е от същия проект"
|
||||
circular_dependency: "Тази релация ще доведе до безкрайна зависимост"
|
||||
cant_link_an_issue_with_a_descendant: "Една задача не може да бъде свързвана към своя подзадача"
|
||||
|
||||
actionview_instancetag_blank_option: Изберете
|
||||
|
||||
|
@ -150,24 +154,61 @@ bg:
|
|||
notice_file_not_found: Несъществуваща или преместена страница.
|
||||
notice_locking_conflict: Друг потребител променя тези данни в момента.
|
||||
notice_not_authorized: Нямате право на достъп до тази страница.
|
||||
notice_not_authorized_archived_project: Проектът, който се опитвате да видите е архивиран.
|
||||
notice_email_sent: "Изпратен e-mail на %{value}"
|
||||
notice_email_error: "Грешка при изпращане на e-mail (%{value})"
|
||||
notice_feeds_access_key_reseted: Вашия ключ за RSS достъп беше променен.
|
||||
notice_api_access_key_reseted: Вашият API ключ за достъп беше изчистен.
|
||||
notice_failed_to_save_issues: "Неуспешен запис на %{count} задачи от %{total} избрани: %{ids}."
|
||||
notice_failed_to_save_members: "Невъзможност за запис на член(ове): %{errors}."
|
||||
notice_no_issue_selected: "Няма избрани задачи."
|
||||
notice_account_pending: "Профилът Ви е създаден и очаква одобрение от администратор."
|
||||
notice_default_data_loaded: Примерната информация е заредена успешно.
|
||||
notice_unable_delete_version: Невъзможност за изтриване на версия
|
||||
notice_unable_delete_time_entry: Невъзможност за изтриване на запис на time log.
|
||||
notice_issue_done_ratios_updated: Обновен процент на завършените задачи.
|
||||
notice_gantt_chart_truncated: Мрежовият график е съкратен, понеже броят на обектите, които могат да бъдат показани е твърде голям (%{max})
|
||||
|
||||
error_can_t_load_default_data: "Грешка при зареждане на примерната информация: %{value}"
|
||||
error_scm_not_found: Несъществуващ обект в хранилището.
|
||||
error_scm_command_failed: "Грешка при опит за комуникация с хранилище: %{value}"
|
||||
error_scm_annotate: "Обектът не съществува или не може да бъде анотиран."
|
||||
error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект'
|
||||
error_no_tracker_in_project: Няма асоциирани тракери с този проект. Проверете настройките на проекта.
|
||||
error_no_default_issue_status: Няма установено подразбиращо се състояние за задачите. Моля проверете вашата конфигурация (Вижте "Администрация -> Състояния на задачи").
|
||||
error_can_not_delete_custom_field: Невъзможност за изтриване на потребителско поле
|
||||
error_can_not_delete_tracker: Този тракер съдържа задачи и не може да бъде изтрит.
|
||||
error_can_not_remove_role: Тази роля се използва и не може да бъде изтрита.
|
||||
error_can_not_reopen_issue_on_closed_version: Задача, асоциирана със затворена версия не може да бъде отворена отново
|
||||
error_can_not_archive_project: Този проект не може да бъде архивиран
|
||||
error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен.
|
||||
error_workflow_copy_source: Моля изберете source тракер или роля
|
||||
error_workflow_copy_target: Моля изберете тракер(и) и роля (роли).
|
||||
error_unable_delete_issue_status: Невъзможност за изтриване на състояние на задача
|
||||
error_unable_to_connect: Невъзможност за свързване с (%{value})
|
||||
warning_attachments_not_saved: "%{count} файла не бяха записани."
|
||||
|
||||
mail_subject_lost_password: "Вашата парола (%{value})"
|
||||
mail_body_lost_password: 'За да смените паролата си, използвайте следния линк:'
|
||||
mail_subject_register: "Активация на профил (%{value})"
|
||||
mail_body_register: 'За да активирате профила си използвайте следния линк:'
|
||||
mail_body_account_information_external: "Можете да използвате вашия %{value} профил за вход."
|
||||
mail_body_account_information: Информацията за профила ви
|
||||
mail_subject_account_activation_request: "Заявка за активиране на профил в %{value}"
|
||||
mail_body_account_activation_request: "Има новорегистриран потребител (%{value}), очакващ вашето одобрение:"
|
||||
mail_subject_reminder: "%{count} задачи с краен срок с следващите %{days} дни"
|
||||
mail_body_reminder: "%{count} задачи, назначени на вас са с краен срок в следващите %{days} дни:"
|
||||
mail_subject_wiki_content_added: "Wiki страницата '%{id}' беше добавена"
|
||||
mail_body_wiki_content_added: Wiki страницата '%{id}' беше добавена от %{author}.
|
||||
mail_subject_wiki_content_updated: "Wiki страницата '%{id}' не беше обновена"
|
||||
mail_body_wiki_content_updated: Wiki страницата '%{id}' беше обновена от %{author}.
|
||||
|
||||
gui_validation_error: 1 грешка
|
||||
gui_validation_error_plural: "%{count} грешки"
|
||||
|
||||
field_name: Име
|
||||
field_description: Описание
|
||||
field_summary: Групиран изглед
|
||||
field_summary: Анотация
|
||||
field_is_required: Задължително
|
||||
field_firstname: Име
|
||||
field_lastname: Фамилия
|
||||
|
@ -200,6 +241,7 @@ bg:
|
|||
field_priority: Приоритет
|
||||
field_fixed_version: Планувана версия
|
||||
field_user: Потребител
|
||||
field_principal: Principal
|
||||
field_role: Роля
|
||||
field_homepage: Начална страница
|
||||
field_is_public: Публичен
|
||||
|
@ -225,6 +267,7 @@ bg:
|
|||
field_attr_lastname: Атрибут Фамилия (Lastname)
|
||||
field_attr_mail: Атрибут Email
|
||||
field_onthefly: Динамично създаване на потребител
|
||||
field_start_date: Начална дата
|
||||
field_done_ratio: % Прогрес
|
||||
field_auth_source: Начин на оторизация
|
||||
field_hide_mail: Скрий e-mail адреса ми
|
||||
|
@ -242,7 +285,24 @@ bg:
|
|||
field_assignable: Възможно е възлагане на задачи за тази роля
|
||||
field_redirect_existing_links: Пренасочване на съществуващи линкове
|
||||
field_estimated_hours: Изчислено време
|
||||
field_column_names: Колони
|
||||
field_time_entries: Log time
|
||||
field_time_zone: Часова зона
|
||||
field_searchable: С възможност за търсене
|
||||
field_default_value: Стойност по подразбиране
|
||||
field_comments_sorting: Сортиране на коментарите
|
||||
field_parent_title: Родителска страница
|
||||
field_editable: Editable
|
||||
field_watcher: Наблюдател
|
||||
field_identity_url: OpenID URL
|
||||
field_content: Съдържание
|
||||
field_group_by: Групиране на резултатите по
|
||||
field_sharing: Sharing
|
||||
field_parent_issue: Родителска задача
|
||||
field_member_of_group: Член на група
|
||||
field_assigned_to_role: Assignee's role
|
||||
field_text: Текстово поле
|
||||
field_visible: Видим
|
||||
|
||||
setting_app_title: Заглавие
|
||||
setting_app_subtitle: Описание
|
||||
|
@ -253,26 +313,132 @@ bg:
|
|||
setting_attachment_max_size: Максимална големина на прикачен файл
|
||||
setting_issues_export_limit: Максимален брой задачи за експорт
|
||||
setting_mail_from: E-mail адрес за емисии
|
||||
setting_bcc_recipients: Получатели на скрито копие (bcc)
|
||||
setting_plain_text_mail: само чист текст (без HTML)
|
||||
setting_host_name: Хост
|
||||
setting_text_formatting: Форматиране на текста
|
||||
setting_wiki_compression: Wiki компресиране на историята
|
||||
setting_feeds_limit: Максимален брой за емисии
|
||||
setting_default_projects_public: Новите проекти са публични по подразбиране
|
||||
setting_autofetch_changesets: Автоматично обработване на ревизиите
|
||||
setting_sys_api_enabled: Разрешаване на WS за управление
|
||||
setting_commit_ref_keywords: Отбелязващи ключови думи
|
||||
setting_commit_fix_keywords: Приключващи ключови думи
|
||||
setting_autologin: Автоматичен вход
|
||||
setting_date_format: Формат на датата
|
||||
setting_time_format: Формат на часа
|
||||
setting_cross_project_issue_relations: Релации на задачи между проекти
|
||||
setting_issue_list_default_columns: Показвани колони по подразбиране
|
||||
setting_repositories_encodings: Кодови таблици
|
||||
setting_commit_logs_encoding: Кодова таблица на съобщенията при поверяване
|
||||
setting_emails_header: Emails header
|
||||
setting_emails_footer: Подтекст за e-mail
|
||||
setting_protocol: Протокол
|
||||
setting_per_page_options: Опции за страниране
|
||||
setting_user_format: Потребителски формат
|
||||
setting_activity_days_default: Брой дни показвани на таб Дейност
|
||||
setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране
|
||||
setting_enabled_scm: Разрешена SCM
|
||||
setting_mail_handler_body_delimiters: Отрязване на e-mail-ите след един от тези редове
|
||||
setting_mail_handler_api_enabled: Разрешаване на WS за входящи e-mail-и
|
||||
setting_mail_handler_api_key: API ключ
|
||||
setting_sequential_project_identifiers: Генериране на последователни проектни идентификатори
|
||||
setting_gravatar_enabled: Използване на портребителски икони от Gravatar
|
||||
setting_gravatar_default: Подразбиращо се изображение от Gravatar
|
||||
setting_diff_max_lines_displayed: Максимален брой показани diff редове
|
||||
setting_file_max_size_displayed: Максимален размер на текстовите файлове, показвани inline
|
||||
setting_repository_log_display_limit: Максимален брой на показванете ревизии в лог файла
|
||||
setting_openid: Рарешаване на OpenID вход и регистрация
|
||||
setting_password_min_length: Минимална дължина на парола
|
||||
setting_new_project_user_role_id: Роля, давана на потребител, създаващ проекти, който не е администратор
|
||||
setting_default_projects_modules: Активирани модули по подразбиране за нов проект
|
||||
setting_issue_done_ratio: Изчисление на процента на готови задачи с
|
||||
setting_issue_done_ratio_issue_field: Използване на поле '% Прогрес'
|
||||
setting_issue_done_ratio_issue_status: Използване на състоянието на задачите
|
||||
setting_start_of_week: Първи ден на седмицата
|
||||
setting_rest_api_enabled: Разрешаване на REST web сървис
|
||||
setting_cache_formatted_text: Cache formatted text
|
||||
setting_default_notification_option: Подразбиращ се начин за известяване
|
||||
setting_commit_logtime_enabled: Разрешаване на отчитането на работното време
|
||||
setting_commit_logtime_activity_id: Дейност при отчитане на работното време
|
||||
setting_gantt_items_limit: Максимален брой обекти, които да се показват в мрежов график
|
||||
|
||||
permission_add_project: Създаване на проект
|
||||
permission_add_subprojects: Създаване на подпроекти
|
||||
permission_edit_project: Редактиране на проект
|
||||
permission_select_project_modules: Избор на проектни модули
|
||||
permission_manage_members: Управление на членовете (на екип)
|
||||
permission_manage_project_activities: Управление на дейностите на проекта
|
||||
permission_manage_versions: Управление на версиите
|
||||
permission_manage_categories: Управление на категориите
|
||||
permission_view_issues: Разглеждане на задачите
|
||||
permission_add_issues: Добавяне на задачи
|
||||
permission_edit_issues: Редактиране на задачи
|
||||
permission_manage_issue_relations: Управление на връзките между задачите
|
||||
permission_add_issue_notes: Добаване на бележки
|
||||
permission_edit_issue_notes: Редактиране на бележки
|
||||
permission_edit_own_issue_notes: Редактиране на собствени бележки
|
||||
permission_move_issues: Преместване на задачи
|
||||
permission_delete_issues: Изтриване на задачи
|
||||
permission_manage_public_queries: Управление на публичните заявки
|
||||
permission_save_queries: Запис на запитвания (queries)
|
||||
permission_view_gantt: Разглеждане на мрежов график
|
||||
permission_view_calendar: Разглеждане на календари
|
||||
permission_view_issue_watchers: Разглеждане на списък с наблюдатели
|
||||
permission_add_issue_watchers: Добавяне на наблюдатели
|
||||
permission_delete_issue_watchers: Изтриване на наблюдатели
|
||||
permission_log_time: Log spent time
|
||||
permission_view_time_entries: Разглеждане на изразходваното време
|
||||
permission_edit_time_entries: Редактиране на time logs
|
||||
permission_edit_own_time_entries: Редактиране на собствените time logs
|
||||
permission_manage_news: Управление на новини
|
||||
permission_comment_news: Коментиране на новини
|
||||
permission_manage_documents: Управление на документи
|
||||
permission_view_documents: Разглеждане на документи
|
||||
permission_manage_files: Управление на файлове
|
||||
permission_view_files: Разглеждане на файлове
|
||||
permission_manage_wiki: Управление на wiki
|
||||
permission_rename_wiki_pages: Преименуване на wiki страници
|
||||
permission_delete_wiki_pages: Изтриване на wiki страници
|
||||
permission_view_wiki_pages: Разглеждане на wiki
|
||||
permission_view_wiki_edits: Разглеждане на wiki история
|
||||
permission_edit_wiki_pages: Редактиране на wiki страници
|
||||
permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове към wiki страници
|
||||
permission_protect_wiki_pages: Заключване на wiki страници
|
||||
permission_manage_repository: Управление на хранилища
|
||||
permission_browse_repository: Разглеждане на хранилища
|
||||
permission_view_changesets: Разглеждане на changesets
|
||||
permission_commit_access: Поверяване
|
||||
permission_manage_boards: Управление на boards
|
||||
permission_view_messages: Разглеждане на съобщения
|
||||
permission_add_messages: Публикуване на съобщения
|
||||
permission_edit_messages: Редактиране на съобщения
|
||||
permission_edit_own_messages: Редактиране на собствени съобщения
|
||||
permission_delete_messages: Изтриване на съобщения
|
||||
permission_delete_own_messages: Изтриване на собствени съобщения
|
||||
permission_export_wiki_pages: Експорт на wiki страници
|
||||
permission_manage_subtasks: Управление на подзадачите
|
||||
|
||||
project_module_issue_tracking: Тракинг
|
||||
project_module_time_tracking: Отделяне на време
|
||||
project_module_news: Новини
|
||||
project_module_documents: Документи
|
||||
project_module_files: Файлове
|
||||
project_module_wiki: Wiki
|
||||
project_module_repository: Хранилище
|
||||
project_module_boards: Форуми
|
||||
project_module_calendar: Календар
|
||||
project_module_gantt: Мрежов график
|
||||
|
||||
label_user: Потребител
|
||||
label_user_plural: Потребители
|
||||
label_user_new: Нов потребител
|
||||
label_user_anonymous: Анонимен
|
||||
label_project: Проект
|
||||
label_project_new: Нов проект
|
||||
label_project_plural: Проекти
|
||||
label_x_projects:
|
||||
zero: 0 проекти
|
||||
zero: 0 проекта
|
||||
one: 1 проект
|
||||
other: "%{count} проекта"
|
||||
label_project_all: Всички проекти
|
||||
|
@ -281,9 +447,13 @@ bg:
|
|||
label_issue_new: Нова задача
|
||||
label_issue_plural: Задачи
|
||||
label_issue_view_all: Всички задачи
|
||||
label_issues_by: "Задачи по %{value}"
|
||||
label_issue_added: Добавена задача
|
||||
label_issue_updated: Обновена задача
|
||||
label_document: Документ
|
||||
label_document_new: Нов документ
|
||||
label_document_plural: Документи
|
||||
label_document_added: Добавен документ
|
||||
label_role: Роля
|
||||
label_role_plural: Роли
|
||||
label_role_new: Нова роля
|
||||
|
@ -310,11 +480,13 @@ bg:
|
|||
label_information_plural: Информация
|
||||
label_please_login: Вход
|
||||
label_register: Регистрация
|
||||
label_login_with_open_id_option: или вход чрез OpenID
|
||||
label_password_lost: Забравена парола
|
||||
label_home: Начало
|
||||
label_my_page: Лична страница
|
||||
label_my_account: Профил
|
||||
label_my_projects: Проекти, в които участвам
|
||||
label_my_page_block: Блокове в личната страница
|
||||
label_administration: Администрация
|
||||
label_login: Вход
|
||||
label_logout: Изход
|
||||
|
@ -324,6 +496,8 @@ bg:
|
|||
label_last_login: Последно свързване
|
||||
label_registered_on: Регистрация
|
||||
label_activity: Дейност
|
||||
label_overall_activity: Цялостна дейност
|
||||
label_user_activity: "Активност на %{value}"
|
||||
label_new: Нов
|
||||
label_logged_as: Здравейте,
|
||||
label_environment: Среда
|
||||
|
@ -332,10 +506,13 @@ bg:
|
|||
label_auth_source_new: Нов начин на оторизация
|
||||
label_auth_source_plural: Начини на оторизация
|
||||
label_subproject_plural: Подпроекти
|
||||
label_subproject_new: Нов подпроект
|
||||
label_and_its_subprojects: "%{value} и неговите подпроекти"
|
||||
label_min_max_length: Минимална - максимална дължина
|
||||
label_list: Списък
|
||||
label_date: Дата
|
||||
label_integer: Целочислен
|
||||
label_float: Дробно
|
||||
label_boolean: Чекбокс
|
||||
label_string: Текст
|
||||
label_text: Дълъг текст
|
||||
|
@ -350,6 +527,7 @@ bg:
|
|||
label_attachment_new: Нов файл
|
||||
label_attachment_delete: Изтриване
|
||||
label_attachment_plural: Файлове
|
||||
label_file_added: Добавен файл
|
||||
label_report: Справка
|
||||
label_report_plural: Справки
|
||||
label_news: Новини
|
||||
|
@ -357,11 +535,13 @@ bg:
|
|||
label_news_plural: Новини
|
||||
label_news_latest: Последни новини
|
||||
label_news_view_all: Виж всички
|
||||
label_news_added: Добавена новина
|
||||
label_settings: Настройки
|
||||
label_overview: Общ изглед
|
||||
label_version: Версия
|
||||
label_version_new: Нова версия
|
||||
label_version_plural: Версии
|
||||
label_close_versions: Затваряне на завършените версии
|
||||
label_confirmation: Одобрение
|
||||
label_export_to: Експорт към
|
||||
label_read: Read...
|
||||
|
@ -388,6 +568,7 @@ bg:
|
|||
label_new_statuses_allowed: Позволени състояния
|
||||
label_all: всички
|
||||
label_none: никакви
|
||||
label_nobody: никой
|
||||
label_next: Следващ
|
||||
label_previous: Предишен
|
||||
label_used_by: Използва се от
|
||||
|
@ -419,9 +600,19 @@ bg:
|
|||
label_not_equals: не е
|
||||
label_in_less_than: след по-малко от
|
||||
label_in_more_than: след повече от
|
||||
label_greater_or_equal: ">="
|
||||
label_less_or_equal: <=
|
||||
label_in: в следващите
|
||||
label_today: днес
|
||||
label_all_time: всички
|
||||
label_yesterday: вчера
|
||||
label_this_week: тази седмица
|
||||
label_last_week: последната седмица
|
||||
label_last_n_days: "последните %{count} дни"
|
||||
label_this_month: текущия месец
|
||||
label_last_month: последния месец
|
||||
label_this_year: текущата година
|
||||
label_date_range: Период
|
||||
label_less_than_ago: преди по-малко от
|
||||
label_more_than_ago: преди повече от
|
||||
label_ago: преди
|
||||
|
@ -429,17 +620,25 @@ bg:
|
|||
label_not_contains: не съдържа
|
||||
label_day_plural: дни
|
||||
label_repository: Хранилище
|
||||
label_repository_plural: Хранилища
|
||||
label_browse: Разглеждане
|
||||
label_modification: "%{count} промяна"
|
||||
label_modification_plural: "%{count} промени"
|
||||
label_branch: работен вариант
|
||||
label_tag: Версия
|
||||
label_revision: Ревизия
|
||||
label_revision_plural: Ревизии
|
||||
label_revision_id: Ревизия %{value}
|
||||
label_associated_revisions: Асоциирани ревизии
|
||||
label_added: добавено
|
||||
label_modified: променено
|
||||
label_copied: копирано
|
||||
label_renamed: преименувано
|
||||
label_deleted: изтрито
|
||||
label_latest_revision: Последна ревизия
|
||||
label_latest_revision_plural: Последни ревизии
|
||||
label_view_revisions: Виж ревизиите
|
||||
label_view_all_revisions: Разглеждане на всички ревизии
|
||||
label_max_size: Максимална големина
|
||||
label_sort_highest: Премести най-горе
|
||||
label_sort_higher: Премести по-горе
|
||||
|
@ -465,6 +664,7 @@ bg:
|
|||
label_changes_details: Подробни промени
|
||||
label_issue_tracking: Тракинг
|
||||
label_spent_time: Отделено време
|
||||
label_overall_spent_time: Общо употребено време
|
||||
label_f_hour: "%{value} час"
|
||||
label_f_hour_plural: "%{value} часа"
|
||||
label_time_tracking: Отделяне на време
|
||||
|
@ -486,6 +686,7 @@ bg:
|
|||
label_relation_delete: Изтриване на релация
|
||||
label_relates_to: свързана със
|
||||
label_duplicates: дублира
|
||||
label_duplicated_by: дублирана от
|
||||
label_blocks: блокира
|
||||
label_blocked_by: блокирана от
|
||||
label_precedes: предшества
|
||||
|
@ -501,10 +702,13 @@ bg:
|
|||
label_board: Форум
|
||||
label_board_new: Нов форум
|
||||
label_board_plural: Форуми
|
||||
label_board_locked: Заключена
|
||||
label_board_sticky: Sticky
|
||||
label_topic_plural: Теми
|
||||
label_message_plural: Съобщения
|
||||
label_message_last: Последно съобщение
|
||||
label_message_new: Нова тема
|
||||
label_message_posted: Добавено съобщение
|
||||
label_reply_plural: Отговори
|
||||
label_send_information: Изпращане на информацията до потребителя
|
||||
label_year: Година
|
||||
|
@ -515,11 +719,80 @@ bg:
|
|||
label_language_based: В зависимост от езика
|
||||
label_sort_by: "Сортиране по %{value}"
|
||||
label_send_test_email: Изпращане на тестов e-mail
|
||||
label_feeds_access_key: RSS access ключ
|
||||
label_missing_feeds_access_key: Липсващ RSS ключ за достъп
|
||||
label_feeds_access_key_created_on: "%{value} от създаването на RSS ключа"
|
||||
label_module_plural: Модули
|
||||
label_added_time_by: "Публикувана от %{author} преди %{age}"
|
||||
label_updated_time_by: "Обновена от %{author} преди %{age}"
|
||||
label_updated_time: "Обновена преди %{value}"
|
||||
label_jump_to_a_project: Проект...
|
||||
label_file_plural: Файлове
|
||||
label_changeset_plural: Ревизии
|
||||
label_default_columns: По подразбиране
|
||||
label_no_change_option: (Без промяна)
|
||||
label_bulk_edit_selected_issues: Редактиране на задачи
|
||||
label_theme: Тема
|
||||
label_default: По подразбиране
|
||||
label_search_titles_only: Само в заглавията
|
||||
label_user_mail_option_all: "За всяко събитие в проектите, в които участвам"
|
||||
label_user_mail_option_selected: "За всички събития само в избраните проекти..."
|
||||
label_user_mail_option_none: "Само за наблюдавани или в които участвам (автор или назначени на мен)"
|
||||
label_user_mail_option_only_my_events: Само за неща, в които съм включен/а
|
||||
label_user_mail_option_only_assigned: Само за неща, назначени на мен
|
||||
label_user_mail_option_only_owner: Само за неща, на които аз съм собственик
|
||||
label_user_mail_no_self_notified: "Не искам известия за извършени от мен промени"
|
||||
label_registration_activation_by_email: активиране на профила по email
|
||||
label_registration_manual_activation: ръчно активиране
|
||||
label_registration_automatic_activation: автоматично активиране
|
||||
label_display_per_page: "На страница по: %{value}"
|
||||
label_age: Възраст
|
||||
label_change_properties: Промяна на настройки
|
||||
label_general: Основни
|
||||
label_more: Още
|
||||
label_scm: SCM (Система за контрол на версиите)
|
||||
label_plugins: Плъгини
|
||||
label_ldap_authentication: LDAP оторизация
|
||||
label_downloads_abbr: D/L
|
||||
label_optional_description: Незадължително описание
|
||||
label_add_another_file: Добавяне на друг файл
|
||||
label_preferences: Предпочитания
|
||||
label_chronological_order: Хронологичен ред
|
||||
label_reverse_chronological_order: Обратен хронологичен ред
|
||||
label_planning: Планиране
|
||||
label_incoming_emails: Входящи e-mail-и
|
||||
label_generate_key: Генериране на ключ
|
||||
label_issue_watchers: Наблюдатели
|
||||
label_example: Пример
|
||||
label_display: Display
|
||||
label_sort: Сортиране
|
||||
label_ascending: Нарастващ
|
||||
label_descending: Намаляващ
|
||||
label_date_from_to: От %{start} до %{end}
|
||||
label_wiki_content_added: Wiki страница беше добавена
|
||||
label_wiki_content_updated: Wiki страница беше обновена
|
||||
label_group: Група
|
||||
label_group_plural: Групи
|
||||
label_group_new: Нова група
|
||||
label_time_entry_plural: Използвано време
|
||||
label_version_sharing_none: Не споделен
|
||||
label_version_sharing_descendants: С подпроекти
|
||||
label_version_sharing_hierarchy: С проектна йерархия
|
||||
label_version_sharing_tree: С дърво на проектите
|
||||
label_version_sharing_system: С всички проекти
|
||||
label_update_issue_done_ratios: Обновяване на процента на завършените задачи
|
||||
label_copy_source: Източник
|
||||
label_copy_target: Цел
|
||||
label_copy_same_as_target: Също като целта
|
||||
label_display_used_statuses_only: Показване само на състоянията, използвани от този тракер
|
||||
label_api_access_key: API ключ за достъп
|
||||
label_missing_api_access_key: Липсващ API ключ
|
||||
label_api_access_key_created_on: API ключ за достъп е създаден преди %{value}
|
||||
label_profile: Профил
|
||||
label_subtask_plural: Подзадачи
|
||||
label_project_copy_notifications: Изпращане на Send e-mail известия по време на копирането на проекта
|
||||
label_principal_search: "Търсене на потребител или група:"
|
||||
label_user_search: "Търсене на потребител:"
|
||||
|
||||
button_login: Вход
|
||||
button_submit: Прикачване
|
||||
|
@ -528,8 +801,10 @@ bg:
|
|||
button_uncheck_all: Изчистване на всички
|
||||
button_delete: Изтриване
|
||||
button_create: Създаване
|
||||
button_create_and_continue: Създаване и продължаване
|
||||
button_test: Тест
|
||||
button_edit: Редакция
|
||||
button_edit_associated_wikipage: "Редактиране на асоциираната Wiki страница: %{page_title}"
|
||||
button_add: Добавяне
|
||||
button_change: Промяна
|
||||
button_apply: Приложи
|
||||
|
@ -540,6 +815,7 @@ bg:
|
|||
button_list: Списък
|
||||
button_view: Преглед
|
||||
button_move: Преместване
|
||||
button_move_and_follow: Преместване и продължаване
|
||||
button_back: Назад
|
||||
button_cancel: Отказ
|
||||
button_activate: Активация
|
||||
|
@ -553,26 +829,49 @@ bg:
|
|||
button_unarchive: Разархивиране
|
||||
button_reset: Генериране наново
|
||||
button_rename: Преименуване
|
||||
button_change_password: Промяна на парола
|
||||
button_copy: Копиране
|
||||
button_copy_and_follow: Копиране и продължаване
|
||||
button_annotate: Анотация
|
||||
button_update: Обновяване
|
||||
button_configure: Конфигуриране
|
||||
button_quote: Цитат
|
||||
button_duplicate: Дублиране
|
||||
button_show: Показване
|
||||
|
||||
status_active: активен
|
||||
status_registered: регистриран
|
||||
status_locked: заключен
|
||||
|
||||
version_status_open: отворена
|
||||
version_status_locked: заключена
|
||||
version_status_closed: затворена
|
||||
|
||||
field_active: Активен
|
||||
|
||||
text_select_mail_notifications: Изберете събития за изпращане на e-mail.
|
||||
text_regexp_info: пр. ^[A-Z0-9]+$
|
||||
text_min_max_length_info: 0 - без ограничения
|
||||
text_project_destroy_confirmation: Сигурни ли сте, че искате да изтриете проекта и данните в него?
|
||||
text_subprojects_destroy_warning: "Неговите подпроекти: %{value} също ще бъдат изтрити."
|
||||
text_workflow_edit: Изберете роля и тракер за да редактирате работния процес
|
||||
text_are_you_sure: Сигурни ли сте?
|
||||
text_tip_task_begin_day: задача започваща този ден
|
||||
text_tip_task_end_day: задача завършваща този ден
|
||||
text_tip_task_begin_end_day: задача започваща и завършваща този ден
|
||||
text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи?
|
||||
text_journal_changed: "%{label} променен от %{old} на %{new}"
|
||||
text_journal_set_to: "%{label} установен на %{value}"
|
||||
text_journal_deleted: "%{label} изтрит (%{old})"
|
||||
text_journal_added: "Добавено %{label} %{value}"
|
||||
text_tip_issue_begin_day: задача, започваща този ден
|
||||
text_tip_issue_end_day: задача, завършваща този ден
|
||||
text_tip_issue_begin_end_day: задача, започваща и завършваща този ден
|
||||
text_project_identifier_info: 'Позволени са малки букви (a-z), цифри и тирета.<br />Невъзможна промяна след запис.'
|
||||
text_caracters_maximum: "До %{count} символа."
|
||||
text_caracters_minimum: "Минимум %{count} символа."
|
||||
text_length_between: "От %{min} до %{max} символа."
|
||||
text_tracker_no_workflow: Няма дефиниран работен процес за този тракер
|
||||
text_unallowed_characters: Непозволени символи
|
||||
text_comma_separated: Позволено е изброяване (с разделител запетая).
|
||||
text_line_separated: Позволени са много стойности (по едно на ред).
|
||||
text_issues_ref_in_commit_messages: Отбелязване и приключване на задачи от ревизии
|
||||
text_issue_added: "Публикувана е нова задача с номер %{id} (от %{author})."
|
||||
text_issue_updated: "Задача %{id} е обновена (от %{author})."
|
||||
|
@ -580,6 +879,35 @@ bg:
|
|||
text_issue_category_destroy_question: "Има задачи (%{count}) обвързани с тази категория. Какво ще изберете?"
|
||||
text_issue_category_destroy_assignments: Премахване на връзките с категорията
|
||||
text_issue_category_reassign_to: Преобвързване с категория
|
||||
text_user_mail_option: "За неизбраните проекти, ще получавате известия само за наблюдавани дейности или в които участвате (т.е. автор или назначени на мен)."
|
||||
text_no_configuration_data: "Все още не са конфигурирани Роли, тракери, състояния на задачи и работен процес.\nСтрого се препоръчва зареждането на примерната информация. Веднъж заредена ще имате възможност да я редактирате."
|
||||
text_load_default_configuration: Зареждане на примерна информация
|
||||
text_status_changed_by_changeset: "Приложено с ревизия %{value}."
|
||||
text_time_logged_by_changeset: Приложено в ревизия %{value}.
|
||||
text_issues_destroy_confirmation: 'Сигурни ли сте, че искате да изтриете избраните задачи?'
|
||||
text_select_project_modules: 'Изберете активните модули за този проект:'
|
||||
text_default_administrator_account_changed: Сменен фабричния администраторски профил
|
||||
text_file_repository_writable: Възможност за писане в хранилището с файлове
|
||||
text_plugin_assets_writable: Папката на приставките е разрешена за запис
|
||||
text_rmagick_available: Наличен RMagick (по избор)
|
||||
text_destroy_time_entries_question: "%{hours} часа са отделени на задачите, които искате да изтриете. Какво избирате?"
|
||||
text_destroy_time_entries: Изтриване на отделеното време
|
||||
text_assign_time_entries_to_project: Прехвърляне на отделеното време към проект
|
||||
text_reassign_time_entries: 'Прехвърляне на отделеното време към задача:'
|
||||
text_user_wrote: "%{value} написа:"
|
||||
text_enumeration_destroy_question: "%{count} обекта са свързани с тази стойност."
|
||||
text_enumeration_category_reassign_to: 'Пресвържете ги към тази стойност:'
|
||||
text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и известията не са разрешени.\nКонфигурирайте вашия SMTP сървър в config/configuration.yml и рестартирайте Redmine, за да ги разрешите."
|
||||
text_repository_usernames_mapping: "Изберете или променете потребителите в Redmine, съответстващи на потребителите в дневника на хранилището (repository).\nПотребителите с еднакви имена в Redmine и хранилищата се съвместяват автоматично."
|
||||
text_diff_truncated: '... Този diff не е пълен, понеже е надхвърля максималния размер, който може да бъде показан.'
|
||||
text_custom_field_possible_values_info: 'Една стойност на ред'
|
||||
text_wiki_page_destroy_question: Тази страница има %{descendants} страници деца и descendant(s). Какво желаете да правите?
|
||||
text_wiki_page_nullify_children: Запазване на тези страници като коренни страници
|
||||
text_wiki_page_destroy_children: Изтриване на страниците деца и всички техни descendants
|
||||
text_wiki_page_reassign_children: Преназначаване на страниците деца на тази родителска страница
|
||||
text_own_membership_delete_confirmation: "Вие сте на път да премахнете някои или всички ваши разрешения и е възможно след това да не можете да редактирате този проект.\nСигурен ли сте, че искате да продължите?"
|
||||
text_zoom_in: Увеличаване
|
||||
text_zoom_out: Намаляване
|
||||
|
||||
default_role_manager: Мениджър
|
||||
default_role_developer: Разработчик
|
||||
|
@ -606,329 +934,5 @@ bg:
|
|||
enumeration_issue_priorities: Приоритети на задачи
|
||||
enumeration_doc_categories: Категории документи
|
||||
enumeration_activities: Дейности (time tracking)
|
||||
label_file_plural: Файлове
|
||||
label_changeset_plural: Ревизии
|
||||
field_column_names: Колони
|
||||
label_default_columns: По подразбиране
|
||||
setting_issue_list_default_columns: Показвани колони по подразбиране
|
||||
setting_repositories_encodings: Кодови таблици
|
||||
notice_no_issue_selected: "Няма избрани задачи."
|
||||
label_bulk_edit_selected_issues: Редактиране на задачи
|
||||
label_no_change_option: (Без промяна)
|
||||
notice_failed_to_save_issues: "Неуспешен запис на %{count} задачи от %{total} избрани: %{ids}."
|
||||
label_theme: Тема
|
||||
label_default: По подразбиране
|
||||
label_search_titles_only: Само в заглавията
|
||||
label_nobody: никой
|
||||
button_change_password: Промяна на парола
|
||||
text_user_mail_option: "За неизбраните проекти, ще получавате известия само за наблюдавани дейности или в които участвате (т.е. автор или назначени на мен)."
|
||||
label_user_mail_option_selected: "За всички събития само в избраните проекти..."
|
||||
label_user_mail_option_all: "За всяко събитие в проектите, в които участвам"
|
||||
label_user_mail_option_none: "Само за наблюдавани или в които участвам (автор или назначени на мен)"
|
||||
setting_emails_footer: Подтекст за e-mail
|
||||
label_float: Дробно
|
||||
button_copy: Копиране
|
||||
mail_body_account_information_external: "Можете да използвате вашия %{value} профил за вход."
|
||||
mail_body_account_information: Информацията за профила ви
|
||||
setting_protocol: Протокол
|
||||
label_user_mail_no_self_notified: "Не искам известия за извършени от мен промени"
|
||||
setting_time_format: Формат на часа
|
||||
label_registration_activation_by_email: активиране на профила по email
|
||||
mail_subject_account_activation_request: "Заявка за активиране на профил в %{value}"
|
||||
mail_body_account_activation_request: "Има новорегистриран потребител (%{value}), очакващ вашето одобрение:"
|
||||
label_registration_automatic_activation: автоматично активиране
|
||||
label_registration_manual_activation: ръчно активиране
|
||||
notice_account_pending: "Профилът Ви е създаден и очаква одобрение от администратор."
|
||||
field_time_zone: Часова зона
|
||||
text_caracters_minimum: "Минимум %{count} символа."
|
||||
setting_bcc_recipients: Получатели на скрито копие (bcc)
|
||||
button_annotate: Анотация
|
||||
label_issues_by: "Задачи по %{value}"
|
||||
field_searchable: С възможност за търсене
|
||||
label_display_per_page: "На страница по: %{value}"
|
||||
setting_per_page_options: Опции за страниране
|
||||
label_age: Възраст
|
||||
notice_default_data_loaded: Примерната информацията е успешно заредена.
|
||||
text_load_default_configuration: Зареждане на примерна информация
|
||||
text_no_configuration_data: "Все още не са конфигурирани Роли, тракери, състояния на задачи и работен процес.\nСтрого се препоръчва зареждането на примерната информация. Веднъж заредена ще имате възможност да я редактирате."
|
||||
error_can_t_load_default_data: "Грешка при зареждане на примерната информация: %{value}"
|
||||
button_update: Обновяване
|
||||
label_change_properties: Промяна на настройки
|
||||
label_general: Основни
|
||||
label_repository_plural: Хранилища
|
||||
label_associated_revisions: Асоциирани ревизии
|
||||
setting_user_format: Потребителски формат
|
||||
text_status_changed_by_changeset: "Приложено с ревизия %{value}."
|
||||
label_more: Още
|
||||
text_issues_destroy_confirmation: 'Сигурни ли сте, че искате да изтриете избраните задачи?'
|
||||
label_scm: SCM (Система за контрол на кода)
|
||||
text_select_project_modules: 'Изберете активните модули за този проект:'
|
||||
label_issue_added: Добавена задача
|
||||
label_issue_updated: Обновена задача
|
||||
label_document_added: Добавен документ
|
||||
label_message_posted: Добавено съобщение
|
||||
label_file_added: Добавен файл
|
||||
label_news_added: Добавена новина
|
||||
project_module_boards: Форуми
|
||||
project_module_issue_tracking: Тракинг
|
||||
project_module_wiki: Wiki
|
||||
project_module_files: Файлове
|
||||
project_module_documents: Документи
|
||||
project_module_repository: Хранилище
|
||||
project_module_news: Новини
|
||||
project_module_time_tracking: Отделяне на време
|
||||
text_file_repository_writable: Възможност за писане в хранилището с файлове
|
||||
text_default_administrator_account_changed: Сменен фабричния администраторски профил
|
||||
text_rmagick_available: Наличен RMagick (по избор)
|
||||
button_configure: Конфигуриране
|
||||
label_plugins: Плъгини
|
||||
label_ldap_authentication: LDAP оторизация
|
||||
label_downloads_abbr: D/L
|
||||
label_this_month: текущия месец
|
||||
label_last_n_days: "последните %{count} дни"
|
||||
label_all_time: всички
|
||||
label_this_year: текущата година
|
||||
label_date_range: Период
|
||||
label_last_week: последната седмица
|
||||
label_yesterday: вчера
|
||||
label_last_month: последния месец
|
||||
label_add_another_file: Добавяне на друг файл
|
||||
label_optional_description: Незадължително описание
|
||||
text_destroy_time_entries_question: "%{hours} часа са отделени на задачите, които искате да изтриете. Какво избирате?"
|
||||
error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект'
|
||||
text_assign_time_entries_to_project: Прехвърляне на отделеното време към проект
|
||||
text_destroy_time_entries: Изтриване на отделеното време
|
||||
text_reassign_time_entries: 'Прехвърляне на отделеното време към задача:'
|
||||
setting_activity_days_default: Брой дни показвани на таб Дейност
|
||||
label_chronological_order: Хронологичен ред
|
||||
field_comments_sorting: Сортиране на коментарите
|
||||
label_reverse_chronological_order: Обратен хронологичен ред
|
||||
label_preferences: Предпочитания
|
||||
setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране
|
||||
label_overall_activity: Цялостна дейност
|
||||
setting_default_projects_public: Новите проекти са публични по подразбиране
|
||||
error_scm_annotate: "Обектът не съществува или не може да бъде анотиран."
|
||||
label_planning: Планиране
|
||||
text_subprojects_destroy_warning: "Неговите подпроекти: %{value} също ще бъдат изтрити."
|
||||
label_and_its_subprojects: "%{value} и неговите подпроекти"
|
||||
mail_body_reminder: "%{count} задачи, назначени на вас са с краен срок в следващите %{days} дни:"
|
||||
mail_subject_reminder: "%{count} задачи с краен срок с следващите %{days} дни"
|
||||
text_user_wrote: "%{value} написа:"
|
||||
label_duplicated_by: дублирана от
|
||||
setting_enabled_scm: Разрешена SCM
|
||||
text_enumeration_category_reassign_to: 'Пресвържете ги към тази стойност:'
|
||||
text_enumeration_destroy_question: "%{count} обекта са свързани с тази стойност."
|
||||
label_incoming_emails: Входящи e-mail-и
|
||||
label_generate_key: Генериране на ключ
|
||||
setting_mail_handler_api_enabled: Разрешаване на WS за входящи e-mail-и
|
||||
setting_mail_handler_api_key: API ключ
|
||||
text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и известията не са разрешени.\nКонфигурирайте вашия SMTP сървър в config/email.yml и рестартирайте Redmine, за да ги разрешите."
|
||||
field_parent_title: Родителска страница
|
||||
label_issue_watchers: Наблюдатели
|
||||
setting_commit_logs_encoding: Кодова таблица на съобщенията при поверяване
|
||||
button_quote: Цитат
|
||||
setting_sequential_project_identifiers: Генериране на последователни проектни идентификатори
|
||||
notice_unable_delete_version: Невъзможност за изтриване на версия
|
||||
label_renamed: преименувано
|
||||
label_copied: копирано
|
||||
setting_plain_text_mail: само чист текст (без HTML)
|
||||
permission_view_files: Разглеждане на файлове
|
||||
permission_edit_issues: Редактиране на задачи
|
||||
permission_edit_own_time_entries: Редактиране на собствените time logs
|
||||
permission_manage_public_queries: Управление на публичните заявки
|
||||
permission_add_issues: Добавяне на задачи
|
||||
permission_log_time: Log spent time
|
||||
permission_view_changesets: Разглеждане на changesets
|
||||
permission_view_time_entries: Разглеждане на изразходваното време
|
||||
permission_manage_versions: Управление на версиите
|
||||
permission_manage_wiki: Управление на wiki
|
||||
permission_manage_categories: Управление на категориите задачи
|
||||
permission_protect_wiki_pages: Заключване на wiki страници
|
||||
permission_comment_news: Коментиране на новини
|
||||
permission_delete_messages: Изтриване на съобщения
|
||||
permission_select_project_modules: Избор на проектни модули
|
||||
permission_manage_documents: Управление на документи
|
||||
permission_edit_wiki_pages: Редактиране на wiki страници
|
||||
permission_add_issue_watchers: Добавяне на наблюдатели
|
||||
permission_view_gantt: Разглеждане на мрежов график
|
||||
permission_move_issues: Преместване на задачи
|
||||
permission_manage_issue_relations: Управление на връзките между задачите
|
||||
permission_delete_wiki_pages: Изтриване на wiki страници
|
||||
permission_manage_boards: Управление на boards
|
||||
permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове
|
||||
permission_view_wiki_edits: Разглеждане на wiki история
|
||||
permission_add_messages: Публикуване на съобщения
|
||||
permission_view_messages: Разглеждане на съобщения
|
||||
permission_manage_files: Управление на файлове
|
||||
permission_edit_issue_notes: Редактиране на бележки
|
||||
permission_manage_news: Управление на новини
|
||||
permission_view_calendar: Разглеждане на календари
|
||||
permission_manage_members: Управление на членовете (на екип)
|
||||
permission_edit_messages: Редактиране на съобщения
|
||||
permission_delete_issues: Изтриване на задачи
|
||||
permission_view_issue_watchers: Разглеждане на списък с наблюдатели
|
||||
permission_manage_repository: Управление на хранилища
|
||||
permission_commit_access: Поверяване
|
||||
permission_browse_repository: Разглеждане на хранилища
|
||||
permission_view_documents: Разглеждане на документи
|
||||
permission_edit_project: Редактиране на проект
|
||||
permission_add_issue_notes: Добаване на бележки
|
||||
permission_save_queries: Запис на запитвания (queries)
|
||||
permission_view_wiki_pages: Разглеждане на wiki
|
||||
permission_rename_wiki_pages: Преименуване на wiki страници
|
||||
permission_edit_time_entries: Редактиране на time logs
|
||||
permission_edit_own_issue_notes: Редактиране на собствени бележки
|
||||
setting_gravatar_enabled: Използване на портребителски икони от Gravatar
|
||||
label_example: Пример
|
||||
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
||||
permission_edit_own_messages: Редактиране на собствени съобщения
|
||||
permission_delete_own_messages: Изтриване на собствени съобщения
|
||||
label_user_activity: "Активност на %{value}"
|
||||
label_updated_time_by: "Обновена от %{author} преди %{age}"
|
||||
text_diff_truncated: '... Този diff не е пълен, понеже е надхвърля максималния размер, който може да бъде показан.'
|
||||
setting_diff_max_lines_displayed: Максимален брой показани diff редове
|
||||
text_plugin_assets_writable: Папката на приставките е разрешена за запис
|
||||
warning_attachments_not_saved: "%{count} файла не бяха записани."
|
||||
button_create_and_continue: Създаване и продължаване
|
||||
text_custom_field_possible_values_info: 'Една стойност на ред'
|
||||
label_display: Display
|
||||
field_editable: Editable
|
||||
setting_repository_log_display_limit: Максимален брой на показванете ревизии в лог файла
|
||||
setting_file_max_size_displayed: Максимален размер на текстовите файлове, показвани inline
|
||||
field_watcher: Наблюдател
|
||||
setting_openid: Рарешаване на OpenID вход и регистрация
|
||||
field_identity_url: OpenID URL
|
||||
label_login_with_open_id_option: или вход чрез OpenID
|
||||
field_content: Съдържание
|
||||
label_descending: Намаляващ
|
||||
label_sort: Сортиране
|
||||
label_ascending: Нарастващ
|
||||
label_date_from_to: От %{start} до %{end}
|
||||
label_greater_or_equal: ">="
|
||||
label_less_or_equal: <=
|
||||
text_wiki_page_destroy_question: Тази страница има %{descendants} страници деца и descendant(s). Какво желаете да правите?
|
||||
text_wiki_page_reassign_children: Преназначаване на страниците деца на тази родителска страница
|
||||
text_wiki_page_nullify_children: Запазване на тези страници като коренни страници
|
||||
text_wiki_page_destroy_children: Изтриване на страниците деца и всички техни descendants
|
||||
setting_password_min_length: Минимална дължина на парола
|
||||
field_group_by: Групиране на резултатите по
|
||||
mail_subject_wiki_content_updated: "Wiki страницата '%{id}' не беше обновена"
|
||||
label_wiki_content_added: Wiki страница беше добавена
|
||||
mail_subject_wiki_content_added: "Wiki страницата '%{id}' беше добавена"
|
||||
mail_body_wiki_content_added: Wiki страницата '%{id}' беше добавена от %{author}.
|
||||
label_wiki_content_updated: Wiki страница беше обновена
|
||||
mail_body_wiki_content_updated: Wiki страницата '%{id}' беше обновена от %{author}.
|
||||
permission_add_project: Създаване на проект
|
||||
setting_new_project_user_role_id: Роля, давана на потребител, създаващ проекти, който не е администратор
|
||||
label_view_all_revisions: Разглеждане на всички ревизии
|
||||
label_tag: Версия
|
||||
label_branch: работен вариант
|
||||
error_no_tracker_in_project: Няма асоциирани тракери с този проект. Проверете настройките на проекта.
|
||||
error_no_default_issue_status: Няма установено подразбиращо се състояние за задачите. Моля проверете вашата конфигурация (Вижте "Администрация -> Състояния на задачи").
|
||||
text_journal_changed: "%{label} променен от %{old} на %{new}"
|
||||
text_journal_set_to: "%{label} установен на %{value}"
|
||||
text_journal_deleted: "%{label} изтрит (%{old})"
|
||||
label_group_plural: Групи
|
||||
label_group: Група
|
||||
label_group_new: Нова група
|
||||
label_time_entry_plural: Използвано време
|
||||
text_journal_added: "Добавено %{label} %{value}"
|
||||
field_active: Активен
|
||||
enumeration_system_activity: Системна активност
|
||||
permission_delete_issue_watchers: Изтриване на наблюдатели
|
||||
version_status_closed: затворена
|
||||
version_status_locked: заключена
|
||||
version_status_open: отворена
|
||||
error_can_not_reopen_issue_on_closed_version: Задача, асоциирана със затворена версия не може да бъде отворена отново
|
||||
label_user_anonymous: Анонимен
|
||||
button_move_and_follow: Преместване и продължаване
|
||||
setting_default_projects_modules: Активирани модули по подразбиране за нов проект
|
||||
setting_gravatar_default: Подразбиращо се изображение от Gravatar
|
||||
field_sharing: Sharing
|
||||
label_version_sharing_hierarchy: С проектна йерархия
|
||||
label_version_sharing_system: С всички проекти
|
||||
label_version_sharing_descendants: С подпроекти
|
||||
label_version_sharing_tree: С дърво на проектите
|
||||
label_version_sharing_none: Не споделен
|
||||
error_can_not_archive_project: Този проект не може да бъде архивиран
|
||||
button_duplicate: Дублиране
|
||||
button_copy_and_follow: Копиране и продължаване
|
||||
label_copy_source: Източник
|
||||
setting_issue_done_ratio: Изчисление на процента на готови задачи с
|
||||
setting_issue_done_ratio_issue_status: Използване на състоянието на задачите
|
||||
error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен.
|
||||
error_workflow_copy_target: Моля изберете тракер(и) и роля (роли).
|
||||
setting_issue_done_ratio_issue_field: Използване на поле '% Прогрес'
|
||||
label_copy_same_as_target: Също като целта
|
||||
label_copy_target: Цел
|
||||
notice_issue_done_ratios_updated: Обновен процент на завършените задачи.
|
||||
error_workflow_copy_source: Моля изберете source тракер или роля
|
||||
label_update_issue_done_ratios: Обновяване на процента на завършените задачи
|
||||
setting_start_of_week: Първи ден на седмицата
|
||||
permission_view_issues: Разглеждане на задачите
|
||||
label_display_used_statuses_only: Показване само на състоянията, използвани от този тракер
|
||||
label_revision_id: Ревизия %{value}
|
||||
label_api_access_key: API ключ за достъп
|
||||
label_api_access_key_created_on: API ключ за достъп е създаден преди %{value}
|
||||
label_feeds_access_key: RSS access ключ
|
||||
notice_api_access_key_reseted: Вашият API ключ за достъп беше изчистен.
|
||||
setting_rest_api_enabled: Разрешаване на REST web сървис
|
||||
label_missing_api_access_key: Липсващ API ключ
|
||||
label_missing_feeds_access_key: Липсващ RSS ключ за достъп
|
||||
button_show: Показване
|
||||
text_line_separated: Позволени са много стойности (по едно на ред).
|
||||
setting_mail_handler_body_delimiters: Отрязване на e-mail-ите след един от тези редове
|
||||
permission_add_subprojects: Създаване на подпроекти
|
||||
label_subproject_new: Нов подпроект
|
||||
text_own_membership_delete_confirmation: |-
|
||||
Вие сте на път да премахнете някои или всички ваши разрешения и е възможно след това на да не можете да редатирате този проект.
|
||||
Сигурен ли сте, че искате да продължите?
|
||||
label_close_versions: Затваряне на завършените версии
|
||||
label_board_sticky: Sticky
|
||||
label_board_locked: Заключена
|
||||
permission_export_wiki_pages: Експорт на wiki страници
|
||||
setting_cache_formatted_text: Cache formatted text
|
||||
permission_manage_project_activities: Управление на дейностите на проекта
|
||||
error_unable_delete_issue_status: Невъзможност за изтриване на състояние на задача
|
||||
label_profile: Профил
|
||||
permission_manage_subtasks: Управление на подзадачите
|
||||
field_parent_issue: Родителска задача
|
||||
label_subtask_plural: Подзадачи
|
||||
label_project_copy_notifications: Изпращане на Send e-mail известия по време на копирането на проекта
|
||||
error_can_not_delete_custom_field: Невъзможност за изтриване на потребителско поле
|
||||
error_unable_to_connect: Невъзможност за свързване с (%{value})
|
||||
error_can_not_remove_role: Тази роля се използва и не може да бъде изтрита.
|
||||
error_can_not_delete_tracker: Този тракер съдържа задачи и не може да бъде изтрит.
|
||||
field_principal: Principal
|
||||
label_my_page_block: Блокове в личната страница
|
||||
notice_failed_to_save_members: "Невъзможност за запис на член(ове): %{errors}."
|
||||
text_zoom_out: Намаляване
|
||||
text_zoom_in: Увеличаване
|
||||
notice_unable_delete_time_entry: Невъзможност за изтриване на запис на time log.
|
||||
label_overall_spent_time: Общо употребено време
|
||||
field_time_entries: Log time
|
||||
notice_not_authorized_archived_project: Проектът, който се опитвате да видите е архивиран.
|
||||
text_tip_issue_end_day: задача, завършваща този ден
|
||||
field_text: Текстово поле
|
||||
label_user_mail_option_only_owner: Само за неща, на които аз съм собственик
|
||||
field_member_of_group: Член на група
|
||||
project_module_gantt: Мрежов график
|
||||
text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи?
|
||||
text_tip_issue_begin_end_day: задача, започваща и завършваща този ден
|
||||
setting_default_notification_option: Подразбиращ се начин за известяване
|
||||
project_module_calendar: Календар
|
||||
label_user_mail_option_only_my_events: Само за неща, в които съм включен/а
|
||||
text_tip_issue_begin_day: задача, започваща този ден
|
||||
label_user_mail_option_only_assigned: Само за неща, назначени на мен
|
||||
button_edit_associated_wikipage: "Редактиране на асоциираната Wiki страница: %{page_title}"
|
||||
field_assigned_to_role: Assignee's role
|
||||
field_start_date: Начална дата
|
||||
label_principal_search: "Търсене на потребител или група:"
|
||||
label_user_search: "Търсене на потребител:"
|
||||
field_visible: Видим
|
||||
setting_emails_header: Emails header
|
||||
setting_commit_logtime_activity_id: Дейност при отчитане на работното време
|
||||
text_time_logged_by_changeset: Приложено в ревизия %{value}.
|
||||
setting_commit_logtime_enabled: Разрешаване на отчитането на работното време
|
||||
notice_gantt_chart_truncated: Мрежовият график е съкратен, понеже броят на обектите, които могат да бъдат показани е твърде голям (%{max})
|
||||
setting_gantt_items_limit: Максимален брой обекти, които да се показват в мрежов график
|
||||
|
||||
|
|
|
@ -787,7 +787,7 @@ bs:
|
|||
text_user_wrote: "%{value} je napisao/la:"
|
||||
text_enumeration_destroy_question: "Za %{count} objekata je dodjeljenja ova vrijednost."
|
||||
text_enumeration_category_reassign_to: 'Ponovo im dodjeli ovu vrijednost:'
|
||||
text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriši SMTP server u config/email.yml i restartuj aplikaciju nakon toga."
|
||||
text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriši SMTP server u config/configuration.yml i restartuj aplikaciju nakon toga."
|
||||
text_repository_usernames_mapping: "Odaberi ili ispravi redmine korisnika mapiranog za svako korisničko ima nađeno u logu repozitorija.\nKorisnici sa istim imenom u redmineu i u repozitoruju se automatski mapiraju."
|
||||
text_diff_truncated: '... Ovaj prikaz razlike je odsječen pošto premašuje maksimalnu veličinu za prikaz'
|
||||
text_custom_field_possible_values_info: 'Jedna linija za svaku vrijednost'
|
||||
|
|
|
@ -880,7 +880,7 @@ ca:
|
|||
text_user_wrote: "%{value} va escriure:"
|
||||
text_enumeration_destroy_question: "%{count} objectes estan assignats a aquest valor."
|
||||
text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:"
|
||||
text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo."
|
||||
text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/configuration.yml i reinicieu l'aplicació per habilitar-lo."
|
||||
text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al dipòsit.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del dipòsit s'assignaran automàticament."
|
||||
text_diff_truncated: "... Aquestes diferències s'han trucat perquè excedeixen la mida màxima que es pot mostrar."
|
||||
text_custom_field_possible_values_info: "Una línia per a cada valor"
|
||||
|
|
|
@ -546,7 +546,7 @@ cs:
|
|||
label_relation_delete: Odstranit souvislost
|
||||
label_relates_to: související s
|
||||
label_duplicates: duplicity
|
||||
label_blocks: bloků
|
||||
label_blocks: blokuje
|
||||
label_blocked_by: zablokován
|
||||
label_precedes: předchází
|
||||
label_follows: následuje
|
||||
|
@ -729,7 +729,7 @@ cs:
|
|||
label_generate_key: Generovat klíč
|
||||
setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily
|
||||
setting_mail_handler_api_key: API klíč
|
||||
text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci."
|
||||
text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/configuration.yml a restartujte aplikaci."
|
||||
field_parent_title: Rodičovská stránka
|
||||
label_issue_watchers: Sledování
|
||||
setting_commit_logs_encoding: Kódování zpráv při commitu
|
||||
|
|
|
@ -753,7 +753,7 @@ da:
|
|||
setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer
|
||||
setting_plain_text_mail: Emails som almindelig tekst (ingen HTML)
|
||||
field_parent_title: Siden over
|
||||
text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/email.yml og genstart applikationen for at aktivere email-afsendelse."
|
||||
text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/configuration.yml og genstart applikationen for at aktivere email-afsendelse."
|
||||
permission_protect_wiki_pages: Beskyt wiki sider
|
||||
permission_manage_documents: Administrér dokumenter
|
||||
permission_add_issue_watchers: Tilføj overvågere
|
||||
|
|
|
@ -898,7 +898,7 @@ de:
|
|||
text_user_wrote: "%{value} schrieb:"
|
||||
text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet."
|
||||
text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
|
||||
text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu."
|
||||
text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu."
|
||||
text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet."
|
||||
text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.'
|
||||
text_custom_field_possible_values_info: 'Eine Zeile pro Wert'
|
||||
|
|
|
@ -798,7 +798,7 @@ el:
|
|||
text_user_wrote: "%{value} έγραψε:"
|
||||
text_enumeration_destroy_question: "%{count} αντικείμενα έχουν τεθεί σε αυτή την τιμή."
|
||||
text_enumeration_category_reassign_to: 'Επανεκχώρηση τους στην παρούσα αξία:'
|
||||
text_email_delivery_not_configured: "Δεν έχουν γίνει ρυθμίσεις παράδοσης email, και οι ειδοποιήσεις είναι απενεργοποιημένες.\nΔηλώστε τον εξυπηρετητή SMTP στο config/email.yml και κάντε επανακκίνηση την εφαρμογή για να τις ρυθμίσεις."
|
||||
text_email_delivery_not_configured: "Δεν έχουν γίνει ρυθμίσεις παράδοσης email, και οι ειδοποιήσεις είναι απενεργοποιημένες.\nΔηλώστε τον εξυπηρετητή SMTP στο config/configuration.yml και κάντε επανακκίνηση την εφαρμογή για να τις ρυθμίσεις."
|
||||
text_repository_usernames_mapping: "Επιλέξτε ή ενημερώστε τον χρήστη Redmine που αντιστοιχεί σε κάθε όνομα χρήστη στο ιστορικό του αποθετηρίου.\nΧρήστες με το ίδιο όνομα χρήστη ή email στο Redmine και στο αποθετηρίο αντιστοιχίζονται αυτόματα."
|
||||
text_diff_truncated: '... Αυτό το diff εχεί κοπεί επειδή υπερβαίνει το μέγιστο μέγεθος που μπορεί να προβληθεί.'
|
||||
text_custom_field_possible_values_info: 'Μία γραμμή για κάθε τιμή'
|
||||
|
|
|
@ -864,7 +864,7 @@ en-GB:
|
|||
text_user_wrote: "%{value} wrote:"
|
||||
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||
text_custom_field_possible_values_info: 'One line for each value'
|
||||
|
|
|
@ -897,7 +897,7 @@ en:
|
|||
text_user_wrote: "%{value} wrote:"
|
||||
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||
text_custom_field_possible_values_info: 'One line for each value'
|
||||
|
|
|
@ -795,7 +795,7 @@ es:
|
|||
text_destroy_time_entries: Borrar las horas
|
||||
text_destroy_time_entries_question: Existen %{hours} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer?
|
||||
text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.'
|
||||
text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios."
|
||||
text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/configuration.yml y reinicie la aplicación para activar los cambios."
|
||||
text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:'
|
||||
text_enumeration_destroy_question: "%{count} objetos con este valor asignado."
|
||||
text_file_repository_writable: Se puede escribir en el repositorio
|
||||
|
|
|
@ -859,7 +859,7 @@ eu:
|
|||
text_user_wrote: "%{value}-(e)k idatzi zuen:"
|
||||
text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude."
|
||||
text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:'
|
||||
text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/email.yml-n eta aplikazioa berrabiarazi hauek gaitzeko."
|
||||
text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko."
|
||||
text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira."
|
||||
text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.'
|
||||
text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko'
|
||||
|
|
|
@ -750,7 +750,7 @@ fi:
|
|||
label_generate_key: Luo avain
|
||||
setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille
|
||||
setting_mail_handler_api_key: API avain
|
||||
text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/email.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan."
|
||||
text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/configuration.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan."
|
||||
field_parent_title: Aloitussivu
|
||||
label_issue_watchers: Tapahtuman seuraajat
|
||||
button_quote: Vastaa
|
||||
|
|
|
@ -166,10 +166,10 @@ fr:
|
|||
notice_successful_create: Création effectuée avec succès.
|
||||
notice_successful_update: Mise à jour effectuée avec succès.
|
||||
notice_successful_delete: Suppression effectuée avec succès.
|
||||
notice_successful_connection: Connection réussie.
|
||||
notice_successful_connection: Connexion réussie.
|
||||
notice_file_not_found: "La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée."
|
||||
notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible.
|
||||
notice_not_authorized: "Vous n'êtes pas autorisés à accéder à cette page."
|
||||
notice_not_authorized: "Vous n'êtes pas autorisé à accéder à cette page."
|
||||
notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé.
|
||||
notice_email_sent: "Un email a été envoyé à %{value}"
|
||||
notice_email_error: "Erreur lors de l'envoi de l'email (%{value})"
|
||||
|
@ -323,11 +323,11 @@ fr:
|
|||
setting_text_formatting: Formatage du texte
|
||||
setting_wiki_compression: Compression historique wiki
|
||||
setting_feeds_limit: Limite du contenu des flux RSS
|
||||
setting_default_projects_public: Définir les nouveaux projects comme publics par défaut
|
||||
setting_default_projects_public: Définir les nouveaux projets comme publics par défaut
|
||||
setting_autofetch_changesets: Récupération auto. des commits
|
||||
setting_sys_api_enabled: Activer les WS pour la gestion des dépôts
|
||||
setting_commit_ref_keywords: Mot-clés de référencement
|
||||
setting_commit_fix_keywords: Mot-clés de résolution
|
||||
setting_commit_ref_keywords: Mots-clés de référencement
|
||||
setting_commit_fix_keywords: Mots-clés de résolution
|
||||
setting_autologin: Autologin
|
||||
setting_date_format: Format de date
|
||||
setting_time_format: Format d'heure
|
||||
|
@ -349,7 +349,7 @@ fr:
|
|||
setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
|
||||
setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées
|
||||
setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne
|
||||
setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier"
|
||||
setting_repository_log_display_limit: "Nombre maximum de révisions affichées sur l'historique d'un fichier"
|
||||
setting_openid: "Autoriser l'authentification et l'enregistrement OpenID"
|
||||
setting_password_min_length: Longueur minimum des mots de passe
|
||||
setting_new_project_user_role_id: Rôle donné à un utilisateur non-administrateur qui crée un projet
|
||||
|
@ -369,7 +369,7 @@ fr:
|
|||
permission_add_subprojects: Créer des sous-projets
|
||||
permission_edit_project: Modifier le projet
|
||||
permission_select_project_modules: Choisir les modules
|
||||
permission_manage_members: Gérer les members
|
||||
permission_manage_members: Gérer les membres
|
||||
permission_manage_versions: Gérer les versions
|
||||
permission_manage_categories: Gérer les catégories de demandes
|
||||
permission_view_issues: Voir les demandes
|
||||
|
@ -859,7 +859,7 @@ fr:
|
|||
text_issue_added: "La demande %{id} a été soumise par %{author}."
|
||||
text_issue_updated: "La demande %{id} a été mise à jour par %{author}."
|
||||
text_wiki_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce wiki et tout son contenu ?
|
||||
text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégories. Que voulez-vous faire ?"
|
||||
text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégorie. Que voulez-vous faire ?"
|
||||
text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie
|
||||
text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie
|
||||
text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)."
|
||||
|
@ -880,7 +880,7 @@ fr:
|
|||
text_user_wrote: "%{value} a écrit :"
|
||||
text_enumeration_destroy_question: "Cette valeur est affectée à %{count} objets."
|
||||
text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:'
|
||||
text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/email.yml et redémarrez l'application pour les activer."
|
||||
text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/configuration.yml et redémarrez l'application pour les activer."
|
||||
text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés."
|
||||
text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.'
|
||||
text_custom_field_possible_values_info: 'Une ligne par valeur'
|
||||
|
|
|
@ -772,7 +772,7 @@ gl:
|
|||
text_destroy_time_entries: Borrar as horas
|
||||
text_destroy_time_entries_question: Existen %{hours} horas asignadas á petición que quere borrar. ¿Que quere facer ?
|
||||
text_diff_truncated: '... Diferencia truncada por exceder o máximo tamaño visualizable.'
|
||||
text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/email.yml e reinicie a aplicación para activar os cambios."
|
||||
text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/configuration.yml e reinicie a aplicación para activar os cambios."
|
||||
text_enumeration_category_reassign_to: 'Reasignar ó seguinte valor:'
|
||||
text_enumeration_destroy_question: "%{count} obxectos con este valor asignado."
|
||||
text_file_repository_writable: Pódese escribir no repositorio
|
||||
|
|
|
@ -889,7 +889,7 @@ he:
|
|||
text_user_wrote: "%{value} כתב:"
|
||||
text_enumeration_destroy_question: "%{count} אוביקטים מוצבים לערך זה."
|
||||
text_enumeration_category_reassign_to: 'הצב מחדש לערך הזה:'
|
||||
text_email_delivery_not_configured: 'לא נקבעה תצורה לשליחת דואר, וההתראות כבויות.\nקבע את תצורת שרת ה־SMTP בקובץ /etc/redmine/<instance>/email.yml והתחל את האפליקציה מחדש ע"מ לאפשר אותם.'
|
||||
text_email_delivery_not_configured: 'לא נקבעה תצורה לשליחת דואר, וההתראות כבויות.\nקבע את תצורת שרת ה־SMTP בקובץ /etc/redmine/<instance>/configuration.yml והתחל את האפליקציה מחדש ע"מ לאפשר אותם.'
|
||||
text_repository_usernames_mapping: "בחר או עדכן את משתמש Redmine הממופה לכל שם משתמש ביומן המאגר.\nמשתמשים בעלי שם או כתובת דואר זהה ב־Redmine ובמאגר ממופים באופן אוטומטי."
|
||||
text_diff_truncated: '... השינויים עוברים את מספר השורות המירבי לתצוגה, ולכן הם קוצצו.'
|
||||
text_custom_field_possible_values_info: שורה אחת לכל ערך
|
||||
|
|
|
@ -854,7 +854,7 @@ hr:
|
|||
text_user_wrote: "%{value} je napisao/la:"
|
||||
text_enumeration_destroy_question: "%{count} objekata je pridruženo toj vrijednosti."
|
||||
text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:'
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
||||
text_diff_truncated: '... Ovaj diff je odrezan zato što prelazi maksimalnu veličinu koja može biti prikazana.'
|
||||
text_custom_field_possible_values_info: 'One line for each value'
|
||||
|
|
|
@ -748,7 +748,7 @@
|
|||
label_generate_key: Kulcs generálása
|
||||
setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez
|
||||
setting_mail_handler_api_key: API kulcs
|
||||
text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen."
|
||||
text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/configuration.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen."
|
||||
field_parent_title: Szülő oldal
|
||||
label_issue_watchers: Megfigyelők
|
||||
setting_commit_logs_encoding: Commit üzenetek kódlapja
|
||||
|
|
|
@ -833,7 +833,7 @@ id:
|
|||
text_user_wrote: "%{value} menulis:"
|
||||
text_enumeration_destroy_question: "%{count} obyek ditugaskan untuk nilai ini."
|
||||
text_enumeration_category_reassign_to: 'Tugaskan kembali untuk nilai ini:'
|
||||
text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/email.yml dan restart kembali aplikasi untuk mengaktifkan."
|
||||
text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/configuration.yml dan restart kembali aplikasi untuk mengaktifkan."
|
||||
text_repository_usernames_mapping: "Pilih atau perbarui pengguna Redmine yang terpetakan ke setiap nama pengguna yang ditemukan di log repositori.\nPengguna dengan nama pengguna dan repositori atau email yang sama secara otomasit akan dipetakan."
|
||||
text_diff_truncated: '... Perbedaan terpotong karena melebihi batas maksimum yang bisa ditampilkan.'
|
||||
text_custom_field_possible_values_info: 'Satu baris untuk setiap nilai'
|
||||
|
|
|
@ -730,7 +730,7 @@ it:
|
|||
label_generate_key: Genera una chiave
|
||||
setting_mail_handler_api_enabled: Abilita WS per le email in arrivo
|
||||
setting_mail_handler_api_key: Chiave API
|
||||
text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle."
|
||||
text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/configuration.yml e riavvia l'applicazione per abilitarle."
|
||||
field_parent_title: Pagina principale
|
||||
label_issue_watchers: Osservatori
|
||||
setting_commit_logs_encoding: Codifica dei messaggi di commit
|
||||
|
|
|
@ -919,7 +919,7 @@ ja:
|
|||
text_user_wrote: "%{value} は書きました:"
|
||||
text_enumeration_destroy_question: "%{count}個のオブジェクトがこの値に割り当てられています。"
|
||||
text_enumeration_category_reassign_to: '次の値に割り当て直す:'
|
||||
text_email_delivery_not_configured: "メールを送信するために必要な設定が行われていないため、メール通知は利用できません。\nconfig/email.ymlでSMTPサーバの設定を行い、アプリケーションを再起動してください。"
|
||||
text_email_delivery_not_configured: "メールを送信するために必要な設定が行われていないため、メール通知は利用できません。\nconfig/configuration.ymlでSMTPサーバの設定を行い、アプリケーションを再起動してください。"
|
||||
text_repository_usernames_mapping: "リポジトリのログから検出されたユーザー名をどのRedmineユーザーに関連づけるのか選択してください。\nログ上のユーザー名またはメールアドレスがRedmineのユーザーと一致する場合は自動的に関連づけられます。"
|
||||
text_diff_truncated: '... 差分の行数が表示可能な上限を超えました。超過分は表示しません。'
|
||||
text_custom_field_possible_values_info: '選択肢の値は1行に1個ずつ記述してください。'
|
||||
|
|
|
@ -843,7 +843,7 @@ ko:
|
|||
text_user_wrote: "%{value}의 덧글:"
|
||||
text_enumeration_category_reassign_to: '새로운 값을 설정:'
|
||||
text_enumeration_destroy_question: "%{count} 개의 일감이 이 값을 사용하고 있습니다."
|
||||
text_email_delivery_not_configured: "이메일 전달이 설정되지 않았습니다. 그래서 알림이 비활성화되었습니다.\n SMTP서버를 config/email.yml에서 설정하고 어플리케이션을 다시 시작하십시오. 그러면 동작합니다."
|
||||
text_email_delivery_not_configured: "이메일 전달이 설정되지 않았습니다. 그래서 알림이 비활성화되었습니다.\n SMTP서버를 config/configuration.yml에서 설정하고 어플리케이션을 다시 시작하십시오. 그러면 동작합니다."
|
||||
text_repository_usernames_mapping: "저장소 로그에서 발견된 각 사용자에 레드마인 사용자를 업데이트할때 선택합니다.\n레드마인과 저장소의 이름이나 이메일이 같은 사용자가 자동으로 연결됩니다."
|
||||
text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.'
|
||||
text_custom_field_possible_values_info: '각 값 당 한 줄'
|
||||
|
|
|
@ -885,7 +885,7 @@ lt:
|
|||
text_user_wrote: "%{value} parašė:"
|
||||
text_enumeration_destroy_question: "%{count} objektai priskirti šiai reikšmei."
|
||||
text_enumeration_category_reassign_to: 'Priskirti juos šiai reikšmei:'
|
||||
text_email_delivery_not_configured: "El.pašto siuntimas nesukonfigūruotas, ir perspėjimai neaktyvus.\nSukonfigūruokite savo SMTP serverį byloje config/email.yml ir perleiskite programą norėdami pritaikyti pakeitimus."
|
||||
text_email_delivery_not_configured: "El.pašto siuntimas nesukonfigūruotas, ir perspėjimai neaktyvus.\nSukonfigūruokite savo SMTP serverį byloje config/configuration.yml ir perleiskite programą norėdami pritaikyti pakeitimus."
|
||||
text_repository_usernames_mapping: "Parinkite ar atnaujinkite Redmine vartotojo vardą kiekvienam saugyklos vardui, kuris paminėtas saugyklos log'e.\nVartotojai, turintys tą patį Redmine ir saugyklos vardą ar el.paštą automatiškai surišti."
|
||||
text_diff_truncated: "... Šis diff'as nukarpytas, nes jis viršijo maksimalų rodomą eilučių skaičių."
|
||||
text_custom_field_possible_values_info: 'Po vieną eilutę kiekvienai reikšmei'
|
||||
|
|
|
@ -854,7 +854,7 @@ lv:
|
|||
text_user_wrote: "%{value} rakstīja:"
|
||||
text_enumeration_destroy_question: "%{count} objekti ir piešķirti šai vērtībai."
|
||||
text_enumeration_category_reassign_to: 'Piešķirt tos šai vērtībai:'
|
||||
text_email_delivery_not_configured: "E-pastu nosūtīšana nav konfigurēta, un ziņojumi ir izslēgti.\nKonfigurējiet savu SMTP serveri datnē config/email.yml un pārstartējiet lietotni."
|
||||
text_email_delivery_not_configured: "E-pastu nosūtīšana nav konfigurēta, un ziņojumi ir izslēgti.\nKonfigurējiet savu SMTP serveri datnē config/configuration.yml un pārstartējiet lietotni."
|
||||
text_repository_usernames_mapping: "Izvēlieties vai atjaunojiet Redmine lietotāju, saistītu ar katru lietotājvārdu, kas atrodams repozitorija žurnālā.\nLietotāji ar to pašu Redmine un repozitorija lietotājvārdu būs saistīti automātiski."
|
||||
text_diff_truncated: '... Šis diff tika nošķelts, jo tas pārsniedz maksimālo izmēru, ko var parādīt.'
|
||||
text_custom_field_possible_values_info: 'Katra vērtības savā rindā'
|
||||
|
|
|
@ -877,7 +877,7 @@ mk:
|
|||
text_user_wrote: "%{value} напиша:"
|
||||
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||
text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/email.yml и рестартирајте ја апликацијата."
|
||||
text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/configuration.yml и рестартирајте ја апликацијата."
|
||||
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||
text_custom_field_possible_values_info: 'One line for each value'
|
||||
|
|
|
@ -859,7 +859,7 @@ mn:
|
|||
text_user_wrote: "%{value} бичихдээ:"
|
||||
text_enumeration_destroy_question: "Энэ утгад %{count} обьект оноогдсон байна."
|
||||
text_enumeration_category_reassign_to: 'Тэдгээрийг энэ утгад дахин оноо:'
|
||||
text_email_delivery_not_configured: "Имэйлийн тохиргоог хараахан тохируулаагүй байна, тиймээс имэйл мэдэгдэл явуулах боломжгүй байна.\nSMTP сервэрээ config/email.yml файл дотор тохируулаад төслийн менежерээ дахиад эхлүүлээрэй."
|
||||
text_email_delivery_not_configured: "Имэйлийн тохиргоог хараахан тохируулаагүй байна, тиймээс имэйл мэдэгдэл явуулах боломжгүй байна.\nSMTP сервэрээ config/configuration.yml файл дотор тохируулаад төслийн менежерээ дахиад эхлүүлээрэй."
|
||||
text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх хэрэглэгчийн нэрүүдэд харгалзсан Төслийн Менежер системд бүртгэлтэй хэрэглэгчдийг Сонгох юмуу шинэчилнэ үү.\nТөслийн менежер болон репозиторид байгаа ижилхэн нэр юмуу имэйлтэй хэрэглэгчид харилцан харгалзна."
|
||||
text_diff_truncated: '... Файлын ялгаврын хэмжээ үзүүлэхэд дэндүү урт байгаа учраас төгсгөлөөс нь хасч үзүүлэв.'
|
||||
text_custom_field_possible_values_info: 'One line for each value'
|
||||
|
|
|
@ -742,7 +742,7 @@ nl:
|
|||
text_destroy_time_entries: Verwijder gerapporteerde uren
|
||||
text_destroy_time_entries_question: "%{hours} uren werden gerapporteerd op de issue(s) die u wilde verwijderen. Wat wil u doen?"
|
||||
text_diff_truncated: '... Deze diff werd afgekort omdat het de maximale weer te geven karakters overschreed.'
|
||||
text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/email.yml en herstart de applicatie om dit te activeren."
|
||||
text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om dit te activeren."
|
||||
text_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:'
|
||||
text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde."
|
||||
text_file_repository_writable: Bestandsrepository beschrijfbaar
|
||||
|
|
|
@ -716,7 +716,7 @@
|
|||
label_generate_key: Generer en nøkkel
|
||||
setting_mail_handler_api_enabled: Skru på WS for innkommende e-post
|
||||
setting_mail_handler_api_key: API-nøkkel
|
||||
text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/email.yml og start programmet på nytt for å skru det på."
|
||||
text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet på nytt for å skru det på."
|
||||
field_parent_title: Foreldreside
|
||||
label_issue_watchers: Overvåkere
|
||||
setting_commit_logs_encoding: Tegnkoding for innsendingsmeldinger
|
||||
|
|
|
@ -771,7 +771,7 @@ pl:
|
|||
text_default_administrator_account_changed: Zmieniono domyślne hasło administratora
|
||||
text_destroy_time_entries: Usuń wpisy dziennika
|
||||
text_destroy_time_entries_question: Przepracowano %{hours} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić?
|
||||
text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/email.yml a następnie zrestartuj aplikację i uaktywnij to."
|
||||
text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/configuration.yml a następnie zrestartuj aplikację i uaktywnij to."
|
||||
text_enumeration_category_reassign_to: 'Zmień przypisanie na tą wartość:'
|
||||
text_enumeration_destroy_question: "%{count} obiektów jest przypisana do tej wartości."
|
||||
text_file_repository_writable: Zapisywalne repozytorium plików
|
||||
|
|
|
@ -728,7 +728,7 @@ pt-BR:
|
|||
text_user_wrote: "%{value} escreveu:"
|
||||
text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor."
|
||||
text_enumeration_category_reassign_to: 'Reatribuí-los ao valor:'
|
||||
text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/email.yml e reinicie a aplicação para ativá-las."
|
||||
text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/configuration.yml e reinicie a aplicação para ativá-las."
|
||||
|
||||
default_role_manager: Gerente
|
||||
default_role_developer: Desenvolvedor
|
||||
|
|
|
@ -715,7 +715,7 @@ pt:
|
|||
text_user_wrote: "%{value} escreveu:"
|
||||
text_enumeration_destroy_question: "%{count} objectos estão atribuídos a este valor."
|
||||
text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:'
|
||||
text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/email.yml e reinicie a aplicação para activar estas funcionalidades."
|
||||
text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/configuration.yml e reinicie a aplicação para activar estas funcionalidades."
|
||||
|
||||
default_role_manager: Gestor
|
||||
default_role_developer: Programador
|
||||
|
|
|
@ -774,7 +774,7 @@ ro:
|
|||
text_user_wrote: "%{value} a scris:"
|
||||
text_enumeration_destroy_question: "Această valoare are %{count} obiecte."
|
||||
text_enumeration_category_reassign_to: 'Atribuie la această valoare:'
|
||||
text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată și ca urmare, notificările sunt dezactivate.\nConfigurați serverul SMTP în config/email.yml și reporniți aplicația pentru a le activa."
|
||||
text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată și ca urmare, notificările sunt dezactivate.\nConfigurați serverul SMTP în config/configuration.yml și reporniți aplicația pentru a le activa."
|
||||
text_repository_usernames_mapping: "Selectați sau modificați contul Redmine echivalent contului din istoricul depozitului.\nUtilizatorii cu un cont (sau e-mail) identic în Redmine și depozit sunt echivalate automat."
|
||||
text_diff_truncated: '... Comparația a fost trunchiată pentru ca depășește lungimea maximă de text care poate fi afișat.'
|
||||
text_custom_field_possible_values_info: 'O linie pentru fiecare valoare'
|
||||
|
|
|
@ -913,7 +913,7 @@ ru:
|
|||
text_destroy_time_entries_question: Вы собираетесь удалить %{hours} часа(ов), прикрепленных за этой задачей.
|
||||
text_destroy_time_entries: Удалить зарегистрированное время
|
||||
text_diff_truncated: '... Этот diff ограничен, так как превышает максимальный отображаемый размер.'
|
||||
text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для Вашего SMTP-сервера Вы можете в файле config/email.yml. Для применения изменений перезапустите приложение."
|
||||
text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для Вашего SMTP-сервера Вы можете в файле config/configuration.yml. Для применения изменений перезапустите приложение."
|
||||
text_enumeration_category_reassign_to: 'Назначить им следующее значение:'
|
||||
text_enumeration_destroy_question: "%{count} объект(а,ов) связаны с этим значением."
|
||||
text_file_repository_writable: Хранилище с доступом на запись
|
||||
|
|
|
@ -723,7 +723,7 @@ sk:
|
|||
label_generate_key: Vygenerovať kľúč
|
||||
setting_mail_handler_api_enabled: Zapnúť Webovú Službu (WS) pre príchodzie emaily
|
||||
setting_mail_handler_api_key: API kľúč
|
||||
text_email_delivery_not_configured: "Doručenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/email.yml a reštartnite aplikáciu pre aktiváciu funkcie."
|
||||
text_email_delivery_not_configured: "Doručenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/configuration.yml a reštartnite aplikáciu pre aktiváciu funkcie."
|
||||
field_parent_title: Nadradená stránka
|
||||
label_issue_watchers: Pozorovatelia
|
||||
setting_commit_logs_encoding: Kódovanie prenášaných správ
|
||||
|
|
|
@ -761,7 +761,7 @@ sl:
|
|||
text_user_wrote: "%{value} je napisal(a):"
|
||||
text_enumeration_destroy_question: "%{count} objektov je določenih tej vrednosti."
|
||||
text_enumeration_category_reassign_to: 'Ponastavi jih na to vrednost:'
|
||||
text_email_delivery_not_configured: "E-poštna dostava ni nastavljena in oznanila so onemogočena.\nNastavite vaš SMTP strežnik v config/email.yml in ponovno zaženite aplikacijo da ga omogočite.\n"
|
||||
text_email_delivery_not_configured: "E-poštna dostava ni nastavljena in oznanila so onemogočena.\nNastavite vaš SMTP strežnik v config/configuration.yml in ponovno zaženite aplikacijo da ga omogočite.\n"
|
||||
text_repository_usernames_mapping: "Izberite ali posodobite Redmine uporabnika dodeljenega vsakemu uporabniškemu imenu najdenemu v zapisniku shrambe.\n Uporabniki z enakim Redmine ali shrambinem uporabniškem imenu ali e-poštnem naslovu so samodejno dodeljeni."
|
||||
text_diff_truncated: '... Ta sprememba je bila odsekana ker presega največjo velikost ki je lahko prikazana.'
|
||||
|
||||
|
|
|
@ -874,7 +874,7 @@ sr-YU:
|
|||
text_user_wrote: "%{value} je napisao:"
|
||||
text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti."
|
||||
text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:'
|
||||
text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/email.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje."
|
||||
text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje."
|
||||
text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisničkog imena pronađenog u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili e-adresom su automatski mapirani."
|
||||
text_diff_truncated: '... Ova razlika je isečena jer je dostignuta maksimalna veličina prikaza.'
|
||||
text_custom_field_possible_values_info: 'Jedan red za svaku vrednost'
|
||||
|
|
|
@ -874,7 +874,7 @@ sr:
|
|||
text_user_wrote: "%{value} је написао:"
|
||||
text_enumeration_destroy_question: "%{count} објекат(а) је додељено овој вредности."
|
||||
text_enumeration_category_reassign_to: 'Додели их поново овој вредности:'
|
||||
text_email_delivery_not_configured: "Испорука е-порука није конфигурисана и обавештења су онемогућена.\nПодесите ваш SMTP сервер у config/email.yml и покрените поново апликацију за њихово омогућавање."
|
||||
text_email_delivery_not_configured: "Испорука е-порука није конфигурисана и обавештења су онемогућена.\nПодесите ваш SMTP сервер у config/configuration.yml и покрените поново апликацију за њихово омогућавање."
|
||||
text_repository_usernames_mapping: "Одаберите или ажурирајте Redmine кориснике мапирањем сваког корисничког имена пронађеног у евиденцији спремишта.\nКорисници са истим Redmine именом и именом спремишта или е-адресом су аутоматски мапирани."
|
||||
text_diff_truncated: '... Ова разлика је исечена јер је достигнута максимална величина приказа.'
|
||||
text_custom_field_possible_values_info: 'Један ред за сваку вредност'
|
||||
|
|
|
@ -208,6 +208,7 @@ sv:
|
|||
notice_unable_delete_version: Denna version var inte möjlig att ta bort.
|
||||
notice_unable_delete_time_entry: Tidloggning kunde inte tas bort.
|
||||
notice_issue_done_ratios_updated: % klart uppdaterade.
|
||||
notice_gantt_chart_truncated: "Schemat förminskades eftersom det överskrider det maximala antalet aktiviteter som får visas (%{max})"
|
||||
|
||||
error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}"
|
||||
error_scm_not_found: "Inlägg och/eller revision finns inte i detta versionsarkiv."
|
||||
|
@ -217,7 +218,7 @@ sv:
|
|||
error_no_tracker_in_project: 'Ingen ärendetyp är associerad med projektet. Vänligen kontrollera projektinställningarna.'
|
||||
error_no_default_issue_status: 'Ingen status är definierad som standard för nya ärenden. Vänligen kontrollera din konfiguration (Gå till "Administration -> Ärendestatus").'
|
||||
error_can_not_delete_custom_field: Kan inte ta bort användardefinerat fält
|
||||
error_can_not_delete_tracker: Det finns ärenden av denna typ och den är därför inte möjlig att ta bort.
|
||||
error_can_not_delete_tracker: "Det finns ärenden av denna typ och den är därför inte möjlig att ta bort."
|
||||
error_can_not_remove_role: "Denna roll används och den är därför inte möjlig att ta bort."
|
||||
error_can_not_reopen_issue_on_closed_version: 'Ett ärende tilldelat en stängd version kan inte öppnas på nytt'
|
||||
error_can_not_archive_project: Detta projekt kan inte arkiveras
|
||||
|
@ -225,7 +226,7 @@ sv:
|
|||
error_workflow_copy_source: 'Vänligen välj källans ärendetyp eller roll'
|
||||
error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mål'
|
||||
error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort'
|
||||
error_unable_to_connect: Kan inte ansluta (%{value})
|
||||
error_unable_to_connect: "Kan inte ansluta (%{value})"
|
||||
|
||||
warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas."
|
||||
|
||||
|
@ -240,9 +241,9 @@ sv:
|
|||
mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna"
|
||||
mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:"
|
||||
mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till"
|
||||
mail_body_wiki_content_added: The '%{id}' wikisida has lagts till av %{author}.
|
||||
mail_body_wiki_content_added: "The '%{id}' wikisida has lagts till av %{author}."
|
||||
mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats"
|
||||
mail_body_wiki_content_updated: The '%{id}' wikisida har uppdaterats av %{author}.
|
||||
mail_body_wiki_content_updated: "The '%{id}' wikisida har uppdaterats av %{author}."
|
||||
|
||||
gui_validation_error: 1 fel
|
||||
gui_validation_error_plural: "%{count} fel"
|
||||
|
@ -340,8 +341,8 @@ sv:
|
|||
field_group_by: Gruppera resultat efter
|
||||
field_sharing: Delning
|
||||
field_parent_issue: Förälderaktivitet
|
||||
field_member_of_group: Tilldelad användares grupp
|
||||
field_assigned_to_role: Tilldelad användares roll
|
||||
field_member_of_group: "Tilldelad användares grupp"
|
||||
field_assigned_to_role: "Tilldelad användares roll"
|
||||
field_text: Textfält
|
||||
field_visible: Synlig
|
||||
|
||||
|
@ -380,7 +381,7 @@ sv:
|
|||
setting_activity_days_default: Dagar som visas på projektaktivitet
|
||||
setting_display_subprojects_issues: Visa ärenden från underprojekt i huvudprojekt
|
||||
setting_enabled_scm: Aktivera SCM
|
||||
setting_mail_handler_body_delimiters: Trunkera mail efter en av följande rader
|
||||
setting_mail_handler_body_delimiters: "Trunkera mail efter en av följande rader"
|
||||
setting_mail_handler_api_enabled: Aktivera WS för inkommande mail
|
||||
setting_mail_handler_api_key: API-nyckel
|
||||
setting_sequential_project_identifiers: Generera projektidentifierare sekventiellt
|
||||
|
@ -400,6 +401,9 @@ sv:
|
|||
setting_rest_api_enabled: Aktivera REST webbtjänst
|
||||
setting_cache_formatted_text: Cacha formaterad text
|
||||
setting_default_notification_option: Standard notifieringsalternativ
|
||||
setting_commit_logtime_enabled: Aktivera tidloggning
|
||||
setting_commit_logtime_activity_id: Aktivitet för loggad tid
|
||||
setting_gantt_items_limit: Maximalt antal aktiviteter som visas i gantt-schemat
|
||||
|
||||
permission_add_project: Skapa projekt
|
||||
permission_add_subprojects: Skapa underprojekt
|
||||
|
@ -581,7 +585,7 @@ sv:
|
|||
label_version_plural: Versioner
|
||||
label_close_versions: Stäng klara versioner
|
||||
label_confirmation: Bekräftelse
|
||||
label_export_to: Exportera till
|
||||
label_export_to: 'Finns även som:'
|
||||
label_read: Läs...
|
||||
label_public_projects: Publika projekt
|
||||
label_open_issues: öppen
|
||||
|
@ -666,7 +670,7 @@ sv:
|
|||
label_tag: Tag
|
||||
label_revision: Revision
|
||||
label_revision_plural: Revisioner
|
||||
label_revision_id: Revision %{value}
|
||||
label_revision_id: "Revision %{value}"
|
||||
label_associated_revisions: Associerade revisioner
|
||||
label_added: tillagd
|
||||
label_modified: modifierad
|
||||
|
@ -775,10 +779,10 @@ sv:
|
|||
label_search_titles_only: Sök endast i titlar
|
||||
label_user_mail_option_all: "För alla händelser i mina projekt"
|
||||
label_user_mail_option_selected: "För alla händelser i markerade projekt..."
|
||||
label_user_mail_option_none: Inga händelser
|
||||
label_user_mail_option_only_my_events: Endast för saker jag bevakar eller är inblandad i
|
||||
label_user_mail_option_only_assigned: Endast för saker jag är tilldelad
|
||||
label_user_mail_option_only_owner: Endast för saker jag äger
|
||||
label_user_mail_option_none: "Inga händelser"
|
||||
label_user_mail_option_only_my_events: "Endast för saker jag bevakar eller är inblandad i"
|
||||
label_user_mail_option_only_assigned: "Endast för saker jag är tilldelad"
|
||||
label_user_mail_option_only_owner: "Endast för saker jag äger"
|
||||
label_user_mail_no_self_notified: "Jag vill inte bli underrättad om ändringar som jag har gjort"
|
||||
label_registration_activation_by_email: kontoaktivering med mail
|
||||
label_registration_manual_activation: manuell kontoaktivering
|
||||
|
@ -825,7 +829,7 @@ sv:
|
|||
label_display_used_statuses_only: Visa endast status som används av denna ärendetyp
|
||||
label_api_access_key: API-nyckel
|
||||
label_missing_api_access_key: Saknar en API-nyckel
|
||||
label_api_access_key_created_on: API-nyckel skapad för %{value} sedan
|
||||
label_api_access_key_created_on: "API-nyckel skapad för %{value} sedan"
|
||||
label_profile: Profil
|
||||
label_subtask_plural: Underaktiviteter
|
||||
label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras
|
||||
|
@ -921,6 +925,7 @@ sv:
|
|||
text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst."
|
||||
text_load_default_configuration: Läs in standardkonfiguration
|
||||
text_status_changed_by_changeset: "Tilldelad i changeset %{value}."
|
||||
text_time_logged_by_changeset: "Tilldelad i changeset %{value}."
|
||||
text_issues_destroy_confirmation: 'Är du säker på att du vill radera markerade ärende(n) ?'
|
||||
text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:'
|
||||
text_default_administrator_account_changed: Standardadministratörens konto ändrat
|
||||
|
@ -934,14 +939,14 @@ sv:
|
|||
text_user_wrote: "%{value} skrev:"
|
||||
text_enumeration_destroy_question: "%{count} objekt är tilldelade till detta värde."
|
||||
text_enumeration_category_reassign_to: 'Återtilldela till detta värde:'
|
||||
text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/email.yml och starta om applikationen för att aktivera dem."
|
||||
text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/configuration.yml och starta om applikationen för att aktivera dem."
|
||||
text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller mailadress i både Redmine och versionsarkivet mappas automatiskt."
|
||||
text_diff_truncated: '... Denna diff har förminskats eftersom den överskrider den maximala storlek som kan visas.'
|
||||
text_custom_field_possible_values_info: 'Ett värde per rad'
|
||||
text_wiki_page_destroy_question: Denna sida har %{descendants} underliggande sidor. Vad vill du göra?
|
||||
text_wiki_page_nullify_children: Behåll undersidor som rotsidor
|
||||
text_wiki_page_destroy_children: Ta bort alla underliggande sidor
|
||||
text_wiki_page_reassign_children: Flytta undersidor till denna föräldersida
|
||||
text_wiki_page_destroy_question: "Denna sida har %{descendants} underliggande sidor. Vad vill du göra?"
|
||||
text_wiki_page_nullify_children: "Behåll undersidor som rotsidor"
|
||||
text_wiki_page_destroy_children: "Ta bort alla underliggande sidor"
|
||||
text_wiki_page_reassign_children: "Flytta undersidor till denna föräldersida"
|
||||
text_own_membership_delete_confirmation: "Några av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?"
|
||||
text_zoom_out: Zooma ut
|
||||
text_zoom_in: Zooma in
|
||||
|
@ -972,8 +977,3 @@ sv:
|
|||
enumeration_doc_categories: Dokumentkategorier
|
||||
enumeration_activities: Aktiviteter (tidsuppföljning)
|
||||
enumeration_system_activity: Systemaktivitet
|
||||
setting_commit_logtime_activity_id: Activity for logged time
|
||||
text_time_logged_by_changeset: Applied in changeset %{value}.
|
||||
setting_commit_logtime_enabled: Enable time logging
|
||||
notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
|
||||
setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
|
||||
|
|
|
@ -726,7 +726,7 @@ th:
|
|||
label_generate_key: Generate a key
|
||||
setting_mail_handler_api_enabled: Enable WS for incoming emails
|
||||
setting_mail_handler_api_key: API key
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||
field_parent_title: Parent page
|
||||
label_issue_watchers: Watchers
|
||||
setting_commit_logs_encoding: Commit messages encoding
|
||||
|
|
|
@ -741,7 +741,7 @@ tr:
|
|||
label_generate_key: Generate a key
|
||||
setting_sequential_project_identifiers: Generate sequential project identifiers
|
||||
field_parent_title: Parent page
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||
label_issue_watchers: Watchers
|
||||
mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:"
|
||||
|
|
|
@ -725,7 +725,7 @@ uk:
|
|||
label_generate_key: Generate a key
|
||||
setting_mail_handler_api_enabled: Enable WS for incoming emails
|
||||
setting_mail_handler_api_key: API key
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||
field_parent_title: Parent page
|
||||
label_issue_watchers: Watchers
|
||||
setting_commit_logs_encoding: Commit messages encoding
|
||||
|
|
|
@ -760,7 +760,7 @@ vi:
|
|||
text_user_wrote: "%{value} wrote:"
|
||||
text_enumeration_destroy_question: "%{count} objects are assigned to this value."
|
||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
|
||||
|
||||
default_role_manager: Điều hành
|
||||
default_role_developer: Phát triển
|
||||
|
|
|
@ -979,7 +979,7 @@
|
|||
text_user_wrote: "%{value} 先前提到:"
|
||||
text_enumeration_destroy_question: "目前有 %{count} 個物件使用此列舉值。"
|
||||
text_enumeration_category_reassign_to: '重新設定其列舉值為:'
|
||||
text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/email.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。"
|
||||
text_email_delivery_not_configured: "您尚未設定電子郵件傳送方式,因此提醒選項已被停用。\n請在 config/configuration.yml 中設定 SMTP 之後,重新啟動 Redmine,以啟用電子郵件提醒選項。"
|
||||
text_repository_usernames_mapping: "選擇或更新 Redmine 使用者與版本庫使用者之對應關係。\n版本庫中之使用者帳號或電子郵件信箱,與 Redmine 設定相同者,將自動產生對應關係。"
|
||||
text_diff_truncated: '... 這份差異已被截短以符合顯示行數之最大值'
|
||||
text_custom_field_possible_values_info: '一列輸入一個值'
|
||||
|
|
|
@ -869,7 +869,7 @@ zh:
|
|||
text_user_wrote: "%{value} 写到:"
|
||||
text_enumeration_category_reassign_to: '将它们关联到新的枚举值:'
|
||||
text_enumeration_destroy_question: "%{count} 个对象被关联到了这个枚举值。"
|
||||
text_email_delivery_not_configured: "邮件参数尚未配置,因此邮件通知功能已被禁用。\n请在config/email.yml中配置您的SMTP服务器信息并重新启动以使其生效。"
|
||||
text_email_delivery_not_configured: "邮件参数尚未配置,因此邮件通知功能已被禁用。\n请在config/configuration.yml中配置您的SMTP服务器信息并重新启动以使其生效。"
|
||||
text_repository_usernames_mapping: "选择或更新与版本库中的用户名对应的Redmine用户。\n版本库中与Redmine中的同名用户将被自动对应。"
|
||||
text_diff_truncated: '... 差别内容超过了可显示的最大行数并已被截断'
|
||||
text_custom_field_possible_values_info: '每项数值一行'
|
||||
|
|
|
@ -4,6 +4,29 @@ Redmine - project management software
|
|||
Copyright (C) 2006-2011 Jean-Philippe Lang
|
||||
http://www.redmine.org/
|
||||
|
||||
== 2011-01-30 v1.1.1
|
||||
|
||||
* Defect #4899: Redmine fails to list files for darcs repository
|
||||
* Defect #7245: Wiki fails to find pages with cyrillic characters using postgresql
|
||||
* Defect #7256: redmine/public/.htaccess must be moved for non-fastcgi installs/upgrades
|
||||
* Defect #7258: Automatic spent time logging does not work properly with SQLite3
|
||||
* Defect #7259: Released 1.1.0 uses "devel" label inside admin information
|
||||
* Defect #7265: "Loading..." icon does not disappear after add project member
|
||||
* Defect #7266: Test test_due_date_distance_in_words fail due to undefined locale
|
||||
* Defect #7274: CSV value separator in dutch locale
|
||||
* Defect #7277: Enabling gravatas causes usernames to overlap first name field in user list
|
||||
* Defect #7294: "Notifiy for only project I select" is not available anymore in 1.1.0
|
||||
* Defect #7307: HTTP 500 error on query for empty revision
|
||||
* Defect #7313: Label not translated in french in Settings/Email Notification tab
|
||||
* Defect #7329: <code class="javascript"> with long strings may hang server
|
||||
* Defect #7337: My page french translation
|
||||
* Defect #7348: French Translation of "Connection"
|
||||
* Defect #7385: Error when viewing an issue which was related to a deleted subtask
|
||||
* Defect #7386: NoMethodError on pdf export
|
||||
* Defect #7415: Darcs adapter recognizes new files as modified files above Darcs 2.4
|
||||
* Defect #7421: no email sent with 'Notifiy for any event on the selected projects only'
|
||||
* Feature #5344: Update to latest CodeRay 0.9.x
|
||||
|
||||
== 2011-01-09 v1.1.0
|
||||
|
||||
* Defect #2038: Italics in wiki headers show-up wrong in the toc
|
||||
|
|
|
@ -80,8 +80,8 @@ Optional:
|
|||
|
||||
== SMTP server Configuration
|
||||
|
||||
Copy config/email.yml.example to config/email.yml and edit this file
|
||||
to adjust your SMTP settings.
|
||||
Copy config/configuration.yml.example to config/configuration.yml and
|
||||
edit this file to adjust your SMTP settings.
|
||||
Do not forget to restart the application after any change to this file.
|
||||
|
||||
Please do not enter your SMTP settings in environment.rb.
|
||||
|
|
|
@ -10,8 +10,10 @@ http://www.redmine.org/
|
|||
1. Uncompress the program archive in a new directory
|
||||
|
||||
2. Copy your database settings (RAILS_ROOT/config/database.yml)
|
||||
and SMTP settings (RAILS_ROOT/config/email.yml) into the new
|
||||
config directory
|
||||
and your configuration file (RAILS_ROOT/config/configuration.yml)
|
||||
into the new config directory
|
||||
Note: before Redmine 1.2, SMTP configuration was stored in
|
||||
config/email.yml. It should now be stored in config/configuration.yml.
|
||||
|
||||
3. Copy the RAILS_ROOT/files directory content into your new installation
|
||||
This directory contains all the attached files.
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
# Redmine - project management software
|
||||
# Copyright (C) 2006-2011 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
module Redmine
|
||||
module Configuration
|
||||
|
||||
# Configuration default values
|
||||
@defaults = {
|
||||
'email_delivery' => nil
|
||||
}
|
||||
|
||||
@config = nil
|
||||
|
||||
class << self
|
||||
# Loads the Redmine configuration file
|
||||
# Valid options:
|
||||
# * <tt>:file</tt>: the configuration file to load (default: config/configuration.yml)
|
||||
# * <tt>:env</tt>: the environment to load the configuration for (default: Rails.env)
|
||||
def load(options={})
|
||||
filename = options[:file] || File.join(Rails.root, 'config', 'configuration.yml')
|
||||
env = options[:env] || Rails.env
|
||||
|
||||
@config = @defaults.dup
|
||||
|
||||
load_deprecated_email_configuration(env)
|
||||
if File.file?(filename)
|
||||
@config.merge!(load_from_yaml(filename, env))
|
||||
end
|
||||
|
||||
# Compatibility mode for those who copy email.yml over configuration.yml
|
||||
%w(delivery_method smtp_settings sendmail_settings).each do |key|
|
||||
if value = @config.delete(key)
|
||||
@config['email_delivery'] ||= {}
|
||||
@config['email_delivery'][key] = value
|
||||
end
|
||||
end
|
||||
|
||||
if @config['email_delivery']
|
||||
ActionMailer::Base.perform_deliveries = true
|
||||
@config['email_delivery'].each do |k, v|
|
||||
v.symbolize_keys! if v.respond_to?(:symbolize_keys!)
|
||||
ActionMailer::Base.send("#{k}=", v)
|
||||
end
|
||||
end
|
||||
|
||||
@config
|
||||
end
|
||||
|
||||
# Returns a configuration setting
|
||||
def [](name)
|
||||
load unless @config
|
||||
@config[name]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_from_yaml(filename, env)
|
||||
yaml = YAML::load_file(filename)
|
||||
conf = {}
|
||||
if yaml.is_a?(Hash)
|
||||
if yaml['default']
|
||||
conf.merge!(yaml['default'])
|
||||
end
|
||||
if yaml[env]
|
||||
conf.merge!(yaml[env])
|
||||
end
|
||||
else
|
||||
$stderr.puts "#{filename} is not a valid Redmine configuration file"
|
||||
exit 1
|
||||
end
|
||||
conf
|
||||
end
|
||||
|
||||
def load_deprecated_email_configuration(env)
|
||||
deprecated_email_conf = File.join(Rails.root, 'config', 'email.yml')
|
||||
if File.file?(deprecated_email_conf)
|
||||
warn "Storing outgoing emails configuration in config/email.yml is deprecated. You should now store it in config/configuration.yml using the email_delivery setting."
|
||||
@config.merge!({'email_delivery' => load_from_yaml(deprecated_email_conf, env)})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -255,7 +255,7 @@ module Redmine
|
|||
pdf.SetFontStyle('B',9)
|
||||
pdf.Cell(35,5, l(:field_description) + ":")
|
||||
pdf.SetFontStyle('',9)
|
||||
pdf.MultiCell(155,5, issue.description,"BR")
|
||||
pdf.MultiCell(155,5, issue.description.to_s,"BR")
|
||||
|
||||
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
|
||||
pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
|
||||
|
@ -271,7 +271,7 @@ module Redmine
|
|||
pdf.Ln
|
||||
unless changeset.comments.blank?
|
||||
pdf.SetFontStyle('',8)
|
||||
pdf.MultiCell(190,5, changeset.comments)
|
||||
pdf.MultiCell(190,5, changeset.comments.to_s)
|
||||
end
|
||||
pdf.Ln
|
||||
end
|
||||
|
@ -291,7 +291,7 @@ module Redmine
|
|||
end
|
||||
if journal.notes?
|
||||
pdf.SetFontStyle('',8)
|
||||
pdf.MultiCell(190,5, journal.notes)
|
||||
pdf.MultiCell(190,5, journal.notes.to_s)
|
||||
end
|
||||
pdf.Ln
|
||||
end
|
||||
|
|
|
@ -27,30 +27,36 @@ module Redmine
|
|||
delete_unprocessed = (pop_options[:delete_unprocessed].to_s == '1')
|
||||
|
||||
pop = Net::POP3.APOP(apop).new(host,port)
|
||||
puts "Connecting to #{host}..."
|
||||
logger.debug "Connecting to #{host}..." if logger && logger.debug?
|
||||
pop.start(pop_options[:username], pop_options[:password]) do |pop_session|
|
||||
if pop_session.mails.empty?
|
||||
puts "No email to process"
|
||||
logger.debug "No email to process" if logger && logger.debug?
|
||||
else
|
||||
puts "#{pop_session.mails.size} email(s) to process..."
|
||||
logger.debug "#{pop_session.mails.size} email(s) to process..." if logger && logger.debug?
|
||||
pop_session.each_mail do |msg|
|
||||
message = msg.pop
|
||||
message_id = (message =~ /^Message-ID: (.*)/ ? $1 : '').strip
|
||||
if MailHandler.receive(message, options)
|
||||
msg.delete
|
||||
puts "--> Message #{message_id} processed and deleted from the server"
|
||||
logger.debug "--> Message #{message_id} processed and deleted from the server" if logger && logger.debug?
|
||||
else
|
||||
if delete_unprocessed
|
||||
msg.delete
|
||||
puts "--> Message #{message_id} NOT processed and deleted from the server"
|
||||
logger.debug "--> Message #{message_id} NOT processed and deleted from the server" if logger && logger.debug?
|
||||
else
|
||||
puts "--> Message #{message_id} NOT processed and left on the server"
|
||||
logger.debug "--> Message #{message_id} NOT processed and left on the server" if logger && logger.debug?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def logger
|
||||
RAILS_DEFAULT_LOGGER
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -23,7 +23,7 @@ module Redmine
|
|||
class BazaarAdapter < AbstractAdapter
|
||||
|
||||
# Bazaar executable name
|
||||
BZR_BIN = "bzr"
|
||||
BZR_BIN = Redmine::Configuration['scm_bazaar_command'] || "bzr"
|
||||
|
||||
# Get info about the repository
|
||||
def info
|
||||
|
|
|
@ -23,7 +23,7 @@ module Redmine
|
|||
class CvsAdapter < AbstractAdapter
|
||||
|
||||
# CVS executable name
|
||||
CVS_BIN = "cvs"
|
||||
CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs"
|
||||
|
||||
# Guidelines for the input:
|
||||
# url -> the project-path, relative to the cvsroot (eg. module name)
|
||||
|
@ -109,7 +109,7 @@ module Redmine
|
|||
|
||||
path_with_project="#{url}#{with_leading_slash(path)}"
|
||||
cmd = "#{CVS_BIN} -d #{shell_quote root_url} rlog"
|
||||
cmd << " -d\">#{time_to_cvstime(identifier_from)}\"" if identifier_from
|
||||
cmd << " -d\">#{time_to_cvstime_rlog(identifier_from)}\"" if identifier_from
|
||||
cmd << " #{shell_quote path_with_project}"
|
||||
shellout(cmd) do |io|
|
||||
state="entry_start"
|
||||
|
@ -291,6 +291,12 @@ module Redmine
|
|||
return time.strftime("%Y-%m-%d %H:%M:%S")
|
||||
end
|
||||
|
||||
def time_to_cvstime_rlog(time)
|
||||
return nil if time.nil?
|
||||
t1 = time.clone.localtime
|
||||
return t1.strftime("%Y-%m-%d %H:%M:%S")
|
||||
end
|
||||
|
||||
def normalize_cvs_path(path)
|
||||
normalize_path(path.gsub(/Attic\//,''))
|
||||
end
|
||||
|
|
|
@ -23,7 +23,7 @@ module Redmine
|
|||
module Adapters
|
||||
class DarcsAdapter < AbstractAdapter
|
||||
# Darcs executable name
|
||||
DARCS_BIN = "darcs"
|
||||
DARCS_BIN = Redmine::Configuration['scm_darcs_command'] || "darcs"
|
||||
|
||||
class << self
|
||||
def client_version
|
||||
|
@ -31,16 +31,14 @@ module Redmine
|
|||
end
|
||||
|
||||
def darcs_binary_version
|
||||
cmd = "#{DARCS_BIN} --version"
|
||||
version = nil
|
||||
shellout(cmd) do |io|
|
||||
# Read darcs version in first returned line
|
||||
if m = io.gets.match(%r{((\d+\.)+\d+)})
|
||||
version = m[0].scan(%r{\d+}).collect(&:to_i)
|
||||
end
|
||||
darcsversion = darcs_binary_version_from_command_line
|
||||
if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)})
|
||||
m[2].scan(%r{\d+}).collect(&:to_i)
|
||||
end
|
||||
return nil if $? && $?.exitstatus != 0
|
||||
version
|
||||
end
|
||||
|
||||
def darcs_binary_version_from_command_line
|
||||
shellout("#{DARCS_BIN} --version") { |io| io.read }.to_s
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -64,7 +62,9 @@ module Redmine
|
|||
# or nil if the given path doesn't exist in the repository
|
||||
def entries(path=nil, identifier=nil)
|
||||
path_prefix = (path.blank? ? '' : "#{path}/")
|
||||
path = '.' if path.blank?
|
||||
if path.blank?
|
||||
path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' )
|
||||
end
|
||||
entries = Entries.new
|
||||
cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --xml-output"
|
||||
cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier
|
||||
|
@ -168,8 +168,37 @@ module Redmine
|
|||
})
|
||||
end
|
||||
|
||||
# Retrieve changed paths for a single patch
|
||||
def get_paths_for_patch(hash)
|
||||
paths = get_paths_for_patch_raw(hash)
|
||||
if self.class.client_version_above?([2, 4])
|
||||
orig_paths = paths
|
||||
paths = []
|
||||
add_paths = []
|
||||
add_paths_name = []
|
||||
mod_paths = []
|
||||
other_paths = []
|
||||
orig_paths.each do |path|
|
||||
if path[:action] == 'A'
|
||||
add_paths << path
|
||||
add_paths_name << path[:path]
|
||||
elsif path[:action] == 'M'
|
||||
mod_paths << path
|
||||
else
|
||||
other_paths << path
|
||||
end
|
||||
end
|
||||
add_paths_name.each do |add_path|
|
||||
mod_paths.delete_if { |m| m[:path] == add_path }
|
||||
end
|
||||
paths.concat add_paths
|
||||
paths.concat mod_paths
|
||||
paths.concat other_paths
|
||||
end
|
||||
paths
|
||||
end
|
||||
|
||||
# Retrieve changed paths for a single patch
|
||||
def get_paths_for_patch_raw(hash)
|
||||
cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output"
|
||||
cmd << " --match #{shell_quote("hash #{hash}")} "
|
||||
paths = []
|
||||
|
|
|
@ -22,7 +22,7 @@ module Redmine
|
|||
module Adapters
|
||||
class GitAdapter < AbstractAdapter
|
||||
# Git executable name
|
||||
GIT_BIN = "git"
|
||||
GIT_BIN = Redmine::Configuration['scm_git_command'] || "git"
|
||||
|
||||
def info
|
||||
begin
|
||||
|
|
|
@ -24,7 +24,7 @@ module Redmine
|
|||
class MercurialAdapter < AbstractAdapter
|
||||
|
||||
# Mercurial executable name
|
||||
HG_BIN = "hg"
|
||||
HG_BIN = Redmine::Configuration['scm_mercurial_command'] || "hg"
|
||||
TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial"
|
||||
TEMPLATE_NAME = "hg-template"
|
||||
TEMPLATE_EXTENSION = "tmpl"
|
||||
|
|
|
@ -24,7 +24,7 @@ module Redmine
|
|||
class SubversionAdapter < AbstractAdapter
|
||||
|
||||
# SVN executable name
|
||||
SVN_BIN = "svn"
|
||||
SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn"
|
||||
|
||||
class << self
|
||||
def client_version
|
||||
|
|
|
@ -4,7 +4,7 @@ module Redmine
|
|||
module VERSION #:nodoc:
|
||||
MAJOR = 1
|
||||
MINOR = 1
|
||||
TINY = 0
|
||||
TINY = 1
|
||||
|
||||
# Branch values:
|
||||
# * official release: nil
|
||||
|
|
|
@ -287,7 +287,7 @@ task :migrate_from_mantis => :environment do
|
|||
project.versions.each do |version|
|
||||
v = Version.new :name => encode(version.version),
|
||||
:description => encode(version.description),
|
||||
:effective_date => version.date_order.to_date
|
||||
:effective_date => (version.date_order ? version.date_order.to_date : nil)
|
||||
v.project = p
|
||||
v.save
|
||||
versions_map[version.id] = v.id
|
||||
|
|
|
@ -46,7 +46,9 @@
|
|||
<ul>
|
||||
<li>Link to an issue: <strong>#124</strong> (displays <del><a href="#" class="issue" title="bulk edit doesn't change the category or fixed version properties (Closed)">#124</a></del>, link is striked-through if the issue is closed)</li>
|
||||
<li>Link to a changeset: <strong>r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">r758</a>)</li>
|
||||
<li>Link to a changeset with a non-numeric hash: <strong>commit:c6f4d0fd</strong> (displays c6f4d0fd). Added in <a href="#" class="changeset" title="Merged Git support branch (r1200 to r1226).">r1236</a>.</li>
|
||||
<li>Link to a changeset with a non-numeric hash: <strong>commit:c6f4d0fd</strong> (displays <a href="#" class="changeset">c6f4d0fd</a>).</li>
|
||||
<li>Link to a changeset of another project: <strong>sandbox:r758</strong> (displays <a href="#" class="changeset" title="Search engine now only searches objects the user is allowed to view.">sanbox:r758</a>)</li>
|
||||
<li>Link to a changeset with a non-numeric hash: <strong>sandbox:c6f4d0fd</strong> (displays <a href="#" class="changeset">sandbox:c6f4d0fd</a>).</li>
|
||||
</ul>
|
||||
|
||||
<p>Wiki links:</p>
|
||||
|
@ -74,7 +76,7 @@
|
|||
<li><strong>document#17</strong> (link to document with id 17)</li>
|
||||
<li><strong>document:Greetings</strong> (link to the document with title "Greetings")</li>
|
||||
<li><strong>document:"Some document"</strong> (double quotes can be used when document title contains spaces)</li>
|
||||
<li><strong>document:some_project:"Some document"</strong> (link to a document with title "Some document" in other project "some_project")
|
||||
<li><strong>sandbox:document:"Some document"</strong> (link to a document with title "Some document" in other project "sandbox")</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
|
||||
|
@ -84,6 +86,7 @@
|
|||
<li><strong>version#3</strong> (link to version with id 3)</li>
|
||||
<li><strong>version:1.0.0</strong> (link to version named "1.0.0")</li>
|
||||
<li><strong>version:"1.0 beta 2"</strong></li>
|
||||
<li><strong>sandbox:version:1.0.0</strong> (link to version "1.0.0" in the project "sandbox")</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
|
||||
|
@ -104,6 +107,8 @@
|
|||
<li><strong>source:some/file@52#L120</strong> (link to line 120 of the file's revision 52)</li>
|
||||
<li><strong>source:"some file@52#L120"</strong> (use double quotes when the URL contains spaces</li>
|
||||
<li><strong>export:some/file</strong> (force the download of the file)</li>
|
||||
<li><strong>sandbox:source:some/file</strong> (link to the file located at /some/file in the repository of the project "sandbox")</li>
|
||||
<li><strong>sandbox:export:some/file</strong> (force the download of the file)</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
default:
|
||||
somesetting: foo
|
||||
|
||||
production:
|
||||
|
||||
development:
|
||||
|
||||
test:
|
|
@ -0,0 +1,7 @@
|
|||
default:
|
||||
|
||||
production:
|
||||
|
||||
development:
|
||||
|
||||
test:
|
|
@ -0,0 +1,8 @@
|
|||
default:
|
||||
|
||||
production:
|
||||
|
||||
development:
|
||||
|
||||
test:
|
||||
somesetting: foo
|
|
@ -0,0 +1,9 @@
|
|||
default:
|
||||
somesetting: foo
|
||||
|
||||
production:
|
||||
|
||||
development:
|
||||
|
||||
test:
|
||||
somesetting: bar
|
|
@ -33,6 +33,19 @@ class IssueRelationsControllerTest < ActionController::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_new_xhr
|
||||
assert_difference 'IssueRelation.count' do
|
||||
@request.session[:user_id] = 3
|
||||
xhr :post, :new,
|
||||
:issue_id => 3,
|
||||
:relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''}
|
||||
assert_select_rjs 'relations' do
|
||||
assert_select 'table', 1
|
||||
assert_select 'tr', 2 # relations
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_new_should_accept_id_with_hash
|
||||
assert_difference 'IssueRelation.count' do
|
||||
@request.session[:user_id] = 3
|
||||
|
@ -68,4 +81,20 @@ class IssueRelationsControllerTest < ActionController::TestCase
|
|||
post :destroy, :id => '2', :issue_id => '3'
|
||||
end
|
||||
end
|
||||
|
||||
def test_destroy_xhr
|
||||
IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r|
|
||||
r.issue_from_id = 3
|
||||
r.issue_to_id = 1
|
||||
end
|
||||
|
||||
assert_difference 'IssueRelation.count', -1 do
|
||||
@request.session[:user_id] = 3
|
||||
xhr :post, :destroy, :id => '2', :issue_id => '3'
|
||||
assert_select_rjs 'relations' do
|
||||
assert_select 'table', 1
|
||||
assert_select 'tr', 1 # relation left
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -29,6 +29,7 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
|
||||
# CVS module
|
||||
MODULE_NAME = 'test'
|
||||
PRJ_ID = 3
|
||||
|
||||
def setup
|
||||
@controller = RepositoriesController.new
|
||||
|
@ -37,14 +38,18 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
Setting.default_language = 'en'
|
||||
User.current = nil
|
||||
|
||||
@project = Project.find(1)
|
||||
@project.repository = Repository::Cvs.create(:root_url => REPOSITORY_PATH,
|
||||
:url => MODULE_NAME)
|
||||
@project = Project.find(PRJ_ID)
|
||||
@repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
|
||||
:root_url => REPOSITORY_PATH,
|
||||
:url => MODULE_NAME)
|
||||
assert @repository
|
||||
end
|
||||
|
||||
if File.directory?(REPOSITORY_PATH)
|
||||
def test_show
|
||||
get :show, :id => 1
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :show, :id => PRJ_ID
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:entries)
|
||||
|
@ -52,7 +57,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
end
|
||||
|
||||
def test_browse_root
|
||||
get :show, :id => 1
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :show, :id => PRJ_ID
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:entries)
|
||||
|
@ -66,7 +73,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
end
|
||||
|
||||
def test_browse_directory
|
||||
get :show, :id => 1, :path => ['images']
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :show, :id => PRJ_ID, :path => ['images']
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:entries)
|
||||
|
@ -78,8 +87,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
end
|
||||
|
||||
def test_browse_at_given_revision
|
||||
Project.find(1).repository.fetch_changesets
|
||||
get :show, :id => 1, :path => ['images'], :rev => 1
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:entries)
|
||||
|
@ -87,7 +97,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
end
|
||||
|
||||
def test_entry
|
||||
get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb']
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
|
||||
assert_response :success
|
||||
assert_template 'entry'
|
||||
assert_no_tag :tag => 'td', :attributes => { :class => /line-code/},
|
||||
|
@ -96,8 +108,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
|
||||
def test_entry_at_given_revision
|
||||
# changesets must be loaded
|
||||
Project.find(1).repository.fetch_changesets
|
||||
get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :rev => 2
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2
|
||||
assert_response :success
|
||||
assert_template 'entry'
|
||||
# this line was removed in r3
|
||||
|
@ -106,18 +119,24 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
end
|
||||
|
||||
def test_entry_not_found
|
||||
get :entry, :id => 1, :path => ['sources', 'zzz.c']
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c']
|
||||
assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
|
||||
:content => /The entry or revision was not found in the repository/
|
||||
end
|
||||
|
||||
def test_entry_download
|
||||
get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
def test_directory_entry
|
||||
get :entry, :id => 1, :path => ['sources']
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :entry, :id => PRJ_ID, :path => ['sources']
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:entry)
|
||||
|
@ -125,8 +144,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
end
|
||||
|
||||
def test_diff
|
||||
Project.find(1).repository.fetch_changesets
|
||||
get :diff, :id => 1, :rev => 3, :type => 'inline'
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :diff, :id => PRJ_ID, :rev => 3, :type => 'inline'
|
||||
assert_response :success
|
||||
assert_template 'diff'
|
||||
assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
|
||||
|
@ -136,8 +156,9 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
|
|||
end
|
||||
|
||||
def test_annotate
|
||||
Project.find(1).repository.fetch_changesets
|
||||
get :annotate, :id => 1, :path => ['sources', 'watchers_controller.rb']
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
|
||||
assert_response :success
|
||||
assert_template 'annotate'
|
||||
# 1.1 line
|
||||
|
|
|
@ -170,6 +170,15 @@ class RepositoriesGitControllerTest < ActionController::TestCase
|
|||
:sibling => { :tag => 'td', :content => /watcher =/ }
|
||||
end
|
||||
|
||||
def test_annotate_at_given_revision
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
get :annotate, :id => 3, :rev => 'deff7', :path => ['sources', 'watchers_controller.rb']
|
||||
assert_response :success
|
||||
assert_template 'annotate'
|
||||
assert_tag :tag => 'h2', :content => /@ deff712f/
|
||||
end
|
||||
|
||||
def test_annotate_binary_file
|
||||
get :annotate, :id => 3, :path => ['images', 'edit.png']
|
||||
assert_response 500
|
||||
|
|
|
@ -196,6 +196,17 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
|
|||
:sibling => { :tag => 'td', :content => /watcher =/ }
|
||||
end
|
||||
|
||||
def test_annotate_at_given_revision
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
[2, '400bb8672109', '400', 400].each do |r1|
|
||||
get :annotate, :id => 3, :rev => r1, :path => ['sources', 'watchers_controller.rb']
|
||||
assert_response :success
|
||||
assert_template 'annotate'
|
||||
assert_tag :tag => 'h2', :content => /@ 2:400bb8672109/
|
||||
end
|
||||
end
|
||||
|
||||
def test_empty_revision
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
|
|
@ -228,6 +228,13 @@ class RepositoriesSubversionControllerTest < ActionController::TestCase
|
|||
assert_response :success
|
||||
assert_template 'annotate'
|
||||
end
|
||||
|
||||
def test_annotate_at_given_revision
|
||||
get :annotate, :id => 1, :rev => 8, :path => ['subversion_test', 'helloworld.c']
|
||||
assert_response :success
|
||||
assert_template 'annotate'
|
||||
assert_tag :tag => 'h2', :content => /@ 8/
|
||||
end
|
||||
else
|
||||
puts "Subversion test repository NOT FOUND. Skipping functional tests !!!"
|
||||
def test_fake; assert true end
|
||||
|
|
|
@ -200,7 +200,7 @@ RAW
|
|||
'export:/some/file' => link_to('export:/some/file', source_url.merge(:format => 'raw'), :class => 'source download'),
|
||||
# message
|
||||
'message#4' => link_to('Post 2', message_url, :class => 'message'),
|
||||
'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5'), :class => 'message'),
|
||||
'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5', :r => 5), :class => 'message'),
|
||||
# project
|
||||
'project#3' => link_to('eCookbook Subproject 1', project_url, :class => 'project'),
|
||||
'project:subproject1' => link_to('eCookbook Subproject 1', project_url, :class => 'project'),
|
||||
|
@ -225,6 +225,35 @@ RAW
|
|||
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" }
|
||||
end
|
||||
|
||||
def test_cross_project_redmine_links
|
||||
source_link = link_to('ecookbook:source:/some/file', {:controller => 'repositories', :action => 'entry', :id => 'ecookbook', :path => ['some', 'file']},
|
||||
:class => 'source')
|
||||
|
||||
changeset_link = link_to('ecookbook:r2', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 2},
|
||||
:class => 'changeset', :title => 'This commit fixes #1, #2 and references #1 & #3')
|
||||
|
||||
to_test = {
|
||||
# documents
|
||||
'document:"Test document"' => 'document:"Test document"',
|
||||
'ecookbook:document:"Test document"' => '<a href="/documents/1" class="document">Test document</a>',
|
||||
'invalid:document:"Test document"' => 'invalid:document:"Test document"',
|
||||
# versions
|
||||
'version:"1.0"' => 'version:"1.0"',
|
||||
'ecookbook:version:"1.0"' => '<a href="/versions/show/2" class="version">1.0</a>',
|
||||
'invalid:version:"1.0"' => 'invalid:version:"1.0"',
|
||||
# changeset
|
||||
'r2' => 'r2',
|
||||
'ecookbook:r2' => changeset_link,
|
||||
'invalid:r2' => 'invalid:r2',
|
||||
# source
|
||||
'source:/some/file' => 'source:/some/file',
|
||||
'ecookbook:source:/some/file' => source_link,
|
||||
'invalid:source:/some/file' => 'invalid:source:/some/file',
|
||||
}
|
||||
@project = Project.find(3)
|
||||
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" }
|
||||
end
|
||||
|
||||
def test_redmine_links_git_commit
|
||||
changeset_link = link_to('abcd',
|
||||
{
|
||||
|
|
|
@ -202,7 +202,19 @@ class IssueNestedSetTest < ActiveSupport::TestCase
|
|||
issue2 = create_issue!
|
||||
issue3 = create_issue!(:parent_issue_id => issue2.id)
|
||||
issue4 = create_issue!(:parent_issue_id => issue1.id)
|
||||
issue2.reload.destroy
|
||||
|
||||
issue3.init_journal(User.find(2))
|
||||
issue3.subject = 'child with journal'
|
||||
issue3.save!
|
||||
|
||||
assert_difference 'Issue.count', -2 do
|
||||
assert_difference 'Journal.count', -1 do
|
||||
assert_difference 'JournalDetail.count', -1 do
|
||||
Issue.find(issue2.id).destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
issue1.reload
|
||||
issue4.reload
|
||||
assert !Issue.exists?(issue2.id)
|
||||
|
@ -211,6 +223,26 @@ class IssueNestedSetTest < ActiveSupport::TestCase
|
|||
assert_equal [issue1.id, 2, 3], [issue4.root_id, issue4.lft, issue4.rgt]
|
||||
end
|
||||
|
||||
def test_destroy_child_issue_with_children
|
||||
root = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'root')
|
||||
child = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'child', :parent_issue_id => root.id)
|
||||
leaf = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'leaf', :parent_issue_id => child.id)
|
||||
leaf.init_journal(User.find(2))
|
||||
leaf.subject = 'leaf with journal'
|
||||
leaf.save!
|
||||
|
||||
assert_difference 'Issue.count', -2 do
|
||||
assert_difference 'Journal.count', -1 do
|
||||
assert_difference 'JournalDetail.count', -1 do
|
||||
Issue.find(child.id).destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
root = Issue.find(root.id)
|
||||
assert root.leaf?, "Root issue is not a leaf (lft: #{root.lft}, rgt: #{root.rgt})"
|
||||
end
|
||||
|
||||
def test_parent_priority_should_be_the_highest_child_priority
|
||||
parent = create_issue!(:priority => IssuePriority.find_by_name('Normal'))
|
||||
# Create children
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
# Redmine - project management software
|
||||
# Copyright (C) 2006-2011 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.expand_path('../../../../test_helper', __FILE__)
|
||||
|
||||
class Redmine::ConfigurationTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
@conf = Redmine::Configuration
|
||||
end
|
||||
|
||||
def test_empty
|
||||
assert_kind_of Hash, load_conf('empty.yml', 'test')
|
||||
end
|
||||
|
||||
def test_default
|
||||
assert_kind_of Hash, load_conf('default.yml', 'test')
|
||||
assert_equal 'foo', @conf['somesetting']
|
||||
end
|
||||
|
||||
def test_no_default
|
||||
assert_kind_of Hash, load_conf('no_default.yml', 'test')
|
||||
assert_equal 'foo', @conf['somesetting']
|
||||
end
|
||||
|
||||
def test_overrides
|
||||
assert_kind_of Hash, load_conf('overrides.yml', 'test')
|
||||
assert_equal 'bar', @conf['somesetting']
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_conf(file, env)
|
||||
@conf.load(
|
||||
:file => File.join(Rails.root, 'test', 'fixtures', 'configuration', file),
|
||||
:env => env
|
||||
)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,42 @@
|
|||
require File.expand_path('../../../../../../test_helper', __FILE__)
|
||||
begin
|
||||
require 'mocha'
|
||||
|
||||
class CvsAdapterTest < ActiveSupport::TestCase
|
||||
|
||||
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
|
||||
MODULE_NAME = 'test'
|
||||
|
||||
if File.directory?(REPOSITORY_PATH)
|
||||
def setup
|
||||
@adapter = Redmine::Scm::Adapters::CvsAdapter.new(MODULE_NAME, REPOSITORY_PATH)
|
||||
end
|
||||
|
||||
def test_revisions_all
|
||||
cnt = 0
|
||||
@adapter.revisions('', nil, nil, :with_paths => true) do |revision|
|
||||
cnt += 1
|
||||
end
|
||||
assert_equal 14, cnt
|
||||
end
|
||||
|
||||
def test_revisions_from_rev3
|
||||
rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
|
||||
cnt = 0
|
||||
@adapter.revisions('', rev3_committed_on, nil, :with_paths => true) do |revision|
|
||||
cnt += 1
|
||||
end
|
||||
assert_equal 2, cnt
|
||||
end
|
||||
else
|
||||
puts "Cvs test repository NOT FOUND. Skipping unit tests !!!"
|
||||
def test_fake; assert true end
|
||||
end
|
||||
end
|
||||
|
||||
rescue LoadError
|
||||
class CvsMochaFake < ActiveSupport::TestCase
|
||||
def test_fake; assert(false, "Requires mocha to run those tests") end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
require File.expand_path('../../../../../../test_helper', __FILE__)
|
||||
begin
|
||||
require 'mocha'
|
||||
|
||||
class DarcsAdapterTest < ActiveSupport::TestCase
|
||||
|
||||
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository'
|
||||
|
||||
if File.directory?(REPOSITORY_PATH)
|
||||
def setup
|
||||
@adapter = Redmine::Scm::Adapters::DarcsAdapter.new(REPOSITORY_PATH)
|
||||
end
|
||||
|
||||
def test_darcsversion
|
||||
to_test = { "1.0.9 (release)\n" => [1,0,9] ,
|
||||
"2.2.0 (release)\n" => [2,2,0] }
|
||||
to_test.each do |s, v|
|
||||
test_darcsversion_for(s, v)
|
||||
end
|
||||
end
|
||||
|
||||
def test_revisions
|
||||
id1 = '20080308225258-98289-761f654d669045eabee90b91b53a21ce5593cadf.gz'
|
||||
revs = @adapter.revisions('', nil, nil, {:with_path => true})
|
||||
assert_equal 6, revs.size
|
||||
assert_equal id1, revs[5].scmid
|
||||
paths = revs[5].paths
|
||||
assert_equal 5, paths.size
|
||||
assert_equal 'A', paths[0][:action]
|
||||
assert_equal '/README', paths[0][:path]
|
||||
assert_equal 'A', paths[1][:action]
|
||||
assert_equal '/images', paths[1][:path]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def test_darcsversion_for(darcsversion, version)
|
||||
@adapter.class.expects(:darcs_binary_version_from_command_line).returns(darcsversion)
|
||||
assert_equal version, @adapter.class.darcs_binary_version
|
||||
end
|
||||
|
||||
else
|
||||
puts "Darcs test repository NOT FOUND. Skipping unit tests !!!"
|
||||
def test_fake; assert true end
|
||||
end
|
||||
end
|
||||
|
||||
rescue LoadError
|
||||
class DarcsMochaFake < ActiveSupport::TestCase
|
||||
def test_fake; assert(false, "Requires mocha to run those tests") end
|
||||
end
|
||||
end
|
||||
|
|
@ -69,6 +69,17 @@ begin
|
|||
end
|
||||
end
|
||||
|
||||
def test_diff_made_by_revision
|
||||
if @adapter.class.client_version_above?([1, 2])
|
||||
[16, '16', '4cddb4e45f52'].each do |r1|
|
||||
diff1 = @adapter.diff(nil, r1)
|
||||
assert_equal 5, diff1.size
|
||||
buf = diff1[4].gsub(/\r\n|\r|\n/, "")
|
||||
assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_cat
|
||||
[2, '400bb8672109', '400', 400].each do |r|
|
||||
buf = @adapter.cat('sources/welcome_controller.rb', r)
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue