Class: UserPreference
Constant Summary
collapse
- TEXTAREA_FONT_OPTIONS =
['monospace', 'proportional']
- DEFAULT_TOOLBAR_LANGUAGE_OPTIONS =
%w[c cpp csharp css diff go groovy html java javascript objc perl php python r ruby sass scala shell sql swift xml yaml]
Instance Method Summary
collapse
#delete_unsafe_attributes, included, #safe_attribute?, #safe_attribute_names, #safe_attributes=
Constructor Details
#initialize(attributes = nil, *args) ⇒ UserPreference
Returns a new instance of UserPreference.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'app/models/user_preference.rb', line 47
def initialize(attributes=nil, *args)
super
if new_record?
unless attributes && attributes.key?(:hide_mail)
self.hide_mail = Setting.default_users_hide_mail?
end
unless attributes && attributes.key?(:time_zone)
self.time_zone = Setting.default_users_time_zone
end
unless attributes && attributes.key?(:no_self_notified)
self.no_self_notified = Setting.default_users_no_self_notified
end
end
self.others ||= {}
end
|
Instance Method Details
#[](attr_name) ⇒ Object
67
68
69
70
71
72
73
|
# File 'app/models/user_preference.rb', line 67
def [](attr_name)
if has_attribute? attr_name
super
else
others ? others[attr_name] : nil
end
end
|
#[]=(attr_name, value) ⇒ Object
75
76
77
78
79
80
81
82
83
84
|
# File 'app/models/user_preference.rb', line 75
def []=(attr_name, value)
if has_attribute? attr_name
super
else
h = (read_attribute(:others) || {}).dup
h.update(attr_name => value)
write_attribute(:others, h)
value
end
end
|
#activity_scope ⇒ Object
98
|
# File 'app/models/user_preference.rb', line 98
def activity_scope; Array(self[:activity_scope]); end
|
#activity_scope=(value) ⇒ Object
99
|
# File 'app/models/user_preference.rb', line 99
def activity_scope=(value); self[:activity_scope]=value; end
|
#add_block(block) ⇒ Object
Adds block to the user page layout Returns nil if block is not valid or if it’s already present in the user page layout
170
171
172
173
174
175
176
177
178
179
|
# File 'app/models/user_preference.rb', line 170
def add_block(block)
block = block.to_s.underscore
return unless Redmine::MyPage.valid_block?(block, my_page_layout.values.flatten)
remove_block(block)
group = my_page_groups.first
my_page_layout[group] ||= []
my_page_layout[group].unshift(block)
end
|
86
|
# File 'app/models/user_preference.rb', line 86
def ; self[:comments_sorting]; end
|
87
|
# File 'app/models/user_preference.rb', line 87
def (order); self[:comments_sorting]=order; end
|
#default_issue_query ⇒ Object
121
|
# File 'app/models/user_preference.rb', line 121
def default_issue_query; self[:default_issue_query] end
|
#default_issue_query=(value) ⇒ Object
122
|
# File 'app/models/user_preference.rb', line 122
def default_issue_query=(value); self[:default_issue_query]=value; end
|
#default_project_query ⇒ Object
124
|
# File 'app/models/user_preference.rb', line 124
def default_project_query; self[:default_project_query] end
|
#default_project_query=(value) ⇒ Object
125
|
# File 'app/models/user_preference.rb', line 125
def default_project_query=(value); self[:default_project_query]=value; end
|
#history_default_tab ⇒ Object
106
|
# File 'app/models/user_preference.rb', line 106
def history_default_tab; self[:history_default_tab]; end
|
#history_default_tab=(value) ⇒ Object
107
|
# File 'app/models/user_preference.rb', line 107
def history_default_tab=(value); self[:history_default_tab]=value; end
|
#my_page_groups ⇒ Object
Returns the names of groups that are displayed on user’s page Example:
preferences.my_page_groups
131
132
133
|
# File 'app/models/user_preference.rb', line 131
def my_page_groups
Redmine::MyPage.groups
end
|
#my_page_layout ⇒ Object
135
136
137
|
# File 'app/models/user_preference.rb', line 135
def my_page_layout
self[:my_page_layout] ||= Redmine::MyPage.default_layout.deep_dup
end
|
#my_page_layout=(arg) ⇒ Object
139
140
141
|
# File 'app/models/user_preference.rb', line 139
def my_page_layout=(arg)
self[:my_page_layout] = arg
end
|
#my_page_settings(block = nil) ⇒ Object
143
144
145
146
147
148
149
150
|
# File 'app/models/user_preference.rb', line 143
def my_page_settings(block=nil)
s = self[:my_page_settings] ||= {}
if block
s[block] ||= {}
else
s
end
end
|
#my_page_settings=(arg) ⇒ Object
152
153
154
|
# File 'app/models/user_preference.rb', line 152
def my_page_settings=(arg)
self[:my_page_settings] = arg
end
|
#no_self_notified ⇒ Object
92
|
# File 'app/models/user_preference.rb', line 92
def no_self_notified; (self[:no_self_notified] == true || self[:no_self_notified] == '1'); end
|
#no_self_notified=(value) ⇒ Object
93
|
# File 'app/models/user_preference.rb', line 93
def no_self_notified=(value); self[:no_self_notified]=value; end
|
#notify_about_high_priority_issues ⇒ Object
95
|
# File 'app/models/user_preference.rb', line 95
def notify_about_high_priority_issues; (self[:notify_about_high_priority_issues] == true || self[:notify_about_high_priority_issues] == '1'); end
|
#notify_about_high_priority_issues=(value) ⇒ Object
96
|
# File 'app/models/user_preference.rb', line 96
def notify_about_high_priority_issues=(value); self[:notify_about_high_priority_issues]=value; end
|
#order_blocks(group, blocks) ⇒ Object
Sets the block order for the given group. Example:
preferences.order_blocks('left', ['issueswatched', 'news'])
184
185
186
187
188
189
190
191
|
# File 'app/models/user_preference.rb', line 184
def order_blocks(group, blocks)
group = group.to_s
if Redmine::MyPage.groups.include?(group) && blocks.present?
blocks = blocks.map(&:underscore) & my_page_layout.values.flatten
blocks.each {|block| remove_block(block)}
my_page_layout[group] = blocks
end
end
|
#recently_used_projects ⇒ Object
104
|
# File 'app/models/user_preference.rb', line 104
def recently_used_projects; (self[:recently_used_projects] || 3).to_i; end
|
#recently_used_projects=(value) ⇒ Object
105
|
# File 'app/models/user_preference.rb', line 105
def recently_used_projects=(value); self[:recently_used_projects] = value.to_i; end
|
#remove_block(block) ⇒ Object
Removes block from the user page layout Example:
preferences.remove_block('news')
159
160
161
162
163
164
165
|
# File 'app/models/user_preference.rb', line 159
def remove_block(block)
block = block.to_s.underscore
my_page_layout.each_key do |group|
my_page_layout[group].delete(block)
end
my_page_layout
end
|
#set_others_hash ⇒ Object
63
64
65
|
# File 'app/models/user_preference.rb', line 63
def set_others_hash
self.others ||= {}
end
|
#textarea_font ⇒ Object
101
|
# File 'app/models/user_preference.rb', line 101
def textarea_font; self[:textarea_font]; end
|
#textarea_font=(value) ⇒ Object
102
|
# File 'app/models/user_preference.rb', line 102
def textarea_font=(value); self[:textarea_font]=value; end
|
109
110
111
|
# File 'app/models/user_preference.rb', line 109
def toolbar_language_options
self[:toolbar_language_options].presence || DEFAULT_TOOLBAR_LANGUAGE_OPTIONS.join(',')
end
|
113
114
115
116
117
118
119
|
# File 'app/models/user_preference.rb', line 113
def toolbar_language_options=(value)
languages =
value.to_s.delete(' ').split(',').select do |lang|
Redmine::SyntaxHighlighting.language_supported?(lang)
end.compact
self[:toolbar_language_options] = languages.join(',')
end
|
#update_block_settings(block, settings) ⇒ Object
193
194
195
196
197
|
# File 'app/models/user_preference.rb', line 193
def update_block_settings(block, settings)
block = block.to_s
block_settings = my_page_settings(block).merge(settings.symbolize_keys)
my_page_settings[block] = block_settings
end
|
#warn_on_leaving_unsaved ⇒ Object
89
|
# File 'app/models/user_preference.rb', line 89
def warn_on_leaving_unsaved; self[:warn_on_leaving_unsaved] || '1'; end
|
#warn_on_leaving_unsaved=(value) ⇒ Object
90
|
# File 'app/models/user_preference.rb', line 90
def warn_on_leaving_unsaved=(value); self[:warn_on_leaving_unsaved]=value; end
|