diff -ru redmine-0.9.3/app/controllers/timelog_controller.rb redmine/app/controllers/timelog_controller.rb --- redmine-0.9.3/app/controllers/timelog_controller.rb 2010-02-28 13:28:06.000000000 +0300 +++ redmine/app/controllers/timelog_controller.rb 2010-03-18 13:39:08.467131702 +0300 @@ -210,8 +210,13 @@ def edit (render_403; return) if @time_entry && !@time_entry.editable_by?(User.current) - @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today) - @time_entry.attributes = params[:time_entry] + if request.post? and User.current.allowed_to?(:edit_time_entries, @project) + user = User.find(Hash[params[:time_entry].to_a]["user_id"].to_i) + else + user = User.current + end + @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => user, :spent_on => User.current.today) + @time_entry.send(:attributes=, params[:time_entry], false) call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry }) diff -ru redmine-0.9.3/app/helpers/timelog_helper.rb redmine/app/helpers/timelog_helper.rb --- redmine-0.9.3/app/helpers/timelog_helper.rb 2010-02-28 13:28:05.000000000 +0300 +++ redmine/app/helpers/timelog_helper.rb 2010-03-18 14:01:34.015608836 +0300 @@ -52,6 +52,16 @@ activities.each { |a| collection << [a.name, a.id] } collection end + + def user_collection_for_select_options + users = @projects = User.find(:all) + collection = [] + users.each do |a| + roles = a.roles_for_project(@project) + collection << [a.name, a.id] if roles and roles.detect {|role| role.member? && role.allowed_to?(:log_time)} + end + collection + end def select_hours(data, criteria, value) if value.to_s.empty? diff -ru redmine-0.9.3/app/views/timelog/edit.rhtml redmine/app/views/timelog/edit.rhtml --- redmine-0.9.3/app/views/timelog/edit.rhtml 2010-02-28 13:28:06.000000000 +0300 +++ redmine/app/views/timelog/edit.rhtml 2010-03-14 11:01:31.816092433 +0300 @@ -6,6 +6,9 @@

<%= f.text_field :issue_id, :size => 6 %> <%= h("#{@time_entry.issue.tracker.name} ##{@time_entry.issue.id}: #{@time_entry.issue.subject}") if @time_entry.issue %>

+<% if User.current.allowed_to?(:edit_time_entries, @project) %> +

<%= f.select :user_id, user_collection_for_select_options, :required => true %>

+<% end %>

<%= f.text_field :spent_on, :size => 10, :required => true %><%= calendar_for('time_entry_spent_on') %>

<%= f.text_field :hours, :size => 6, :required => true %>

<%= f.text_field :comments, :size => 100 %>