Feature #3848 » Allow-the-current-user-to-record-the-time-spent-0.9.3.patch
redmine/app/controllers/issues_controller.rb 2010-03-14 10:51:35.847313790 +0300 | ||
---|---|---|
187 | 187 |
end |
188 | 188 | |
189 | 189 |
if request.post? |
190 |
@time_entry = TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => Date.today) |
|
190 |
if User.current.allowed_to?(:edit_time_entries, @project) and params[:time_entry] |
|
191 |
user = User.find(Hash[params[:time_entry].to_a]["user_id"].to_i) |
|
192 |
else |
|
193 |
# TODO: Maybe I should throw an exception if the current user |
|
194 |
# tries to edit a time entry he is not allowed to. I don't |
|
195 |
# think it can happen with the actual flow. |
|
196 |
user = User.current |
|
197 |
end |
|
198 |
@time_entry = TimeEntry.new(:project => @project, :issue => @issue, :user => user, :spent_on => Date.today) |
|
191 | 199 |
@time_entry.attributes = params[:time_entry] |
192 | 200 |
if (@time_entry.hours.nil? || @time_entry.valid?) && @issue.valid? |
193 | 201 |
attachments = attach_files(@issue, params[:attachments]) |
redmine/app/controllers/timelog_controller.rb 2010-03-14 10:52:21.161752414 +0300 | ||
---|---|---|
210 | 210 |
|
211 | 211 |
def edit |
212 | 212 |
(render_403; return) if @time_entry && !@time_entry.editable_by?(User.current) |
213 |
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today) |
|
214 |
@time_entry.attributes = params[:time_entry] |
|
213 |
if request.post? and User.current.allowed_to?(:edit_time_entries, @project) |
|
214 |
user = User.find(Hash[params[:time_entry].to_a]["user_id"].to_i) |
|
215 |
else |
|
216 |
# TODO: Maybe I should throw an exception if the current user |
|
217 |
# tries to edit a time entry he is not allowed to. I don't think |
|
218 |
# it can happen with the actual flow. |
|
219 |
user = User.current |
|
220 |
end |
|
221 |
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => user, :spent_on => User.current.today) |
|
222 |
@time_entry.send(:attributes=, params[:time_entry], false) |
|
215 | 223 |
|
216 | 224 |
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry }) |
217 | 225 |
|
redmine/app/helpers/timelog_helper.rb 2010-03-14 10:43:55.418369147 +0300 | ||
---|---|---|
52 | 52 |
activities.each { |a| collection << [a.name, a.id] } |
53 | 53 |
collection |
54 | 54 |
end |
55 | ||
56 |
def user_collection_for_select_options |
|
57 |
users = @projects = User.find(:all) |
|
58 |
collection = [] |
|
59 |
users.each { |a| collection << [a.name, a.id] if a.allowed_to?(:log_time, @project) } |
|
60 |
collection |
|
61 |
end |
|
55 | 62 |
|
56 | 63 |
def select_hours(data, criteria, value) |
57 | 64 |
if value.to_s.empty? |
redmine/app/views/issues/_edit.rhtml 2010-03-14 10:48:21.554871727 +0300 | ||
---|---|---|
20 | 20 |
<% fields_for :time_entry, @time_entry, { :builder => TabularFormBuilder, :lang => current_language} do |time_entry| %> |
21 | 21 |
<div class="splitcontentleft"> |
22 | 22 |
<p><%= time_entry.text_field :hours, :size => 6, :label => :label_spent_time %> <%= l(:field_hours) %></p> |
23 |
<% if User.current.allowed_to?(:edit_time_entries, @project) %> |
|
24 |
<p><%= time_entry.select :user_id, user_collection_for_select_options %></p> |
|
25 |
<% end %> |
|
23 | 26 |
</div> |
24 | 27 |
<div class="splitcontentright"> |
25 | 28 |
<p><%= time_entry.select :activity_id, activity_collection_for_select_options %></p> |
redmine/app/views/timelog/edit.rhtml 2010-03-14 11:01:31.816092433 +0300 | ||
---|---|---|
6 | 6 | |
7 | 7 |
<div class="box"> |
8 | 8 |
<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> |
9 |
<% if User.current.allowed_to?(:edit_time_entries, @project) %> |
|
10 |
<p> <%= f.select :user_id, user_collection_for_select_options, :required => true %> </p> |
|
11 |
<% end %> |
|
9 | 12 |
<p><%= f.text_field :spent_on, :size => 10, :required => true %><%= calendar_for('time_entry_spent_on') %></p> |
10 | 13 |
<p><%= f.text_field :hours, :size => 6, :required => true %></p> |
11 | 14 |
<p><%= f.text_field :comments, :size => 100 %></p> |