-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathinit.rb
More file actions
45 lines (40 loc) · 1.44 KB
/
init.rb
File metadata and controls
45 lines (40 loc) · 1.44 KB
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
require 'redmine'
Redmine::Plugin.register :custom_user_fields do
name 'Redmine custom user field plugin'
author 'Zhang Fan'
description 'Add \'Role of\' to custom filed of user type.'
version '0.1.0'
url 'http://web.4399.com'
author_url 'mailto:zhangfan@4399.net'
requires_redmine :version_or_higher => '2.0.0'
end
class UserFieldHook < Redmine::Hook::ViewListener
def view_custom_fields_form_upper_box(param={})
custom_field = param[:custom_field]
return unless custom_field.field_format == 'user'
f = param[:form]
str = f.select :role_of, [['All', '0']] + Role.all.collect{|g| [g.to_s, g.id.to_s]}, :label => 'Role of'
"<p>#{str}</p>"
end
end
RedmineApp::Application.config.after_initialize do
class CustomField
def role_of
return nil if field_format != 'user'
bt = read_attribute(:possible_values)
return bt unless bt.is_a?(Array)
bt[0]
end
def role_of=(arg)
self.possible_values = arg if field_format == 'user'
end
def possible_values_options_with_role(obj=nil)
return possible_values_options_without_role(obj) unless field_format == 'user' && role_of.present? && role_of != '0' && obj.respond_to?(:project) && obj.project
users = obj.project.users
role = Role.find(role_of)
users = users.select { |u| u.roles_for_project(obj.project).include?(role) } if role
users.sort.collect{|u| [u.to_s, u.id.to_s]}
end
alias_method_chain :possible_values_options, :role
end if defined? CustomField
end