# HG changeset patch # User Toshi MARUYAMA # Date 1569477217 -32400 # 木 9月 26 14:53:37 2019 +0900 # Node ID cc08099410a2a8a4b116ff513212e72062bfbf95 # Parent 0ed4bf0b4ed8c532fe1762ed50235378f565e660 issue 31322 diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -85,6 +85,7 @@ class IssuesController < ApplicationCont end def show + @issue_statuses = IssueStatus.sorted.to_a @journals = @issue.visible_journals_with_index @has_changesets = @issue.changesets.visible.preload(:repository, :user).exists? @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } @@ -474,6 +475,7 @@ class IssuesController < ApplicationCont # Used by #edit and #update to set some common instance variables # from the params def update_issue_from_params + @issue_statuses = IssueStatus.sorted.to_a @time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project) if params[:time_entry] @time_entry.safe_attributes = params[:time_entry] 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 @@ -4,7 +4,7 @@
<% if @issue.safe_attribute?('status_id') && @allowed_statuses.present? %>

<%= 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 => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this);add_confirm_dialog()" %>

<%= 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 @@ -1,3 +1,20 @@ +<%= javascript_tag do %> + function add_confirm_dialog (){ + var closed_issue_statuses = + <%= @issue_statuses.select{|i| i.is_closed?}.pluck(:id).map(&:to_s).to_json.html_safe %>; + var children = $("#issue_tree").find("tr.issue.child"); + if (($.inArray($("#issue_status_id").val(), closed_issue_statuses) > -1) && + (children.length > 0) && + ((children.length - $("#issue_tree").find("tr.issue.child.closed").length) > 0)) { + $("#submit_button").attr({ + "data-confirm": 'POC' + }); + } else { + $("#submit_button").removeAttr("data-confirm"); + } + return true; + } +<% end %> <%= labelled_form_for @issue, :html => {:id => 'issue-form', :multipart => true} do |f| %> <%= error_messages_for 'issue', 'time_entry' %> <%= render :partial => 'conflict' if @conflict %> @@ -72,7 +89,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 => "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 %>