blob: ad2e13f154e39c558b252571aa1c546ef9870a7f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#
# Allows anyone who is authorized to log time be able to log time
# as anyone else who is also authorized to log time.
#
module RedmineHacks
class Hooks < Redmine::Hook::ViewListener
def controller_timelog_edit_before_save(context={})
params = context[:params]
time_entry = context[:time_entry]
if params[:time_entry] && params[:time_entry][:user_id]
user = User.find_by_id(params[:time_entry][:user_id])
if user && user.allowed_to?(:log_time, time_entry.project)
time_entry.user = user
end
end
end
def view_timelog_edit_form_bottom(context={})
form = context[:form]
time_entry = context[:time_entry]
"<p>%s</p>" % form.select(
:user_id,
timelog_user_collection_for_select_options(time_entry),
{:required => true},
{:size => time_entry.project.members.size}
)
end
protected
def timelog_user_collection_for_select_options(time_entry)
collection = time_entry.project.members.map{|member| member.user }.sort
collection.keep_if{|user| user.allowed_to?(:log_time, time_entry.project)}
if time_entry.user && !collection.include?(time_entry.user)
collection << time_entry.user
end
s = ''
collection.sort.each do |element|
if time_entry.user && time_entry.user == element
selected_attribute = ' selected="selected"'
else
selected_attribute = ''
end
s << %(<option value="#{element.id}"#{selected_attribute}>#{h element.login} - #{h element.name}</option>)
end
s.html_safe
end
end
end
|