Project

General

Profile

Feature #3848 » patch-3848_log-time-for-others-users-ld.diff

Lars Dornheim, 2011-08-05 05:57

View differences:

redmine-1.1/app/controllers/timelog_controller.rb 2011-08-05 05:30:17.000000000 +0200
115 115

  
116 116
  verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
117 117
  def create
118
    @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today)
118
    # Check if current user has permissions to edit time entries
119
    if request.post? and User.current.allowed_to?(:edit_time_entries, @project)
120
      user = User.find(params[:time_entry][:user_id])
121
    else
122
      user = User.current
123
    end
124
    @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => user, :spent_on => User.current.today)
119 125
    @time_entry.attributes = params[:time_entry]
120 126
    
121 127
    call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
redmine-1.1/app/helpers/timelog_helper.rb 2011-08-05 01:49:47.000000000 +0200
53 53
    collection
54 54
  end
55 55
  
56
  # Returns a collection of users for a select field.
57
  def user_collection_for_select_options
58
    users = @projects = User.find(:all)
59
    collection = []
60
    users.each do |a|
61
      roles = a.roles_for_project(@project)
62
      collection << [a.name, a.id] if roles and roles.detect {|role| role.member? && role.allowed_to?(:log_time)}
63
    end
64
    collection
65
  end
66
  
56 67
  def select_hours(data, criteria, value)
57 68
  	if value.to_s.empty?
58 69
  		data.select {|row| row[criteria].blank? }
redmine-1.1/app/models/time_entry.rb 2011-08-05 05:46:02.000000000 +0200
23 23
  belongs_to :user
24 24
  belongs_to :activity, :class_name => 'TimeEntryActivity', :foreign_key => 'activity_id'
25 25
  
26
  attr_protected :project_id, :user_id, :tyear, :tmonth, :tweek
26
  attr_protected :project_id, :tyear, :tmonth, :tweek
27 27

  
28 28
  acts_as_customizable
29 29
  acts_as_event :title => Proc.new {|o| "#{l_hours(o.hours)} (#{(o.issue || o.project).event_title})"},
redmine-1.1/app/views/timelog/edit.rhtml 2011-08-05 01:49:47.000000000 +0200
11 11

  
12 12
<div class="box">
13 13
<p><%= f.text_field :issue_id, :size => 6 %> <em><%= h("#{@time_entry.issue.tracker.name} ##{@time_entry.issue.id}: #{@time_entry.issue.subject}") if @time_entry.issue %></em></p>
14
<% if User.current.allowed_to?(:edit_time_entries, @project) %>
15
<p> <%= f.select :user_id, user_collection_for_select_options, :required => true %></p>
16
<% end %>
14 17
<p><%= f.text_field :spent_on, :size => 10, :required => true %><%= calendar_for('time_entry_spent_on') %></p>
15 18
<p><%= f.text_field :hours, :size => 6, :required => true %></p>
16 19
<p><%= f.text_field :comments, :size => 100 %></p>
(10-10/21)