Feature #34303 » 34303.patch
app/controllers/context_menus_controller.rb | ||
---|---|---|
36 | 36 |
:log_time => (@project && User.current.allowed_to?(:log_time, @project)), |
37 | 37 |
:copy => User.current.allowed_to?(:copy_issues, @projects) && Issue.allowed_target_projects.any?, |
38 | 38 |
:add_watchers => User.current.allowed_to?(:add_issue_watchers, @projects), |
39 |
:delete => @issues.all?(&:deletable?) |
|
39 |
:delete => @issues.all?(&:deletable?), |
|
40 |
:add_subtask => @issue && !@issue.closed? && User.current.allowed_to?(:manage_subtasks, @project) |
|
40 | 41 |
} |
41 | 42 | |
42 | 43 |
@assignables = @issues.map(&:assignable_users).reduce(:&) |
app/helpers/issues_helper.rb | ||
---|---|---|
235 | 235 | |
236 | 236 |
# Returns a link for adding a new subtask to the given issue |
237 | 237 |
def link_to_new_subtask(issue) |
238 |
link_to(l(:button_add), url_for_new_subtask(issue)) |
|
239 |
end |
|
240 | ||
241 |
def url_for_new_subtask(issue) |
|
238 | 242 |
attrs = { |
239 | 243 |
:parent_issue_id => issue |
240 | 244 |
} |
241 | 245 |
attrs[:tracker_id] = issue.tracker unless issue.tracker.disabled_core_fields.include?('parent_issue_id') |
242 |
link_to(l(:button_add), new_project_issue_path(issue.project, :issue => attrs, :back_url => issue_path(issue))) |
|
246 |
params = {:issue => attrs} |
|
247 |
params[:back_url] = issue_path(issue) if controller_name == 'issues' && action_name == 'show' |
|
248 |
new_project_issue_path(issue.project, params) |
|
243 | 249 |
end |
244 | 250 | |
245 | 251 |
def trackers_options_for_select(issue) |
app/views/context_menus/issues.html.erb | ||
---|---|---|
151 | 151 |
<li><%= context_menu_link l(:button_log_time), new_issue_time_entry_path(@issue), |
152 | 152 |
:class => 'icon icon-time-add' %></li> |
153 | 153 |
<% end %> |
154 |
<% if @can[:add_subtask] -%> |
|
155 |
<li><%= context_menu_link l(:button_add_subtask), url_for_new_subtask(@issue), |
|
156 |
:class => 'icon icon-add' %></li> |
|
157 |
<% end %> |
|
154 | 158 |
<li><%= context_menu_link l(:button_copy), project_copy_issue_path(@project, @issue), |
155 | 159 |
:class => 'icon icon-copy', :disabled => !@can[:copy] %></li> |
156 | 160 |
<% else %> |
config/locales/en.yml | ||
---|---|---|
1160 | 1160 |
button_project_bookmark_delete: Remove bookmark |
1161 | 1161 |
button_filter: Filter |
1162 | 1162 |
button_actions: Actions |
1163 |
button_add_subtask: Add subtask |
|
1163 | 1164 | |
1164 | 1165 |
status_active: active |
1165 | 1166 |
status_registered: registered |
test/functional/context_menus_controller_test.rb | ||
---|---|---|
290 | 290 |
assert_select 'a', :text => 'eCookbook - Shared' |
291 | 291 |
end |
292 | 292 | |
293 |
def test_context_menu_should_include_add_subtask_link |
|
294 |
@request.session[:user_id] = 2 |
|
295 |
get( |
|
296 |
:issues, |
|
297 |
:params => { |
|
298 |
:ids => [1] |
|
299 |
} |
|
300 |
) |
|
301 |
assert_response :success |
|
302 | ||
303 |
assert_select 'a.icon-add[href=?]', '/projects/ecookbook/issues/new?issue%5Bparent_issue_id%5D=1&issue%5Btracker_id%5D=1', :text => 'Add subtask' |
|
304 |
end |
|
305 | ||
306 |
def test_context_menu_with_closed_issue_should_not_include_add_subtask_link |
|
307 |
@request.session[:user_id] = 2 |
|
308 |
get( |
|
309 |
:issues, |
|
310 |
:params => { |
|
311 |
:ids => [8] |
|
312 |
} |
|
313 |
) |
|
314 |
assert_response :success |
|
315 | ||
316 |
assert_select 'a.icon-add', :text => 'Add subtask', :count => 0 |
|
317 |
end |
|
318 | ||
319 |
def test_context_menu_multiple_issues_should_not_include_add_subtask_link |
|
320 |
@request.session[:user_id] = 2 |
|
321 |
get( |
|
322 |
:issues, |
|
323 |
:params => { |
|
324 |
:ids => [1, 2] |
|
325 |
} |
|
326 |
) |
|
327 |
assert_response :success |
|
328 | ||
329 |
assert_select 'a.icon-add', :text => 'Add subtask', :count => 0 |
|
330 |
end |
|
331 | ||
293 | 332 |
def test_context_menu_with_issue_that_is_not_visible_should_fail |
294 | 333 |
get( |
295 | 334 |
:issues, |
test/helpers/issues_helper_test.rb | ||
---|---|---|
360 | 360 |
assert_equal '06/06/2019', issue_due_date_details(issue) |
361 | 361 |
end |
362 | 362 |
end |
363 | ||
364 |
def test_url_for_new_subtask |
|
365 |
issue = Issue.find(1) |
|
366 |
params = {:issue => {:parent_issue_id => issue.id, :tracker_id => issue.tracker.id}} |
|
367 |
assert_equal new_project_issue_path(issue.project, params), |
|
368 |
url_for_new_subtask(issue) |
|
369 |
end |
|
363 | 370 |
end |
- « Previous
- 1
- …
- 4
- 5
- 6
- Next »