Compare commits

..

1 Commits

Author SHA1 Message Date
Jean-Philippe Lang 1faf02c9f5 tagged version 1.2.0
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/tags/1.2.0@5968 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-30 16:41:28 +00:00
203 changed files with 6032 additions and 3377 deletions
+1 -18
View File
@@ -1,24 +1,7 @@
# 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.
class ActivitiesController < ApplicationController
menu_item :activity
before_filter :find_optional_project
accept_rss_auth :index
accept_key_auth :index
def index
@days = Setting.activity_days_default.to_i
+7 -37
View File
@@ -18,8 +18,6 @@
require 'uri'
require 'cgi'
class Unauthorized < Exception; end
class ApplicationController < ActionController::Base
include Redmine::I18n
@@ -43,7 +41,6 @@ class ApplicationController < ActionController::Base
protect_from_forgery
rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
rescue_from ::Unauthorized, :with => :deny_access
include Redmine::Search::Controller
include Redmine::MenuManager::MenuController
@@ -71,11 +68,11 @@ class ApplicationController < ActionController::Base
user = User.try_to_autologin(cookies[:autologin])
session[:user_id] = user.id if user
user
elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth?
elsif params[:format] == 'atom' && params[:key] && accept_key_auth_actions.include?(params[:action])
# RSS key authentication does not start a session
User.find_by_rss_key(params[:key])
elsif Setting.rest_api_enabled? && accept_api_auth?
if (key = api_key_from_request)
elsif Setting.rest_api_enabled? && api_request?
if (key = api_key_from_request) && accept_key_auth_actions.include?(params[:action])
# Use API key
User.find_by_api_key(key)
else
@@ -332,41 +329,14 @@ class ApplicationController < ActionController::Base
@title = options[:title] || Setting.app_title
render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml'
end
# TODO: remove in Redmine 1.4
def self.accept_key_auth(*actions)
ActiveSupport::Deprecation.warn "ApplicationController.accept_key_auth is deprecated and will be removed in Redmine 1.4. Use accept_rss_auth (or accept_api_auth) instead."
accept_rss_auth(*actions)
actions = actions.flatten.map(&:to_s)
write_inheritable_attribute('accept_key_auth_actions', actions)
end
# TODO: remove in Redmine 1.4
def accept_key_auth_actions
ActiveSupport::Deprecation.warn "ApplicationController.accept_key_auth_actions is deprecated and will be removed in Redmine 1.4. Use accept_rss_auth (or accept_api_auth) instead."
self.class.accept_rss_auth
end
def self.accept_rss_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_rss_auth_actions', actions)
else
read_inheritable_attribute('accept_rss_auth_actions') || []
end
end
def accept_rss_auth?(action=action_name)
self.class.accept_rss_auth.include?(action.to_sym)
end
def self.accept_api_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_api_auth_actions', actions)
else
read_inheritable_attribute('accept_api_auth_actions') || []
end
end
def accept_api_auth?(action=action_name)
self.class.accept_api_auth.include?(action.to_sym)
self.class.read_inheritable_attribute('accept_key_auth_actions') || []
end
# Returns the number of objects that should be displayed
+3 -3
View File
@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# redMine - project management software
# Copyright (C) 2006-2007 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
@@ -18,7 +18,7 @@
class BoardsController < ApplicationController
default_search_scope :messages
before_filter :find_project, :find_board_if_available, :authorize
accept_rss_auth :index, :show
accept_key_auth :index, :show
helper :messages
include MessagesHelper
@@ -1,4 +1,4 @@
# Redmine - project management software
# redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
+2 -3
View File
@@ -27,8 +27,7 @@ class IssuesController < ApplicationController
before_filter :find_optional_project, :only => [:index]
before_filter :check_for_default_issue_status, :only => [:new, :create]
before_filter :build_new_issue_from_params, :only => [:new, :create]
accept_rss_auth :index, :show
accept_api_auth :index, :show, :create, :update, :destroy
accept_key_auth :index, :show, :create, :update, :destroy
rescue_from Query::StatementInvalid, :with => :query_statement_invalid
@@ -302,7 +301,6 @@ private
end
@issue.project = @project
@issue.author = User.current
# Tracker must be set before custom field values
@issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first)
if @issue.tracker.nil?
@@ -316,6 +314,7 @@ private
@issue.watcher_user_ids = params[:issue]['watcher_user_ids']
end
end
@issue.author = User.current
@priorities = IssuePriority.all
@allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
end
+1 -1
View File
@@ -20,7 +20,7 @@ class JournalsController < ApplicationController
before_filter :find_issue, :only => [:new]
before_filter :find_optional_project, :only => [:index]
before_filter :authorize, :only => [:new, :edit, :diff]
accept_rss_auth :index
accept_key_auth :index
menu_item :issues
helper :issues
+1 -2
View File
@@ -23,8 +23,7 @@ class NewsController < ApplicationController
before_filter :find_project, :only => [:new, :create]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => :index
accept_rss_auth :index
accept_api_auth :index
accept_key_auth :index
helper :watchers
+1 -2
View File
@@ -24,8 +24,7 @@ class ProjectsController < ApplicationController
before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
before_filter :authorize_global, :only => [:new, :create]
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
accept_rss_auth :index
accept_api_auth :index, :show, :create, :update, :destroy
accept_key_auth :index, :show, :create, :update, :destroy
after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller|
if controller.request.post?
+2 -2
View File
@@ -30,7 +30,7 @@ class RepositoriesController < ApplicationController
before_filter :find_repository, :except => :edit
before_filter :find_project, :only => :edit
before_filter :authorize
accept_rss_auth :revisions
accept_key_auth :revisions
rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed
@@ -208,7 +208,7 @@ class RepositoriesController < ApplicationController
User.current.preference.save
end
@cache_key = "repositories/diff/#{@repository.id}/" +
Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}")
Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}")
unless read_fragment(@cache_key)
@diff = @repository.diff(@path, @rev, @rev_to)
show_error_not_found unless @diff
+4 -4
View File
@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# redMine - project management software
# Copyright (C) 2006 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
@@ -24,8 +24,8 @@ class SearchController < ApplicationController
def index
@question = params[:q] || ""
@question.strip!
@all_words = params[:all_words] ? params[:all_words].present? : true
@titles_only = params[:titles_only] ? params[:titles_only].present? : false
@all_words = params[:all_words] || (params[:submit] ? false : true)
@titles_only = !params[:titles_only].nil?
projects_to_search =
case params[:scope]
+2 -3
View File
@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2010 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
@@ -22,8 +22,7 @@ class TimelogController < ApplicationController
before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy]
before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => [:index]
accept_rss_auth :index
accept_api_auth :index, :show, :create, :update, :destroy
accept_key_auth :index, :show, :create, :update, :destroy
helper :sort
include SortHelper
+1 -1
View File
@@ -20,7 +20,7 @@ class UsersController < ApplicationController
before_filter :require_admin, :except => :show
before_filter :find_user, :only => [:show, :edit, :update, :destroy, :edit_membership, :destroy_membership]
accept_api_auth :index, :show, :create, :update, :destroy
accept_key_auth :index, :show, :create, :update, :destroy
helper :sort
include SortHelper
+3 -12
View File
@@ -550,20 +550,15 @@ module ApplicationHelper
if page =~ /^(.+?)\#(.+)$/
page, anchor = $1, $2
end
anchor = sanitize_anchor_name(anchor) if anchor.present?
# check if page exists
wiki_page = link_project.wiki.find_page(page)
url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page
"##{anchor}"
else
case options[:wiki_links]
when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '')
url = case options[:wiki_links]
when :local; "#{title}.html"
when :anchor; "##{title}" # used for single-file wiki export
else
wiki_page_id = page.present? ? Wiki.titleize(page) : nil
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, :id => wiki_page_id, :anchor => anchor)
end
end
link_to((title || page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
else
# project or wiki doesn't exist
@@ -708,7 +703,7 @@ module ApplicationHelper
text.gsub!(HEADING_RE) do
level, attrs, content = $1.to_i, $2, $3
item = strip_tags(content).strip
anchor = sanitize_anchor_name(item)
anchor = item.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
@parsed_headings << [level, anchor, item]
"<a name=\"#{anchor}\"></a>\n<h#{level} #{attrs}>#{content}<a href=\"##{anchor}\" class=\"wiki-anchor\">&para;</a></h#{level}>"
end
@@ -894,10 +889,6 @@ module ApplicationHelper
end
end
def sanitize_anchor_name(anchor)
anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
end
# Returns the javascript tags that are included in the html layout head
def javascript_heads
tags = javascript_include_tag(:defaults)
-1
View File
@@ -70,7 +70,6 @@ module QueriesHelper
cond = "project_id IS NULL"
cond << " OR project_id = #{@project.id}" if @project
@query = Query.find(params[:query_id], :conditions => cond)
raise ::Unauthorized unless @query.visible?
@query.project = @project
session[:query] = {:id => @query.id, :project_id => @query.project_id}
sort_clear
+3 -3
View File
@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# redMine - project management software
# Copyright (C) 2006-2007 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
@@ -57,7 +57,7 @@ module SearchHelper
c = results_by_type[t]
next if c == 0
text = "#{type_label(t)} (#{c})"
links << link_to(text, :q => params[:q], :titles_only => params[:titles_only], :all_words => params[:all_words], :scope => params[:scope], t => 1)
links << link_to(text, :q => params[:q], :titles_only => params[:title_only], :all_words => params[:all_words], :scope => params[:scope], t => 1)
end
('<ul>' + links.map {|link| content_tag('li', link)}.join(' ') + '</ul>') unless links.empty?
end
+1 -1
View File
@@ -193,7 +193,7 @@ class Changeset < ActiveRecord::Base
def fix_issue(issue)
status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i)
if status.nil?
logger.warn("No status matches commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger
logger.warn("No status macthes commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger
return issue
end
+1 -9
View File
@@ -42,14 +42,6 @@ class CustomField < ActiveRecord::Base
errors.add(:possible_values, :invalid) unless self.possible_values.is_a? Array
end
if regexp.present?
begin
Regexp.new(regexp)
rescue
errors.add(:regexp, :invalid)
end
end
# validate default value
v = CustomValue.new(:custom_field => self.clone, :value => default_value, :customized => nil)
v.custom_field.is_required = false
@@ -64,7 +56,7 @@ class CustomField < ActiveRecord::Base
when 'user'
obj.project.users.sort.collect {|u| [u.to_s, u.id.to_s]}
when 'version'
obj.project.shared_versions.sort.collect {|u| [u.to_s, u.id.to_s]}
obj.project.versions.sort.collect {|u| [u.to_s, u.id.to_s]}
end
elsif obj.is_a?(Array)
obj.collect {|o| possible_values_options(o)}.inject {|memo, v| memo & v}
-1
View File
@@ -32,7 +32,6 @@ class Enumeration < ActiveRecord::Base
named_scope :shared, :conditions => { :project_id => nil }
named_scope :active, :conditions => { :active => true }
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def self.default
# Creates a fake default scope so Enumeration.default will check
+1 -12
View File
@@ -227,13 +227,6 @@ class Issue < ActiveRecord::Base
@custom_field_values = nil
result
end
def description=(arg)
if arg.is_a?(String)
arg = arg.gsub(/(\r\n|\n|\r)/, "\r\n")
end
write_attribute(:description, arg)
end
# Overrides attributes= so that tracker_id gets assigned first
def attributes_with_tracker_first=(new_attributes, *args)
@@ -449,7 +442,6 @@ class Issue < ActiveRecord::Base
def assignable_users
users = project.assignable_users
users << author if author
users << assigned_to if assigned_to
users.uniq.sort
end
@@ -878,13 +870,10 @@ class Issue < ActiveRecord::Base
if @current_journal
# attributes changes
(Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c|
before = @issue_before_change.send(c)
after = send(c)
next if before == after || (before.blank? && after.blank?)
@current_journal.details << JournalDetail.new(:property => 'attr',
:prop_key => c,
:old_value => @issue_before_change.send(c),
:value => send(c))
:value => send(c)) unless send(c)==@issue_before_change.send(c)
}
# custom fields changes
custom_values.each {|c|
+2 -4
View File
@@ -1,5 +1,5 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# redMine - project management software
# Copyright (C) 2006 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
@@ -24,8 +24,6 @@ class IssueCategory < ActiveRecord::Base
validates_uniqueness_of :name, :scope => [:project_id]
validates_length_of :name, :maximum => 30
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
alias :destroy_without_reassign :destroy
# Destroy the category
+1 -6
View File
@@ -47,12 +47,7 @@ class IssueRelation < ActiveRecord::Base
if issue_from && issue_to
errors.add :issue_to_id, :invalid if issue_from_id == issue_to_id
errors.add :issue_to_id, :not_same_project unless issue_from.project_id == issue_to.project_id || Setting.cross_project_issue_relations?
#detect circular dependencies depending wether the relation should be reversed
if TYPES.has_key?(relation_type) && TYPES[relation_type][:reverse]
errors.add_to_base :circular_dependency if issue_from.all_dependent_issues.include? issue_to
else
errors.add_to_base :circular_dependency if issue_to.all_dependent_issues.include? issue_from
end
errors.add_to_base :circular_dependency if issue_to.all_dependent_issues.include? issue_from
errors.add_to_base :cant_link_an_issue_with_a_descendant if issue_from.is_descendant_of?(issue_to) || issue_from.is_ancestor_of?(issue_to)
end
end
+8 -12
View File
@@ -26,8 +26,6 @@ class IssueStatus < ActiveRecord::Base
validates_uniqueness_of :name
validates_length_of :name, :maximum => 30
validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def after_save
IssueStatus.update_all("is_default=#{connection.quoted_false}", ['id <> ?', id]) if self.is_default?
@@ -58,7 +56,8 @@ class IssueStatus < ActiveRecord::Base
transitions = workflows.select do |w|
role_ids.include?(w.role_id) &&
w.tracker_id == tracker.id &&
((!w.author && !w.assignee) || (author && w.author) || (assignee && w.assignee))
(author || !w.author) &&
(assignee || !w.assignee)
end
transitions.collect{|w| w.new_status}.compact.sort
else
@@ -69,17 +68,14 @@ class IssueStatus < ActiveRecord::Base
# Same thing as above but uses a database query
# More efficient than the previous method if called just once
def find_new_statuses_allowed_to(roles, tracker, author=false, assignee=false)
if roles.present? && tracker
conditions = "(author = :false AND assignee = :false)"
conditions << " OR author = :true" if author
conditions << " OR assignee = :true" if assignee
if roles && tracker
conditions = {:role_id => roles.collect(&:id), :tracker_id => tracker.id}
conditions[:author] = false unless author
conditions[:assignee] = false unless assignee
workflows.find(:all,
:include => :new_status,
:conditions => ["role_id IN (:role_ids) AND tracker_id = :tracker_id AND (#{conditions})",
{:role_ids => roles.collect(&:id), :tracker_id => tracker.id, :true => true, :false => false}
]
).collect{|w| w.new_status}.compact.sort
:include => :new_status,
:conditions => conditions).collect{|w| w.new_status}.compact.sort
else
[]
end
+6 -6
View File
@@ -198,7 +198,7 @@ class MailHandler < ActionMailer::Base
end
def add_attachments(obj)
if email.attachments && email.attachments.any?
if email.has_attachments?
email.attachments.each do |attachment|
Attachment.create(:container => obj,
:file => attachment,
@@ -265,12 +265,12 @@ class MailHandler < ActionMailer::Base
assigned_to = nil if assigned_to && !issue.assignable_users.include?(assigned_to)
attrs = {
'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.named(k).first.try(:id),
'status_id' => (k = get_keyword(:status)) && IssueStatus.named(k).first.try(:id),
'priority_id' => (k = get_keyword(:priority)) && IssuePriority.named(k).first.try(:id),
'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.named(k).first.try(:id),
'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id),
'status_id' => (k = get_keyword(:status)) && IssueStatus.find_by_name(k).try(:id),
'priority_id' => (k = get_keyword(:priority)) && IssuePriority.find_by_name(k).try(:id),
'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.find_by_name(k).try(:id),
'assigned_to_id' => assigned_to.try(:id),
'fixed_version_id' => (k = get_keyword(:fixed_version, :override => true)) && issue.project.shared_versions.named(k).first.try(:id),
'fixed_version_id' => (k = get_keyword(:fixed_version, :override => true)) && issue.project.shared_versions.find_by_name(k).try(:id),
'start_date' => get_keyword(:start_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'),
'due_date' => get_keyword(:due_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'),
'estimated_hours' => get_keyword(:estimated_hours, :override => true),
+1 -26
View File
@@ -118,11 +118,6 @@ class Project < ActiveRecord::Base
visible(user).find(:all, :limit => count, :order => "created_on DESC")
end
# Returns true if the project is visible to +user+ or to the current user.
def visible?(user=User.current)
user.allowed_to?(:view_project, self)
end
def self.visible_by(user=nil)
ActiveSupport::Deprecation.warn "Project.visible_by is deprecated and will be removed in Redmine 1.3.0. Use Project.visible_condition instead."
visible_condition(user || User.current)
@@ -549,27 +544,7 @@ class Project < ActiveRecord::Base
def enabled_module_names
enabled_modules.collect(&:name)
end
# Enable a specific module
#
# Examples:
# project.enable_module!(:issue_tracking)
# project.enable_module!("issue_tracking")
def enable_module!(name)
enabled_modules << EnabledModule.new(:name => name.to_s) unless module_enabled?(name)
end
# Disable a module if it exists
#
# Examples:
# project.disable_module!(:issue_tracking)
# project.disable_module!("issue_tracking")
# project.disable_module!(project.enabled_modules.first)
def disable_module!(target)
target = enabled_modules.detect{|mod| target.to_s == mod.name} unless enabled_modules.include?(target)
target.destroy unless target.blank?
end
safe_attributes 'name',
'description',
'homepage',
+10 -18
View File
@@ -165,11 +165,6 @@ class Query < ActiveRecord::Base
["o", "c", "!*", "*", "t", "w"].include? operator_for(field)
end if filters
end
# Returns true if the query is visible to +user+ or the current user.
def visible?(user=User.current)
self.is_public? || self.user_id == user.id
end
def editable_by?(user)
return false unless user
@@ -333,17 +328,14 @@ class Query < ActiveRecord::Base
end
def columns
# preserve the column_names order
(has_default_columns? ? default_columns_names : column_names).collect do |name|
available_columns.find { |col| col.name == name }
end.compact
end
def default_columns_names
@default_columns_names ||= begin
default_columns = Setting.issue_list_default_columns.map(&:to_sym)
project.present? ? default_columns : [:project] | default_columns
if has_default_columns?
available_columns.select do |c|
# Adds the project column by default for cross-project lists
Setting.issue_list_default_columns.include?(c.name.to_s) || (c.name == :project && project.nil?)
end
else
# preserve the column_names order
column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact
end
end
@@ -352,7 +344,7 @@ class Query < ActiveRecord::Base
names = names.select {|n| n.is_a?(Symbol) || !n.blank? }
names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym }
# Set column_names to nil if default columns
if names == default_columns_names
if names.map(&:to_s) == Setting.issue_list_default_columns
names = nil
end
end
@@ -521,7 +513,7 @@ class Query < ActiveRecord::Base
# Returns the issue count
def issue_count
Issue.visible.count(:include => [:status, :project], :conditions => statement)
Issue.count(:include => [:status, :project], :conditions => statement)
rescue ::ActiveRecord::StatementInvalid => e
raise StatementInvalid.new(e.message)
end
+4 -4
View File
@@ -117,7 +117,7 @@ class Repository < ActiveRecord::Base
end
def default_branch
nil
scm.default_branch
end
def properties(path, identifier=nil)
@@ -276,7 +276,7 @@ class Repository < ActiveRecord::Base
ret = ""
begin
ret = self.scm_adapter_class.client_command if self.scm_adapter_class
rescue Exception => e
rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get command: #{e.message}"
end
ret
@@ -286,7 +286,7 @@ class Repository < ActiveRecord::Base
ret = ""
begin
ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class
rescue Exception => e
rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get version string: #{e.message}"
end
ret
@@ -296,7 +296,7 @@ class Repository < ActiveRecord::Base
ret = false
begin
ret = self.scm_adapter_class.client_available if self.scm_adapter_class
rescue Exception => e
rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get scm available: #{e.message}"
end
ret
-15
View File
@@ -75,10 +75,6 @@ class Repository::Git < Repository
scm.tags
end
def default_branch
scm.default_branch
end
def find_changeset_by_name(name)
return nil if name.nil? || name.empty?
e = changesets.find(:first, :conditions => ['revision = ?', name.to_s])
@@ -92,17 +88,6 @@ class Repository::Git < Repository
options = {:report_last_commit => extra_report_last_commit})
end
# With SCMs that have a sequential commit numbering,
# such as Subversion and Mercurial,
# Redmine is able to be clever and only fetch changesets
# going forward from the most recent one it knows about.
#
# However, Git does not have a sequential commit numbering.
#
# In order to fetch only new adding revisions,
# Redmine needs to parse revisions per branch.
# Branch "last_scmid" is for this requirement.
#
# In Git and Mercurial, revisions are not in date order.
# Redmine Mercurial fixed issues.
# * Redmine Takes Too Long On Large Mercurial Repository
-1
View File
@@ -123,7 +123,6 @@ class Repository::Mercurial < Repository
private :latest_changesets_cond
def fetch_changesets
return if scm.info.nil?
scm_rev = scm.info.lastrev.revision.to_i
db_rev = latest_changeset ? latest_changeset.revision.to_i : -1
return unless db_rev < scm_rev # already up-to-date
-2
View File
@@ -32,8 +32,6 @@ class Tracker < ActiveRecord::Base
validates_uniqueness_of :name
validates_length_of :name, :maximum => 30
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def to_s; name end
def <=>(tracker)
-1
View File
@@ -33,7 +33,6 @@ class Version < ActiveRecord::Base
validates_inclusion_of :status, :in => VERSION_STATUSES
validates_inclusion_of :sharing, :in => VERSION_SHARINGS
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
named_scope :open, :conditions => {:status => 'open'}
named_scope :visible, lambda {|*args| { :include => :project,
:conditions => Project.allowed_to_condition(args.first || User.current, :view_issues) } }
+2 -6
View File
@@ -30,7 +30,7 @@ class WikiPage < ActiveRecord::Base
:datetime => :created_on,
:url => Proc.new {|o| {:controller => 'wiki', :action => 'show', :project_id => o.wiki.project, :id => o.title}}
acts_as_searchable :columns => ['title', "#{WikiContent.table_name}.text"],
acts_as_searchable :columns => ['title', 'text'],
:include => [{:wiki => :project}, :content],
:permission => :view_wiki_pages,
:project_key => "#{Wiki.table_name}.project_id"
@@ -212,10 +212,6 @@ class WikiAnnotate
break unless @lines.detect { |line| line[0].nil? }
current = current.previous
end
@lines.each { |line|
line[0] ||= current.version
# if the last known version is > 1 (eg. history was cleared), we don't know the author
line[1] ||= current.author if current.version == 1
}
@lines.each { |line| line[0] ||= current.version }
end
end
+2 -2
View File
@@ -89,8 +89,8 @@ class Workflow < ActiveRecord::Base
else
transaction do
delete_all :tracker_id => target_tracker.id, :role_id => target_role.id
connection.insert "INSERT INTO #{Workflow.table_name} (tracker_id, role_id, old_status_id, new_status_id, author, assignee)" +
" SELECT #{target_tracker.id}, #{target_role.id}, old_status_id, new_status_id, author, assignee" +
connection.insert "INSERT INTO #{Workflow.table_name} (tracker_id, role_id, old_status_id, new_status_id)" +
" SELECT #{target_tracker.id}, #{target_role.id}, old_status_id, new_status_id" +
" FROM #{Workflow.table_name}" +
" WHERE tracker_id = #{source_tracker.id} AND role_id = #{source_role.id}"
end
+4 -4
View File
@@ -15,10 +15,10 @@
<tbody>
<% for source in @auth_sources %>
<tr class="<%= cycle("odd", "even") %>">
<td><%= link_to(h(source.name), :action => 'edit', :id => source)%></td>
<td align="center"><%= h source.auth_method_name %></td>
<td align="center"><%= h source.host %></td>
<td align="center"><%= h source.users.count %></td>
<td><%= link_to source.name, :action => 'edit', :id => source%></td>
<td align="center"><%= source.auth_method_name %></td>
<td align="center"><%= source.host %></td>
<td align="center"><%= source.users.count %></td>
<td class="buttons">
<%= link_to l(:button_test), :action => 'test_connection', :id => source %>
<%= link_to l(:button_delete), { :action => 'destroy', :id => source },
+1 -1
View File
@@ -5,7 +5,7 @@ api.array :projects, api_meta(:total_count => @project_count, :offset => @offset
api.name project.name
api.identifier project.identifier
api.description project.description
api.parent(:id => project.parent.id, :name => project.parent.name) if project.parent && project.parent.visible?
api.parent(:id => project.parent_id, :name => project.parent.name) unless project.parent.nil?
render_api_custom_values project.visible_custom_field_values, api
-1
View File
@@ -4,7 +4,6 @@ api.project do
api.identifier @project.identifier
api.description @project.description
api.homepage @project.homepage
api.parent(:id => @project.parent.id, :name => @project.parent.name) if @project.parent && @project.parent.visible?
render_api_custom_values @project.visible_custom_field_values, api
-2
View File
@@ -5,9 +5,7 @@
<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
<%= javascript_tag "Field.focus('search-input')" %>
<%= project_select_tag %>
<%= hidden_field_tag 'all_words', '', :id => nil %>
<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>
<%= hidden_field_tag 'titles_only', '', :id => nil %>
<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>
</p>
<p>
-1
View File
@@ -32,7 +32,6 @@
</div>
<% content_for :header_tags do %>
<%= stylesheet_link_tag 'scm' %>
<%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
:title => "#{Setting.app_title}: #{l(:label_news_latest)}") %>
<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
+7 -15
View File
@@ -89,7 +89,7 @@ default:
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
@@ -98,7 +98,7 @@ default:
# 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: /)
@@ -106,17 +106,10 @@ default:
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 + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
#
# On Windows + JRuby 1.6.2, path which contains spaces does not work.
# For example, "C:\Program Files\TortoiseHg\hg.exe".
# If you want to this feature, you need to install to the path which does not contains spaces.
# For example, "C:\TortoiseHg\hg.exe".
#
# On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
# Examples:
# scm_subversion_command: svn # (default: svn)
# scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg)
@@ -124,14 +117,13 @@ default:
# scm_cvs_command: cvs # (default: cvs)
# scm_bazaar_command: bzr.exe # (default: bzr)
# scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
#
scm_subversion_command:
scm_mercurial_command:
scm_git_command:
scm_cvs_command:
scm_bazaar_command:
scm_darcs_command:
# Key used to encrypt sensitive data in the database (SCM and LDAP passwords).
# If you don't want to enable data encryption, just leave it blank.
# WARNING: losing/changing this key will make encrypted data unreadable.
@@ -144,8 +136,8 @@ default:
# * decrypt data using 'rake db:decrypt RAILS_ENV=production' first
# * change the cipher key here in your configuration file
# * encrypt data using 'rake db:encrypt RAILS_ENV=production'
database_cipher_key:
database_cipher_key:
# specific configuration options for production environment
# that overrides the default ones
production:
+1 -1
View File
@@ -7,7 +7,7 @@ module ActiveRecord
# Translate attribute names for validation errors display
def self.human_attribute_name(attr)
l("field_#{attr.to_s.gsub(/_id$/, '')}", :default => attr)
l("field_#{attr.to_s.gsub(/_id$/, '')}")
end
end
end
+35 -37
View File
@@ -1,6 +1,5 @@
# German translations for Ruby on Rails
# by Clemens Kofler (clemens@railway.at)
# additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com)
de:
direction: ltr
@@ -950,48 +949,47 @@ de:
field_member_of_group: Zuständigkeitsgruppe
field_assigned_to_role: Zuständigkeitsrolle
field_visible: Sichtbar
setting_emails_header: E-Mail Betreffzeile
setting_emails_header: Emailkopf
setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung
text_time_logged_by_changeset: Angewendet in Changeset %{value}.
setting_commit_logtime_enabled: Aktiviere Zeitlogging
notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max})
setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden.
field_warn_on_leaving_unsaved: vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen
text_warn_on_leaving_unsaved: Die aktuellen Änderungen gehen verloren, wenn Sie diese Seite verlassen.
label_my_queries: Meine eigenen Abfragen
text_journal_changed_no_detail: "%{label} aktualisiert"
label_news_comment_added: Kommentar zu einer News hinzugefügt
button_expand_all: Alle ausklappen
button_collapse_all: Alle einklappen
label_additional_workflow_transitions_for_assignee: Zusätzliche Berechtigungen wenn der Benutzer der Zugewiesene ist
label_additional_workflow_transitions_for_author: Zusätzliche Berechtigungen wenn der Benutzer der Autor ist
label_bulk_edit_selected_time_entries: Ausgewählte Zeitaufwände bearbeiten
text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewählten Zeitaufwände löschen möchten?
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Comment added to a news
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
label_role_non_member: Nichtmitglied
label_issue_note_added: Notiz hinzugefügt
label_issue_status_updated: Status aktualisiert
label_issue_priority_updated: Priorität aktualisiert
label_issues_visibility_own: Tickets die folgender User erstellt hat oder die ihm zugewiesen sind
field_issues_visibility: Ticket Sichtbarkeit
label_issues_visibility_all: Alle Tickets
permission_set_own_issues_private: Eigene Tickets privat oder öffentlich markieren
field_is_private: Privat
permission_set_issues_private: Tickets privat oder öffentlich markieren
label_issues_visibility_public: Alle öffentlichen Tickets
text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n löschen.
label_role_non_member: Non member
label_issue_note_added: Note added
label_issue_status_updated: Status updated
label_issue_priority_updated: Priority updated
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen
field_scm_path_encoding: Pfad Kodierung
text_scm_path_encoding_note: "Standard: UTF-8"
field_path_to_repository: Pfad zum repository
field_root_directory: Wurzelverzeichnis
field_cvs_module: Modul
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_cvsroot: CVSROOT
text_git_repository_note: Bare und lokales repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Kommando
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Bericht des letzten Commits für Dateien und Verzeichnisse
text_scm_config: Die SCM-Kommandos können in der in config/configuration.yml konfiguriert werden. Redmine muss anschließend neu gestartet werden.
text_scm_command_not_available: Scm Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel.
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+42 -42
View File
@@ -132,7 +132,7 @@ es:
greater_than_start_date: "debe ser posterior a la fecha de comienzo"
not_same_project: "no pertenece al mismo proyecto"
circular_dependency: "Esta relación podría crear una dependencia circular"
cant_link_an_issue_with_a_descendant: "Esta petición no puede ser ligada a una de estas tareas"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
# Append your own errors here or at the model/attributes scope.
@@ -970,46 +970,46 @@ es:
field_visible: Visible
setting_emails_header: Encabezado de Correos
setting_commit_logtime_activity_id: Actividad de los tiempos registrados
text_time_logged_by_changeset: Aplicado en los cambios %{value}.
setting_commit_logtime_enabled: Habilitar registro de horas
notice_gantt_chart_truncated: Se recortó el diagrama porque excede el número máximo de elementos que pueden ser mostrados (%{max})
setting_gantt_items_limit: Número máximo de elementos mostrados en el diagrama de Gantt
field_warn_on_leaving_unsaved: Avisarme cuando vaya a abandonar una página con texto no guardado
text_warn_on_leaving_unsaved: Esta página contiene texto no guardado y si la abandona sus cambios se perderán
label_my_queries: Mis consultas personalizadas
text_journal_changed_no_detail: "Se actualizó %{label}"
label_news_comment_added: Comentario añadido a noticia
button_expand_all: Expandir todo
button_collapse_all: Contraer todo
label_additional_workflow_transitions_for_assignee: Transiciones adicionales permitidas cuando la petición está asignada al usuario
label_additional_workflow_transitions_for_author: Transiciones adicionales permitidas cuando el usuario es autor de la petición
label_bulk_edit_selected_time_entries: Editar en bloque las horas seleccionadas
text_time_entries_destroy_confirmation: ¿Está seguro de querer eliminar (la hora seleccionada/las horas seleccionadas)?
label_role_anonymous: Anónimo
label_role_non_member: No miembro
label_issue_note_added: Nota añadida
label_issue_status_updated: Estado actualizado
label_issue_priority_updated: Prioridad actualizada
label_issues_visibility_own: Peticiones creadas por el usuario o asignadas a él
field_issues_visibility: Visibilidad de las peticiones
label_issues_visibility_all: Todas las peticiones
permission_set_own_issues_private: Poner las peticiones propias como públicas o privadas
field_is_private: Privada
permission_set_issues_private: Poner peticiones como públicas o privadas
label_issues_visibility_public: Todas las peticiones no privadas
text_issues_destroy_descendants_confirmation: Se procederá a borrar también %{count} subtarea(s).
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
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Comment added to a news
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
label_role_non_member: Non member
label_issue_note_added: Note added
label_issue_status_updated: Status updated
label_issue_priority_updated: Priority updated
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Codificación de los mensajes de commit
field_scm_path_encoding: Codificación de las rutas
text_scm_path_encoding_note: "Por defecto: UTF-8"
field_path_to_repository: Ruta al repositorio
field_root_directory: Directorio raíz
field_cvs_module: Módulo
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_cvsroot: CVSROOT
text_git_repository_note: Repositorio local (bare repository) (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Repositorio local (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Orden
text_scm_command_version: Versión
label_git_report_last_commit: Informar del último commit para ficheros y directorios
text_scm_config: Puede configurar las órdenes de cada scm en configuration/configuration.yml. Por favor, reinicie la aplicación después de editarlo
text_scm_command_not_available: La orden para el Scm no está disponible. Por favor, compruebe la configuración en el panel de administración.
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+53 -53
View File
@@ -34,40 +34,40 @@
distance_in_words:
half_a_minute: 'fél perc'
less_than_x_seconds:
# zero: 'kevesebb, mint 1 másodperce'
one: 'kevesebb, mint 1 másodperce'
other: 'kevesebb, mint %{count} másodperce'
# zero: 'kevesebb, mint 1 másodperc'
one: 'kevesebb, mint 1 másodperc'
other: 'kevesebb, mint %{count} másodperc'
x_seconds:
one: '1 másodperce'
other: '%{count} másodperce'
one: '1 másodperc'
other: '%{count} másodperc'
less_than_x_minutes:
# zero: 'kevesebb, mint 1 perce'
one: 'kevesebb, mint 1 perce'
other: 'kevesebb, mint %{count} perce'
# zero: 'kevesebb, mint 1 perc'
one: 'kevesebb, mint 1 perc'
other: 'kevesebb, mint %{count} perc'
x_minutes:
one: '1 perce'
other: '%{count} perce'
one: '1 perc'
other: '%{count} perc'
about_x_hours:
one: 'csaknem 1 órája'
other: 'csaknem %{count} órája'
one: 'majdnem 1 óra'
other: 'majdnem %{count} óra'
x_days:
one: '1 napja'
other: '%{count} napja'
one: '1 nap'
other: '%{count} nap'
about_x_months:
one: 'csaknem 1 hónapja'
other: 'csaknem %{count} hónapja'
one: 'majdnem 1 hónap'
other: 'majdnem %{count} hónap'
x_months:
one: '1 hónapja'
other: '%{count} hónapja'
one: '1 hónap'
other: '%{count} hónap'
about_x_years:
one: 'csaknem 1 éve'
other: 'csaknem %{count} éve'
one: 'majdnem 1 év'
other: 'majdnem %{count} év'
over_x_years:
one: 'több, mint 1 éve'
other: 'több, mint %{count} éve'
one: 'több, mint 1 év'
other: 'több, mint %{count} év'
almost_x_years:
one: "csaknem 1 éve"
other: "csaknem %{count} éve"
one: "közel 1 év"
other: "közel %{count} év"
prompts:
year: "Év"
month: "Hónap"
@@ -264,7 +264,7 @@
field_attr_mail: E-mail
field_onthefly: On-the-fly felhasználó létrehozás
field_start_date: Kezdés dátuma
field_done_ratio: Készültség (%)
field_done_ratio: Elkészült (%)
field_auth_source: Azonosítási mód
field_hide_mail: Rejtse el az e-mail címem
field_comments: Megjegyzés
@@ -280,7 +280,7 @@
field_delay: Késés
field_assignable: Feladat rendelhető ehhez a szerepkörhöz
field_redirect_existing_links: Létező linkek átirányítása
field_estimated_hours: Becsült időigény
field_estimated_hours: Becsült idő
field_column_names: Oszlopok
field_time_zone: Időzóna
field_searchable: Kereshető
@@ -326,7 +326,7 @@
project_module_documents: Dokumentumok
project_module_files: Fájlok
project_module_wiki: Wiki
project_module_repository: Forráskód
project_module_repository: Tároló
project_module_boards: Fórumok
label_user: Felhasználó
@@ -391,7 +391,7 @@
label_assigned_to_me_issues: A nekem kiosztott feladatok
label_last_login: Utolsó bejelentkezés
label_registered_on: Regisztrált
label_activity: Történések
label_activity: Tevékenységek
label_overall_activity: Teljes aktivitás
label_new: Új
label_logged_as: Bejelentkezve, mint
@@ -510,8 +510,8 @@
label_contains: tartalmazza
label_not_contains: nem tartalmazza
label_day_plural: nap
label_repository: Forráskód
label_repository_plural: Forráskódok
label_repository: Tároló
label_repository_plural: Tárolók
label_browse: Tallóz
label_modification: "%{count} változás"
label_modification_plural: "%{count} változás"
@@ -600,10 +600,10 @@
label_language_based: A felhasználó nyelve alapján
label_sort_by: "%{value} szerint rendezve"
label_send_test_email: Teszt e-mail küldése
label_feeds_access_key_created_on: "RSS hozzáférési kulcs létrehozva %{value}"
label_feeds_access_key_created_on: "RSS hozzáférési kulcs létrehozva ennyivel ezelőtt: %{value}"
label_module_plural: Modulok
label_added_time_by: "%{author} adta hozzá %{age}"
label_updated_time: "Utolsó módosítás %{value}"
label_added_time_by: "%{author} adta hozzá ennyivel ezelőtt: %{age}"
label_updated_time: "Utolsó módosítás ennyivel ezelőtt: %{value}"
label_jump_to_a_project: Ugrás projekthez...
label_file_plural: Fájlok
label_changeset_plural: Changesets
@@ -695,11 +695,11 @@
text_unallowed_characters: Tiltott karakterek
text_comma_separated: Több érték megengedett (vesszővel elválasztva)
text_issues_ref_in_commit_messages: Hivatkozás feladatokra, feladatok javítása a commit üzenetekben
text_issue_added: "%{author} új feladatot hozott létre %{id} sorszámmal."
text_issue_updated: "%{author} módosította a %{id} sorszámú feladatot."
text_issue_added: "A feladatot %{id} bejelentette: %{author}."
text_issue_updated: "A feladatot %{id} módosította: %{author}."
text_wiki_destroy_confirmation: Biztosan törölni szeretné ezt a wiki-t minden tartalmával együtt ?
text_issue_category_destroy_question: "Néhány feladat (%{count}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni?"
text_issue_category_destroy_assignments: Kategória hozzárendelés megszüntetése
text_issue_category_destroy_question: "Néhány feladat (%{count}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni ?"
text_issue_category_destroy_assignments: Kategória hozzárendelés megszűntetése
text_issue_category_reassign_to: Feladatok újra hozzárendelése másik kategóriához
text_user_mail_option: "A nem kiválasztott projektekről csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelő)"
text_no_configuration_data: "Szerepkörök, feladat típusok, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErősen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt."
@@ -709,8 +709,8 @@
text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:'
text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva
text_file_repository_writable: Fájl tároló írható
text_rmagick_available: RMagick elérhető (nem kötelező)
text_destroy_time_entries_question: "%{hours} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni?"
text_rmagick_available: RMagick elérhető (opcionális)
text_destroy_time_entries_question: "%{hours} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni ?"
text_destroy_time_entries: A rögzített órák törlése
text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez
text_reassign_time_entries: 'A rögzített órák újra hozzárendelése másik feladathoz:'
@@ -720,7 +720,7 @@
default_role_reporter: Bejelentő
default_tracker_bug: Hiba
default_tracker_feature: Fejlesztés
default_tracker_support: Támogatás
default_tracker_support: Support
default_issue_status_new: Új
default_issue_status_in_progress: Folyamatban
default_issue_status_resolved: Megoldva
@@ -741,7 +741,7 @@
enumeration_doc_categories: Dokumentum kategóriák
enumeration_activities: Tevékenységek (idő rögzítés)
mail_body_reminder: "%{count} neked kiosztott feladat határidős az elkövetkező %{days} napban:"
mail_subject_reminder: "%{count} feladat határidős az elkövetkező %{days} napban"
mail_subject_reminder: "%{count} feladat határidős az elkövetkező %{days} napokban"
text_user_wrote: "%{value} írta:"
label_duplicated_by: duplikálta
setting_enabled_scm: Forráskódkezelő (SCM) engedélyezése
@@ -812,14 +812,14 @@
permission_edit_own_messages: Saját üzenetek szerkesztése
permission_delete_own_messages: Saját üzenetek törlése
label_user_activity: "%{value} tevékenységei"
label_updated_time_by: "Módosította %{author} %{age}"
label_updated_time_by: "Módosította %{author} ennyivel ezelőtt: %{age}"
text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthető sorok száma.'
setting_diff_max_lines_displayed: A megjelenítendő sorok száma (maximum) a diff fájloknál
text_plugin_assets_writable: Plugin eszközök könyvtár írható
warning_attachments_not_saved: "%{count} fájl mentése nem sikerült."
button_create_and_continue: Létrehozás és folytatás
text_custom_field_possible_values_info: 'Értékenként egy sor'
label_display: Megmutat
label_display: Megjelenés
field_editable: Szerkeszthető
setting_repository_log_display_limit: Maximum hány revíziót mutasson meg a log megjelenítésekor
setting_file_max_size_displayed: Maximum mekkora szövegfájlokat jelenítsen meg soronkénti összehasonlításnál
@@ -835,40 +835,40 @@
label_greater_or_equal: ">="
label_less_or_equal: "<="
text_wiki_page_destroy_question: Ennek az oldalnak %{descendants} gyermek-, és leszármazott oldala van. Mit szeretne tenni?
text_wiki_page_reassign_children: Aloldalak hozzárendelése ehhez a szülő oldalhoz
text_wiki_page_nullify_children: Aloldalak átalakítása főoldal
text_wiki_page_reassign_children: Az aloldalak hozzárendelése ehhez a szülő oldalhoz
text_wiki_page_nullify_children: Az aloldalak megtartása, mint főoldalak
text_wiki_page_destroy_children: Minden aloldal és leszármazottjának törlése
setting_password_min_length: Minimum jelszó hosszúság
field_group_by: Szerint csoportosítva
mail_subject_wiki_content_updated: "'%{id}' wiki oldal frissítve"
label_wiki_content_added: Wiki oldal hozzáadva
mail_subject_wiki_content_added: "Új wiki oldal: '%{id}'"
mail_body_wiki_content_added: %{author} létrehozta a '%{id}' wiki oldalt.
mail_body_wiki_content_added: A '%{id}' wiki oldalt %{author} hozta létre.
label_wiki_content_updated: Wiki oldal frissítve
mail_body_wiki_content_updated: %{author} frissítette a '%{id}' wiki oldalt.
mail_body_wiki_content_updated: A '%{id}' wiki oldalt %{author} frissítette.
permission_add_project: Projekt létrehozása
setting_new_project_user_role_id: Projekt létrehozási jog nem adminisztrátor felhasználóknak
label_view_all_revisions: Összes verzió
label_view_all_revisions: Minden revízió megtekintése
label_tag: Tag
label_branch: Branch
error_no_tracker_in_project: Nincs feladat típus hozzárendelve ehhez a projekthez. Kérem ellenőrizze a projekt beállításait.
error_no_default_issue_status: Nincs alapértelmezett feladat státusz beállítva. Kérem ellenőrizze a beállításokat (Itt találja "Adminisztráció -> Feladat státuszok").
text_journal_changed: "%{label} megváltozott, %{old} helyett %{new} lett"
text_journal_changed: "%{label} változott erről: %{old} erre: %{new}"
text_journal_set_to: "%{label} új értéke: %{value}"
text_journal_deleted: "%{label} törölve lett (%{old})"
text_journal_deleted: "%{label} törölve (%{old})"
label_group_plural: Csoportok
label_group: Csoport
label_group_new: Új csoport
label_time_entry_plural: Időráfordítás
label_time_entry_plural: Rögzített idő
text_journal_added: "%{label} %{value} hozzáadva"
field_active: Aktív
enumeration_system_activity: Rendszertevékenység
enumeration_system_activity: Rendszer Tevékenység
permission_delete_issue_watchers: Megfigyelők törlése
version_status_closed: lezárt
version_status_locked: zárolt
version_status_open: nyitott
error_can_not_reopen_issue_on_closed_version: Lezárt verzióhoz rendelt feladatot nem lehet újranyitni
label_user_anonymous: Névtelen
label_user_anonymous: Anonymous
button_move_and_follow: Mozgatás és követés
setting_default_projects_modules: Alapértelmezett modulok az új projektekhez
setting_gravatar_default: Alapértelmezett Gravatar kép
+36 -36
View File
@@ -939,41 +939,41 @@ it:
setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento
notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare
setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di gantt
field_warn_on_leaving_unsaved: Avvisami quando lascio una pagina con testo non salvato
text_warn_on_leaving_unsaved: La pagina corrente contiene del testo non salvato che verrà perso se lasci questa pagina.
label_my_queries: Le mie queries personalizzate
text_journal_changed_no_detail: "%{label} aggiornato"
label_news_comment_added: Commento aggiunto a una notizia
button_expand_all: Espandi tutto
button_collapse_all: Comprimi tutto
label_additional_workflow_transitions_for_assignee: Transizioni supplementari consentite quando l'utente è l'assegnatario
label_additional_workflow_transitions_for_author: Transizioni supplementari consentite quando l'utente è l'autore
label_bulk_edit_selected_time_entries: Modifica massiva delle ore segnalate selezionate
text_time_entries_destroy_confirmation: Sei sicuro di voler eliminare l'ora\e selezionata\e?
label_role_anonymous: Anonimo
label_role_non_member: Non membro
label_issue_note_added: Nota aggiunta
label_issue_status_updated: Stato aggiornato
label_issue_priority_updated: Priorità aggiornata
label_issues_visibility_own: Segnalazioni create o assegnate all'utente
field_issues_visibility: Visibilità segnalazioni
label_issues_visibility_all: Tutte le segnalazioni
permission_set_own_issues_private: Imposta le proprie segnalazioni pubbliche o private
field_is_private: Privato
permission_set_issues_private: Imposta le segnalazioni pubbliche o private
label_issues_visibility_public: Tutte le segnalazioni non private
text_issues_destroy_descendants_confirmation: Questo eliminerà anche %{count} sottoattività.
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Comment added to a news
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
label_role_non_member: Non member
label_issue_note_added: Note added
label_issue_status_updated: Status updated
label_issue_priority_updated: Priority updated
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Codifica dei messaggi di commit
field_scm_path_encoding: Codifica del percorso
text_scm_path_encoding_note: "Predefinito: UTF-8"
field_path_to_repository: Percorso del repository
field_root_directory: Directory radice
field_cvs_module: Modulo
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_cvsroot: CVSROOT
text_git_repository_note: Repository centrale e locale (es. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Repository locale (es. /hgrepo, c:\hgrepo)
text_scm_command: Comando
text_scm_command_version: Versione
label_git_report_last_commit: Riporta l'ultimo commit per files e directories
text_scm_config: Puoi configurare i comandi scm nel file config/configuration.yml. E' necessario riavviare l'applicazione dopo averlo modificato.
text_scm_command_not_available: Il comando scm non è disponibile. Controllare le impostazioni nel pannello di amministrazione.
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
-8
View File
@@ -158,14 +158,6 @@ ja:
general_csv_separator: ','
general_csv_decimal_separator: '.'
general_csv_encoding: CP932
## Redmine 1.2.0 現在、この値によって、pdfの出力のフォントを切り替えています。
## CRuby では CP932 にしてください。
## JRuby 1.6.2 (ruby-1.8.7-p330) では、CP932 ですと
## Iconv::InvalidEncoding例外が発生します。
## JRuby では、SJIS か Shift_JIS にしてください。
## ご存知の通り、CP932 と SJIS は別物ですが、
## そこまでの検証はしていません。
# general_pdf_encoding: SJIS
general_pdf_encoding: CP932
general_first_day_of_week: '7'
+9 -9
View File
@@ -123,7 +123,7 @@ nl:
greater_than_start_date: "moet na de startdatum liggen"
not_same_project: "hoort niet bij hetzelfde project"
circular_dependency: "Deze relatie zou een circulaire afhankelijkheid tot gevolg hebben"
cant_link_an_issue_with_a_descendant: "Een issue kan niet gelinked worden met een subtask"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Selecteer
@@ -703,7 +703,7 @@ nl:
setting_bcc_recipients: Blind carbon copy ontvangers (bcc)
setting_commit_fix_keywords: Gefixeerde trefwoorden
setting_commit_ref_keywords: Refererende trefwoorden
setting_cross_project_issue_relations: Sta cross-project issuerelaties toe
setting_cross_project_issue_relations: Sta crossproject issuerelaties toe
setting_date_format: Datumformaat
setting_default_language: Standaard taal
setting_default_projects_public: Nieuwe projecten zijn standaard publiek
@@ -908,8 +908,8 @@ nl:
label_user_mail_option_only_my_events: Alleen voor dingen die ik volg of bij betrokken ben
label_user_mail_option_only_assigned: Alleen voor dingen die aan mij zijn toegewezen
label_user_mail_option_none: Bij geen enkele gebeurtenis
field_member_of_group: Groep van toegewezene
field_assigned_to_role: Rol van toegewezene
field_member_of_group: Assignee's group
field_assigned_to_role: Assignee's role
notice_not_authorized_archived_project: Het project dat u wilt bezoeken is gearchiveerd.
label_principal_search: "Zoek naar gebruiker of groep:"
label_user_search: "Zoek naar gebruiker:"
@@ -925,10 +925,10 @@ nl:
label_my_queries: Mijn aangepaste zoekopdrachten
text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Commentaar toegevoegd aan een nieuwsitem
button_expand_all: Klap uit
button_collapse_all: Klap in
label_additional_workflow_transitions_for_assignee: Aanvullende veranderingen toegestaan wanneer de gebruiker de toegewezene is
label_additional_workflow_transitions_for_author: Aanvullende veranderingen toegestaan wanneer de gebruiker de auteur is
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
@@ -946,7 +946,7 @@ nl:
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Encodering van commit berichten
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Standaard: UTF-8"
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
+223 -225
View File
@@ -114,7 +114,7 @@
greater_than_start_date: "må være større enn startdato"
not_same_project: "hører ikke til samme prosjekt"
circular_dependency: "Denne relasjonen ville lagd en sirkulær avhengighet"
cant_link_an_issue_with_a_descendant: "En sak kan ikke kobles mot en av sine undersaker"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Vennligst velg
@@ -212,7 +212,7 @@
field_role: Rolle
field_homepage: Hjemmeside
field_is_public: Offentlig
field_parent: Underprosjekt av
field_parent: Underprosjekt til
field_is_in_roadmap: Vises i veikart
field_login: Brukernavn
field_mail_notification: E-post-varsling
@@ -236,8 +236,8 @@
field_onthefly: On-the-fly brukeropprettelse
field_start_date: Start
field_done_ratio: "% Ferdig"
field_auth_source: Autentiseringskilde
field_hide_mail: Skjul min epost-adresse
field_auth_source: Autentifikasjonsmodus
field_hide_mail: Skjul min e-post-adresse
field_comments: Kommentarer
field_url: URL
field_start_page: Startside
@@ -247,7 +247,7 @@
field_spent_on: Dato
field_identifier: Identifikasjon
field_is_filter: Brukes som filter
field_issue_to: Relaterte saker
field_issue_to: Relatert saker
field_delay: Forsinkelse
field_assignable: Saker kan tildeles denne rollen
field_redirect_existing_links: Viderekoble eksisterende lenker
@@ -266,24 +266,24 @@
setting_self_registration: Selvregistrering
setting_attachment_max_size: Maks. størrelse vedlegg
setting_issues_export_limit: Eksportgrense for saker
setting_mail_from: Avsenders epost
setting_mail_from: Avsenders e-post
setting_bcc_recipients: Blindkopi (bcc) til mottakere
setting_host_name: Vertsnavn
setting_text_formatting: Tekstformattering
setting_wiki_compression: Komprimering av Wiki-historikk
setting_feeds_limit: Innholdsgrense for Feed
setting_default_projects_public: Nye prosjekter er offentlige som standard
setting_autofetch_changesets: Autohenting av endringssett
setting_autofetch_changesets: Autohenting av innsendinger
setting_sys_api_enabled: Aktiver webservice for depot-administrasjon
setting_commit_ref_keywords: Nøkkelord for referanse
setting_commit_fix_keywords: Nøkkelord for retting
setting_autologin: Autoinnlogging
setting_date_format: Datoformat
setting_time_format: Tidsformat
setting_cross_project_issue_relations: Tillat saksrelasjoner på kryss av prosjekter
setting_cross_project_issue_relations: Tillat saksrelasjoner mellom prosjekter
setting_issue_list_default_columns: Standardkolonner vist i sakslisten
setting_repositories_encodings: Depot-tegnsett
setting_emails_footer: Epost-signatur
setting_emails_footer: E-post-signatur
setting_protocol: Protokoll
setting_per_page_options: Alternativer, objekter pr. side
setting_user_format: Visningsformat, brukere
@@ -291,8 +291,8 @@
setting_display_subprojects_issues: Vis saker fra underprosjekter på hovedprosjekt som standard
setting_enabled_scm: Aktiviserte SCM
project_module_issue_tracking: Sakshåndtering
project_module_time_tracking: Tidsregistrering
project_module_issue_tracking: Sakssporing
project_module_time_tracking: Tidssporing
project_module_news: Nyheter
project_module_documents: Dokumenter
project_module_files: Filer
@@ -326,7 +326,7 @@
label_role: Rolle
label_role_plural: Roller
label_role_new: Ny rolle
label_role_and_permissions: Roller og rettigheter
label_role_and_permissions: Roller og tillatelser
label_member: Medlem
label_member_new: Nytt medlem
label_member_plural: Medlemmer
@@ -343,7 +343,7 @@
label_custom_field: Eget felt
label_custom_field_plural: Egne felt
label_custom_field_new: Nytt eget felt
label_enumerations: Listeverdier
label_enumerations: Kodelister
label_enumeration_new: Ny verdi
label_information: Informasjon
label_information_plural: Informasjon
@@ -367,10 +367,10 @@
label_new: Ny
label_logged_as: Innlogget som
label_environment: Miljø
label_authentication: Autentisering
label_auth_source: Autentiseringskilde
label_auth_source_new: Ny autentiseringskilde
label_auth_source_plural: Autentiseringskilder
label_authentication: Autentifikasjon
label_auth_source: Autentifikasjonsmodus
label_auth_source_new: Ny autentifikasjonmodus
label_auth_source_plural: Autentifikasjonsmoduser
label_subproject_plural: Underprosjekter
label_and_its_subprojects: "%{value} og dets underprosjekter"
label_min_max_length: Min.-maks. lengde
@@ -423,13 +423,13 @@
one: 1 åpen
other: "%{count} åpne"
label_x_closed_issues_abbr:
zero: 0 lukket
one: 1 lukket
other: "%{count} lukket"
zero: 0 lukka
one: 1 lukka
other: "%{count} lukka"
label_total: Totalt
label_permissions: Rettigheter
label_permissions: Godkjenninger
label_current_status: Nåværende status
label_new_statuses_allowed: Tillate nye statuser
label_new_statuses_allowed: Tillatte nye statuser
label_all: alle
label_none: ingen
label_nobody: ingen
@@ -437,7 +437,7 @@
label_previous: Forrige
label_used_by: Brukt av
label_details: Detaljer
label_add_note: Legg til notat
label_add_note: Legg til notis
label_per_page: Pr. side
label_calendar: Kalender
label_months_from: måneder fra
@@ -449,7 +449,7 @@
label_comment: Kommentar
label_comment_plural: Kommentarer
label_x_comments:
zero: ingen kommentarer
zero: no kommentarer
one: 1 kommentar
other: "%{count} kommentarer"
label_comment_add: Legg til kommentar
@@ -518,11 +518,11 @@
label_preview: Forhåndsvis
label_feed_plural: Feeder
label_changes_details: Detaljer om alle endringer
label_issue_tracking: Sakshåndtering
label_issue_tracking: Sakssporing
label_spent_time: Brukt tid
label_f_hour: "%{value} time"
label_f_hour_plural: "%{value} timer"
label_time_tracking: Tidsregistrering
label_time_tracking: Tidssporing
label_change_plural: Endringer
label_statistics: Statistikk
label_commits_per_month: Innsendinger pr. måned
@@ -532,7 +532,7 @@
label_diff_side_by_side: side ved side
label_options: Alternativer
label_copy_workflow_from: Kopier arbeidsflyt fra
label_permissions_report: Rettighetsrapport
label_permissions_report: Godkjenningsrapport
label_watched_issues: Overvåkede saker
label_related_issues: Relaterte saker
label_applied_status: Gitt status
@@ -571,7 +571,7 @@
label_date_to: Til
label_language_based: Basert på brukerens språk
label_sort_by: "Sorter etter %{value}"
label_send_test_email: Send en epost-test
label_send_test_email: Send en e-post-test
label_feeds_access_key_created_on: "RSS tilgangsnøkkel opprettet for %{value} siden"
label_module_plural: Moduler
label_added_time_by: "Lagt til av %{author} for %{age} siden"
@@ -598,7 +598,7 @@
label_more: Mer
label_scm: SCM
label_plugins: Tillegg
label_ldap_authentication: LDAP-autentisering
label_ldap_authentication: LDAP-autentifikasjon
label_downloads_abbr: Nedl.
label_optional_description: Valgfri beskrivelse
label_add_another_file: Legg til en fil til
@@ -650,7 +650,7 @@
status_locked: låst
text_select_mail_notifications: Velg hendelser som skal varsles med e-post.
text_regexp_info: f.eks. ^[A-Z0-9]+$
text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 betyr ingen begrensning
text_project_destroy_confirmation: Er du sikker på at du vil slette dette prosjekter og alle relatert data ?
text_subprojects_destroy_warning: "Underprojekt(ene): %{value} vil også bli slettet."
@@ -667,8 +667,8 @@
text_unallowed_characters: Ugyldige tegn
text_comma_separated: Flere verdier tillat (kommaseparert).
text_issues_ref_in_commit_messages: Referering og retting av saker i innsendingsmelding
text_issue_added: "Sak %{id} er innrapportert av %{author}."
text_issue_updated: "Sak %{id} er oppdatert av %{author}."
text_issue_added: "Issue %{id} has been reported by %{author}."
text_issue_updated: "Issue %{id} has been updated by %{author}."
text_wiki_destroy_confirmation: Er du sikker på at du vil slette denne wikien og alt innholdet ?
text_issue_category_destroy_question: "Noen saker (%{count}) er lagt til i denne kategorien. Hva vil du gjøre ?"
text_issue_category_destroy_assignments: Fjern bruk av kategorier
@@ -695,12 +695,12 @@
default_tracker_feature: Funksjon
default_tracker_support: Support
default_issue_status_new: Ny
default_issue_status_in_progress: Pågår
default_issue_status_in_progress: In Progress
default_issue_status_resolved: Avklart
default_issue_status_feedback: Tilbakemelding
default_issue_status_closed: Lukket
default_issue_status_rejected: Avvist
default_doc_category_user: Brukerdokumentasjon
default_doc_category_user: Bruker-dokumentasjon
default_doc_category_tech: Teknisk dokumentasjon
default_priority_low: Lav
default_priority_normal: Normal
@@ -711,16 +711,16 @@
default_activity_development: Utvikling
enumeration_issue_priorities: Sakssprioriteringer
enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsregistrering)
enumeration_doc_categories: Dokument-kategorier
enumeration_activities: Aktiviteter (tidssporing)
text_enumeration_category_reassign_to: 'Endre dem til denne verdien:'
text_enumeration_destroy_question: "%{count} objekter er endret til denne verdien."
label_incoming_emails: Innkommende e-post
label_generate_key: Generer en nøkkel
setting_mail_handler_api_enabled: Skru på WS for innkommende epost
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 epost 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: Overordnet side
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
button_quote: Sitat
setting_sequential_project_identifiers: Generer sekvensielle prosjekt-IDer
@@ -731,39 +731,39 @@
permission_view_files: Vise filer
permission_edit_issues: Redigere saker
permission_edit_own_time_entries: Redigere egne timelister
permission_manage_public_queries: Administrere delte søk
permission_manage_public_queries: Behandle delte søk
permission_add_issues: Legge inn saker
permission_log_time: Loggføre timer
permission_view_changesets: Vise endringssett
permission_view_time_entries: Vise brukte timer
permission_manage_versions: Administrere versjoner
permission_manage_wiki: Administrere wiki
permission_manage_categories: Administrere kategorier for saker
permission_manage_versions: Behandle versjoner
permission_manage_wiki: Behandle wiki
permission_manage_categories: Behandle kategorier for saker
permission_protect_wiki_pages: Beskytte wiki-sider
permission_comment_news: Kommentere nyheter
permission_delete_messages: Slette meldinger
permission_select_project_modules: Velge prosjektmoduler
permission_manage_documents: Administrere dokumenter
permission_select_project_modules: Velge prosjekt-moduler
permission_manage_documents: Behandle dokumenter
permission_edit_wiki_pages: Redigere wiki-sider
permission_add_issue_watchers: Legge til overvåkere
permission_view_gantt: Vise gantt-diagram
permission_move_issues: Flytte saker
permission_manage_issue_relations: Administrere saksrelasjoner
permission_manage_issue_relations: Behandle saksrelasjoner
permission_delete_wiki_pages: Slette wiki-sider
permission_manage_boards: Administrere forum
permission_manage_boards: Behandle forum
permission_delete_wiki_pages_attachments: Slette vedlegg
permission_view_wiki_edits: Vise wiki-historie
permission_add_messages: Sende meldinger
permission_view_messages: Vise meldinger
permission_manage_files: Administrere filer
permission_manage_files: Behandle filer
permission_edit_issue_notes: Redigere notater
permission_manage_news: Administrere nyheter
permission_manage_news: Behandle nyheter
permission_view_calendar: Vise kalender
permission_manage_members: Administrere medlemmer
permission_manage_members: Behandle medlemmer
permission_edit_messages: Redigere meldinger
permission_delete_issues: Slette saker
permission_view_issue_watchers: Vise liste over overvåkere
permission_manage_repository: Administrere depot
permission_manage_repository: Behandle depot
permission_commit_access: Tilgang til innsending
permission_browse_repository: Bla gjennom depot
permission_view_documents: Vise dokumenter
@@ -777,191 +777,189 @@
setting_gravatar_enabled: Bruk Gravatar-brukerikoner
label_example: Eksempel
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: Rediger egne meldinger
permission_delete_own_messages: Slett egne meldinger
label_user_activity: "%{value}s aktivitet"
label_updated_time_by: "Oppdatert av %{author} for %{age} siden"
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
label_user_activity: "%{value}'s activity"
label_updated_time_by: "Updated by %{author} %{age} ago"
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
setting_diff_max_lines_displayed: Max number of diff lines displayed
text_plugin_assets_writable: Plugin assets directory writable
warning_attachments_not_saved: "%{count} fil(er) kunne ikke lagres."
button_create_and_continue: Opprett og fortsett
text_custom_field_possible_values_info: 'En linje for hver verdi'
label_display: Visning
field_editable: Redigerbar
setting_repository_log_display_limit: Maks antall revisjoner vist i fil-loggen
warning_attachments_not_saved: "%{count} file(s) could not be saved."
button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'One line for each value'
label_display: Display
field_editable: Editable
setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
field_watcher: Overvåker
setting_openid: Tillat OpenID innlogging og registrering
field_watcher: Watcher
setting_openid: Allow OpenID login and registration
field_identity_url: OpenID URL
label_login_with_open_id_option: eller logg inn med OpenID
field_content: Innhold
label_descending: Synkende
label_sort: Sorter
label_ascending: Stigende
label_date_from_to: Fra %{start} til %{end}
label_login_with_open_id_option: or login with OpenID
field_content: Content
label_descending: Descending
label_sort: Sort
label_ascending: Ascending
label_date_from_to: From %{start} to %{end}
label_greater_or_equal: ">="
label_less_or_equal: <=
text_wiki_page_destroy_question: Denne siden har %{descendants} underside(r). Hva ønsker du å gjøre?
text_wiki_page_reassign_children: Tilknytt undersider til denne overordnede siden
text_wiki_page_nullify_children: Behold undersider som rotsider
text_wiki_page_destroy_children: Slett undersider og alle deres underliggende sider
setting_password_min_length: Minimum passordlengde
field_group_by: Grupper resultater etter
mail_subject_wiki_content_updated: "Wiki-side '%{id}' er oppdatert"
label_wiki_content_added: Wiki-side opprettet
mail_subject_wiki_content_added: "Wiki-side '%{id}' er opprettet"
mail_body_wiki_content_added: Wiki-siden '%{id}' ble opprettet av %{author}.
label_wiki_content_updated: Wiki-side oppdatert
mail_body_wiki_content_updated: Wiki-siden '%{id}' ble oppdatert av %{author}.
permission_add_project: Opprett prosjekt
setting_new_project_user_role_id: Rolle gitt en ikke-administratorbruker som oppretter et prosjekt
label_view_all_revisions: Se alle revisjoner
text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do?
text_wiki_page_reassign_children: Reassign child pages to this parent page
text_wiki_page_nullify_children: Keep child pages as root pages
text_wiki_page_destroy_children: Delete child pages and all their descendants
setting_password_min_length: Minimum password length
field_group_by: Group results by
mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
label_wiki_content_added: Wiki page added
mail_subject_wiki_content_added: "'%{id}' wiki page has been added"
mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}.
label_wiki_content_updated: Wiki page updated
mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}.
permission_add_project: Create project
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
label_view_all_revisions: View all revisions
label_tag: Tag
label_branch: Gren
error_no_tracker_in_project: Ingen sakstyper er tilknyttet dette prosjektet. Vennligst kontroller prosjektets innstillinger.
error_no_default_issue_status: Ingen standard saksstatus er angitt. Vennligst kontroller konfigurasjonen (Gå til "Administrasjon -> Saksstatuser").
text_journal_changed: "%{label} endret fra %{old} til %{new}"
text_journal_set_to: "%{label} satt til %{value}"
text_journal_deleted: "%{label} slettet (%{old})"
label_group_plural: Grupper
label_group: Gruppe
label_group_new: Ny gruppe
label_time_entry_plural: Brukt tid
text_journal_added: "%{label} %{value} lagt til"
field_active: Aktiv
enumeration_system_activity: Systemaktivitet
permission_delete_issue_watchers: Slett overvåkere
version_status_closed: stengt
version_status_locked: låst
version_status_open: åpen
error_can_not_reopen_issue_on_closed_version: En sak tilknyttet en stengt versjon kan ikke gjenåpnes.
label_user_anonymous: Anonym
button_move_and_follow: Flytt og følg etter
setting_default_projects_modules: Standard aktiverte moduler for nye prosjekter
setting_gravatar_default: Standard Gravatar-bilde
field_sharing: Deling
label_version_sharing_hierarchy: Med prosjekt-hierarki
label_version_sharing_system: Med alle prosjekter
label_version_sharing_descendants: Med underprosjekter
label_version_sharing_tree: Med prosjekt-tre
label_version_sharing_none: Ikke delt
error_can_not_archive_project: Dette prosjektet kan ikke arkiveres
button_duplicate: Duplikat
button_copy_and_follow: Kopier og følg etter
label_copy_source: Kilde
setting_issue_done_ratio: Kalkuler ferdigstillingsprosent ut i fra
setting_issue_done_ratio_issue_status: Bruk saksstatuser
error_issue_done_ratios_not_updated: Ferdigstillingsprosent oppdateres ikke.
error_workflow_copy_target: Vennligst velg sakstype(r) og rolle(r)
setting_issue_done_ratio_issue_field: Bruk felt fra saker
label_copy_same_as_target: Samme som mål
label_copy_target: Mål
notice_issue_done_ratios_updated: Ferdigstillingsprosent oppdatert.
error_workflow_copy_source: Vennligst velg en kilde-sakstype eller rolle.
label_update_issue_done_ratios: Oppdatert ferdigstillingsprosent
setting_start_of_week: Start kalender på
permission_view_issues: Se på saker
label_display_used_statuses_only: Vis kun statuser som brukes av denne sakstypen
label_branch: Branch
error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").
text_journal_changed: "%{label} changed from %{old} to %{new}"
text_journal_set_to: "%{label} set to %{value}"
text_journal_deleted: "%{label} deleted (%{old})"
label_group_plural: Groups
label_group: Group
label_group_new: New group
label_time_entry_plural: Spent time
text_journal_added: "%{label} %{value} added"
field_active: Active
enumeration_system_activity: System Activity
permission_delete_issue_watchers: Delete watchers
version_status_closed: closed
version_status_locked: locked
version_status_open: open
error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
label_user_anonymous: Anonymous
button_move_and_follow: Move and follow
setting_default_projects_modules: Default enabled modules for new projects
setting_gravatar_default: Default Gravatar image
field_sharing: Sharing
label_version_sharing_hierarchy: With project hierarchy
label_version_sharing_system: With all projects
label_version_sharing_descendants: With subprojects
label_version_sharing_tree: With project tree
label_version_sharing_none: Not shared
error_can_not_archive_project: This project can not be archived
button_duplicate: Duplicate
button_copy_and_follow: Copy and follow
label_copy_source: Source
setting_issue_done_ratio: Calculate the issue done ratio with
setting_issue_done_ratio_issue_status: Use the issue status
error_issue_done_ratios_not_updated: Issue done ratios not updated.
error_workflow_copy_target: Please select target tracker(s) and role(s)
setting_issue_done_ratio_issue_field: Use the issue field
label_copy_same_as_target: Same as target
label_copy_target: Target
notice_issue_done_ratios_updated: Issue done ratios updated.
error_workflow_copy_source: Please select a source tracker or role
label_update_issue_done_ratios: Update issue done ratios
setting_start_of_week: Start calendars on
permission_view_issues: View Issues
label_display_used_statuses_only: Only display statuses that are used by this tracker
label_revision_id: Revision %{value}
label_api_access_key: API tilgangsnøkkel
label_api_access_key_created_on: API tilgangsnøkkel opprettet for %{value} siden
label_feeds_access_key: RSS tilgangsnøkkel
notice_api_access_key_reseted: Din API tilgangsnøkkel ble resatt.
setting_rest_api_enabled: Aktiver REST webservice
label_missing_api_access_key: Mangler en API tilgangsnøkkel
label_missing_feeds_access_key: Mangler en RSS tilgangsnøkkel
button_show: Vis
text_line_separated: Flere verdier er tillatt (en linje per verdi).
setting_mail_handler_body_delimiters: Avkort epost etter en av disse linjene
permission_add_subprojects: Opprett underprosjekt
label_subproject_new: Nytt underprosjekt
label_api_access_key: API access key
label_api_access_key_created_on: API access key created %{value} ago
label_feeds_access_key: RSS access key
notice_api_access_key_reseted: Your API access key was reset.
setting_rest_api_enabled: Enable REST web service
label_missing_api_access_key: Missing an API access key
label_missing_feeds_access_key: Missing a RSS access key
button_show: Show
text_line_separated: Multiple values allowed (one line for each value).
setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects
label_subproject_new: New subproject
text_own_membership_delete_confirmation: |-
Du er i ferd med å fjerne noen eller alle rettigheter og vil kanskje ikke være i stand til å redigere dette prosjektet etterpå.
Er du sikker på at du vil fortsette?
label_close_versions: Steng fullførte versjoner
label_board_sticky: Fast
label_board_locked: Låst
permission_export_wiki_pages: Eksporter wiki-sider
setting_cache_formatted_text: Mellomlagre formattert tekst
permission_manage_project_activities: Administrere prosjektaktiviteter
error_unable_delete_issue_status: Kan ikke slette saksstatus
label_profile: Profil
permission_manage_subtasks: Administrere undersaker
field_parent_issue: Overordnet sak
label_subtask_plural: Undersaker
label_project_copy_notifications: Send epost-varslinger under prosjektkopiering
error_can_not_delete_custom_field: Kan ikke slette eget felt
error_unable_to_connect: Kunne ikke koble til (%{value})
error_can_not_remove_role: Denne rollen er i bruk og kan ikke slettes.
error_can_not_delete_tracker: Denne sakstypen inneholder saker og kan ikke slettes.
You are about to remove some or all of your permissions and may no longer be able to edit this project after that.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
error_unable_delete_issue_status: Unable to delete issue status
label_profile: Profile
permission_manage_subtasks: Manage subtasks
field_parent_issue: Parent task
label_subtask_plural: Subtasks
label_project_copy_notifications: Send email notifications during the project copy
error_can_not_delete_custom_field: Unable to delete custom field
error_unable_to_connect: Unable to connect (%{value})
error_can_not_remove_role: This role is in use and can not be deleted.
error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
field_principal: Principal
label_my_page_block: Min side felt
notice_failed_to_save_members: "Feil ved lagring av medlem(mer): %{errors}."
text_zoom_out: Zoom ut
text_zoom_in: Zoom inn
notice_unable_delete_time_entry: Kan ikke slette oppføring fra timeliste.
label_overall_spent_time: All tidsbruk
field_time_entries: Loggfør tid
label_my_page_block: My page block
notice_failed_to_save_members: "Failed to save member(s): %{errors}."
text_zoom_out: Zoom out
text_zoom_in: Zoom in
notice_unable_delete_time_entry: Unable to delete time log entry.
label_overall_spent_time: Overall spent time
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Kalender
button_edit_associated_wikipage: "Rediger tilhørende Wiki-side: %{page_title}"
text_are_you_sure_with_children: Slett sak og alle undersaker?
field_text: Tekstfelt
label_user_mail_option_only_owner: Kun for ting jeg eier
setting_default_notification_option: Standardvalg for varslinger
label_user_mail_option_only_my_events: Kun for ting jeg overvåker eller er involvert i
label_user_mail_option_only_assigned: Kun for ting jeg er tildelt
label_user_mail_option_none: Ingen hendelser
field_member_of_group: Den tildeltes gruppe
field_assigned_to_role: Den tildeltes rolle
notice_not_authorized_archived_project: Prosjektet du forsøker å åpne er blitt arkivert.
label_principal_search: "Søk etter bruker eller gruppe:"
label_user_search: "Søk etter bruker:"
field_visible: Synlig
setting_emails_header: Eposthode
setting_commit_logtime_activity_id: Aktivitet for logget tid.
text_time_logged_by_changeset: Lagt til i endringssett %{value}.
setting_commit_logtime_enabled: Muliggjør loggføring av tid
notice_gantt_chart_truncated: Diagrammet ble avkortet fordi det overstiger det maksimale antall elementer som kan vises (%{max})
setting_gantt_items_limit: Maksimalt antall elementer vist på gantt-diagrammet
field_warn_on_leaving_unsaved: Vis meg en advarsel når jeg forlater en side med ikke lagret tekst
text_warn_on_leaving_unsaved: Den gjeldende siden inneholder tekst som ikke er lagret, som vil bli tapt hvis du forlater denne siden.
label_my_queries: Mine egne spørringer
text_journal_changed_no_detail: "%{label} oppdatert"
label_news_comment_added: Kommentar lagt til en nyhet
button_expand_all: Utvid alle
button_collapse_all: Kollaps alle
label_additional_workflow_transitions_for_assignee: Ytterligere overganger tillatt når brukeren er sakens tildelte
label_additional_workflow_transitions_for_author: Ytterligere overganger tillatt når brukeren er den som har opprettet saken
label_bulk_edit_selected_time_entries: Masserediger valgte timeliste-oppføringer
text_time_entries_destroy_confirmation: Er du sikker på du vil slette de(n) valgte timeliste-oppføringen(e)?
label_role_anonymous: Anonym
label_role_non_member: Ikke medlem
label_issue_note_added: Notat lagt til
label_issue_status_updated: Status oppdatert
label_issue_priority_updated: Prioritet oppdatert
label_issues_visibility_own: Saker opprettet av eller tildelt brukeren
field_issues_visibility: Synlighet på saker
label_issues_visibility_all: Alle saker
permission_set_own_issues_private: Gjør egne saker offentlige eller private
field_is_private: Privat
permission_set_issues_private: Gjør saker offentlige eller private
label_issues_visibility_public: Alle ikke-private saker
text_issues_destroy_descendants_confirmation: Dette vil også slette %{count} undersak(er).
project_module_calendar: Calendar
button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
text_are_you_sure_with_children: Delete issue and all child issues?
field_text: Text field
label_user_mail_option_only_owner: Only for things I am the owner of
setting_default_notification_option: Default notification option
label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
label_user_mail_option_only_assigned: Only for things I am assigned to
label_user_mail_option_none: No events
field_member_of_group: Assignee's group
field_assigned_to_role: Assignee's role
notice_not_authorized_archived_project: The project you're trying to access has been archived.
label_principal_search: "Search for user or group:"
label_user_search: "Search for user:"
field_visible: Visible
setting_emails_header: Emails header
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
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Comment added to a news
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
label_role_non_member: Non member
label_issue_note_added: Note added
label_issue_status_updated: Status updated
label_issue_priority_updated: Priority updated
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Tegnkoding for innsendingsmeldinger
field_scm_path_encoding: Koding av sti
text_scm_path_encoding_note: "Standard: UTF-8"
field_path_to_repository: Sti til depot
field_root_directory: Rotkatalog
field_cvs_module: Modul
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_cvsroot: CVSROOT
text_mercurial_repository_note: Lokalt depot (f.eks. /hgrepo, c:\hgrepo)
text_scm_command: Kommando
text_scm_command_version: Versjon
label_git_report_last_commit: Rapporter siste innsending for filer og kataloger
text_scm_config: Du kan konfigurere scm kommandoer i config/configuration.yml. Vennligst restart applikasjonen etter å ha redigert filen.
text_scm_command_not_available: Scm kommando er ikke tilgjengelig. Vennligst kontroller innstillingene i administrasjonspanelet.
text_git_repository_note: Depot er bart og lokalt (f.eks. /gitrepo, c:\gitrepo)
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+29 -30
View File
@@ -938,7 +938,7 @@ pt-BR:
text_zoom_in: Aproximar zoom
notice_unable_delete_time_entry: Não foi possível excluir a entrada no registro de horas trabalhadas.
label_overall_spent_time: Tempo gasto geral
field_time_entries: Registro de horas
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendário
button_edit_associated_wikipage: "Editar página wiki relacionada: %{page_title}"
@@ -961,39 +961,38 @@ pt-BR:
setting_commit_logtime_enabled: Habilitar registro de horas
notice_gantt_chart_truncated: O gráfico foi cortado por exceder o tamanho máximo de linhas que podem ser exibidas (%{max})
setting_gantt_items_limit: Número máximo de itens exibidos no gráfico gatt
field_warn_on_leaving_unsaved: Alertar-me ao sair de uma página sem salvar o texto
field_warn_on_leaving_unsaved: Alertar-me ao sarir de uma página sem salvar o texto
text_warn_on_leaving_unsaved: A página atual contem texto que não foi salvo e será perdido se você sair desta página.
label_my_queries: Minhas consultas personalizadas
text_journal_changed_no_detail: "%{label} atualizado(a)"
label_news_comment_added: Notícia recebeu um comentário
button_expand_all: Expandir tudo
button_collapse_all: Recolher tudo
label_additional_workflow_transitions_for_assignee: Transições adicionais permitidas quando o usuário é o responsável pela tarefa
label_additional_workflow_transitions_for_author: Transições adicionais permitidas quando o usuário é o autor
label_bulk_edit_selected_time_entries: Alteração em massa do registro de horas
text_time_entries_destroy_confirmation: Tem certeza que quer excluir o(s) registro(s) de horas selecionado(s)?
label_role_anonymous: Anônimo
label_role_non_member: Não Membro
label_issues_visibility_own: Tarefas criadas ou atribuídas ao usuário
field_issues_visibility: Visibilidade das tarefas
label_issues_visibility_all: Todas as tarefas
permission_set_own_issues_private: Alterar as próprias tarefas para públicas ou privadas
field_is_private: Privado
permission_set_issues_private: Alterar tarefas para públicas ou privadas
label_issues_visibility_public: Todas as tarefas não privadas
text_issues_destroy_descendants_confirmation: Isto também irá excluir %{count} subtarefa(s).
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
label_role_non_member: Non member
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Codificação das mensagens de commit
field_scm_path_encoding: Codificação do caminho
text_scm_path_encoding_note: "Padrão: UTF-8"
field_path_to_repository: Caminho para o repositório
field_root_directory: Diretório raiz
field_cvs_module: Módulo
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: "repositório local (ex.: /hgrepo, c:\hgrepo)"
text_scm_command: Comando
text_scm_command_version: Versão
label_git_report_last_commit: Relatar última alteração para arquivos e direrios
text_scm_config: Você pode configurar seus comandos de versionamento em config/configurations.yml. Por favor reinicie a aplicação após alterá-lo.
text_scm_command_not_available: Comando de versionamento não disponível. Por favor verifique as configurações no painel de administração.
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+2 -2
View File
@@ -511,7 +511,7 @@ ru:
label_filter_add: Добавить фильтр
label_filter_plural: Фильтры
label_float: С плавающей точкой
label_follows: предыдущая
label_follows: следующая
label_gantt: Диаграмма Ганта
label_general: Общее
label_generate_key: Сгенерировать ключ
@@ -617,7 +617,7 @@ ru:
label_planning: Планирование
label_please_login: Пожалуйста, войдите.
label_plugins: Модули
label_precedes: следующая
label_precedes: предыдущая
label_preferences: Предпочтения
label_preview: Предварительный просмотр
label_previous: Предыдущий
+234 -236
View File
@@ -9,12 +9,12 @@ sl:
short: "%b %d"
long: "%B %d, %Y"
day_names: [Nedelja, Ponedeljek, Torek, Sreda, Četrtek, Petek, Sobota]
abbr_day_names: [Ned, Pon, To, Sr, Čet, Pet, Sob]
day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
# Don't forget the nil at the beginning; there's no such thing as a 0th month
month_names: [~, Januar, Februar, Marec, April, Maj, Junij, Julij, Avgust, September, Oktober, November, December]
abbr_month_names: [~, Jan, Feb, Mar, Apr, Maj, Jun, Jul, Aug, Sep, Okt, Nov, Dec]
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
# Used in date_select and datime_select.
order:
- :year
@@ -32,40 +32,40 @@ sl:
datetime:
distance_in_words:
half_a_minute: "pol minute"
half_a_minute: "half a minute"
less_than_x_seconds:
one: "manj kot 1. sekundo"
other: "manj kot %{count} sekund"
one: "less than 1 second"
other: "less than %{count} seconds"
x_seconds:
one: "1. sekunda"
other: "%{count} sekund"
one: "1 second"
other: "%{count} seconds"
less_than_x_minutes:
one: "manj kot minuto"
other: "manj kot %{count} minut"
one: "less than a minute"
other: "less than %{count} minutes"
x_minutes:
one: "1 minuta"
other: "%{count} minut"
one: "1 minute"
other: "%{count} minutes"
about_x_hours:
one: "okrog 1. ure"
other: "okrog %{count} ur"
one: "about 1 hour"
other: "about %{count} hours"
x_days:
one: "1 dan"
other: "%{count} dni"
one: "1 day"
other: "%{count} days"
about_x_months:
one: "okrog 1. mesec"
other: "okrog %{count} mesecev"
one: "about 1 month"
other: "about %{count} months"
x_months:
one: "1 mesec"
other: "%{count} mesecev"
one: "1 month"
other: "%{count} months"
about_x_years:
one: "okrog 1. leto"
other: "okrog %{count} let"
one: "about 1 year"
other: "about %{count} years"
over_x_years:
one: "več kot 1. leto"
other: "več kot %{count} let"
one: "over 1 year"
other: "over %{count} years"
almost_x_years:
one: "skoraj 1. leto"
other: "skoraj %{count} let"
one: "almost 1 year"
other: "almost %{count} years"
number:
format:
@@ -90,15 +90,15 @@ sl:
# Used in array.to_sentence.
support:
array:
sentence_connector: "in"
sentence_connector: "and"
skip_last_comma: false
activerecord:
errors:
template:
header:
one: "1. napaka je preprečila temu %{model} da bi se shranil"
other: "%{count} napak je preprečilo temu %{model} da bi se shranil"
one: "1 error prohibited this %{model} from being saved"
other: "%{count} errors prohibited this %{model} from being saved"
messages:
inclusion: "ni vključen na seznamu"
exclusion: "je rezerviran"
@@ -113,17 +113,17 @@ sl:
taken: "je že zaseden"
not_a_number: "ni število"
not_a_date: "ni veljaven datum"
greater_than: "mora biti večji kot %{count}"
greater_than_or_equal_to: "mora biti večji ali enak kot %{count}"
equal_to: "mora biti enak kot %{count}"
less_than: "mora biti manjši kot %{count}"
less_than_or_equal_to: "mora biti manjši ali enak kot %{count}"
odd: "mora biti sodo"
even: "mora biti liho"
greater_than_start_date: "mora biti kasnejši kot začetni datum"
greater_than: "must be greater than %{count}"
greater_than_or_equal_to: "must be greater than or equal to %{count}"
equal_to: "must be equal to %{count}"
less_than: "must be less than %{count}"
less_than_or_equal_to: "must be less than or equal to %{count}"
odd: "must be odd"
even: "must be even"
greater_than_start_date: "mora biti kasnejši kot začeten datum"
not_same_project: "ne pripada istemu projektu"
circular_dependency: "Ta odnos bi povzročil krožno odvisnost"
cant_link_an_issue_with_a_descendant: "Zahtevek ne more biti povezan s svojo podnalogo"
cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Prosimo izberite
@@ -372,9 +372,9 @@ sl:
label_project_new: Nov projekt
label_project_plural: Projekti
label_x_projects:
zero: ni projektov
one: 1 projekt
other: "%{count} projektov"
zero: no projects
one: 1 project
other: "%{count} projects"
label_project_all: Vsi projekti
label_project_latest: Zadnji projekti
label_issue: Zahtevek
@@ -476,22 +476,22 @@ sl:
label_export_to: 'Na razpolago tudi v:'
label_read: Preberi...
label_public_projects: Javni projekti
label_open_issues: odprt zahtevek
label_open_issues_plural: odprti zahtevki
label_closed_issues: zaprt zahtevek
label_closed_issues_plural: zaprti zahtevki
label_open_issues: odpri zahtevek
label_open_issues_plural: odpri zahtevke
label_closed_issues: zapri zahtevek
label_closed_issues_plural: zapri zahtevke
label_x_open_issues_abbr_on_total:
zero: 0 odprtih / %{total}
one: 1 odprt / %{total}
other: "%{count} odprtih / %{total}"
zero: 0 open / %{total}
one: 1 open / %{total}
other: "%{count} open / %{total}"
label_x_open_issues_abbr:
zero: 0 odprtih
one: 1 odprt
other: "%{count} odprtih"
zero: 0 open
one: 1 open
other: "%{count} open"
label_x_closed_issues_abbr:
zero: 0 zaprtih
one: 1 zaprt
other: "%{count} zaprtih"
zero: 0 closed
one: 1 closed
other: "%{count} closed"
label_total: Skupaj
label_permissions: Dovoljenja
label_current_status: Trenutno stanje
@@ -507,7 +507,7 @@ sl:
label_per_page: Na stran
label_calendar: Koledar
label_months_from: mesecev od
label_gantt: Gantogram
label_gantt: Gantt
label_internal: Notranji
label_last_changes: "zadnjih %{count} sprememb"
label_change_view_all: Poglej vse spremembe
@@ -515,9 +515,9 @@ sl:
label_comment: Komentar
label_comment_plural: Komentarji
label_x_comments:
zero: ni komentarjev
one: 1 komentar
other: "%{count} komentarjev"
zero: no comments
one: 1 comment
other: "%{count} comments"
label_comment_add: Dodaj komentar
label_comment_added: Komentar dodan
label_comment_delete: Izbriši komentarje
@@ -774,7 +774,7 @@ sl:
default_tracker_feature: Funkcija
default_tracker_support: Podpora
default_issue_status_new: Nov
default_issue_status_in_progress: V teku
default_issue_status_in_progress: In Progress
default_issue_status_resolved: Rešen
default_issue_status_feedback: Povratna informacija
default_issue_status_closed: Zaključen
@@ -792,185 +792,183 @@ sl:
enumeration_issue_priorities: Prioritete zahtevkov
enumeration_doc_categories: Kategorije dokumentov
enumeration_activities: Aktivnosti (sledenje časa)
warning_attachments_not_saved: "%{count} datotek(e) ni bilo mogoče shraniti."
field_editable: Uredljivo
text_plugin_assets_writable: Zapisljiva mapa za vtičnike
label_display: Prikaz
button_create_and_continue: Ustvari in nadaljuj
text_custom_field_possible_values_info: 'Ena vrstica za vsako vrednost'
setting_repository_log_display_limit: Največje število prikazanih revizij v log datoteki
setting_file_max_size_displayed: Največja velikost besedilnih datotek v vključenem prikazu
field_watcher: Opazovalec
setting_openid: Dovoli OpenID prijavo in registracijo
warning_attachments_not_saved: "%{count} file(s) could not be saved."
field_editable: Editable
text_plugin_assets_writable: Plugin assets directory writable
label_display: Display
button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'One line for each value'
setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline
field_watcher: Watcher
setting_openid: Allow OpenID login and registration
field_identity_url: OpenID URL
label_login_with_open_id_option: ali se prijavi z OpenID
field_content: Vsebina
label_descending: Padajoče
label_sort: Razvrsti
label_ascending: Naraščajoče
label_date_from_to: Od %{start} do %{end}
label_login_with_open_id_option: or login with OpenID
field_content: Content
label_descending: Descending
label_sort: Sort
label_ascending: Ascending
label_date_from_to: From %{start} to %{end}
label_greater_or_equal: ">="
label_less_or_equal: <=
text_wiki_page_destroy_question: Ta stran ima %{descendants} podstran(i) in naslednik(ov). Kaj želite storiti?
text_wiki_page_reassign_children: Znova dodeli podstrani tej glavni strani
text_wiki_page_nullify_children: Obdrži podstrani kot glavne strani
text_wiki_page_destroy_children: Izbriši podstrani in vse njihove naslednike
setting_password_min_length: Minimalna dolžina gesla
field_group_by: Združi rezultate po
mail_subject_wiki_content_updated: "'%{id}' wiki stran je bila posodobljena"
label_wiki_content_added: Wiki stran dodana
mail_subject_wiki_content_added: "'%{id}' wiki stran je bila dodana"
mail_body_wiki_content_added: %{author} je dodal '%{id}' wiki stran
label_wiki_content_updated: Wiki stran posodobljena
mail_body_wiki_content_updated: %{author} je posodobil '%{id}' wiki stran.
permission_add_project: Ustvari projekt
setting_new_project_user_role_id: Vloga, dodeljena neadministratorskemu uporabniku, ki je ustvaril projekt
label_view_all_revisions: Poglej vse revizije
label_tag: Oznaka
label_branch: Veja
error_no_tracker_in_project: Noben sledilnik ni povezan s tem projektom. Prosimo preverite nastavitve projekta.
error_no_default_issue_status: Privzeti zahtevek ni definiran. Prosimo preverite svoje nastavitve (Pojdite na "Administracija -> Stanje zahtevkov").
text_journal_changed: "%{label} se je spremenilo iz %{old} v %{new}"
text_journal_set_to: "%{label} nastavljeno na %{value}"
text_journal_deleted: "%{label} izbrisan (%{old})"
label_group_plural: Skupine
label_group: Skupina
label_group_new: Nova skupina
label_time_entry_plural: Porabljen čas
text_journal_added: "%{label} %{value} dodan"
field_active: Aktiven
enumeration_system_activity: Sistemska aktivnost
permission_delete_issue_watchers: Izbriši opazovalce
version_status_closed: zaprt
version_status_locked: zaklenjen
version_status_open: odprt
error_can_not_reopen_issue_on_closed_version: Zahtevek dodeljen zaprti verziji ne more biti ponovno odprt
label_user_anonymous: Anonimni
button_move_and_follow: Premakni in sledi
setting_default_projects_modules: Privzeti moduli za nove projekte
setting_gravatar_default: Privzeta Gravatar slika
field_sharing: Deljenje
label_version_sharing_hierarchy: S projektno hierarhijo
label_version_sharing_system: Z vsemi projekti
label_version_sharing_descendants: S podprojekti
label_version_sharing_tree: Z drevesom projekta
label_version_sharing_none: Ni deljeno
error_can_not_archive_project: Ta projekt ne more biti arhiviran
button_duplicate: Podvoji
button_copy_and_follow: Kopiraj in sledi
label_copy_source: Vir
setting_issue_done_ratio: Izračunaj razmerje opravljenega zahtevka z
setting_issue_done_ratio_issue_status: Uporabi stanje zahtevka
error_issue_done_ratios_not_updated: Razmerje opravljenega zahtevka ni bilo posodobljeno.
error_workflow_copy_target: Prosimo izberite ciljni(e) sledilnik(e) in vlogo(e)
setting_issue_done_ratio_issue_field: Uporabi polje zahtevka
label_copy_same_as_target: Enako kot cilj
label_copy_target: Cilj
notice_issue_done_ratios_updated: Razmerje opravljenega zahtevka posodobljeno.
error_workflow_copy_source: Prosimo izberite vir zahtevka ali vlogo
label_update_issue_done_ratios: Posodobi razmerje opravljenega zahtevka
setting_start_of_week: Začni koledarje z
permission_view_issues: Poglej zahtevke
label_display_used_statuses_only: Prikaži samo stanja ki uporabljajo ta sledilnik
label_revision_id: Revizija %{value}
label_api_access_key: API dostopni ključ
label_api_access_key_created_on: API dostopni ključ ustvarjen pred %{value}
label_feeds_access_key: RSS dostopni ključ
notice_api_access_key_reseted: Vaš API dostopni ključ je bil ponastavljen.
setting_rest_api_enabled: Omogoči REST spletni servis
label_missing_api_access_key: Manjkajoč API dostopni ključ
label_missing_feeds_access_key: Manjkajoč RSS dostopni ključ
button_show: Prikaži
text_line_separated: Dovoljenih več vrednosti (ena vrstica za vsako vrednost).
setting_mail_handler_body_delimiters: Odreži e-pošto po eni od teh vrstic
permission_add_subprojects: Ustvari podprojekte
label_subproject_new: Nov podprojekt
text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do?
text_wiki_page_reassign_children: Reassign child pages to this parent page
text_wiki_page_nullify_children: Keep child pages as root pages
text_wiki_page_destroy_children: Delete child pages and all their descendants
setting_password_min_length: Minimum password length
field_group_by: Group results by
mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
label_wiki_content_added: Wiki page added
mail_subject_wiki_content_added: "'%{id}' wiki page has been added"
mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}.
label_wiki_content_updated: Wiki page updated
mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}.
permission_add_project: Create project
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
label_view_all_revisions: View all revisions
label_tag: Tag
label_branch: Branch
error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").
text_journal_changed: "%{label} changed from %{old} to %{new}"
text_journal_set_to: "%{label} set to %{value}"
text_journal_deleted: "%{label} deleted (%{old})"
label_group_plural: Groups
label_group: Group
label_group_new: New group
label_time_entry_plural: Spent time
text_journal_added: "%{label} %{value} added"
field_active: Active
enumeration_system_activity: System Activity
permission_delete_issue_watchers: Delete watchers
version_status_closed: closed
version_status_locked: locked
version_status_open: open
error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
label_user_anonymous: Anonymous
button_move_and_follow: Move and follow
setting_default_projects_modules: Default enabled modules for new projects
setting_gravatar_default: Default Gravatar image
field_sharing: Sharing
label_version_sharing_hierarchy: With project hierarchy
label_version_sharing_system: With all projects
label_version_sharing_descendants: With subprojects
label_version_sharing_tree: With project tree
label_version_sharing_none: Not shared
error_can_not_archive_project: This project can not be archived
button_duplicate: Duplicate
button_copy_and_follow: Copy and follow
label_copy_source: Source
setting_issue_done_ratio: Calculate the issue done ratio with
setting_issue_done_ratio_issue_status: Use the issue status
error_issue_done_ratios_not_updated: Issue done ratios not updated.
error_workflow_copy_target: Please select target tracker(s) and role(s)
setting_issue_done_ratio_issue_field: Use the issue field
label_copy_same_as_target: Same as target
label_copy_target: Target
notice_issue_done_ratios_updated: Issue done ratios updated.
error_workflow_copy_source: Please select a source tracker or role
label_update_issue_done_ratios: Update issue done ratios
setting_start_of_week: Start calendars on
permission_view_issues: View Issues
label_display_used_statuses_only: Only display statuses that are used by this tracker
label_revision_id: Revision %{value}
label_api_access_key: API access key
label_api_access_key_created_on: API access key created %{value} ago
label_feeds_access_key: RSS access key
notice_api_access_key_reseted: Your API access key was reset.
setting_rest_api_enabled: Enable REST web service
label_missing_api_access_key: Missing an API access key
label_missing_feeds_access_key: Missing a RSS access key
button_show: Show
text_line_separated: Multiple values allowed (one line for each value).
setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Create subprojects
label_subproject_new: New subproject
text_own_membership_delete_confirmation: |-
Odstranili boste nekatere ali vse od dovoljenj zaradi česar morda ne boste mogli več urejati tega projekta.
Ali ste prepričani, da želite nadaljevati?
label_close_versions: Zapri dokončane verzije
label_board_sticky: Lepljivo
label_board_locked: Zaklenjeno
permission_export_wiki_pages: Izvozi wiki strani
setting_cache_formatted_text: Predpomni oblikovano besedilo
permission_manage_project_activities: Uredi aktivnosti projekta
error_unable_delete_issue_status: Stanja zahtevka ni bilo možno spremeniti
label_profile: Profil
permission_manage_subtasks: Uredi podnaloge
field_parent_issue: Nadrejena naloga
label_subtask_plural: Podnaloge
label_project_copy_notifications: Med kopiranjem projekta pošlji e-poštno sporočilo
error_can_not_delete_custom_field: Polja po meri ni mogoče izbrisati
error_unable_to_connect: Povezava ni mogoča (%{value})
error_can_not_remove_role: Ta vloga je v uporabi in je ni mogoče izbrisati.
error_can_not_delete_tracker: Ta sledilnik vsebuje zahtevke in se ga ne more izbrisati.
field_principal: Upravnik varnosti
label_my_page_block: Moj gradnik strani
notice_failed_to_save_members: "Shranjevanje uporabnika(ov) ni uspelo: %{errors}."
text_zoom_out: Približaj
text_zoom_in: Oddalji
notice_unable_delete_time_entry: Brisanje dnevnika porabljenaga časa ni mogoče.
label_overall_spent_time: Skupni porabljeni čas
field_time_entries: Beleži porabljeni čas
project_module_gantt: Gantogram
project_module_calendar: Koledear
button_edit_associated_wikipage: "Uredi povezano Wiki stran: %{page_title}"
text_are_you_sure_with_children: Izbriši zahtevek in vse podazahtevke?
field_text: Besedilno polje
label_user_mail_option_only_owner: Samo za stvari katerih lastnik sem
setting_default_notification_option: Privzeta možnost obveščanja
label_user_mail_option_only_my_events: Samo za stvari, ki jih opazujem ali sem v njih vpleten
label_user_mail_option_only_assigned: Samo za stvari, ki smo mi dodeljene
label_user_mail_option_none: Noben dogodek
field_member_of_group: Pooblaščenčeva skupina
field_assigned_to_role: Pooblaščenčeva vloga
notice_not_authorized_archived_project: Projekt, do katerega poskušate dostopati, je bil arhiviran.
label_principal_search: "Poišči uporabnika ali skupino:"
label_user_search: "Poišči uporabnikia:"
field_visible: Viden
setting_emails_header: Glava e-pošte
setting_commit_logtime_activity_id: Aktivnost zabeleženega časa
text_time_logged_by_changeset: Uporabljeno v spremembi %{value}.
setting_commit_logtime_enabled: Omogoči beleženje časa
notice_gantt_chart_truncated: Graf je bil odrezan, ker je prekoračil največje dovoljeno število elementov, ki se jih lahko prikaže (%{max})
setting_gantt_items_limit: Največje število elementov prikazano na gantogramu
field_warn_on_leaving_unsaved: Opozori me, kadar zapuščam stran z neshranjenim besedilom
text_warn_on_leaving_unsaved: Trenutna stran vsebuje neshranjeno besedilo ki bo izgubljeno, če zapustite to stran.
label_my_queries: Moje poizvedbe po meri
text_journal_changed_no_detail: "%{label} posodobljen"
label_news_comment_added: Komentar dodan novici
button_expand_all: Razširi vse
button_collapse_all: Skrči vse
label_additional_workflow_transitions_for_assignee: Dovoljeni dodatni prehodi kadar je uporabnik pooblaščenec
label_additional_workflow_transitions_for_author: Dovoljeni dodatni prehodi kadar je uporabnik avtor
label_bulk_edit_selected_time_entries: Skupinsko urejanje izbranih časovnih zapisov
text_time_entries_destroy_confirmation: Ali ste prepričani, da želite izbristai izbran(e) časovn(i/e) zapis(e)?
label_role_anonymous: Anonimni
label_role_non_member: Nečlan
label_issue_note_added: Dodan zaznamek
label_issue_status_updated: Status posodobljen
label_issue_priority_updated: Prioriteta posodobljena
label_issues_visibility_own: Zahtevek ustvarjen s strani uporabnika ali dodeljen uporabniku
field_issues_visibility: Vidljivost zahtevkov
label_issues_visibility_all: Vsi zahtevki
permission_set_own_issues_private: Nastavi lastne zahtevke kot javne ali zasebne
field_is_private: Zaseben
permission_set_issues_private: Nastavi zahtevke kot javne ali zasebne
label_issues_visibility_public: Vsi nezasebni zahtevki
text_issues_destroy_descendants_confirmation: To bo izbrisalo tudi %{count} podnalog(o).
You are about to remove some or all of your permissions and may no longer be able to edit this project after that.
Are you sure you want to continue?
label_close_versions: Close completed versions
label_board_sticky: Sticky
label_board_locked: Locked
permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Manage project activities
error_unable_delete_issue_status: Unable to delete issue status
label_profile: Profile
permission_manage_subtasks: Manage subtasks
field_parent_issue: Parent task
label_subtask_plural: Subtasks
label_project_copy_notifications: Send email notifications during the project copy
error_can_not_delete_custom_field: Unable to delete custom field
error_unable_to_connect: Unable to connect (%{value})
error_can_not_remove_role: This role is in use and can not be deleted.
error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
field_principal: Principal
label_my_page_block: My page block
notice_failed_to_save_members: "Failed to save member(s): %{errors}."
text_zoom_out: Zoom out
text_zoom_in: Zoom in
notice_unable_delete_time_entry: Unable to delete time log entry.
label_overall_spent_time: Overall spent time
field_time_entries: Log time
project_module_gantt: Gantt
project_module_calendar: Calendar
button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
text_are_you_sure_with_children: Delete issue and all child issues?
field_text: Text field
label_user_mail_option_only_owner: Only for things I am the owner of
setting_default_notification_option: Default notification option
label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
label_user_mail_option_only_assigned: Only for things I am assigned to
label_user_mail_option_none: No events
field_member_of_group: Assignee's group
field_assigned_to_role: Assignee's role
notice_not_authorized_archived_project: The project you're trying to access has been archived.
label_principal_search: "Search for user or group:"
label_user_search: "Search for user:"
field_visible: Visible
setting_emails_header: Emails header
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
field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Comment added to a news
button_expand_all: Expand all
button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous
label_role_non_member: Non member
label_issue_note_added: Note added
label_issue_status_updated: Status updated
label_issue_priority_updated: Priority updated
label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Issues visibility
label_issues_visibility_all: All issues
permission_set_own_issues_private: Set own issues public or private
field_is_private: Private
permission_set_issues_private: Set issues public or private
label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Kodiranje sporočil ob predaji
field_scm_path_encoding: Pot do kodiranja
text_scm_path_encoding_note: "Privzeto: UTF-8"
field_path_to_repository: Pot do shrambe
field_root_directory: Korenska mapa
field_cvs_module: Modul
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_cvsroot: CVSROOT
text_mercurial_repository_note: Lokalna shramba (npr. /hgrepo, c:\hgrepo)
text_scm_command: Ukaz
text_scm_command_version: Verzija
label_git_report_last_commit: Sporoči zadnje uveljavljanje datotek in map
text_scm_config: Svoje SCM ukaze lahko nastavite v datoteki config/configuration.yml. Po urejanju prosimo ponovno zaženite aplikacijo.
text_scm_command_not_available: SCM ukaz ni na voljo. Prosimo preverite nastavitve v upravljalskem podoknu.
text_git_repository_note: Shramba je prazna in lokalna (npr. /gitrepo, c:\gitrepo)
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+14 -14
View File
@@ -351,12 +351,6 @@ sv:
field_warn_on_leaving_unsaved: Varna om jag lämnar en sida med osparad text
field_issues_visibility: Ärendesynlighet
field_is_private: Privat
field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden
field_scm_path_encoding: Sökvägskodning
field_path_to_repository: Sökväg till versionsarkiv
field_root_directory: Rotmapp
field_cvsroot: CVSROOT
field_cvs_module: Modul
setting_app_title: Applikationsrubrik
setting_app_subtitle: Applikationsunderrubrik
@@ -861,7 +855,6 @@ sv:
label_issues_visibility_all: Alla ärenden
label_issues_visibility_public: Alla icke-privata ärenden
label_issues_visibility_own: Ärenden skapade av eller tilldelade till användaren
label_git_report_last_commit: Rapportera senaste commit av filer och mappar
button_login: Logga in
button_submit: Skicka
@@ -983,13 +976,6 @@ sv:
text_zoom_out: Zooma ut
text_zoom_in: Zooma in
text_warn_on_leaving_unsaved: Nuvarande sida innehåller osparad text som kommer försvinna om du lämnar sidan.
text_scm_path_encoding_note: "Standard: UTF-8"
text_git_repository_note: Naket och lokalt versionsarkiv (t.ex. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Lokalt versionsarkiv (t.ex. /hgrepo, c:\hgrepo)
text_scm_command: Kommando
text_scm_command_version: Version
text_scm_config: Du kan konfigurera dina scm-kommando i config/configuration.yml. Vänligen starta om applikationen när ändringar gjorts.
text_scm_command_not_available: Scm-kommando är inte tillgängligt. Vänligen kontrollera inställningarna i administratörspanelen.
default_role_manager: Projektledare
default_role_developer: Utvecklare
@@ -1017,3 +1003,17 @@ sv:
enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsuppföljning)
enumeration_system_activity: Systemaktivitet
field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden
field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository
field_root_directory: Root directory
field_cvs_module: Module
field_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Command
text_scm_command_version: Version
label_git_report_last_commit: Report last commit for files and directories
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+395 -395
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -180,7 +180,7 @@ vi:
last_word_connector: ", và "
actionview_instancetag_blank_option: Vui lòng chọn
general_text_No: 'Không'
general_text_Yes: 'Có'
general_text_no: 'không'
@@ -191,7 +191,7 @@ vi:
general_csv_encoding: UTF-8
general_pdf_encoding: UTF-8
general_first_day_of_week: '1'
notice_account_updated: Cập nhật tài khoản thành công.
notice_account_invalid_creditentials: Tài khoản hoặc mật mã không hợp lệ
notice_account_password_updated: Cập nhật mật mã thành công.
+2 -2
View File
@@ -1028,8 +1028,6 @@
text_mercurial_repository_note: "本機儲存機制 (e.g. /hgrepo, c:\hgrepo)"
text_scm_command: 命令
text_scm_command_version: 版本
text_scm_config: 您可以在 config/configuration.yml 中設定 SCM 命令。請在編輯該檔案之後重新啟動 Redmine 應用程式。
text_scm_command_not_available: SCM 命令無法使用。請檢查管理面板中的設定。
default_role_manager: 管理人員
default_role_developer: 開發人員
@@ -1057,3 +1055,5 @@
enumeration_doc_categories: 文件分類
enumeration_activities: 活動 (時間追蹤)
enumeration_system_activity: 系統活動
text_scm_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+7 -52
View File
@@ -4,51 +4,6 @@ Redmine - project management software
Copyright (C) 2006-2011 Jean-Philippe Lang
http://www.redmine.org/
== 2011-11-11 v1.2.2
* Defect #3276: Incorrect handling of anchors in Wiki to HTML export
* Defect #7215: Wiki formatting mangles links to internal headers
* Defect #7613: Generated test instances may share the same attribute value object
* Defect #8411: Can't remove "Project" column on custom query
* Defect #8615: Custom 'version' fields don't show shared versions
* Defect #8633: Pagination counts non visible issues
* Defect #8651: Email attachments are not added to issues any more in v1.2
* Defect #8825: JRuby + Windows: SCMs do not work on Redmine 1.2
* Defect #8836: Additional workflow transitions not available when set to both author and assignee
* Defect #8865: Custom field regular expression is not validated
* Defect #8880: Error deleting issue with grandchild
* Defect #8884: Assignee is cleared when updating issue with locked assignee
* Defect #8892: Unused fonts in rfpdf plugin folder
* Defect #9161: pt-BR field_warn_on_leaving_unsaved has a small gramatical error
* Defect #9308: Search fails when a role haven't "view wiki" permission
* Defect #9465: Mercurial: can't browse named branch below Mercurial 1.5
== 2011-07-11 v1.2.1
* Defect #5089: i18N error on truncated revision diff view
* Defect #7501: Search options get lost after clicking on a specific result type
* Defect #8229: "project.xml" response does not include the parent ID
* Defect #8449: Wiki annotated page does not display author of version 1
* Defect #8467: Missing german translation - Warn me when leaving a page with unsaved text
* Defect #8468: No warning when leaving page with unsaved text that has not lost focus
* Defect #8472: Private checkbox ignored on issue creation with "Set own issues public or private" permission
* Defect #8510: JRuby: Can't open administrator panel if scm command is not available
* Defect #8512: Syntax highlighter on Welcome page
* Defect #8554: Translation missing error on custom field validation
* Defect #8565: JRuby: Japanese PDF export error
* Defect #8566: Exported PDF UTF-8 Vietnamese not correct
* Defect #8569: JRuby: PDF export error with TypeError
* Defect #8576: Missing german translation - different things
* Defect #8616: Circular relations
* Defect #8646: Russian translation "label_follows" and "label_follows" are wrong
* Defect #8712: False 'Description updated' journal details messages
* Defect #8729: Not-public queries are not private
* Defect #8737: Broken line of long issue description on issue PDF.
* Defect #8738: Missing revision number/id of associated revisions on issue PDF
* Defect #8739: Workflow copy does not copy advanced workflow settings
* Defect #8759: Setting issue attributes from mail should be case-insensitive
* Defect #8777: Mercurial: Not able to Resetting Redmine project respository
== 2011-05-30 v1.2.0
* Defect #61: Broken character encoding in pdf export
@@ -436,7 +391,7 @@ http://www.redmine.org/
* #819: Add a body ID and class to all pages
* #871: Commit new CSS styles!
* #3301: Add favicon to base layout
* #4656: On Issue#show page, clicking on “Add related issue†should focus on the input
* #4656: On Issue#show page, clicking on Add related issue should focus on the input
* #4896: Project identifier should be a limited field
* #5084: Filter all isssues by projects
* #5477: Replace Test::Unit::TestCase with ActiveSupport::TestCase
@@ -1445,7 +1400,7 @@ http://www.redmine.org/
* Search engines now supports pagination. Results are sorted in reverse chronological order
* Added "Estimated hours" attribute on issues
* A category with assigned issue can now be deleted. 2 options are proposed: remove assignments or reassign issues to another category
* Forum notifications are now also sent to the authors of the thread, even if they don�t watch the board
* Forum notifications are now also sent to the authors of the thread, even if they dont watch the board
* Added an application setting to specify the application protocol (http or https) used to generate urls in emails
* Gantt chart: now starts at the current month by default
* Gantt chart: month count and zoom factor are automatically saved as user preferences
@@ -1453,7 +1408,7 @@ http://www.redmine.org/
* Added wiki index by date
* Added preview on add/edit issue form
* Emails footer can now be customized from the admin interface (Admin -> Email notifications)
* Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that they�re properly displayed)
* Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that theyre properly displayed)
* Calendar: first day of week can now be set in lang files
* Automatic closing of duplicate issues
* Added a cross-project issue list
@@ -1465,7 +1420,7 @@ http://www.redmine.org/
* Added some accesskeys
* Added "Float" as a custom field format
* Added basic Theme support
* Added the ability to set the �done ratio� of issues fixed by commit (Nikolay Solakov)
* Added the ability to set the done ratio of issues fixed by commit (Nikolay Solakov)
* Added custom fields in issue related mail notifications
* Email notifications are now sent in plain text and html
* Gantt chart can now be exported to a graphic file (png). This functionality is only available if RMagick is installed.
@@ -1498,7 +1453,7 @@ http://www.redmine.org/
* Added Korean translation (Choi Jong Yoon)
* Fixed: the link to delete issue relations is displayed even if the user is not authorized to delete relations
* Performance improvement on calendar and gantt
* Fixed: wiki preview doesn�t work on long entries
* Fixed: wiki preview doesnt work on long entries
* Fixed: queries with multiple custom fields return no result
* Fixed: Can not authenticate user against LDAP if its DN contains non-ascii characters
* Fixed: URL with ~ broken in wiki formatting
@@ -1509,7 +1464,7 @@ http://www.redmine.org/
* per project forums added
* added the ability to archive projects
* added �Watch� functionality on issues. It allows users to receive notifications about issue changes
* added Watch functionality on issues. It allows users to receive notifications about issue changes
* custom fields for issues can now be used as filters on issue list
* added per user custom queries
* commit messages are now scanned for referenced or fixed issue IDs (keywords defined in Admin -> Settings)
@@ -1550,7 +1505,7 @@ http://www.redmine.org/
* added swedish translation (Thomas Habets)
* italian translation update (Alessio Spadaro)
* japanese translation update (Satoru Kurashiki)
* fixed: error on history atom feed when there�s no notes on an issue change
* fixed: error on history atom feed when theres no notes on an issue change
* fixed: error in journalizing an issue with longtext custom fields (Postgresql)
* fixed: creation of Oracle schema
* fixed: last day of the month not included in project activity
+1 -2
View File
@@ -9,9 +9,8 @@ Running Tests
Run `rake --tasks test` to see available tests.
`rake test` will run the entire testsuite.
You can run `ruby test/unit/issue_test.rb` for an each test.
Before running tests, you need to configure both development
Before running `rake test` you need to configure both development
and test databases.
Creating test repositories
+1 -24
View File
@@ -208,7 +208,7 @@ sub access_handler {
my $project_id = get_project_identifier($r);
$r->set_handlers(PerlAuthenHandler => [\&OK])
if is_public_project($project_id, $r) && anonymous_role_allows_browse_repository($r);
if is_public_project($project_id, $r);
return OK
}
@@ -280,29 +280,6 @@ sub is_public_project {
$ret;
}
sub anonymous_role_allows_browse_repository {
my $r = shift;
my $dbh = connect_database($r);
my $sth = $dbh->prepare(
"SELECT permissions FROM roles WHERE builtin = 2;"
);
$sth->execute();
my $ret = 0;
if (my @row = $sth->fetchrow_array) {
if ($row[0] =~ /:browse_repository/) {
$ret = 1;
}
}
$sth->finish();
undef $sth;
$dbh->disconnect();
undef $dbh;
$ret;
}
# perhaps we should use repository right (other read right) to check public access.
# it could be faster BUT it doesn't work for the moment.
# sub is_public_project_by_file {
+1 -1
View File
@@ -938,7 +938,7 @@ class RedCloth3 < String
stln,algn,atts,url,title,href,href_a1,href_a2 = $~[1..8]
htmlesc title
atts = pba( atts )
atts = " src=\"#{ htmlesc url.dup }\"#{ atts }"
atts = " src=\"#{ url }\"#{ atts }"
atts << " title=\"#{ title }\"" if title
atts << " alt=\"#{ title }\""
# size = @getimagesize($url);
-7
View File
@@ -11,13 +11,6 @@ module Redmine
str = str.encode("US-ASCII", :invalid => :replace,
:undef => :replace, :replace => '?').encode("UTF-8")
end
elsif RUBY_PLATFORM == 'java'
begin
ic = Iconv.new('UTF-8', 'UTF-8')
str = ic.iconv(str)
rescue
str = str.gsub(%r{[^\r\n\t\x20-\x7e]}, '?')
end
else
ic = Iconv.new('UTF-8', 'UTF-8')
txtar = ""
+39 -51
View File
@@ -40,39 +40,33 @@ module Redmine
@ic = Iconv.new(pdf_encoding, 'UTF-8')
end
super('P', 'mm', 'A4', (pdf_encoding == 'UTF-8'), pdf_encoding)
case current_language.to_s.downcase
when 'vi'
@font_for_content = 'DejaVuSans'
@font_for_footer = 'DejaVuSans'
case pdf_encoding
when 'UTF-8'
@font_for_content = 'FreeSans'
@font_for_footer = 'FreeSans'
when 'CP949'
extend(PDF_Korean)
AddUHCFont()
@font_for_content = 'UHC'
@font_for_footer = 'UHC'
when 'CP932'
extend(PDF_Japanese)
AddSJISFont()
@font_for_content = 'SJIS'
@font_for_footer = 'SJIS'
when 'GB18030'
extend(PDF_Chinese)
AddGBFont()
@font_for_content = 'GB'
@font_for_footer = 'GB'
when 'BIG5'
extend(PDF_Chinese)
AddBig5Font()
@font_for_content = 'Big5'
@font_for_footer = 'Big5'
else
case pdf_encoding
when 'UTF-8'
@font_for_content = 'FreeSans'
@font_for_footer = 'FreeSans'
when 'CP949'
extend(PDF_Korean)
AddUHCFont()
@font_for_content = 'UHC'
@font_for_footer = 'UHC'
when 'CP932', 'SJIS', 'SHIFT_JIS'
extend(PDF_Japanese)
AddSJISFont()
@font_for_content = 'SJIS'
@font_for_footer = 'SJIS'
when 'GB18030'
extend(PDF_Chinese)
AddGBFont()
@font_for_content = 'GB'
@font_for_footer = 'GB'
when 'BIG5'
extend(PDF_Chinese)
AddBig5Font()
@font_for_content = 'Big5'
@font_for_footer = 'Big5'
else
@font_for_content = 'Arial'
@font_for_footer = 'Helvetica'
end
@font_for_content = 'Arial'
@font_for_footer = 'Helvetica'
end
SetCreator(Redmine::Info.app_name)
SetFont(@font_for_content)
@@ -107,12 +101,12 @@ module Redmine
RDMPdfEncoding::rdm_pdf_iconv(@ic, txt)
end
def RDMCell(w ,h=0, txt='', border=0, ln=0, align='', fill=0, link='')
Cell(w, h, fix_text_encoding(txt), border, ln, align, fill, link)
def RDMCell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
Cell(w,h,fix_text_encoding(txt),border,ln,align,fill,link)
end
def RDMMultiCell(w, h=0, txt='', border=0, align='', fill=0, ln=1)
MultiCell(w, h, fix_text_encoding(txt), border, align, fill, ln)
def RDMMultiCell(w,h=0,txt='',border=0,align='',fill=0)
MultiCell(w,h,fix_text_encoding(txt),border,align,fill)
end
def Footer
@@ -282,6 +276,8 @@ module Redmine
"#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}")
pdf.Ln
y0 = pdf.GetY
pdf.SetFontStyle('B',9)
pdf.RDMCell(35,5, l(:field_status) + ":","LT")
pdf.SetFontStyle('',9)
@@ -329,18 +325,18 @@ module Redmine
pdf.RDMMultiCell(155,5, (show_value custom_value),"R")
end
y0 = pdf.GetY
pdf.SetFontStyle('B',9)
pdf.RDMCell(35,5, l(:field_subject) + ":","LT")
pdf.SetFontStyle('',9)
pdf.RDMMultiCell(155,5, issue.subject,"RT")
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
pdf.SetFontStyle('B',9)
pdf.RDMCell(35+155, 5, l(:field_description), "LRT", 1)
pdf.RDMCell(35,5, l(:field_description) + ":","LT")
pdf.SetFontStyle('',9)
pdf.RDMMultiCell(35+155, 5, issue.description.to_s, "LRB")
pdf.RDMMultiCell(155,5, issue.description.to_s,"RT")
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
pdf.Line(pdf.GetX, pdf.GetY, pdf.GetX + 190, pdf.GetY)
pdf.Ln
if issue.changesets.any? &&
@@ -350,9 +346,8 @@ module Redmine
pdf.Ln
for changeset in issue.changesets
pdf.SetFontStyle('B',8)
csstr = "#{l(:label_revision)} #{changeset.format_identifier} - "
csstr += format_time(changeset.committed_on) + " - " + changeset.author.to_s
pdf.RDMCell(190, 5, csstr)
pdf.RDMCell(190,5,
format_time(changeset.committed_on) + " - " + changeset.author.to_s)
pdf.Ln
unless changeset.comments.blank?
pdf.SetFontStyle('',8)
@@ -413,13 +408,6 @@ module Redmine
txt = Redmine::CodesetUtil.replace_invalid_utf8(txt)
end
txt.force_encoding('ASCII-8BIT')
elsif RUBY_PLATFORM == 'java'
begin
ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
txt = ic.iconv(txt)
rescue
txt = txt.gsub(%r{[^\r\n\t\x20-\x7e]}, '?')
end
else
ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
txtar = ""
+22 -22
View File
@@ -1,16 +1,16 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
# Copyright (C) 2006-2008 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.
@@ -22,7 +22,7 @@ module Redmine
@@listener_classes = []
@@listeners = nil
@@hook_listeners = {}
class << self
# Adds a listener class.
# Automatically called when a class inherits from Redmine::Hook::Listener.
@@ -31,29 +31,29 @@ module Redmine
@@listener_classes << klass
clear_listeners_instances
end
# Returns all the listerners instances.
def listeners
@@listeners ||= @@listener_classes.collect {|listener| listener.instance}
end
# Returns the listeners instances for the given hook.
def hook_listeners(hook)
@@hook_listeners[hook] ||= listeners.select {|listener| listener.respond_to?(hook)}
end
# Clears all the listeners.
def clear_listeners
@@listener_classes = []
clear_listeners_instances
end
# Clears all the listeners instances.
def clear_listeners_instances
@@listeners = nil
@@hook_listeners = {}
end
# Calls a hook.
# Returns the listeners response.
def call_hook(hook, context={})
@@ -101,11 +101,11 @@ module Redmine
def self.default_url_options
{:only_path => true }
end
# Helper method to directly render a partial using the context:
#
#
# class MyHook < Redmine::Hook::ViewListener
# render_on :view_issues_show_details_bottom, :partial => "show_more_data"
# render_on :view_issues_show_details_bottom, :partial => "show_more_data"
# end
#
def self.render_on(hook, options={})
@@ -115,25 +115,25 @@ module Redmine
end
end
# Helper module included in ApplicationHelper and ActionController so that
# Helper module included in ApplicationHelper and ActionControllerso that
# hooks can be called in views like this:
#
#
# <%= call_hook(:some_hook) %>
# <%= call_hook(:another_hook, :foo => 'bar') %>
#
# <%= call_hook(:another_hook, :foo => 'bar' %>
#
# Or in controllers like:
# call_hook(:some_hook)
# call_hook(:another_hook, :foo => 'bar')
#
# Hooks added to views will be concatenated into a string. Hooks added to
# call_hook(:another_hook, :foo => 'bar'
#
# Hooks added to views will be concatenated into a string. Hooks added to
# controllers will return an array of results.
#
# Several objects are automatically added to the call context:
#
#
# * project => current project
# * request => Request instance
# * controller => current Controller instance
#
#
module Helper
def call_hook(hook, context={})
if is_a?(ActionController::Base)
@@ -142,7 +142,7 @@ module Redmine
else
default_context = {:controller => controller, :project => @project, :request => request}
Redmine::Hook.call_hook(hook, default_context.merge(context)).join(' ')
end
end
end
end
end
+3 -23
View File
@@ -29,14 +29,6 @@ module Redmine
""
end
def shell_quote_command
if Redmine::Platform.mswin? && RUBY_PLATFORM == 'java'
client_command
else
shell_quote(client_command)
end
end
# Returns the version of the scm client
# Eg: [1, 5, 0] or [] if unknown
def client_version
@@ -207,9 +199,7 @@ module Redmine
end
def self.shellout(cmd, &block)
if logger && logger.debug?
logger.debug "Shelling out: #{strip_credential(cmd)}"
end
logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug?
if Rails.env == 'development'
# Capture stderr when running in dev environment
cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log"
@@ -224,20 +214,10 @@ module Redmine
io.close_write
block.call(io) if block_given?
end
## If scm command does not exist,
## Linux JRuby 1.6.2 (ruby-1.8.7-p330) raises java.io.IOException
## in production environment.
# rescue Errno::ENOENT => e
rescue Exception => e
rescue Errno::ENOENT => e
msg = strip_credential(e.message)
# The command failed, log it and re-raise
logmsg = "SCM command failed, "
logmsg += "make sure that your SCM command (e.g. svn) is "
logmsg += "in PATH (#{ENV['PATH']})\n"
logmsg += "You can configure your scm commands in config/configuration.yml.\n"
logmsg += "#{strip_credential(cmd)}\n"
logmsg += "with: #{msg}"
logger.error(logmsg)
logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}")
raise CommandFailed.new(msg)
end
end
+1 -1
View File
@@ -31,7 +31,7 @@ module Redmine
end
def sq_bin
@@sq_bin ||= shell_quote_command
@@sq_bin ||= shell_quote(BZR_BIN)
end
def client_version
+3 -6
View File
@@ -34,7 +34,7 @@ module Redmine
end
def sq_bin
@@sq_bin ||= shell_quote_command
@@sq_bin ||= shell_quote(CVS_BIN)
end
def client_version
@@ -379,16 +379,13 @@ module Redmine
end
def scm_cmd(*args, &block)
full_args = ['-d', root_url]
full_args = [CVS_BIN, '-d', root_url]
full_args += args
full_args_locale = []
full_args.map do |e|
full_args_locale << scm_iconv(@path_encoding, 'UTF-8', e)
end
ret = shellout(
self.class.sq_bin + ' ' + full_args_locale.map { |e| shell_quote e.to_s }.join(' '),
&block
)
ret = shellout(full_args_locale.map { |e| shell_quote e.to_s }.join(' '), &block)
if $? && $?.exitstatus != 0
raise ScmCommandAborted, "cvs exited with non-zero status: #{$?.exitstatus}"
end
+1 -1
View File
@@ -31,7 +31,7 @@ module Redmine
end
def sq_bin
@@sq_bin ||= shell_quote_command
@@sq_bin ||= shell_quote(DARCS_BIN)
end
def client_version
+3 -6
View File
@@ -34,7 +34,7 @@ module Redmine
end
def sq_bin
@@sq_bin ||= shell_quote_command
@@sq_bin ||= shell_quote(GIT_BIN)
end
def client_version
@@ -359,16 +359,13 @@ module Redmine
def scm_cmd(*args, &block)
repo_path = root_url || url
full_args = ['--git-dir', repo_path]
full_args = [GIT_BIN, '--git-dir', repo_path]
if self.class.client_version_above?([1, 7, 2])
full_args << '-c' << 'core.quotepath=false'
full_args << '-c' << 'log.decorate=no'
end
full_args += args
ret = shellout(
self.class.sq_bin + ' ' + full_args.map { |e| shell_quote e.to_s }.join(' '),
&block
)
ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
if $? && $?.exitstatus != 0
raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}"
end
@@ -0,0 +1,12 @@
changeset = 'This template must be used with --debug option\n'
changeset_quiet = 'This template must be used with --debug option\n'
changeset_verbose = 'This template must be used with --debug option\n'
changeset_debug = '<logentry revision="{rev}" node="{node|short}">\n<author>{author|escape}</author>\n<date>{date|isodate}</date>\n<paths>\n{files}{file_adds}{file_dels}{file_copies}</paths>\n<msg>{desc|escape}</msg>\n{tags}</logentry>\n\n'
file = '<path action="M">{file|urlescape}</path>\n'
file_add = '<path action="A">{file_add|urlescape}</path>\n'
file_del = '<path action="D">{file_del|urlescape}</path>\n'
file_copy = '<path-copied copyfrom-path="{source|urlescape}">{name|urlescape}</path-copied>\n'
tag = '<tag>{tag|escape}</tag>\n'
header='<?xml version="1.0" encoding="UTF-8" ?>\n<log>\n\n'
# footer="</log>"
@@ -46,7 +46,7 @@ Output example of rhmanifest::
</rhmanifest>
"""
import re, time, cgi, urllib
from mercurial import cmdutil, commands, node, error, hg
from mercurial import cmdutil, commands, node, error
_x = cgi.escape
_u = lambda s: cgi.escape(urllib.quote(s))
@@ -146,10 +146,7 @@ def rhlog(ui, repo, *pats, **opts):
bra = urllib.unquote_plus(opts.pop('rhbranch', None))
from_rev = from_rev.replace('"', '\\"')
to_rev = to_rev.replace('"', '\\"')
if hg.util.version() >= '1.6':
opts['rev'] = ['"%s":"%s"' % (from_rev, to_rev)]
else:
opts['rev'] = ['%s:%s' % (from_rev, to_rev)]
opts['rev'] = ['"%s":"%s"' % (from_rev, to_rev)]
opts['branch'] = [bra]
return commands.log(ui, repo, *map(urllib.unquote_plus, pats), **opts)
@@ -199,21 +196,21 @@ cmdtable = {
[
('r', 'rev', [], 'show the specified revision'),
('b', 'branch', [],
'show changesets within the given named branch'),
'show changesets within the given named branch', 'BRANCH'),
('l', 'limit', '',
'limit number of changes displayed'),
'limit number of changes displayed', 'NUM'),
('d', 'date', '',
'show revisions matching date spec'),
'show revisions matching date spec', 'DATE'),
('u', 'user', [],
'revisions committed by user'),
'revisions committed by user', 'USER'),
('', 'from', '',
''),
'', ''),
('', 'to', '',
''),
'', ''),
('', 'rhbranch', '',
''),
'', ''),
('', 'template', '',
'display with template')],
'display with template', 'TEMPLATE')],
'hg rhlog [OPTION]... [FILE]'),
'rhmanifest': (rhmanifest,
[('r', 'rev', '', 'show the specified revision')],
+11 -14
View File
@@ -39,7 +39,7 @@ module Redmine
end
def sq_bin
@@sq_bin ||= shell_quote_command
@@sq_bin ||= shell_quote(HG_BIN)
end
def client_version
@@ -47,7 +47,7 @@ module Redmine
end
def client_available
client_version_above?([1, 2])
client_version_above?([0, 9, 5])
end
def hgversion
@@ -72,7 +72,12 @@ module Redmine
end
def template_path_for(version)
"#{HELPERS_DIR}/#{TEMPLATE_NAME}-1.0.#{TEMPLATE_EXTENSION}"
if ((version <=> [0,9,5]) > 0) || version.empty?
ver = "1.0"
else
ver = "0.9.5"
end
"#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}"
end
end
@@ -90,10 +95,6 @@ module Redmine
Info.new(:root_url => CGI.unescape(summary['repository']['root']),
:lastrev => Revision.new(:revision => tip['revision'],
:scmid => tip['node']))
# rescue HgCommandAborted
rescue Exception => e
logger.error "hg: error during getting info: #{e.message}"
nil
end
def tags
@@ -275,8 +276,7 @@ module Redmine
end
blame
rescue HgCommandAborted
# means not found or cannot be annotated
Annotate.new
nil # means not found or cannot be annotated
end
class Revision < Redmine::Scm::Adapters::Revision
@@ -289,14 +289,11 @@ module Redmine
# Runs 'hg' command with the given args
def hg(*args, &block)
repo_path = root_url || url
full_args = ['-R', repo_path, '--encoding', 'utf-8']
full_args = [HG_BIN, '-R', repo_path, '--encoding', 'utf-8']
full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}"
full_args << '--config' << 'diff.git=false'
full_args += args
ret = shellout(
self.class.sq_bin + ' ' + full_args.map { |e| shell_quote e.to_s }.join(' '),
&block
)
ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
if $? && $?.exitstatus != 0
raise HgCommandAborted, "hg exited with non-zero status: #{$?.exitstatus}"
end
@@ -32,7 +32,7 @@ module Redmine
end
def sq_bin
@@sq_bin ||= shell_quote_command
@@sq_bin ||= shell_quote(SVN_BIN)
end
def client_version
+1 -1
View File
@@ -4,7 +4,7 @@ module Redmine
module VERSION #:nodoc:
MAJOR = 1
MINOR = 2
TINY = 2
TINY = 0
# Branch values:
# * official release: nil
+2 -2
View File
@@ -100,14 +100,14 @@ Processed emails control options:
Examples:
# No project specified. Emails MUST contain the 'Project' keyword:
rake redmine:email:receive_imap RAILS_ENV="production" \\
rake redmine:email:receive_iamp RAILS_ENV="production" \\
host=imap.foo.bar username=redmine@example.net password=xxx
# Fixed project and default tracker specified, but emails can override
# both tracker and priority attributes:
rake redmine:email:receive_imap RAILS_ENV="production" \\
rake redmine:email:receive_iamp RAILS_ENV="production" \\
host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
project=foo \\
tracker=bug \\
-1
View File
@@ -309,7 +309,6 @@ var WarnLeavingUnsaved = Class.create({
},
unload: function(){
this.observedElements.each(function(el) {el.blur();})
if(this.changedForms)
return this.message;
},
+6 -1
View File
@@ -1,4 +1,9 @@
class AuthSource < ActiveRecord::Base
generator_for :name, :start => 'Auth0'
generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Auth0'
@last_name.succ!
@last_name
end
end
+14 -2
View File
@@ -1,8 +1,20 @@
class Board < ActiveRecord::Base
generator_for :name, :start => 'A Forum'
generator_for :description, :start => 'Some description here'
generator_for :name, :method => :next_name
generator_for :description, :method => :next_description
generator_for :project, :method => :generate_project
def self.next_name
@last_name ||= 'A Forum'
@last_name.succ!
@last_name
end
def self.next_description
@last_description ||= 'Some description here'
@last_description.succ!
@last_description
end
def self.generate_project
Project.generate!
end
+7 -1
View File
@@ -1,8 +1,14 @@
class Change < ActiveRecord::Base
generator_for :action => 'A'
generator_for :path, :start => 'test/dir/aaa0001'
generator_for :path, :method => :next_path
generator_for :changeset, :method => :generate_changeset
def self.next_path
@last_path ||= 'test/dir/aaa0001'
@last_path.succ!
@last_path
end
def self.generate_changeset
Changeset.generate!
end
+7 -1
View File
@@ -1,8 +1,14 @@
class Changeset < ActiveRecord::Base
generator_for :revision, :start => '1'
generator_for :revision, :method => :next_revision
generator_for :committed_on => Date.today
generator_for :repository, :method => :generate_repository
def self.next_revision
@last_revision ||= '1'
@last_revision.succ!
@last_revision
end
def self.generate_repository
Repository::Subversion.generate!
end
+6 -1
View File
@@ -1,5 +1,10 @@
class CustomField < ActiveRecord::Base
generator_for :name, :start => 'CustomField0'
generator_for :name, :method => :next_name
generator_for :field_format => 'string'
def self.next_name
@last_name ||= 'CustomField0'
@last_name.succ!
@last_name
end
end
+6 -1
View File
@@ -1,5 +1,10 @@
class DocumentCategory < Enumeration
generator_for :name, :start => 'DocumentCategory0'
generator_for :name, :method => :next_name
generator_for :type => 'DocumentCategory'
def self.next_name
@last_name ||= 'DocumentCategory0'
@last_name.succ!
@last_name
end
end
+6 -1
View File
@@ -1,4 +1,9 @@
class Document < ActiveRecord::Base
generator_for :title, :start => 'Document001'
generator_for :title, :method => :next_title
def self.next_title
@last_title ||= 'Document001'
@last_title.succ!
@last_title
end
end
+7 -1
View File
@@ -1,4 +1,10 @@
class EnabledModule < ActiveRecord::Base
generator_for :name, :start => 'module_001'
generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'module_001'
@last_name.succ!
@last_name
end
end
+6 -1
View File
@@ -1,5 +1,10 @@
class Enumeration < ActiveRecord::Base
generator_for :name, :start => 'Enumeration0'
generator_for :name, :method => :next_name
generator_for :type => 'TimeEntryActivity'
def self.next_name
@last_name ||= 'Enumeration0'
@last_name.succ!
@last_name
end
end
+7 -1
View File
@@ -1,4 +1,10 @@
class Group < Principal
generator_for :lastname, :start => 'Group'
generator_for :lastname, :method => :next_lastname
def self.next_lastname
@last_lastname ||= 'Group'
@last_lastname.succ!
@last_lastname
end
end
+7 -2
View File
@@ -1,4 +1,9 @@
class IssueCategory < ActiveRecord::Base
generator_for :name, :start => 'Category 0001'
generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Category 0001'
@last_name.succ!
@last_name
end
end
+8 -1
View File
@@ -1,7 +1,13 @@
class Issue < ActiveRecord::Base
generator_for :subject, :start => 'Subject 0'
generator_for :subject, :method => :next_subject
generator_for :author, :method => :next_author
generator_for :priority, :method => :fetch_priority
def self.next_subject
@last_subject ||= 'Subject 0'
@last_subject.succ!
@last_subject
end
def self.next_author
User.generate_with_protected!
@@ -10,4 +16,5 @@ class Issue < ActiveRecord::Base
def self.fetch_priority
IssuePriority.first || IssuePriority.generate!
end
end
+6 -1
View File
@@ -1,5 +1,10 @@
class IssuePriority < Enumeration
generator_for :name, :start => 'IssuePriority0'
generator_for :name, :method => :next_name
generator_for :type => 'IssuePriority'
def self.next_name
@last_name ||= 'IssuePriority0'
@last_name.succ!
@last_name
end
end
+6 -1
View File
@@ -1,4 +1,9 @@
class IssueStatus < ActiveRecord::Base
generator_for :name, :start => 'Status 0'
generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Status 0'
@last_name.succ!
@last_name
end
end
+14 -2
View File
@@ -1,8 +1,20 @@
class Message < ActiveRecord::Base
generator_for :subject, :start => 'A Message'
generator_for :content, :start => 'Some content here'
generator_for :subject, :method => :next_subject
generator_for :content, :method => :next_content
generator_for :board, :method => :generate_board
def self.next_subject
@last_subject ||= 'A Message'
@last_subject.succ!
@last_subject
end
def self.next_content
@last_content ||= 'Some content here'
@last_content.succ!
@last_content
end
def self.generate_board
Board.generate!
end
+13 -2
View File
@@ -1,5 +1,16 @@
class News < ActiveRecord::Base
generator_for :title, :start => 'A New Item'
generator_for :description, :start => 'Some content here'
generator_for :title, :method => :next_title
generator_for :description, :method => :next_description
def self.next_title
@last_title ||= 'A New Item'
@last_title.succ!
@last_title
end
def self.next_description
@last_description ||= 'Some content here'
@last_description.succ!
@last_description
end
end
+15 -2
View File
@@ -1,8 +1,21 @@
class Project < ActiveRecord::Base
generator_for :name, :start => 'Project 0'
generator_for :identifier, :start => 'project-0000'
generator_for :name, :method => :next_name
generator_for :identifier, :method => :next_identifier_from_object_daddy
generator_for :enabled_modules, :method => :all_modules
generator_for :trackers, :method => :next_tracker
def self.next_name
@last_name ||= 'Project 0'
@last_name.succ!
@last_name
end
# Project#next_identifier is defined on Redmine
def self.next_identifier_from_object_daddy
@last_identifier ||= 'project-0000'
@last_identifier.succ!
@last_identifier
end
def self.all_modules
[].tap do |modules|
+6 -1
View File
@@ -1,4 +1,9 @@
class Query < ActiveRecord::Base
generator_for :name, :start => 'Query 0'
generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Query 0'
@last_name.succ!
@last_name
end
end
+7 -1
View File
@@ -1,5 +1,11 @@
class Repository < ActiveRecord::Base
generator_for :type => 'Subversion'
generator_for :url, :start => 'file:///test/svn'
generator_for :url, :method => :next_url
def self.next_url
@last_url ||= 'file:///test/svn'
@last_url.succ!
@last_url
end
end
+5 -1
View File
@@ -1,4 +1,8 @@
class Role < ActiveRecord::Base
generator_for :name, :start => 'Role0'
generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Role0'
@last_name.succ!
end
end
@@ -1,5 +1,11 @@
class Repository::Subversion < Repository
generator_for :type, :method => 'Subversion'
generator_for :url, :start => 'file:///test/svn'
generator_for :url, :method => :next_url
def self.next_url
@last_url ||= 'file:///test/svn'
@last_url.succ!
@last_url
end
end
+6 -1
View File
@@ -1,5 +1,10 @@
class TimeEntryActivity < Enumeration
generator_for :name, :start => 'TimeEntryActivity0'
generator_for :name, :method => :next_name
generator_for :type => 'TimeEntryActivity'
def self.next_name
@last_name ||= 'TimeEntryActivity0'
@last_name.succ!
@last_name
end
end
+1
View File
@@ -6,4 +6,5 @@ class TimeEntry < ActiveRecord::Base
def self.generate_user
User.generate_with_protected!
end
end
+6 -1
View File
@@ -1,4 +1,9 @@
class Tracker < ActiveRecord::Base
generator_for :name, :start => 'Tracker 0'
generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Tracker 0'
@last_name.succ!
@last_name
end
end
+22 -4
View File
@@ -1,12 +1,30 @@
class User < Principal
generator_for :login, :start => 'user1'
generator_for :login, :method => :next_login
generator_for :mail, :method => :next_email
generator_for :firstname, :start => 'Bob'
generator_for :lastname, :start => 'Doe'
generator_for :firstname, :method => :next_firstname
generator_for :lastname, :method => :next_lastname
def self.next_login
@gen_login ||= 'user1'
@gen_login.succ!
@gen_login
end
def self.next_email
@last_email ||= 'user1'
@last_email.succ!
"#{@last_email}@example.com"
end
def self.next_firstname
@last_firstname ||= 'Bob'
@last_firstname.succ!
@last_firstname
end
def self.next_lastname
@last_lastname ||= 'Doe'
@last_lastname.succ!
@last_lastname
end
end
+7 -1
View File
@@ -1,5 +1,11 @@
class Version < ActiveRecord::Base
generator_for :name, :start => 'Version 1.0.0'
generator_for :name, :method => :next_name
generator_for :status => 'open'
def self.next_name
@last_name ||= 'Version 1.0.0'
@last_name.succ!
@last_name
end
end
+7 -1
View File
@@ -1,7 +1,13 @@
class WikiPage < ActiveRecord::Base
generator_for :title, :start => 'AWikiPage'
generator_for :title, :method => :next_title
generator_for :wiki, :method => :generate_wiki
def self.next_title
@last_title ||= 'AWikiPage'
@last_title.succ!
@last_title
end
def self.generate_wiki
Wiki.generate!
end
+14 -2
View File
@@ -1,8 +1,20 @@
class WikiRedirect < ActiveRecord::Base
generator_for :title, :start => 'AWikiPage'
generator_for :redirects_to, :start => '/a/path/000001'
generator_for :title, :method => :next_title
generator_for :redirects_to, :method => :next_redirects_to
generator_for :wiki, :method => :generate_wiki
def self.next_title
@last_title ||= 'AWikiPage'
@last_title.succ!
@last_title
end
def self.next_redirects_to
@last_redirect ||= '/a/path/000001'
@last_redirect.succ!
@last_redirect
end
def self.generate_wiki
Wiki.generate!
end

Some files were not shown because too many files have changed in this diff Show More