summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2020-02-29 06:13:24 +0000
committerGo MAEDA <maeda@farend.jp>2020-02-29 06:13:24 +0000
commit700ad847da0014114e3ca806bce56046b77aa9b3 (patch)
tree7ac7988dc7722c8c95c62092bea9993fb8c15d12
parent6b0afdc9ca096cb9f582aadfe6c072d61eea2fa6 (diff)
downloadredmine-700ad847da0014114e3ca806bce56046b77aa9b3.tar.gz
redmine-700ad847da0014114e3ca806bce56046b77aa9b3.zip
Add "Assign to me" shortcut to issue edit form (#29285).
Patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@19539 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/views/issues/_attributes.html.erb9
-rw-r--r--app/views/issues/_form.html.erb20
-rw-r--r--config/locales/en.yml1
-rw-r--r--public/stylesheets/application.css2
-rw-r--r--test/functional/issues_controller_test.rb37
5 files changed, 67 insertions, 2 deletions
diff --git a/app/views/issues/_attributes.html.erb b/app/views/issues/_attributes.html.erb
index 332ecbf19..0fc988576 100644
--- a/app/views/issues/_attributes.html.erb
+++ b/app/views/issues/_attributes.html.erb
@@ -15,8 +15,13 @@
<% end %>
<% if @issue.safe_attribute? 'assigned_to_id' %>
-<p><%= f.select :assigned_to_id, principals_options_for_select(@issue.assignable_users, @issue.assigned_to),
- :include_blank => true, :required => @issue.required_attribute?('assigned_to_id') %></p>
+<p>
+ <%= f.select :assigned_to_id, principals_options_for_select(@issue.assignable_users, @issue.assigned_to),
+ :include_blank => true, :required => @issue.required_attribute?('assigned_to_id') %>
+ <% if @issue.assignable_users.include?(User.current) %>
+ <a class="assign-to-me-link<%= ' hidden' if @issue.assigned_to_id == User.current.id %>" href="#" data-id="<%= User.current.id %>"><%= l(:label_assign_to_me) %></a>
+ <% end %>
+</p>
<% end %>
<% if @issue.safe_attribute?('category_id') && @issue.project.issue_categories.any? %>
diff --git a/app/views/issues/_form.html.erb b/app/views/issues/_form.html.erb
index fdf729140..214502b0a 100644
--- a/app/views/issues/_form.html.erb
+++ b/app/views/issues/_form.html.erb
@@ -60,5 +60,25 @@ $(document).ready(function(){
$("#issue_tracker_id, #issue_status_id").each(function(){
$(this).val($(this).find("option[selected=selected]").val());
});
+ $(".assign-to-me-link").click(function(event){
+ event.preventDefault();
+ var element = $(event.target);
+ $('#issue_assigned_to_id').val(element.data('id'));
+ element.hide();
+ });
+ $('#issue_assigned_to_id').change(function(event){
+ var assign_to_me_link = $(".assign-to-me-link");
+
+ if (assign_to_me_link.length > 0) {
+ var user_id = $(event.target).val();
+ var current_user_id = assign_to_me_link.data('id');
+
+ if (user_id == current_user_id) {
+ assign_to_me_link.hide();
+ } else {
+ assign_to_me_link.show();
+ }
+ }
+ });
});
<% end %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 3f0fd2d77..c4988e493 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1079,6 +1079,7 @@ en:
label_display_type_list: List
label_display_type_board: Board
label_my_bookmarks: My bookmarks
+ label_assign_to_me: Assign to me
button_login: Login
button_submit: Submit
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index bdfccf664..b3b4d9b42 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -540,6 +540,8 @@ div.issue.overdue .due-date .value { color: #c22; }
#trackers_description dt {font-weight: bold; text-decoration: underline;}
#trackers_description dd {margin: 0; padding: 0 0 1em 0;}
+#issue-form .assign-to-me-link { padding-left: 5px; }
+
fieldset.collapsible {border-width: 1px 0 0 0;}
fieldset.collapsible>legend { cursor:pointer; padding-left: 18px; background-position: 4px;}
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index ec07c8577..315125b91 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -2105,6 +2105,43 @@ class IssuesControllerTest < Redmine::ControllerTest
end
end
+ def test_update_form_should_render_assign_to_me_link_when_issue_can_be_assigned_to_the_current_user
+ @request.session[:user_id] = 1
+ get :show, :params => {
+ :id => 10
+ }
+
+ assert_select 'form#issue-form #attributes' do
+ assert_select 'a[class=?][data-id=?]', 'assign-to-me-link', '1', 1
+ end
+ end
+
+ def test_update_form_should_not_render_assign_to_me_link_when_issue_cannot_be_assigned_to_the_current_user
+ @request.session[:user_id] = 1
+ get :show, :params => {
+ :id => 2
+ }
+
+ assert_select 'form#issue-form #attributes' do
+ assert_select 'a[class=?]', 'assign-to-me-link', 0
+ end
+ end
+
+ def test_update_form_should_not_show_assign_to_me_link_when_issue_is_assigned_to_the_current_user
+ issue = Issue.find(10)
+ issue.assigned_to_id = 1
+ issue.save!
+
+ @request.session[:user_id] = 1
+ get :show, :params => {
+ :id => 10
+ }
+
+ assert_select 'form#issue-form #attributes' do
+ assert_select 'a[class=?]', 'assign-to-me-link hidden', 1
+ end
+ end
+
def test_show_should_deny_anonymous_access_without_permission
Role.anonymous.remove_permission!(:view_issues)
get(:show, :params => {:id => 1})