Changeset 370

Show
Ignore:
Timestamp:
12/28/06 20:21:06 (2 years ago)
Author:
jarmo
Message:
  • Added simple text (no markup) comments to work orders. Closes #212 and #206.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/app/controllers/work_order_controller.rb

    r367 r370  
    102102      return 
    103103    end 
    104     @events = @work_order.work_order_events 
    105104    @users = @work_order.asset.users(@work_order.responsible_user_id) 
    106105 
     
    126125      end 
    127126 
     127      @work_order.add_comment(params[:work_order_comment]) if params[:work_order_comment] 
     128 
    128129      case params[:work_order_action] 
    129130      when 'leave' 
    130         # We would save the comment here 
    131         return 
     131        # Do nothing 
    132132      when 'accept' 
    133133        @work_order.accept 
     
    160160      end 
    161161    end 
     162    @events = @work_order.work_order_events 
    162163  end 
    163164 
  • trunk/app/models/work_order.rb

    r369 r370  
    99  validates_length_of :short_description, :within => 4..100 
    1010  # Callbacks 
     11  after_find :save_original_state 
    1112  # Associations 
    1213  belongs_to :work_order_type 
     
    162163  end 
    163164 
     165  # Adds comment that will be stored to the timeline event created by save() 
     166  def add_comment(comment) 
     167    return unless comment and comment != '' 
     168 
     169    @comment = comment 
     170  end 
     171 
    164172  # Arguments: 
    165173  #   +create_state_change_event+:: If +true+, a new WorkOrderEvent (representing the 
     
    174182    end 
    175183 
    176     case self.state 
     184    new_state = (self.state == @original_state) ? nil : self.state 
     185 
     186    case new_state 
    177187      when @@ACCEPTED 
    178188        @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:ACCEPTED], 
    179189                                    :work_order_id => self.id, 
    180                                     :comment_text => self.short_description
     190                                    :comment_text => @comment
    181191      when @@CLOSED 
    182192        @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:CLOSED], 
    183193                                    :work_order_id => self.id, 
    184                                     :comment_text => self.short_description
     194                                    :comment_text => @comment
    185195      when @@ASSIGNED 
    186196        @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:ASSIGNED], 
    187197                                    :work_order_id => self.id, 
    188                                     :comment_text => self.short_description
     198                                    :comment_text => @comment
    189199                                    :work_order_owner => self.responsible_user) 
    190200        @message = Message.create(:receiver => self.responsible_user, 
     
    194204        @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:REOPENED], 
    195205                                    :work_order_id => self.id, 
    196                                     :comment_text => self.short_description) 
     206                                    :comment_text => @comment) 
     207      when nil # State unchanged 
     208        if @comment and @comment != '' 
     209          @event = WorkOrderEvent.create(:event_type => WorkOrderEvent.TYPES[:COMMENTED], 
     210                                      :work_order_id => self.id, 
     211                                      :comment_text => @comment) 
     212        end 
    197213    end 
    198214 
     
    291307 
    292308protected 
     309 
     310  # Saves the current state so that changes can be spotted 
     311  def save_original_state 
     312    @original_state = self.state if self.respond_to? :state 
     313 
     314    return true 
     315  end 
    293316 
    294317  # Converts the given string to float. 
  • trunk/app/models/work_order_event.rb

    r103 r370  
    1515    :ASSIGNED => 3, 
    1616    :ACCEPTED => 4, 
    17     :REOPENED => 5 
     17    :REOPENED => 5, 
     18    :COMMENTED => 6 
    1819  }.freeze 
    1920  cattr_reader :TYPES 
  • trunk/app/views/timeline/_display_event.rhtml

    r342 r370  
    2121        when WorkOrderEvent.TYPES[:REOPENED] 
    2222          _('Reopened by %s', event.creator ? event.creator.login_and_name : _('Unknown')) 
     23        when WorkOrderEvent.TYPES[:COMMENTED] 
     24          _('Comment added by %s', event.creator ? event.creator.login_and_name : _('Unknown')) 
    2325      end 
    2426      -%> 
  • trunk/app/views/work_order/_display_work_order_event.rhtml

    r330 r370  
    11<div class="work_order_event"> 
    2   <%= format_date(event.created_at) %> 
    3   <% case event.event_type 
    4     when WorkOrderEvent.TYPES[:CREATED] -%> 
    5       <%= _('Created by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
    6     <% when WorkOrderEvent.TYPES[:CLOSED] -%> 
    7       <%= _('Closed by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
    8     <% when WorkOrderEvent.TYPES[:ASSIGNED] -%> 
    9       <%= _('Assiged to %s by %s', event.work_order_owner ? event.work_order_owner.login_and_name : _('Unknown'),  event.creator ? event.creator.login_and_name : _('Unknown')) %> 
    10     <% when WorkOrderEvent.TYPES[:ACCEPTED] -%> 
    11       <%= _('Accepted by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
    12     <% when WorkOrderEvent.TYPES[:REOPENED] -%> 
    13       <%= _('Reopened by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
     2  <tr> 
     3    <th><%= format_date(event.created_at) %></th> 
     4    <th> 
     5      <% case event.event_type 
     6        when WorkOrderEvent.TYPES[:CREATED] -%> 
     7          <%= _('Created by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
     8        <% when WorkOrderEvent.TYPES[:CLOSED] -%> 
     9          <%= _('Closed by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
     10        <% when WorkOrderEvent.TYPES[:ASSIGNED] -%> 
     11          <%= _('Assiged to %s by %s', event.work_order_owner ? event.work_order_owner.login_and_name : _('Unknown'),  event.creator ? event.creator.login_and_name : _('Unknown')) %> 
     12        <% when WorkOrderEvent.TYPES[:ACCEPTED] -%> 
     13          <%= _('Accepted by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
     14        <% when WorkOrderEvent.TYPES[:REOPENED] -%> 
     15          <%= _('Reopened by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
     16        <% when WorkOrderEvent.TYPES[:COMMENTED] -%> 
     17          <%= _('Comment added by %s', event.creator ? event.creator.login_and_name : _('Unknown')) %> 
     18      <% end -%> 
     19    </th> 
     20  </tr> 
     21  <% if event.comment_text -%> 
     22    <tr> 
     23      <td colspan="2"><%= h(event.comment_text) %></td> 
     24    </tr> 
    1425  <% end -%> 
    1526</div> 
  • trunk/app/views/work_order/view.rhtml

    r345 r370  
    3434  <% end -%> 
    3535 
     36  <h4><%= _('Comments') %></h4> 
     37  <%= text_area_tag('work_order_comment', '', :cols => 80, :rows => 4) %> 
     38 
    3639<%= buttons_table(true, [_('Save changes')], [_('Cancel'), {:action => 'list'}]) %> 
    3740 
    3841<% unless @events.empty? -%> 
    3942  <div class="work_order_history"> 
    40     <h3><%= _('Change history') %></h3> 
    41     <% for event in @events -%> 
    42       <%= render(:partial => 'display_work_order_event', :locals => { :event => event }) %> 
    43     <% end -%> 
     43    <table> 
     44      <h3><%= _('Change history') %></h3> 
     45      <% for event in @events -%> 
     46        <%= render(:partial => 'display_work_order_event', :locals => { :event => event }) %> 
     47      <% end -%> 
     48    </table> 
    4449  </div> 
    4550<% end -%> 

© 2004-2007 Norfello Oy All Rights Reserved