Feature #3848 » patch-3848_log-time-for-others-users-ld.diff
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> |