Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed6151b4d2 | ||
|
|
3d1bd79ffb | ||
|
|
7f957653ad | ||
|
|
9a9141041e | ||
|
|
bc4249e3d3 | ||
|
|
fae04f3ae1 | ||
|
|
b13ef64794 | ||
|
|
683e1c5d73 | ||
|
|
1c1755d278 | ||
|
|
5e6ff86f47 | ||
|
|
764393aa6a | ||
|
|
3155b8ccad | ||
|
|
567c8ed9b0 | ||
|
|
49b6f9e4dd | ||
|
|
c9d4d3a2be | ||
|
|
31178553f3 | ||
|
|
dea10c54f9 | ||
|
|
6abd32be9e | ||
|
|
56318aab53 | ||
|
|
babb14dd94 | ||
|
|
3b90141543 | ||
|
|
bce764d9bc | ||
|
|
b65d546245 | ||
|
|
9f12151ac0 | ||
|
|
78cac6f02b | ||
|
|
16b85bda32 | ||
|
|
733987fbb6 | ||
|
|
7389b4bed0 | ||
|
|
4570fcb7a2 | ||
|
|
0a709660d2 | ||
|
|
633e026e44 | ||
|
|
618ab6004e | ||
|
|
644f03b834 | ||
|
|
1154141ee7 | ||
|
|
bf42d9b706 |
@@ -27,7 +27,7 @@ class AdminController < ApplicationController
|
|||||||
|
|
||||||
def projects
|
def projects
|
||||||
sort_init 'name', 'asc'
|
sort_init 'name', 'asc'
|
||||||
sort_update
|
sort_update %w(name is_public created_on)
|
||||||
|
|
||||||
@status = params[:status] ? params[:status].to_i : 1
|
@status = params[:status] ? params[:status].to_i : 1
|
||||||
c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
|
c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
|
||||||
@@ -86,6 +86,7 @@ class AdminController < ApplicationController
|
|||||||
@flags = {
|
@flags = {
|
||||||
:default_admin_changed => User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?,
|
:default_admin_changed => User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?,
|
||||||
:file_repository_writable => File.writable?(Attachment.storage_path),
|
:file_repository_writable => File.writable?(Attachment.storage_path),
|
||||||
|
:plugin_assets_writable => File.writable?(Engines.public_directory),
|
||||||
:rmagick_available => Object.const_defined?(:Magick)
|
:rmagick_available => Object.const_defined?(:Magick)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -126,10 +126,14 @@ class ApplicationController < ActionController::Base
|
|||||||
def redirect_back_or_default(default)
|
def redirect_back_or_default(default)
|
||||||
back_url = CGI.unescape(params[:back_url].to_s)
|
back_url = CGI.unescape(params[:back_url].to_s)
|
||||||
if !back_url.blank?
|
if !back_url.blank?
|
||||||
uri = URI.parse(back_url)
|
begin
|
||||||
# do not redirect user to another host or to the login or register page
|
uri = URI.parse(back_url)
|
||||||
if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)})
|
# do not redirect user to another host or to the login or register page
|
||||||
redirect_to(back_url) and return
|
if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)})
|
||||||
|
redirect_to(back_url) and return
|
||||||
|
end
|
||||||
|
rescue URI::InvalidURIError
|
||||||
|
# redirect to default
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
redirect_to default
|
redirect_to default
|
||||||
@@ -171,6 +175,7 @@ class ApplicationController < ActionController::Base
|
|||||||
# TODO: move to model
|
# TODO: move to model
|
||||||
def attach_files(obj, attachments)
|
def attach_files(obj, attachments)
|
||||||
attached = []
|
attached = []
|
||||||
|
unsaved = []
|
||||||
if attachments && attachments.is_a?(Hash)
|
if attachments && attachments.is_a?(Hash)
|
||||||
attachments.each_value do |attachment|
|
attachments.each_value do |attachment|
|
||||||
file = attachment['file']
|
file = attachment['file']
|
||||||
@@ -179,7 +184,10 @@ class ApplicationController < ActionController::Base
|
|||||||
:file => file,
|
:file => file,
|
||||||
:description => attachment['description'].to_s.strip,
|
:description => attachment['description'].to_s.strip,
|
||||||
:author => User.current)
|
:author => User.current)
|
||||||
attached << a unless a.new_record?
|
a.new_record? ? (unsaved << a) : (attached << a)
|
||||||
|
end
|
||||||
|
if unsaved.any?
|
||||||
|
flash[:warning] = l(:warning_attachments_not_saved, unsaved.size)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
attached
|
attached
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# redMine - project management software
|
# Redmine - project management software
|
||||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
# Copyright (C) 2006-2008 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
@@ -17,6 +17,10 @@
|
|||||||
|
|
||||||
class AttachmentsController < ApplicationController
|
class AttachmentsController < ApplicationController
|
||||||
before_filter :find_project
|
before_filter :find_project
|
||||||
|
before_filter :read_authorize, :except => :destroy
|
||||||
|
before_filter :delete_authorize, :only => :destroy
|
||||||
|
|
||||||
|
verify :method => :post, :only => :destroy
|
||||||
|
|
||||||
def show
|
def show
|
||||||
if @attachment.is_diff?
|
if @attachment.is_diff?
|
||||||
@@ -31,12 +35,23 @@ class AttachmentsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def download
|
def download
|
||||||
@attachment.increment_download if @attachment.container.is_a?(Version)
|
if @attachment.container.is_a?(Version) || @attachment.container.is_a?(Project)
|
||||||
|
@attachment.increment_download
|
||||||
|
end
|
||||||
|
|
||||||
# images are sent inline
|
# images are sent inline
|
||||||
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
|
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
|
||||||
:type => @attachment.content_type,
|
:type => @attachment.content_type,
|
||||||
:disposition => (@attachment.image? ? 'inline' : 'attachment')
|
:disposition => (@attachment.image? ? 'inline' : 'attachment')
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
# Make sure association callbacks are called
|
||||||
|
@attachment.container.attachments.delete(@attachment)
|
||||||
|
redirect_to :back
|
||||||
|
rescue ::ActionController::RedirectBackError
|
||||||
|
redirect_to :controller => 'projects', :action => 'show', :id => @project
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -44,12 +59,16 @@ private
|
|||||||
@attachment = Attachment.find(params[:id])
|
@attachment = Attachment.find(params[:id])
|
||||||
# Show 404 if the filename in the url is wrong
|
# Show 404 if the filename in the url is wrong
|
||||||
raise ActiveRecord::RecordNotFound if params[:filename] && params[:filename] != @attachment.filename
|
raise ActiveRecord::RecordNotFound if params[:filename] && params[:filename] != @attachment.filename
|
||||||
|
|
||||||
@project = @attachment.project
|
@project = @attachment.project
|
||||||
permission = @attachment.container.is_a?(Version) ? :view_files : "view_#{@attachment.container.class.name.underscore.pluralize}".to_sym
|
|
||||||
allowed = User.current.allowed_to?(permission, @project)
|
|
||||||
allowed ? true : (User.current.logged? ? render_403 : require_login)
|
|
||||||
rescue ActiveRecord::RecordNotFound
|
rescue ActiveRecord::RecordNotFound
|
||||||
render_404
|
render_404
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def read_authorize
|
||||||
|
@attachment.visible? ? true : deny_access
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete_authorize
|
||||||
|
@attachment.deletable? ? true : deny_access
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -35,12 +35,14 @@ class BoardsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
sort_init "#{Message.table_name}.updated_on", "desc"
|
sort_init 'updated_on', 'desc'
|
||||||
sort_update
|
sort_update 'created_on' => "#{Message.table_name}.created_on",
|
||||||
|
'replies' => "#{Message.table_name}.replies_count",
|
||||||
|
'updated_on' => "#{Message.table_name}.updated_on"
|
||||||
|
|
||||||
@topic_count = @board.topics.count
|
@topic_count = @board.topics.count
|
||||||
@topic_pages = Paginator.new self, @topic_count, per_page_option, params['page']
|
@topic_pages = Paginator.new self, @topic_count, per_page_option, params['page']
|
||||||
@topics = @board.topics.find :all, :order => "#{Message.table_name}.sticky DESC, #{sort_clause}",
|
@topics = @board.topics.find :all, :order => ["#{Message.table_name}.sticky DESC", sort_clause].compact.join(', '),
|
||||||
:include => [:author, {:last_reply => :author}],
|
:include => [:author, {:last_reply => :author}],
|
||||||
:limit => @topic_pages.items_per_page,
|
:limit => @topic_pages.items_per_page,
|
||||||
:offset => @topic_pages.current.offset
|
:offset => @topic_pages.current.offset
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ class DocumentsController < ApplicationController
|
|||||||
else
|
else
|
||||||
@grouped = documents.group_by(&:category)
|
@grouped = documents.group_by(&:category)
|
||||||
end
|
end
|
||||||
|
@document = @project.documents.build
|
||||||
render :layout => false if request.xhr?
|
render :layout => false if request.xhr?
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -71,11 +72,6 @@ class DocumentsController < ApplicationController
|
|||||||
redirect_to :action => 'show', :id => @document
|
redirect_to :action => 'show', :id => @document
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_attachment
|
|
||||||
@document.attachments.find(params[:attachment_id]).destroy
|
|
||||||
redirect_to :action => 'show', :id => @document
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
def find_project
|
def find_project
|
||||||
@project = Project.find(params[:project_id])
|
@project = Project.find(params[:project_id])
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
class IssuesController < ApplicationController
|
class IssuesController < ApplicationController
|
||||||
menu_item :new_issue, :only => :new
|
menu_item :new_issue, :only => :new
|
||||||
|
|
||||||
before_filter :find_issue, :only => [:show, :edit, :reply, :destroy_attachment]
|
before_filter :find_issue, :only => [:show, :edit, :reply]
|
||||||
before_filter :find_issues, :only => [:bulk_edit, :move, :destroy]
|
before_filter :find_issues, :only => [:bulk_edit, :move, :destroy]
|
||||||
before_filter :find_project, :only => [:new, :update_form, :preview]
|
before_filter :find_project, :only => [:new, :update_form, :preview]
|
||||||
before_filter :authorize, :except => [:index, :changes, :gantt, :calendar, :preview, :update_form, :context_menu]
|
before_filter :authorize, :except => [:index, :changes, :gantt, :calendar, :preview, :update_form, :context_menu]
|
||||||
@@ -30,8 +30,6 @@ class IssuesController < ApplicationController
|
|||||||
include ProjectsHelper
|
include ProjectsHelper
|
||||||
helper :custom_fields
|
helper :custom_fields
|
||||||
include CustomFieldsHelper
|
include CustomFieldsHelper
|
||||||
helper :ifpdf
|
|
||||||
include IfpdfHelper
|
|
||||||
helper :issue_relations
|
helper :issue_relations
|
||||||
include IssueRelationsHelper
|
include IssueRelationsHelper
|
||||||
helper :watchers
|
helper :watchers
|
||||||
@@ -43,11 +41,13 @@ class IssuesController < ApplicationController
|
|||||||
include SortHelper
|
include SortHelper
|
||||||
include IssuesHelper
|
include IssuesHelper
|
||||||
helper :timelog
|
helper :timelog
|
||||||
|
include Redmine::Export::PDF
|
||||||
|
|
||||||
def index
|
def index
|
||||||
sort_init "#{Issue.table_name}.id", "desc"
|
|
||||||
sort_update
|
|
||||||
retrieve_query
|
retrieve_query
|
||||||
|
sort_init 'id', 'desc'
|
||||||
|
sort_update({'id' => "#{Issue.table_name}.id"}.merge(@query.columns.inject({}) {|h, c| h[c.name.to_s] = c.sortable; h}))
|
||||||
|
|
||||||
if @query.valid?
|
if @query.valid?
|
||||||
limit = per_page_option
|
limit = per_page_option
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
@@ -67,7 +67,7 @@ class IssuesController < ApplicationController
|
|||||||
format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? }
|
format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? }
|
||||||
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
|
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
|
||||||
format.csv { send_data(issues_to_csv(@issues, @project).read, :type => 'text/csv; header=present', :filename => 'export.csv') }
|
format.csv { send_data(issues_to_csv(@issues, @project).read, :type => 'text/csv; header=present', :filename => 'export.csv') }
|
||||||
format.pdf { send_data(render(:template => 'issues/index.rfpdf', :layout => false), :type => 'application/pdf', :filename => 'export.pdf') }
|
format.pdf { send_data(issues_to_pdf(@issues, @project), :type => 'application/pdf', :filename => 'export.pdf') }
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
# Send html if the query is not valid
|
# Send html if the query is not valid
|
||||||
@@ -78,9 +78,10 @@ class IssuesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def changes
|
def changes
|
||||||
sort_init "#{Issue.table_name}.id", "desc"
|
|
||||||
sort_update
|
|
||||||
retrieve_query
|
retrieve_query
|
||||||
|
sort_init 'id', 'desc'
|
||||||
|
sort_update({'id' => "#{Issue.table_name}.id"}.merge(@query.columns.inject({}) {|h, c| h[c.name.to_s] = c.sortable; h}))
|
||||||
|
|
||||||
if @query.valid?
|
if @query.valid?
|
||||||
@journals = Journal.find :all, :include => [ :details, :user, {:issue => [:project, :author, :tracker, :status]} ],
|
@journals = Journal.find :all, :include => [ :details, :user, {:issue => [:project, :author, :tracker, :status]} ],
|
||||||
:conditions => @query.statement,
|
:conditions => @query.statement,
|
||||||
@@ -104,7 +105,7 @@ class IssuesController < ApplicationController
|
|||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { render :template => 'issues/show.rhtml' }
|
format.html { render :template => 'issues/show.rhtml' }
|
||||||
format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' }
|
format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' }
|
||||||
format.pdf { send_data(render(:template => 'issues/show.rfpdf', :layout => false), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
|
format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -121,7 +122,10 @@ class IssuesController < ApplicationController
|
|||||||
render :nothing => true, :layout => true
|
render :nothing => true, :layout => true
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@issue.attributes = params[:issue]
|
if params[:issue].is_a?(Hash)
|
||||||
|
@issue.attributes = params[:issue]
|
||||||
|
@issue.watcher_user_ids = params[:issue]['watcher_user_ids'] if User.current.allowed_to?(:add_issue_watchers, @project)
|
||||||
|
end
|
||||||
@issue.author = User.current
|
@issue.author = User.current
|
||||||
|
|
||||||
default_status = IssueStatus.default
|
default_status = IssueStatus.default
|
||||||
@@ -143,7 +147,8 @@ class IssuesController < ApplicationController
|
|||||||
attach_files(@issue, params[:attachments])
|
attach_files(@issue, params[:attachments])
|
||||||
flash[:notice] = l(:notice_successful_create)
|
flash[:notice] = l(:notice_successful_create)
|
||||||
Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added')
|
Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added')
|
||||||
redirect_to :controller => 'issues', :action => 'show', :id => @issue
|
redirect_to(params[:continue] ? { :action => 'new', :tracker_id => @issue.tracker } :
|
||||||
|
{ :action => 'show', :id => @issue })
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -181,7 +186,7 @@ class IssuesController < ApplicationController
|
|||||||
|
|
||||||
if (@time_entry.hours.nil? || @time_entry.valid?) && @issue.save
|
if (@time_entry.hours.nil? || @time_entry.valid?) && @issue.save
|
||||||
# Log spend time
|
# Log spend time
|
||||||
if current_role.allowed_to?(:log_time)
|
if User.current.allowed_to?(:log_time, @project)
|
||||||
@time_entry.save
|
@time_entry.save
|
||||||
end
|
end
|
||||||
if !journal.new_record?
|
if !journal.new_record?
|
||||||
@@ -314,17 +319,6 @@ class IssuesController < ApplicationController
|
|||||||
redirect_to :action => 'index', :project_id => @project
|
redirect_to :action => 'index', :project_id => @project
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_attachment
|
|
||||||
a = @issue.attachments.find(params[:attachment_id])
|
|
||||||
a.destroy
|
|
||||||
journal = @issue.init_journal(User.current)
|
|
||||||
journal.details << JournalDetail.new(:property => 'attachment',
|
|
||||||
:prop_key => a.id,
|
|
||||||
:old_value => a.filename)
|
|
||||||
journal.save
|
|
||||||
redirect_to :action => 'show', :id => @issue
|
|
||||||
end
|
|
||||||
|
|
||||||
def gantt
|
def gantt
|
||||||
@gantt = Redmine::Helpers::Gantt.new(params)
|
@gantt = Redmine::Helpers::Gantt.new(params)
|
||||||
retrieve_query
|
retrieve_query
|
||||||
@@ -352,7 +346,7 @@ class IssuesController < ApplicationController
|
|||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { render :template => "issues/gantt.rhtml", :layout => !request.xhr? }
|
format.html { render :template => "issues/gantt.rhtml", :layout => !request.xhr? }
|
||||||
format.png { send_data(@gantt.to_image, :disposition => 'inline', :type => 'image/png', :filename => "#{@project.identifier}-gantt.png") } if @gantt.respond_to?('to_image')
|
format.png { send_data(@gantt.to_image, :disposition => 'inline', :type => 'image/png', :filename => "#{@project.identifier}-gantt.png") } if @gantt.respond_to?('to_image')
|
||||||
format.pdf { send_data(render(:template => "issues/gantt.rfpdf", :layout => false), :type => 'application/pdf', :filename => "#{@project.nil? ? '' : "#{@project.identifier}-" }gantt.pdf") }
|
format.pdf { send_data(gantt_to_pdf(@gantt, @project), :type => 'application/pdf', :filename => "#{@project.nil? ? '' : "#{@project.identifier}-" }gantt.pdf") }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ class JournalsController < ApplicationController
|
|||||||
if request.post?
|
if request.post?
|
||||||
@journal.update_attributes(:notes => params[:notes]) if params[:notes]
|
@journal.update_attributes(:notes => params[:notes]) if params[:notes]
|
||||||
@journal.destroy if @journal.details.empty? && @journal.notes.blank?
|
@journal.destroy if @journal.details.empty? && @journal.notes.blank?
|
||||||
|
call_hook(:controller_journals_edit_post, { :journal => @journal, :params => params})
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id }
|
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id }
|
||||||
format.js { render :action => 'update' }
|
format.js { render :action => 'update' }
|
||||||
|
|||||||
@@ -33,8 +33,6 @@ class ProjectsController < ApplicationController
|
|||||||
include SortHelper
|
include SortHelper
|
||||||
helper :custom_fields
|
helper :custom_fields
|
||||||
include CustomFieldsHelper
|
include CustomFieldsHelper
|
||||||
helper :ifpdf
|
|
||||||
include IfpdfHelper
|
|
||||||
helper :issues
|
helper :issues
|
||||||
helper IssuesHelper
|
helper IssuesHelper
|
||||||
helper :queries
|
helper :queries
|
||||||
@@ -84,6 +82,11 @@ class ProjectsController < ApplicationController
|
|||||||
|
|
||||||
# Show @project
|
# Show @project
|
||||||
def show
|
def show
|
||||||
|
if params[:jump]
|
||||||
|
# try to redirect to the requested menu item
|
||||||
|
redirect_to_project_menu_item(@project, params[:jump]) && return
|
||||||
|
end
|
||||||
|
|
||||||
@members_by_role = @project.members.find(:all, :include => [:user, :role], :order => 'position').group_by {|m| m.role}
|
@members_by_role = @project.members.find(:all, :include => [:user, :role], :order => 'position').group_by {|m| m.role}
|
||||||
@subprojects = @project.children.find(:all, :conditions => Project.visible_by(User.current))
|
@subprojects = @project.children.find(:all, :conditions => Project.visible_by(User.current))
|
||||||
@news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
|
@news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
|
||||||
@@ -188,18 +191,26 @@ class ProjectsController < ApplicationController
|
|||||||
|
|
||||||
def add_file
|
def add_file
|
||||||
if request.post?
|
if request.post?
|
||||||
@version = @project.versions.find_by_id(params[:version_id])
|
container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
|
||||||
attachments = attach_files(@version, params[:attachments])
|
attachments = attach_files(container, params[:attachments])
|
||||||
Mailer.deliver_attachments_added(attachments) if !attachments.empty? && Setting.notified_events.include?('file_added')
|
if !attachments.empty? && Setting.notified_events.include?('file_added')
|
||||||
|
Mailer.deliver_attachments_added(attachments)
|
||||||
|
end
|
||||||
redirect_to :controller => 'projects', :action => 'list_files', :id => @project
|
redirect_to :controller => 'projects', :action => 'list_files', :id => @project
|
||||||
|
return
|
||||||
end
|
end
|
||||||
@versions = @project.versions.sort
|
@versions = @project.versions.sort
|
||||||
end
|
end
|
||||||
|
|
||||||
def list_files
|
def list_files
|
||||||
sort_init "#{Attachment.table_name}.filename", "asc"
|
sort_init 'filename', 'asc'
|
||||||
sort_update
|
sort_update 'filename' => "#{Attachment.table_name}.filename",
|
||||||
@versions = @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
|
'created_on' => "#{Attachment.table_name}.created_on",
|
||||||
|
'size' => "#{Attachment.table_name}.filesize",
|
||||||
|
'downloads' => "#{Attachment.table_name}.downloads"
|
||||||
|
|
||||||
|
@containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)]
|
||||||
|
@containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse
|
||||||
render :layout => !request.xhr?
|
render :layout => !request.xhr?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -51,8 +51,9 @@ class RepositoriesController < ApplicationController
|
|||||||
@users += User.find_all_by_id(additional_user_ids) unless additional_user_ids.empty?
|
@users += User.find_all_by_id(additional_user_ids) unless additional_user_ids.empty?
|
||||||
@users.compact!
|
@users.compact!
|
||||||
@users.sort!
|
@users.sort!
|
||||||
if request.post?
|
if request.post? && params[:committers].is_a?(Hash)
|
||||||
@repository.committer_ids = params[:committers]
|
# Build a hash with repository usernames as keys and corresponding user ids as values
|
||||||
|
@repository.committer_ids = params[:committers].values.inject({}) {|h, c| h[c.first] = c.last; h}
|
||||||
flash[:notice] = l(:notice_successful_update)
|
flash[:notice] = l(:notice_successful_update)
|
||||||
redirect_to :action => 'committers', :id => @project
|
redirect_to :action => 'committers', :id => @project
|
||||||
end
|
end
|
||||||
@@ -126,6 +127,9 @@ class RepositoriesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def annotate
|
def annotate
|
||||||
|
@entry = @repository.entry(@path, @rev)
|
||||||
|
show_error_not_found and return unless @entry
|
||||||
|
|
||||||
@annotate = @repository.scm.annotate(@path, @rev)
|
@annotate = @repository.scm.annotate(@path, @rev)
|
||||||
render_error l(:error_scm_annotate) and return if @annotate.nil? || @annotate.empty?
|
render_error l(:error_scm_annotate) and return if @annotate.nil? || @annotate.empty?
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class SettingsController < ApplicationController
|
|||||||
@options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] }
|
@options[:user_format] = User::USER_FORMATS.keys.collect {|f| [User.current.name(f), f.to_s] }
|
||||||
@deliveries = ActionMailer::Base.perform_deliveries
|
@deliveries = ActionMailer::Base.perform_deliveries
|
||||||
|
|
||||||
@guessed_host_and_path = request.host_with_port
|
@guessed_host_and_path = request.host_with_port.dup
|
||||||
@guessed_host_and_path << ('/'+ request.relative_url_root.gsub(%r{^\/}, '')) unless request.relative_url_root.blank?
|
@guessed_host_and_path << ('/'+ request.relative_url_root.gsub(%r{^\/}, '')) unless request.relative_url_root.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,12 @@ class TimelogController < ApplicationController
|
|||||||
|
|
||||||
def details
|
def details
|
||||||
sort_init 'spent_on', 'desc'
|
sort_init 'spent_on', 'desc'
|
||||||
sort_update
|
sort_update 'spent_on' => 'spent_on',
|
||||||
|
'user' => 'user_id',
|
||||||
|
'activity' => 'activity_id',
|
||||||
|
'project' => "#{Project.table_name}.name",
|
||||||
|
'issue' => 'issue_id',
|
||||||
|
'hours' => 'hours'
|
||||||
|
|
||||||
cond = ARCondition.new
|
cond = ARCondition.new
|
||||||
if @project.nil?
|
if @project.nil?
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class UsersController < ApplicationController
|
|||||||
|
|
||||||
def list
|
def list
|
||||||
sort_init 'login', 'asc'
|
sort_init 'login', 'asc'
|
||||||
sort_update
|
sort_update %w(login firstname lastname mail admin created_on last_login_on)
|
||||||
|
|
||||||
@status = params[:status] ? params[:status].to_i : 1
|
@status = params[:status] ? params[:status].to_i : 1
|
||||||
c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
|
c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
|
||||||
|
|||||||
@@ -37,12 +37,6 @@ class VersionsController < ApplicationController
|
|||||||
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
|
redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_file
|
|
||||||
@version.attachments.find(params[:attachment_id]).destroy
|
|
||||||
flash[:notice] = l(:notice_successful_delete)
|
|
||||||
redirect_to :controller => 'projects', :action => 'list_files', :id => @project
|
|
||||||
end
|
|
||||||
|
|
||||||
def status_by
|
def status_by
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { render :action => 'show' }
|
format.html { render :action => 'show' }
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ require 'diff'
|
|||||||
|
|
||||||
class WikiController < ApplicationController
|
class WikiController < ApplicationController
|
||||||
before_filter :find_wiki, :authorize
|
before_filter :find_wiki, :authorize
|
||||||
|
before_filter :find_existing_page, :only => [:rename, :protect, :history, :diff, :annotate, :add_attachment, :destroy]
|
||||||
|
|
||||||
verify :method => :post, :only => [:destroy, :destroy_attachment, :protect], :redirect_to => { :action => :index }
|
verify :method => :post, :only => [:destroy, :protect], :redirect_to => { :action => :index }
|
||||||
|
|
||||||
helper :attachments
|
helper :attachments
|
||||||
include AttachmentsHelper
|
include AttachmentsHelper
|
||||||
@@ -91,8 +92,7 @@ class WikiController < ApplicationController
|
|||||||
|
|
||||||
# rename a page
|
# rename a page
|
||||||
def rename
|
def rename
|
||||||
@page = @wiki.find_page(params[:page])
|
return render_403 unless editable?
|
||||||
return render_403 unless editable?
|
|
||||||
@page.redirect_existing_links = true
|
@page.redirect_existing_links = true
|
||||||
# used to display the *original* title if some AR validation errors occur
|
# used to display the *original* title if some AR validation errors occur
|
||||||
@original_title = @page.pretty_title
|
@original_title = @page.pretty_title
|
||||||
@@ -103,15 +103,12 @@ class WikiController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def protect
|
def protect
|
||||||
page = @wiki.find_page(params[:page])
|
@page.update_attribute :protected, params[:protected]
|
||||||
page.update_attribute :protected, params[:protected]
|
redirect_to :action => 'index', :id => @project, :page => @page.title
|
||||||
redirect_to :action => 'index', :id => @project, :page => page.title
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# show page history
|
# show page history
|
||||||
def history
|
def history
|
||||||
@page = @wiki.find_page(params[:page])
|
|
||||||
|
|
||||||
@version_count = @page.content.versions.count
|
@version_count = @page.content.versions.count
|
||||||
@version_pages = Paginator.new self, @version_count, per_page_option, params['p']
|
@version_pages = Paginator.new self, @version_count, per_page_option, params['p']
|
||||||
# don't load text
|
# don't load text
|
||||||
@@ -125,21 +122,19 @@ class WikiController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def diff
|
def diff
|
||||||
@page = @wiki.find_page(params[:page])
|
|
||||||
@diff = @page.diff(params[:version], params[:version_from])
|
@diff = @page.diff(params[:version], params[:version_from])
|
||||||
render_404 unless @diff
|
render_404 unless @diff
|
||||||
end
|
end
|
||||||
|
|
||||||
def annotate
|
def annotate
|
||||||
@page = @wiki.find_page(params[:page])
|
|
||||||
@annotate = @page.annotate(params[:version])
|
@annotate = @page.annotate(params[:version])
|
||||||
|
render_404 unless @annotate
|
||||||
end
|
end
|
||||||
|
|
||||||
# remove a wiki page and its history
|
# remove a wiki page and its history
|
||||||
def destroy
|
def destroy
|
||||||
@page = @wiki.find_page(params[:page])
|
return render_403 unless editable?
|
||||||
return render_403 unless editable?
|
@page.destroy
|
||||||
@page.destroy if @page
|
|
||||||
redirect_to :action => 'special', :id => @project, :page => 'Page_index'
|
redirect_to :action => 'special', :id => @project, :page => 'Page_index'
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -181,19 +176,11 @@ class WikiController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def add_attachment
|
def add_attachment
|
||||||
@page = @wiki.find_page(params[:page])
|
|
||||||
return render_403 unless editable?
|
return render_403 unless editable?
|
||||||
attach_files(@page, params[:attachments])
|
attach_files(@page, params[:attachments])
|
||||||
redirect_to :action => 'index', :page => @page.title
|
redirect_to :action => 'index', :page => @page.title
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_attachment
|
|
||||||
@page = @wiki.find_page(params[:page])
|
|
||||||
return render_403 unless editable?
|
|
||||||
@page.attachments.find(params[:attachment_id]).destroy
|
|
||||||
redirect_to :action => 'index', :page => @page.title
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def find_wiki
|
def find_wiki
|
||||||
@@ -204,6 +191,12 @@ private
|
|||||||
render_404
|
render_404
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Finds the requested page and returns a 404 error if it doesn't exist
|
||||||
|
def find_existing_page
|
||||||
|
@page = @wiki.find_page(params[:page])
|
||||||
|
render_404 if @page.nil?
|
||||||
|
end
|
||||||
|
|
||||||
# Returns true if the current user is allowed to edit the page, otherwise false
|
# Returns true if the current user is allowed to edit the page, otherwise false
|
||||||
def editable?(page = @page)
|
def editable?(page = @page)
|
||||||
page.editable_by?(User.current)
|
page.editable_by?(User.current)
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
require 'coderay'
|
require 'coderay'
|
||||||
require 'coderay/helpers/file_type'
|
require 'coderay/helpers/file_type'
|
||||||
require 'forwardable'
|
require 'forwardable'
|
||||||
|
require 'cgi'
|
||||||
|
|
||||||
module ApplicationHelper
|
module ApplicationHelper
|
||||||
include Redmine::WikiFormatting::Macros::Definitions
|
include Redmine::WikiFormatting::Macros::Definitions
|
||||||
@@ -47,8 +48,8 @@ module ApplicationHelper
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Display a link to user's account page
|
# Display a link to user's account page
|
||||||
def link_to_user(user)
|
def link_to_user(user, options={})
|
||||||
(user && !user.anonymous?) ? link_to(user, :controller => 'account', :action => 'show', :id => user) : 'Anonymous'
|
(user && !user.anonymous?) ? link_to(user.name(options[:format]), :controller => 'account', :action => 'show', :id => user) : 'Anonymous'
|
||||||
end
|
end
|
||||||
|
|
||||||
def link_to_issue(issue, options={})
|
def link_to_issue(issue, options={})
|
||||||
@@ -147,6 +148,15 @@ module ApplicationHelper
|
|||||||
content
|
content
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Renders flash messages
|
||||||
|
def render_flash_messages
|
||||||
|
s = ''
|
||||||
|
flash.each do |k,v|
|
||||||
|
s << content_tag('div', v, :class => "flash #{k}")
|
||||||
|
end
|
||||||
|
s
|
||||||
|
end
|
||||||
|
|
||||||
# Truncates and returns the string as a single line
|
# Truncates and returns the string as a single line
|
||||||
def truncate_single_line(string, *args)
|
def truncate_single_line(string, *args)
|
||||||
truncate(string, *args).gsub(%r{[\r\n]+}m, ' ')
|
truncate(string, *args).gsub(%r{[\r\n]+}m, ' ')
|
||||||
@@ -281,16 +291,15 @@ module ApplicationHelper
|
|||||||
attachments = attachments.sort_by(&:created_on).reverse
|
attachments = attachments.sort_by(&:created_on).reverse
|
||||||
text = text.gsub(/!((\<|\=|\>)?(\([^\)]+\))?(\[[^\]]+\])?(\{[^\}]+\})?)(\S+\.(bmp|gif|jpg|jpeg|png))!/i) do |m|
|
text = text.gsub(/!((\<|\=|\>)?(\([^\)]+\))?(\[[^\]]+\])?(\{[^\}]+\})?)(\S+\.(bmp|gif|jpg|jpeg|png))!/i) do |m|
|
||||||
style = $1
|
style = $1
|
||||||
filename = $6
|
filename = $6.downcase
|
||||||
rf = Regexp.new(Regexp.escape(filename), Regexp::IGNORECASE)
|
|
||||||
# search for the picture in attachments
|
# search for the picture in attachments
|
||||||
if found = attachments.detect { |att| att.filename =~ rf }
|
if found = attachments.detect { |att| att.filename.downcase == filename }
|
||||||
image_url = url_for :only_path => only_path, :controller => 'attachments', :action => 'download', :id => found
|
image_url = url_for :only_path => only_path, :controller => 'attachments', :action => 'download', :id => found
|
||||||
desc = found.description.to_s.gsub(/^([^\(\)]*).*$/, "\\1")
|
desc = found.description.to_s.gsub(/^([^\(\)]*).*$/, "\\1")
|
||||||
alt = desc.blank? ? nil : "(#{desc})"
|
alt = desc.blank? ? nil : "(#{desc})"
|
||||||
"!#{style}#{image_url}#{alt}!"
|
"!#{style}#{image_url}#{alt}!"
|
||||||
else
|
else
|
||||||
"!#{style}#{filename}!"
|
m
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -525,7 +534,8 @@ module ApplicationHelper
|
|||||||
|
|
||||||
def back_url_hidden_field_tag
|
def back_url_hidden_field_tag
|
||||||
back_url = params[:back_url] || request.env['HTTP_REFERER']
|
back_url = params[:back_url] || request.env['HTTP_REFERER']
|
||||||
hidden_field_tag('back_url', back_url) unless back_url.blank?
|
back_url = CGI.unescape(back_url.to_s)
|
||||||
|
hidden_field_tag('back_url', CGI.escape(back_url)) unless back_url.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_all_links(form_name)
|
def check_all_links(form_name)
|
||||||
|
|||||||
@@ -16,10 +16,15 @@
|
|||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
module AttachmentsHelper
|
module AttachmentsHelper
|
||||||
# displays the links to a collection of attachments
|
# Displays view/delete links to the attachments of the given object
|
||||||
def link_to_attachments(attachments, options = {})
|
# Options:
|
||||||
if attachments.any?
|
# :author -- author names are not displayed if set to false
|
||||||
render :partial => 'attachments/links', :locals => {:attachments => attachments, :options => options}
|
def link_to_attachments(container, options = {})
|
||||||
|
options.assert_valid_keys(:author)
|
||||||
|
|
||||||
|
if container.attachments.any?
|
||||||
|
options = {:deletable => container.attachments_deletable?, :author => true}.merge(options)
|
||||||
|
render :partial => 'attachments/links', :locals => {:attachments => container.attachments, :options => options}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,85 +0,0 @@
|
|||||||
# 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
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
require 'iconv'
|
|
||||||
require 'rfpdf/chinese'
|
|
||||||
|
|
||||||
module IfpdfHelper
|
|
||||||
|
|
||||||
class IFPDF < FPDF
|
|
||||||
include GLoc
|
|
||||||
attr_accessor :footer_date
|
|
||||||
|
|
||||||
def initialize(lang)
|
|
||||||
super()
|
|
||||||
set_language_if_valid lang
|
|
||||||
case current_language.to_s
|
|
||||||
when 'ja'
|
|
||||||
extend(PDF_Japanese)
|
|
||||||
AddSJISFont()
|
|
||||||
@font_for_content = 'SJIS'
|
|
||||||
@font_for_footer = 'SJIS'
|
|
||||||
when 'zh'
|
|
||||||
extend(PDF_Chinese)
|
|
||||||
AddGBFont()
|
|
||||||
@font_for_content = 'GB'
|
|
||||||
@font_for_footer = 'GB'
|
|
||||||
when 'zh-tw'
|
|
||||||
extend(PDF_Chinese)
|
|
||||||
AddBig5Font()
|
|
||||||
@font_for_content = 'Big5'
|
|
||||||
@font_for_footer = 'Big5'
|
|
||||||
else
|
|
||||||
@font_for_content = 'Arial'
|
|
||||||
@font_for_footer = 'Helvetica'
|
|
||||||
end
|
|
||||||
SetCreator(Redmine::Info.app_name)
|
|
||||||
SetFont(@font_for_content)
|
|
||||||
end
|
|
||||||
|
|
||||||
def SetFontStyle(style, size)
|
|
||||||
SetFont(@font_for_content, style, size)
|
|
||||||
end
|
|
||||||
|
|
||||||
def Cell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
|
|
||||||
@ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
|
|
||||||
# these quotation marks are not correctly rendered in the pdf
|
|
||||||
txt = txt.gsub(/[“”]/, '"') if txt
|
|
||||||
txt = begin
|
|
||||||
# 0x5c char handling
|
|
||||||
txtar = txt.split('\\')
|
|
||||||
txtar << '' if txt[-1] == ?\\
|
|
||||||
txtar.collect {|x| @ic.iconv(x)}.join('\\').gsub(/\\/, "\\\\\\\\")
|
|
||||||
rescue
|
|
||||||
txt
|
|
||||||
end || ''
|
|
||||||
super w,h,txt,border,ln,align,fill,link
|
|
||||||
end
|
|
||||||
|
|
||||||
def Footer
|
|
||||||
SetFont(@font_for_footer, 'I', 8)
|
|
||||||
SetY(-15)
|
|
||||||
SetX(15)
|
|
||||||
Cell(0, 5, @footer_date, 0, 0, 'L')
|
|
||||||
SetY(-15)
|
|
||||||
SetX(-30)
|
|
||||||
Cell(0, 5, PageNo().to_s + '/{nb}', 0, 0, 'C')
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -33,6 +33,14 @@ module IssuesHelper
|
|||||||
"<strong>#{@cached_label_priority}</strong>: #{issue.priority.name}"
|
"<strong>#{@cached_label_priority}</strong>: #{issue.priority.name}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns a string of css classes that apply to the given issue
|
||||||
|
def css_issue_classes(issue)
|
||||||
|
s = "issue status-#{issue.status.position} priority-#{issue.priority.position}"
|
||||||
|
s << ' closed' if issue.closed?
|
||||||
|
s << ' overdue' if issue.overdue?
|
||||||
|
s
|
||||||
|
end
|
||||||
|
|
||||||
def sidebar_queries
|
def sidebar_queries
|
||||||
unless @sidebar_queries
|
unless @sidebar_queries
|
||||||
# User can see public queries and his own queries
|
# User can see public queries and his own queries
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ module QueriesHelper
|
|||||||
end
|
end
|
||||||
|
|
||||||
def column_header(column)
|
def column_header(column)
|
||||||
column.sortable ? sort_header_tag(column.sortable, :caption => column.caption,
|
column.sortable ? sort_header_tag(column.name.to_s, :caption => column.caption,
|
||||||
:default_order => column.default_order) :
|
:default_order => column.default_order) :
|
||||||
content_tag('th', column.caption)
|
content_tag('th', column.caption)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -67,23 +67,31 @@ module SortHelper
|
|||||||
|
|
||||||
# Updates the sort state. Call this in the controller prior to calling
|
# Updates the sort state. Call this in the controller prior to calling
|
||||||
# sort_clause.
|
# sort_clause.
|
||||||
#
|
# sort_keys can be either an array or a hash of allowed keys
|
||||||
def sort_update()
|
def sort_update(sort_keys)
|
||||||
if params[:sort_key]
|
sort_key = params[:sort_key]
|
||||||
sort = {:key => params[:sort_key], :order => params[:sort_order]}
|
sort_key = nil unless (sort_keys.is_a?(Array) ? sort_keys.include?(sort_key) : sort_keys[sort_key])
|
||||||
|
|
||||||
|
sort_order = (params[:sort_order] == 'desc' ? 'DESC' : 'ASC')
|
||||||
|
|
||||||
|
if sort_key
|
||||||
|
sort = {:key => sort_key, :order => sort_order}
|
||||||
elsif session[@sort_name]
|
elsif session[@sort_name]
|
||||||
sort = session[@sort_name] # Previous sort.
|
sort = session[@sort_name] # Previous sort.
|
||||||
else
|
else
|
||||||
sort = @sort_default
|
sort = @sort_default
|
||||||
end
|
end
|
||||||
session[@sort_name] = sort
|
session[@sort_name] = sort
|
||||||
|
|
||||||
|
sort_column = (sort_keys.is_a?(Hash) ? sort_keys[sort[:key]] : sort[:key])
|
||||||
|
@sort_clause = (sort_column.blank? ? nil : "#{sort_column} #{sort[:order]}")
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns an SQL sort clause corresponding to the current sort state.
|
# Returns an SQL sort clause corresponding to the current sort state.
|
||||||
# Use this to sort the controller's table items collection.
|
# Use this to sort the controller's table items collection.
|
||||||
#
|
#
|
||||||
def sort_clause()
|
def sort_clause()
|
||||||
session[@sort_name][:key] + ' ' + (session[@sort_name][:order] || 'ASC')
|
@sort_clause
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns a link which sorts by the named column.
|
# Returns a link which sorts by the named column.
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
module TimelogHelper
|
module TimelogHelper
|
||||||
|
include ApplicationHelper
|
||||||
|
|
||||||
def render_timelog_breadcrumb
|
def render_timelog_breadcrumb
|
||||||
links = []
|
links = []
|
||||||
links << link_to(l(:label_project_all), {:project_id => nil, :issue_id => nil})
|
links << link_to(l(:label_project_all), {:project_id => nil, :issue_id => nil})
|
||||||
@@ -81,7 +83,7 @@ module TimelogHelper
|
|||||||
csv << headers.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
|
csv << headers.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
|
||||||
# csv lines
|
# csv lines
|
||||||
entries.each do |entry|
|
entries.each do |entry|
|
||||||
fields = [l_date(entry.spent_on),
|
fields = [format_date(entry.spent_on),
|
||||||
entry.user,
|
entry.user,
|
||||||
entry.activity,
|
entry.activity,
|
||||||
entry.project,
|
entry.project,
|
||||||
|
|||||||
@@ -98,6 +98,14 @@ class Attachment < ActiveRecord::Base
|
|||||||
container.project
|
container.project
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def visible?(user=User.current)
|
||||||
|
container.attachments_visible?(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
def deletable?(user=User.current)
|
||||||
|
container.attachments_deletable?(user)
|
||||||
|
end
|
||||||
|
|
||||||
def image?
|
def image?
|
||||||
self.filename =~ /\.(jpe?g|gif|png)$/i
|
self.filename =~ /\.(jpe?g|gif|png)$/i
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
class Document < ActiveRecord::Base
|
class Document < ActiveRecord::Base
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
belongs_to :category, :class_name => "Enumeration", :foreign_key => "category_id"
|
belongs_to :category, :class_name => "Enumeration", :foreign_key => "category_id"
|
||||||
has_many :attachments, :as => :container, :dependent => :destroy
|
acts_as_attachable :delete_permission => :manage_documents
|
||||||
|
|
||||||
acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project
|
acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project
|
||||||
acts_as_event :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"},
|
acts_as_event :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"},
|
||||||
@@ -28,4 +28,10 @@ class Document < ActiveRecord::Base
|
|||||||
|
|
||||||
validates_presence_of :project, :title, :category
|
validates_presence_of :project, :title, :category
|
||||||
validates_length_of :title, :maximum => 60
|
validates_length_of :title, :maximum => 60
|
||||||
|
|
||||||
|
def after_initialize
|
||||||
|
if new_record?
|
||||||
|
self.category ||= Enumeration.default('DCAT')
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -44,7 +44,9 @@ class Enumeration < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def before_save
|
def before_save
|
||||||
Enumeration.update_all("is_default = #{connection.quoted_false}", {:opt => opt}) if is_default?
|
if is_default? && is_default_changed?
|
||||||
|
Enumeration.update_all("is_default = #{connection.quoted_false}", {:opt => opt})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def objects_count
|
def objects_count
|
||||||
|
|||||||
+18
-2
@@ -26,13 +26,13 @@ class Issue < ActiveRecord::Base
|
|||||||
belongs_to :category, :class_name => 'IssueCategory', :foreign_key => 'category_id'
|
belongs_to :category, :class_name => 'IssueCategory', :foreign_key => 'category_id'
|
||||||
|
|
||||||
has_many :journals, :as => :journalized, :dependent => :destroy
|
has_many :journals, :as => :journalized, :dependent => :destroy
|
||||||
has_many :attachments, :as => :container, :dependent => :destroy
|
|
||||||
has_many :time_entries, :dependent => :delete_all
|
has_many :time_entries, :dependent => :delete_all
|
||||||
has_and_belongs_to_many :changesets, :order => "#{Changeset.table_name}.committed_on ASC, #{Changeset.table_name}.id ASC"
|
has_and_belongs_to_many :changesets, :order => "#{Changeset.table_name}.committed_on ASC, #{Changeset.table_name}.id ASC"
|
||||||
|
|
||||||
has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all
|
has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all
|
||||||
has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all
|
has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all
|
||||||
|
|
||||||
|
acts_as_attachable :after_remove => :attachment_removed
|
||||||
acts_as_customizable
|
acts_as_customizable
|
||||||
acts_as_watchable
|
acts_as_watchable
|
||||||
acts_as_searchable :columns => ['subject', "#{table_name}.description", "#{Journal.table_name}.notes"],
|
acts_as_searchable :columns => ['subject', "#{table_name}.description", "#{Journal.table_name}.notes"],
|
||||||
@@ -45,7 +45,7 @@ class Issue < ActiveRecord::Base
|
|||||||
acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]},
|
acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]},
|
||||||
:author_key => :author_id
|
:author_key => :author_id
|
||||||
|
|
||||||
validates_presence_of :subject, :description, :priority, :project, :tracker, :author, :status
|
validates_presence_of :subject, :priority, :project, :tracker, :author, :status
|
||||||
validates_length_of :subject, :maximum => 255
|
validates_length_of :subject, :maximum => 255
|
||||||
validates_inclusion_of :done_ratio, :in => 0..100
|
validates_inclusion_of :done_ratio, :in => 0..100
|
||||||
validates_numericality_of :estimated_hours, :allow_nil => true
|
validates_numericality_of :estimated_hours, :allow_nil => true
|
||||||
@@ -195,6 +195,11 @@ class Issue < ActiveRecord::Base
|
|||||||
self.status.is_closed?
|
self.status.is_closed?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns true if the issue is overdue
|
||||||
|
def overdue?
|
||||||
|
!due_date.nil? && (due_date < Date.today)
|
||||||
|
end
|
||||||
|
|
||||||
# Users the issue can be assigned to
|
# Users the issue can be assigned to
|
||||||
def assignable_users
|
def assignable_users
|
||||||
project.assignable_users
|
project.assignable_users
|
||||||
@@ -261,4 +266,15 @@ class Issue < ActiveRecord::Base
|
|||||||
def to_s
|
def to_s
|
||||||
"#{tracker} ##{id}: #{subject}"
|
"#{tracker} ##{id}: #{subject}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
# Callback on attachment deletion
|
||||||
|
def attachment_removed(obj)
|
||||||
|
journal = init_journal(User.current)
|
||||||
|
journal.details << JournalDetail.new(:property => 'attachment',
|
||||||
|
:prop_key => obj.id,
|
||||||
|
:old_value => obj.filename)
|
||||||
|
journal.save
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+30
-14
@@ -16,6 +16,7 @@
|
|||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
class MailHandler < ActionMailer::Base
|
class MailHandler < ActionMailer::Base
|
||||||
|
include ActionView::Helpers::SanitizeHelper
|
||||||
|
|
||||||
class UnauthorizedAction < StandardError; end
|
class UnauthorizedAction < StandardError; end
|
||||||
class MissingInformation < StandardError; end
|
class MissingInformation < StandardError; end
|
||||||
@@ -88,15 +89,21 @@ class MailHandler < ActionMailer::Base
|
|||||||
issue.status = status
|
issue.status = status
|
||||||
end
|
end
|
||||||
issue.subject = email.subject.chomp.toutf8
|
issue.subject = email.subject.chomp.toutf8
|
||||||
issue.description = email.plain_text_body.chomp
|
issue.description = plain_text_body
|
||||||
|
# custom fields
|
||||||
|
issue.custom_field_values = issue.available_custom_fields.inject({}) do |h, c|
|
||||||
|
if value = get_keyword(c.name, :override => true)
|
||||||
|
h[c.id] = value
|
||||||
|
end
|
||||||
|
h
|
||||||
|
end
|
||||||
issue.save!
|
issue.save!
|
||||||
add_attachments(issue)
|
add_attachments(issue)
|
||||||
logger.info "MailHandler: issue ##{issue.id} created by #{user}" if logger && logger.info
|
logger.info "MailHandler: issue ##{issue.id} created by #{user}" if logger && logger.info
|
||||||
# send notification before adding watchers since they were cc'ed
|
|
||||||
Mailer.deliver_issue_add(issue) if Setting.notified_events.include?('issue_added')
|
|
||||||
# add To and Cc as watchers
|
# add To and Cc as watchers
|
||||||
add_watchers(issue)
|
add_watchers(issue)
|
||||||
|
# send notification after adding watchers so that they can reply to Redmine
|
||||||
|
Mailer.deliver_issue_add(issue) if Setting.notified_events.include?('issue_added')
|
||||||
issue
|
issue
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -120,7 +127,7 @@ class MailHandler < ActionMailer::Base
|
|||||||
raise UnauthorizedAction unless status.nil? || user.allowed_to?(:edit_issues, issue.project)
|
raise UnauthorizedAction unless status.nil? || user.allowed_to?(:edit_issues, issue.project)
|
||||||
|
|
||||||
# add the note
|
# add the note
|
||||||
journal = issue.init_journal(user, email.plain_text_body.chomp)
|
journal = issue.init_journal(user, plain_text_body)
|
||||||
add_attachments(issue)
|
add_attachments(issue)
|
||||||
# check workflow
|
# check workflow
|
||||||
if status && issue.new_statuses_allowed_to(user).include?(status)
|
if status && issue.new_statuses_allowed_to(user).include?(status)
|
||||||
@@ -155,22 +162,31 @@ class MailHandler < ActionMailer::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_keyword(attr)
|
def get_keyword(attr, options={})
|
||||||
if @@handler_options[:allow_override].include?(attr.to_s) && email.plain_text_body =~ /^#{attr}:[ \t]*(.+)$/i
|
if (options[:override] || @@handler_options[:allow_override].include?(attr.to_s)) && plain_text_body =~ /^#{attr}:[ \t]*(.+)$/i
|
||||||
$1.strip
|
$1.strip
|
||||||
elsif !@@handler_options[:issue][attr].blank?
|
elsif !@@handler_options[:issue][attr].blank?
|
||||||
@@handler_options[:issue][attr]
|
@@handler_options[:issue][attr]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
class TMail::Mail
|
# Returns the text/plain part of the email
|
||||||
# Returns body of the first plain text part found if any
|
# If not found (eg. HTML-only email), returns the body with tags removed
|
||||||
def plain_text_body
|
def plain_text_body
|
||||||
return @plain_text_body unless @plain_text_body.nil?
|
return @plain_text_body unless @plain_text_body.nil?
|
||||||
p = self.parts.collect {|c| (c.respond_to?(:parts) && !c.parts.empty?) ? c.parts : c}.flatten
|
parts = @email.parts.collect {|c| (c.respond_to?(:parts) && !c.parts.empty?) ? c.parts : c}.flatten
|
||||||
plain = p.detect {|c| c.content_type == 'text/plain'}
|
if parts.empty?
|
||||||
@plain_text_body = plain.nil? ? self.body : plain.body
|
parts << @email
|
||||||
|
end
|
||||||
|
plain_text_part = parts.detect {|p| p.content_type == 'text/plain'}
|
||||||
|
if plain_text_part.nil?
|
||||||
|
# no text/plain part found, assuming html-only email
|
||||||
|
# strip html tags and remove doctype directive
|
||||||
|
@plain_text_body = strip_tags(@email.body.to_s)
|
||||||
|
@plain_text_body.gsub! %r{^<!DOCTYPE .*$}, ''
|
||||||
|
else
|
||||||
|
@plain_text_body = plain_text_part.body.to_s
|
||||||
|
end
|
||||||
|
@plain_text_body.strip!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
+10
-4
@@ -28,6 +28,7 @@ class Mailer < ActionMailer::Base
|
|||||||
'Issue-Author' => issue.author.login
|
'Issue-Author' => issue.author.login
|
||||||
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
||||||
recipients issue.recipients
|
recipients issue.recipients
|
||||||
|
cc(issue.watcher_recipients - @recipients)
|
||||||
subject "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}"
|
subject "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}"
|
||||||
body :issue => issue,
|
body :issue => issue,
|
||||||
:issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
|
:issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
|
||||||
@@ -39,6 +40,7 @@ class Mailer < ActionMailer::Base
|
|||||||
'Issue-Id' => issue.id,
|
'Issue-Id' => issue.id,
|
||||||
'Issue-Author' => issue.author.login
|
'Issue-Author' => issue.author.login
|
||||||
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
||||||
|
@author = journal.user
|
||||||
recipients issue.recipients
|
recipients issue.recipients
|
||||||
# Watchers in cc
|
# Watchers in cc
|
||||||
cc(issue.watcher_recipients - @recipients)
|
cc(issue.watcher_recipients - @recipients)
|
||||||
@@ -57,7 +59,7 @@ class Mailer < ActionMailer::Base
|
|||||||
subject l(:mail_subject_reminder, issues.size)
|
subject l(:mail_subject_reminder, issues.size)
|
||||||
body :issues => issues,
|
body :issues => issues,
|
||||||
:days => days,
|
:days => days,
|
||||||
:issues_url => url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :assigned_to_id => user.id, :sort_key => 'issues.due_date', :sort_order => 'asc')
|
:issues_url => url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :assigned_to_id => user.id, :sort_key => 'due_date', :sort_order => 'asc')
|
||||||
end
|
end
|
||||||
|
|
||||||
def document_added(document)
|
def document_added(document)
|
||||||
@@ -73,6 +75,9 @@ class Mailer < ActionMailer::Base
|
|||||||
added_to = ''
|
added_to = ''
|
||||||
added_to_url = ''
|
added_to_url = ''
|
||||||
case container.class.name
|
case container.class.name
|
||||||
|
when 'Project'
|
||||||
|
added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container)
|
||||||
|
added_to = "#{l(:label_project)}: #{container}"
|
||||||
when 'Version'
|
when 'Version'
|
||||||
added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container.project_id)
|
added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container.project_id)
|
||||||
added_to = "#{l(:label_version)}: #{container.name}"
|
added_to = "#{l(:label_version)}: #{container.name}"
|
||||||
@@ -205,9 +210,10 @@ class Mailer < ActionMailer::Base
|
|||||||
def create_mail
|
def create_mail
|
||||||
# Removes the current user from the recipients and cc
|
# Removes the current user from the recipients and cc
|
||||||
# if he doesn't want to receive notifications about what he does
|
# if he doesn't want to receive notifications about what he does
|
||||||
if User.current.pref[:no_self_notified]
|
@author ||= User.current
|
||||||
recipients.delete(User.current.mail) if recipients
|
if @author.pref[:no_self_notified]
|
||||||
cc.delete(User.current.mail) if cc
|
recipients.delete(@author.mail) if recipients
|
||||||
|
cc.delete(@author.mail) if cc
|
||||||
end
|
end
|
||||||
# Blind carbon copy recipients
|
# Blind carbon copy recipients
|
||||||
if Setting.bcc_recipients?
|
if Setting.bcc_recipients?
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ class Message < ActiveRecord::Base
|
|||||||
belongs_to :board
|
belongs_to :board
|
||||||
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
|
||||||
acts_as_tree :counter_cache => :replies_count, :order => "#{Message.table_name}.created_on ASC"
|
acts_as_tree :counter_cache => :replies_count, :order => "#{Message.table_name}.created_on ASC"
|
||||||
has_many :attachments, :as => :container, :dependent => :destroy
|
acts_as_attachable
|
||||||
belongs_to :last_reply, :class_name => 'Message', :foreign_key => 'last_reply_id'
|
belongs_to :last_reply, :class_name => 'Message', :foreign_key => 'last_reply_id'
|
||||||
|
|
||||||
acts_as_searchable :columns => ['subject', 'content'],
|
acts_as_searchable :columns => ['subject', 'content'],
|
||||||
:include => {:board, :project},
|
:include => {:board => :project},
|
||||||
:project_key => 'project_id',
|
:project_key => 'project_id',
|
||||||
:date_column => "#{table_name}.created_on"
|
:date_column => "#{table_name}.created_on"
|
||||||
acts_as_event :title => Proc.new {|o| "#{o.board.name}: #{o.subject}"},
|
acts_as_event :title => Proc.new {|o| "#{o.board.name}: #{o.subject}"},
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ class Project < ActiveRecord::Base
|
|||||||
:association_foreign_key => 'custom_field_id'
|
:association_foreign_key => 'custom_field_id'
|
||||||
|
|
||||||
acts_as_tree :order => "name", :counter_cache => true
|
acts_as_tree :order => "name", :counter_cache => true
|
||||||
|
acts_as_attachable :view_permission => :view_files,
|
||||||
|
:delete_permission => :manage_files
|
||||||
|
|
||||||
acts_as_customizable
|
acts_as_customizable
|
||||||
acts_as_searchable :columns => ['name', 'description'], :project_key => 'id', :permission => nil
|
acts_as_searchable :columns => ['name', 'description'], :project_key => 'id', :permission => nil
|
||||||
@@ -58,7 +60,7 @@ class Project < ActiveRecord::Base
|
|||||||
validates_associated :repository, :wiki
|
validates_associated :repository, :wiki
|
||||||
validates_length_of :name, :maximum => 30
|
validates_length_of :name, :maximum => 30
|
||||||
validates_length_of :homepage, :maximum => 255
|
validates_length_of :homepage, :maximum => 255
|
||||||
validates_length_of :identifier, :in => 3..20
|
validates_length_of :identifier, :in => 2..20
|
||||||
validates_format_of :identifier, :with => /^[a-z0-9\-]*$/
|
validates_format_of :identifier, :with => /^[a-z0-9\-]*$/
|
||||||
|
|
||||||
before_destroy :delete_all_members
|
before_destroy :delete_all_members
|
||||||
|
|||||||
+2
-2
@@ -31,9 +31,9 @@ class Role < ActiveRecord::Base
|
|||||||
raise "Can not copy workflow from a #{role.class}" unless role.is_a?(Role)
|
raise "Can not copy workflow from a #{role.class}" unless role.is_a?(Role)
|
||||||
raise "Can not copy workflow from/to an unsaved role" if proxy_owner.new_record? || role.new_record?
|
raise "Can not copy workflow from/to an unsaved role" if proxy_owner.new_record? || role.new_record?
|
||||||
clear
|
clear
|
||||||
connection.insert "INSERT INTO workflows (tracker_id, old_status_id, new_status_id, role_id)" +
|
connection.insert "INSERT INTO #{Workflow.table_name} (tracker_id, old_status_id, new_status_id, role_id)" +
|
||||||
" SELECT tracker_id, old_status_id, new_status_id, #{proxy_owner.id}" +
|
" SELECT tracker_id, old_status_id, new_status_id, #{proxy_owner.id}" +
|
||||||
" FROM workflows" +
|
" FROM #{Workflow.table_name}" +
|
||||||
" WHERE role_id = #{role.id}"
|
" WHERE role_id = #{role.id}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class TimeEntry < ActiveRecord::Base
|
|||||||
:description => :comments
|
:description => :comments
|
||||||
|
|
||||||
validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on
|
validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on
|
||||||
validates_numericality_of :hours, :allow_nil => true
|
validates_numericality_of :hours, :allow_nil => true, :message => :activerecord_error_invalid
|
||||||
validates_length_of :comments, :maximum => 255, :allow_nil => true
|
validates_length_of :comments, :maximum => 255, :allow_nil => true
|
||||||
|
|
||||||
def after_initialize
|
def after_initialize
|
||||||
@@ -54,7 +54,7 @@ class TimeEntry < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def hours=(h)
|
def hours=(h)
|
||||||
write_attribute :hours, (h.is_a?(String) ? h.to_hours : h)
|
write_attribute :hours, (h.is_a?(String) ? (h.to_hours || h) : h)
|
||||||
end
|
end
|
||||||
|
|
||||||
# tyear, tmonth, tweek assigned where setting spent_on attributes
|
# tyear, tmonth, tweek assigned where setting spent_on attributes
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ class Tracker < ActiveRecord::Base
|
|||||||
raise "Can not copy workflow from a #{tracker.class}" unless tracker.is_a?(Tracker)
|
raise "Can not copy workflow from a #{tracker.class}" unless tracker.is_a?(Tracker)
|
||||||
raise "Can not copy workflow from/to an unsaved tracker" if proxy_owner.new_record? || tracker.new_record?
|
raise "Can not copy workflow from/to an unsaved tracker" if proxy_owner.new_record? || tracker.new_record?
|
||||||
clear
|
clear
|
||||||
connection.insert "INSERT INTO workflows (tracker_id, old_status_id, new_status_id, role_id)" +
|
connection.insert "INSERT INTO #{Workflow.table_name} (tracker_id, old_status_id, new_status_id, role_id)" +
|
||||||
" SELECT #{proxy_owner.id}, old_status_id, new_status_id, role_id" +
|
" SELECT #{proxy_owner.id}, old_status_id, new_status_id, role_id" +
|
||||||
" FROM workflows" +
|
" FROM #{Workflow.table_name}" +
|
||||||
" WHERE tracker_id = #{tracker.id}"
|
" WHERE tracker_id = #{tracker.id}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+6
-1
@@ -144,7 +144,7 @@ class User < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def time_zone
|
def time_zone
|
||||||
@time_zone ||= (self.pref.time_zone.blank? ? nil : TimeZone[self.pref.time_zone])
|
@time_zone ||= (self.pref.time_zone.blank? ? nil : ActiveSupport::TimeZone[self.pref.time_zone])
|
||||||
end
|
end
|
||||||
|
|
||||||
def wants_comments_in_reverse_order?
|
def wants_comments_in_reverse_order?
|
||||||
@@ -179,6 +179,11 @@ class User < ActiveRecord::Base
|
|||||||
token && (token.created_on > Setting.autologin.to_i.day.ago) && token.user.active? ? token.user : nil
|
token && (token.created_on > Setting.autologin.to_i.day.ago) && token.user.active? ? token.user : nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Makes find_by_mail case-insensitive
|
||||||
|
def self.find_by_mail(mail)
|
||||||
|
find(:first, :conditions => ["LOWER(mail) = ?", mail.to_s.downcase])
|
||||||
|
end
|
||||||
|
|
||||||
# Sort users by their display names
|
# Sort users by their display names
|
||||||
def <=>(user)
|
def <=>(user)
|
||||||
self.to_s.downcase <=> user.to_s.downcase
|
self.to_s.downcase <=> user.to_s.downcase
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ class Version < ActiveRecord::Base
|
|||||||
before_destroy :check_integrity
|
before_destroy :check_integrity
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
has_many :fixed_issues, :class_name => 'Issue', :foreign_key => 'fixed_version_id'
|
has_many :fixed_issues, :class_name => 'Issue', :foreign_key => 'fixed_version_id'
|
||||||
has_many :attachments, :as => :container, :dependent => :destroy
|
acts_as_attachable :view_permission => :view_files,
|
||||||
|
:delete_permission => :manage_files
|
||||||
|
|
||||||
validates_presence_of :name
|
validates_presence_of :name
|
||||||
validates_uniqueness_of :name, :scope => [:project_id]
|
validates_uniqueness_of :name, :scope => [:project_id]
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ require 'enumerator'
|
|||||||
class WikiPage < ActiveRecord::Base
|
class WikiPage < ActiveRecord::Base
|
||||||
belongs_to :wiki
|
belongs_to :wiki
|
||||||
has_one :content, :class_name => 'WikiContent', :foreign_key => 'page_id', :dependent => :destroy
|
has_one :content, :class_name => 'WikiContent', :foreign_key => 'page_id', :dependent => :destroy
|
||||||
has_many :attachments, :as => :container, :dependent => :destroy
|
acts_as_attachable :delete_permission => :delete_wiki_pages_attachments
|
||||||
acts_as_tree :order => 'title'
|
acts_as_tree :order => 'title'
|
||||||
|
|
||||||
acts_as_event :title => Proc.new {|o| "#{l(:label_wiki)}: #{o.title}"},
|
acts_as_event :title => Proc.new {|o| "#{l(:label_wiki)}: #{o.title}"},
|
||||||
@@ -112,6 +112,10 @@ class WikiPage < ActiveRecord::Base
|
|||||||
!protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project)
|
!protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def attachments_deletable?(usr=User.current)
|
||||||
|
editable_by?(usr) && super(usr)
|
||||||
|
end
|
||||||
|
|
||||||
def parent_title
|
def parent_title
|
||||||
@parent_title || (self.parent && self.parent.pretty_title)
|
@parent_title || (self.parent && self.parent.pretty_title)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
<table class="list">
|
<table class="list">
|
||||||
<tr class="odd"><td><%= l(:text_default_administrator_account_changed) %></td><td><%= image_tag (@flags[:default_admin_changed] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
<tr class="odd"><td><%= l(:text_default_administrator_account_changed) %></td><td><%= image_tag (@flags[:default_admin_changed] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
||||||
<tr class="even"><td><%= l(:text_file_repository_writable) %></td><td><%= image_tag (@flags[:file_repository_writable] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
<tr class="even"><td><%= l(:text_file_repository_writable) %> (<%= Attachment.storage_path %>)</td><td><%= image_tag (@flags[:file_repository_writable] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
||||||
|
<tr class="even"><td><%= l(:text_plugin_assets_writable) %> (<%= Engines.public_directory %>)</td><td><%= image_tag (@flags[:plugin_assets_writable] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
||||||
<tr class="odd"><td><%= l(:text_rmagick_available) %></td><td><%= image_tag (@flags[:rmagick_available] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
<tr class="odd"><td><%= l(:text_rmagick_available) %></td><td><%= image_tag (@flags[:rmagick_available] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
<p><%= link_to_attachment attachment, :class => 'icon icon-attachment' -%>
|
<p><%= link_to_attachment attachment, :class => 'icon icon-attachment' -%>
|
||||||
<%= h(" - #{attachment.description}") unless attachment.description.blank? %>
|
<%= h(" - #{attachment.description}") unless attachment.description.blank? %>
|
||||||
<span class="size">(<%= number_to_human_size attachment.filesize %>)</span>
|
<span class="size">(<%= number_to_human_size attachment.filesize %>)</span>
|
||||||
<% if options[:delete_url] %>
|
<% if options[:deletable] %>
|
||||||
<%= link_to image_tag('delete.png'), options[:delete_url].update({:attachment_id => attachment}),
|
<%= link_to image_tag('delete.png'), {:controller => 'attachments', :action => 'destroy', :id => attachment},
|
||||||
:confirm => l(:text_are_you_sure),
|
:confirm => l(:text_are_you_sure),
|
||||||
:method => :post,
|
:method => :post,
|
||||||
:class => 'delete',
|
:class => 'delete',
|
||||||
:title => l(:button_delete) %>
|
:title => l(:button_delete) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% unless options[:no_author] %>
|
<% if options[:author] %>
|
||||||
<span class="author"><%= attachment.author %>, <%= format_time(attachment.created_on) %></span>
|
<span class="author"><%= attachment.author %>, <%= format_time(attachment.created_on) %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -33,9 +33,9 @@
|
|||||||
<thead><tr>
|
<thead><tr>
|
||||||
<th><%= l(:field_subject) %></th>
|
<th><%= l(:field_subject) %></th>
|
||||||
<th><%= l(:field_author) %></th>
|
<th><%= l(:field_author) %></th>
|
||||||
<%= sort_header_tag("#{Message.table_name}.created_on", :caption => l(:field_created_on)) %>
|
<%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
|
||||||
<%= sort_header_tag("#{Message.table_name}.replies_count", :caption => l(:label_reply_plural)) %>
|
<%= sort_header_tag('replies', :caption => l(:label_reply_plural)) %>
|
||||||
<%= sort_header_tag("#{Message.table_name}.updated_on", :caption => l(:label_message_last)) %>
|
<%= sort_header_tag('updated_on', :caption => l(:label_message_last)) %>
|
||||||
</tr></thead>
|
</tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% @topics.each do |topic| %>
|
<% @topics.each do |topic| %>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<% Redmine::UnifiedDiff.new(diff, diff_type).each do |table_file| -%>
|
<% diff = Redmine::UnifiedDiff.new(diff, :type => diff_type, :max_lines => Setting.diff_max_lines_displayed.to_i) -%>
|
||||||
|
<% diff.each do |table_file| -%>
|
||||||
<div class="autoscroll">
|
<div class="autoscroll">
|
||||||
<% if diff_type == 'sbs' -%>
|
<% if diff_type == 'sbs' -%>
|
||||||
<table class="filecontent CodeRay">
|
<table class="filecontent CodeRay">
|
||||||
@@ -62,3 +63,5 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
|
<%= l(:text_diff_truncated) if diff.truncated? %>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3><%= l(:label_attachment_plural) %></h3>
|
<h3><%= l(:label_attachment_plural) %></h3>
|
||||||
<%= link_to_attachments @attachments, :delete_url => (authorize_for('documents', 'destroy_attachment') ? {:controller => 'documents', :action => 'destroy_attachment', :id => @document} : nil) %>
|
<%= link_to_attachments @document %>
|
||||||
|
|
||||||
<% if authorize_for('documents', 'add_attachment') %>
|
<% if authorize_for('documents', 'add_attachment') %>
|
||||||
<p><%= link_to l(:label_attachment_new), {}, :onclick => "Element.show('add_attachment_form'); Element.hide(this); Element.scrollTo('add_attachment_form'); return false;",
|
<p><%= link_to l(:label_attachment_new), {}, :onclick => "Element.show('add_attachment_form'); Element.hide(this); Element.scrollTo('add_attachment_form'); return false;",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<div id="issue_descr_fields" <%= 'style="display:none"' unless @issue.new_record? || @issue.errors.any? %>>
|
<div id="issue_descr_fields" <%= 'style="display:none"' unless @issue.new_record? || @issue.errors.any? %>>
|
||||||
<p><%= f.text_field :subject, :size => 80, :required => true %></p>
|
<p><%= f.text_field :subject, :size => 80, :required => true %></p>
|
||||||
<p><%= f.text_area :description, :required => true,
|
<p><%= f.text_area :description,
|
||||||
:cols => 60,
|
:cols => 60,
|
||||||
:rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min),
|
:rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min),
|
||||||
:accesskey => accesskey(:edit),
|
:accesskey => accesskey(:edit),
|
||||||
@@ -24,11 +24,13 @@
|
|||||||
|
|
||||||
<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), :required => true %></p>
|
<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), :required => true %></p>
|
||||||
<p><%= f.select :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), :include_blank => true %></p>
|
<p><%= f.select :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), :include_blank => true %></p>
|
||||||
|
<% unless @project.issue_categories.empty? %>
|
||||||
<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
|
<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
|
||||||
<%= prompt_to_remote(l(:label_issue_category_new),
|
<%= prompt_to_remote(l(:label_issue_category_new),
|
||||||
l(:label_issue_category_new), 'category[name]',
|
l(:label_issue_category_new), 'category[name]',
|
||||||
{:controller => 'projects', :action => 'add_issue_category', :id => @project},
|
{:controller => 'projects', :action => 'add_issue_category', :id => @project},
|
||||||
:class => 'small', :tabindex => 199) if authorize_for('projects', 'add_issue_category') %></p>
|
:class => 'small', :tabindex => 199) if authorize_for('projects', 'add_issue_category') %></p>
|
||||||
|
<% end %>
|
||||||
<%= content_tag('p', f.select(:fixed_version_id,
|
<%= content_tag('p', f.select(:fixed_version_id,
|
||||||
(@project.versions.sort.collect {|v| [v.name, v.id]}),
|
(@project.versions.sort.collect {|v| [v.name, v.id]}),
|
||||||
{ :include_blank => true })) unless @project.versions.empty? %>
|
{ :include_blank => true })) unless @project.versions.empty? %>
|
||||||
@@ -48,6 +50,14 @@
|
|||||||
<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
|
<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
<% if @issue.new_record? && User.current.allowed_to?(:add_issue_watchers, @project) -%>
|
||||||
|
<p><label><%= l(:label_issue_watchers) %></label>
|
||||||
|
<% @issue.project.users.sort.each do |user| -%>
|
||||||
|
<label class="floating"><%= check_box_tag 'issue[watcher_user_ids][]', user.id, @issue.watcher_user_ids.include?(user.id) %> <%=h user %></label>
|
||||||
|
<% end -%>
|
||||||
|
</p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<%= call_hook(:view_issues_form_details_bottom, { :issue => @issue, :form => f }) %>
|
<%= call_hook(:view_issues_form_details_bottom, { :issue => @issue, :form => f }) %>
|
||||||
|
|
||||||
<%= wikitoolbar_for 'issue_description' %>
|
<%= wikitoolbar_for 'issue_description' %>
|
||||||
|
|||||||
@@ -4,14 +4,14 @@
|
|||||||
<th><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
|
<th><%= link_to image_tag('toggle_check.png'), {}, :onclick => 'toggleIssuesSelection(Element.up(this, "form")); return false;',
|
||||||
:title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
|
:title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %>
|
||||||
</th>
|
</th>
|
||||||
<%= sort_header_tag("#{Issue.table_name}.id", :caption => '#', :default_order => 'desc') %>
|
<%= sort_header_tag('id', :caption => '#', :default_order => 'desc') %>
|
||||||
<% query.columns.each do |column| %>
|
<% query.columns.each do |column| %>
|
||||||
<%= column_header(column) %>
|
<%= column_header(column) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr></thead>
|
</tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% issues.each do |issue| -%>
|
<% issues.each do |issue| -%>
|
||||||
<tr id="issue-<%= issue.id %>" class="issue hascontextmenu <%= cycle('odd', 'even') %> <%= "status-#{issue.status.position} priority-#{issue.priority.position}" %>">
|
<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= css_issue_classes(issue) %>">
|
||||||
<td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
|
<td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
|
||||||
<td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
|
<td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td>
|
||||||
<% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>
|
<% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
</tr></thead>
|
</tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% for issue in issues %>
|
<% for issue in issues %>
|
||||||
<tr id="issue-<%= issue.id %>" class="issue hascontextmenu <%= cycle('odd', 'even') %> <%= "status-#{issue.status.position} priority-#{issue.priority.position}" %>">
|
<tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= css_issue_classes(issue) %>">
|
||||||
<td class="id">
|
<td class="id">
|
||||||
<%= check_box_tag("ids[]", issue.id, false, :style => 'display:none;') %>
|
<%= check_box_tag("ids[]", issue.id, false, :style => 'display:none;') %>
|
||||||
<%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %>
|
<%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %>
|
||||||
|
|||||||
@@ -10,7 +10,8 @@
|
|||||||
<table style="width:100%">
|
<table style="width:100%">
|
||||||
<% @issue.relations.each do |relation| %>
|
<% @issue.relations.each do |relation| %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= l(relation.label_for(@issue)) %> <%= "(#{lwr(:actionview_datehelper_time_in_words_day, relation.delay)})" if relation.delay && relation.delay != 0 %> <%= link_to_issue relation.other_issue(@issue) %></td>
|
<td><%= l(relation.label_for(@issue)) %> <%= "(#{lwr(:actionview_datehelper_time_in_words_day, relation.delay)})" if relation.delay && relation.delay != 0 %>
|
||||||
|
<%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %> <%= link_to_issue relation.other_issue(@issue) %></td>
|
||||||
<td><%=h relation.other_issue(@issue).subject %></td>
|
<td><%=h relation.other_issue(@issue).subject %></td>
|
||||||
<td><%= relation.other_issue(@issue).status.name %></td>
|
<td><%= relation.other_issue(@issue).status.name %></td>
|
||||||
<td><%= format_date(relation.other_issue(@issue).start_date) %></td>
|
<td><%= format_date(relation.other_issue(@issue).start_date) %></td>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<h3><%= l(:label_query_plural) %></h3>
|
<h3><%= l(:label_query_plural) %></h3>
|
||||||
|
|
||||||
<% sidebar_queries.each do |query| -%>
|
<% sidebar_queries.each do |query| -%>
|
||||||
<%= link_to query.name, :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query %><br />
|
<%= link_to(h(query.name), :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query) %><br />
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<%= call_hook(:view_issues_sidebar_queries_bottom) %>
|
<%= call_hook(:view_issues_sidebar_queries_bottom) %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
<fieldset><legend><%= l(:field_notes) %></legend>
|
<fieldset><legend><%= l(:field_notes) %></legend>
|
||||||
<%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %>
|
<%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %>
|
||||||
<%= wikitoolbar_for 'notes' %>
|
<%= wikitoolbar_for 'notes' %>
|
||||||
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p><%= submit_tag l(:button_submit) %>
|
<p><%= submit_tag l(:button_submit) %>
|
||||||
|
|||||||
@@ -1,188 +0,0 @@
|
|||||||
<%
|
|
||||||
pdf=IfpdfHelper::IFPDF.new(current_language)
|
|
||||||
pdf.SetTitle("#{l(:label_gantt)} #{@project}")
|
|
||||||
pdf.AliasNbPages
|
|
||||||
pdf.footer_date = format_date(Date.today)
|
|
||||||
pdf.AddPage("L")
|
|
||||||
pdf.SetFontStyle('B',12)
|
|
||||||
pdf.SetX(15)
|
|
||||||
pdf.Cell(70, 20, @project.to_s)
|
|
||||||
pdf.Ln
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
|
|
||||||
subject_width = 70
|
|
||||||
header_heigth = 5
|
|
||||||
|
|
||||||
headers_heigth = header_heigth
|
|
||||||
show_weeks = false
|
|
||||||
show_days = false
|
|
||||||
|
|
||||||
if @gantt.months < 7
|
|
||||||
show_weeks = true
|
|
||||||
headers_heigth = 2*header_heigth
|
|
||||||
if @gantt.months < 3
|
|
||||||
show_days = true
|
|
||||||
headers_heigth = 3*header_heigth
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
g_width = 210
|
|
||||||
zoom = (g_width) / (@gantt.date_to - @gantt.date_from + 1)
|
|
||||||
g_height = 120
|
|
||||||
t_height = g_height + headers_heigth
|
|
||||||
|
|
||||||
y_start = pdf.GetY
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Months headers
|
|
||||||
#
|
|
||||||
month_f = @gantt.date_from
|
|
||||||
left = subject_width
|
|
||||||
height = header_heigth
|
|
||||||
@gantt.months.times do
|
|
||||||
width = ((month_f >> 1) - month_f) * zoom
|
|
||||||
pdf.SetY(y_start)
|
|
||||||
pdf.SetX(left)
|
|
||||||
pdf.Cell(width, height, "#{month_f.year}-#{month_f.month}", "LTR", 0, "C")
|
|
||||||
left = left + width
|
|
||||||
month_f = month_f >> 1
|
|
||||||
end
|
|
||||||
|
|
||||||
#
|
|
||||||
# Weeks headers
|
|
||||||
#
|
|
||||||
if show_weeks
|
|
||||||
left = subject_width
|
|
||||||
height = header_heigth
|
|
||||||
if @gantt.date_from.cwday == 1
|
|
||||||
# @gantt.date_from is monday
|
|
||||||
week_f = @gantt.date_from
|
|
||||||
else
|
|
||||||
# find next monday after @gantt.date_from
|
|
||||||
week_f = @gantt.date_from + (7 - @gantt.date_from.cwday + 1)
|
|
||||||
width = (7 - @gantt.date_from.cwday + 1) * zoom-1
|
|
||||||
pdf.SetY(y_start + header_heigth)
|
|
||||||
pdf.SetX(left)
|
|
||||||
pdf.Cell(width + 1, height, "", "LTR")
|
|
||||||
left = left + width+1
|
|
||||||
end
|
|
||||||
while week_f <= @gantt.date_to
|
|
||||||
width = (week_f + 6 <= @gantt.date_to) ? 7 * zoom : (@gantt.date_to - week_f + 1) * zoom
|
|
||||||
pdf.SetY(y_start + header_heigth)
|
|
||||||
pdf.SetX(left)
|
|
||||||
pdf.Cell(width, height, (width >= 5 ? week_f.cweek.to_s : ""), "LTR", 0, "C")
|
|
||||||
left = left + width
|
|
||||||
week_f = week_f+7
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
#
|
|
||||||
# Days headers
|
|
||||||
#
|
|
||||||
if show_days
|
|
||||||
left = subject_width
|
|
||||||
height = header_heigth
|
|
||||||
wday = @gantt.date_from.cwday
|
|
||||||
pdf.SetFontStyle('B',7)
|
|
||||||
(@gantt.date_to - @gantt.date_from + 1).to_i.times do
|
|
||||||
width = zoom
|
|
||||||
pdf.SetY(y_start + 2 * header_heigth)
|
|
||||||
pdf.SetX(left)
|
|
||||||
pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C")
|
|
||||||
left = left + width
|
|
||||||
wday = wday + 1
|
|
||||||
wday = 1 if wday > 7
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
pdf.SetY(y_start)
|
|
||||||
pdf.SetX(15)
|
|
||||||
pdf.Cell(subject_width+g_width-15, headers_heigth, "", 1)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Tasks
|
|
||||||
#
|
|
||||||
top = headers_heigth + y_start
|
|
||||||
pdf.SetFontStyle('B',7)
|
|
||||||
@gantt.events.each do |i|
|
|
||||||
pdf.SetY(top)
|
|
||||||
pdf.SetX(15)
|
|
||||||
|
|
||||||
if i.is_a? Issue
|
|
||||||
pdf.Cell(subject_width-15, 5, "#{i.tracker.name} #{i.id}: #{i.subject}".sub(/^(.{30}[^\s]*\s).*$/, '\1 (...)'), "LR")
|
|
||||||
else
|
|
||||||
pdf.Cell(subject_width-15, 5, "#{l(:label_version)}: #{i.name}", "LR")
|
|
||||||
end
|
|
||||||
|
|
||||||
pdf.SetY(top)
|
|
||||||
pdf.SetX(subject_width)
|
|
||||||
pdf.Cell(g_width, 5, "", "LR")
|
|
||||||
|
|
||||||
pdf.SetY(top+1.5)
|
|
||||||
|
|
||||||
if i.is_a? Issue
|
|
||||||
i_start_date = (i.start_date >= @gantt.date_from ? i.start_date : @gantt.date_from )
|
|
||||||
i_end_date = (i.due_before <= @gantt.date_to ? i.due_before : @gantt.date_to )
|
|
||||||
|
|
||||||
i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
|
|
||||||
i_done_date = (i_done_date <= @gantt.date_from ? @gantt.date_from : i_done_date )
|
|
||||||
i_done_date = (i_done_date >= @gantt.date_to ? @gantt.date_to : i_done_date )
|
|
||||||
|
|
||||||
i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
|
|
||||||
|
|
||||||
i_left = ((i_start_date - @gantt.date_from)*zoom)
|
|
||||||
i_width = ((i_end_date - i_start_date + 1)*zoom)
|
|
||||||
d_width = ((i_done_date - i_start_date)*zoom)
|
|
||||||
l_width = ((i_late_date - i_start_date+1)*zoom) if i_late_date
|
|
||||||
l_width ||= 0
|
|
||||||
|
|
||||||
pdf.SetX(subject_width + i_left)
|
|
||||||
pdf.SetFillColor(200,200,200)
|
|
||||||
pdf.Cell(i_width, 2, "", 0, 0, "", 1)
|
|
||||||
|
|
||||||
if l_width > 0
|
|
||||||
pdf.SetY(top+1.5)
|
|
||||||
pdf.SetX(subject_width + i_left)
|
|
||||||
pdf.SetFillColor(255,100,100)
|
|
||||||
pdf.Cell(l_width, 2, "", 0, 0, "", 1)
|
|
||||||
end
|
|
||||||
if d_width > 0
|
|
||||||
pdf.SetY(top+1.5)
|
|
||||||
pdf.SetX(subject_width + i_left)
|
|
||||||
pdf.SetFillColor(100,100,255)
|
|
||||||
pdf.Cell(d_width, 2, "", 0, 0, "", 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
pdf.SetY(top+1.5)
|
|
||||||
pdf.SetX(subject_width + i_left + i_width)
|
|
||||||
pdf.Cell(30, 2, "#{i.status.name} #{i.done_ratio}%")
|
|
||||||
else
|
|
||||||
i_left = ((i.start_date - @gantt.date_from)*zoom)
|
|
||||||
|
|
||||||
pdf.SetX(subject_width + i_left)
|
|
||||||
pdf.SetFillColor(50,200,50)
|
|
||||||
pdf.Cell(2, 2, "", 0, 0, "", 1)
|
|
||||||
|
|
||||||
pdf.SetY(top+1.5)
|
|
||||||
pdf.SetX(subject_width + i_left + 3)
|
|
||||||
pdf.Cell(30, 2, "#{i.name}")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
top = top + 5
|
|
||||||
pdf.SetDrawColor(200, 200, 200)
|
|
||||||
pdf.Line(15, top, subject_width+g_width, top)
|
|
||||||
if pdf.GetY() > 180
|
|
||||||
pdf.AddPage("L")
|
|
||||||
top = 20
|
|
||||||
pdf.Line(15, top, subject_width+g_width, top)
|
|
||||||
end
|
|
||||||
pdf.SetDrawColor(0, 0, 0)
|
|
||||||
end
|
|
||||||
|
|
||||||
pdf.Line(15, top, subject_width+g_width, top)
|
|
||||||
|
|
||||||
%>
|
|
||||||
<%= pdf.Output %>
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
<% pdf=IfpdfHelper::IFPDF.new(current_language)
|
|
||||||
title = @project ? "#{@project.name} - #{l(:label_issue_plural)}" : "#{l(:label_issue_plural)}"
|
|
||||||
pdf.SetTitle(title)
|
|
||||||
pdf.AliasNbPages
|
|
||||||
pdf.footer_date = format_date(Date.today)
|
|
||||||
pdf.AddPage("L")
|
|
||||||
row_height = 7
|
|
||||||
|
|
||||||
#
|
|
||||||
# title
|
|
||||||
#
|
|
||||||
pdf.SetFontStyle('B',11)
|
|
||||||
pdf.Cell(190,10, title)
|
|
||||||
pdf.Ln
|
|
||||||
|
|
||||||
#
|
|
||||||
# headers
|
|
||||||
#
|
|
||||||
pdf.SetFontStyle('B',10)
|
|
||||||
pdf.SetFillColor(230, 230, 230)
|
|
||||||
pdf.Cell(15, row_height, "#", 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(30, row_height, l(:field_tracker), 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(30, row_height, l(:field_status), 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(30, row_height, l(:field_priority), 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(40, row_height, l(:field_assigned_to), 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(25, row_height, l(:field_updated_on), 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(0, row_height, l(:field_subject), 0, 0, 'L', 1)
|
|
||||||
pdf.Line(10, pdf.GetY, 287, pdf.GetY)
|
|
||||||
pdf.Ln
|
|
||||||
pdf.Line(10, pdf.GetY, 287, pdf.GetY)
|
|
||||||
pdf.SetY(pdf.GetY() + 1)
|
|
||||||
|
|
||||||
#
|
|
||||||
# rows
|
|
||||||
#
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.SetFillColor(255, 255, 255)
|
|
||||||
@issues.each do |issue|
|
|
||||||
pdf.Cell(15, row_height, issue.id.to_s, 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(30, row_height, issue.tracker.name, 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(30, row_height, issue.status.name, 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(30, row_height, issue.priority.name, 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(40, row_height, issue.assigned_to ? issue.assigned_to.name : '', 0, 0, 'L', 1)
|
|
||||||
pdf.Cell(25, row_height, format_date(issue.updated_on), 0, 0, 'L', 1)
|
|
||||||
pdf.MultiCell(0, row_height, (@project == issue.project ? issue.subject : "#{issue.project.name} - #{issue.subject}"))
|
|
||||||
pdf.Line(10, pdf.GetY, 287, pdf.GetY)
|
|
||||||
pdf.SetY(pdf.GetY() + 1)
|
|
||||||
end
|
|
||||||
%>
|
|
||||||
<%= pdf.Output %>
|
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
<%= render :partial => 'issues/form', :locals => {:f => f} %>
|
<%= render :partial => 'issues/form', :locals => {:f => f} %>
|
||||||
</div>
|
</div>
|
||||||
<%= submit_tag l(:button_create) %>
|
<%= submit_tag l(:button_create) %>
|
||||||
|
<%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
|
||||||
<%= link_to_remote l(:label_preview),
|
<%= link_to_remote l(:label_preview),
|
||||||
{ :url => { :controller => 'issues', :action => 'preview', :project_id => @project },
|
{ :url => { :controller => 'issues', :action => 'preview', :project_id => @project },
|
||||||
:method => 'post',
|
:method => 'post',
|
||||||
@@ -14,6 +15,12 @@
|
|||||||
:with => "Form.serialize('issue-form')",
|
:with => "Form.serialize('issue-form')",
|
||||||
:complete => "Element.scrollTo('preview')"
|
:complete => "Element.scrollTo('preview')"
|
||||||
}, :accesskey => accesskey(:preview) %>
|
}, :accesskey => accesskey(:preview) %>
|
||||||
|
|
||||||
|
<%= javascript_tag "Form.Element.focus('issue_subject');" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div id="preview" class="wiki"></div>
|
<div id="preview" class="wiki"></div>
|
||||||
|
|
||||||
|
<% content_for :header_tags do %>
|
||||||
|
<%= stylesheet_link_tag 'scm' %>
|
||||||
|
<% end %>
|
||||||
|
|||||||
@@ -1,126 +0,0 @@
|
|||||||
<% pdf=IfpdfHelper::IFPDF.new(current_language)
|
|
||||||
pdf.SetTitle("#{@project.name} - ##{@issue.tracker.name} #{@issue.id}")
|
|
||||||
pdf.AliasNbPages
|
|
||||||
pdf.footer_date = format_date(Date.today)
|
|
||||||
pdf.AddPage
|
|
||||||
|
|
||||||
pdf.SetFontStyle('B',11)
|
|
||||||
pdf.Cell(190,10, "#{@issue.project} - #{@issue.tracker} # #{@issue.id}: #{@issue.subject}")
|
|
||||||
pdf.Ln
|
|
||||||
|
|
||||||
y0 = pdf.GetY
|
|
||||||
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_status) + ":","LT")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(60,5, @issue.status.name,"RT")
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_priority) + ":","LT")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(60,5, @issue.priority.name,"RT")
|
|
||||||
pdf.Ln
|
|
||||||
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_author) + ":","L")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(60,5, @issue.author.name,"R")
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_category) + ":","L")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(60,5, (@issue.category ? @issue.category.name : "-"),"R")
|
|
||||||
pdf.Ln
|
|
||||||
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_created_on) + ":","L")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(60,5, format_date(@issue.created_on),"R")
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_assigned_to) + ":","L")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(60,5, (@issue.assigned_to ? @issue.assigned_to.name : "-"),"R")
|
|
||||||
pdf.Ln
|
|
||||||
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_updated_on) + ":","LB")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(60,5, format_date(@issue.updated_on),"RB")
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_due_date) + ":","LB")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(60,5, format_date(@issue.due_date),"RB")
|
|
||||||
pdf.Ln
|
|
||||||
|
|
||||||
for custom_value in @issue.custom_values
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, custom_value.custom_field.name + ":","L")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.MultiCell(155,5, (show_value custom_value),"R")
|
|
||||||
end
|
|
||||||
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_subject) + ":","LTB")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.Cell(155,5, @issue.subject,"RTB")
|
|
||||||
pdf.Ln
|
|
||||||
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(35,5, l(:field_description) + ":")
|
|
||||||
pdf.SetFontStyle('',9)
|
|
||||||
pdf.MultiCell(155,5, @issue.description,"BR")
|
|
||||||
|
|
||||||
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
|
|
||||||
pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY)
|
|
||||||
|
|
||||||
pdf.Ln
|
|
||||||
|
|
||||||
if @issue.changesets.any? && User.current.allowed_to?(:view_changesets, @issue.project)
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(190,5, l(:label_associated_revisions), "B")
|
|
||||||
pdf.Ln
|
|
||||||
for changeset in @issue.changesets
|
|
||||||
pdf.SetFontStyle('B',8)
|
|
||||||
pdf.Cell(190,5, format_time(changeset.committed_on) + " - " + changeset.author.to_s)
|
|
||||||
pdf.Ln
|
|
||||||
unless changeset.comments.blank?
|
|
||||||
pdf.SetFontStyle('',8)
|
|
||||||
pdf.MultiCell(190,5, changeset.comments)
|
|
||||||
end
|
|
||||||
pdf.Ln
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(190,5, l(:label_history), "B")
|
|
||||||
pdf.Ln
|
|
||||||
for journal in @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC")
|
|
||||||
pdf.SetFontStyle('B',8)
|
|
||||||
pdf.Cell(190,5, format_time(journal.created_on) + " - " + journal.user.name)
|
|
||||||
pdf.Ln
|
|
||||||
pdf.SetFontStyle('I',8)
|
|
||||||
for detail in journal.details
|
|
||||||
pdf.Cell(190,5, "- " + show_detail(detail, true))
|
|
||||||
pdf.Ln
|
|
||||||
end
|
|
||||||
if journal.notes?
|
|
||||||
pdf.SetFontStyle('',8)
|
|
||||||
pdf.MultiCell(190,5, journal.notes)
|
|
||||||
end
|
|
||||||
pdf.Ln
|
|
||||||
end
|
|
||||||
|
|
||||||
if @issue.attachments.any?
|
|
||||||
pdf.SetFontStyle('B',9)
|
|
||||||
pdf.Cell(190,5, l(:label_attachment_plural), "B")
|
|
||||||
pdf.Ln
|
|
||||||
for attachment in @issue.attachments
|
|
||||||
pdf.SetFontStyle('',8)
|
|
||||||
pdf.Cell(80,5, attachment.filename)
|
|
||||||
pdf.Cell(20,5, number_to_human_size(attachment.filesize),0,0,"R")
|
|
||||||
pdf.Cell(25,5, format_date(attachment.created_on),0,0,"R")
|
|
||||||
pdf.Cell(65,5, attachment.author.name,0,0,"R")
|
|
||||||
pdf.Ln
|
|
||||||
end
|
|
||||||
end
|
|
||||||
%>
|
|
||||||
|
|
||||||
<%= pdf.Output %>
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
|
<h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
|
||||||
|
|
||||||
<div class="issue <%= "status-#{@issue.status.position} priority-#{@issue.priority.position}" %>">
|
<div class="<%= css_issue_classes(@issue) %>">
|
||||||
<%= avatar(@issue.author, :size => "64") %>
|
<%= avatar(@issue.author, :size => "64") %>
|
||||||
<h3><%=h @issue.subject %></h3>
|
<h3><%=h @issue.subject %></h3>
|
||||||
<p class="author">
|
<p class="author">
|
||||||
@@ -19,11 +19,11 @@
|
|||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width:15%" class="status"><b><%=l(:field_status)%>:</b></td><td style="width:35%" class="status status-<%= @issue.status.name %>"><%= @issue.status.name %></td>
|
<td style="width:15%" class="status"><b><%=l(:field_status)%>:</b></td><td style="width:35%" class="status"><%= @issue.status.name %></td>
|
||||||
<td style="width:15%" class="start-date"><b><%=l(:field_start_date)%>:</b></td><td style="width:35%"><%= format_date(@issue.start_date) %></td>
|
<td style="width:15%" class="start-date"><b><%=l(:field_start_date)%>:</b></td><td style="width:35%"><%= format_date(@issue.start_date) %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="priority"><b><%=l(:field_priority)%>:</b></td><td class="priority priority-<%= @issue.priority.name %>"><%= @issue.priority.name %></td>
|
<td class="priority"><b><%=l(:field_priority)%>:</b></td><td class="priority"><%= @issue.priority.name %></td>
|
||||||
<td class="due-date"><b><%=l(:field_due_date)%>:</b></td><td class="due-date"><%= format_date(@issue.due_date) %></td>
|
<td class="due-date"><b><%=l(:field_due_date)%>:</b></td><td class="due-date"><%= format_date(@issue.due_date) %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -59,7 +59,7 @@ end %>
|
|||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<div class="contextual">
|
<div class="contextual">
|
||||||
<%= link_to_remote_if_authorized l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment' %>
|
<%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment') unless @issue.description.blank? %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p><strong><%=l(:field_description)%></strong></p>
|
<p><strong><%=l(:field_description)%></strong></p>
|
||||||
@@ -67,9 +67,7 @@ end %>
|
|||||||
<%= textilizable @issue, :description, :attachments => @issue.attachments %>
|
<%= textilizable @issue, :description, :attachments => @issue.attachments %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if @issue.attachments.any? %>
|
<%= link_to_attachments @issue %>
|
||||||
<%= link_to_attachments @issue.attachments, :delete_url => (authorize_for('issues', 'destroy_attachment') ? {:controller => 'issues', :action => 'destroy_attachment', :id => @issue} : nil) %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if authorize_for('issue_relations', 'new') || @issue.relations.any? %>
|
<% if authorize_for('issue_relations', 'new') || @issue.relations.any? %>
|
||||||
<hr />
|
<hr />
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %>
|
<% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %>
|
||||||
<%= text_area_tag :notes, @journal.notes, :class => 'wiki-edit',
|
<%= text_area_tag :notes, h(@journal.notes), :class => 'wiki-edit',
|
||||||
:rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %>
|
:rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %>
|
||||||
|
<%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>
|
||||||
<p><%= submit_tag l(:button_save) %>
|
<p><%= submit_tag l(:button_save) %>
|
||||||
<%= link_to l(:button_cancel), '#', :onclick => "Element.remove('journal-#{@journal.id}-form'); " +
|
<%= link_to l(:button_cancel), '#', :onclick => "Element.remove('journal-#{@journal.id}-form'); " +
|
||||||
"Element.show('journal-#{@journal.id}-notes'); return false;" %></p>
|
"Element.show('journal-#{@journal.id}-notes'); return false;" %></p>
|
||||||
|
|||||||
@@ -6,3 +6,5 @@ else
|
|||||||
page.show "journal-#{@journal.id}-notes"
|
page.show "journal-#{@journal.id}-notes"
|
||||||
page.remove "journal-#{@journal.id}-form"
|
page.remove "journal-#{@journal.id}-form"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
call_hook(:view_journals_update_rjs_bottom, { :page => page, :journal => @journal })
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
<option selected="selected"><%= l(:label_jump_to_a_project) %></option>
|
<option selected="selected"><%= l(:label_jump_to_a_project) %></option>
|
||||||
<option disabled="disabled">---</option>
|
<option disabled="disabled">---</option>
|
||||||
<% user_projects_by_root.keys.sort.each do |root| %>
|
<% user_projects_by_root.keys.sort.each do |root| %>
|
||||||
<%= content_tag('option', h(root.name), :value => url_for(:controller => 'projects', :action => 'show', :id => root)) %>
|
<%= content_tag('option', h(root.name), :value => url_for(:controller => 'projects', :action => 'show', :id => root, :jump => current_menu_item)) %>
|
||||||
<% user_projects_by_root[root].sort.each do |project| %>
|
<% user_projects_by_root[root].sort.each do |project| %>
|
||||||
<% next if project == root %>
|
<% next if project == root %>
|
||||||
<%= content_tag('option', ('» ' + h(project.name)), :value => url_for(:controller => 'projects', :action => 'show', :id => project)) %>
|
<%= content_tag('option', ('» ' + h(project.name)), :value => url_for(:controller => 'projects', :action => 'show', :id => project, :jump => current_menu_item)) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<div id="account">
|
<div id="account">
|
||||||
<%= render_menu :account_menu -%>
|
<%= render_menu :account_menu -%>
|
||||||
</div>
|
</div>
|
||||||
<%= content_tag('div', "#{l(:label_logged_as)} #{User.current.login}", :id => 'loggedas') if User.current.logged? %>
|
<%= content_tag('div', "#{l(:label_logged_as)} #{link_to_user(User.current, :format => :username)}", :id => 'loggedas') if User.current.logged? %>
|
||||||
<%= render_menu :top_menu -%>
|
<%= render_menu :top_menu -%>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -50,8 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<%= content_tag('div', flash[:error], :class => 'flash error') if flash[:error] %>
|
<%= render_flash_messages %>
|
||||||
<%= content_tag('div', flash[:notice], :class => 'flash notice') if flash[:notice] %>
|
|
||||||
<%= yield %>
|
<%= yield %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,17 +6,12 @@ body {
|
|||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
color:#484848;
|
color:#484848;
|
||||||
}
|
}
|
||||||
h1 {
|
h1, h2, h3 { font-family: "Trebuchet MS", Verdana, sans-serif; margin: 0px; }
|
||||||
font-family: "Trebuchet MS", Verdana, sans-serif;
|
h1 { font-size: 1.2em; }
|
||||||
font-size: 1.2em;
|
h2, h3 { font-size: 1.1em; }
|
||||||
margin: 0px;
|
a, a:link, a:visited { color: #2A5685;}
|
||||||
}
|
a:hover, a:active { color: #c61a1a; }
|
||||||
a, a:link, a:visited {
|
a.wiki-anchor { display: none; }
|
||||||
color: #2A5685;
|
|
||||||
}
|
|
||||||
a:hover, a:active {
|
|
||||||
color: #c61a1a;
|
|
||||||
}
|
|
||||||
hr {
|
hr {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<div class="wiki">
|
<div class="wiki">
|
||||||
<%= textilizable(@topic.content, :attachments => @topic.attachments) %>
|
<%= textilizable(@topic.content, :attachments => @topic.attachments) %>
|
||||||
</div>
|
</div>
|
||||||
<%= link_to_attachments @topic.attachments, :no_author => true %>
|
<%= link_to_attachments @topic, :author => false %>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
<div class="message reply">
|
<div class="message reply">
|
||||||
<h4><%=h message.subject %> - <%= authoring message.created_on, message.author %></h4>
|
<h4><%=h message.subject %> - <%= authoring message.created_on, message.author %></h4>
|
||||||
<div class="wiki"><%= textilizable message, :content, :attachments => message.attachments %></div>
|
<div class="wiki"><%= textilizable message, :content, :attachments => message.attachments %></div>
|
||||||
<%= link_to_attachments message.attachments, :no_author => true %>
|
<%= link_to_attachments message, :author => false %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
<div class="box tabular">
|
<div class="box tabular">
|
||||||
<% fields_for :pref, @user.pref, :builder => TabularFormBuilder, :lang => current_language do |pref_fields| %>
|
<% fields_for :pref, @user.pref, :builder => TabularFormBuilder, :lang => current_language do |pref_fields| %>
|
||||||
<p><%= pref_fields.check_box :hide_mail %></p>
|
<p><%= pref_fields.check_box :hide_mail %></p>
|
||||||
<p><%= pref_fields.select :time_zone, TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %></p>
|
<p><%= pref_fields.select :time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %></p>
|
||||||
<p><%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %></p>
|
<p><%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -47,6 +47,6 @@ entries_by_day = entries.group_by(&:spent_on)
|
|||||||
</tr>
|
</tr>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
</tbdoy>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<p><%= f.text_area :description, :rows => 5, :class => 'wiki-edit' %></p>
|
<p><%= f.text_area :description, :rows => 5, :class => 'wiki-edit' %></p>
|
||||||
<p><%= f.text_field :identifier, :required => true, :disabled => @project.identifier_frozen? %>
|
<p><%= f.text_field :identifier, :required => true, :disabled => @project.identifier_frozen? %>
|
||||||
<% unless @project.identifier_frozen? %>
|
<% unless @project.identifier_frozen? %>
|
||||||
<br /><em><%= l(:text_length_between, 3, 20) %> <%= l(:text_project_identifier_info) %></em>
|
<br /><em><%= l(:text_length_between, 2, 20) %> <%= l(:text_project_identifier_info) %></em>
|
||||||
<% end %></p>
|
<% end %></p>
|
||||||
<p><%= f.text_field :homepage, :size => 60 %></p>
|
<p><%= f.text_field :homepage, :size => 60 %></p>
|
||||||
<p><%= f.check_box :is_public %></p>
|
<p><%= f.check_box :is_public %></p>
|
||||||
|
|||||||
@@ -4,8 +4,11 @@
|
|||||||
<div class="box">
|
<div class="box">
|
||||||
<% form_tag({ :action => 'add_file', :id => @project }, :multipart => true, :class => "tabular") do %>
|
<% form_tag({ :action => 'add_file', :id => @project }, :multipart => true, :class => "tabular") do %>
|
||||||
|
|
||||||
<p><label for="version_id"><%=l(:field_version)%> <span class="required">*</span></label>
|
<% if @versions.any? %>
|
||||||
<%= select_tag "version_id", options_from_collection_for_select(@versions, "id", "name") %></p>
|
<p><label for="version_id"><%=l(:field_version)%></label>
|
||||||
|
<%= select_tag "version_id", content_tag('option', '') +
|
||||||
|
options_from_collection_for_select(@versions, "id", "name") %></p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
|
<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,39 +4,37 @@
|
|||||||
|
|
||||||
<h2><%=l(:label_attachment_plural)%></h2>
|
<h2><%=l(:label_attachment_plural)%></h2>
|
||||||
|
|
||||||
<% delete_allowed = authorize_for('versions', 'destroy_file') %>
|
<% delete_allowed = User.current.allowed_to?(:manage_files, @project) %>
|
||||||
|
|
||||||
<table class="list">
|
<table class="list">
|
||||||
<thead><tr>
|
<thead><tr>
|
||||||
<th><%=l(:field_version)%></th>
|
<%= sort_header_tag('filename', :caption => l(:field_filename)) %>
|
||||||
<%= sort_header_tag("#{Attachment.table_name}.filename", :caption => l(:field_filename)) %>
|
<%= sort_header_tag('created_on', :caption => l(:label_date), :default_order => 'desc') %>
|
||||||
<%= sort_header_tag("#{Attachment.table_name}.created_on", :caption => l(:label_date), :default_order => 'desc') %>
|
<%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc') %>
|
||||||
<%= sort_header_tag("#{Attachment.table_name}.filesize", :caption => l(:field_filesize), :default_order => 'desc') %>
|
<%= sort_header_tag('downloads', :caption => l(:label_downloads_abbr), :default_order => 'desc') %>
|
||||||
<%= sort_header_tag("#{Attachment.table_name}.downloads", :caption => l(:label_downloads_abbr), :default_order => 'desc') %>
|
|
||||||
<th>MD5</th>
|
<th>MD5</th>
|
||||||
<% if delete_allowed %><th></th><% end %>
|
<th></th>
|
||||||
</tr></thead>
|
</tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% for version in @versions %>
|
<% @containers.each do |container| %>
|
||||||
<% unless version.attachments.empty? %>
|
<% next if container.attachments.empty? -%>
|
||||||
<tr><th colspan="7" align="left"><span class="icon icon-package"><b><%= version.name %></b></span></th></tr>
|
<% if container.is_a?(Version) -%>
|
||||||
<% for file in version.attachments %>
|
<tr><th colspan="6" align="left"><span class="icon icon-package"><b><%=h container %></b></span></th></tr>
|
||||||
|
<% end -%>
|
||||||
|
<% container.attachments.each do |file| %>
|
||||||
<tr class="<%= cycle("odd", "even") %>">
|
<tr class="<%= cycle("odd", "even") %>">
|
||||||
<td></td>
|
|
||||||
<td><%= link_to_attachment file, :download => true, :title => file.description %></td>
|
<td><%= link_to_attachment file, :download => true, :title => file.description %></td>
|
||||||
<td align="center"><%= format_time(file.created_on) %></td>
|
<td align="center"><%= format_time(file.created_on) %></td>
|
||||||
<td align="center"><%= number_to_human_size(file.filesize) %></td>
|
<td align="center"><%= number_to_human_size(file.filesize) %></td>
|
||||||
<td align="center"><%= file.downloads %></td>
|
<td align="center"><%= file.downloads %></td>
|
||||||
<td align="center"><small><%= file.digest %></small></td>
|
<td align="center"><small><%= file.digest %></small></td>
|
||||||
<% if delete_allowed %>
|
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<%= link_to_if_authorized image_tag('delete.png'), {:controller => 'versions', :action => 'destroy_file', :id => version, :attachment_id => file}, :confirm => l(:text_are_you_sure), :method => :post %>
|
<%= link_to(image_tag('delete.png'), {:controller => 'attachments', :action => 'destroy', :id => file},
|
||||||
|
:confirm => l(:text_are_you_sure), :method => :post) if delete_allowed %>
|
||||||
</td>
|
</td>
|
||||||
<% end %>
|
|
||||||
</tr>
|
</tr>
|
||||||
<% end
|
<% end
|
||||||
reset_cycle %>
|
reset_cycle %>
|
||||||
<% end %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
<td><%= link_to(version.wiki_page_title, :controller => 'wiki', :page => Wiki.titleize(version.wiki_page_title)) unless version.wiki_page_title.blank? || @project.wiki.nil? %></td>
|
<td><%= link_to(version.wiki_page_title, :controller => 'wiki', :page => Wiki.titleize(version.wiki_page_title)) unless version.wiki_page_title.blank? || @project.wiki.nil? %></td>
|
||||||
<td align="center"><%= link_to_if_authorized l(:button_edit), { :controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %></td>
|
<td align="center"><%= link_to_if_authorized l(:button_edit), { :controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %></td>
|
||||||
<td align="center"><%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></td>
|
<td align="center"><%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></td>
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<% end; reset_cycle %>
|
<% end; reset_cycle %>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<p>
|
||||||
|
<% if @repository.supports_cat? %>
|
||||||
|
<%= link_to_if action_name != 'entry', l(:button_view), {:action => 'entry', :id => @project, :path => to_path_param(@path), :rev => @rev } %> |
|
||||||
|
<% end %>
|
||||||
|
<% if @repository.supports_annotate? %>
|
||||||
|
<%= link_to_if action_name != 'annotate', l(:button_annotate), {:action => 'annotate', :id => @project, :path => to_path_param(@path), :rev => @rev } %> |
|
||||||
|
<% end %>
|
||||||
|
<%= link_to(l(:button_download), {:action => 'entry', :id => @project, :path => to_path_param(@path), :rev => @rev, :format => 'raw' }) if @repository.supports_cat? %>
|
||||||
|
<%= "(#{number_to_human_size(@entry.size)})" if @entry.size %>
|
||||||
|
</p>
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
<h2><%= render :partial => 'navigation', :locals => { :path => @path, :kind => 'file', :revision => @rev } %></h2>
|
<h2><%= render :partial => 'navigation', :locals => { :path => @path, :kind => 'file', :revision => @rev } %></h2>
|
||||||
|
|
||||||
|
<p><%= render :partial => 'link_to_functions' %></p>
|
||||||
|
|
||||||
<% colors = Hash.new {|k,v| k[v] = (k.size % 12) } %>
|
<% colors = Hash.new {|k,v| k[v] = (k.size % 12) } %>
|
||||||
|
|
||||||
<div class="autoscroll">
|
<div class="autoscroll">
|
||||||
|
|||||||
@@ -1,15 +1,6 @@
|
|||||||
<h2><%= render :partial => 'navigation', :locals => { :path => @path, :kind => (@entry ? @entry.kind : nil), :revision => @rev } %></h2>
|
<h2><%= render :partial => 'navigation', :locals => { :path => @path, :kind => (@entry ? @entry.kind : nil), :revision => @rev } %></h2>
|
||||||
|
|
||||||
<p>
|
<p><%= render :partial => 'link_to_functions' %></p>
|
||||||
<% if @repository.supports_cat? %>
|
|
||||||
<%= link_to l(:button_view), {:action => 'entry', :id => @project, :path => to_path_param(@path), :rev => @rev } %> |
|
|
||||||
<% end %>
|
|
||||||
<% if @repository.supports_annotate? %>
|
|
||||||
<%= link_to l(:button_annotate), {:action => 'annotate', :id => @project, :path => to_path_param(@path), :rev => @rev } %> |
|
|
||||||
<% end %>
|
|
||||||
<%= link_to(l(:button_download), {:action => 'entry', :id => @project, :path => to_path_param(@path), :rev => @rev, :format => 'raw' }) if @repository.supports_cat? %>
|
|
||||||
<%= "(#{number_to_human_size(@entry.size)})" if @entry.size %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<%= render_properties(@properties) %>
|
<%= render_properties(@properties) %>
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,16 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<% i = 0 -%>
|
||||||
<% @committers.each do |committer, user_id| -%>
|
<% @committers.each do |committer, user_id| -%>
|
||||||
<tr class="<%= cycle 'odd', 'even' %>">
|
<tr class="<%= cycle 'odd', 'even' %>">
|
||||||
<td><%=h committer %></td>
|
<td><%=h committer %></td>
|
||||||
<td><%= select_tag "committers[#{committer}]", content_tag('option', "-- #{l :actionview_instancetag_blank_option} --", :value => '') + options_from_collection_for_select(@users, 'id', 'name', user_id.to_i) %></td>
|
<td>
|
||||||
|
<%= hidden_field_tag "committers[#{i}][]", committer %>
|
||||||
|
<%= select_tag "committers[#{i}][]", content_tag('option', "-- #{l :actionview_instancetag_blank_option} --", :value => '') + options_from_collection_for_select(@users, 'id', 'name', user_id.to_i) %>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<% i += 1 -%>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<h2><%= render :partial => 'navigation', :locals => { :path => @path, :kind => 'file', :revision => @rev } %></h2>
|
<h2><%= render :partial => 'navigation', :locals => { :path => @path, :kind => 'file', :revision => @rev } %></h2>
|
||||||
|
|
||||||
|
<p><%= render :partial => 'link_to_functions' %></p>
|
||||||
|
|
||||||
<%= render :partial => 'common/file', :locals => {:filename => @path, :content => @content} %>
|
<%= render :partial => 'common/file', :locals => {:filename => @path, :content => @content} %>
|
||||||
|
|
||||||
<% content_for :header_tags do %>
|
<% content_for :header_tags do %>
|
||||||
|
|||||||
@@ -48,6 +48,9 @@
|
|||||||
<p><label><%= l(:setting_feeds_limit) %></label>
|
<p><label><%= l(:setting_feeds_limit) %></label>
|
||||||
<%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %></p>
|
<%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %></p>
|
||||||
|
|
||||||
|
<p><label><%= l(:setting_diff_max_lines_displayed) %></label>
|
||||||
|
<%= text_field_tag 'settings[diff_max_lines_displayed]', Setting.diff_max_lines_displayed, :size => 6 %></p>
|
||||||
|
|
||||||
<p><label><%= l(:setting_gravatar_enabled) %></label>
|
<p><label><%= l(:setting_gravatar_enabled) %></label>
|
||||||
<%= check_box_tag 'settings[gravatar_enabled]', 1, Setting.gravatar_enabled? %><%= hidden_field_tag 'settings[gravatar_enabled]', 0 %></p>
|
<%= check_box_tag 'settings[gravatar_enabled]', 1, Setting.gravatar_enabled? %><%= hidden_field_tag 'settings[gravatar_enabled]', 0 %></p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %>
|
<%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %>
|
||||||
<%= sort_header_tag('user_id', :caption => l(:label_member)) %>
|
<%= sort_header_tag('user', :caption => l(:label_member)) %>
|
||||||
<%= sort_header_tag('activity_id', :caption => l(:label_activity)) %>
|
<%= sort_header_tag('activity', :caption => l(:label_activity)) %>
|
||||||
<%= sort_header_tag("#{Project.table_name}.name", :caption => l(:label_project)) %>
|
<%= sort_header_tag('project', :caption => l(:label_project)) %>
|
||||||
<%= sort_header_tag('issue_id', :caption => l(:label_issue), :default_order => 'desc') %>
|
<%= sort_header_tag('issue', :caption => l(:label_issue), :default_order => 'desc') %>
|
||||||
<th><%= l(:field_comments) %></th>
|
<th><%= l(:field_comments) %></th>
|
||||||
<%= sort_header_tag('hours', :caption => l(:field_hours)) %>
|
<%= sort_header_tag('hours', :caption => l(:field_hours)) %>
|
||||||
<th></th>
|
<th></th>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<th class="line-num"><%= line_num %></th>
|
<th class="line-num"><%= line_num %></th>
|
||||||
<td class="revision"><%= link_to line[0], :controller => 'wiki', :action => 'index', :id => @project, :page => @page.title, :version => line[0] %></td>
|
<td class="revision"><%= link_to line[0], :controller => 'wiki', :action => 'index', :id => @project, :page => @page.title, :version => line[0] %></td>
|
||||||
<td class="author"><%= h(line[1]) %></td>
|
<td class="author"><%= h(line[1]) %></td>
|
||||||
<td class="line-code"><pre><%= line[2] %></pre></td>
|
<td class="line-code"><pre><%=h line[2] %></pre></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% line_num += 1 %>
|
<% line_num += 1 %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||||
<style>
|
<style>
|
||||||
body { font:80% Verdana,Tahoma,Arial,sans-serif; }
|
body { font:80% Verdana,Tahoma,Arial,sans-serif; }
|
||||||
h1, h2, h3, h4 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; }
|
h1, h2, h3, h4 { font-family: "Trebuchet MS",Georgia,"Times New Roman",serif; }
|
||||||
ul.toc { padding: 4px; margin-left: 0; }
|
ul.toc { padding: 4px; margin-left: 0; }
|
||||||
ul.toc li { list-style-type:none; }
|
ul.toc li { list-style-type:none; }
|
||||||
ul.toc li.heading2 { margin-left: 1em; }
|
ul.toc li.heading2 { margin-left: 1em; }
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||||
<style>
|
<style>
|
||||||
body { font:80% Verdana,Tahoma,Arial,sans-serif; }
|
body { font:80% Verdana,Tahoma,Arial,sans-serif; }
|
||||||
h1, h2, h3, h4 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; }
|
h1, h2, h3, h4 { font-family: "Trebuchet MS",Georgia,"Times New Roman",serif; }
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<%= render(:partial => "wiki/content", :locals => {:content => @content}) %>
|
<%= render(:partial => "wiki/content", :locals => {:content => @content}) %>
|
||||||
|
|
||||||
<%= link_to_attachments @page.attachments, :delete_url => ((@editable && authorize_for('wiki', 'destroy_attachment')) ? {:controller => 'wiki', :action => 'destroy_attachment', :page => @page.title} : nil) %>
|
<%= link_to_attachments @page %>
|
||||||
|
|
||||||
<% if @editable && authorize_for('wiki', 'add_attachment') %>
|
<% if @editable && authorize_for('wiki', 'add_attachment') %>
|
||||||
<p><%= link_to l(:label_attachment_new), {}, :onclick => "Element.show('add_attachment_form'); Element.hide(this); Element.scrollTo('add_attachment_form'); return false;",
|
<p><%= link_to l(:label_attachment_new), {}, :onclick => "Element.show('add_attachment_form'); Element.hide(this); Element.scrollTo('add_attachment_form'); return false;",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
# ENV['RAILS_ENV'] ||= 'production'
|
# ENV['RAILS_ENV'] ||= 'production'
|
||||||
|
|
||||||
# Specifies gem version of Rails to use when vendor/rails is not present
|
# Specifies gem version of Rails to use when vendor/rails is not present
|
||||||
RAILS_GEM_VERSION = '2.1.0' unless defined? RAILS_GEM_VERSION
|
RAILS_GEM_VERSION = '2.1.2' unless defined? RAILS_GEM_VERSION
|
||||||
|
|
||||||
# Bootstrap the Rails environment, frameworks, and default configuration
|
# Bootstrap the Rails environment, frameworks, and default configuration
|
||||||
require File.join(File.dirname(__FILE__), 'boot')
|
require File.join(File.dirname(__FILE__), 'boot')
|
||||||
|
|||||||
@@ -61,6 +61,9 @@ protocol:
|
|||||||
feeds_limit:
|
feeds_limit:
|
||||||
format: int
|
format: int
|
||||||
default: 15
|
default: 15
|
||||||
|
diff_max_lines_displayed:
|
||||||
|
format: int
|
||||||
|
default: 1500
|
||||||
enabled_scm:
|
enabled_scm:
|
||||||
serialized: true
|
serialized: true
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ class SetTopicAuthorsAsWatchers < ActiveRecord::Migration
|
|||||||
def self.up
|
def self.up
|
||||||
# Sets active users who created/replied a topic as watchers of the topic
|
# Sets active users who created/replied a topic as watchers of the topic
|
||||||
# so that the new watch functionality at topic level doesn't affect notifications behaviour
|
# so that the new watch functionality at topic level doesn't affect notifications behaviour
|
||||||
Message.connection.execute("INSERT INTO watchers (watchable_type, watchable_id, user_id)" +
|
Message.connection.execute("INSERT INTO #{Watcher.table_name} (watchable_type, watchable_id, user_id)" +
|
||||||
" SELECT DISTINCT 'Message', COALESCE(messages.parent_id, messages.id), messages.author_id FROM messages, users" +
|
" SELECT DISTINCT 'Message', COALESCE(m.parent_id, m.id), m.author_id" +
|
||||||
" WHERE messages.author_id = users.id AND users.status = 1")
|
" FROM #{Message.table_name} m, #{User.table_name} u" +
|
||||||
|
" WHERE m.author_id = u.id AND u.status = 1")
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.down
|
def self.down
|
||||||
|
|||||||
+218
-1
@@ -1,10 +1,227 @@
|
|||||||
== Redmine changelog
|
== Redmine changelog
|
||||||
|
|
||||||
Redmine - project management software
|
Redmine - project management software
|
||||||
Copyright (C) 2006-2008 Jean-Philippe Lang
|
Copyright (C) 2006-2009 Jean-Philippe Lang
|
||||||
http://www.redmine.org/
|
http://www.redmine.org/
|
||||||
|
|
||||||
|
|
||||||
|
== 2009-02-15 v0.8.1
|
||||||
|
|
||||||
|
* Select watchers on new issue form
|
||||||
|
* Issue description is no longer a required field
|
||||||
|
* Files module: ability to add files without version
|
||||||
|
* Jump to the current tab when using the project quick-jump combo
|
||||||
|
* Display a warning if some attachments were not saved
|
||||||
|
* Import custom fields values from emails on issue creation
|
||||||
|
* Show view/annotate/download links on entry and annotate views
|
||||||
|
* Admin Info Screen: Display if plugin assets directory is writable
|
||||||
|
* Adds a 'Create and continue' button on the new issue form
|
||||||
|
* IMAP: add options to move received emails
|
||||||
|
* Do not show Category field when categories are not defined
|
||||||
|
* Lower the project identifier limit to a minimum of two characters
|
||||||
|
* Add "closed" html class to closed entries in issue list
|
||||||
|
* Fixed: broken redirect URL on login failure
|
||||||
|
* Fixed: Deleted files are shown when using Darcs
|
||||||
|
* Fixed: Darcs adapter works on Win32 only
|
||||||
|
* Fixed: syntax highlight doesn't appear in new ticket preview
|
||||||
|
* Fixed: email notification for changes I make still occurs when running Repository.fetch_changesets
|
||||||
|
* Fixed: no error is raised when entering invalid hours on the issue update form
|
||||||
|
* Fixed: Details time log report CSV export doesn't honour date format from settings
|
||||||
|
* Fixed: invalid css classes on issue details
|
||||||
|
* Fixed: Trac importer creates duplicate custom values
|
||||||
|
* Fixed: inline attached image should not match partial filename
|
||||||
|
|
||||||
|
|
||||||
|
== 2008-12-30 v0.8.0
|
||||||
|
|
||||||
|
* Setting added in order to limit the number of diff lines that should be displayed
|
||||||
|
* Makes logged-in username in topbar linking to
|
||||||
|
* Mail handler: strip tags when receiving a html-only email
|
||||||
|
* Mail handler: add watchers before sending notification
|
||||||
|
* Adds a css class (overdue) to overdue issues on issue lists and detail views
|
||||||
|
* Fixed: project activity truncated after viewing user's activity
|
||||||
|
* Fixed: email address entered for password recovery shouldn't be case-sensitive
|
||||||
|
* Fixed: default flag removed when editing a default enumeration
|
||||||
|
* Fixed: default category ignored when adding a document
|
||||||
|
* Fixed: error on repository user mapping when a repository username is blank
|
||||||
|
* Fixed: Firefox cuts off large diffs
|
||||||
|
* Fixed: CVS browser should not show dead revisions (deleted files)
|
||||||
|
* Fixed: escape double-quotes in image titles
|
||||||
|
* Fixed: escape textarea content when editing a issue note
|
||||||
|
* Fixed: JS error on context menu with IE
|
||||||
|
* Fixed: bold syntax around single character in series doesn't work
|
||||||
|
* Fixed several XSS vulnerabilities
|
||||||
|
* Fixed a SQL injection vulnerability
|
||||||
|
|
||||||
|
|
||||||
|
== 2008-12-07 v0.8.0-rc1
|
||||||
|
|
||||||
|
* Wiki page protection
|
||||||
|
* Wiki page hierarchy. Parent page can be assigned on the Rename screen
|
||||||
|
* Adds support for issue creation via email
|
||||||
|
* Adds support for free ticket filtering and custom queries on Gantt chart and calendar
|
||||||
|
* Cross-project search
|
||||||
|
* Ability to search a project and its subprojects
|
||||||
|
* Ability to search the projects the user belongs to
|
||||||
|
* Adds custom fields on time entries
|
||||||
|
* Adds boolean and list custom fields for time entries as criteria on time report
|
||||||
|
* Cross-project time reports
|
||||||
|
* Display latest user's activity on account/show view
|
||||||
|
* Show last connexion time on user's page
|
||||||
|
* Obfuscates email address on user's account page using javascript
|
||||||
|
* wiki TOC rendered as an unordered list
|
||||||
|
* Adds the ability to search for a user on the administration users list
|
||||||
|
* Adds the ability to search for a project name or identifier on the administration projects list
|
||||||
|
* Redirect user to the previous page after logging in
|
||||||
|
* Adds a permission 'view wiki edits' so that wiki history can be hidden to certain users
|
||||||
|
* Adds permissions for viewing the watcher list and adding new watchers on the issue detail view
|
||||||
|
* Adds permissions to let users edit and/or delete their messages
|
||||||
|
* Link to activity view when displaying dates
|
||||||
|
* Hide Redmine version in atom feeds and pdf properties
|
||||||
|
* Maps repository users to Redmine users. Users with same username or email are automatically mapped. Mapping can be manually adjusted in repository settings. Multiple usernames can be mapped to the same Redmine user.
|
||||||
|
* Sort users by their display names so that user dropdown lists are sorted alphabetically
|
||||||
|
* Adds estimated hours to issue filters
|
||||||
|
* Switch order of current and previous revisions in side-by-side diff
|
||||||
|
* Render the commit changes list as a tree
|
||||||
|
* Adds watch/unwatch functionality at forum topic level
|
||||||
|
* When moving an issue to another project, reassign it to the category with same name if any
|
||||||
|
* Adds child_pages macro for wiki pages
|
||||||
|
* Use GET instead of POST on roadmap (#718), gantt and calendar forms
|
||||||
|
* Search engine: display total results count and count by result type
|
||||||
|
* Email delivery configuration moved to an unversioned YAML file (config/email.yml, see the sample file)
|
||||||
|
* Adds icons on search results
|
||||||
|
* Adds 'Edit' link on account/show for admin users
|
||||||
|
* Adds Lock/Unlock/Activate link on user edit screen
|
||||||
|
* Adds user count in status drop down on admin user list
|
||||||
|
* Adds multi-levels blockquotes support by using > at the beginning of lines
|
||||||
|
* Adds a Reply link to each issue note
|
||||||
|
* Adds plain text only option for mail notifications
|
||||||
|
* Gravatar support for issue detail, user grid, and activity stream (disabled by default)
|
||||||
|
* Adds 'Delete wiki pages attachments' permission
|
||||||
|
* Show the most recent file when displaying an inline image
|
||||||
|
* Makes permission screens localized
|
||||||
|
* AuthSource list: display associated users count and disable 'Delete' buton if any
|
||||||
|
* Make the 'duplicates of' relation asymmetric
|
||||||
|
* Adds username to the password reminder email
|
||||||
|
* Adds links to forum messages using message#id syntax
|
||||||
|
* Allow same name for custom fields on different object types
|
||||||
|
* One-click bulk edition using the issue list context menu within the same project
|
||||||
|
* Adds support for commit logs reencoding to UTF-8 before insertion in the database. Source encoding of commit logs can be selected in Application settings -> Repositories.
|
||||||
|
* Adds checkboxes toggle links on permissions report
|
||||||
|
* Adds Trac-Like anchors on wiki headings
|
||||||
|
* Adds support for wiki links with anchor
|
||||||
|
* Adds category to the issue context menu
|
||||||
|
* Adds a workflow overview screen
|
||||||
|
* Appends the filename to the attachment url so that clients that ignore content-disposition http header get the real filename
|
||||||
|
* Dots allowed in custom field name
|
||||||
|
* Adds posts quoting functionality
|
||||||
|
* Adds an option to generate sequential project identifiers
|
||||||
|
* Adds mailto link on the user administration list
|
||||||
|
* Ability to remove enumerations (activities, priorities, document categories) that are in use. Associated objects can be reassigned to another value
|
||||||
|
* Gantt chart: display issues that don't have a due date if they are assigned to a version with a date
|
||||||
|
* Change projects homepage limit to 255 chars
|
||||||
|
* Improved on-the-fly account creation. If some attributes are missing (eg. not present in the LDAP) or are invalid, the registration form is displayed so that the user is able to fill or fix these attributes
|
||||||
|
* Adds "please select" to activity select box if no activity is set as default
|
||||||
|
* Do not silently ignore timelog validation failure on issue edit
|
||||||
|
* Adds a rake task to send reminder emails
|
||||||
|
* Allow empty cells in wiki tables
|
||||||
|
* Makes wiki text formatter pluggable
|
||||||
|
* Adds back textile acronyms support
|
||||||
|
* Remove pre tag attributes
|
||||||
|
* Plugin hooks
|
||||||
|
* Pluggable admin menu
|
||||||
|
* Plugins can provide activity content
|
||||||
|
* Moves plugin list to its own administration menu item
|
||||||
|
* Adds url and author_url plugin attributes
|
||||||
|
* Adds Plugin#requires_redmine method so that plugin compatibility can be checked against current Redmine version
|
||||||
|
* Adds atom feed on time entries details
|
||||||
|
* Adds project name to issues feed title
|
||||||
|
* Adds a css class on menu items in order to apply item specific styles (eg. icons)
|
||||||
|
* Adds a Redmine plugin generators
|
||||||
|
* Adds timelog link to the issue context menu
|
||||||
|
* Adds links to the user page on various views
|
||||||
|
* Turkish translation by Ismail Sezen
|
||||||
|
* Catalan translation
|
||||||
|
* Vietnamese translation
|
||||||
|
* Slovak translation
|
||||||
|
* Better naming of activity feed if only one kind of event is displayed
|
||||||
|
* Enable syntax highlight on issues, messages and news
|
||||||
|
* Add target version to the issue list context menu
|
||||||
|
* Hide 'Target version' filter if no version is defined
|
||||||
|
* Add filters on cross-project issue list for custom fields marked as 'For all projects'
|
||||||
|
* Turn ftp urls into links
|
||||||
|
* Hiding the View Differences button when a wiki page's history only has one version
|
||||||
|
* Messages on a Board can now be sorted by the number of replies
|
||||||
|
* Adds a class ('me') to events of the activity view created by current user
|
||||||
|
* Strip pre/code tags content from activity view events
|
||||||
|
* Display issue notes in the activity view
|
||||||
|
* Adds links to changesets atom feed on repository browser
|
||||||
|
* Track project and tracker changes in issue history
|
||||||
|
* Adds anchor to atom feed messages links
|
||||||
|
* Adds a key in lang files to set the decimal separator (point or comma) in csv exports
|
||||||
|
* Makes importer work with Trac 0.8.x
|
||||||
|
* Upgraded to Prototype 1.6.0.1
|
||||||
|
* File viewer for attached text files
|
||||||
|
* Menu mapper: add support for :before, :after and :last options to #push method and add #delete method
|
||||||
|
* Removed inconsistent revision numbers on diff view
|
||||||
|
* CVS: add support for modules names with spaces
|
||||||
|
* Log the user in after registration if account activation is not needed
|
||||||
|
* Mercurial adapter improvements
|
||||||
|
* Trac importer: read session_attribute table to find user's email and real name
|
||||||
|
* Ability to disable unused SCM adapters in application settings
|
||||||
|
* Adds Filesystem adapter
|
||||||
|
* Clear changesets and changes with raw sql when deleting a repository for performance
|
||||||
|
* Redmine.pm now uses the 'commit access' permission defined in Redmine
|
||||||
|
* Reposman can create any type of scm (--scm option)
|
||||||
|
* Reposman creates a repository if the 'repository' module is enabled at project level only
|
||||||
|
* Display svn properties in the browser, svn >= 1.5.0 only
|
||||||
|
* Reduces memory usage when importing large git repositories
|
||||||
|
* Wider SVG graphs in repository stats
|
||||||
|
* SubversionAdapter#entries performance improvement
|
||||||
|
* SCM browser: ability to download raw unified diffs
|
||||||
|
* More detailed error message in log when scm command fails
|
||||||
|
* Adds support for file viewing with Darcs 2.0+
|
||||||
|
* Check that git changeset is not in the database before creating it
|
||||||
|
* Unified diff viewer for attached files with .patch or .diff extension
|
||||||
|
* File size display with Bazaar repositories
|
||||||
|
* Git adapter: use commit time instead of author time
|
||||||
|
* Prettier url for changesets
|
||||||
|
* Makes changes link to entries on the revision view
|
||||||
|
* Adds a field on the repository view to browse at specific revision
|
||||||
|
* Adds new projects atom feed
|
||||||
|
* Added rake tasks to generate rcov code coverage reports
|
||||||
|
* Add Redcloth's :block_markdown_rule to allow horizontal rules in wiki
|
||||||
|
* Show the project hierarchy in the drop down list for new membership on user administration screen
|
||||||
|
* Split user edit screen into tabs
|
||||||
|
* Renames bundled RedCloth to RedCloth3 to avoid RedCloth 4 to be loaded instead
|
||||||
|
* Fixed: Roadmap crashes when a version has a due date > 2037
|
||||||
|
* Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen
|
||||||
|
* Fixed: login filter providing incorrect back_url for Redmine installed in sub-directory
|
||||||
|
* Fixed: logtime entry duplicated when edited from parent project
|
||||||
|
* Fixed: wrong digest for text files under Windows
|
||||||
|
* Fixed: associated revisions are displayed in wrong order on issue view
|
||||||
|
* Fixed: Git Adapter date parsing ignores timezone
|
||||||
|
* Fixed: Printing long roadmap doesn't split across pages
|
||||||
|
* Fixes custom fields display order at several places
|
||||||
|
* Fixed: urls containing @ are parsed as email adress by the wiki formatter
|
||||||
|
* Fixed date filters accuracy with SQLite
|
||||||
|
* Fixed: tokens not escaped in highlight_tokens regexp
|
||||||
|
* Fixed Bazaar shared repository browsing
|
||||||
|
* Fixes platform determination under JRuby
|
||||||
|
* Fixed: Estimated time in issue's journal should be rounded to two decimals
|
||||||
|
* Fixed: 'search titles only' box ignored after one search is done on titles only
|
||||||
|
* Fixed: non-ASCII subversion path can't be displayed
|
||||||
|
* Fixed: Inline images don't work if file name has upper case letters or if image is in BMP format
|
||||||
|
* Fixed: document listing shows on "my page" when viewing documents is disabled for the role
|
||||||
|
* Fixed: Latest news appear on the homepage for projects with the News module disabled
|
||||||
|
* Fixed: cross-project issue list should not show issues of projects for which the issue tracking module was disabled
|
||||||
|
* Fixed: the default status is lost when reordering issue statuses
|
||||||
|
* Fixes error with Postgresql and non-UTF8 commit logs
|
||||||
|
* Fixed: textile footnotes no longer work
|
||||||
|
* Fixed: http links containing parentheses fail to reder correctly
|
||||||
|
* Fixed: GitAdapter#get_rev should use current branch instead of hardwiring master
|
||||||
|
|
||||||
|
|
||||||
== 2008-07-06 v0.7.3
|
== 2008-07-06 v0.7.3
|
||||||
|
|
||||||
* Allow dot in firstnames and lastnames
|
* Allow dot in firstnames and lastnames
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ http://www.redmine.org/
|
|||||||
|
|
||||||
== Requirements
|
== Requirements
|
||||||
|
|
||||||
* Ruby on Rails 2.1
|
* Ruby on Rails 2.1.2
|
||||||
* A database:
|
* A database:
|
||||||
* MySQL (tested with MySQL 5)
|
* MySQL (tested with MySQL 5)
|
||||||
* PostgreSQL (tested with PostgreSQL 8.1)
|
* PostgreSQL (tested with PostgreSQL 8.1)
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ http://www.redmine.org/
|
|||||||
|
|
||||||
== Notes
|
== Notes
|
||||||
|
|
||||||
1. Rails 2.0.2 is required for version 0.7 and later.
|
1. Rails 2.1.2 is required for version 0.8.
|
||||||
|
|
||||||
2. When upgrading your code with svn update, don't forget to clear
|
2. When upgrading your code with svn update, don't forget to clear
|
||||||
the application cache (RAILS_ROOT/tmp/cache) before restarting.
|
the application cache (RAILS_ROOT/tmp/cache) before restarting.
|
||||||
|
|||||||
@@ -694,3 +694,8 @@ permission_edit_own_messages: Edit own messages
|
|||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: Delete own messages
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "%s's activity"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
@@ -695,3 +695,8 @@ permission_edit_own_messages: Edit own messages
|
|||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: Delete own messages
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "%s's activity"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
@@ -699,3 +699,8 @@ permission_edit_own_messages: Edit own messages
|
|||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: Delete own messages
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "%s's activity"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
@@ -695,3 +695,8 @@ permission_edit_own_messages: Edit own messages
|
|||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: Delete own messages
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "%s's activity"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+7
-2
@@ -223,6 +223,7 @@ setting_mail_handler_api_enabled: Abruf eingehender E-Mails aktivieren
|
|||||||
setting_mail_handler_api_key: API-Schlüssel
|
setting_mail_handler_api_key: API-Schlüssel
|
||||||
setting_sequential_project_identifiers: Fortlaufende Projektkennungen generieren
|
setting_sequential_project_identifiers: Fortlaufende Projektkennungen generieren
|
||||||
setting_gravatar_enabled: Gravatar Benutzerbilder benutzen
|
setting_gravatar_enabled: Gravatar Benutzerbilder benutzen
|
||||||
|
setting_diff_max_lines_displayed: Maximale Anzahl anzuzeigender Diff-Zeilen
|
||||||
|
|
||||||
permission_edit_project: Projekt bearbeiten
|
permission_edit_project: Projekt bearbeiten
|
||||||
permission_select_project_modules: Projektmodule auswählen
|
permission_select_project_modules: Projektmodule auswählen
|
||||||
@@ -344,6 +345,7 @@ label_last_updates_plural: %d zuletzt aktualisierten
|
|||||||
label_registered_on: Angemeldet am
|
label_registered_on: Angemeldet am
|
||||||
label_activity: Aktivität
|
label_activity: Aktivität
|
||||||
label_overall_activity: Aktivität aller Projekte anzeigen
|
label_overall_activity: Aktivität aller Projekte anzeigen
|
||||||
|
label_user_activity: "Aktivität von %s"
|
||||||
label_new: Neu
|
label_new: Neu
|
||||||
label_logged_as: Angemeldet als
|
label_logged_as: Angemeldet als
|
||||||
label_environment: Environment
|
label_environment: Environment
|
||||||
@@ -543,6 +545,7 @@ label_send_test_email: Test-E-Mail senden
|
|||||||
label_feeds_access_key_created_on: Atom-Zugriffsschlüssel vor %s erstellt
|
label_feeds_access_key_created_on: Atom-Zugriffsschlüssel vor %s erstellt
|
||||||
label_module_plural: Module
|
label_module_plural: Module
|
||||||
label_added_time_by: Von %s vor %s hinzugefügt
|
label_added_time_by: Von %s vor %s hinzugefügt
|
||||||
|
label_updated_time_by: Von %s vor %s aktualisiert
|
||||||
label_updated_time: Vor %s aktualisiert
|
label_updated_time: Vor %s aktualisiert
|
||||||
label_jump_to_a_project: Zu einem Projekt springen...
|
label_jump_to_a_project: Zu einem Projekt springen...
|
||||||
label_file_plural: Dateien
|
label_file_plural: Dateien
|
||||||
@@ -668,6 +671,7 @@ text_enumeration_destroy_question: '%d Objekte sind diesem Wert zugeordnet.'
|
|||||||
text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
|
text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:'
|
||||||
text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu."
|
text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu."
|
||||||
text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet."
|
text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet."
|
||||||
|
text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.'
|
||||||
|
|
||||||
default_role_manager: Manager
|
default_role_manager: Manager
|
||||||
default_role_developper: Entwickler
|
default_role_developper: Entwickler
|
||||||
@@ -694,5 +698,6 @@ default_activity_development: Entwicklung
|
|||||||
enumeration_issue_priorities: Ticket-Prioritäten
|
enumeration_issue_priorities: Ticket-Prioritäten
|
||||||
enumeration_doc_categories: Dokumentenkategorien
|
enumeration_doc_categories: Dokumentenkategorien
|
||||||
enumeration_activities: Aktivitäten (Zeiterfassung)
|
enumeration_activities: Aktivitäten (Zeiterfassung)
|
||||||
label_user_activity: "%s's activity"
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
label_updated_time_by: Updated by %s %s ago
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+7
-1
@@ -85,6 +85,8 @@ error_scm_command_failed: "An error occurred when trying to access the repositor
|
|||||||
error_scm_annotate: "The entry does not exist or can not be annotated."
|
error_scm_annotate: "The entry does not exist or can not be annotated."
|
||||||
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
|
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
|
||||||
|
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
|
||||||
mail_subject_lost_password: Your %s password
|
mail_subject_lost_password: Your %s password
|
||||||
mail_body_lost_password: 'To change your password, click on the following link:'
|
mail_body_lost_password: 'To change your password, click on the following link:'
|
||||||
mail_subject_register: Your %s account activation
|
mail_subject_register: Your %s account activation
|
||||||
@@ -223,6 +225,7 @@ setting_mail_handler_api_enabled: Enable WS for incoming emails
|
|||||||
setting_mail_handler_api_key: API key
|
setting_mail_handler_api_key: API key
|
||||||
setting_sequential_project_identifiers: Generate sequential project identifiers
|
setting_sequential_project_identifiers: Generate sequential project identifiers
|
||||||
setting_gravatar_enabled: Use Gravatar user icons
|
setting_gravatar_enabled: Use Gravatar user icons
|
||||||
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
|
||||||
permission_edit_project: Edit project
|
permission_edit_project: Edit project
|
||||||
permission_select_project_modules: Select project modules
|
permission_select_project_modules: Select project modules
|
||||||
@@ -589,6 +592,7 @@ button_check_all: Check all
|
|||||||
button_uncheck_all: Uncheck all
|
button_uncheck_all: Uncheck all
|
||||||
button_delete: Delete
|
button_delete: Delete
|
||||||
button_create: Create
|
button_create: Create
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
button_test: Test
|
button_test: Test
|
||||||
button_edit: Edit
|
button_edit: Edit
|
||||||
button_add: Add
|
button_add: Add
|
||||||
@@ -659,7 +663,8 @@ text_status_changed_by_changeset: Applied in changeset %s.
|
|||||||
text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
|
text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
|
||||||
text_select_project_modules: 'Select modules to enable for this project:'
|
text_select_project_modules: 'Select modules to enable for this project:'
|
||||||
text_default_administrator_account_changed: Default administrator account changed
|
text_default_administrator_account_changed: Default administrator account changed
|
||||||
text_file_repository_writable: File repository writable
|
text_file_repository_writable: Attachments directory writable
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
text_rmagick_available: RMagick available (optional)
|
text_rmagick_available: RMagick available (optional)
|
||||||
text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
|
text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
|
||||||
text_destroy_time_entries: Delete reported hours
|
text_destroy_time_entries: Delete reported hours
|
||||||
@@ -670,6 +675,7 @@ text_enumeration_destroy_question: '%d objects are assigned to this value.'
|
|||||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||||
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
||||||
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
|
|
||||||
default_role_manager: Manager
|
default_role_manager: Manager
|
||||||
default_role_developper: Developer
|
default_role_developper: Developer
|
||||||
|
|||||||
+45
-40
@@ -19,11 +19,11 @@ actionview_datehelper_time_in_words_second_less_than_plural: menos de %d segundo
|
|||||||
actionview_instancetag_blank_option: Por favor seleccione
|
actionview_instancetag_blank_option: Por favor seleccione
|
||||||
activerecord_error_accepted: debe ser aceptado
|
activerecord_error_accepted: debe ser aceptado
|
||||||
activerecord_error_blank: no puede estar en blanco
|
activerecord_error_blank: no puede estar en blanco
|
||||||
activerecord_error_circular_dependency: Esta relación podría crear una dependencia anidada
|
activerecord_error_circular_dependency: Esta relación podría crear una dependencia circular
|
||||||
activerecord_error_confirmation: la confirmación no coincide
|
activerecord_error_confirmation: la confirmación no coincide
|
||||||
activerecord_error_empty: no puede estar vacío
|
activerecord_error_empty: no puede estar vacío
|
||||||
activerecord_error_exclusion: está reservado
|
activerecord_error_exclusion: está reservado
|
||||||
activerecord_error_greater_than_start_date: debe ser la fecha mayor que del comienzo
|
activerecord_error_greater_than_start_date: debe ser posterior a la fecha de comienzo
|
||||||
activerecord_error_inclusion: no está incluído en la lista
|
activerecord_error_inclusion: no está incluído en la lista
|
||||||
activerecord_error_invalid: no es válido
|
activerecord_error_invalid: no es válido
|
||||||
activerecord_error_not_a_date: no es una fecha válida
|
activerecord_error_not_a_date: no es una fecha válida
|
||||||
@@ -140,11 +140,11 @@ field_is_default: Estado por defecto
|
|||||||
field_is_filter: Usado como filtro
|
field_is_filter: Usado como filtro
|
||||||
field_is_for_all: Para todos los proyectos
|
field_is_for_all: Para todos los proyectos
|
||||||
field_is_in_chlog: Consultar las peticiones en el histórico
|
field_is_in_chlog: Consultar las peticiones en el histórico
|
||||||
field_is_in_roadmap: Consultar las peticiones en el roadmap
|
field_is_in_roadmap: Consultar las peticiones en la planificación
|
||||||
field_is_public: Público
|
field_is_public: Público
|
||||||
field_is_required: Obligatorio
|
field_is_required: Obligatorio
|
||||||
field_issue: Petición
|
field_issue: Petición
|
||||||
field_issue_to_id: Petición Relacionada
|
field_issue_to_id: Petición relacionada
|
||||||
field_language: Idioma
|
field_language: Idioma
|
||||||
field_last_login_on: Última conexión
|
field_last_login_on: Última conexión
|
||||||
field_lastname: Apellido
|
field_lastname: Apellido
|
||||||
@@ -178,7 +178,7 @@ field_subproject: Proyecto secundario
|
|||||||
field_summary: Resumen
|
field_summary: Resumen
|
||||||
field_time_zone: Zona horaria
|
field_time_zone: Zona horaria
|
||||||
field_title: Título
|
field_title: Título
|
||||||
field_tracker: Tracker
|
field_tracker: Tipo
|
||||||
field_type: Tipo
|
field_type: Tipo
|
||||||
field_updated_on: Actualizado
|
field_updated_on: Actualizado
|
||||||
field_url: URL
|
field_url: URL
|
||||||
@@ -215,7 +215,7 @@ label_ago: hace
|
|||||||
label_all: todos
|
label_all: todos
|
||||||
label_all_time: todo el tiempo
|
label_all_time: todo el tiempo
|
||||||
label_all_words: Todas las palabras
|
label_all_words: Todas las palabras
|
||||||
label_and_its_subprojects: %s y sus subproyectos
|
label_and_its_subprojects: %s y proyectos secundarios
|
||||||
label_applied_status: Aplicar estado
|
label_applied_status: Aplicar estado
|
||||||
label_assigned_to_me_issues: Peticiones que me están asignadas
|
label_assigned_to_me_issues: Peticiones que me están asignadas
|
||||||
label_associated_revisions: Revisiones asociadas
|
label_associated_revisions: Revisiones asociadas
|
||||||
@@ -234,7 +234,7 @@ label_blocks: bloquea a
|
|||||||
label_board: Foro
|
label_board: Foro
|
||||||
label_board_new: Nuevo foro
|
label_board_new: Nuevo foro
|
||||||
label_board_plural: Foros
|
label_board_plural: Foros
|
||||||
label_boolean: Boleano
|
label_boolean: Booleano
|
||||||
label_browse: Hojear
|
label_browse: Hojear
|
||||||
label_bulk_edit_selected_issues: Editar las peticiones seleccionadas
|
label_bulk_edit_selected_issues: Editar las peticiones seleccionadas
|
||||||
label_calendar: Calendario
|
label_calendar: Calendario
|
||||||
@@ -293,7 +293,7 @@ label_enumerations: Listas de valores
|
|||||||
label_environment: Entorno
|
label_environment: Entorno
|
||||||
label_equals: igual
|
label_equals: igual
|
||||||
label_example: Ejemplo
|
label_example: Ejemplo
|
||||||
label_export_to: Exportar a
|
label_export_to: 'Exportar a:'
|
||||||
label_f_hour: %.2f hora
|
label_f_hour: %.2f hora
|
||||||
label_f_hour_plural: %.2f horas
|
label_f_hour_plural: %.2f horas
|
||||||
label_feed_plural: Feeds
|
label_feed_plural: Feeds
|
||||||
@@ -327,7 +327,7 @@ label_issue_category_new: Nueva categoría
|
|||||||
label_issue_category_plural: Categorías de las peticiones
|
label_issue_category_plural: Categorías de las peticiones
|
||||||
label_issue_new: Nueva petición
|
label_issue_new: Nueva petición
|
||||||
label_issue_plural: Peticiones
|
label_issue_plural: Peticiones
|
||||||
label_issue_status: Estado de petición
|
label_issue_status: Estado de la petición
|
||||||
label_issue_status_new: Nuevo estado
|
label_issue_status_new: Nuevo estado
|
||||||
label_issue_status_plural: Estados de las peticiones
|
label_issue_status_plural: Estados de las peticiones
|
||||||
label_issue_tracking: Peticiones
|
label_issue_tracking: Peticiones
|
||||||
@@ -337,7 +337,7 @@ label_issue_watchers: Seguidores
|
|||||||
label_issues_by: Peticiones por %s
|
label_issues_by: Peticiones por %s
|
||||||
label_jump_to_a_project: Ir al proyecto...
|
label_jump_to_a_project: Ir al proyecto...
|
||||||
label_language_based: Basado en el idioma
|
label_language_based: Basado en el idioma
|
||||||
label_last_changes: %d cambios del último
|
label_last_changes: últimos %d cambios
|
||||||
label_last_login: Última conexión
|
label_last_login: Última conexión
|
||||||
label_last_month: último mes
|
label_last_month: último mes
|
||||||
label_last_n_days: últimos %d días
|
label_last_n_days: últimos %d días
|
||||||
@@ -384,7 +384,7 @@ label_news_plural: Noticias
|
|||||||
label_news_view_all: Ver todas las noticias
|
label_news_view_all: Ver todas las noticias
|
||||||
label_next: Siguiente
|
label_next: Siguiente
|
||||||
label_no_change_option: (Sin cambios)
|
label_no_change_option: (Sin cambios)
|
||||||
label_no_data: Ningun dato a mostrar
|
label_no_data: Ningún dato a mostrar
|
||||||
label_nobody: nadie
|
label_nobody: nadie
|
||||||
label_none: ninguno
|
label_none: ninguno
|
||||||
label_not_contains: no contiene
|
label_not_contains: no contiene
|
||||||
@@ -397,7 +397,7 @@ label_options: Opciones
|
|||||||
label_overall_activity: Actividad global
|
label_overall_activity: Actividad global
|
||||||
label_overview: Vistazo
|
label_overview: Vistazo
|
||||||
label_password_lost: ¿Olvidaste la contraseña?
|
label_password_lost: ¿Olvidaste la contraseña?
|
||||||
label_per_page: Por la página
|
label_per_page: Por página
|
||||||
label_permissions: Permisos
|
label_permissions: Permisos
|
||||||
label_permissions_report: Informe de permisos
|
label_permissions_report: Informe de permisos
|
||||||
label_personalize_page: Personalizar esta página
|
label_personalize_page: Personalizar esta página
|
||||||
@@ -438,7 +438,7 @@ label_result_plural: Resultados
|
|||||||
label_reverse_chronological_order: En orden cronológico inverso
|
label_reverse_chronological_order: En orden cronológico inverso
|
||||||
label_revision: Revisión
|
label_revision: Revisión
|
||||||
label_revision_plural: Revisiones
|
label_revision_plural: Revisiones
|
||||||
label_roadmap: Roadmap
|
label_roadmap: Planificación
|
||||||
label_roadmap_due_in: Finaliza en %s
|
label_roadmap_due_in: Finaliza en %s
|
||||||
label_roadmap_no_issues: No hay peticiones para esta versión
|
label_roadmap_no_issues: No hay peticiones para esta versión
|
||||||
label_roadmap_overdue: %s tarde
|
label_roadmap_overdue: %s tarde
|
||||||
@@ -452,7 +452,7 @@ label_search_titles_only: Buscar sólo en títulos
|
|||||||
label_send_information: Enviar información de la cuenta al usuario
|
label_send_information: Enviar información de la cuenta al usuario
|
||||||
label_send_test_email: Enviar un correo de prueba
|
label_send_test_email: Enviar un correo de prueba
|
||||||
label_settings: Configuración
|
label_settings: Configuración
|
||||||
label_show_completed_versions: Muestra las versiones completas
|
label_show_completed_versions: Muestra las versiones terminadas
|
||||||
label_sort_by: Ordenar por %s
|
label_sort_by: Ordenar por %s
|
||||||
label_sort_higher: Subir
|
label_sort_higher: Subir
|
||||||
label_sort_highest: Primero
|
label_sort_highest: Primero
|
||||||
@@ -474,16 +474,18 @@ label_time_tracking: Control de tiempo
|
|||||||
label_today: hoy
|
label_today: hoy
|
||||||
label_topic_plural: Temas
|
label_topic_plural: Temas
|
||||||
label_total: Total
|
label_total: Total
|
||||||
label_tracker: Tracker
|
label_tracker: Tipo
|
||||||
label_tracker_new: Nuevo tracker
|
label_tracker_new: Nuevo tipo
|
||||||
label_tracker_plural: Trackers
|
label_tracker_plural: Tipos de peticiones
|
||||||
label_updated_time: Actualizado hace %s
|
label_updated_time: Actualizado hace %s
|
||||||
|
label_updated_time_by: Actualizado por %s hace %s
|
||||||
label_used_by: Utilizado por
|
label_used_by: Utilizado por
|
||||||
label_user: Usuario
|
label_user: Usuario
|
||||||
|
label_user_activity: "Actividad de %s"
|
||||||
label_user_mail_no_self_notified: "No quiero ser avisado de cambios hechos por mí"
|
label_user_mail_no_self_notified: "No quiero ser avisado de cambios hechos por mí"
|
||||||
label_user_mail_option_all: "Para cualquier evento en todos mis proyectos"
|
label_user_mail_option_all: "Para cualquier evento en todos mis proyectos"
|
||||||
label_user_mail_option_none: "Sólo para elementos monitorizados o relacionados conmigo"
|
label_user_mail_option_none: "Sólo para elementos monitorizados o relacionados conmigo"
|
||||||
label_user_mail_option_selected: "Para cualquier evento del proyecto seleccionado..."
|
label_user_mail_option_selected: "Para cualquier evento de los proyectos seleccionados..."
|
||||||
label_user_new: Nuevo usuario
|
label_user_new: Nuevo usuario
|
||||||
label_user_plural: Usuarios
|
label_user_plural: Usuarios
|
||||||
label_version: Versión
|
label_version: Versión
|
||||||
@@ -501,22 +503,22 @@ label_wiki_page_plural: Wiki páginas
|
|||||||
label_workflow: Flujo de trabajo
|
label_workflow: Flujo de trabajo
|
||||||
label_year: Año
|
label_year: Año
|
||||||
label_yesterday: ayer
|
label_yesterday: ayer
|
||||||
mail_body_account_activation_request: "Un nuevo usuario (%s) ha sido registrado. Esta cuenta está pendiende de aprobación"
|
mail_body_account_activation_request: 'Se ha inscrito un nuevo usuario (%s). La cuenta está pendiende de aprobación:'
|
||||||
mail_body_account_information: Información sobre su cuenta
|
mail_body_account_information: Información sobre su cuenta
|
||||||
mail_body_account_information_external: Puede usar su cuenta "%s" para conectarse.
|
mail_body_account_information_external: Puede usar su cuenta "%s" para conectarse.
|
||||||
mail_body_lost_password: 'Para cambiar su contraseña, haga click en el siguiente enlace:'
|
mail_body_lost_password: 'Para cambiar su contraseña, haga clic en el siguiente enlace:'
|
||||||
mail_body_register: 'Para activar su cuenta, haga click en el siguiente enlace:'
|
mail_body_register: 'Para activar su cuenta, haga clic en el siguiente enlace:'
|
||||||
mail_body_reminder: "%d peticion(es) asignadas a tí finalizan en los próximos %d días:"
|
mail_body_reminder: "%d peticion(es) asignadas a tí finalizan en los próximos %d días:"
|
||||||
mail_subject_account_activation_request: Petición de activación de cuenta %s
|
mail_subject_account_activation_request: Petición de activación de cuenta %s
|
||||||
mail_subject_lost_password: Tu contraseña del %s
|
mail_subject_lost_password: Tu contraseña del %s
|
||||||
mail_subject_register: Activación de la cuenta del %s
|
mail_subject_register: Activación de la cuenta del %s
|
||||||
mail_subject_reminder: "%d peticion(es) finalizan en los próximos días"
|
mail_subject_reminder: "%d peticion(es) finalizan en los próximos días"
|
||||||
notice_account_activated: Su cuenta ha sido activada. Ahora se encuentra conectado.
|
notice_account_activated: Su cuenta ha sido activada. Ya puede conectarse.
|
||||||
notice_account_invalid_creditentials: Usuario o contraseña inválido.
|
notice_account_invalid_creditentials: Usuario o contraseña inválido.
|
||||||
notice_account_lost_email_sent: Se le ha enviado un correo con instrucciones para elegir una nueva contraseña.
|
notice_account_lost_email_sent: Se le ha enviado un correo con instrucciones para elegir una nueva contraseña.
|
||||||
notice_account_password_updated: Contraseña modificada correctamente.
|
notice_account_password_updated: Contraseña modificada correctamente.
|
||||||
notice_account_pending: "Su cuenta ha sido creada y está pendiende de la aprobación por parte de administrador"
|
notice_account_pending: "Su cuenta ha sido creada y está pendiende de la aprobación por parte del administrador."
|
||||||
notice_account_register_done: Cuenta creada correctamente.
|
notice_account_register_done: Cuenta creada correctamente. Para activarla, haga clic sobre el enlace que le ha sido enviado por correo.
|
||||||
notice_account_unknown_email: Usuario desconocido.
|
notice_account_unknown_email: Usuario desconocido.
|
||||||
notice_account_updated: Cuenta actualizada correctamente.
|
notice_account_updated: Cuenta actualizada correctamente.
|
||||||
notice_account_wrong_password: Contraseña incorrecta.
|
notice_account_wrong_password: Contraseña incorrecta.
|
||||||
@@ -524,9 +526,9 @@ notice_can_t_change_password: Esta cuenta utiliza una fuente de autenticación e
|
|||||||
notice_default_data_loaded: Configuración por defecto cargada correctamente.
|
notice_default_data_loaded: Configuración por defecto cargada correctamente.
|
||||||
notice_email_error: Ha ocurrido un error mientras enviando el correo (%s)
|
notice_email_error: Ha ocurrido un error mientras enviando el correo (%s)
|
||||||
notice_email_sent: Se ha enviado un correo a %s
|
notice_email_sent: Se ha enviado un correo a %s
|
||||||
notice_failed_to_save_issues: "Imposible salvar %s peticion(es) en %d seleccionado: %s."
|
notice_failed_to_save_issues: "Imposible grabar %s peticion(es) en %d seleccionado: %s."
|
||||||
notice_feeds_access_key_reseted: Su clave de acceso para RSS ha sido reiniciada
|
notice_feeds_access_key_reseted: Su clave de acceso para RSS ha sido reiniciada.
|
||||||
notice_file_not_found: La página a la que intentas acceder no existe.
|
notice_file_not_found: La página a la que intenta acceder no existe.
|
||||||
notice_locking_conflict: Los datos han sido modificados por otro usuario.
|
notice_locking_conflict: Los datos han sido modificados por otro usuario.
|
||||||
notice_no_issue_selected: "Ninguna petición seleccionada. Por favor, compruebe la petición que quiere modificar"
|
notice_no_issue_selected: "Ninguna petición seleccionada. Por favor, compruebe la petición que quiere modificar"
|
||||||
notice_not_authorized: No tiene autorización para acceder a esta página.
|
notice_not_authorized: No tiene autorización para acceder a esta página.
|
||||||
@@ -544,9 +546,9 @@ permission_comment_news: Comentar noticias
|
|||||||
permission_commit_access: Acceso de escritura
|
permission_commit_access: Acceso de escritura
|
||||||
permission_delete_issues: Borrar peticiones
|
permission_delete_issues: Borrar peticiones
|
||||||
permission_delete_messages: Borrar mensajes
|
permission_delete_messages: Borrar mensajes
|
||||||
|
permission_delete_own_messages: Borrar mensajes propios
|
||||||
permission_delete_wiki_pages: Borrar páginas wiki
|
permission_delete_wiki_pages: Borrar páginas wiki
|
||||||
permission_delete_wiki_pages_attachments: Borrar ficheros
|
permission_delete_wiki_pages_attachments: Borrar ficheros
|
||||||
permission_delete_own_messages: Borrar mensajes propios
|
|
||||||
permission_edit_issue_notes: Modificar notas
|
permission_edit_issue_notes: Modificar notas
|
||||||
permission_edit_issues: Modificar peticiones
|
permission_edit_issues: Modificar peticiones
|
||||||
permission_edit_messages: Modificar mensajes
|
permission_edit_messages: Modificar mensajes
|
||||||
@@ -602,15 +604,16 @@ setting_commit_fix_keywords: Palabras clave para la corrección
|
|||||||
setting_commit_logs_encoding: Codificación de los mensajes de commit
|
setting_commit_logs_encoding: Codificación de los mensajes de commit
|
||||||
setting_commit_ref_keywords: Palabras clave para la referencia
|
setting_commit_ref_keywords: Palabras clave para la referencia
|
||||||
setting_cross_project_issue_relations: Permitir relacionar peticiones de distintos proyectos
|
setting_cross_project_issue_relations: Permitir relacionar peticiones de distintos proyectos
|
||||||
setting_date_format: Formato de la fecha
|
setting_date_format: Formato de fecha
|
||||||
setting_default_language: Idioma por defecto
|
setting_default_language: Idioma por defecto
|
||||||
setting_default_projects_public: Los proyectos nuevos son públicos por defecto
|
setting_default_projects_public: Los proyectos nuevos son públicos por defecto
|
||||||
setting_display_subprojects_issues: Mostrar peticiones de un subproyecto en el proyecto padre por defecto
|
setting_diff_max_lines_displayed: Número máximo de diferencias mostradas
|
||||||
|
setting_display_subprojects_issues: Mostrar por defecto peticiones de proy. secundarios en el principal
|
||||||
setting_emails_footer: Pie de mensajes
|
setting_emails_footer: Pie de mensajes
|
||||||
setting_enabled_scm: Activar SCM
|
setting_enabled_scm: Activar SCM
|
||||||
setting_feeds_limit: Límite de contenido para sindicación
|
setting_feeds_limit: Límite de contenido para sindicación
|
||||||
setting_gravatar_enabled: Usar iconos de usuario (Gravatar)
|
setting_gravatar_enabled: Usar iconos de usuario (Gravatar)
|
||||||
setting_host_name: Nombre de host
|
setting_host_name: Nombre y ruta del servidor
|
||||||
setting_issue_list_default_columns: Columnas por defecto para la lista de peticiones
|
setting_issue_list_default_columns: Columnas por defecto para la lista de peticiones
|
||||||
setting_issues_export_limit: Límite de exportación de peticiones
|
setting_issues_export_limit: Límite de exportación de peticiones
|
||||||
setting_login_required: Se requiere identificación
|
setting_login_required: Se requiere identificación
|
||||||
@@ -632,7 +635,7 @@ setting_wiki_compression: Compresión del historial del Wiki
|
|||||||
status_active: activo
|
status_active: activo
|
||||||
status_locked: bloqueado
|
status_locked: bloqueado
|
||||||
status_registered: registrado
|
status_registered: registrado
|
||||||
text_are_you_sure: ¿ Estás seguro ?
|
text_are_you_sure: ¿Está seguro?
|
||||||
text_assign_time_entries_to_project: Asignar las horas al proyecto
|
text_assign_time_entries_to_project: Asignar las horas al proyecto
|
||||||
text_caracters_maximum: %d caracteres como máximo.
|
text_caracters_maximum: %d caracteres como máximo.
|
||||||
text_caracters_minimum: %d caracteres como mínimo
|
text_caracters_minimum: %d caracteres como mínimo
|
||||||
@@ -640,11 +643,12 @@ text_comma_separated: Múltiples valores permitidos (separados por coma).
|
|||||||
text_default_administrator_account_changed: Cuenta de administrador por defecto modificada
|
text_default_administrator_account_changed: Cuenta de administrador por defecto modificada
|
||||||
text_destroy_time_entries: Borrar las horas
|
text_destroy_time_entries: Borrar las horas
|
||||||
text_destroy_time_entries_question: Existen %.02f horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer ?
|
text_destroy_time_entries_question: Existen %.02f horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer ?
|
||||||
|
text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.'
|
||||||
text_email_delivery_not_configured: "El envío de correos no está configurado, y las notificaciones se han desactivado. \n Configure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios."
|
text_email_delivery_not_configured: "El envío de correos no está configurado, y las notificaciones se han desactivado. \n Configure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios."
|
||||||
text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:'
|
text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:'
|
||||||
text_enumeration_destroy_question: '%d objetos con este valor asignado.'
|
text_enumeration_destroy_question: '%d objetos con este valor asignado.'
|
||||||
text_file_repository_writable: Se puede escribir en el repositorio
|
text_file_repository_writable: Se puede escribir en el repositorio
|
||||||
text_issue_added: Petición añadida por %s.
|
text_issue_added: Petición %s añadida por %s.
|
||||||
text_issue_category_destroy_assignments: Dejar las peticiones sin categoría
|
text_issue_category_destroy_assignments: Dejar las peticiones sin categoría
|
||||||
text_issue_category_destroy_question: Algunas peticiones (%d) están asignadas a esta categoría. ¿Qué desea hacer?
|
text_issue_category_destroy_question: Algunas peticiones (%d) están asignadas a esta categoría. ¿Qué desea hacer?
|
||||||
text_issue_category_reassign_to: Reasignar las peticiones a la categoría
|
text_issue_category_reassign_to: Reasignar las peticiones a la categoría
|
||||||
@@ -657,25 +661,26 @@ text_journal_set_to: fijado a %s
|
|||||||
text_length_between: Longitud entre %d y %d caracteres.
|
text_length_between: Longitud entre %d y %d caracteres.
|
||||||
text_load_default_configuration: Cargar la configuración por defecto
|
text_load_default_configuration: Cargar la configuración por defecto
|
||||||
text_min_max_length_info: 0 para ninguna restricción
|
text_min_max_length_info: 0 para ninguna restricción
|
||||||
text_no_configuration_data: "Todavía no se han configurado roles, ni trackers, ni estados y flujo de trabajo asociado a peticiones. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla."
|
text_no_configuration_data: "Todavía no se han configurado perfiles, ni tipos, estados y flujo de trabajo asociado a peticiones. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla."
|
||||||
text_project_destroy_confirmation: ¿Estás seguro de querer eliminar el proyecto?
|
text_project_destroy_confirmation: ¿Estás seguro de querer eliminar el proyecto?
|
||||||
text_project_identifier_info: 'Letras minúsculas (a-z), números y signos de puntuación permitidos.<br />Una vez guardado, el identificador no puede modificarse.'
|
text_project_identifier_info: 'Letras minúsculas (a-z), números y signos de puntuación permitidos.<br />Una vez guardado, el identificador no puede modificarse.'
|
||||||
text_reassign_time_entries: 'Reasignar las horas a esta petición:'
|
text_reassign_time_entries: 'Reasignar las horas a esta petición:'
|
||||||
text_regexp_info: ej. ^[A-Z0-9]+$
|
text_regexp_info: ej. ^[A-Z0-9]+$
|
||||||
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
text_repository_usernames_mapping: "Establezca la correspondencia entre los usuarios de Redmine y los presentes en el log del repositorio.\nLos usuarios con el mismo nombre o correo en Redmine y en el repositorio serán asociados automáticamente."
|
||||||
text_rmagick_available: RMagick disponible (opcional)
|
text_rmagick_available: RMagick disponible (opcional)
|
||||||
text_select_mail_notifications: Seleccionar los eventos a notificar
|
text_select_mail_notifications: Seleccionar los eventos a notificar
|
||||||
text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:'
|
text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:'
|
||||||
text_status_changed_by_changeset: Aplicado en los cambios %s
|
text_status_changed_by_changeset: Aplicado en los cambios %s
|
||||||
text_subprojects_destroy_warning: 'Los subproyectos: %s también se eliminarán'
|
text_subprojects_destroy_warning: 'Los proyectos secundarios: %s también se eliminarán'
|
||||||
text_tip_task_begin_day: tarea que comienza este día
|
text_tip_task_begin_day: tarea que comienza este día
|
||||||
text_tip_task_begin_end_day: tarea que comienza y termina este día
|
text_tip_task_begin_end_day: tarea que comienza y termina este día
|
||||||
text_tip_task_end_day: tarea que termina este día
|
text_tip_task_end_day: tarea que termina este día
|
||||||
text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tracker
|
text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tipo de petición
|
||||||
text_unallowed_characters: Caracteres no permitidos
|
text_unallowed_characters: Caracteres no permitidos
|
||||||
text_user_mail_option: "En los proyectos no seleccionados, sólo recibirá notificaciones sobre elementos monitorizados o elementos en los que esté involucrado (por ejemplo, peticiones de las que usted sea autor o asignadas a usted)."
|
text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notificaciones sobre elementos monitorizados o elementos en los que esté involucrado (por ejemplo, peticiones de las que usted sea autor o asignadas a usted)."
|
||||||
text_user_wrote: '%s escribió:'
|
text_user_wrote: '%s escribió:'
|
||||||
text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido?
|
text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido?
|
||||||
text_workflow_edit: Seleccionar un flujo de trabajo para actualizar
|
text_workflow_edit: Seleccionar un flujo de trabajo para actualizar
|
||||||
label_user_activity: "%s's activity"
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
label_updated_time_by: Updated by %s %s ago
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
@@ -694,3 +694,8 @@ permission_edit_own_messages: Muokkaa omia viestejä
|
|||||||
permission_delete_own_messages: Poista omia viestejä
|
permission_delete_own_messages: Poista omia viestejä
|
||||||
label_user_activity: "Käyttäjän %s historia"
|
label_user_activity: "Käyttäjän %s historia"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+7
-1
@@ -85,6 +85,8 @@ error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt
|
|||||||
error_scm_annotate: "L'entrée n'existe pas ou ne peut pas être annotée."
|
error_scm_annotate: "L'entrée n'existe pas ou ne peut pas être annotée."
|
||||||
error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas à ce projet"
|
error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas à ce projet"
|
||||||
|
|
||||||
|
warning_attachments_not_saved: "%d fichier(s) n'ont pas pu être sauvegardés."
|
||||||
|
|
||||||
mail_subject_lost_password: Votre mot de passe %s
|
mail_subject_lost_password: Votre mot de passe %s
|
||||||
mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant:'
|
mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant:'
|
||||||
mail_subject_register: Activation de votre compte %s
|
mail_subject_register: Activation de votre compte %s
|
||||||
@@ -223,6 +225,7 @@ setting_mail_handler_api_enabled: "Activer le WS pour la réception d'emails"
|
|||||||
setting_mail_handler_api_key: Clé de protection de l'API
|
setting_mail_handler_api_key: Clé de protection de l'API
|
||||||
setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels
|
setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels
|
||||||
setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
|
setting_gravatar_enabled: Afficher les Gravatar des utilisateurs
|
||||||
|
setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées
|
||||||
|
|
||||||
permission_edit_project: Modifier le projet
|
permission_edit_project: Modifier le projet
|
||||||
permission_select_project_modules: Choisir les modules
|
permission_select_project_modules: Choisir les modules
|
||||||
@@ -579,7 +582,7 @@ label_reverse_chronological_order: Dans l'ordre chronologique inverse
|
|||||||
label_planning: Planning
|
label_planning: Planning
|
||||||
label_incoming_emails: Emails entrants
|
label_incoming_emails: Emails entrants
|
||||||
label_generate_key: Générer une clé
|
label_generate_key: Générer une clé
|
||||||
label_issue_watchers: Utilisateurs surveillant cette demande
|
label_issue_watchers: Observateurs
|
||||||
label_example: Exemple
|
label_example: Exemple
|
||||||
|
|
||||||
button_login: Connexion
|
button_login: Connexion
|
||||||
@@ -589,6 +592,7 @@ button_check_all: Tout cocher
|
|||||||
button_uncheck_all: Tout décocher
|
button_uncheck_all: Tout décocher
|
||||||
button_delete: Supprimer
|
button_delete: Supprimer
|
||||||
button_create: Créer
|
button_create: Créer
|
||||||
|
button_create_and_continue: Créer et continuer
|
||||||
button_test: Tester
|
button_test: Tester
|
||||||
button_edit: Modifier
|
button_edit: Modifier
|
||||||
button_add: Ajouter
|
button_add: Ajouter
|
||||||
@@ -660,6 +664,7 @@ text_issues_destroy_confirmation: 'Etes-vous sûr de vouloir supprimer le(s) dem
|
|||||||
text_select_project_modules: 'Selectionner les modules à activer pour ce project:'
|
text_select_project_modules: 'Selectionner les modules à activer pour ce project:'
|
||||||
text_default_administrator_account_changed: Compte administrateur par défaut changé
|
text_default_administrator_account_changed: Compte administrateur par défaut changé
|
||||||
text_file_repository_writable: Répertoire de stockage des fichiers accessible en écriture
|
text_file_repository_writable: Répertoire de stockage des fichiers accessible en écriture
|
||||||
|
text_plugin_assets_writable: Répertoire public des plugins accessible en écriture
|
||||||
text_rmagick_available: Bibliothèque RMagick présente (optionnelle)
|
text_rmagick_available: Bibliothèque RMagick présente (optionnelle)
|
||||||
text_destroy_time_entries_question: %.02f heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?
|
text_destroy_time_entries_question: %.02f heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?
|
||||||
text_destroy_time_entries: Supprimer les heures
|
text_destroy_time_entries: Supprimer les heures
|
||||||
@@ -670,6 +675,7 @@ text_enumeration_destroy_question: 'Cette valeur est affectée à %d objets.'
|
|||||||
text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:'
|
text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:'
|
||||||
text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/email.yml et redémarrez l'application pour les activer."
|
text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/email.yml et redémarrez l'application pour les activer."
|
||||||
text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés."
|
text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés."
|
||||||
|
text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.'
|
||||||
|
|
||||||
default_role_manager: Manager
|
default_role_manager: Manager
|
||||||
default_role_developper: Développeur
|
default_role_developper: Développeur
|
||||||
|
|||||||
+79
-74
@@ -236,7 +236,7 @@ label_register: הרשמה
|
|||||||
label_password_lost: אבדה הסיסמה?
|
label_password_lost: אבדה הסיסמה?
|
||||||
label_home: דף הבית
|
label_home: דף הבית
|
||||||
label_my_page: הדף שלי
|
label_my_page: הדף שלי
|
||||||
label_my_account: השבון שלי
|
label_my_account: החשבון שלי
|
||||||
label_my_projects: הפרויקטים שלי
|
label_my_projects: הפרויקטים שלי
|
||||||
label_administration: אדמיניסטרציה
|
label_administration: אדמיניסטרציה
|
||||||
label_login: התחבר
|
label_login: התחבר
|
||||||
@@ -292,7 +292,7 @@ label_confirmation: אישור
|
|||||||
label_export_to: יצא ל
|
label_export_to: יצא ל
|
||||||
label_read: קרא...
|
label_read: קרא...
|
||||||
label_public_projects: פרויקטים פומביים
|
label_public_projects: פרויקטים פומביים
|
||||||
label_open_issues: פותח
|
label_open_issues: פתוח
|
||||||
label_open_issues_plural: פתוחים
|
label_open_issues_plural: פתוחים
|
||||||
label_closed_issues: סגור
|
label_closed_issues: סגור
|
||||||
label_closed_issues_plural: סגורים
|
label_closed_issues_plural: סגורים
|
||||||
@@ -308,7 +308,7 @@ label_used_by: בשימוש ע"י
|
|||||||
label_details: פרטים
|
label_details: פרטים
|
||||||
label_add_note: הוסף הערה
|
label_add_note: הוסף הערה
|
||||||
label_per_page: לכל דף
|
label_per_page: לכל דף
|
||||||
label_calendar: לו"ח שנה
|
label_calendar: לוח שנה
|
||||||
label_months_from: חודשים מ
|
label_months_from: חודשים מ
|
||||||
label_gantt: גאנט
|
label_gantt: גאנט
|
||||||
label_internal: פנימי
|
label_internal: פנימי
|
||||||
@@ -357,7 +357,7 @@ label_sort_higher: הזז למעלה
|
|||||||
label_sort_lower: הזז למטה
|
label_sort_lower: הזז למטה
|
||||||
label_sort_lowest: הזז לתחתית
|
label_sort_lowest: הזז לתחתית
|
||||||
label_roadmap: מפת הדרכים
|
label_roadmap: מפת הדרכים
|
||||||
label_roadmap_due_in: %s נגמר בעוד
|
label_roadmap_due_in: נגמר בעוד %s
|
||||||
label_roadmap_overdue: %s מאחר
|
label_roadmap_overdue: %s מאחר
|
||||||
label_roadmap_no_issues: אין נושאים לגירסא זו
|
label_roadmap_no_issues: אין נושאים לגירסא זו
|
||||||
label_search: חפש
|
label_search: חפש
|
||||||
@@ -421,8 +421,8 @@ label_send_information: שלח מידע על חשבון למשתמש
|
|||||||
label_year: שנה
|
label_year: שנה
|
||||||
label_month: חודש
|
label_month: חודש
|
||||||
label_week: שבוע
|
label_week: שבוע
|
||||||
label_date_from: מאת
|
label_date_from: מתאריך
|
||||||
label_date_to: אל
|
label_date_to: עד
|
||||||
label_language_based: מבוסס שפה
|
label_language_based: מבוסס שפה
|
||||||
label_sort_by: מין לפי %s
|
label_sort_by: מין לפי %s
|
||||||
label_send_test_email: שלח דו"ל בדיקה
|
label_send_test_email: שלח דו"ל בדיקה
|
||||||
@@ -487,7 +487,7 @@ text_journal_set_to: שונה ל %s
|
|||||||
text_journal_deleted: נמחק
|
text_journal_deleted: נמחק
|
||||||
text_tip_task_begin_day: מטלה המתחילה היום
|
text_tip_task_begin_day: מטלה המתחילה היום
|
||||||
text_tip_task_end_day: מטלה המסתיימת היום
|
text_tip_task_end_day: מטלה המסתיימת היום
|
||||||
text_tip_task_begin_end_day: מתלה המתחילה ומסתיימת היום
|
text_tip_task_begin_end_day: מטלה המתחילה ומסתיימת היום
|
||||||
text_project_identifier_info: 'אותיות לטיניות (a-z), מספרים ומקפים.<br />ברגע שנשמר, לא ניתן לשנות את המזהה.'
|
text_project_identifier_info: 'אותיות לטיניות (a-z), מספרים ומקפים.<br />ברגע שנשמר, לא ניתן לשנות את המזהה.'
|
||||||
text_caracters_maximum: מקסימום %d תווים.
|
text_caracters_maximum: מקסימום %d תווים.
|
||||||
text_length_between: אורך בין %d ל %d תווים.
|
text_length_between: אורך בין %d ל %d תווים.
|
||||||
@@ -618,79 +618,84 @@ label_overall_activity: פעילות כוללת
|
|||||||
setting_default_projects_public: פרויקטים חדשים הינם פומביים כברירת מחדל
|
setting_default_projects_public: פרויקטים חדשים הינם פומביים כברירת מחדל
|
||||||
error_scm_annotate: "הכניסה לא קיימת או שלא ניתן לתאר אותה."
|
error_scm_annotate: "הכניסה לא קיימת או שלא ניתן לתאר אותה."
|
||||||
label_planning: תכנון
|
label_planning: תכנון
|
||||||
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.'
|
text_subprojects_destroy_warning: 'תת הפרויקט\ים: %s ימחקו גם כן.'
|
||||||
label_and_its_subprojects: %s and its subprojects
|
label_and_its_subprojects: %s וכל תת הפרויקטים שלו
|
||||||
mail_body_reminder: "%d issue(s) that are assigned to you are due in the next %d days:"
|
mail_body_reminder: "%d נושאים שמיועדים אליך מיועדים להגשה בתוך %d ימים:"
|
||||||
mail_subject_reminder: "%d issue(s) due in the next days"
|
mail_subject_reminder: "%d נושאים מיעדים להגשה בימים הקרובים"
|
||||||
text_user_wrote: '%s wrote:'
|
text_user_wrote: '%s כתב:'
|
||||||
label_duplicated_by: duplicated by
|
label_duplicated_by: שוכפל ע"י
|
||||||
setting_enabled_scm: Enabled SCM
|
setting_enabled_scm: אפשר SCM
|
||||||
text_enumeration_category_reassign_to: 'Reassign them to this value:'
|
text_enumeration_category_reassign_to: 'הצב מחדש לערך הזה:'
|
||||||
text_enumeration_destroy_question: '%d objects are assigned to this value.'
|
text_enumeration_destroy_question: '%d אוביקטים מוצבים לערך זה.'
|
||||||
label_incoming_emails: Incoming emails
|
label_incoming_emails: דוא"ל נכנס
|
||||||
label_generate_key: Generate a key
|
label_generate_key: יצר מפתח
|
||||||
setting_mail_handler_api_enabled: Enable WS for incoming emails
|
setting_mail_handler_api_enabled: Enable WS for incoming emails
|
||||||
setting_mail_handler_api_key: API key
|
setting_mail_handler_api_key: מפתח API
|
||||||
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
|
||||||
field_parent_title: Parent page
|
field_parent_title: דף אב
|
||||||
label_issue_watchers: Watchers
|
label_issue_watchers: צופים
|
||||||
setting_commit_logs_encoding: Commit messages encoding
|
setting_commit_logs_encoding: Commit messages encoding
|
||||||
button_quote: Quote
|
button_quote: צטט
|
||||||
setting_sequential_project_identifiers: Generate sequential project identifiers
|
setting_sequential_project_identifiers: Generate sequential project identifiers
|
||||||
notice_unable_delete_version: Unable to delete version
|
notice_unable_delete_version: לא ניתן למחוק גירסא
|
||||||
label_renamed: renamed
|
label_renamed: השם שונה
|
||||||
label_copied: copied
|
label_copied: הועתק
|
||||||
setting_plain_text_mail: plain text only (no HTML)
|
setting_plain_text_mail: טקסט פשוט בלבד (ללא HTML)
|
||||||
permission_view_files: View files
|
permission_view_files: צפה בקבצים
|
||||||
permission_edit_issues: Edit issues
|
permission_edit_issues: ערוך נושאים
|
||||||
permission_edit_own_time_entries: Edit own time logs
|
permission_edit_own_time_entries: ערוך את לוג הזמן של עצמך
|
||||||
permission_manage_public_queries: Manage public queries
|
permission_manage_public_queries: נהל שאילתות פומביות
|
||||||
permission_add_issues: Add issues
|
permission_add_issues: הוסף נושא
|
||||||
permission_log_time: Log spent time
|
permission_log_time: תעד זמן שבוזבז
|
||||||
permission_view_changesets: View changesets
|
permission_view_changesets: צפה בקבוצות שינויים
|
||||||
permission_view_time_entries: View spent time
|
permission_view_time_entries: צפה בזמן שבוזבז
|
||||||
permission_manage_versions: Manage versions
|
permission_manage_versions: נהל גירסאות
|
||||||
permission_manage_wiki: Manage wiki
|
permission_manage_wiki: נהל wiki
|
||||||
permission_manage_categories: Manage issue categories
|
permission_manage_categories: נהל קטגוריות נושאים
|
||||||
permission_protect_wiki_pages: Protect wiki pages
|
permission_protect_wiki_pages: הגן כל דפי wiki
|
||||||
permission_comment_news: Comment news
|
permission_comment_news: הגב על החדשות
|
||||||
permission_delete_messages: Delete messages
|
permission_delete_messages: מחק הודעות
|
||||||
permission_select_project_modules: Select project modules
|
permission_select_project_modules: בחר מודולי פרויקט
|
||||||
permission_manage_documents: Manage documents
|
permission_manage_documents: נהל מסמכים
|
||||||
permission_edit_wiki_pages: Edit wiki pages
|
permission_edit_wiki_pages: ערוך דפי wiki
|
||||||
permission_add_issue_watchers: Add watchers
|
permission_add_issue_watchers: הוסף צופים
|
||||||
permission_view_gantt: View gantt chart
|
permission_view_gantt: צפה בגאנט
|
||||||
permission_move_issues: Move issues
|
permission_move_issues: הזז נושאים
|
||||||
permission_manage_issue_relations: Manage issue relations
|
permission_manage_issue_relations: נהל יחס בין נושאים
|
||||||
permission_delete_wiki_pages: Delete wiki pages
|
permission_delete_wiki_pages: מחק דפי wiki
|
||||||
permission_manage_boards: Manage boards
|
permission_manage_boards: נהל לוחות
|
||||||
permission_delete_wiki_pages_attachments: Delete attachments
|
permission_delete_wiki_pages_attachments: מחק דבוקות
|
||||||
permission_view_wiki_edits: View wiki history
|
permission_view_wiki_edits: צפה בהיסטורית wiki
|
||||||
permission_add_messages: Post messages
|
permission_add_messages: הצב הודעות
|
||||||
permission_view_messages: View messages
|
permission_view_messages: צפה בהודעות
|
||||||
permission_manage_files: Manage files
|
permission_manage_files: נהל קבצים
|
||||||
permission_edit_issue_notes: Edit notes
|
permission_edit_issue_notes: ערוך רשימות
|
||||||
permission_manage_news: Manage news
|
permission_manage_news: נהל חדשות
|
||||||
permission_view_calendar: View calendrier
|
permission_view_calendar: צפה בלוח השנה
|
||||||
permission_manage_members: Manage members
|
permission_manage_members: נהל חברים
|
||||||
permission_edit_messages: Edit messages
|
permission_edit_messages: ערוך הודעות
|
||||||
permission_delete_issues: Delete issues
|
permission_delete_issues: מחק נושאים
|
||||||
permission_view_issue_watchers: View watchers list
|
permission_view_issue_watchers: צפה ברשימה צופים
|
||||||
permission_manage_repository: Manage repository
|
permission_manage_repository: נהל מאגר
|
||||||
permission_commit_access: Commit access
|
permission_commit_access: Commit access
|
||||||
permission_browse_repository: Browse repository
|
permission_browse_repository: סייר במאגר
|
||||||
permission_view_documents: View documents
|
permission_view_documents: צפה במסמכים
|
||||||
permission_edit_project: Edit project
|
permission_edit_project: ערוך פרויקט
|
||||||
permission_add_issue_notes: Add notes
|
permission_add_issue_notes: Add notes
|
||||||
permission_save_queries: Save queries
|
permission_save_queries: שמור שאילתות
|
||||||
permission_view_wiki_pages: View wiki
|
permission_view_wiki_pages: צפה ב-wiki
|
||||||
permission_rename_wiki_pages: Rename wiki pages
|
permission_rename_wiki_pages: שנה שם של דפי wiki
|
||||||
permission_edit_time_entries: Edit time logs
|
permission_edit_time_entries: ערוך רישום זמנים
|
||||||
permission_edit_own_issue_notes: Edit own notes
|
permission_edit_own_issue_notes: Edit own notes
|
||||||
setting_gravatar_enabled: Use Gravatar user icons
|
setting_gravatar_enabled: Use Gravatar user icons
|
||||||
label_example: Example
|
label_example: דוגמא
|
||||||
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
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: Edit own messages
|
permission_edit_own_messages: ערוך הודעות של עצמך
|
||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: מחק הודעות של עצמך
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "הפעילות של %s"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: עודכן ע"י %s לפני %s
|
||||||
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+6
-1
@@ -694,4 +694,9 @@ text_repository_usernames_mapping: "Állítsd be a felhasználó összerendelés
|
|||||||
permission_edit_own_messages: Saját üzenetek szerkesztése
|
permission_edit_own_messages: Saját üzenetek szerkesztése
|
||||||
permission_delete_own_messages: Saját üzenetek törlése
|
permission_delete_own_messages: Saját üzenetek törlése
|
||||||
label_user_activity: "%s tevékenységei"
|
label_user_activity: "%s tevékenységei"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: "Módosította %s ennyivel ezelőtt: %s"
|
||||||
|
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 assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
@@ -694,3 +694,8 @@ permission_edit_own_messages: Modifica propri messaggi
|
|||||||
permission_delete_own_messages: Elimina propri messaggi
|
permission_delete_own_messages: Elimina propri messaggi
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "%s's activity"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
@@ -695,3 +695,8 @@ permission_edit_own_messages: Edit own messages
|
|||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: Delete own messages
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "%s's activity"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+39
-34
@@ -97,7 +97,7 @@ field_mail: 메일
|
|||||||
field_filename: 파일
|
field_filename: 파일
|
||||||
field_filesize: 크기
|
field_filesize: 크기
|
||||||
field_downloads: 다운로드
|
field_downloads: 다운로드
|
||||||
field_author: 보고자
|
field_author: 저자
|
||||||
field_created_on: 보고시간
|
field_created_on: 보고시간
|
||||||
field_updated_on: 변경시간
|
field_updated_on: 변경시간
|
||||||
field_field_format: 포맷
|
field_field_format: 포맷
|
||||||
@@ -120,18 +120,18 @@ field_subject: 제목
|
|||||||
field_due_date: 완료 기한
|
field_due_date: 완료 기한
|
||||||
field_assigned_to: 담당자
|
field_assigned_to: 담당자
|
||||||
field_priority: 우선순위
|
field_priority: 우선순위
|
||||||
field_fixed_version: 목표 버전
|
field_fixed_version: 목표버전
|
||||||
field_user: 사용자
|
field_user: 사용자
|
||||||
field_role: 역할
|
field_role: 역할
|
||||||
field_homepage: 홈페이지
|
field_homepage: 홈페이지
|
||||||
field_is_public: 공개
|
field_is_public: 공개
|
||||||
field_parent: 상위 프로젝트
|
field_parent: 상위 프로젝트
|
||||||
field_is_in_chlog: 변경이력(changelog)에서 보여지는 일감들
|
field_is_in_chlog: 변경이력(changelog)에서 표시할 일감들
|
||||||
field_is_in_roadmap: 로드맵에서 보여지는 일감들
|
field_is_in_roadmap: 로드맵에서표시할 일감들
|
||||||
field_login: 로그인
|
field_login: 로그인
|
||||||
field_mail_notification: 메일 알림
|
field_mail_notification: 메일 알림
|
||||||
field_admin: 관리자
|
field_admin: 관리자
|
||||||
field_last_login_on: 최종 접속
|
field_last_login_on: 마지막 로그인
|
||||||
field_language: 언어
|
field_language: 언어
|
||||||
field_effective_date: 일자
|
field_effective_date: 일자
|
||||||
field_password: 비밀번호
|
field_password: 비밀번호
|
||||||
@@ -188,7 +188,7 @@ setting_commit_ref_keywords: 일감 참조에 사용할 키워드들
|
|||||||
setting_commit_fix_keywords: 일감 해결에 사용할 키워드들
|
setting_commit_fix_keywords: 일감 해결에 사용할 키워드들
|
||||||
setting_autologin: 자동 로그인
|
setting_autologin: 자동 로그인
|
||||||
setting_date_format: 날짜 형식
|
setting_date_format: 날짜 형식
|
||||||
setting_cross_project_issue_relations: 프로젝트간 일감에 관련을 맺는 것을 허용
|
setting_cross_project_issue_relations: 프로젝트간 일감에 관계을 맺는 것을 허용
|
||||||
setting_issue_list_default_columns: 일감 목록에 보여줄 기본 컬럼들
|
setting_issue_list_default_columns: 일감 목록에 보여줄 기본 컬럼들
|
||||||
setting_repositories_encodings: 저장소 인코딩
|
setting_repositories_encodings: 저장소 인코딩
|
||||||
setting_emails_footer: 메일 꼬리
|
setting_emails_footer: 메일 꼬리
|
||||||
@@ -201,9 +201,9 @@ label_project_new: 새 프로젝트
|
|||||||
label_project_plural: 프로젝트
|
label_project_plural: 프로젝트
|
||||||
label_project_all: 모든 프로젝트
|
label_project_all: 모든 프로젝트
|
||||||
label_project_latest: 최근 프로젝트
|
label_project_latest: 최근 프로젝트
|
||||||
label_issue: 일감 보기
|
label_issue: 일감
|
||||||
label_issue_new: 새 일감만들기
|
label_issue_new: 새 일감만들기
|
||||||
label_issue_plural: 일감 보기
|
label_issue_plural: 일감
|
||||||
label_issue_view_all: 모든 일감 보기
|
label_issue_view_all: 모든 일감 보기
|
||||||
label_document: 문서
|
label_document: 문서
|
||||||
label_document_new: 새 문서
|
label_document_new: 새 문서
|
||||||
@@ -243,15 +243,15 @@ label_administration: 관리자
|
|||||||
label_login: 로그인
|
label_login: 로그인
|
||||||
label_logout: 로그아웃
|
label_logout: 로그아웃
|
||||||
label_help: 도움말
|
label_help: 도움말
|
||||||
label_reported_issues: 보고된 일감
|
label_reported_issues: 보고한 일감
|
||||||
label_assigned_to_me_issues: 나에게 할당된 일감
|
label_assigned_to_me_issues: 나에게 할당된 일감
|
||||||
label_last_login: 최종 접속
|
label_last_login: 최종 접속
|
||||||
label_last_updates: 최종 변경 내역
|
label_last_updates: 최종 변경 내역
|
||||||
label_last_updates_plural: 최종변경 %d
|
label_last_updates_plural: 최종변경 %d
|
||||||
label_registered_on: 등록시각
|
label_registered_on: 등록시각
|
||||||
label_activity: 진행중인 작업
|
label_activity: 작업내역
|
||||||
label_new: 신규
|
label_new: 새로 만들기
|
||||||
label_logged_as: ▶
|
label_logged_as: '로그인계정:'
|
||||||
label_environment: 환경
|
label_environment: 환경
|
||||||
label_authentication: 인증설정
|
label_authentication: 인증설정
|
||||||
label_auth_source: 인증 모드
|
label_auth_source: 인증 모드
|
||||||
@@ -280,7 +280,7 @@ label_attachment_plural: 관련파일
|
|||||||
label_report: 보고서
|
label_report: 보고서
|
||||||
label_report_plural: 보고서
|
label_report_plural: 보고서
|
||||||
label_news: 뉴스
|
label_news: 뉴스
|
||||||
label_news_new: 뉴스추가
|
label_news_new: 새 뉴스
|
||||||
label_news_plural: 뉴스
|
label_news_plural: 뉴스
|
||||||
label_news_latest: 최근 뉴스
|
label_news_latest: 최근 뉴스
|
||||||
label_news_view_all: 모든 뉴스
|
label_news_view_all: 모든 뉴스
|
||||||
@@ -298,7 +298,7 @@ label_open_issues: 진행중
|
|||||||
label_open_issues_plural: 진행중
|
label_open_issues_plural: 진행중
|
||||||
label_closed_issues: 완료됨
|
label_closed_issues: 완료됨
|
||||||
label_closed_issues_plural: 완료됨
|
label_closed_issues_plural: 완료됨
|
||||||
label_total: Total
|
label_total: 합계
|
||||||
label_permissions: 허가권한
|
label_permissions: 허가권한
|
||||||
label_current_status: 일감 상태
|
label_current_status: 일감 상태
|
||||||
label_new_statuses_allowed: 허용되는 일감 상태
|
label_new_statuses_allowed: 허용되는 일감 상태
|
||||||
@@ -307,7 +307,7 @@ label_none: 없음
|
|||||||
label_next: 다음
|
label_next: 다음
|
||||||
label_previous: 이전
|
label_previous: 이전
|
||||||
label_used_by: 사용됨
|
label_used_by: 사용됨
|
||||||
label_details: 상세
|
label_details: 자세히
|
||||||
label_add_note: 일감덧글 추가
|
label_add_note: 일감덧글 추가
|
||||||
label_per_page: 페이지별
|
label_per_page: 페이지별
|
||||||
label_calendar: 달력
|
label_calendar: 달력
|
||||||
@@ -316,7 +316,7 @@ label_gantt: Gantt 챠트
|
|||||||
label_internal: 내부
|
label_internal: 내부
|
||||||
label_last_changes: 지난 변경사항 %d 건
|
label_last_changes: 지난 변경사항 %d 건
|
||||||
label_change_view_all: 모든 변경 내역 보기
|
label_change_view_all: 모든 변경 내역 보기
|
||||||
label_personalize_page: 입맛대로 구성하기(Drag & Drop)
|
label_personalize_page: 입맛대로 구성하기
|
||||||
label_comment: 댓글
|
label_comment: 댓글
|
||||||
label_comment_plural: 댓글
|
label_comment_plural: 댓글
|
||||||
label_comment_add: 댓글 추가
|
label_comment_add: 댓글 추가
|
||||||
@@ -353,7 +353,7 @@ label_latest_revision: 최근 개정판
|
|||||||
label_latest_revision_plural: 최근 개정판
|
label_latest_revision_plural: 최근 개정판
|
||||||
label_view_revisions: 개정판 보기
|
label_view_revisions: 개정판 보기
|
||||||
label_max_size: 최대 크기
|
label_max_size: 최대 크기
|
||||||
label_on: 'on'
|
label_on: '전체: '
|
||||||
label_sort_highest: 최상단으로
|
label_sort_highest: 최상단으로
|
||||||
label_sort_higher: 위로
|
label_sort_higher: 위로
|
||||||
label_sort_lower: 아래로
|
label_sort_lower: 아래로
|
||||||
@@ -361,7 +361,7 @@ label_sort_lowest: 최하단으로
|
|||||||
label_roadmap: 로드맵
|
label_roadmap: 로드맵
|
||||||
label_roadmap_due_in: 기한 %s
|
label_roadmap_due_in: 기한 %s
|
||||||
label_roadmap_overdue: %s 지연
|
label_roadmap_overdue: %s 지연
|
||||||
label_roadmap_no_issues: 이버전에 해당하는 일감 없음
|
label_roadmap_no_issues: 이 버전에 해당하는 일감 없음
|
||||||
label_search: 검색
|
label_search: 검색
|
||||||
label_result_plural: 결과
|
label_result_plural: 결과
|
||||||
label_all_words: 모든 단어
|
label_all_words: 모든 단어
|
||||||
@@ -412,19 +412,19 @@ label_disabled: 비활성화
|
|||||||
label_show_completed_versions: 완료된 버전 보기
|
label_show_completed_versions: 완료된 버전 보기
|
||||||
label_me: 나
|
label_me: 나
|
||||||
label_board: 게시판
|
label_board: 게시판
|
||||||
label_board_new: 신규 게시판
|
label_board_new: 새 게시판
|
||||||
label_board_plural: 게시판
|
label_board_plural: 게시판
|
||||||
label_topic_plural: 주제
|
label_topic_plural: 주제
|
||||||
label_message_plural: 관련글
|
label_message_plural: 관련글
|
||||||
label_message_last: 최종 글
|
label_message_last: 마지막 글
|
||||||
label_message_new: 새글쓰기
|
label_message_new: 새글쓰기
|
||||||
label_reply_plural: 답글
|
label_reply_plural: 답글
|
||||||
label_send_information: 사용자에게 계정정보를 보냄
|
label_send_information: 사용자에게 계정정보를 보냄
|
||||||
label_year: 년
|
label_year: 년
|
||||||
label_month: 월
|
label_month: 월
|
||||||
label_week: 주
|
label_week: 주
|
||||||
label_date_from: 에서
|
label_date_from: '기간:'
|
||||||
label_date_to: (으)로
|
label_date_to: ' ~ '
|
||||||
label_language_based: 언어설정에 따름
|
label_language_based: 언어설정에 따름
|
||||||
label_sort_by: 정렬방법(%s)
|
label_sort_by: 정렬방법(%s)
|
||||||
label_send_test_email: 테스트 메일 보내기
|
label_send_test_email: 테스트 메일 보내기
|
||||||
@@ -533,7 +533,7 @@ default_activity_development: 개발
|
|||||||
|
|
||||||
enumeration_issue_priorities: 일감 우선순위
|
enumeration_issue_priorities: 일감 우선순위
|
||||||
enumeration_doc_categories: 문서 카테고리
|
enumeration_doc_categories: 문서 카테고리
|
||||||
enumeration_activities: 진행활동(시간 추적)
|
enumeration_activities: 작업분류(시간추적)
|
||||||
button_copy: 복사
|
button_copy: 복사
|
||||||
mail_body_account_information_external: 레드마인에 로그인할 때 "%s" 계정을 사용하실 수 있습니다.
|
mail_body_account_information_external: 레드마인에 로그인할 때 "%s" 계정을 사용하실 수 있습니다.
|
||||||
button_change_password: 비밀번호 변경
|
button_change_password: 비밀번호 변경
|
||||||
@@ -555,7 +555,7 @@ button_annotate: 주석달기(annotate)
|
|||||||
label_issues_by: 일감분류 방식 %s
|
label_issues_by: 일감분류 방식 %s
|
||||||
field_searchable: 검색가능
|
field_searchable: 검색가능
|
||||||
label_display_per_page: '페이지당: %s'
|
label_display_per_page: '페이지당: %s'
|
||||||
setting_per_page_options: 페이지당 표시할 객채 수
|
setting_per_page_options: 페이지당 표시할 객체 수
|
||||||
label_age: 마지막 수정일
|
label_age: 마지막 수정일
|
||||||
notice_default_data_loaded: 기본 설정을 성공적으로 로드하였습니다.
|
notice_default_data_loaded: 기본 설정을 성공적으로 로드하였습니다.
|
||||||
text_load_default_configuration: 기본 설정을 로딩하기
|
text_load_default_configuration: 기본 설정을 로딩하기
|
||||||
@@ -585,20 +585,20 @@ project_module_files: 관련파일
|
|||||||
project_module_documents: 문서
|
project_module_documents: 문서
|
||||||
project_module_repository: 저장소
|
project_module_repository: 저장소
|
||||||
project_module_news: 뉴스
|
project_module_news: 뉴스
|
||||||
project_module_time_tracking: 진행중인 작업
|
project_module_time_tracking: 시간추적
|
||||||
text_file_repository_writable: 파일 저장소 쓰기 가능
|
text_file_repository_writable: 파일 저장소 쓰기 가능
|
||||||
text_default_administrator_account_changed: 기본 관리자 계정이 변경되었습니다.
|
text_default_administrator_account_changed: 기본 관리자 계정이 변경되었습니다.
|
||||||
text_rmagick_available: RMagick available (optional)
|
text_rmagick_available: RMagick 사용가능(옵션)
|
||||||
button_configure: 설정
|
button_configure: 설정
|
||||||
label_plugins: 플러그인
|
label_plugins: 플러그인
|
||||||
label_ldap_authentication: LDAP 인증
|
label_ldap_authentication: LDAP 인증
|
||||||
label_downloads_abbr: D/L
|
label_downloads_abbr: D/L
|
||||||
label_add_another_file: 다른 파일 추가
|
label_add_another_file: 다른 파일 추가
|
||||||
label_this_month: 이번 달
|
label_this_month: 이번 달
|
||||||
text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
|
text_destroy_time_entries_question: 삭제하려는 일감에 %.02f 시간이 보고되어 있습니다. 어떻게 하시겠습니까?
|
||||||
label_last_n_days: 지난 %d 일
|
label_last_n_days: 지난 %d 일
|
||||||
label_all_time: 모든 시간
|
label_all_time: 모든 시간
|
||||||
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
|
error_issue_not_found_in_project: '일감이 없거나 이 프로젝트의 것이 아닙니다.'
|
||||||
label_this_year: 올해
|
label_this_year: 올해
|
||||||
text_assign_time_entries_to_project: 보고된 시간을 프로젝트에 할당하기
|
text_assign_time_entries_to_project: 보고된 시간을 프로젝트에 할당하기
|
||||||
label_date_range: 날짜 범위
|
label_date_range: 날짜 범위
|
||||||
@@ -608,15 +608,15 @@ label_optional_description: 부가적인 설명
|
|||||||
label_last_month: 지난 달
|
label_last_month: 지난 달
|
||||||
text_destroy_time_entries: 보고된 시간을 삭제하기
|
text_destroy_time_entries: 보고된 시간을 삭제하기
|
||||||
text_reassign_time_entries: '이 알림에 보고된 시간을 재할당하기:'
|
text_reassign_time_entries: '이 알림에 보고된 시간을 재할당하기:'
|
||||||
setting_activity_days_default: 프로젝트 활동에 보여질 날수
|
setting_activity_days_default: 프로젝트 작업내역에 보여줄 날수
|
||||||
label_chronological_order: 시간 순으로 정렬
|
label_chronological_order: 시간 순으로 정렬
|
||||||
field_comments_sorting: 히스토리 정렬 설정
|
field_comments_sorting: 히스토리 정렬 설정
|
||||||
label_reverse_chronological_order: 시간 역순으로 정렬
|
label_reverse_chronological_order: 시간 역순으로 정렬
|
||||||
label_preferences: Preferences
|
label_preferences: 설정
|
||||||
setting_display_subprojects_issues: 하위 프로젝트의 일감을 최상위 프로젝트에서 표시
|
setting_display_subprojects_issues: 하위 프로젝트의 일감을 최상위 프로젝트에서 표시
|
||||||
label_overall_activity: 전체 진행 상황
|
label_overall_activity: 전체 작업내역
|
||||||
setting_default_projects_public: 새 프로젝트를 공개로 설정
|
setting_default_projects_public: 새 프로젝트를 공개로 설정
|
||||||
error_scm_annotate: "The entry does not exist or can not be annotated."
|
error_scm_annotate: "항목이 없거나 주석을 달 수 없습니다."
|
||||||
label_planning: 프로젝트계획(Planning)
|
label_planning: 프로젝트계획(Planning)
|
||||||
text_subprojects_destroy_warning: '서브프로젝트(%s)가 자동으로 지워질 것입니다.'
|
text_subprojects_destroy_warning: '서브프로젝트(%s)가 자동으로 지워질 것입니다.'
|
||||||
label_and_its_subprojects: %s와 서브프로젝트들
|
label_and_its_subprojects: %s와 서브프로젝트들
|
||||||
@@ -692,5 +692,10 @@ label_example: 예
|
|||||||
text_repository_usernames_mapping: "저장소 로그에서 발견된 각 사용자에 레드마인 사용자를 업데이트할때 선택합니다.\n레드마인과 저장소의 이름이나 이메일이 같은 사용자가 자동으로 연결됩니다."
|
text_repository_usernames_mapping: "저장소 로그에서 발견된 각 사용자에 레드마인 사용자를 업데이트할때 선택합니다.\n레드마인과 저장소의 이름이나 이메일이 같은 사용자가 자동으로 연결됩니다."
|
||||||
permission_edit_own_messages: 자기 메시지 편집
|
permission_edit_own_messages: 자기 메시지 편집
|
||||||
permission_delete_own_messages: 자기 메시지 삭제
|
permission_delete_own_messages: 자기 메시지 삭제
|
||||||
label_user_activity: "%s의 활동"
|
label_user_activity: "%s의 작업내역"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: %s가 %s 전에 변경
|
||||||
|
text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.'
|
||||||
|
setting_diff_max_lines_displayed: 차이점보기에 표시할 최대 줄수
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+161
-156
@@ -39,15 +39,15 @@ activerecord_error_circular_dependency: Šis ryšys sukurtų ciklinę priklausom
|
|||||||
general_fmt_age: %d m.
|
general_fmt_age: %d m.
|
||||||
general_fmt_age_plural: %d metų(ai)
|
general_fmt_age_plural: %d metų(ai)
|
||||||
general_fmt_date: %%Y-%%m-%%d
|
general_fmt_date: %%Y-%%m-%%d
|
||||||
general_fmt_datetime: %%Y-%%m-%%d %%I:%%M %%p
|
general_fmt_datetime: %%Y-%%m-%%d %%H:%%M
|
||||||
general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
|
general_fmt_datetime_short: %%b %%d, %%H:%%M
|
||||||
general_fmt_time: %%I:%%M %%p
|
general_fmt_time: %%H:%%M
|
||||||
general_text_No: 'Ne'
|
general_text_No: 'Ne'
|
||||||
general_text_Yes: 'Taip'
|
general_text_Yes: 'Taip'
|
||||||
general_text_no: 'ne'
|
general_text_no: 'ne'
|
||||||
general_text_yes: 'taip'
|
general_text_yes: 'taip'
|
||||||
general_lang_name: 'Lithuanian (lietuvių)'
|
general_lang_name: 'Lithuanian (lietuvių)'
|
||||||
general_csv_separator: ','
|
general_csv_separator: ';'
|
||||||
general_csv_decimal_separator: '.'
|
general_csv_decimal_separator: '.'
|
||||||
general_csv_encoding: UTF-8
|
general_csv_encoding: UTF-8
|
||||||
general_pdf_encoding: UTF-8
|
general_pdf_encoding: UTF-8
|
||||||
@@ -69,7 +69,6 @@ notice_successful_delete: Sėkmingas panaikinimas.
|
|||||||
notice_successful_connection: Sėkmingas susijungimas.
|
notice_successful_connection: Sėkmingas susijungimas.
|
||||||
notice_file_not_found: Puslapis, į kurį ketinate įeiti, neegzistuoja arba pašalintas.
|
notice_file_not_found: Puslapis, į kurį ketinate įeiti, neegzistuoja arba pašalintas.
|
||||||
notice_locking_conflict: Duomenys atnaujinti kito vartotojo.
|
notice_locking_conflict: Duomenys atnaujinti kito vartotojo.
|
||||||
notice_scm_error: Duomenys ir/ar pakeitimai saugykloje(repozitorojoje) neegzistuoja.
|
|
||||||
notice_not_authorized: Jūs neturite teisių gauti prieigą prie šio puslapio.
|
notice_not_authorized: Jūs neturite teisių gauti prieigą prie šio puslapio.
|
||||||
notice_email_sent: Laiškas išsiųstas %s
|
notice_email_sent: Laiškas išsiųstas %s
|
||||||
notice_email_error: Laiško siųntimo metu įvyko klaida (%s)
|
notice_email_error: Laiško siųntimo metu įvyko klaida (%s)
|
||||||
@@ -77,9 +76,14 @@ notice_feeds_access_key_reseted: Jūsų RSS raktas buvo atnaujintas.
|
|||||||
notice_failed_to_save_issues: "Nepavyko išsaugoti %d problemos(ų) iš %d pasirinkto: %s."
|
notice_failed_to_save_issues: "Nepavyko išsaugoti %d problemos(ų) iš %d pasirinkto: %s."
|
||||||
notice_no_issue_selected: "Nepasirinkta nė viena problema! Prašom pažymėti problemą, kurią norite redaguoti."
|
notice_no_issue_selected: "Nepasirinkta nė viena problema! Prašom pažymėti problemą, kurią norite redaguoti."
|
||||||
notice_account_pending: "Jūsų paskyra buvo sukūrta ir dabar laukiama administratoriaus patvirtinimo."
|
notice_account_pending: "Jūsų paskyra buvo sukūrta ir dabar laukiama administratoriaus patvirtinimo."
|
||||||
|
notice_default_data_loaded: Numatytoji konfiguracija sėkmingai užkrauta.
|
||||||
|
notice_unable_delete_version: Neimanoma panaikinti versiją
|
||||||
|
|
||||||
|
error_can_t_load_default_data: "Numatytoji konfiguracija negali būti užkrauta: %s"
|
||||||
error_scm_not_found: "Duomenys ir/ar pakeitimai saugykloje(repozitorojoje) neegzistuoja."
|
error_scm_not_found: "Duomenys ir/ar pakeitimai saugykloje(repozitorojoje) neegzistuoja."
|
||||||
error_scm_command_failed: "Įvyko klaida jungiantis prie saugyklos: %s"
|
error_scm_command_failed: "Įvyko klaida jungiantis prie saugyklos: %s"
|
||||||
|
error_scm_annotate: "Įrašas neegzituoja arba negalima jo atvaizduoti."
|
||||||
|
error_issue_not_found_in_project: 'Darbas nerastas arba nesurištas su šiuo projektu'
|
||||||
|
|
||||||
mail_subject_lost_password: Jūsų %s slaptažodis
|
mail_subject_lost_password: Jūsų %s slaptažodis
|
||||||
mail_body_lost_password: 'Norėdami pakeisti slaptažodį, spauskite nuorodą:'
|
mail_body_lost_password: 'Norėdami pakeisti slaptažodį, spauskite nuorodą:'
|
||||||
@@ -89,6 +93,8 @@ mail_body_account_information_external: Jūs galite naudoti Jūsų "%s" paskyrą
|
|||||||
mail_body_account_information: Informacija apie Jūsų paskyrą
|
mail_body_account_information: Informacija apie Jūsų paskyrą
|
||||||
mail_subject_account_activation_request: %s paskyros aktyvavimo prašymas
|
mail_subject_account_activation_request: %s paskyros aktyvavimo prašymas
|
||||||
mail_body_account_activation_request: 'Užsiregistravo naujas vartotojas (%s). Jo paskyra laukia jūsų patvirtinimo:'
|
mail_body_account_activation_request: 'Užsiregistravo naujas vartotojas (%s). Jo paskyra laukia jūsų patvirtinimo:'
|
||||||
|
mail_subject_reminder: "%d darbas(ai) po kelių dienų"
|
||||||
|
mail_body_reminder: "%d darbas(ai), kurie yra jums priskirti, baigiasi po %d dienų(os):"
|
||||||
|
|
||||||
gui_validation_error: 1 klaida
|
gui_validation_error: 1 klaida
|
||||||
gui_validation_error_plural: %d klaidų(os)
|
gui_validation_error_plural: %d klaidų(os)
|
||||||
@@ -126,7 +132,7 @@ field_subject: Tema
|
|||||||
field_due_date: Užbaigimo data
|
field_due_date: Užbaigimo data
|
||||||
field_assigned_to: Paskirtas
|
field_assigned_to: Paskirtas
|
||||||
field_priority: Prioritetas
|
field_priority: Prioritetas
|
||||||
field_fixed_version: Target version
|
field_fixed_version: Tikslinė versija
|
||||||
field_user: Vartotojas
|
field_user: Vartotojas
|
||||||
field_role: Vaidmuo
|
field_role: Vaidmuo
|
||||||
field_homepage: Pagrindinis puslapis
|
field_homepage: Pagrindinis puslapis
|
||||||
@@ -146,14 +152,14 @@ field_password_confirmation: Patvirtinimas
|
|||||||
field_version: Versija
|
field_version: Versija
|
||||||
field_type: Tipas
|
field_type: Tipas
|
||||||
field_host: Pagrindinis kompiuteris
|
field_host: Pagrindinis kompiuteris
|
||||||
field_port: Jungtis
|
field_port: Portas
|
||||||
field_account: Paskyra
|
field_account: Paskyra
|
||||||
field_base_dn: Bazinis skiriamasis vardas
|
field_base_dn: Bazinis skiriamasis vardas
|
||||||
field_attr_login: Registracijos vardo požymis
|
field_attr_login: Registracijos vardo požymis
|
||||||
field_attr_firstname: Vardo priskiria
|
field_attr_firstname: Vardo priskiria
|
||||||
field_attr_lastname: Pavardės priskiria
|
field_attr_lastname: Pavardės priskiria
|
||||||
field_attr_mail: Elektroninio pašto požymis
|
field_attr_mail: Elektroninio pašto požymis
|
||||||
field_onthefly: Vartotojų sukūrimas paskubomis
|
field_onthefly: Automatinis vartotojų registravimas
|
||||||
field_start_date: Pradėti
|
field_start_date: Pradėti
|
||||||
field_done_ratio: %% Atlikta
|
field_done_ratio: %% Atlikta
|
||||||
field_auth_source: Autentiškumo nustatymo būdas
|
field_auth_source: Autentiškumo nustatymo būdas
|
||||||
@@ -176,6 +182,9 @@ field_column_names: Skiltys
|
|||||||
field_time_zone: Laiko juosta
|
field_time_zone: Laiko juosta
|
||||||
field_searchable: Randamas
|
field_searchable: Randamas
|
||||||
field_default_value: Numatytoji vertė
|
field_default_value: Numatytoji vertė
|
||||||
|
field_comments_sorting: rodyti komentarus
|
||||||
|
field_parent_title: Aukštesnio lygio puslapis
|
||||||
|
|
||||||
setting_app_title: Programos pavadinimas
|
setting_app_title: Programos pavadinimas
|
||||||
setting_app_subtitle: Programos paantraštė
|
setting_app_subtitle: Programos paantraštė
|
||||||
setting_welcome_text: Pasveikinimas
|
setting_welcome_text: Pasveikinimas
|
||||||
@@ -183,13 +192,15 @@ setting_default_language: Numatytoji kalba
|
|||||||
setting_login_required: Reikalingas autentiškumo nustatymas
|
setting_login_required: Reikalingas autentiškumo nustatymas
|
||||||
setting_self_registration: Saviregistracija
|
setting_self_registration: Saviregistracija
|
||||||
setting_attachment_max_size: Priedo maks. dydis
|
setting_attachment_max_size: Priedo maks. dydis
|
||||||
setting_issues_export_limit pagal dydį: Darbų eksportavimo riba
|
setting_issues_export_limit: Darbų eksportavimo riba
|
||||||
setting_mail_from: Emisijos elektroninio pašto adresas
|
setting_mail_from: Emisijos elektroninio pašto adresas
|
||||||
setting_bcc_recipients: Akli tikslios kopijos gavėjai (bcc)
|
setting_bcc_recipients: Akli tikslios kopijos gavėjai (bcc)
|
||||||
|
setting_plain_text_mail: tik grinas tekstas (be HTML)
|
||||||
setting_host_name: Pagrindinio kompiuterio vardas
|
setting_host_name: Pagrindinio kompiuterio vardas
|
||||||
setting_text_formatting: Teksto apipavidalinimas
|
setting_text_formatting: Teksto apipavidalinimas
|
||||||
setting_wiki_compression: Wiki istorijos suspaudimas
|
setting_wiki_compression: Wiki istorijos suspaudimas
|
||||||
setting_feeds_limit: Perdavimo turinio riba
|
setting_feeds_limit: Perdavimo turinio riba
|
||||||
|
setting_default_projects_public: Naujas projektas viešas pagal nutylėjimą
|
||||||
setting_autofetch_changesets: Automatinis pakeitimų siuntimas
|
setting_autofetch_changesets: Automatinis pakeitimų siuntimas
|
||||||
setting_sys_api_enabled: Įgalinkite WS sandėlio vadybai
|
setting_sys_api_enabled: Įgalinkite WS sandėlio vadybai
|
||||||
setting_commit_ref_keywords: Nurodymo reikšminiai žodžiai
|
setting_commit_ref_keywords: Nurodymo reikšminiai žodžiai
|
||||||
@@ -200,8 +211,77 @@ setting_time_format: Laiko formatas
|
|||||||
setting_cross_project_issue_relations: Leisti tarprojektinius darbų ryšius
|
setting_cross_project_issue_relations: Leisti tarprojektinius darbų ryšius
|
||||||
setting_issue_list_default_columns: Numatytosios skiltys darbų sąraše
|
setting_issue_list_default_columns: Numatytosios skiltys darbų sąraše
|
||||||
setting_repositories_encodings: Saugyklos koduotė
|
setting_repositories_encodings: Saugyklos koduotė
|
||||||
|
setting_commit_logs_encoding: Commit pranėšimų koduotė
|
||||||
setting_emails_footer: elektroninio pašto puslapinė poraštė
|
setting_emails_footer: elektroninio pašto puslapinė poraštė
|
||||||
setting_protocol: Protokolas
|
setting_protocol: Protokolas
|
||||||
|
setting_per_page_options: Įrašų puslapyje nustatimas
|
||||||
|
setting_user_format: Vartotojo atvaizdavimo formatas
|
||||||
|
setting_activity_days_default: Atvaizduojamos dienos projekto veikloje
|
||||||
|
setting_display_subprojects_issues: Pagal nutylėjimą rodyti subprojektų darbus pagrindiniame projekte
|
||||||
|
setting_enabled_scm: Įgalintas SCM
|
||||||
|
setting_mail_handler_api_enabled: Įgalinti WS įeinantiems laiškams
|
||||||
|
setting_mail_handler_api_key: API raktas
|
||||||
|
setting_sequential_project_identifiers: Generuoti nuoseklus projekto identifikatorius
|
||||||
|
setting_gravatar_enabled: Naudoti Gravatar vartotojo ikonkės
|
||||||
|
setting_diff_max_lines_displayed: Maksimalus rodomas eilučiu skaičius diff\'e
|
||||||
|
|
||||||
|
permission_edit_project: Edit project
|
||||||
|
permission_select_project_modules: Select project modules
|
||||||
|
permission_manage_members: Manage members
|
||||||
|
permission_manage_versions: Manage versions
|
||||||
|
permission_manage_categories: Manage issue categories
|
||||||
|
permission_add_issues: Add issues
|
||||||
|
permission_edit_issues: Edit issues
|
||||||
|
permission_manage_issue_relations: Manage issue relations
|
||||||
|
permission_add_issue_notes: Add notes
|
||||||
|
permission_edit_issue_notes: Edit notes
|
||||||
|
permission_edit_own_issue_notes: Edit own notes
|
||||||
|
permission_move_issues: Move issues
|
||||||
|
permission_delete_issues: Delete issues
|
||||||
|
permission_manage_public_queries: Manage public queries
|
||||||
|
permission_save_queries: Save queries
|
||||||
|
permission_view_gantt: View gantt chart
|
||||||
|
permission_view_calendar: View calender
|
||||||
|
permission_view_issue_watchers: View watchers list
|
||||||
|
permission_add_issue_watchers: Add watchers
|
||||||
|
permission_log_time: Log spent time
|
||||||
|
permission_view_time_entries: View spent time
|
||||||
|
permission_edit_time_entries: Edit time logs
|
||||||
|
permission_edit_own_time_entries: Edit own time logs
|
||||||
|
permission_manage_news: Manage news
|
||||||
|
permission_comment_news: Comment news
|
||||||
|
permission_manage_documents: Manage documents
|
||||||
|
permission_view_documents: View documents
|
||||||
|
permission_manage_files: Manage files
|
||||||
|
permission_view_files: View files
|
||||||
|
permission_manage_wiki: Manage wiki
|
||||||
|
permission_rename_wiki_pages: Rename wiki pages
|
||||||
|
permission_delete_wiki_pages: Delete wiki pages
|
||||||
|
permission_view_wiki_pages: View wiki
|
||||||
|
permission_view_wiki_edits: View wiki history
|
||||||
|
permission_edit_wiki_pages: Edit wiki pages
|
||||||
|
permission_delete_wiki_pages_attachments: Delete attachments
|
||||||
|
permission_protect_wiki_pages: Protect wiki pages
|
||||||
|
permission_manage_repository: Manage repository
|
||||||
|
permission_browse_repository: Browse repository
|
||||||
|
permission_view_changesets: View changesets
|
||||||
|
permission_commit_access: Commit access
|
||||||
|
permission_manage_boards: Manage boards
|
||||||
|
permission_view_messages: View messages
|
||||||
|
permission_add_messages: Post messages
|
||||||
|
permission_edit_messages: Edit messages
|
||||||
|
permission_edit_own_messages: Edit own messages
|
||||||
|
permission_delete_messages: Delete messages
|
||||||
|
permission_delete_own_messages: Delete own messages
|
||||||
|
|
||||||
|
project_module_issue_tracking: Darbu pėdsekys
|
||||||
|
project_module_time_tracking: Laiko pėdsekys
|
||||||
|
project_module_news: Žinios
|
||||||
|
project_module_documents: Dokumentai
|
||||||
|
project_module_files: Rinkmenos
|
||||||
|
project_module_wiki: Wiki
|
||||||
|
project_module_repository: Saugykla
|
||||||
|
project_module_boards: Forumai
|
||||||
|
|
||||||
label_user: Vartotojas
|
label_user: Vartotojas
|
||||||
label_user_plural: Vartotojai
|
label_user_plural: Vartotojai
|
||||||
@@ -216,9 +296,12 @@ label_issue_new: Naujas darbas
|
|||||||
label_issue_plural: Darbai
|
label_issue_plural: Darbai
|
||||||
label_issue_view_all: Peržiūrėti visus darbus
|
label_issue_view_all: Peržiūrėti visus darbus
|
||||||
label_issues_by: Darbai pagal %s
|
label_issues_by: Darbai pagal %s
|
||||||
|
label_issue_added: Darbas pridėtas
|
||||||
|
label_issue_updated: Darbas atnaujintas
|
||||||
label_document: Dokumentas
|
label_document: Dokumentas
|
||||||
label_document_new: Naujas dokumentas
|
label_document_new: Naujas dokumentas
|
||||||
label_document_plural: Dokumentai
|
label_document_plural: Dokumentai
|
||||||
|
label_document_added: Dokumentas pridėtas
|
||||||
label_role: Vaidmuo
|
label_role: Vaidmuo
|
||||||
label_role_plural: Vaidmenys
|
label_role_plural: Vaidmenys
|
||||||
label_role_new: Naujas vaidmuo
|
label_role_new: Naujas vaidmuo
|
||||||
@@ -261,6 +344,8 @@ label_last_updates: Paskutinis atnaujinimas
|
|||||||
label_last_updates_plural: %d paskutinis atnaujinimas
|
label_last_updates_plural: %d paskutinis atnaujinimas
|
||||||
label_registered_on: Užregistruota
|
label_registered_on: Užregistruota
|
||||||
label_activity: Veikla
|
label_activity: Veikla
|
||||||
|
label_overall_activity: Visa veikla
|
||||||
|
label_user_activity: "%so veiksmai"
|
||||||
label_new: Naujas
|
label_new: Naujas
|
||||||
label_logged_as: Prisijungęs kaip
|
label_logged_as: Prisijungęs kaip
|
||||||
label_environment: Aplinka
|
label_environment: Aplinka
|
||||||
@@ -269,6 +354,7 @@ label_auth_source: Autentiškumo nustatymo būdas
|
|||||||
label_auth_source_new: Naujas autentiškumo nustatymo būdas
|
label_auth_source_new: Naujas autentiškumo nustatymo būdas
|
||||||
label_auth_source_plural: Autentiškumo nustatymo būdai
|
label_auth_source_plural: Autentiškumo nustatymo būdai
|
||||||
label_subproject_plural: Subprojektai
|
label_subproject_plural: Subprojektai
|
||||||
|
label_and_its_subprojects: %s projektas ir jo subprojektai
|
||||||
label_min_max_length: Min - Maks ilgis
|
label_min_max_length: Min - Maks ilgis
|
||||||
label_list: Sąrašas
|
label_list: Sąrašas
|
||||||
label_date: Data
|
label_date: Data
|
||||||
@@ -288,6 +374,7 @@ label_attachment: Rinkmena
|
|||||||
label_attachment_new: Nauja rinkmena
|
label_attachment_new: Nauja rinkmena
|
||||||
label_attachment_delete: Pašalinkite rinkmeną
|
label_attachment_delete: Pašalinkite rinkmeną
|
||||||
label_attachment_plural: Rinkmenos
|
label_attachment_plural: Rinkmenos
|
||||||
|
label_file_added: Byla pridėta
|
||||||
label_report: Ataskaita
|
label_report: Ataskaita
|
||||||
label_report_plural: Ataskaitos
|
label_report_plural: Ataskaitos
|
||||||
label_news: Žinia
|
label_news: Žinia
|
||||||
@@ -295,6 +382,7 @@ label_news_new: Pridėkite žinią
|
|||||||
label_news_plural: Žinios
|
label_news_plural: Žinios
|
||||||
label_news_latest: Paskutinės naujienos
|
label_news_latest: Paskutinės naujienos
|
||||||
label_news_view_all: Peržiūrėti visas žinias
|
label_news_view_all: Peržiūrėti visas žinias
|
||||||
|
label_news_added: Naujiena pridėta
|
||||||
label_change_log: Pakeitimų žurnalas
|
label_change_log: Pakeitimų žurnalas
|
||||||
label_settings: Nustatymai
|
label_settings: Nustatymai
|
||||||
label_overview: Apžvalga
|
label_overview: Apžvalga
|
||||||
@@ -345,7 +433,15 @@ label_in_less_than: mažiau negu
|
|||||||
label_in_more_than: daugiau negu
|
label_in_more_than: daugiau negu
|
||||||
label_in: in
|
label_in: in
|
||||||
label_today: šiandien
|
label_today: šiandien
|
||||||
|
label_all_time: visas laikas
|
||||||
|
label_yesterday: vakar
|
||||||
label_this_week: šią savaitę
|
label_this_week: šią savaitę
|
||||||
|
label_last_week: paskutinė savaitė
|
||||||
|
label_last_n_days: paskutinių %d dienų
|
||||||
|
label_this_month: šis menuo
|
||||||
|
label_last_month: paskutinis menuo
|
||||||
|
label_this_year: šiemet
|
||||||
|
label_date_range: Dienų diapazonas
|
||||||
label_less_than_ago: mažiau negu dienomis prieš
|
label_less_than_ago: mažiau negu dienomis prieš
|
||||||
label_more_than_ago: daugiau negu dienomis prieš
|
label_more_than_ago: daugiau negu dienomis prieš
|
||||||
label_ago: dienomis prieš
|
label_ago: dienomis prieš
|
||||||
@@ -353,13 +449,17 @@ label_contains: turi savyje
|
|||||||
label_not_contains: neturi savyje
|
label_not_contains: neturi savyje
|
||||||
label_day_plural: dienos
|
label_day_plural: dienos
|
||||||
label_repository: Saugykla
|
label_repository: Saugykla
|
||||||
|
label_repository_plural: Saugiklos
|
||||||
label_browse: Naršyti
|
label_browse: Naršyti
|
||||||
label_modification: %d pakeitimas
|
label_modification: %d pakeitimas
|
||||||
label_modification_plural: %d pakeitimai
|
label_modification_plural: %d pakeitimai
|
||||||
label_revision: Revizija
|
label_revision: Revizija
|
||||||
label_revision_plural: Revizijos
|
label_revision_plural: Revizijos
|
||||||
|
label_associated_revisions: susijusios revizijos
|
||||||
label_added: pridėtas
|
label_added: pridėtas
|
||||||
label_modified: pakeistas
|
label_modified: pakeistas
|
||||||
|
label_copied: nukopijuotas
|
||||||
|
label_renamed: pervardintas
|
||||||
label_deleted: pašalintas
|
label_deleted: pašalintas
|
||||||
label_latest_revision: Paskutinė revizija
|
label_latest_revision: Paskutinė revizija
|
||||||
label_latest_revision_plural: Paskutinės revizijos
|
label_latest_revision_plural: Paskutinės revizijos
|
||||||
@@ -410,10 +510,11 @@ label_loading: Kraunama...
|
|||||||
label_relation_new: Naujas ryšys
|
label_relation_new: Naujas ryšys
|
||||||
label_relation_delete: Pašalinkite ryšį
|
label_relation_delete: Pašalinkite ryšį
|
||||||
label_relates_to: susietas su
|
label_relates_to: susietas su
|
||||||
label_duplicates: dublikatai
|
label_duplicates: dubliuoja
|
||||||
label_blocks: blokai
|
label_duplicated_by: dubliuojasi
|
||||||
label_blocked_by: blokuotas
|
label_blocks: blokuoja
|
||||||
label_precedes: įvyksta pirma
|
label_blocked_by: blokuojasi
|
||||||
|
label_precedes: ankstesnė
|
||||||
label_follows: seka
|
label_follows: seka
|
||||||
label_end_to_start: užbaigti, kad pradėti
|
label_end_to_start: užbaigti, kad pradėti
|
||||||
label_end_to_end: užbaigti, kad pabaigti
|
label_end_to_end: užbaigti, kad pabaigti
|
||||||
@@ -430,6 +531,7 @@ label_topic_plural: Temos
|
|||||||
label_message_plural: Pranešimai
|
label_message_plural: Pranešimai
|
||||||
label_message_last: Paskutinis pranešimas
|
label_message_last: Paskutinis pranešimas
|
||||||
label_message_new: Naujas pranešimas
|
label_message_new: Naujas pranešimas
|
||||||
|
label_message_posted: Pranešimas pridėtas
|
||||||
label_reply_plural: Atsakymai
|
label_reply_plural: Atsakymai
|
||||||
label_send_information: Nusiųsti paskyros informaciją vartotojui
|
label_send_information: Nusiųsti paskyros informaciją vartotojui
|
||||||
label_year: Metai
|
label_year: Metai
|
||||||
@@ -443,11 +545,12 @@ label_send_test_email: Nusiųsti bandomąjį elektroninį laišką
|
|||||||
label_feeds_access_key_created_on: RSS prieigos raktas sukūrtas prieš %s
|
label_feeds_access_key_created_on: RSS prieigos raktas sukūrtas prieš %s
|
||||||
label_module_plural: Moduliai
|
label_module_plural: Moduliai
|
||||||
label_added_time_by: Pridėjo %s prieš %s
|
label_added_time_by: Pridėjo %s prieš %s
|
||||||
|
label_updated_time_by: Atnaujino %s %s atgal
|
||||||
label_updated_time: Atnaujinta prieš %s
|
label_updated_time: Atnaujinta prieš %s
|
||||||
label_jump_to_a_project: Šuolis į projektą...
|
label_jump_to_a_project: Šuolis į projektą...
|
||||||
label_file_plural: Bylos
|
label_file_plural: Bylos
|
||||||
label_changeset_plural: Changesets
|
label_changeset_plural: Changesets
|
||||||
label_default_columns: Numatytosios skiltys
|
label_default_columns: Numatyti stulpeliai
|
||||||
label_no_change_option: (Jokio pakeitimo)
|
label_no_change_option: (Jokio pakeitimo)
|
||||||
label_bulk_edit_selected_issues: Masinis pasirinktų darbų(issues) redagavimas
|
label_bulk_edit_selected_issues: Masinis pasirinktų darbų(issues) redagavimas
|
||||||
label_theme: Tema
|
label_theme: Tema
|
||||||
@@ -460,6 +563,25 @@ label_user_mail_no_self_notified: "Nenoriu būti informuotas apie pakeitimus, ku
|
|||||||
label_registration_activation_by_email: "paskyros aktyvacija per e-paštą"
|
label_registration_activation_by_email: "paskyros aktyvacija per e-paštą"
|
||||||
label_registration_manual_activation: "rankinė paskyros aktyvacija"
|
label_registration_manual_activation: "rankinė paskyros aktyvacija"
|
||||||
label_registration_automatic_activation: "automatinė paskyros aktyvacija"
|
label_registration_automatic_activation: "automatinė paskyros aktyvacija"
|
||||||
|
label_display_per_page: '%s įrašų puslapyje'
|
||||||
|
label_age: Amžius
|
||||||
|
label_change_properties: Pakeisti nustatymus
|
||||||
|
label_general: Bendri
|
||||||
|
label_more: Daugiau
|
||||||
|
label_scm: SCM
|
||||||
|
label_plugins: Plugins
|
||||||
|
label_ldap_authentication: LDAP autentifikacija
|
||||||
|
label_downloads_abbr: siunt.
|
||||||
|
label_optional_description: Apibūdinimas (laisvai pasirenkamas)
|
||||||
|
label_add_another_file: Pridėti kitą bylą
|
||||||
|
label_preferences: Savybės
|
||||||
|
label_chronological_order: Chronologine tvarka
|
||||||
|
label_reverse_chronological_order: Atbuline chronologine tvarka
|
||||||
|
label_planning: Planavimas
|
||||||
|
label_incoming_emails: Įeinantys laiškai
|
||||||
|
label_generate_key: Generuoti raktą
|
||||||
|
label_issue_watchers: Stebėtojai
|
||||||
|
label_example: Pavizdys
|
||||||
|
|
||||||
button_login: Registruotis
|
button_login: Registruotis
|
||||||
button_submit: Pateikti
|
button_submit: Pateikti
|
||||||
@@ -496,6 +618,9 @@ button_rename: Pervadinti
|
|||||||
button_change_password: Pakeisti slaptažodį
|
button_change_password: Pakeisti slaptažodį
|
||||||
button_copy: Kopijuoti
|
button_copy: Kopijuoti
|
||||||
button_annotate: Rašyti pastabą
|
button_annotate: Rašyti pastabą
|
||||||
|
button_update: Atnaujinti
|
||||||
|
button_configure: Konfigūruoti
|
||||||
|
button_quote: Cituoti
|
||||||
|
|
||||||
status_active: aktyvus
|
status_active: aktyvus
|
||||||
status_registered: užregistruotas
|
status_registered: užregistruotas
|
||||||
@@ -505,6 +630,7 @@ text_select_mail_notifications: Išrinkite veiksmus, apie kuriuos būtų praneš
|
|||||||
text_regexp_info: pvz. ^[A-Z0-9]+$
|
text_regexp_info: pvz. ^[A-Z0-9]+$
|
||||||
text_min_max_length_info: 0 reiškia jokių apribojimų
|
text_min_max_length_info: 0 reiškia jokių apribojimų
|
||||||
text_project_destroy_confirmation: Ar esate įsitikinęs, kad jūs norite pašalinti šį projektą ir visus susijusius duomenis?
|
text_project_destroy_confirmation: Ar esate įsitikinęs, kad jūs norite pašalinti šį projektą ir visus susijusius duomenis?
|
||||||
|
text_subprojects_destroy_warning: 'Šis(ie) subprojektas(ai): %s taip pat bus ištrintas(i).'
|
||||||
text_workflow_edit: Išrinkite vaidmenį ir pėdsekį, kad redaguotumėte darbų eigą
|
text_workflow_edit: Išrinkite vaidmenį ir pėdsekį, kad redaguotumėte darbų eigą
|
||||||
text_are_you_sure: Ar esate įsitikinęs?
|
text_are_you_sure: Ar esate įsitikinęs?
|
||||||
text_journal_changed: pakeistas iš %s į %s
|
text_journal_changed: pakeistas iš %s į %s
|
||||||
@@ -528,6 +654,24 @@ text_issue_category_destroy_question: Kai kurie darbai (%d) yra paskirti šiai k
|
|||||||
text_issue_category_destroy_assignments: Pašalinti kategorijos užduotis
|
text_issue_category_destroy_assignments: Pašalinti kategorijos užduotis
|
||||||
text_issue_category_reassign_to: Iš naujo priskirti darbus šiai kategorijai
|
text_issue_category_reassign_to: Iš naujo priskirti darbus šiai kategorijai
|
||||||
text_user_mail_option: "neišrinktiems projektams, jūs tiktai gausite pranešimus apie įvykius, kuriuos jūs stebite, arba į kuriuos esate įtrauktas (pvz. darbai, jūs esate autorius ar įgaliotinis)."
|
text_user_mail_option: "neišrinktiems projektams, jūs tiktai gausite pranešimus apie įvykius, kuriuos jūs stebite, arba į kuriuos esate įtrauktas (pvz. darbai, jūs esate autorius ar įgaliotinis)."
|
||||||
|
text_no_configuration_data: "Vaidmenys, pėdsekiai, darbų būsenos ir darbų eiga dar nebuvo konfigūruoti.\nGriežtai rekomenduojam užkrauti numatytąją(default)konfiguraciją. Užkrovus, galėsite ją modifikuoti."
|
||||||
|
text_load_default_configuration: Užkrauti numatytąj konfiguraciją
|
||||||
|
text_status_changed_by_changeset: Pakeista %s revizijoi.
|
||||||
|
text_issues_destroy_confirmation: 'Ar jūs tikrai norite panaikinti pažimėtą(us) darbą(us)?'
|
||||||
|
text_select_project_modules: 'Parinkite modulius, kuriuos norite naudoti šiame projekte:'
|
||||||
|
text_default_administrator_account_changed: Administratoriaus numatyta paskyra pakeista
|
||||||
|
text_file_repository_writable: Į rinkmenu saugyklą galima saugoti (RW)
|
||||||
|
text_rmagick_available: RMagick pasiekiamas (pasirinktinai)
|
||||||
|
text_destroy_time_entries_question: Naikinamam darbui paskelbta %.02f valandų. Ką jūs noryte su jomis daryti?
|
||||||
|
text_destroy_time_entries: Ištrinti paskelbtas valandas
|
||||||
|
text_assign_time_entries_to_project: Priskirti valandas prie projekto
|
||||||
|
text_reassign_time_entries: 'Priskirti paskelbtas valandas šiam darbui:'
|
||||||
|
text_user_wrote: '%s parašė:'
|
||||||
|
text_enumeration_destroy_question: '%d objektai priskirti šiai reikšmei.'
|
||||||
|
text_enumeration_category_reassign_to: 'Priskirti juos šiai reikšmei:'
|
||||||
|
text_email_delivery_not_configured: "Email pristatymas nesukonfigūruotas , ir perspėjimai neaktyvus.\nSukonfigūruokyte savo SMTP serverį byloje config/email.yml ir perleiskyte programą kad pritaikyti pakeitymus."
|
||||||
|
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."
|
||||||
|
text_diff_truncated: "... Šis diff'as nukarpitas, todėl kad jis viršijo maksimalu rodoma eilučiu skaičiu."
|
||||||
|
|
||||||
default_role_manager: Vadovas
|
default_role_manager: Vadovas
|
||||||
default_role_developper: Projektuotojas
|
default_role_developper: Projektuotojas
|
||||||
@@ -554,145 +698,6 @@ default_activity_development: Vystymas
|
|||||||
enumeration_issue_priorities: Darbo prioritetai
|
enumeration_issue_priorities: Darbo prioritetai
|
||||||
enumeration_doc_categories: Dokumento kategorijos
|
enumeration_doc_categories: Dokumento kategorijos
|
||||||
enumeration_activities: Veiklos (laiko sekimas)
|
enumeration_activities: Veiklos (laiko sekimas)
|
||||||
label_display_per_page: '%s įrašų puslapyje'
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
setting_per_page_options: Įrašų puslapyje nustatimas
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
notice_default_data_loaded: Numatytoji konfiguracija sėkmingai užkrauta.
|
button_create_and_continue: Create and continue
|
||||||
label_age: Amžius
|
|
||||||
label_general: Bendri
|
|
||||||
button_update: Atnaujinti
|
|
||||||
setting_issues_export_limit: Darbų eksportavimo limitas
|
|
||||||
label_change_properties: Pakeisti nustatymus
|
|
||||||
text_load_default_configuration: Užkrauti numatytąj konfiguraciją
|
|
||||||
text_no_configuration_data: "Vaidmenys, pėdsekiai, darbų būsenos ir darbų eiga dar nebuvo konfigūruoti.\nGriežtai rekomenduojam užkrauti numatytąją(default)konfiguraciją. Užkrovus, galėsite ją modifikuoti."
|
|
||||||
label_repository_plural: Saugiklos
|
|
||||||
error_can_t_load_default_data: "Numatytoji konfiguracija negali būti užkrauta: %s"
|
|
||||||
label_associated_revisions: susijusios revizijos
|
|
||||||
setting_user_format: Vartotojo atvaizdavimo formatas
|
|
||||||
text_status_changed_by_changeset: Pakeista %s revizijoi.
|
|
||||||
label_more: Daugiau
|
|
||||||
text_issues_destroy_confirmation: 'Ar jūs tikrai norite panaikinti pažimėtą(us) darbą(us)?'
|
|
||||||
label_scm: SCM
|
|
||||||
text_select_project_modules: 'Parinkite modulius, kuriuos norite naudoti šiame projekte:'
|
|
||||||
label_issue_added: Darbas pridėtas
|
|
||||||
label_issue_updated: Darbas atnaujintas
|
|
||||||
label_document_added: Dokumentas pridėtas
|
|
||||||
label_message_posted: Pranešimas pridėtas
|
|
||||||
label_file_added: Byla pridėta
|
|
||||||
label_news_added: Naujiena pridėta
|
|
||||||
project_module_boards: Forumai
|
|
||||||
project_module_issue_tracking: Darbu pėdsekys
|
|
||||||
project_module_wiki: Wiki
|
|
||||||
project_module_files: Rinkmenos
|
|
||||||
project_module_documents: Dokumentai
|
|
||||||
project_module_repository: Saugykla
|
|
||||||
project_module_news: Žinios
|
|
||||||
project_module_time_tracking: Laiko pėdsekys
|
|
||||||
text_file_repository_writable: Į rinkmenu saugyklą galima saugoti (RW)
|
|
||||||
text_default_administrator_account_changed: Administratoriaus numatyta paskyra pakeista
|
|
||||||
text_rmagick_available: RMagick pasiekiamas (pasirinktinai)
|
|
||||||
button_configure: Konfiguruoti
|
|
||||||
label_plugins: Plugins
|
|
||||||
label_ldap_authentication: LDAP autentifikacija
|
|
||||||
label_downloads_abbr: siunt.
|
|
||||||
label_this_month: šis menuo
|
|
||||||
label_last_n_days: paskutinių %d dienų
|
|
||||||
label_all_time: visas laikas
|
|
||||||
label_this_year: šiemet
|
|
||||||
label_date_range: Dienų diapazonas
|
|
||||||
label_last_week: paskutinė savaitė
|
|
||||||
label_yesterday: vakar
|
|
||||||
label_last_month: paskutinis menuo
|
|
||||||
label_add_another_file: Pridėti kitą bylą
|
|
||||||
label_optional_description: Apibūdinimas (laisvai pasirenkamas)
|
|
||||||
text_destroy_time_entries_question: Naikinamam darbui paskelbta %.02f valandų. Ką jūs noryte su jomis daryti?
|
|
||||||
error_issue_not_found_in_project: 'Darbas nerastas arba nesurištas su šiuo projektu'
|
|
||||||
text_assign_time_entries_to_project: Priskirti valandas prie projekto
|
|
||||||
text_destroy_time_entries: Ištrinti paskelbtas valandas
|
|
||||||
text_reassign_time_entries: 'Priskirti paskelbtas valandas šiam darbui:'
|
|
||||||
setting_activity_days_default: Atvaizduojamos dienos projekto veikloje
|
|
||||||
label_chronological_order: Chronologine tvarka
|
|
||||||
field_comments_sorting: rodyti komentarus
|
|
||||||
label_reverse_chronological_order: Atbuline chronologine tvarka
|
|
||||||
label_preferences: Savybės
|
|
||||||
setting_display_subprojects_issues: Pagal nutylėjimą rodyti subprojektų darbus pagrindiniame projekte
|
|
||||||
label_overall_activity: Visa veikla
|
|
||||||
setting_default_projects_public: Naujas projektas viešas pagal nutylėjimą
|
|
||||||
error_scm_annotate: "Įrašas neegzituoja arba negalima jo atvaizduoti."
|
|
||||||
label_planning: Planavimas
|
|
||||||
text_subprojects_destroy_warning: 'Šis(ie) subprojektas(ai): %s taip pat bus ištrintas(i).'
|
|
||||||
label_and_its_subprojects: %s projektas ir jo subprojektai
|
|
||||||
|
|
||||||
mail_body_reminder: "%d darbas(ai), kurie yra jums priskirti, baigiasi po %d dienų(os):"
|
|
||||||
mail_subject_reminder: "%d darbas(ai) po kelių dienų"
|
|
||||||
text_user_wrote: '%s parašė:'
|
|
||||||
label_duplicated_by: susiejo
|
|
||||||
setting_enabled_scm: Įgalintas SCM
|
|
||||||
text_enumeration_category_reassign_to: 'Priskirti juos šiai reikšmei:'
|
|
||||||
text_enumeration_destroy_question: '%d objektai priskirti šiai reikšmei.'
|
|
||||||
label_incoming_emails: Įeinantys laiškai
|
|
||||||
label_generate_key: Generuoti raktą
|
|
||||||
setting_mail_handler_api_enabled: Įgalinti WS įeinantiems laiškams
|
|
||||||
setting_mail_handler_api_key: API raktas
|
|
||||||
text_email_delivery_not_configured: "Email pristatymas nesukonfigūruotas , ir perspėjimai neaktyvus.\nSukonfigūruokyte savo SMTP serverį byloje config/email.yml ir perleiskyte programą kad pritaikyti pakeitymus."
|
|
||||||
field_parent_title: Aukštesnio lygio puslapis
|
|
||||||
label_issue_watchers: Stebetojai
|
|
||||||
setting_commit_logs_encoding: Commit pranėšimų koduotė
|
|
||||||
setting_sequential_project_identifiers: Generate sequential project identifiers
|
|
||||||
button_quote: Cituoti
|
|
||||||
notice_unable_delete_version: Neimanoma panaikinti versiją
|
|
||||||
label_renamed: pervardintas
|
|
||||||
label_copied: nukopijuotas
|
|
||||||
setting_plain_text_mail: plain text only (no HTML)
|
|
||||||
permission_view_files: View files
|
|
||||||
permission_edit_issues: Edit issues
|
|
||||||
permission_edit_own_time_entries: Edit own time logs
|
|
||||||
permission_manage_public_queries: Manage public queries
|
|
||||||
permission_add_issues: Add issues
|
|
||||||
permission_log_time: Log spent time
|
|
||||||
permission_view_changesets: View changesets
|
|
||||||
permission_view_time_entries: View spent time
|
|
||||||
permission_manage_versions: Manage versions
|
|
||||||
permission_manage_wiki: Manage wiki
|
|
||||||
permission_manage_categories: Manage issue categories
|
|
||||||
permission_protect_wiki_pages: Protect wiki pages
|
|
||||||
permission_comment_news: Comment news
|
|
||||||
permission_delete_messages: Delete messages
|
|
||||||
permission_select_project_modules: Select project modules
|
|
||||||
permission_manage_documents: Manage documents
|
|
||||||
permission_edit_wiki_pages: Edit wiki pages
|
|
||||||
permission_add_issue_watchers: Add watchers
|
|
||||||
permission_view_gantt: View gantt chart
|
|
||||||
permission_move_issues: Move issues
|
|
||||||
permission_manage_issue_relations: Manage issue relations
|
|
||||||
permission_delete_wiki_pages: Delete wiki pages
|
|
||||||
permission_manage_boards: Manage boards
|
|
||||||
permission_delete_wiki_pages_attachments: Delete attachments
|
|
||||||
permission_view_wiki_edits: View wiki history
|
|
||||||
permission_add_messages: Post messages
|
|
||||||
permission_view_messages: View messages
|
|
||||||
permission_manage_files: Manage files
|
|
||||||
permission_edit_issue_notes: Edit notes
|
|
||||||
permission_manage_news: Manage news
|
|
||||||
permission_view_calendar: View calendrier
|
|
||||||
permission_manage_members: Manage members
|
|
||||||
permission_edit_messages: Edit messages
|
|
||||||
permission_delete_issues: Delete issues
|
|
||||||
permission_view_issue_watchers: View watchers list
|
|
||||||
permission_manage_repository: Manage repository
|
|
||||||
permission_commit_access: Commit access
|
|
||||||
permission_browse_repository: Browse repository
|
|
||||||
permission_view_documents: View documents
|
|
||||||
permission_edit_project: Edit project
|
|
||||||
permission_add_issue_notes: Add notes
|
|
||||||
permission_save_queries: Save queries
|
|
||||||
permission_view_wiki_pages: View wiki
|
|
||||||
permission_rename_wiki_pages: Rename wiki pages
|
|
||||||
permission_edit_time_entries: Edit time logs
|
|
||||||
permission_edit_own_issue_notes: Edit own notes
|
|
||||||
setting_gravatar_enabled: Use Gravatar user icons
|
|
||||||
label_example: Example
|
|
||||||
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
|
|
||||||
permission_edit_own_messages: Edit own messages
|
|
||||||
permission_delete_own_messages: Delete own messages
|
|
||||||
label_user_activity: "%s's activity"
|
|
||||||
label_updated_time_by: Updated by %s %s ago
|
|
||||||
|
|||||||
@@ -696,3 +696,8 @@ permission_edit_own_messages: Edit own messages
|
|||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: Delete own messages
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "%s's activity"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
@@ -695,3 +695,8 @@ permission_edit_own_messages: Edit own messages
|
|||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: Delete own messages
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "%s's activity"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+7
-2
@@ -632,7 +632,7 @@ setting_autofetch_changesets: Automatyczne pobieranie zmian
|
|||||||
setting_autologin: Auto logowanie
|
setting_autologin: Auto logowanie
|
||||||
setting_bcc_recipients: Odbiorcy kopii tajnej (kt/bcc)
|
setting_bcc_recipients: Odbiorcy kopii tajnej (kt/bcc)
|
||||||
setting_commit_fix_keywords: Słowa zmieniające status
|
setting_commit_fix_keywords: Słowa zmieniające status
|
||||||
setting_commit_logs_encoding: Zatwierdź kodowanie wiadomości
|
setting_commit_logs_encoding: Kodowanie komentarzy zatwierdzeń
|
||||||
setting_commit_ref_keywords: Słowa tworzące powiązania
|
setting_commit_ref_keywords: Słowa tworzące powiązania
|
||||||
setting_cross_project_issue_relations: Zezwól na powiązania zagadnień między projektami
|
setting_cross_project_issue_relations: Zezwól na powiązania zagadnień między projektami
|
||||||
setting_date_format: Format daty
|
setting_date_format: Format daty
|
||||||
@@ -712,4 +712,9 @@ text_wiki_destroy_confirmation: Jesteś pewien, że chcesz usunąć to wiki i ca
|
|||||||
text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu
|
text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu
|
||||||
|
|
||||||
label_user_activity: "Aktywność: %s"
|
label_user_activity: "Aktywność: %s"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Uaktualnione przez %s %s temu
|
||||||
|
text_diff_truncated: '... Ten plik różnic został przycięty ponieważ jest zbyt długi.'
|
||||||
|
setting_diff_max_lines_displayed: Maksymalna liczba linii różnicy do pokazania
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+7
-2
@@ -47,8 +47,8 @@ general_text_Yes: 'Sim'
|
|||||||
general_text_no: 'não'
|
general_text_no: 'não'
|
||||||
general_text_yes: 'sim'
|
general_text_yes: 'sim'
|
||||||
general_lang_name: 'Português(Brasil)'
|
general_lang_name: 'Português(Brasil)'
|
||||||
general_csv_separator: ','
|
general_csv_separator: ';'
|
||||||
general_csv_decimal_separator: '.'
|
general_csv_decimal_separator: ','
|
||||||
general_csv_encoding: ISO-8859-1
|
general_csv_encoding: ISO-8859-1
|
||||||
general_pdf_encoding: ISO-8859-1
|
general_pdf_encoding: ISO-8859-1
|
||||||
general_day_names: Segunda,Terça,Quarta,Quinta,Sexta,Sábado,Domingo
|
general_day_names: Segunda,Terça,Quarta,Quinta,Sexta,Sábado,Domingo
|
||||||
@@ -695,3 +695,8 @@ permission_edit_own_messages: Editar próprias mensagens
|
|||||||
permission_delete_own_messages: Excluir próprias mensagens
|
permission_delete_own_messages: Excluir próprias mensagens
|
||||||
label_user_activity: "Atividade de %s"
|
label_user_activity: "Atividade de %s"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s 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: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
+67
-62
@@ -104,8 +104,8 @@ field_name: Nome
|
|||||||
field_description: Descrição
|
field_description: Descrição
|
||||||
field_summary: Sumário
|
field_summary: Sumário
|
||||||
field_is_required: Obrigatório
|
field_is_required: Obrigatório
|
||||||
field_firstname: Nome próprio
|
field_firstname: Nome
|
||||||
field_lastname: Último nome
|
field_lastname: Apelido
|
||||||
field_mail: E-mail
|
field_mail: E-mail
|
||||||
field_filename: Ficheiro
|
field_filename: Ficheiro
|
||||||
field_filesize: Tamanho
|
field_filesize: Tamanho
|
||||||
@@ -141,7 +141,7 @@ field_is_public: Público
|
|||||||
field_parent: Sub-projecto de
|
field_parent: Sub-projecto de
|
||||||
field_is_in_chlog: Tarefas mostradas no changelog
|
field_is_in_chlog: Tarefas mostradas no changelog
|
||||||
field_is_in_roadmap: Tarefas mostradas no roadmap
|
field_is_in_roadmap: Tarefas mostradas no roadmap
|
||||||
field_login: Login
|
field_login: Nome de utilizador
|
||||||
field_mail_notification: Notificações por e-mail
|
field_mail_notification: Notificações por e-mail
|
||||||
field_admin: Administrador
|
field_admin: Administrador
|
||||||
field_last_login_on: Última visita
|
field_last_login_on: Última visita
|
||||||
@@ -224,7 +224,7 @@ setting_mail_handler_api_key: Chave da API
|
|||||||
setting_sequential_project_identifiers: Gerar identificadores de projecto sequênciais
|
setting_sequential_project_identifiers: Gerar identificadores de projecto sequênciais
|
||||||
|
|
||||||
project_module_issue_tracking: Tarefas
|
project_module_issue_tracking: Tarefas
|
||||||
project_module_time_tracking: Contagem de tempo
|
project_module_time_tracking: Registo de tempo
|
||||||
project_module_news: Notícias
|
project_module_news: Notícias
|
||||||
project_module_documents: Documentos
|
project_module_documents: Documentos
|
||||||
project_module_files: Ficheiros
|
project_module_files: Ficheiros
|
||||||
@@ -440,7 +440,7 @@ label_issue_tracking: Tarefas
|
|||||||
label_spent_time: Tempo gasto
|
label_spent_time: Tempo gasto
|
||||||
label_f_hour: %.2f hora
|
label_f_hour: %.2f hora
|
||||||
label_f_hour_plural: %.2f horas
|
label_f_hour_plural: %.2f horas
|
||||||
label_time_tracking: Contagem de tempo
|
label_time_tracking: Registo de tempo
|
||||||
label_change_plural: Mudanças
|
label_change_plural: Mudanças
|
||||||
label_statistics: Estatísticas
|
label_statistics: Estatísticas
|
||||||
label_commits_per_month: Commits por mês
|
label_commits_per_month: Commits por mês
|
||||||
@@ -551,7 +551,7 @@ button_move: Mover
|
|||||||
button_back: Voltar
|
button_back: Voltar
|
||||||
button_cancel: Cancelar
|
button_cancel: Cancelar
|
||||||
button_activate: Activar
|
button_activate: Activar
|
||||||
button_sort: Ordernar
|
button_sort: Ordenar
|
||||||
button_log_time: Tempo de trabalho
|
button_log_time: Tempo de trabalho
|
||||||
button_rollback: Voltar para esta versão
|
button_rollback: Voltar para esta versão
|
||||||
button_watch: Observar
|
button_watch: Observar
|
||||||
@@ -588,7 +588,7 @@ text_tip_task_begin_end_day: tarefa a começar e acabar neste dia
|
|||||||
text_project_identifier_info: 'Apenas são permitidos letras minúsculas (a-z), números e hífens.<br />Uma vez guardado, o identificador não poderá ser alterado.'
|
text_project_identifier_info: 'Apenas são permitidos letras minúsculas (a-z), números e hífens.<br />Uma vez guardado, o identificador não poderá ser alterado.'
|
||||||
text_caracters_maximum: máximo %d caracteres.
|
text_caracters_maximum: máximo %d caracteres.
|
||||||
text_caracters_minimum: Deve ter pelo menos %d caracteres.
|
text_caracters_minimum: Deve ter pelo menos %d caracteres.
|
||||||
text_length_between: Deve ter entre %d and %d caracteres.
|
text_length_between: Deve ter entre %d e %d caracteres.
|
||||||
text_tracker_no_workflow: Sem workflow definido para este tipo de tarefa.
|
text_tracker_no_workflow: Sem workflow definido para este tipo de tarefa.
|
||||||
text_unallowed_characters: Caracteres não permitidos
|
text_unallowed_characters: Caracteres não permitidos
|
||||||
text_comma_separated: Permitidos múltiplos valores (separados por vírgula).
|
text_comma_separated: Permitidos múltiplos valores (separados por vírgula).
|
||||||
@@ -641,58 +641,63 @@ default_activity_development: Desenvolvimento
|
|||||||
|
|
||||||
enumeration_issue_priorities: Prioridade de tarefas
|
enumeration_issue_priorities: Prioridade de tarefas
|
||||||
enumeration_doc_categories: Categorias de documentos
|
enumeration_doc_categories: Categorias de documentos
|
||||||
enumeration_activities: Actividades (Contagem de tempo)
|
enumeration_activities: Actividades (Registo de tempo)
|
||||||
setting_plain_text_mail: plain text only (no HTML)
|
setting_plain_text_mail: Apenas texto simples (sem HTML)
|
||||||
permission_view_files: View files
|
permission_view_files: Ver ficheiros
|
||||||
permission_edit_issues: Edit issues
|
permission_edit_issues: Editar tarefas
|
||||||
permission_edit_own_time_entries: Edit own time logs
|
permission_edit_own_time_entries: Editar horas pessoais
|
||||||
permission_manage_public_queries: Manage public queries
|
permission_manage_public_queries: Gerir queries públicas
|
||||||
permission_add_issues: Add issues
|
permission_add_issues: Adicionar tarefas
|
||||||
permission_log_time: Log spent time
|
permission_log_time: Registar tempo gasto
|
||||||
permission_view_changesets: View changesets
|
permission_view_changesets: Ver changesets
|
||||||
permission_view_time_entries: View spent time
|
permission_view_time_entries: Ver tempo gasto
|
||||||
permission_manage_versions: Manage versions
|
permission_manage_versions: Gerir versões
|
||||||
permission_manage_wiki: Manage wiki
|
permission_manage_wiki: Gerir wiki
|
||||||
permission_manage_categories: Manage issue categories
|
permission_manage_categories: Gerir categorias de tarefas
|
||||||
permission_protect_wiki_pages: Protect wiki pages
|
permission_protect_wiki_pages: Proteger páginas de wiki
|
||||||
permission_comment_news: Comment news
|
permission_comment_news: Comentar notícias
|
||||||
permission_delete_messages: Delete messages
|
permission_delete_messages: Apagar mensagens
|
||||||
permission_select_project_modules: Select project modules
|
permission_select_project_modules: Seleccionar módulos do projecto
|
||||||
permission_manage_documents: Manage documents
|
permission_manage_documents: Gerir documentos
|
||||||
permission_edit_wiki_pages: Edit wiki pages
|
permission_edit_wiki_pages: Editar páginas de wiki
|
||||||
permission_add_issue_watchers: Add watchers
|
permission_add_issue_watchers: Adicionar observadores
|
||||||
permission_view_gantt: View gantt chart
|
permission_view_gantt: ver diagrama de Gantt
|
||||||
permission_move_issues: Move issues
|
permission_move_issues: Mover tarefas
|
||||||
permission_manage_issue_relations: Manage issue relations
|
permission_manage_issue_relations: Gerir relações de tarefas
|
||||||
permission_delete_wiki_pages: Delete wiki pages
|
permission_delete_wiki_pages: Apagar páginas de wiki
|
||||||
permission_manage_boards: Manage boards
|
permission_manage_boards: Gerir forums
|
||||||
permission_delete_wiki_pages_attachments: Delete attachments
|
permission_delete_wiki_pages_attachments: Apagar anexos
|
||||||
permission_view_wiki_edits: View wiki history
|
permission_view_wiki_edits: Ver histórico da wiki
|
||||||
permission_add_messages: Post messages
|
permission_add_messages: Submeter mensagens
|
||||||
permission_view_messages: View messages
|
permission_view_messages: Ver mensagens
|
||||||
permission_manage_files: Manage files
|
permission_manage_files: Gerir ficheiros
|
||||||
permission_edit_issue_notes: Edit notes
|
permission_edit_issue_notes: Editar notas de tarefas
|
||||||
permission_manage_news: Manage news
|
permission_manage_news: Gerir notícias
|
||||||
permission_view_calendar: View calendrier
|
permission_view_calendar: Ver calendário
|
||||||
permission_manage_members: Manage members
|
permission_manage_members: Gerir membros
|
||||||
permission_edit_messages: Edit messages
|
permission_edit_messages: Editar mensagens
|
||||||
permission_delete_issues: Delete issues
|
permission_delete_issues: Apagar tarefas
|
||||||
permission_view_issue_watchers: View watchers list
|
permission_view_issue_watchers: Ver lista de observadores
|
||||||
permission_manage_repository: Manage repository
|
permission_manage_repository: Gerir repositório
|
||||||
permission_commit_access: Commit access
|
permission_commit_access: Acesso a submissão
|
||||||
permission_browse_repository: Browse repository
|
permission_browse_repository: Navegar em repositório
|
||||||
permission_view_documents: View documents
|
permission_view_documents: Ver documentos
|
||||||
permission_edit_project: Edit project
|
permission_edit_project: Editar projecto
|
||||||
permission_add_issue_notes: Add notes
|
permission_add_issue_notes: Adicionar notas a tarefas
|
||||||
permission_save_queries: Save queries
|
permission_save_queries: Guardar queries
|
||||||
permission_view_wiki_pages: View wiki
|
permission_view_wiki_pages: Ver wiki
|
||||||
permission_rename_wiki_pages: Rename wiki pages
|
permission_rename_wiki_pages: Renomear páginas de wiki
|
||||||
permission_edit_time_entries: Edit time logs
|
permission_edit_time_entries: Editar entradas de tempo
|
||||||
permission_edit_own_issue_notes: Edit own notes
|
permission_edit_own_issue_notes: Editar as prórpias notas
|
||||||
setting_gravatar_enabled: Use Gravatar user icons
|
setting_gravatar_enabled: Utilizar icons Gravatar
|
||||||
label_example: Example
|
label_example: Exemplo
|
||||||
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."
|
text_repository_usernames_mapping: "Seleccionar ou actualizar o utilizador de Redmine mapeado a cada nome de utilizador encontrado no repositório.\nUtilizadores com o mesmo nome de utilizador ou email no Redmine e no repositório são mapeados automaticamente."
|
||||||
permission_edit_own_messages: Edit own messages
|
permission_edit_own_messages: Editar as próprias mensagens
|
||||||
permission_delete_own_messages: Delete own messages
|
permission_delete_own_messages: Apagar as próprias mensagens
|
||||||
label_user_activity: "%s's activity"
|
label_user_activity: "Actividade de %s"
|
||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Actualizado por %s há %s
|
||||||
|
text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser mostrado.'
|
||||||
|
setting_diff_max_lines_displayed: Número máximo de linhas de diff mostradas
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
button_create_and_continue: Create and continue
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user