# HG changeset patch # User Toshi MARUYAMA # Date 1569477217 -32400 # Thu Sep 26 14:53:37 2019 +0900 # Node ID 2025696351637866cf8bab7acbdf3a15d423ef4b # Parent 1ca1c6d58549b5b86b755f8ff342740e3d854f5a (#31322) diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -315,6 +315,13 @@ module IssuesHelper ids.size end + def add_confirm_dialog_to_issue_submit_button_js_string + # TODO: use i18n + confirm_message = "POC" + closed_issue_status_ids = @allowed_statuses.select{|i| i.is_closed?}.pluck(:id).map(&:to_s) + "add_confirm_dialog_to_issue_submit_button(#{closed_issue_status_ids.to_json}, '#{confirm_message}')".html_safe + end + def issues_destroy_confirmation_message(issues) issues = [issues] unless issues.is_a?(Array) message = l(:text_issues_destroy_confirmation) diff --git a/app/views/issues/_action_menu.html.erb b/app/views/issues/_action_menu.html.erb --- a/app/views/issues/_action_menu.html.erb +++ b/app/views/issues/_action_menu.html.erb @@ -1,6 +1,9 @@
+<% onclick_functions = 'showAndScrollTo("update", "issue_notes");' + onclick_functions << "#{add_confirm_dialog_to_issue_submit_button_js_string};" + onclick_functions << "return false;" %> <%= link_to l(:button_edit), edit_issue_path(@issue), - :onclick => 'showAndScrollTo("update", "issue_notes"); return false;', + :onclick => onclick_functions, :class => 'icon icon-edit', :accesskey => accesskey(:edit) if @issue.editable? %> <%= link_to l(:button_log_time), new_issue_time_entry_path(@issue), :class => 'icon icon-time-add' if User.current.allowed_to?(:log_time, @project) %> diff --git a/app/views/issues/_attributes.html.erb b/app/views/issues/_attributes.html.erb --- a/app/views/issues/_attributes.html.erb +++ b/app/views/issues/_attributes.html.erb @@ -3,8 +3,10 @@
<% if @issue.safe_attribute?('status_id') && @allowed_statuses.present? %> +<% onchange_functions = "updateIssueFrom('#{escape_javascript(update_issue_form_path(@project, @issue))}', this);" + onchange_functions << "#{add_confirm_dialog_to_issue_submit_button_js_string};" %>

<%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), {:required => true}, - :onchange => "updateIssueFrom('#{escape_javascript(update_issue_form_path(@project, @issue))}', this)" %>

+ :onchange => onchange_functions %>

<%= hidden_field_tag 'was_default_status', @issue.status_id, :id => nil if @issue.status == @issue.default_status %> <% else %>

<%= @issue.status %>

diff --git a/app/views/issues/_edit.html.erb b/app/views/issues/_edit.html.erb --- a/app/views/issues/_edit.html.erb +++ b/app/views/issues/_edit.html.erb @@ -72,7 +72,7 @@ <%= f.hidden_field :lock_version %> <%= hidden_field_tag 'last_journal_id', params[:last_journal_id] || @issue.last_journal_id %> - <%= submit_tag l(:button_submit) %> + <%= submit_tag l(:button_submit), :id => "issue_submit_button" %> <%= link_to l(:button_cancel), issue_path(id: @issue.id), :onclick => params[:action] == 'show' ? "$('#update').hide(); return false;" : '' %> <%= hidden_field_tag 'prev_issue_id', @prev_issue_id if @prev_issue_id %> diff --git a/public/javascripts/application.js b/public/javascripts/application.js --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -570,6 +570,20 @@ function randomKey(size) { return key; } +function add_confirm_dialog_to_issue_submit_button(closed_issue_status_ids, confirm_message) { + var children = $("#issue_tree").find("tr.issue.child"); + if (($.inArray($("#issue_status_id").val(), closed_issue_status_ids) > -1) && + (children.length > 0) && + ((children.length - $("#issue_tree").find("tr.issue.child.closed").length) > 0)) { + $("#issue_submit_button").attr({ + "data-confirm": confirm_message + }); + } else { + $("#issue_submit_button").removeAttr("data-confirm"); + } + return true; +} + function updateIssueFrom(url, el) { $('#all_attributes input, #all_attributes textarea, #all_attributes select').each(function(){ $(this).data('valuebeforeupdate', $(this).val());