Project

General

Profile

Patch #16364 » workflow_bugfix-master-2015-06-16.diff

Alexander Stehlik, 2015-06-16 19:04

View differences:

app/models/issue.rb
259 259
    self.status_id
260 260
  end
261 261

  
262
  # Returns the current status if the workflow allows the status to be unchanged
263
  # or the first status from the list of allowed new statuses.
264
  def status_id_or_first_allowed
265
    user = User.current
266
    if new_statuses_allowed_to(user).collect(&:id).include?(status_id.to_i)
267
      status_id
268
    else
269
      new_statuses_allowed_to(user).first(&:id).id
270
    end
271
  end
272

  
262 273
  # Sets the status.
263 274
  def status=(status)
264 275
    if status != self.status
......
646 657
        end
647 658
      end
648 659
    end
660

  
661
    unless new_statuses_allowed_to(User.current).collect(&:id).include?(status_id.to_i)
662
      errors.add :status_id
663
    end
649 664
  end
650 665

  
651 666
  # Validates the issue against additional workflow requirements
......
851 866
          assignee_transitions_allowed
852 867
          )
853 868
      end
854
      statuses << initial_status unless statuses.empty?
869
      statuses << initial_status if statuses.empty?
855 870
      statuses << default_status if include_default
856 871
      statuses = statuses.compact.uniq.sort
857 872
      if blocked?
app/views/issues/_attributes.html.erb
3 3
<div class="splitcontent">
4 4
<div class="splitcontentleft">
5 5
<% if @issue.safe_attribute?('status_id') && @allowed_statuses.present? %>
6
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), {:required => true},
6
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), {:required => true, :selected => @issue.status_id_or_first_allowed},
7 7
                :onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}')" %></p>
8 8
<%= hidden_field_tag 'was_default_status', @issue.status_id, :id => nil if @issue.status == @issue.default_status %>
9 9
<% else %>
(2-2/2)