redmine-0.7.3.diff
| app/helpers/issues_helper.rb (revision 56) | ||
|---|---|---|
| 19 | 19 | |
| 20 | 20 |
module IssuesHelper |
| 21 | 21 |
include ApplicationHelper |
| 22 |
|
|
| 23 |
def issue_ancestors(issue=@issue) |
|
| 24 |
ancestors = "" |
|
| 25 |
return "" if issue.parent == nil |
|
| 26 |
ancestors += "issue-#{issue.parent.id}-child " + issue_ancestors(issue.parent)
|
|
| 27 |
end |
|
| 22 | 28 | |
| 23 | 29 |
def render_issue_tooltip(issue) |
| 24 | 30 |
@cached_label_start_date ||= l(:field_start_date) |
| ... | ... | |
| 69 | 75 |
when 'fixed_version_id' |
| 70 | 76 |
v = Version.find_by_id(detail.value) and value = v.name if detail.value |
| 71 | 77 |
v = Version.find_by_id(detail.old_value) and old_value = v.name if detail.old_value |
| 78 |
when 'potential_parent' |
|
| 79 |
value = detail.value == '0' ? l(:general_text_No) : l(:general_text_Yes) if detail.value |
|
| 80 |
old_value = detail.old_value == '0' ? l(:general_text_No) : l(:general_text_Yes) if detail.old_value |
|
| 72 | 81 |
end |
| 73 | 82 |
when 'cf' |
| 74 | 83 |
custom_field = CustomField.find_by_id(detail.prop_key) |
| ... | ... | |
| 174 | 183 |
export.rewind |
| 175 | 184 |
export |
| 176 | 185 |
end |
| 186 |
|
|
| 187 |
def set_parent(issue, parent_id) |
|
| 188 |
puts 'parent_id', parent_id |
|
| 189 |
if (issue && parent_id.to_s.size > 0) |
|
| 190 |
issue.relations_from.each do |relation| |
|
| 191 |
if relation.relation_type == IssueRelation::TYPE_PARENTS |
|
| 192 |
relation.destroy |
|
| 193 |
end |
|
| 194 |
end |
|
| 195 |
issue.reload |
|
| 196 |
IssueRelation.new do |relation| |
|
| 197 |
relation.issue_from = issue |
|
| 198 |
relation.issue_to = Issue.find(parent_id) |
|
| 199 |
relation.relation_type = IssueRelation::TYPE_PARENTS |
|
| 200 |
relation.save |
|
| 201 |
end |
|
| 202 |
end |
|
| 203 |
end |
|
| 204 |
|
|
| 177 | 205 |
end |
| app/helpers/queries_helper.rb (revision 56) | ||
|---|---|---|
| 40 | 40 |
else |
| 41 | 41 |
case column.name |
| 42 | 42 |
when :subject |
| 43 |
h((@project.nil? || @project != issue.project) ? "#{issue.project.name} - " : '') +
|
|
| 44 |
link_to(h(value), :controller => 'issues', :action => 'show', :id => issue) |
|
| 43 |
subject_in_tree(issue, value) |
|
| 45 | 44 |
when :done_ratio |
| 46 | 45 |
progress_bar(value, :width => '80px') |
| 47 | 46 |
else |
| ... | ... | |
| 50 | 49 |
end |
| 51 | 50 |
end |
| 52 | 51 |
end |
| 52 |
|
|
| 53 |
#private? |
|
| 54 |
|
|
| 55 |
def subject_in_tree(issue, value) |
|
| 56 |
image = "" |
|
| 57 |
unless issue.edge? #don't show + or - icons for leaf issues |
|
| 58 |
#o controle das tarefas a ser mostradas não está sendo feito por _list? verificar |
|
| 59 |
image = @show_all_issues || |
|
| 60 |
@show_children ? |
|
| 61 |
link_to_remote(image_tag("contract.png", :class=>'contract-icon'), {:url => {:controller => 'issues', :action => "hide_children", :id => issue}}, :class=>'contract-link') :
|
|
| 62 |
link_to_remote(image_tag("expand.png", :class=>'expand-icon'), {:url => {:controller => 'issues', :action => "show_children", :id => issue}}, :class=>'expand-link')
|
|
| 63 |
end |
|
| 64 |
content_tag('span', image + content_tag('div', subject_text(issue, value), :class=>'issue-subject'), :class=>"issue-subject-level-#{issue.hierarchical_level}")
|
|
| 65 |
end |
|
| 66 |
|
|
| 67 |
def subject_text(issue, value) |
|
| 68 |
if User.current.allowed_to?(:edit_issues, issue.project) |
|
| 69 |
subject_id = "issue-" +"#{issue.id}" + "-subject"
|
|
| 70 |
subject_text = "<span id=#{subject_id}>#{issue.subject}</span>\
|
|
| 71 |
<script type=\"text/javascript\">\ |
|
| 72 |
new Ajax.InPlaceEditor('#{subject_id}', '" +
|
|
| 73 |
url_for({:controller => 'issues', :action => 'update_subject', :id => issue, :back_to => @back}) + "', \
|
|
| 74 |
{okButton:false, callback: function(form, value) { return 'subject=' + value }});</script>"
|
|
| 75 |
else |
|
| 76 |
subject_text = link_to(h(value), :controller => 'issues', :action => 'show', :id => issue) |
|
| 77 |
end |
|
| 78 |
h((@project.nil? || @project != issue.project) ? "#{issue.project.name} - " : '') + subject_text
|
|
| 79 |
end |
|
| 80 |
|
|
| 53 | 81 |
end |
| app/models/issue.rb (revision 56) | ||
|---|---|---|
| 130 | 130 |
@current_journal.details << JournalDetail.new(:property => 'attr', |
| 131 | 131 |
:prop_key => c, |
| 132 | 132 |
:old_value => @issue_before_change.send(c), |
| 133 |
:value => send(c)) unless send(c)==@issue_before_change.send(c) |
|
| 133 |
:value => send(c)) unless send(c)==@issue_before_change.send(c) || (!self.edge? && %w(status_id priority_id fixed_version_id start_date due_date done_ratio estimated_hours).include?(c))
|
|
| 134 | 134 |
} |
| 135 | 135 |
# custom fields changes |
| 136 | 136 |
custom_values.each {|c|
|
| ... | ... | |
| 230 | 230 |
relations.select {|r| r.relation_type == IssueRelation::TYPE_DUPLICATES}.collect {|r| r.other_issue(self)}
|
| 231 | 231 |
end |
| 232 | 232 |
|
| 233 |
def duration1 |
|
| 234 |
(start_date && due_date) ? (due_date - start_date + 1) : 0 |
|
| 235 |
end |
|
| 236 |
|
|
| 233 | 237 |
def duration |
| 234 | 238 |
(start_date && due_date) ? due_date - start_date : 0 |
| 235 | 239 |
end |
| ... | ... | |
| 244 | 248 |
end |
| 245 | 249 |
end |
| 246 | 250 |
|
| 251 |
#o cálculo original de sunday_walker não considera apenas as taxas de realização das tarefas filhas. Ele baseia-se também |
|
| 252 |
#na duração das tarefas. Entretanto, quando as tarefas-filhas não têm data de término definida, elas não são consideradas no |
|
| 253 |
#cálculo da taxa de realização da tarefa-mãe |
|
| 254 |
def done_ratio |
|
| 255 |
if children? |
|
| 256 |
#aparentemente Érica não é favorável a incluir as informações da tarefa-mãe no cálculo, como fez sunday_walker |
|
| 257 |
#@total_planned_days ||= self.duration1 # previsão de duração da tarefa-mãe |
|
| 258 |
#@total_actual_days ||= read_attribute(:done_ratio) ? (@total_planned_days * read_attribute(:done_ratio) / 100).floor : 0 # dias trabalhados na tarefa-mãe (calculados de acordo com a porcentagem realizada da tarefa) |
|
| 259 |
@total_planned_days ||= 0 |
|
| 260 |
@total_actual_days ||= 0 |
|
| 261 |
children.each do |child| # de cada tarefa filha obtenha o total de dias e os dias trabalhados |
|
| 262 |
planned_days = child.duration1 |
|
| 263 |
actual_days = child.done_ratio ? (planned_days * child.done_ratio / 100).floor : 0 |
|
| 264 |
@total_planned_days += planned_days |
|
| 265 |
@total_actual_days += actual_days |
|
| 266 |
end |
|
| 267 |
@total_done_ratio = @total_planned_days != 0 ? (@total_actual_days * 100 / @total_planned_days).floor : 0 |
|
| 268 |
else |
|
| 269 |
read_attribute(:done_ratio) |
|
| 270 |
end |
|
| 271 |
end |
|
| 272 |
|
|
| 273 |
def estimated_hours |
|
| 274 |
if children? |
|
| 275 |
is_set = false |
|
| 276 |
children.each do |child| |
|
| 277 |
if child.estimated_hours |
|
| 278 |
if is_set |
|
| 279 |
@est_hours += child.estimated_hours |
|
| 280 |
else |
|
| 281 |
@est_hours = child.estimated_hours |
|
| 282 |
is_set = true |
|
| 283 |
end |
|
| 284 |
end |
|
| 285 |
end |
|
| 286 |
@est_hours |
|
| 287 |
else |
|
| 288 |
read_attribute(:estimated_hours) |
|
| 289 |
end |
|
| 290 |
end |
|
| 291 |
|
|
| 292 |
def start_date |
|
| 293 |
calculate 'start_date' |
|
| 294 |
end |
|
| 295 |
|
|
| 296 |
def due_date |
|
| 297 |
calculate 'due_date' |
|
| 298 |
end |
|
| 299 |
|
|
| 300 |
def priority |
|
| 301 |
if children? |
|
| 302 |
children.each do |child| |
|
| 303 |
@pri = child.priority |
|
| 304 |
if @pri.id < child.priority.id |
|
| 305 |
@pri = child.priority |
|
| 306 |
end |
|
| 307 |
end |
|
| 308 |
@pri |
|
| 309 |
else |
|
| 310 |
Enumeration.find(self[:priority_id]) if self[:priority_id] && self[:priority_id] != 0 |
|
| 311 |
end |
|
| 312 |
end |
|
| 313 |
|
|
| 314 |
def fixed_version |
|
| 315 |
if children? |
|
| 316 |
children.each do |child| |
|
| 317 |
@fixed_version = child.fixed_version |
|
| 318 |
if child.fixed_version && (!self[:fixed_version_id] || Version.find(self[:fixed_version_id]).id < child.fixed_version.id) |
|
| 319 |
@fixed_version = child.fixed_version |
|
| 320 |
end |
|
| 321 |
end |
|
| 322 |
@fixed_version |
|
| 323 |
else |
|
| 324 |
Version.find(self[:fixed_version_id]) if self[:fixed_version_id] && self[:fixed_version_id] != 0 |
|
| 325 |
end |
|
| 326 |
end |
|
| 327 |
|
|
| 328 |
def status |
|
| 329 |
if children? |
|
| 330 |
children.each do |child| |
|
| 331 |
@sta = child.status |
|
| 332 |
if @sta.id > child.status.id |
|
| 333 |
@sta = child.status |
|
| 334 |
end |
|
| 335 |
end |
|
| 336 |
@sta |
|
| 337 |
else |
|
| 338 |
IssueStatus.find(self[:status_id]) if self[:status_id] && self[:status_id] != 0 |
|
| 339 |
end |
|
| 340 |
end |
|
| 341 |
|
|
| 342 |
def calculate(field) |
|
| 343 |
if children? |
|
| 344 |
@value = eval "children.first.#{field}"
|
|
| 345 |
children.each do |child| |
|
| 346 |
case field |
|
| 347 |
when 'start_date' |
|
| 348 |
if child.start_date && (!@value || @value > child.start_date) |
|
| 349 |
@value = child.start_date |
|
| 350 |
end |
|
| 351 |
when 'due_date' |
|
| 352 |
if child.due_date && (!@value || @value < child.due_date) |
|
| 353 |
@value = child.due_date |
|
| 354 |
end |
|
| 355 |
end |
|
| 356 |
end |
|
| 357 |
@value |
|
| 358 |
else |
|
| 359 |
read_attribute(eval(":#{field}"))
|
|
| 360 |
end |
|
| 361 |
end |
|
| 362 | ||
| 363 |
def children? |
|
| 364 |
children != [] |
|
| 365 |
end |
|
| 366 |
|
|
| 367 |
def children |
|
| 368 |
children = [] |
|
| 369 |
relations_to.each do |relation| |
|
| 370 |
if relation.relation_type == IssueRelation::TYPE_PARENTS |
|
| 371 |
children << relation.other_issue(self) |
|
| 372 |
end |
|
| 373 |
end |
|
| 374 |
children |
|
| 375 |
end |
|
| 376 |
|
|
| 377 |
def parent |
|
| 378 |
relations_from.each do |relation| |
|
| 379 |
if relation.relation_type == IssueRelation::TYPE_PARENTS |
|
| 380 |
return parent = relation.other_issue(self) |
|
| 381 |
end |
|
| 382 |
end |
|
| 383 |
return nil |
|
| 384 |
end |
|
| 385 |
|
|
| 386 |
def parent_issue=(parent_id) |
|
| 387 |
#workaround that allows the use of a select box for choosing the parent issue in the create issue form |
|
| 388 |
#is it possible to have a select box in a form without a corresponding method in the model? |
|
| 389 |
end |
|
| 390 |
|
|
| 391 |
def parent_issue |
|
| 392 |
#workaround that allows the use of a select box for choosing the parent issue in the create issue form |
|
| 393 |
#is it possible to have a select box in a form without a corresponding method in the model? |
|
| 394 |
end |
|
| 395 |
|
|
| 396 |
def parent? |
|
| 397 |
parent != nil |
|
| 398 |
end |
|
| 399 |
|
|
| 400 |
def root? |
|
| 401 |
!parent? |
|
| 402 |
end |
|
| 403 |
|
|
| 404 |
def ancestors(issue=self) |
|
| 405 |
a = [] |
|
| 406 |
return a if ! issue.parent? |
|
| 407 |
(a << issue.parent) | ancestors(issue.parent) |
|
| 408 |
end |
|
| 409 |
|
|
| 410 |
#Nível hierárquico de uma tarefa (tarefas de 1º nível têm nível hierárquico 1) |
|
| 411 |
def hierarchical_level(issue=self) |
|
| 412 |
issue.parent? ? (1 + hierarchical_level(issue.parent)) : 1 |
|
| 413 |
end |
|
| 414 |
|
|
| 415 |
#TODO validar código |
|
| 416 |
def edge? |
|
| 417 |
relations_to.each do |relation| |
|
| 418 |
if relation.relation_type == IssueRelation::TYPE_PARENTS |
|
| 419 |
return false |
|
| 420 |
end |
|
| 421 |
end |
|
| 422 |
return true |
|
| 423 |
end |
|
| 424 |
|
|
| 247 | 425 |
def to_s |
| 248 | 426 |
"#{tracker} ##{id}: #{subject}"
|
| 249 | 427 |
end |
| app/models/issue_relation.rb (revision 56) | ||
|---|---|---|
| 23 | 23 |
TYPE_DUPLICATES = "duplicates" |
| 24 | 24 |
TYPE_BLOCKS = "blocks" |
| 25 | 25 |
TYPE_PRECEDES = "precedes" |
| 26 |
TYPE_PARENTS = "parents" |
|
| 26 | 27 |
|
| 27 | 28 |
TYPES = { TYPE_RELATES => { :name => :label_relates_to, :sym_name => :label_relates_to, :order => 1 },
|
| 28 | 29 |
TYPE_DUPLICATES => { :name => :label_duplicates, :sym_name => :label_duplicates, :order => 2 },
|
| ... | ... | |
| 28 | 29 |
TYPE_DUPLICATES => { :name => :label_duplicates, :sym_name => :label_duplicates, :order => 2 },
|
| 29 | 30 |
TYPE_BLOCKS => { :name => :label_blocks, :sym_name => :label_blocked_by, :order => 3 },
|
| 30 | 31 |
TYPE_PRECEDES => { :name => :label_precedes, :sym_name => :label_follows, :order => 4 },
|
| 32 |
TYPE_PARENTS => { :name => :label_parents, :sym_name => :label_children, :order => 5 },
|
|
| 31 | 33 |
}.freeze |
| 32 | 34 |
|
| 33 | 35 |
validates_presence_of :issue_from, :issue_to, :relation_type |
| ... | ... | |
| 32 | 34 |
|
| 33 | 35 |
validates_presence_of :issue_from, :issue_to, :relation_type |
| 34 | 36 |
validates_inclusion_of :relation_type, :in => TYPES.keys |
| 37 |
validates_uniqueness_of :relation_type, :scope => [:issue_from_id, :relation_type], :message=>l(:error_issue_can_have_only_one_parent) |
|
| 35 | 38 |
validates_numericality_of :delay, :allow_nil => true |
| 36 | 39 |
validates_uniqueness_of :issue_to_id, :scope => :issue_from_id |
| 37 | 40 |
|
| app/controllers/issues_controller.rb (revision 56) | ||
|---|---|---|
| 19 | 19 |
layout 'base' |
| 20 | 20 |
menu_item :new_issue, :only => :new |
| 21 | 21 |
|
| 22 |
before_filter :find_issue, :only => [:show, :edit, :destroy_attachment] |
|
| 22 |
before_filter :find_issue, :only => [:show, :edit, :destroy_attachment, :update_subject, :show_children, :hide_children]
|
|
| 23 | 23 |
before_filter :find_issues, :only => [:bulk_edit, :move, :destroy] |
| 24 | 24 |
before_filter :find_project, :only => [:new, :update_form, :preview] |
| 25 |
before_filter :authorize, :except => [:index, :changes, :preview, :update_form, :context_menu] |
|
| 25 |
before_filter :authorize, :except => [:index, :changes, :preview, :update_form, :context_menu, :show_children, :hide_children]
|
|
| 26 | 26 |
before_filter :find_optional_project, :only => [:index, :changes] |
| 27 | 27 |
accept_key_auth :index, :changes |
| 28 | 28 | |
| ... | ... | |
| 43 | 43 |
helper :sort |
| 44 | 44 |
include SortHelper |
| 45 | 45 |
include IssuesHelper |
| 46 |
include ActionView::Helpers::PrototypeHelper |
|
| 47 |
|
|
| 48 |
def update_subject |
|
| 49 |
@notes = params[:notes] |
|
| 50 |
journal = @issue.init_journal(User.current, @notes) |
|
| 51 |
@edit_allowed = User.current.allowed_to?(:edit_issues, @project) |
|
| 52 |
# User can change issue attributes only if he has :edit permission or if a workflow transition is allowed |
|
| 53 |
if (@edit_allowed || !@allowed_statuses.empty?) && params[:subject] |
|
| 54 |
@issue.subject = params[:subject] |
|
| 55 |
end |
|
| 56 |
if @issue.save |
|
| 57 |
if !journal.new_record? |
|
| 58 |
# Only send notification if something was actually changed |
|
| 59 |
flash[:notice] = l(:notice_successful_update) |
|
| 60 |
Mailer.deliver_issue_edit(journal) if Setting.notified_events.include?('issue_updated')
|
|
| 61 |
end |
|
| 62 |
render(:text => params[:subject]) |
|
| 63 |
end |
|
| 64 |
rescue ActiveRecord::StaleObjectError |
|
| 65 |
# Optimistic locking exception |
|
| 66 |
flash.now[:error] = l(:notice_locking_conflict) |
|
| 67 |
end |
|
| 68 |
|
|
| 69 |
def show_children |
|
| 70 |
retrieve_query |
|
| 71 |
if @query.valid? |
|
| 72 |
render :update do |page| |
|
| 73 |
page.replace "issue-#{@issue.id}", :partial => 'show_children', :locals => {:issue => @issue, :query => @query}
|
|
| 74 |
end |
|
| 75 |
end |
|
| 76 |
end |
|
| 46 | 77 | |
| 78 |
def hide_children |
|
| 79 |
retrieve_query #verificar necessidade |
|
| 80 |
if @query.valid? |
|
| 81 |
render :update do |page| |
|
| 82 |
page.select(".issue-#{@issue.id}-child").each do |child|
|
|
| 83 |
child.remove |
|
| 84 |
end |
|
| 85 |
page.select("#issue-#{@issue.id} a.contract-link").each do |contractIcon|
|
|
| 86 |
contractIcon.replace link_to_remote(image_tag("expand.png", :class=>'expand-icon'), {:url => {:controller => 'issues', :action => "show_children", :id => @issue}}, :class=>'expand-link')
|
|
| 87 |
end |
|
| 88 |
end |
|
| 89 |
end |
|
| 90 |
end |
|
| 91 |
|
|
| 47 | 92 |
def index |
| 48 | 93 |
sort_init "#{Issue.table_name}.id", "desc"
|
| 49 | 94 |
sort_update |
| ... | ... | |
| 146 | 191 |
:value => (params[:custom_fields] ? params[:custom_fields][x.id.to_s] : nil)) } |
| 147 | 192 |
@issue.custom_values = @custom_values |
| 148 | 193 |
if @issue.save |
| 194 |
set_parent(@issue, params[:issue][:parent_issue]) if params[:issue][:parent_issue] |
|
| 149 | 195 |
attach_files(@issue, params[:attachments]) |
| 150 | 196 |
flash[:notice] = l(:notice_successful_create) |
| 151 | 197 |
Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added')
|
| ... | ... | |
| 191 | 237 |
attachments = attach_files(@issue, params[:attachments]) |
| 192 | 238 |
attachments.each {|a| journal.details << JournalDetail.new(:property => 'attachment', :prop_key => a.id, :value => a.filename)}
|
| 193 | 239 |
if @issue.save |
| 240 |
set_parent(@issue, params[:issue][:parent_issue]) if params[:issue][:parent_issue] |
|
| 194 | 241 |
# Log spend time |
| 195 | 242 |
if current_role.allowed_to?(:log_time) |
| 196 | 243 |
@time_entry.save |
| ... | ... | |
| 227 | 274 |
issue.start_date = params[:start_date] unless params[:start_date].blank? |
| 228 | 275 |
issue.due_date = params[:due_date] unless params[:due_date].blank? |
| 229 | 276 |
issue.done_ratio = params[:done_ratio] unless params[:done_ratio].blank? |
| 277 |
issue.potential_parent = params[:potential_parent] unless params[:potential_parent].blank? |
|
| 230 | 278 |
# Don't save any change to the issue if the user is not authorized to apply the requested status |
| 231 | 279 |
if (status.nil? || (issue.status.new_status_allowed_to?(status, current_role, issue.tracker) && issue.status = status)) && issue.save |
| 280 |
set_parent(issue, params[:parent_issue]) unless params[:parent_issue].blank? |
|
| 232 | 281 |
# Send notification for each issue (if changed) |
| 233 | 282 |
Mailer.deliver_issue_edit(journal) if journal.details.any? && Setting.notified_events.include?('issue_updated')
|
| 234 | 283 |
else |
| app/controllers/projects_controller.rb (revision 56) | ||
|---|---|---|
| 381 | 381 |
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') |
| 382 | 382 |
|
| 383 | 383 |
@events = [] |
| 384 |
@issues = [] |
|
| 385 |
@versions = [] |
|
| 384 | 386 |
@project.issues_with_subprojects(@with_subprojects) do |
| 385 |
@events += Issue.find(:all,
|
|
| 387 |
@issues = Issue.find(:all,
|
|
| 386 | 388 |
:order => "start_date, due_date", |
| 387 | 389 |
:include => [:tracker, :status, :assigned_to, :priority, :project], |
| 388 |
:conditions => ["(((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null and #{Issue.table_name}.tracker_id in (#{@selected_tracker_ids.join(',')}))", @date_from, @date_to, @date_from, @date_to, @date_from, @date_to]
|
|
| 390 |
:conditions => ["(#{Issue.table_name}.tracker_id in (#{@selected_tracker_ids.join(',')}))"]
|
|
| 389 | 391 |
) unless @selected_tracker_ids.empty? |
| 390 |
@events += Version.find(:all, :include => :project,
|
|
| 392 |
@versions = Version.find(:all, :include => :project,
|
|
| 391 | 393 |
:conditions => ["effective_date BETWEEN ? AND ?", @date_from, @date_to]) |
| 392 | 394 |
end |
| 393 |
@events.sort! {|x,y| x.start_date <=> y.start_date }
|
|
| 395 |
#restrição de datas. Antes era feita no SQL, mas isso não é mais possível devido ao cálculo baseado nas subtarefas |
|
| 396 |
@issues = @issues.select {|issue| issue.start_date and issue.due_date and ((issue.start_date>=@date_from and issue.start_date<=@date_to) || (issue.due_date>=@date_from and issue.due_date<=@date_to) || (issue.start_date<@date_from and issue.due_date>@date_to))}
|
|
| 397 |
# params[:display] = 'first-level-only' |
|
| 398 |
# params[:display] = 'tree' |
|
| 399 |
# if params[:display] == 'first-level-only' |
|
| 400 |
# @issues = @issues.select {|issue| !issue.parent?}
|
|
| 401 |
# elsif params[:display] == 'tree' |
|
| 402 |
# Array.new(@issues).each do |issue| |
|
| 403 |
# @issues = @issues + issue.ancestors |
|
| 404 |
# end |
|
| 405 |
# @issues.uniq! |
|
| 406 |
# @issues = sort_as_tree(@issues) |
|
| 407 |
# end |
|
| 408 |
|
|
| 409 |
case params[:display] |
|
| 410 |
when 'first-level-only' |
|
| 411 |
@issues = @issues.select {|issue| !issue.parent?}
|
|
| 412 |
when 'tree' |
|
| 413 |
Array.new(@issues).each {|issue| @issues += issue.ancestors}
|
|
| 414 |
@issues.uniq! |
|
| 415 |
@issues = sort_as_tree(@issues) |
|
| 416 |
@events = integrate_versions_with_issues_tree(@issues, @versions) |
|
| 417 |
end |
|
| 418 |
|
|
| 419 |
unless params[:display] == 'tree' |
|
| 420 |
@events += @issues |
|
| 421 |
@events += @versions |
|
| 422 |
@events.sort! {|x,y| x.start_date <=> y.start_date }
|
|
| 423 |
end |
|
| 424 |
|
|
| 394 | 425 |
|
| 395 | 426 |
if params[:format]=='pdf' |
| 396 | 427 |
@options_for_rfpdf ||= {}
|
| ... | ... | |
| 430 | 461 |
@selected_tracker_ids = selectable_trackers.collect {|t| t.id.to_s }
|
| 431 | 462 |
end |
| 432 | 463 |
end |
| 464 |
|
|
| 465 |
|
|
| 466 |
def sort_as_tree(issues) |
|
| 467 |
issues.sort!{|a,b| a.hierarchical_level <=> b.hierarchical_level}
|
|
| 468 |
@sorted_issues = [] |
|
| 469 |
issues.each do |issue| |
|
| 470 |
if @sorted_issues.empty? |
|
| 471 |
@sorted_issues << issue |
|
| 472 |
next |
|
| 473 |
end |
|
| 474 |
@time_to_stop = false #indica quando a tarefa atual atinge a tarefa-mãe (importante porque ela precisa parar entre a tarefa-mãe e a próxima tarefa-tia |
|
| 475 |
@sorted_issues.each do |sorted_issue| |
|
| 476 |
#mesmo pai e menor data, pare; mesmo pai, mesma data e menor id, pare; depois do pai e antes do próximo pai, pare; |
|
| 477 |
if ((sorted_issue.parent == issue.parent) && (sorted_issue.start_date > issue.start_date)) || |
|
| 478 |
((sorted_issue.parent == issue.parent) && (sorted_issue.start_date == issue.start_date) && (sorted_issue.id > issue.id)) || |
|
| 479 |
(@time_to_stop && (sorted_issue.hierarchical_level < issue.hierarchical_level)) |
|
| 480 |
@sorted_issues.insert(@sorted_issues.index(sorted_issue), issue) |
|
| 481 |
break |
|
| 482 |
end |
|
| 483 |
@time_to_stop = true if sorted_issue == issue.parent |
|
| 484 |
end |
|
| 485 |
#if this issue's parent is the last element |
|
| 486 |
@sorted_issues << issue if @time_to_stop |
|
| 487 |
end |
|
| 488 |
@sorted_issues |
|
| 489 |
end |
|
| 490 |
|
|
| 491 |
#presume que as issues de primeiro nível estejam ordenadas por data (sort_as_tree) |
|
| 492 |
def integrate_versions_with_issues_tree(issues, versions) |
|
| 493 |
versions.sort! {|x,y| x.start_date <=> y.start_date }
|
|
| 494 |
versions.each do |version| |
|
| 495 |
issues << version if issues.empty? |
|
| 496 |
issues.each do |issue| |
|
| 497 |
if ((issue.is_a? Issue && issue.root?) || (issue.is_a? Version)) && version.start_date < issue.start_date |
|
| 498 |
#inserir versão antes da tarefa raiz ou de outra versão com data imediatamente posterior |
|
| 499 |
issues.insert(issues.index(issue), version) |
|
| 500 |
elsif issue == issues.last |
|
| 501 |
issues << version |
|
| 502 |
end |
|
| 503 |
end |
|
| 504 |
end |
|
| 505 |
issues |
|
| 506 |
end |
|
| 507 |
|
|
| 433 | 508 |
end |
| app/views/issues/bulk_edit.rhtml (revision 56) | ||
|---|---|---|
| 38 | 38 |
<label><%= l(:field_done_ratio) %>: |
| 39 | 39 |
<%= select_tag 'done_ratio', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></label>
|
| 40 | 40 |
</p> |
| 41 | ||
| 42 |
<p> |
|
| 43 |
<label><%= l(:field_parent_issue) %>: |
|
| 44 |
<%= select_tag('parent_issue', content_tag('option', l(:label_no_change_option), :value => '') +
|
|
| 45 |
content_tag('option', l(:label_none), :value => '') +
|
|
| 46 |
options_from_collection_for_select(Issue.find(:all, :conditions => [ "potential_parent = true"]).sort {|a, b| a.id <=> b.id}, :id, :subject)) %></label>
|
|
| 47 |
<label><%= l(:field_potential_parent) %>: |
|
| 48 |
<%= select_tag('potential_parent', content_tag('option', l(:label_no_change_option), :value => '') +
|
|
| 49 |
content_tag('option', l(:general_text_Yes), :value => 'true') +
|
|
| 50 |
content_tag('option', l(:general_text_No), :value => 'false')) %></label>
|
|
| 51 |
</p> |
|
| 41 | 52 |
</fieldset> |
| 42 | 53 | |
| 43 | 54 |
<fieldset><legend><%= l(:field_notes) %></legend> |
| app/views/issues/_form.rhtml (revision 56) | ||
|---|---|---|
| 16 | 16 |
</div> |
| 17 | 17 | |
| 18 | 18 |
<div class="splitcontentleft"> |
| 19 |
<% if @issue.new_record? || @allowed_statuses.any? %>
|
|
| 19 |
<% if (@issue.new_record? || @allowed_statuses.any?) && @issue.edge? %>
|
|
| 20 | 20 |
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), :required => true %></p>
|
| 21 | 21 |
<% else %> |
| 22 | 22 |
<p><label><%= l(:field_status) %></label> <%= @issue.status.name %></p> |
| ... | ... | |
| 22 | 22 |
<p><label><%= l(:field_status) %></label> <%= @issue.status.name %></p> |
| 23 | 23 |
<% end %> |
| 24 | 24 | |
| 25 |
<% if @issue.edge? %> |
|
| 25 | 26 |
<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), :required => true %></p>
|
| 27 |
<% else %> |
|
| 28 |
<p><label><%= l(:field_priority) %></label> <%= @issue.priority.name %></p> |
|
| 29 |
<% end %> |
|
| 30 | ||
| 26 | 31 |
<p><%= f.select :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), :include_blank => true %></p>
|
| 27 | 32 |
<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
|
| 28 | 33 |
<%= prompt_to_remote(l(:label_issue_category_new), |
| 29 | 34 |
l(:label_issue_category_new), 'category[name]', |
| 30 | 35 |
{:controller => 'projects', :action => 'add_issue_category', :id => @project},
|
| 31 | 36 |
:class => 'small', :tabindex => 199) if authorize_for('projects', 'add_issue_category') %></p>
|
| 37 | ||
| 38 |
<% if @issue.edge? %> |
|
| 32 | 39 |
<%= content_tag('p', f.select(:fixed_version_id,
|
| 33 | 40 |
(@project.versions.sort.collect {|v| [v.name, v.id]}),
|
| 34 | 41 |
{ :include_blank => true })) unless @project.versions.empty? %>
|
| 42 |
<% else %> |
|
| 43 |
<p><label><%= l(:field_fixed_version) %></label> <%= @issue.fixed_version ? @issue.fixed_version.name : '-' %></p> |
|
| 44 |
<% end %> |
|
| 35 | 45 |
</div> |
| 36 | 46 | |
| 37 | 47 |
<div class="splitcontentright"> |
| 48 |
<% if @issue.edge? %> |
|
| 38 | 49 |
<p><%= f.text_field :start_date, :size => 10 %><%= calendar_for('issue_start_date') %></p>
|
| 39 | 50 |
<p><%= f.text_field :due_date, :size => 10 %><%= calendar_for('issue_due_date') %></p>
|
| 40 | 51 |
<p><%= f.text_field :estimated_hours, :size => 3 %> <%= l(:field_hours) %></p> |
| ... | ... | |
| 39 | 50 |
<p><%= f.text_field :due_date, :size => 10 %><%= calendar_for('issue_due_date') %></p>
|
| 40 | 51 |
<p><%= f.text_field :estimated_hours, :size => 3 %> <%= l(:field_hours) %></p> |
| 41 | 52 |
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
|
| 53 |
<% else %> |
|
| 54 |
<p><label><%= l(:field_start_date) %></label> <%= format_date(@issue.start_date) %></p> |
|
| 55 |
<p><label><%= l(:field_due_date) %></label> <%= format_date(@issue.due_date) %></p> |
|
| 56 |
<p><label><%= l(:field_done_ratio) %></label> <%= "#{@issue.done_ratio}%" %></p>
|
|
| 57 |
<% end %> |
|
| 58 |
<p><%= f.check_box :potential_parent %></p> |
|
| 42 | 59 |
</div> |
| 60 |
<p><%= f.select :parent_issue, (Issue.find(:all, :conditions => [ "potential_parent = true"]).sort {|a, b| a.id <=> b.id}.collect {|p| ['#' << p.id.to_s << ' - ' << (p.subject.length > 50 ? p.subject[0..50] << '...' : p.subject), p.id]}), :include_blank => true %></p>
|
|
| 43 | 61 | |
| 44 | 62 |
<div style="clear:both;"> </div> |
| 45 | 63 |
<%= render :partial => 'form_custom_fields', :locals => {:values => @custom_values} %>
|
| app/views/issues/_form_update.rhtml (revision 56) | ||
|---|---|---|
| 1 | 1 |
<div class="splitcontentleft"> |
| 2 |
<% if @issue.edge? %> |
|
| 2 | 3 |
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), :required => true %></p>
|
| 4 |
<% else %> |
|
| 5 |
<p><label><%= l(:field_status) %></label> <%= @issue.status.name %></p> |
|
| 6 |
<% end %> |
|
| 3 | 7 |
<p><%= f.select :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), :include_blank => true %></p>
|
| 4 | 8 |
</div> |
| 5 | 9 |
<div class="splitcontentright"> |
| 10 |
<% if @issue.edge? %> |
|
| 6 | 11 |
<p><%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></p>
|
| 7 | 12 |
<%= content_tag('p', f.select(:fixed_version_id,
|
| 8 | 13 |
(@project.versions.sort.collect {|v| [v.name, v.id]}),
|
| ... | ... | |
| 7 | 12 |
<%= content_tag('p', f.select(:fixed_version_id,
|
| 8 | 13 |
(@project.versions.sort.collect {|v| [v.name, v.id]}),
|
| 9 | 14 |
{ :include_blank => true })) unless @project.versions.empty? %>
|
| 15 |
<% else %> |
|
| 16 |
<p><label><%= l(:field_done_ratio) %></label> <%= "#{@issue.done_ratio}%" %></p>
|
|
| 17 |
<p><label><%= l(:field_fixed_version) %></label> <%= @issue.fixed_version ? @issue.fixed_version.name : '-' %></p> |
|
| 18 |
<% end %> |
|
| 10 | 19 |
</div> |
| app/views/issues/context_menu.rhtml (revision 56) | ||
|---|---|---|
| 2 | 2 |
<% if !@issue.nil? -%> |
| 3 | 3 |
<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'edit', :id => @issue},
|
| 4 | 4 |
:class => 'icon-edit', :disabled => !@can[:edit] %></li> |
| 5 |
<% if @issue.edge? %> |
|
| 5 | 6 |
<li class="folder"> |
| 6 | 7 |
<a href="#" class="submenu" onclick="return false;"><%= l(:field_status) %></a> |
| 7 | 8 |
<ul> |
| ... | ... | |
| 10 | 11 |
:selected => (s == @issue.status), :disabled => !(@can[:update] && @allowed_statuses.include?(s)) %></li> |
| 11 | 12 |
<% end -%> |
| 12 | 13 |
</ul> |
| 13 |
</li> |
|
| 14 |
</li>
|
|
| 14 | 15 |
<li class="folder"> |
| 15 | 16 |
<a href="#" class="submenu"><%= l(:field_priority) %></a> |
| 16 | 17 |
<ul> |
| ... | ... | |
| 20 | 21 |
<% end -%> |
| 21 | 22 |
</ul> |
| 22 | 23 |
</li> |
| 24 |
<% end %> |
|
| 23 | 25 |
<li class="folder"> |
| 24 | 26 |
<a href="#" class="submenu"><%= l(:field_assigned_to) %></a> |
| 25 | 27 |
<ul> |
| ... | ... | |
| 31 | 33 |
:selected => @issue.assigned_to.nil?, :disabled => !@can[:update] %></li> |
| 32 | 34 |
</ul> |
| 33 | 35 |
</li> |
| 36 |
<% if @issue.edge? %> |
|
| 34 | 37 |
<li class="folder"> |
| 35 | 38 |
<a href="#" class="submenu"><%= l(:field_done_ratio) %></a> |
| 36 | 39 |
<ul> |
| ... | ... | |
| 39 | 42 |
:selected => (p == @issue.done_ratio), :disabled => !@can[:edit] %></li> |
| 40 | 43 |
<% end -%> |
| 41 | 44 |
</ul> |
| 42 |
</li> |
|
| 45 |
</li>
|
|
| 43 | 46 |
<li><%= context_menu_link l(:button_copy), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue},
|
| 44 | 47 |
:class => 'icon-copy', :disabled => !@can[:copy] %></li> |
| 48 |
<% end %> |
|
| 45 | 49 |
<% else -%> |
| 46 | 50 |
<li><%= context_menu_link l(:button_edit), {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id)},
|
| 47 | 51 |
:class => 'icon-edit', :disabled => !@can[:edit] %></li> |
| app/views/issues/_list.rhtml (revision 56) | ||
|---|---|---|
| 10 | 10 |
<% end %> |
| 11 | 11 |
</tr></thead> |
| 12 | 12 |
<tbody> |
| 13 |
<% issues.each do |issue| -%> |
|
| 13 |
<% issues.each do |issue| |
|
| 14 |
next if !@show_all_issues && (issue.hierarchical_level != 1) -%> |
|
| 14 | 15 |
<tr id="issue-<%= issue.id %>" class="issue hascontextmenu <%= cycle('odd', 'even') %> <%= "status-#{issue.status.position} priority-#{issue.priority.position}" %>">
|
| 15 | 16 |
<td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
|
| 16 | 17 |
<td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td> |
| app/views/issues/show.rhtml (revision 56) | ||
|---|---|---|
| 43 | 43 |
<% end %> |
| 44 | 44 |
</tr> |
| 45 | 45 |
<tr> |
| 46 |
<td><b><%=l(:field_potential_parent)%> :</b></td><td><%= @issue.potential_parent ? l(:general_text_Yes) : l(:general_text_No) %></td> |
|
| 47 |
</tr> |
|
| 48 |
<tr> |
|
| 46 | 49 |
<% n = 0 |
| 47 | 50 |
for custom_value in @custom_values %> |
| 48 | 51 |
<td valign="top"><b><%= custom_value.custom_field.name %> :</b></td><td valign="top"><%= simple_format(h(show_value(custom_value))) %></td> |
| app/views/issues/index.rfpdf (revision 56) | ||
|---|---|---|
| 24 | 24 |
pdf.Cell(30, row_height, l(:field_priority), 0, 0, 'L', 1) |
| 25 | 25 |
pdf.Cell(40, row_height, l(:field_assigned_to), 0, 0, 'L', 1) |
| 26 | 26 |
pdf.Cell(25, row_height, l(:field_updated_on), 0, 0, 'L', 1) |
| 27 |
pdf.Cell(15, row_height, l(:field_parent_issue), 0, 0, 'L', 1) |
|
| 27 | 28 |
pdf.Cell(0, row_height, l(:field_subject), 0, 0, 'L', 1) |
| 28 | 29 |
pdf.Line(10, pdf.GetY, 287, pdf.GetY) |
| 29 | 30 |
pdf.Ln |
| ... | ... | |
| 42 | 43 |
pdf.Cell(30, row_height, issue.priority.name, 0, 0, 'L', 1) |
| 43 | 44 |
pdf.Cell(40, row_height, issue.assigned_to ? issue.assigned_to.name : '', 0, 0, 'L', 1) |
| 44 | 45 |
pdf.Cell(25, row_height, format_date(issue.updated_on), 0, 0, 'L', 1) |
| 46 |
pdf.Cell(15, row_height, issue.parent ? "# #{issue.parent.id}" : '', 0, 0, 'L', 1)
|
|
| 45 | 47 |
pdf.MultiCell(0, row_height, (@project == issue.project ? issue.subject : "#{issue.project.name} - #{issue.subject}"))
|
| 46 | 48 |
pdf.Line(10, pdf.GetY, 287, pdf.GetY) |
| 47 | 49 |
pdf.SetY(pdf.GetY() + 1) |
| app/views/issues/_edit.rhtml (revision 56) | ||
|---|---|---|
| 14 | 14 |
<%= render :partial => (@edit_allowed ? 'form' : 'form_update'), :locals => {:f => f} %>
|
| 15 | 15 |
</fieldset> |
| 16 | 16 |
<% end %> |
| 17 |
<% if authorize_for('timelog', 'edit') %>
|
|
| 17 |
<% if authorize_for('timelog', 'edit') && @issue.edge? %>
|
|
| 18 | 18 |
<fieldset class="tabular"><legend><%= l(:button_log_time) %></legend> |
| 19 | 19 |
<% fields_for :time_entry, @time_entry, { :builder => TabularFormBuilder, :lang => current_language} do |time_entry| %>
|
| 20 | 20 |
<div class="splitcontentleft"> |
| app/views/issues/_show_children.rhtml (revision 56) | ||
|---|---|---|
| 1 |
<% |
|
| 2 |
issues = [@issue] |
|
| 3 |
issues += @issue.children |
|
| 4 |
issues.each do |issue| |
|
| 5 |
is_parent = (issue == @issue) |
|
| 6 |
#usado em queries_helper.rb para decidir qual ícone será mostrado (se + ou -) |
|
| 7 |
@show_children = is_parent -%> |
|
| 8 |
<tr id="issue-<%=issue.id%>" class="issue <%= issue_ancestors(issue) %> hascontextmenu <%= cycle('odd', 'even') %> <%= "status-#{issue.status.position} priority-#{issue.priority.position}" %>">
|
|
| 9 |
<td class="checkbox"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
|
|
| 10 |
<td><%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %></td> |
|
| 11 |
<% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %> |
|
| 12 |
</tr> |
|
| 13 |
<% |
|
| 14 |
end -%> |
|
| lang/lt.yml (revision 56) | ||
|---|---|---|
| 126 | 126 |
field_assigned_to: Paskirtas |
| 127 | 127 |
field_priority: Prioritetas |
| 128 | 128 |
field_fixed_version: Target version |
| 129 |
field_parent_issue: Child of |
|
| 130 |
field_potential_parent: Potential parent |
|
| 129 | 131 |
field_user: Vartotojas |
| 130 | 132 |
field_role: Vaidmuo |
| 131 | 133 |
field_homepage: Pagrindinis puslapis |
| ... | ... | |
| 414 | 416 |
label_blocked_by: blokuotas |
| 415 | 417 |
label_precedes: įvyksta pirma |
| 416 | 418 |
label_follows: seka |
| 419 |
label_parents: child of |
|
| 420 |
label_children: parent of |
|
| 417 | 421 |
label_end_to_start: užbaigti, kad pradėti |
| 418 | 422 |
label_end_to_end: užbaigti, kad pabaigti |
| 419 | 423 |
label_start_to_start: pradėkite pradėti |
| ... | ... | |
| 618 | 622 |
setting_default_projects_public: Naujas projektas viešas pagal nutylėjimą |
| 619 | 623 |
error_scm_annotate: "Įrašas neegzituoja arba negalima jo atvaizduoti." |
| 620 | 624 |
label_planning: Planavimas |
| 625 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 621 | 626 |
text_subprojects_destroy_warning: 'Šis(ie) subprojektas(ai): %s taip pat bus ištrintas(i).' |
| 622 | 627 |
label_and_its_subprojects: %s projektas ir jo subprojektai |
| 623 | 628 | |
| lang/uk.yml (revision 56) | ||
|---|---|---|
| 123 | 123 |
field_assigned_to: Призначена до |
| 124 | 124 |
field_priority: Пріоритет |
| 125 | 125 |
field_fixed_version: Target version |
| 126 |
field_parent_issue: Child of |
|
| 127 |
field_potential_parent: Potential parent |
|
| 126 | 128 |
field_user: Користувач |
| 127 | 129 |
field_role: Роль |
| 128 | 130 |
field_homepage: Домашня сторінка |
| ... | ... | |
| 411 | 413 |
label_blocked_by: заблоковане |
| 412 | 414 |
label_precedes: передує |
| 413 | 415 |
label_follows: наступний за |
| 416 |
label_parents: child of |
|
| 417 |
label_children: parent of |
|
| 414 | 418 |
label_end_to_start: з кінця до початку |
| 415 | 419 |
label_end_to_end: з кінця до кінця |
| 416 | 420 |
label_start_to_start: з початку до початку |
| ... | ... | |
| 619 | 623 |
setting_default_projects_public: New projects are public by default |
| 620 | 624 |
error_scm_annotate: "The entry does not exist or can not be annotated." |
| 621 | 625 |
label_planning: Planning |
| 626 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 622 | 627 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/ro.yml (revision 56) | ||
|---|---|---|
| 118 | 118 |
field_assigned_to: Atribuit pentru |
| 119 | 119 |
field_priority: Prioritate |
| 120 | 120 |
field_fixed_version: Target version |
| 121 |
field_parent_issue: Child of |
|
| 122 |
field_potential_parent: Potential parent |
|
| 121 | 123 |
field_user: Utilizator |
| 122 | 124 |
field_role: Rol |
| 123 | 125 |
field_homepage: Pagina principala |
| ... | ... | |
| 393 | 395 |
label_blocked_by: blocat de |
| 394 | 396 |
label_precedes: precedes |
| 395 | 397 |
label_follows: follows |
| 398 |
label_parents: child of |
|
| 399 |
label_children: parent of |
|
| 396 | 400 |
label_end_to_start: de la sfarsit la capat |
| 397 | 401 |
label_end_to_end: de la sfarsit la sfarsit |
| 398 | 402 |
label_start_to_start: de la capat la capat |
| ... | ... | |
| 617 | 621 |
setting_default_projects_public: New projects are public by default |
| 618 | 622 |
error_scm_annotate: "The entry does not exist or can not be annotated." |
| 619 | 623 |
label_planning: Planning |
| 624 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 620 | 625 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/zh.yml (revision 56) | ||
|---|---|---|
| 131 | 131 |
field_assigned_to: 指派给 |
| 132 | 132 |
field_priority: 优先级 |
| 133 | 133 |
field_fixed_version: 目标版本 |
| 134 |
field_parent_issue: Child of |
|
| 135 |
field_potential_parent: Potential parent |
|
| 134 | 136 |
field_user: 用户 |
| 135 | 137 |
field_role: 角色 |
| 136 | 138 |
field_homepage: 主页 |
| ... | ... | |
| 452 | 454 |
label_blocked_by: 被阻挡 |
| 453 | 455 |
label_precedes: 优先于 |
| 454 | 456 |
label_follows: 跟随于 |
| 457 |
label_parents: child of |
|
| 458 |
label_children: parent of |
|
| 455 | 459 |
label_end_to_start: 结束-开始 |
| 456 | 460 |
label_end_to_end: 结束-结束 |
| 457 | 461 |
label_start_to_start: 开始-开始 |
| ... | ... | |
| 560 | 564 |
text_regexp_info: 例如:^[A-Z0-9]+$ |
| 561 | 565 |
text_min_max_length_info: 0 表示没有限制 |
| 562 | 566 |
text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗? |
| 567 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 563 | 568 |
text_subprojects_destroy_warning: '以下子项目也将被同时删除:%s' |
| 564 | 569 |
text_workflow_edit: 选择角色和跟踪标签来编辑工作流程 |
| 565 | 570 |
text_are_you_sure: 您确定? |
| lang/pt.yml (revision 56) | ||
|---|---|---|
| 118 | 118 |
field_assigned_to: Atribuído para |
| 119 | 119 |
field_priority: Prioridade |
| 120 | 120 |
field_fixed_version: Target version |
| 121 |
field_parent_issue: Child of |
|
| 122 |
field_potential_parent: Potential parent |
|
| 121 | 123 |
field_user: Usuário |
| 122 | 124 |
field_role: Regra |
| 123 | 125 |
field_homepage: Página inicial |
| ... | ... | |
| 395 | 397 |
label_blocked_by: bloqueado por |
| 396 | 398 |
label_precedes: procede |
| 397 | 399 |
label_follows: segue |
| 400 |
label_parents: child of |
|
| 401 |
label_children: parent of |
|
| 398 | 402 |
label_end_to_start: fim ao início |
| 399 | 403 |
label_end_to_end: fim ao fim |
| 400 | 404 |
label_start_to_start: ínícia ao inícia |
| ... | ... | |
| 617 | 621 |
setting_default_projects_public: New projects are public by default |
| 618 | 622 |
error_scm_annotate: "The entry does not exist or can not be annotated." |
| 619 | 623 |
label_planning: Planning |
| 624 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 620 | 625 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/da.yml (revision 56) | ||
|---|---|---|
| 127 | 127 |
field_assigned_to: Tildelt til |
| 128 | 128 |
field_priority: Prioritet |
| 129 | 129 |
field_fixed_version: Target version |
| 130 |
field_parent_issue: Child of |
|
| 131 |
field_potential_parent: Potential parent |
|
| 130 | 132 |
field_user: Bruger |
| 131 | 133 |
field_role: Rolle |
| 132 | 134 |
field_homepage: Hjemmeside |
| ... | ... | |
| 442 | 444 |
label_blocked_by: blokeret af |
| 443 | 445 |
label_precedes: kommer før |
| 444 | 446 |
label_follows: følger |
| 447 |
label_parents: child of |
|
| 448 |
label_children: parent of |
|
| 445 | 449 |
label_end_to_start: slut til start |
| 446 | 450 |
label_end_to_end: slut til slut |
| 447 | 451 |
label_start_to_start: start til start |
| ... | ... | |
| 619 | 623 |
setting_default_projects_public: Nye projekter er offentlige som default |
| 620 | 624 |
error_scm_annotate: "The entry does not exist or can not be annotated." |
| 621 | 625 |
label_planning: Planlægning |
| 626 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 622 | 627 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/pt-br.yml (revision 56) | ||
|---|---|---|
| 118 | 118 |
field_assigned_to: Atribuído para |
| 119 | 119 |
field_priority: Prioridade |
| 120 | 120 |
field_fixed_version: Versão |
| 121 |
field_parent_issue: Filha de |
|
| 122 |
field_potential_parent: Potential tarefa-mãe |
|
| 121 | 123 |
field_user: Usuário |
| 122 | 124 |
field_role: Papel |
| 123 | 125 |
field_homepage: Página inicial |
| ... | ... | |
| 395 | 397 |
label_blocked_by: bloqueado por |
| 396 | 398 |
label_precedes: precede |
| 397 | 399 |
label_follows: segue |
| 400 |
label_parents: filha de |
|
| 401 |
label_children: mãe de |
|
| 398 | 402 |
label_end_to_start: fim para o início |
| 399 | 403 |
label_end_to_end: fim para fim |
| 400 | 404 |
label_start_to_start: início para início |
| ... | ... | |
| 616 | 620 |
setting_default_projects_public: Novos projetos são públicos por padrão |
| 617 | 621 |
error_scm_annotate: "Esta entrada não existe ou não pode ser anotada." |
| 618 | 622 |
label_planning: Planejamento |
| 623 |
error_issue_can_have_only_one_parent: permite apenas uma relação (uma tarefa pode ter apenas uma tarefa-mãe). |
|
| 619 | 624 |
text_subprojects_destroy_warning: 'Seu(s) subprojeto(s): %s também serão excluídos.' |
| 620 | 625 |
label_age: Age |
| lang/sr.yml (revision 56) | ||
|---|---|---|
| 122 | 122 |
field_assigned_to: Dodeljeno |
| 123 | 123 |
field_priority: Prioritet |
| 124 | 124 |
field_fixed_version: Target version |
| 125 |
field_parent_issue: Child of |
|
| 126 |
field_potential_parent: Potential parent |
|
| 125 | 127 |
field_user: Korisnik |
| 126 | 128 |
field_role: Uloga |
| 127 | 129 |
field_homepage: Homepage |
| ... | ... | |
| 405 | 407 |
label_blocked_by: blokiran od strane |
| 406 | 408 |
label_precedes: prethodi |
| 407 | 409 |
label_follows: sledi |
| 410 |
label_parents: child of |
|
| 411 |
label_children: parent of |
|
| 408 | 412 |
label_end_to_start: od kraja do početka |
| 409 | 413 |
label_end_to_end: od kraja do kraja |
| 410 | 414 |
label_start_to_start: od početka do pocetka |
| ... | ... | |
| 618 | 622 |
setting_default_projects_public: New projects are public by default |
| 619 | 623 |
error_scm_annotate: "The entry does not exist or can not be annotated." |
| 620 | 624 |
label_planning: Planning |
| 625 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 621 | 626 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/ru.yml (revision 56) | ||
|---|---|---|
| 128 | 128 |
field_assigned_to: Назначена |
| 129 | 129 |
field_priority: Приоритет |
| 130 | 130 |
field_fixed_version: Версия |
| 131 |
field_parent_issue: Child of |
|
| 132 |
field_potential_parent: Potential parent |
|
| 131 | 133 |
field_user: Пользователь |
| 132 | 134 |
field_role: Роль |
| 133 | 135 |
field_homepage: Стартовая страница |
| ... | ... | |
| 418 | 420 |
label_blocked_by: заблокировано |
| 419 | 421 |
label_precedes: предшествует |
| 420 | 422 |
label_follows: следующий |
| 423 |
label_parents: child of |
|
| 424 |
label_children: parent of |
|
| 421 | 425 |
label_end_to_start: с конца к началу |
| 422 | 426 |
label_end_to_end: с конца к концу |
| 423 | 427 |
label_start_to_start: с начала к началу |
| ... | ... | |
| 621 | 625 |
setting_default_projects_public: Новые проекты являются публичными |
| 622 | 626 |
error_scm_annotate: "Данные отсутствуют или не могут быть подписаны." |
| 623 | 627 |
label_planning: Планирование |
| 628 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 624 | 629 |
text_subprojects_destroy_warning: 'Подпроекты: %s также будут удалены.' |
| 625 | 630 |
label_and_its_subprojects: %s и все подпроекты |
| 626 | 631 |
mail_body_reminder: "%d назначенных на вас задач на следующие %d дней:" |
| lang/de.yml (revision 56) | ||
|---|---|---|
| 129 | 129 |
field_assigned_to: Zugewiesen an |
| 130 | 130 |
field_priority: Priorität |
| 131 | 131 |
field_fixed_version: Zielversion |
| 132 |
field_parent_issue: Child of |
|
| 133 |
field_potential_parent: Potential parent |
|
| 132 | 134 |
field_user: Benutzer |
| 133 | 135 |
field_role: Rolle |
| 134 | 136 |
field_homepage: Projekt-Homepage |
| ... | ... | |
| 449 | 451 |
label_blocked_by: Blockiert durch |
| 450 | 452 |
label_precedes: Vorgänger von |
| 451 | 453 |
label_follows: folgt |
| 454 |
label_parents: child of |
|
| 455 |
label_children: parent of |
|
| 452 | 456 |
label_end_to_start: Ende - Anfang |
| 453 | 457 |
label_end_to_end: Ende - Ende |
| 454 | 458 |
label_start_to_start: Anfang - Anfang |
| ... | ... | |
| 618 | 622 |
enumeration_issue_priorities: Ticket-Prioritäten |
| 619 | 623 |
enumeration_doc_categories: Dokumentenkategorien |
| 620 | 624 |
enumeration_activities: Aktivitäten (Zeiterfassung) |
| 625 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 621 | 626 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/bg.yml (revision 56) | ||
|---|---|---|
| 118 | 118 |
field_assigned_to: Възложена на |
| 119 | 119 |
field_priority: Приоритет |
| 120 | 120 |
field_fixed_version: Планувана версия |
| 121 |
field_parent_issue: Child of |
|
| 122 |
field_potential_parent: Potential parent |
|
| 121 | 123 |
field_user: Потребител |
| 122 | 124 |
field_role: Роля |
| 123 | 125 |
field_homepage: Начална страница |
| ... | ... | |
| 395 | 397 |
label_blocked_by: блокирана от |
| 396 | 398 |
label_precedes: предшества |
| 397 | 399 |
label_follows: изпълнява се след |
| 400 |
label_parents: child of |
|
| 401 |
label_children: parent of |
|
| 398 | 402 |
label_end_to_start: end to start |
| 399 | 403 |
label_end_to_end: end to end |
| 400 | 404 |
label_start_to_start: start to start |
| ... | ... | |
| 617 | 621 |
setting_default_projects_public: Новите проекти са публични по подразбиране |
| 618 | 622 |
error_scm_annotate: "Обектът не съществува или не може да бъде анотиран." |
| 619 | 623 |
label_planning: Планиране |
| 624 |
error_issue_can_have_only_one_parent: allows only one relationship (a task can have only one parent). |
|
| 620 | 625 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/sv.yml (revision 56) | ||
|---|---|---|
| 118 | 118 |
field_assigned_to: Tilldelad |
| 119 | 119 |
field_priority: Prioritet |
| 120 | 120 |
field_fixed_version: Target version |
| 121 |
field_parent_issue: Child of |
|
| 122 |
field_potential_parent: Potential parent |
|
| 121 | 123 |
field_user: Användare |
| 122 | 124 |
field_role: Roll |
| 123 | 125 |
field_homepage: Hemsida |
| ... | ... | |
| 395 | 397 |
label_blocked_by: blocked by |
| 396 | 398 |
label_precedes: precedes |
| 397 | 399 |
label_follows: follows |
| 400 |
label_parents: child of |
|
| 401 |
label_children: parent of |
|
| 398 | 402 |
label_end_to_start: end to start |
| 399 | 403 |
label_end_to_end: end to end |
| 400 | 404 |
label_start_to_start: start to start |
| ... | ... | |
| 618 | 622 |
setting_default_projects_public: New projects are public by default |
| 619 | 623 |
error_scm_annotate: "The entry does not exist or can not be annotated." |
| 620 | 624 |
label_planning: Planning |
| 625 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 621 | 626 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/ja.yml (revision 56) | ||
|---|---|---|
| 119 | 119 |
field_assigned_to: 担当者 |
| 120 | 120 |
field_priority: 優先度 |
| 121 | 121 |
field_fixed_version: Target version |
| 122 |
field_parent_issue: Child of |
|
| 123 |
field_potential_parent: Potential parent |
|
| 122 | 124 |
field_user: ユーザ |
| 123 | 125 |
field_role: 役割 |
| 124 | 126 |
field_homepage: ホームページ |
| ... | ... | |
| 396 | 398 |
label_blocked_by: ブロックされている |
| 397 | 399 |
label_precedes: 先行する |
| 398 | 400 |
label_follows: 後続する |
| 401 |
label_parents: child of |
|
| 402 |
label_children: parent of |
|
| 399 | 403 |
label_end_to_start: end to start |
| 400 | 404 |
label_end_to_end: end to end |
| 401 | 405 |
label_start_to_start: start to start |
| ... | ... | |
| 618 | 622 |
setting_default_projects_public: デフォルトで新しいプロジェクトは公開にする |
| 619 | 623 |
error_scm_annotate: "エントリが存在しない、もしくはアノテートできません。" |
| 620 | 624 |
label_planning: 計画 |
| 625 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 621 | 626 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/he.yml (revision 56) | ||
|---|---|---|
| 120 | 120 |
field_assigned_to: מוצב ל |
| 121 | 121 |
field_priority: עדיפות |
| 122 | 122 |
field_fixed_version: גירסאת יעד |
| 123 |
field_parent_issue: Child of |
|
| 124 |
field_potential_parent: Potential parent |
|
| 123 | 125 |
field_user: מתשמש |
| 124 | 126 |
field_role: תפקיד |
| 125 | 127 |
field_homepage: דף הבית |
| ... | ... | |
| 400 | 402 |
label_blocked_by: חסום ע"י |
| 401 | 403 |
label_precedes: מקדים את |
| 402 | 404 |
label_follows: עוקב אחרי |
| 405 |
label_parents: child of |
|
| 406 |
label_children: parent of |
|
| 403 | 407 |
label_end_to_start: מהתחלה לסוף |
| 404 | 408 |
label_end_to_end: מהסוף לסוף |
| 405 | 409 |
label_start_to_start: מהתחלה להתחלה |
| ... | ... | |
| 617 | 621 |
setting_default_projects_public: פרויקטים חדשים הינם פומביים כברירת מחדל |
| 618 | 622 |
error_scm_annotate: "הכניסה לא קיימת או שלא ניתן לתאר אותה." |
| 619 | 623 |
label_planning: תכנון |
| 624 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 620 | 625 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/fi.yml (revision 56) | ||
|---|---|---|
| 127 | 127 |
field_assigned_to: Nimetty |
| 128 | 128 |
field_priority: Prioriteetti |
| 129 | 129 |
field_fixed_version: Kohde versio |
| 130 |
field_parent_issue: Child of |
|
| 131 |
field_potential_parent: Potential parent |
|
| 130 | 132 |
field_user: Käyttäjä |
| 131 | 133 |
field_role: Rooli |
| 132 | 134 |
field_homepage: Kotisivu |
| ... | ... | |
| 416 | 418 |
label_blocked_by: estetty |
| 417 | 419 |
label_precedes: edeltää |
| 418 | 420 |
label_follows: seuraa |
| 421 |
label_parents: child of |
|
| 422 |
label_children: parent of |
|
| 419 | 423 |
label_end_to_start: loppu alkuun |
| 420 | 424 |
label_end_to_end: loppu loppuun |
| 421 | 425 |
label_start_to_start: alku alkuun |
| ... | ... | |
| 617 | 621 |
label_overall_activity: Kokonaishistoria |
| 618 | 622 |
error_scm_annotate: "Merkintää ei ole tai siihen ei voi lisätä selityksiä." |
| 619 | 623 |
label_planning: Suunnittelu |
| 624 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 620 | 625 |
text_subprojects_destroy_warning: 'Tämän alaprojekti(t): %s tullaan myös poistamaan.' |
| lang/en.yml (revision 56) | ||
|---|---|---|
| 129 | 129 |
field_assigned_to: Assigned to |
| 130 | 130 |
field_priority: Priority |
| 131 | 131 |
field_fixed_version: Target version |
| 132 |
field_parent_issue: Child of |
|
| 133 |
field_potential_parent: Potential parent |
|
| 132 | 134 |
field_user: User |
| 133 | 135 |
field_role: Role |
| 134 | 136 |
field_homepage: Homepage |
| ... | ... | |
| 449 | 451 |
label_blocked_by: blocked by |
| 450 | 452 |
label_precedes: precedes |
| 451 | 453 |
label_follows: follows |
| 454 |
label_parents: child of |
|
| 455 |
label_children: parent of |
|
| 452 | 456 |
label_end_to_start: end to start |
| 453 | 457 |
label_end_to_end: end to end |
| 454 | 458 |
label_start_to_start: start to start |
| ... | ... | |
| 557 | 561 |
text_regexp_info: eg. ^[A-Z0-9]+$ |
| 558 | 562 |
text_min_max_length_info: 0 means no restriction |
| 559 | 563 |
text_project_destroy_confirmation: Are you sure you want to delete this project and related data ? |
| 564 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 560 | 565 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| 561 | 566 |
text_workflow_edit: Select a role and a tracker to edit the workflow |
| 562 | 567 |
text_are_you_sure: Are you sure ? |
| lang/cs.yml (revision 56) | ||
|---|---|---|
| 132 | 132 |
field_assigned_to: Přiřazeno |
| 133 | 133 |
field_priority: Priorita |
| 134 | 134 |
field_fixed_version: Přiřazeno k verzi |
| 135 |
field_parent_issue: Child of |
|
| 136 |
field_potential_parent: Potential parent |
|
| 135 | 137 |
field_user: Uživatel |
| 136 | 138 |
field_role: Role |
| 137 | 139 |
field_homepage: Homepage |
| ... | ... | |
| 452 | 454 |
label_blocked_by: zablokován |
| 453 | 455 |
label_precedes: předchází |
| 454 | 456 |
label_follows: následuje |
| 457 |
label_parents: child of |
|
| 458 |
label_children: parent of |
|
| 455 | 459 |
label_end_to_start: od konce do začátku |
| 456 | 460 |
label_end_to_end: od konce do konce |
| 457 | 461 |
label_start_to_start: od začátku do začátku |
| ... | ... | |
| 622 | 626 |
enumeration_activities: Aktivity (sledování času) |
| 623 | 627 |
error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." |
| 624 | 628 |
label_planning: Plánování |
| 629 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 625 | 630 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/fr.yml (revision 56) | ||
|---|---|---|
| 129 | 129 |
field_assigned_to: Assigné à |
| 130 | 130 |
field_priority: Priorité |
| 131 | 131 |
field_fixed_version: Version cible |
| 132 |
field_parent_issue: Child of |
|
| 133 |
field_potential_parent: Potential parent |
|
| 132 | 134 |
field_user: Utilisateur |
| 133 | 135 |
field_role: Rôle |
| 134 | 136 |
field_homepage: Site web |
| ... | ... | |
| 449 | 451 |
label_blocked_by: bloqué par |
| 450 | 452 |
label_precedes: précède |
| 451 | 453 |
label_follows: suit |
| 454 |
label_parents: child of |
|
| 455 |
label_children: parent of |
|
| 452 | 456 |
label_end_to_start: fin à début |
| 453 | 457 |
label_end_to_end: fin à fin |
| 454 | 458 |
label_start_to_start: début à début |
| ... | ... | |
| 557 | 561 |
text_regexp_info: ex. ^[A-Z0-9]+$ |
| 558 | 562 |
text_min_max_length_info: 0 pour aucune restriction |
| 559 | 563 |
text_project_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce projet et toutes ses données ? |
| 564 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 560 | 565 |
text_subprojects_destroy_warning: 'Ses sous-projets: %s seront également supprimés.' |
| 561 | 566 |
text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow |
| 562 | 567 |
text_are_you_sure: Etes-vous sûr ? |
| lang/es.yml (revision 56) | ||
|---|---|---|
| 115 | 115 |
field_assigned_to: Asignado a |
| 116 | 116 |
field_priority: Prioridad |
| 117 | 117 |
field_fixed_version: Target version |
| 118 |
field_parent_issue: Child of |
|
| 119 |
field_potential_parent: Potential parent |
|
| 118 | 120 |
field_user: Usuario |
| 119 | 121 |
field_role: Perfil |
| 120 | 122 |
field_homepage: Sitio web |
| ... | ... | |
| 386 | 388 |
label_blocked_by: bloqueado por |
| 387 | 389 |
label_precedes: anterior a |
| 388 | 390 |
label_follows: posterior a |
| 391 |
label_parents: child of |
|
| 392 |
label_children: parent of |
|
| 389 | 393 |
label_end_to_start: fin a principio |
| 390 | 394 |
label_end_to_end: fin a fin |
| 391 | 395 |
label_start_to_start: principio a principio |
| ... | ... | |
| 620 | 624 |
setting_default_projects_public: Los proyectos nuevos son públicos por defecto |
| 621 | 625 |
error_scm_annotate: "No existe la entrada o no ha podido ser anotada" |
| 622 | 626 |
label_planning: Planificación |
| 627 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 623 | 628 |
text_subprojects_destroy_warning: 'Sus subprojectos: %s también se eliminarán' |
| lang/nl.yml (revision 56) | ||
|---|---|---|
| 118 | 118 |
field_assigned_to: Toegewezen aan |
| 119 | 119 |
field_priority: Prioriteit |
| 120 | 120 |
field_fixed_version: Target version |
| 121 |
field_parent_issue: Child of |
|
| 122 |
field_potential_parent: Potential parent |
|
| 121 | 123 |
field_user: Gebruiker |
| 122 | 124 |
field_role: Rol |
| 123 | 125 |
field_homepage: Homepage |
| ... | ... | |
| 395 | 397 |
label_blocked_by: geblokkeerd door |
| 396 | 398 |
label_precedes: gaat vooraf aan |
| 397 | 399 |
label_follows: volgt op |
| 400 |
label_parents: child of |
|
| 401 |
label_children: parent of |
|
| 398 | 402 |
label_end_to_start: eind tot start |
| 399 | 403 |
label_end_to_end: eind tot eind |
| 400 | 404 |
label_start_to_start: start tot start |
| ... | ... | |
| 618 | 622 |
setting_default_projects_public: New projects are public by default |
| 619 | 623 |
error_scm_annotate: "The entry does not exist or can not be annotated." |
| 620 | 624 |
label_planning: Planning |
| 625 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 621 | 626 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/ko.yml (revision 56) | ||
|---|---|---|
| 120 | 120 |
field_assigned_to: 담당자 |
| 121 | 121 |
field_priority: 우선순위 |
| 122 | 122 |
field_fixed_version: Target version |
| 123 |
field_parent_issue: Child of |
|
| 124 |
field_potential_parent: Potential parent |
|
| 123 | 125 |
field_user: 유저 |
| 124 | 126 |
field_role: 역할 |
| 125 | 127 |
field_homepage: 홈페이지 |
| ... | ... | |
| 402 | 404 |
label_blocked_by: 막고 있는 이슈 |
| 403 | 405 |
label_precedes: 다음 이슈보다 앞서서 처리해야 함. |
| 404 | 406 |
label_follows: 선처리 이슈 |
| 407 |
label_parents: child of |
|
| 408 |
label_children: parent of |
|
| 405 | 409 |
label_end_to_start: end to start |
| 406 | 410 |
label_end_to_end: end to end |
| 407 | 411 |
label_start_to_start: start to start |
| ... | ... | |
| 617 | 621 |
setting_default_projects_public: New projects are public by default |
| 618 | 622 |
error_scm_annotate: "The entry does not exist or can not be annotated." |
| 619 | 623 |
label_planning: Planning |
| 624 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 620 | 625 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/zh-tw.yml (revision 56) | ||
|---|---|---|
| 131 | 131 |
field_assigned_to: 分派給 |
| 132 | 132 |
field_priority: 優先權 |
| 133 | 133 |
field_fixed_version: 版本 |
| 134 |
field_parent_issue: Child of |
|
| 135 |
field_potential_parent: Potential parent |
|
| 134 | 136 |
field_user: 用戶 |
| 135 | 137 |
field_role: 角色 |
| 136 | 138 |
field_homepage: 網站首頁 |
| ... | ... | |
| 453 | 455 |
label_blocked_by: 被阻擋 |
| 454 | 456 |
label_precedes: 優先於 |
| 455 | 457 |
label_follows: 跟隨於 |
| 458 |
label_parents: child of |
|
| 459 |
label_children: parent of |
|
| 456 | 460 |
label_end_to_start: end to start |
| 457 | 461 |
label_end_to_end: end to end |
| 458 | 462 |
label_start_to_start: start to start |
| ... | ... | |
| 561 | 565 |
text_regexp_info: eg. ^[A-Z0-9]+$ |
| 562 | 566 |
text_min_max_length_info: 0 代表「不限制」 |
| 563 | 567 |
text_project_destroy_confirmation: 您確定要刪除這個專案和其他相關資料? |
| 568 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 564 | 569 |
text_subprojects_destroy_warning: '下列子專案: %s 將一併被刪除。' |
| 565 | 570 |
text_workflow_edit: 選擇角色與追蹤標籤以設定其工作流程 |
| 566 | 571 |
text_are_you_sure: 確定執行? |
| lang/pl.yml (revision 56) | ||
|---|---|---|
| 115 | 115 |
field_assigned_to: Przydzielony do |
| 116 | 116 |
field_priority: Priorytet |
| 117 | 117 |
field_fixed_version: Wersja docelowa |
| 118 |
field_parent_issue: Child of |
|
| 119 |
field_potential_parent: Potential parent |
|
| 118 | 120 |
field_user: Użytkownik |
| 119 | 121 |
field_role: Rola |
| 120 | 122 |
field_homepage: Strona www |
| ... | ... | |
| 386 | 388 |
label_blocked_by: zablokowane przez |
| 387 | 389 |
label_precedes: poprzedza |
| 388 | 390 |
label_follows: podąża |
| 391 |
label_parents: child of |
|
| 392 |
label_children: parent of |
|
| 389 | 393 |
label_end_to_start: koniec do początku |
| 390 | 394 |
label_end_to_end: koniec do końca |
| 391 | 395 |
label_start_to_start: początek do początku |
| ... | ... | |
| 617 | 621 |
setting_default_projects_public: Nowe projekty są domyślnie publiczne |
| 618 | 622 |
error_scm_annotate: "Wpis nie istnieje lub nie można do niego dodawać adnotacji." |
| 619 | 623 |
label_planning: Planning |
| 624 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 620 | 625 |
text_subprojects_destroy_warning: 'Its subproject(s): %s will be also deleted.' |
| lang/th.yml (revision 56) | ||
|---|---|---|
| 129 | 129 |
field_assigned_to: มอบหมายให้ |
| 130 | 130 |
field_priority: ความสำคัญ |
| 131 | 131 |
field_fixed_version: รุ่น |
| 132 |
field_parent_issue: Child of |
|
| 133 |
field_potential_parent: Potential parent |
|
| 132 | 134 |
field_user: ผู้ใช้ |
| 133 | 135 |
field_role: บทบาท |
| 134 | 136 |
field_homepage: หน้าแรก |
| ... | ... | |
| 451 | 453 |
label_blocked_by: กีดกันโดย |
| 452 | 454 |
label_precedes: นำหน้า |
| 453 | 455 |
label_follows: ตามหลัง |
| 456 |
label_parents: child of |
|
| 457 |
label_children: parent of |
|
| 454 | 458 |
label_end_to_start: จบ-เริ่ม |
| 455 | 459 |
label_end_to_end: จบ-จบ |
| 456 | 460 |
label_start_to_start: เริ่ม-เริ่ม |
| ... | ... | |
| 559 | 563 |
text_regexp_info: ตัวอย่าง ^[A-Z0-9]+$ |
| 560 | 564 |
text_min_max_length_info: 0 หมายถึงไม่จำกัด |
| 561 | 565 |
text_project_destroy_confirmation: คุณแน่ใจไหมว่าต้องการลบโครงการและข้อมูลที่เกี่ยวข้่อง ? |
| 566 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 562 | 567 |
text_subprojects_destroy_warning: 'โครงการย่อย: %s จะถูกลบด้วย.' |
| 563 | 568 |
text_workflow_edit: เลือกบทบาทและการติดตาม เพื่อแก้ไขลำดับงาน |
| 564 | 569 |
text_are_you_sure: คุณแน่ใจไหม ? |
| lang/no.yml (revision 56) | ||
|---|---|---|
| 131 | 131 |
field_assigned_to: Tildelt til |
| 132 | 132 |
field_priority: Prioritet |
| 133 | 133 |
field_fixed_version: Mål-versjon |
| 134 |
field_parent_issue: Child of |
|
| 135 |
field_potential_parent: Potential parent |
|
| 134 | 136 |
field_user: Bruker |
| 135 | 137 |
field_role: Rolle |
| 136 | 138 |
field_homepage: Hjemmeside |
| ... | ... | |
| 453 | 455 |
label_blocked_by: blokkert av |
| 454 | 456 |
label_precedes: kommer før |
| 455 | 457 |
label_follows: følger |
| 458 |
label_parents: child of |
|
| 459 |
label_children: parent of |
|
| 456 | 460 |
label_end_to_start: slutt til start |
| 457 | 461 |
label_end_to_end: slutt til slutt |
| 458 | 462 |
label_start_to_start: start til start |
| ... | ... | |
| 561 | 565 |
text_regexp_info: eg. ^[A-Z0-9]+$ |
| 562 | 566 |
text_min_max_length_info: 0 betyr ingen begrensning |
| 563 | 567 |
text_project_destroy_confirmation: Er du sikker på at du vil slette dette prosjekter og alle relatert data ? |
| 568 |
error_issue_can_have_only_one_parent: allows only one relation (a task can have only one parent). |
|
| 564 | 569 |
text_subprojects_destroy_warning: 'Underprojekt(ene): %s vil også bli slettet.' |
| 565 | 570 |
text_workflow_edit: Velg en rolle og en sakstype for å endre arbeidsflyten |
| 566 | 571 |
text_are_you_sure: Er du sikker ? |
| lang/it.yml (revision 56) | ||
|---|---|---|
| 118 | 118 |
field_assigned_to: Assegnato a |
| 119 | 119 |
field_priority: Priorita' |
| 120 | 120 |
field_fixed_version: Target version |
| 121 |
field_parent_issue: Child of |
|
| 122 |
field_potential_parent: Potential parent |
|
| 121 | 123 |
field_user: Utente |