private_issues_including_additional_patch_for_issues_count_and_unit_tests_for_redmine_1.0.5.r4569.patch

Patch for private issue including correct issue count. To be applied on Redmine 1.0-stable (r4569) - Adrien Crivelli, 2011-01-19 10:29

Download (75.4 KB)

View differences:

test/unit/issue_test.rb (working copy)
521 521
    assert !Issue.new(:due_date => nil).overdue?
522 522
    assert !Issue.new(:due_date => 1.day.ago.to_date, :status => IssueStatus.find(:first, :conditions => {:is_closed => true})).overdue?
523 523
  end
524
  
525
  def test_default_assign
526
    # Test fixtures contain "add_private_issues" permissions
527
    # Anonimous
528
    issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 6, :status_id => 1, :is_private => true, :priority => IssuePriority.all.first, :subject => 'test_private_create', :description => 'IssueTest#test_private_create', :estimated_hours => '5:30')
529
    assert issue.save
530
    issue.reload
531
    assert_equal false, issue.is_private
532
    # Manager
533
    issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 2, :status_id => 1, :is_private => true, :priority => IssuePriority.all.first, :subject => 'test_private_create', :description => 'IssueTest#test_private_create', :estimated_hours => '5:30')
534
    assert issue.save
535
    issue.reload
536
    assert_equal true, issue.is_private
537
    issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 2, :status_id => 1, :is_private => false, :priority => IssuePriority.all.first, :subject => 'test_private_create', :description => 'IssueTest#test_private_create', :estimated_hours => '5:30')
538
    assert issue.save
539
    issue.reload
540
    assert_equal false, issue.is_private
541
    # Reporter_is_private
542
    issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 13, :status_id => 1, :is_private => false, :priority => IssuePriority.all.first, :subject => 'test_private_create', :description => 'IssueTest#test_private_create', :estimated_hours => '5:30')
543
    assert issue.save
544
    issue.reload
545
    assert_equal true, issue.is_private
546
  end
547
  
548
  def test_visible
549
    issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 13, :status_id => 1, :is_private => true, :priority => IssuePriority.all.first, :subject => 'test_private_create', :description => 'IssueTest#test_private_create', :estimated_hours => '5:30')
550
    assert issue.save
551
    issue.reload
552
    # Test fixtures contain "view_private_issues" permissions
553
    # User with id #2 has Manager role
554
    assert issue.visible?(User.find(2))
555
    # User with id #3 has Developer role
556
    assert issue.visible?(User.find(3))
557
    # User with id #6 has Anonymous role
558
    assert ! issue.visible?(User.find(6))
559
    # User with id #4 does not have any role in project
560
    assert ! issue.visible?(User.find(4))
561
    # User with id #12 has Reporter role
562
    assert ! issue.visible?(User.find(12))
563
    # Test for author
564
    assert issue.visible?(User.find(13))
565
    # Test for assinged user #4
566
    issue.assigned_to=User.find(4)
567
    assert issue.visible?(User.find(4))
568
    # Test for watcher #12
569
    issue.add_watcher(User.find(12))
570
    assert issue.visible?(User.find(12))
571
  end
524 572

  
525 573
  context "#assignable_users" do
526 574
    should "be Users" do
......
537 585

  
538 586
    should "not show the issue author twice" do
539 587
      assignable_user_ids = Issue.find(1).assignable_users.collect(&:id)
540
      assert_equal 2, assignable_user_ids.length
588
      assert_equal 4, assignable_user_ids.length
541 589
      
542 590
      assignable_user_ids.each do |user_id|
543 591
        assert_equal 1, assignable_user_ids.count(user_id), "User #{user_id} appears more or less than once"
......
671 719
  test "#by_tracker" do
672 720
    groups = Issue.by_tracker(Project.find(1))
673 721
    assert_equal 3, groups.size
674
    assert_equal 7, groups.inject(0) {|sum, group| sum + group['total'].to_i}
722
    assert_equal 8, groups.inject(0) {|sum, group| sum + group['total'].to_i}
675 723
  end
676 724

  
677 725
  test "#by_version" do
......
683 731
  test "#by_priority" do
684 732
    groups = Issue.by_priority(Project.find(1))
685 733
    assert_equal 4, groups.size
686
    assert_equal 7, groups.inject(0) {|sum, group| sum + group['total'].to_i}
734
    assert_equal 8, groups.inject(0) {|sum, group| sum + group['total'].to_i}
687 735
  end
688 736

  
689 737
  test "#by_category" do
......
700 748

  
701 749
  test "#by_author" do
702 750
    groups = Issue.by_author(Project.find(1))
703
    assert_equal 4, groups.size
704
    assert_equal 7, groups.inject(0) {|sum, group| sum + group['total'].to_i}
751
    assert_equal 5, groups.size
752
    assert_equal 8, groups.inject(0) {|sum, group| sum + group['total'].to_i}
705 753
  end
706 754

  
707 755
  test "#by_subproject" do
test/unit/project_test.rb (working copy)
136 136
  end
137 137
  
138 138
  def test_destroy
139
    # 2 active members
140
    assert_equal 2, @ecookbook.members.size
139
    # 4 active members
140
    assert_equal 4, @ecookbook.members.size
141 141
    # and 1 is locked
142
    assert_equal 3, Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).size
142
    assert_equal 5, Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).size
143 143
    # some boards
144 144
    assert @ecookbook.boards.any?
145 145
    
......
842 842
    
843 843
  end
844 844

  
845
end
845
end
test/functional/issues_controller_test.rb (working copy)
280 280
  
281 281
  def test_show_should_deny_member_access_without_permission
282 282
    Role.find(1).remove_permission!(:view_issues)
283
    Role.find(1).remove_permission!(:view_private_issues)
283 284
    @request.session[:user_id] = 2
284 285
    get :show, :id => 1
285 286
    assert_response 403
......
316 317
    assert_not_nil assigns(:issue)
317 318
  end
318 319

  
320
  def test_show_private_issue_by_manager
321
    @request.session[:user_id] = 2
322
    get :show, :id => 14
323
    assert_response :success
324
    assert_tag :td, :attributes => { :class => 'private-issue'}
325
  end
326

  
327
  def test_show_private_issue_by_admin
328
    @request.session[:user_id] = 1
329
    get :show, :id => 14
330
    assert_response :success
331
    assert_tag :td, :attributes => { :class => 'private-issue'}
332
  end
333
  
334
  def test_show_private_issue_by_developer
335
    @request.session[:user_id] = 3
336
    get :show, :id => 14
337
    assert_response :success
338
    # Developer can view private issues
339
    assert_tag :td, :attributes => { :class => 'private-issue'}
340
  end
341

  
342
  def test_show_private_issue_by_issue_author
343
    # issue author always can browse his issue
344
    @request.session[:user_id] = 12
345
    get :show, :id => 14
346
    assert_response :success
347
    assert_tag :input, :attributes => { :name => 'issue[is_private]'}
348
    assert_tag :td, :attributes => { :class => 'private-issue'}
349
  end
350

  
351
  def test_show_private_issue_by_other_member
352
    # Reporter2 not can browse his issue
353
    @request.session[:user_id] = 13
354
    get :show, :id => 14
355
    assert_response 403
356
  end
357

  
358
  def test_show_private_issue_by_non_member
359
    @request.session[:user_id] = 4
360
    get :show, :id => 14
361
    assert_response 403
362
  end
363

  
364
  def test_show_private_issue_by_anonymous
365
    get :show, :id => 14
366
    assert_response 403
367
  end
368
  
319 369
  def test_get_new
320 370
    @request.session[:user_id] = 2
321 371
    get :new, :project_id => 1, :tracker_id => 1
......
326 376
                                                 :value => 'Default string' }
327 377
  end
328 378

  
379
  def test_get_new_manager
380
    # Manager have add_private_issue permission
381
    @request.session[:user_id] = 2
382
    get :new, :project_id => 1, :tracker_id => 1
383
    assert_response :success
384
    assert_template 'new'
385
    assert_tag :input, :attributes => { :name => 'issue[is_private]'}
386
  end
387

  
388
  def test_get_new_developer
389
    @request.session[:user_id] = 3
390
    get :new, :project_id => 1, :tracker_id => 1
391
    assert_response :success
392
    assert_template 'new'
393
    # Developer can't change issue type
394
    assert_no_tag :input, :attributes => { :name => 'issue[is_private]'}
395
  end
396

  
397
  def test_get_new_reporter
398
    @request.session[:user_id] = 12
399
    get :new, :project_id => 1, :tracker_id => 1
400
    assert_response :success
401
    assert_template 'new'
402
    # Reporter can add private issue
403
    assert_tag :input, :attributes => { :name => 'issue[is_private]'}
404
  end
405

  
406
  def test_get_new_admin
407
    @request.session[:user_id] = 1
408
    get :new, :project_id => 1, :tracker_id => 1
409
    assert_response :success
410
    assert_template 'new'
411
    assert_tag :input, :attributes => { :name => 'issue[is_private]'}
412
  end
413

  
414
  def test_get_new_reporter2
415
    @request.session[:user_id] = 13
416
    get :new, :project_id => 1, :tracker_id => 1
417
    assert_response :success
418
    assert_template 'new'
419
    assert_no_tag :input, :attributes => { :name => 'issue[is_private]'}
420
  end
421

  
329 422
  def test_get_new_without_tracker_id
330 423
    @request.session[:user_id] = 2
331 424
    get :new, :project_id => 1
......
1106 1199
                     :child => {:tag => 'form',
1107 1200
                                :child => {:tag => 'input', :attributes => {:name => 'issues', :type => 'hidden', :value => '1'}}}
1108 1201
  end
1109
end
1202
end
test/functional/activities_controller_test.rb (working copy)
84 84
      :attributes => {:href => 'http://test.host/issues/11'}}
85 85
  end
86 86
  
87
end
87
  
88
  #private issue are not visible for Anonymous user in global Activity
89
  def test_private_issue_global_activity_for_anonymous
90
    get :index
91
    assert_response :success
92
    assert_template 'index'
93
    assert_not_nil assigns(:events_by_day)
94

  
95
    assert_no_tag :tag => "h3",
96
               :content => /#{5.day.ago.to_date.day}/,
97
               :sibling => { :tag => "dl",
98
                 :child => { :tag => "dt",
99
                   :attributes => { :class => /issue/ },
100
                   :child => { :tag => "a",
101
                     :content => /#{Issue.find(14).subject}/,
102
                   }
103
                 }
104
               }
105
  end
106

  
107
  def test_private_issue_global_activity_for_manager
108
    @request.session[:user_id] = 2 # manager
109
    get :index
110
    assert_response :success
111
    assert_template 'index'
112
    assert_not_nil assigns(:events_by_day)
113

  
114
    assert_tag :tag => "h3",
115
               :content => /#{5.day.ago.to_date.day}/,
116
               :sibling => { :tag => "dl",
117
                 :child => { :tag => "dt",
118
                   :attributes => { :class => /issue/ },
119
                   :child => { :tag => "a",
120
                     :content => /#{Issue.find(14).subject}/,
121
                   }
122
                 }
123
               }
124
  end
125

  
126
  def test_private_issue_global_activity_for_developer
127
    @request.session[:user_id] = 3 # developer
128
    get :index
129
    assert_response :success
130
    assert_template 'index'
131
    assert_not_nil assigns(:events_by_day)
132

  
133
    assert_tag :tag => "h3",
134
               :content => /#{5.day.ago.to_date.day}/,
135
               :sibling => { :tag => "dl",
136
                 :child => { :tag => "dt",
137
                   :attributes => { :class => /issue/ },
138
                   :child => { :tag => "a",
139
                     :content => /#{Issue.find(14).subject}/,
140
                   }
141
                 }
142
               }
143
  end
144

  
145
  def test_private_issue_global_activity_for_non_member
146
    @request.session[:user_id] = 4 # does not have any role in project #1
147
    get :index
148
    assert_response :success
149
    assert_template 'index'
150
    assert_not_nil assigns(:events_by_day)
151

  
152
    assert_no_tag :tag => "h3",
153
               :content => /#{5.day.ago.to_date.day}/,
154
               :sibling => { :tag => "dl",
155
                 :child => { :tag => "dt",
156
                   :attributes => { :class => /issue/ },
157
                   :child => { :tag => "a",
158
                     :content => /#{Issue.find(14).subject}/,
159
                   }
160
                 }
161
               }
162
  end
163
  
164
end
test/fixtures/roles.yml (working copy)
12 12
    - :manage_categories
13 13
    - :view_issues
14 14
    - :add_issues
15
    - :add_private_issues
16
    - :view_private_issues
15 17
    - :edit_issues
16 18
    - :manage_issue_relations
17 19
    - :manage_subtasks
......
65 67
    - :manage_categories
66 68
    - :view_issues
67 69
    - :add_issues
70
    - :view_private_issues
68 71
    - :edit_issues
69 72
    - :manage_issue_relations
70 73
    - :manage_subtasks
......
109 112
    - :manage_categories
110 113
    - :view_issues
111 114
    - :add_issues
115
    - :add_private_issues
112 116
    - :edit_issues
113 117
    - :manage_issue_relations
114 118
    - :add_issue_notes
......
184 188
    - :view_changesets
185 189

  
186 190
  position: 5
191
roles_006: 
192
  name: Reporter2
193
  id: 6
194
  builtin: 0
195
  permissions: |
196
    --- 
197
    - :edit_project
198
    - :manage_members
199
    - :manage_versions
200
    - :manage_categories
201
    - :view_issues
202
    - :add_private_issues
203
    - :edit_issues
204
    - :manage_issue_relations
205
    - :add_issue_notes
206
    - :move_issues
207
    - :view_issue_watchers
208
    - :save_queries
209
    - :view_gantt
210
    - :view_calendar
211
    - :log_time
212
    - :view_time_entries
213
    - :manage_news
214
    - :comment_news
215
    - :view_documents
216
    - :manage_documents
217
    - :view_wiki_pages
218
    - :view_wiki_edits
219
    - :edit_wiki_pages
220
    - :delete_wiki_pages
221
    - :add_messages
222
    - :manage_boards
223
    - :view_files
224
    - :manage_files
225
    - :browse_repository
226
    - :view_changesets
187 227

  
228
  position: 6
test/fixtures/issues.yml (working copy)
244 244
  root_id: 13
245 245
  lft: 1
246 246
  rgt: 2
247
issues_014: 
248
  created_on: <%= 5.days.ago.to_date.to_s(:db) %>
249
  project_id: 1
250
  updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
251
  priority_id: 5
252
  subject: Private Issue
253
  id: 14
254
  fixed_version_id: 
255
  category_id: 
256
  description: Private Issue
257
  tracker_id: 1
258
  assigned_to_id: 
259
  author_id: 12
260
  status_id: 1
261
  is_private: 1
262
  root_id: 14
263
  lft: 1
264
  rgt: 2
test/fixtures/member_roles.yml (working copy)
47 47
  role_id: 2
48 48
  member_id: 10
49 49
  inherited_from: 10
50
member_roles_012: 
51
  id: 12
52
  role_id: 3
53
  member_id: 11
54
  inherited_from: 11
55
member_roles_013: 
56
  id: 13
57
  role_id: 6
58
  member_id: 12
59
  inherited_from: 12
test/fixtures/members.yml (working copy)
60 60
  project_id: 2
61 61
  user_id: 8
62 62
  mail_notification: false
63
members_011: 
64
  id: 11
65
  created_on: 2006-07-19 19:35:37 +02:00
66
  project_id: 1
67
  user_id: 12
68
members_012: 
69
  id: 12
70
  created_on: 2006-07-19 19:35:47 +02:00
71
  project_id: 1
72
  user_id: 13
test/fixtures/users.yml (working copy)
152 152
  id: 11
153 153
  lastname: B Team
154 154
  type: Group
155

  
156
  
155
users_012:
156
  id: 12
157
  created_on: 2009-01-27 01:20:19 +03:00
158
  status: 1
159
  last_login_on:
160
  language: 'ru'
161
  hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
162
  updated_on: 2009-01-27 19:33:19 +03:00
163
  admin: false
164
  mail: vasja@somenet.foo
165
  lastname: Pupkin
166
  firstname: Vasja
167
  auth_source_id:
168
  mail_notification: true
169
  login: vasiliy
170
  type: User
171
users_013:
172
  id: 13
173
  created_on: 2009-01-27 01:20:29 +03:00
174
  status: 1
175
  last_login_on:
176
  language: 'ru'
177
  hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192416
178
  updated_on: 2009-01-27 19:33:29 +03:00
179
  admin: false
180
  mail: petia@somenet.foo
181
  lastname: Pupkin
182
  firstname: Petia
183
  auth_source_id:
184
  mail_notification: true
185
  login: petr
186
  type: User
app/helpers/issues_helper.rb (working copy)
133 133
        label = l(:field_parent_issue)
134 134
        value = "##{detail.value}" unless detail.value.blank?
135 135
        old_value = "##{detail.old_value}" unless detail.old_value.blank?
136

  
137
      when detail.prop_key == 'is_private'
138
        value = l(detail.value == "1" ? :general_text_Yes : :general_text_No)
139
        old_value = l(detail.old_value == "1" ? :general_text_Yes : :general_text_No)
136 140
      end
137 141
    when 'cf'
138 142
      custom_field = CustomField.find_by_id(detail.prop_key)
......
199 203
                  l(:field_priority),
200 204
                  l(:field_subject),
201 205
                  l(:field_assigned_to),
206
                  l(:field_is_private),
202 207
                  l(:field_category),
203 208
                  l(:field_fixed_version),
204 209
                  l(:field_author),
......
226 231
                  issue.priority.name,
227 232
                  issue.subject,
228 233
                  issue.assigned_to,
234
                  issue.is_private,
229 235
                  issue.category,
230 236
                  issue.fixed_version,
231 237
                  issue.author.name,
app/models/issue.rb (working copy)
73 73
  after_destroy :destroy_children
74 74
  after_destroy :update_parent_attributes
75 75
  
76
  # Returns true if usr or current user is allowed to view the issue
77
  def visible?(usr=nil)
78
    (usr || User.current).allowed_to?(:view_issues, self.project)
76
  # Returns true if user is allowed to view the issue
77
  def visible?(user=User.current)
78
    user.allowed_to?(:view_issues, self.project) && (is_private==false || user.allowed_to?(:view_private_issues, self.project) || author == user || assigned_to == user || watched_by?(user))
79 79
  end
80 80
  
81 81
  def after_initialize
......
213 213
    estimated_hours
214 214
    custom_field_values
215 215
    lock_version
216
    is_private
216 217
  ) unless const_defined?(:SAFE_ATTRIBUTES)
217 218
  
218 219
  # Safely sets attributes
......
241 242
      end
242 243
    end
243 244
    
245
    if attrs['is_private'] and !user.allowed_to?(:add_private_issues, project)
246
      attrs.delete('is_private')
247
    end
248
    
244 249
    self.attributes = attrs
245 250
  end
246 251
  
......
501 506
        @time_entry.attributes = params[:time_entry]
502 507
        self.time_entries << @time_entry
503 508
      end
504
  
509

  
505 510
      if valid?
506 511
        attachments = Attachment.attach_files(self, params[:attachments])
507 512
  
app/models/query.rb (working copy)
129 129
    QueryColumn.new(:assigned_to, :sortable => ["#{User.table_name}.lastname", "#{User.table_name}.firstname", "#{User.table_name}.id"], :groupable => true),
130 130
    QueryColumn.new(:updated_on, :sortable => "#{Issue.table_name}.updated_on", :default_order => 'desc'),
131 131
    QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name", :groupable => true),
132
    QueryColumn.new(:is_private, :sortable => "#{Issue.table_name}.is_private", :groupable => true),
132 133
    QueryColumn.new(:fixed_version, :sortable => ["#{Version.table_name}.effective_date", "#{Version.table_name}.name"], :default_order => 'desc', :groupable => true),
133 134
    QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date"),
134 135
    QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date"),
......
198 199
    
199 200
    if User.current.logged?
200 201
      @available_filters["watcher_id"] = { :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] }
202
      @available_filters["is_private"] = { :type => :list, :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]], :order => 16 }
201 203
    end
202 204
  
203 205
    if project
......
442 444
      
443 445
    end if filters and valid?
444 446
    
447
    db_table = Watcher.table_name
448
    cu_id = User.current.id.to_s
449
    filters_clauses <<  '(' + Project.allowed_to_condition(User.current, :view_private_issues) + " OR #{Issue.table_name}.is_private=0 OR #{Issue.table_name}.author_id=#{cu_id} OR #{Issue.table_name}.assigned_to_id=#{cu_id} OR #{Issue.table_name}.id IN (SELECT #{db_table}.watchable_id FROM #{db_table} WHERE #{db_table}.watchable_type='Issue' AND user_id=#{cu_id}))"
445 450
    (filters_clauses << project_statement).join(' AND ')
446 451
  end
447 452
  
app/models/user.rb (working copy)
339 339
      
340 340
      roles = roles_for_project(project)
341 341
      return false unless roles
342
      roles.detect {|role| (project.is_public? || role.member?) && role.allowed_to?(action)}
342
      roles.any? {|role| (project.is_public? || role.member?) && role.allowed_to?(action)}
343 343
      
344 344
    elsif options[:global]
345 345
      # Admin users are always authorized
......
347 347
      
348 348
      # authorize if user has at least one role that has this permission
349 349
      roles = memberships.collect {|m| m.roles}.flatten.uniq
350
      roles.detect {|r| r.allowed_to?(action)} || (self.logged? ? Role.non_member.allowed_to?(action) : Role.anonymous.allowed_to?(action))
350
      roles.any? {|r| r.allowed_to?(action)} || (self.logged? ? Role.non_member.allowed_to?(action) : Role.anonymous.allowed_to?(action))
351 351
    else
352 352
      false
353 353
    end
app/controllers/issues_controller.rb (working copy)
97 97
  end
98 98
  
99 99
  def show
100
    return render_403 if !@issue.visible?
100 101
    @journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC")
101 102
    @journals.each_with_index {|j,i| j.indice = i+1}
102 103
    @journals.reverse! if User.current.wants_comments_in_reverse_order?
app/controllers/projects_controller.rb (working copy)
156 156
    @open_issues_by_tracker = Issue.visible.count(:group => :tracker,
157 157
                                            :include => [:project, :status, :tracker],
158 158
                                            :conditions => ["(#{cond}) AND #{IssueStatus.table_name}.is_closed=?", false])
159
    @total_private_issues_by_tracker = Issue.count(:group => :tracker,
160
                                             :include => [:project, :status, :tracker],
161
                                             :conditions => ["(#{cond}) AND #{Issue.table_name}.is_private=?", true])
162
    @open_private_issues_by_tracker = Issue.count(:group => :tracker,
163
                                             :include => [:project, :status, :tracker],
164
                                             :conditions => ["(#{cond}) AND #{IssueStatus.table_name}.is_closed=? AND #{Issue.table_name}.is_private=?", false, true])
159 165
    @total_issues_by_tracker = Issue.visible.count(:group => :tracker,
160 166
                                            :include => [:project, :status, :tracker],
161 167
                                            :conditions => cond)
app/controllers/activities_controller.rb (working copy)
22 22
    @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
23 23

  
24 24
    events = @activity.events(@date_from, @date_to)
25
	
26
	# The private issues should be removed from events
27
    events.delete_if { |e| e.is_a?(Issue) && !e.visible? || e.is_a?(Journal) && !e.issue.visible? }
25 28
    
26 29
    if events.empty? || stale?(:etag => [events.first, User.current])
27 30
      respond_to do |format|
app/views/projects/show.rhtml (working copy)
31 31
      <li><%= link_to tracker.name, :controller => 'issues', :action => 'index', :project_id => @project, 
32 32
                                                :set_filter => 1, 
33 33
                                                "tracker_id" => tracker.id %>:
34
           <% if User.current.allowed_to?(:view_private_issues, @project) %>
34 35
					<%= l(:label_x_open_issues_abbr_on_total, :count => @open_issues_by_tracker[tracker].to_i,
35
																										:total => @total_issues_by_tracker[tracker].to_i) %>
36
                                                                                                                                       :total => (@total_issues_by_tracker[tracker].to_i)) %>
37
        (<%= @total_private_issues_by_tracker[tracker] || 0 %> <%= l(:label_private_issues, @total_private_issues_by_tracker[tracker] || 0) %>)
38
              <% else %>
39
            <%= l(:label_x_open_issues_abbr_on_total, :count => (@open_issues_by_tracker[tracker].to_i)-(@open_private_issues_by_tracker[tracker] || 0),
40
                                                                                                                                       :total => (@total_issues_by_tracker[tracker].to_i)-(@total_private_issues_by_tracker[tracker] || 0)) %>
41
            <% end %>
36 42
			</li>
37 43
    <% end %>
38 44
    </ul>
app/views/issues/_form.rhtml (working copy)
24 24
<div id="attributes" class="attributes">
25 25
	<%= render :partial => 'issues/attributes' %>
26 26
</div>
27
<% if User.current.allowed_to?(:add_issues, @project) && User.current.allowed_to?(:add_private_issues, @project) %>
28
<p><%=f.check_box :is_private %></p>
29
<% end %>
27 30

  
28 31
<% if @issue.new_record? %>
29 32
<p id="attachments_form"><%= label_tag('attachments[1][file]', l(:label_attachment_plural))%><%= render :partial => 'attachments/form' %></p>
app/views/issues/show.rhtml (working copy)
40 40
    <% if @issue.estimated_hours %>
41 41
    <th class="estimated-hours"><%=l(:field_estimated_hours)%>:</th><td class="estimated-hours"><%= l_hours(@issue.estimated_hours) %></td>
42 42
    <% end %>
43
    <% if @issue.is_private %>
44
    <th class="private-issue"><%=l(:field_is_private)%>:</th><td class="private-issue"><%=l(:general_text_Yes)%></td>
45
    <% end %>
43 46
</tr>
44 47
<%= render_custom_fields_rows(@issue) %>
45 48
<%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
config/locales/lt.yml (working copy)
334 334
  field_default_value: Numatytoji vertė
335 335
  field_comments_sorting: rodyti komentarus
336 336
  field_parent_title: Aukštesnio lygio puslapis
337
  field_is_private: Private issue
337 338
  field_editable: Redaguojamas
338 339
  field_watcher: Stebėtojas
339 340
  field_identity_url: OpenID URL
......
396 397
  permission_manage_versions: Valdyti versijas
397 398
  permission_manage_categories: Valdyti darbų kategorijas
398 399
  permission_add_issues: Sukurti darbus
400
  permission_add_private_issues: Add private issues
401
  permission_view_private_issues: View private issues
399 402
  permission_edit_issues: Redaguoti darbus
400 403
  permission_manage_issue_relations: Valdyti darbų ryšius
401 404
  permission_add_issue_notes: Sukurti pastabas
......
564 567
  label_public_projects: Vieši projektai
565 568
  label_open_issues: atidaryta
566 569
  label_open_issues_plural: atidaryti
570
  label_private_issues: private
571
  label_private_issues_plural: private
567 572
  label_closed_issues: uždaryta
568 573
  label_closed_issues_plural: uždaryti
569 574
  label_x_open_issues_abbr_on_total:
config/locales/ro.yml (working copy)
256 256
  field_default_value: Valoare implicita
257 257
  field_comments_sorting: Afișează comentarii
258 258
  field_parent_title: Pagina superioara
259
  field_is_private: Private issue
259 260
  field_editable: Modificabil
260 261
  field_watcher: Urmărește
261 262
  field_identity_url: URL OpenID
......
310 311
  permission_manage_versions: Editează versiuni
311 312
  permission_manage_categories: Editează categorii
312 313
  permission_add_issues: Adaugă tichete
314
  permission_add_private_issues: Add private issues
315
  permission_view_private_issues: View private issues
313 316
  permission_edit_issues: Editează tichete
314 317
  permission_manage_issue_relations: Editează relații tichete
315 318
  permission_add_issue_notes: Adaugă note
......
476 479
  label_public_projects: Proiecte publice
477 480
  label_open_issues: deschis
478 481
  label_open_issues_plural: deschise
482
  label_private_issues: private
483
  label_private_issues_plural: private
479 484
  label_closed_issues: închis
480 485
  label_closed_issues_plural: închise
481 486
  label_x_open_issues_abbr_on_total:
config/locales/zh.yml (working copy)
296 296
  field_default_value: 默认值
297 297
  field_comments_sorting: 显示注释
298 298
  field_parent_title: 上级页面
299
  field_is_private: Private issue
299 300
  field_editable: 可编辑
300 301
  field_watcher: 跟踪者
301 302
  field_identity_url: OpenID URL
......
365 366
  permission_manage_categories: 管理问题类别
366 367
  permission_view_issues: 查看问题
367 368
  permission_add_issues: 新建问题
369
  permission_add_private_issues: Add private issues
370
  permission_view_private_issues: View private issues
368 371
  permission_edit_issues: 更新问题
369 372
  permission_manage_issue_relations: 管理问题关联
370 373
  permission_add_issue_notes: 添加说明
......
535 538
  label_public_projects: 公开的项目
536 539
  label_open_issues: 打开
537 540
  label_open_issues_plural: 打开
541
  label_private_issues: private
542
  label_private_issues_plural: private
538 543
  label_closed_issues: 已关闭
539 544
  label_closed_issues_plural: 已关闭
540 545
  label_x_open_issues_abbr_on_total:
config/locales/pt.yml (working copy)
273 273
  field_default_value: Valor por omissão
274 274
  field_comments_sorting: Mostrar comentários
275 275
  field_parent_title: Página pai
276
  field_is_private: Private issue
276 277
  
277 278
  setting_app_title: Título da aplicação
278 279
  setting_app_subtitle: Sub-título da aplicação
......
432 433
  label_public_projects: Projectos públicos
433 434
  label_open_issues: aberto
434 435
  label_open_issues_plural: abertos
436
  label_private_issues: private
437
  label_private_issues_plural: private
435 438
  label_closed_issues: fechado
436 439
  label_closed_issues_plural: fechados
437 440
  label_x_open_issues_abbr_on_total:
......
749 752
  permission_edit_own_time_entries: Editar horas pessoais
750 753
  permission_manage_public_queries: Gerir queries públicas
751 754
  permission_add_issues: Adicionar tarefas
755
  permission_add_private_issues: Add private issues
756
  permission_view_private_issues: View private issues
752 757
  permission_log_time: Registar tempo gasto
753 758
  permission_view_changesets: Ver changesets
754 759
  permission_view_time_entries: Ver tempo gasto
config/locales/ca.yml (working copy)
289 289
  field_default_value: Valor predeterminat
290 290
  field_comments_sorting: Mostra els comentaris
291 291
  field_parent_title: Pàgina pare
292
  field_is_private: Private issue
292 293
  field_editable: Es pot editar
293 294
  field_watcher: Vigilància
294 295
  field_identity_url: URL OpenID
......
361 362
  permission_manage_categories: Gestiona les categories dels assumptes
362 363
  permission_view_issues: "Visualitza els assumptes"
363 364
  permission_add_issues: Afegeix assumptes
365
  permission_add_private_issues: Add private issues
366
  permission_view_private_issues: View private issues
364 367
  permission_edit_issues: Edita els assumptes
365 368
  permission_manage_issue_relations: Gestiona les relacions dels assumptes
366 369
  permission_add_issue_notes: Afegeix notes
......
536 539
  label_public_projects: Projectes públics
537 540
  label_open_issues: obert
538 541
  label_open_issues_plural: oberts
542
  label_private_issues: private
543
  label_private_issues_plural: private
539 544
  label_closed_issues: tancat
540 545
  label_closed_issues_plural: tancats
541 546
  label_x_open_issues_abbr_on_total:
config/locales/pt-BR.yml (working copy)
288 288
  field_default_value: Padrão
289 289
  field_comments_sorting: Visualizar comentários
290 290
  field_parent_title: Página pai
291
  field_is_private: Private issue
291 292

  
292 293
  setting_app_title: Título da aplicação
293 294
  setting_app_subtitle: Sub-título da aplicação
......
447 448
  label_public_projects: Projetos públicos
448 449
  label_open_issues: Aberta
449 450
  label_open_issues_plural: Abertas
451
  label_private_issues: private
452
  label_private_issues_plural: private
450 453
  label_closed_issues: Fechada
451 454
  label_closed_issues_plural: Fechadas
452 455
  label_x_open_issues_abbr_on_total:
......
765 768
  permission_edit_own_time_entries: Editar o próprio tempo de trabalho
766 769
  permission_manage_public_queries: Gerenciar consultas publicas
767 770
  permission_add_issues: Adicionar tarefas
771
  permission_add_private_issues: Add private issues
772
  permission_view_private_issues: View private issues
768 773
  permission_log_time: Adicionar tempo gasto
769 774
  permission_view_changesets: Ver changesets
770 775
  permission_view_time_entries: Ver tempo gasto
config/locales/tr.yml (working copy)
436 436
  label_public_projects: Genel Projeler
437 437
  label_open_issues: açık
438 438
  label_open_issues_plural: açık
439
  label_private_issues: private
440
  label_private_issues_plural: private
439 441
  label_closed_issues: kapalı
440 442
  label_closed_issues_plural: kapalı
441 443
  label_x_open_issues_abbr_on_total:
......
742 744
  label_generate_key: Generate a key
743 745
  setting_sequential_project_identifiers: Generate sequential project identifiers
744 746
  field_parent_title: Parent page
747
  field_is_private: Private issue
745 748
  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."
746 749
  text_enumeration_category_reassign_to: 'Reassign them to this value:'
747 750
  label_issue_watchers: Watchers
......
764 767
  permission_edit_own_time_entries: Edit own time logs
765 768
  permission_manage_public_queries: Manage public queries
766 769
  permission_add_issues: Add issues
770
  permission_add_private_issues: Add private issues
771
  permission_view_private_issues: View private issues
767 772
  permission_log_time: Log spent time
768 773
  permission_view_changesets: View changesets
769 774
  permission_view_time_entries: View spent time
config/locales/ru.yml (working copy)
357 357
  field_port: Порт
358 358
  field_possible_values: Возможные значения
359 359
  field_priority: Приоритет
360
  field_is_private: Частная задача
360 361
  field_project: Проект
361 362
  field_redirect_existing_links: Перенаправить существующие ссылки
362 363
  field_regexp: Регулярное выражение
......
599 600
  label_not_contains: не содержит
600 601
  label_not_equals: не соответствует
601 602
  label_open_issues: открыт
603
  label_private_issues_plural2: частных
604
  label_private_issues_plural5: частных
605
  label_private_issues_plural: частных
606
  label_private_issues: частная
602 607
  label_open_issues_plural: открыто
603 608
  label_open_issues_plural2: открыто
604 609
  label_open_issues_plural5: открыто
......
790 795

  
791 796
  permission_add_issues: Добавление задач
792 797
  permission_add_issue_notes: Добавление примечаний
798
  permission_add_private_issues: Добавление частных задач
799
  permission_view_private_issues: Просмотр частных задач
793 800
  permission_add_issue_watchers: Добавление наблюдателей
794 801
  permission_add_messages: Отправка сообщений
795 802
  permission_browse_repository: Просмотр хранилища
config/locales/id.yml (working copy)
275 275
  field_default_value: Nilai default
276 276
  field_comments_sorting: Tampilkan komentar
277 277
  field_parent_title: Halaman induk
278
  field_is_private: Private issue
278 279
  field_editable: Dapat disunting
279 280
  field_watcher: Pemantau
280 281
  field_identity_url: OpenID URL
......
336 337
  permission_manage_versions: Atur versi
337 338
  permission_manage_categories: Atur kategori masalah
338 339
  permission_add_issues: Tambahkan masalah
340
  permission_add_private_issues: Add private issues
341
  permission_view_private_issues: View private issues
339 342
  permission_edit_issues: Sunting masalah
340 343
  permission_manage_issue_relations: Atur kaitan masalah
341 344
  permission_add_issue_notes: Tambahkan catatan
......
505 508
  label_public_projects: Proyek publik
506 509
  label_open_issues: belum selesai
507 510
  label_open_issues_plural: belum selesai
511
  label_private_issues: private
512
  label_private_issues_plural: private
508 513
  label_closed_issues: selesai
509 514
  label_closed_issues_plural: selesai
510 515
  label_x_open_issues_abbr_on_total:
config/locales/el.yml (working copy)
271 271
  field_default_value: Προκαθορισμένη τιμή
272 272
  field_comments_sorting: Προβολή σχολίων
273 273
  field_parent_title: Γονική σελίδα
274
  field_is_private: Private issue
274 275
  field_editable: Επεξεργάσιμο
275 276
  field_watcher: Παρατηρητής
276 277
  field_identity_url: OpenID URL
......
329 330
  permission_manage_versions: Διαχείριση εκδόσεων
330 331
  permission_manage_categories: Διαχείριση κατηγοριών θεμάτων
331 332
  permission_add_issues: Προσθήκη θεμάτων
333
  permission_add_private_issues: Add private issues
334
  permission_view_private_issues: View private issues
332 335
  permission_edit_issues: Επεξεργασία θεμάτων
333 336
  permission_manage_issue_relations: Διαχείριση συσχετισμών θεμάτων
334 337
  permission_add_issue_notes: Προσθήκη σημειώσεων
......
495 498
  label_public_projects: Δημόσια έργα
496 499
  label_open_issues: Ανοικτό
497 500
  label_open_issues_plural: Ανοικτά
501
  label_private_issues: private
502
  label_private_issues_plural: private
498 503
  label_closed_issues: Κλειστό
499 504
  label_closed_issues_plural: Κλειστά
500 505
  label_x_open_issues_abbr_on_total:
config/locales/en.yml (working copy)
286 286
  field_default_value: Default value
287 287
  field_comments_sorting: Display comments
288 288
  field_parent_title: Parent page
289
  field_is_private: Private issue
289 290
  field_editable: Editable
290 291
  field_watcher: Watcher
291 292
  field_identity_url: OpenID URL
......
361 362
  permission_manage_categories: Manage issue categories
362 363
  permission_view_issues: View Issues
363 364
  permission_add_issues: Add issues
365
  permission_add_private_issues: Add private issues
366
  permission_view_private_issues: View private issues
364 367
  permission_edit_issues: Edit issues
365 368
  permission_manage_issue_relations: Manage issue relations
366 369
  permission_add_issue_notes: Add notes
......
536 539
  label_public_projects: Public projects
537 540
  label_open_issues: open
538 541
  label_open_issues_plural: open
542
  label_private_issues: private
543
  label_private_issues_plural: private
539 544
  label_closed_issues: closed
540 545
  label_closed_issues_plural: closed
541 546
  label_x_open_issues_abbr_on_total:
config/locales/gl.yml (working copy)
279 279
  field_onthefly: Creación do usuario "ao voo"
280 280
  field_parent: Proxecto pai
281 281
  field_parent_title: Páxina pai
282
  field_is_private: Private issue
282 283
  field_password: Contrasinal
283 284
  field_password_confirmation: Confirmación
284 285
  field_port: Porto
......
517 518
  label_not_equals: non igual
518 519
  label_open_issues: aberta
519 520
  label_open_issues_plural: abertas
521
  label_private_issues: private
522
  label_private_issues_plural: private
520 523
  label_optional_description: Descrición opcional
521 524
  label_options: Opcións
522 525
  label_overall_activity: Actividade global
......
669 672
  permission_add_issue_notes: Engadir notas
670 673
  permission_add_issue_watchers: Engadir seguidores
671 674
  permission_add_issues: Engadir peticións
675
  permission_add_private_issues: Add private issues
676
  permission_view_private_issues: View private issues
672 677
  permission_add_messages: Enviar mensaxes
673 678
  permission_browse_repository: Ollar repositorio
674 679
  permission_comment_news: Comentar noticias
config/locales/cs.yml (working copy)
413 413
  label_public_projects: Veřejné projekty
414 414
  label_open_issues: otevřený
415 415
  label_open_issues_plural: otevřené
416
  label_private_issues: private
417
  label_private_issues_plural: private
416 418
  label_closed_issues: uzavřený
417 419
  label_closed_issues_plural: uzavřené
418 420
  label_x_open_issues_abbr_on_total:
......
728 730
  setting_mail_handler_api_key: API klíč
729 731
  text_email_delivery_not_configured: "Doručování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci."
730 732
  field_parent_title: Rodičovská stránka
733
  field_is_private: Private issue
731 734
  label_issue_watchers: Sledování
732 735
  setting_commit_logs_encoding: Kódování zpráv při commitu
733 736
  button_quote: Citovat
......
741 744
  permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném čase
742 745
  permission_manage_public_queries: Správa veřejných dotazů
743 746
  permission_add_issues: Přidávání úkolů
747
  permission_add_private_issues: Add private issues
748
  permission_view_private_issues: View private issues
744 749
  permission_log_time: Zaznamenávání stráveného času
745 750
  permission_view_changesets: Zobrazování sady změn
746 751
  permission_view_time_entries: Zobrazení stráveného času
config/locales/es.yml (working copy)
302 302
  field_onthefly: Creación del usuario "al vuelo"
303 303
  field_parent: Proyecto padre
304 304
  field_parent_title: Página padre
305
  field_is_private: Private issue
305 306
  field_password: Contraseña
306 307
  field_password_confirmation: Confirmación
307 308
  field_port: Puerto
......
540 541
  label_not_equals: no igual
541 542
  label_open_issues: abierta
542 543
  label_open_issues_plural: abiertas
544
  label_private_issues: private
545
  label_private_issues_plural: private
543 546
  label_optional_description: Descripción opcional
544 547
  label_options: Opciones
545 548
  label_overall_activity: Actividad global
......
692 695
  permission_add_issue_notes: Añadir notas
693 696
  permission_add_issue_watchers: Añadir seguidores
694 697
  permission_add_issues: Añadir peticiones
698
  permission_add_private_issues: Add private issues
699
  permission_view_private_issues: View private issues
695 700
  permission_add_messages: Enviar mensajes
696 701
  permission_browse_repository: Hojear repositiorio
697 702
  permission_comment_news: Comentar noticias
config/locales/zh-TW.yml (working copy)
373 373
  field_default_value: 預設值
374 374
  field_comments_sorting: 註解排序
375 375
  field_parent_title: 父頁面
376
  field_is_private: Private issue
376 377
  field_editable: 可編輯
377 378
  field_watcher: 觀察者
378 379
  field_identity_url: OpenID 網址
......
451 452
  permission_manage_categories: 管理項目分類
452 453
  permission_view_issues: 檢視項目
453 454
  permission_add_issues: 新增項目
455
  permission_add_private_issues: Add private issues
456
  permission_view_private_issues: View private issues
454 457
  permission_edit_issues: 編輯項目
455 458
  permission_manage_issue_relations: 管理項目關聯
456 459
  permission_add_issue_notes: 新增筆記
......
626 629
  label_public_projects: 公開專案
627 630
  label_open_issues: 進行中
628 631
  label_open_issues_plural: 進行中
632
  label_private_issues: private
633
  label_private_issues_plural: private
629 634
  label_closed_issues: 已結束
630 635
  label_closed_issues_plural: 已結束
631 636
  label_x_open_issues_abbr_on_total:
config/locales/ko.yml (working copy)
323 323
  field_searchable: 검색가능
324 324
  field_comments_sorting: 댓글 정렬
325 325
  field_parent_title: 상위 제목
326
  field_is_private: Private issue
326 327
  field_editable: 편집가능
327 328
  field_watcher: 일감지킴이
328 329
  field_identity_url: OpenID URL
......
381 382
  permission_manage_versions: 버전 관리
382 383
  permission_manage_categories: 일감 범주 관리
383 384
  permission_add_issues: 일감 추가
385
  permission_add_private_issues: Add private issues
386
  permission_view_private_issues: View private issues
384 387
  permission_edit_issues: 일감 편집
385 388
  permission_manage_issue_relations: 일감 관계 관리
386 389
  permission_add_issue_notes: 덧글 추가
......
547 550
  label_public_projects: 공개 프로젝트
548 551
  label_open_issues: 진행중
549 552
  label_open_issues_plural: 진행중
553
  label_private_issues: private
554
  label_private_issues_plural: private
550 555
  label_closed_issues: 완료됨
551 556
  label_closed_issues_plural: 완료됨
552 557
  label_x_open_issues_abbr_on_total:
config/locales/it.yml (working copy)
376 376
  label_public_projects: Progetti pubblici
377 377
  label_open_issues: aperta
378 378
  label_open_issues_plural: aperte
379
  label_private_issues: private
380
  label_private_issues_plural: private
379 381
  label_closed_issues: chiusa
380 382
  label_closed_issues_plural: chiuse
381 383
  label_x_open_issues_abbr_on_total:
......
732 734
  setting_mail_handler_api_key: Chiave API
733 735
  text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle."
734 736
  field_parent_title: Pagina principale
737
  field_is_private: Private issue
735 738
  label_issue_watchers: Osservatori
736 739
  setting_commit_logs_encoding: Codifica dei messaggi di commit
737 740
  button_quote: Quota
......
745 748
  permission_edit_own_time_entries: Modifica propri time logs
746 749
  permission_manage_public_queries: Gestisci query pubbliche
747 750
  permission_add_issues: Aggiungi segnalazioni
751
  permission_add_private_issues: Add private issues
752
  permission_view_private_issues: View private issues
748 753
  permission_log_time: Segna tempo impiegato
749 754
  permission_view_changesets: Vedi changesets
750 755
  permission_view_time_entries: Vedi tempi impiegati
config/locales/sk.yml (working copy)
407 407
  label_public_projects: Verejné projekty
408 408
  label_open_issues: Otvorený
409 409
  label_open_issues_plural: Otvorené
410
  label_private_issues: private
411
  label_private_issues_plural: private
410 412
  label_closed_issues: Uzavrený
411 413
  label_closed_issues_plural: Uzavrené
412 414
  label_x_open_issues_abbr_on_total:
......
722 724
  setting_mail_handler_api_key: API kľúč
723 725
  text_email_delivery_not_configured: "Doručenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/email.yml a reštartnite aplikáciu pre aktiváciu funkcie."
724 726
  field_parent_title: Nadradená stránka
727
  field_is_private: Private issue
725 728
  label_issue_watchers: Pozorovatelia
726 729
  setting_commit_logs_encoding: Kódovanie prenášaných správ
727 730
  button_quote: Citácia
......
735 738
  permission_edit_own_time_entries: Úprava vlastných zaznamov o strávenom čase
736 739
  permission_manage_public_queries: Správa verejných otáziek
737 740
  permission_add_issues: Pridanie úlohy
741
  permission_add_private_issues: Add private issues
742
  permission_view_private_issues: View private issues
738 743
  permission_log_time: Zaznamenávanie stráveného času
739 744
  permission_view_changesets: Zobrazenie sád zmien
740 745
  permission_view_time_entries: Zobrazenie stráveného času
config/locales/sl.yml (working copy)
260 260
  field_default_value: Privzeta vrednost
261 261
  field_comments_sorting: Prikaži komentarje
262 262
  field_parent_title: Matična stran
263
  field_is_private: Private issue
263 264
  
264 265
  setting_app_title: Naslov aplikacije
265 266
  setting_app_subtitle: Podnaslov aplikacije
......
307 308
  permission_manage_versions: Uredi verzije
308 309
  permission_manage_categories: Urejanje kategorij zahtevkov
309 310
  permission_add_issues: Dodaj zahtevke
311
  permission_add_private_issues: Add private issues
312
  permission_view_private_issues: View private issues
310 313
  permission_edit_issues: Uredi zahtevke
311 314
  permission_manage_issue_relations: Uredi odnose med zahtevki
312 315
  permission_add_issue_notes: Dodaj zabeležke
......
472 475
  label_public_projects: Javni projekti
473 476
  label_open_issues: odpri zahtevek
474 477
  label_open_issues_plural: odpri zahtevke
478
  label_private_issues: private
479
  label_private_issues_plural: private
475 480
  label_closed_issues: zapri zahtevek
476 481
  label_closed_issues_plural: zapri zahtevke
477 482
  label_x_open_issues_abbr_on_total:
config/locales/uk.yml (working copy)
381 381
  label_public_projects: Публічні проекти
382 382
  label_open_issues: відкрите
383 383
  label_open_issues_plural: відкриті
384
  label_private_issues: private
385
  label_private_issues_plural: private
384 386
  label_closed_issues: закрите
385 387
  label_closed_issues_plural: закриті
386 388
  label_x_open_issues_abbr_on_total:
......
724 726
  setting_mail_handler_api_key: API key
725 727
  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."
726 728
  field_parent_title: Parent page
729
  field_is_private: Private issue
727 730
  label_issue_watchers: Watchers
728 731
  setting_commit_logs_encoding: Commit messages encoding
729 732
  button_quote: Quote
......
737 740
  permission_edit_own_time_entries: Edit own time logs
738 741
  permission_manage_public_queries: Manage public queries
739 742
  permission_add_issues: Add issues
743
  permission_add_private_issues: Add private issues
744
  permission_view_private_issues: View private issues
740 745
  permission_log_time: Log spent time
741 746
  permission_view_changesets: View changesets
742 747
  permission_view_time_entries: View spent time
config/locales/sr.yml (working copy)
285 285
  field_default_value: Подразумевана вредност
286 286
  field_comments_sorting: Прикажи коментаре
287 287
  field_parent_title: Матична страница
288
  field_is_private: Private issue
288 289
  field_editable: Изменљиво
289 290
  field_watcher: Посматрач
290 291
  field_identity_url: OpenID URL
......
357 358
  permission_manage_categories: Управљање категоријама проблема
358 359
  permission_view_issues: Преглед проблема
359 360
  permission_add_issues: Додавање проблема
361
  permission_add_private_issues: Add private issues
362
  permission_view_private_issues: View private issues
360 363
  permission_edit_issues: Измена проблема
361 364
  permission_manage_issue_relations: Управљање везама између проблема
362 365
  permission_add_issue_notes: Додавање белешки
......
532 535
  label_open_issues_plural: отворених
533 536
  label_closed_issues: затворен
534 537
  label_closed_issues_plural: затворених
538
  label_private_issues: private
539
  label_private_issues_plural: private
535 540
  label_x_open_issues_abbr_on_total:
536 541
    zero:  0 отворених / {{total}}
537 542
    one:   1 отворен / {{total}}
config/locales/da.yml (working copy)
420 420
  label_public_projects: Offentlige projekter
421 421
  label_open_issues: åben
422 422
  label_open_issues_plural: åbne
423
  label_private_issues: private
424
  label_private_issues_plural: private
423 425
  label_closed_issues: lukket
424 426
  label_closed_issues_plural: lukkede
425 427
  label_x_open_issues_abbr_on_total:
......
735 737
  button_quote: Citér
736 738
  permission_view_files: Se filer
737 739
  permission_add_issues: Tilføj sager
740
  permission_add_private_issues: Add private issues
741
  permission_view_private_issues: View private issues
738 742
  permission_edit_own_messages: Redigér egne beskeder
739 743
  permission_delete_own_messages: Slet egne beskeder
740 744
  permission_manage_public_queries: Administrér offentlig forespørgsler
......
750 754
  setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer
751 755
  setting_plain_text_mail: Emails som almindelig tekst (ingen HTML)
752 756
  field_parent_title: Siden over
757
  field_is_private: Private issue
753 758
  text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slået fra.\nKonfigurér din SMTP server i config/email.yml og genstart applikationen for at aktivere email-afsendelse."
754 759
  permission_protect_wiki_pages: Beskyt wiki sider
755 760
  permission_manage_documents: Administrér dokumenter
config/locales/sv.yml (working copy)
333 333
  field_default_value: Standardvärde
334 334
  field_comments_sorting: Visa kommentarer
335 335
  field_parent_title: Föräldersida
336
  field_is_private: Private issue
336 337
  field_editable: Redigerbar
337 338
  field_watcher: Bevakare  
338 339
  field_identity_url: OpenID URL
......
408 409
  permission_manage_versions: Hantera versioner
409 410
  permission_manage_categories: Hantera ärendekategorier
410 411
  permission_add_issues: Lägga till ärenden
412
  permission_add_private_issues: Add private issues
413
  permission_view_private_issues: View private issues
411 414
  permission_edit_issues: Ändra ärenden
412 415
  permission_view_issues: Visa ärenden
413 416
  permission_manage_issue_relations: Hantera ärenderelationer
......
584 587
  label_public_projects: Publika projekt
585 588
  label_open_issues: öppen
586 589
  label_open_issues_plural: öppna
590
  label_private_issues: private
591
  label_private_issues_plural: private
587 592
  label_closed_issues: stängd
588 593
  label_closed_issues_plural: stängda
589 594
  label_x_open_issues_abbr_on_total:
config/locales/de.yml (working copy)
312 312
  field_group_by: Gruppiere Ergebnisse nach
313 313
  field_sharing: Gemeinsame Verwendung
314 314
  field_parent_issue: Übergeordnete Aufgabe
315

  
315
  field_is_private: Private issue
316
  
316 317
  setting_app_title: Applikations-Titel
317 318
  setting_app_subtitle: Applikations-Untertitel
318 319
  setting_welcome_text: Willkommenstext
......
377 378
  permission_manage_categories: Ticket-Kategorien verwalten
378 379
  permission_view_issues: Tickets anzeigen
379 380
  permission_add_issues: Tickets hinzufügen
381
  permission_add_private_issues: Add private issues
382
  permission_view_private_issues: View private issues
380 383
  permission_edit_issues: Tickets bearbeiten
381 384
  permission_manage_issue_relations: Ticket-Beziehungen verwalten
382 385
  permission_add_issue_notes: Kommentare hinzufügen
......
552 555
  label_public_projects: Öffentliche Projekte
553 556
  label_open_issues: offen
554 557
  label_open_issues_plural: offen
558
  label_private_issues: private
559
  label_private_issues_plural: private
555 560
  label_closed_issues: geschlossen
556 561
  label_closed_issues_plural: geschlossen
557 562
  label_x_open_issues_abbr_on_total:
config/locales/bg.yml (working copy)
365 365
  label_public_projects: Публични проекти
366 366
  label_open_issues: отворена
367 367
  label_open_issues_plural: отворени
368
  label_private_issues: private
369
  label_private_issues_plural: private
368 370
  label_closed_issues: затворена
369 371
  label_closed_issues_plural: затворени
370 372
  label_x_open_issues_abbr_on_total:
......
721 723
  setting_mail_handler_api_key: API ключ
722 724
  text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и известията не са разрешени.\nКонфигурирайте вашия SMTP сървър в config/email.yml и рестартирайте Redmine, за да ги разрешите."
723 725
  field_parent_title: Родителска страница
726
  field_is_private: Private issue
724 727
  label_issue_watchers: Наблюдатели
725 728
  setting_commit_logs_encoding: Кодова таблица на съобщенията при поверяване
726 729
  button_quote: Цитат
......
734 737
  permission_edit_own_time_entries: Редактиране на собствените time logs
735 738
  permission_manage_public_queries: Управление на публичните заявки
736 739
  permission_add_issues: Добавяне на задачи
740
  permission_add_private_issues: Add private issues
741
  permission_view_private_issues: View private issues
737 742
  permission_log_time: Log spent time
738 743
  permission_view_changesets: Разглеждане на changesets
739 744
  permission_view_time_entries: Разглеждане на изразходваното време
......
919 924
  label_principal_search: "Търсене на потребител или група:"
920 925
  label_user_search: "Търсене на потребител:"
921 926
  field_visible: Видим
922
  setting_emails_header: Emails header
927
  setting_emails_header: Emails header
config/locales/ja.yml (working copy)
313 313
  field_default_value: デフォルト値
314 314
  field_comments_sorting: コメントを表示
315 315
  field_parent_title: 親ページ
316
  field_is_private: Private issue
... This diff was truncated because it exceeds the maximum size that can be displayed.