@@ -225,29 +225,41 class Query < ActiveRecord::Base | |||
|
225 | 225 | |
|
226 | 226 | def available_filters |
|
227 | 227 | return @available_filters if @available_filters |
|
228 | ||
|
229 | @available_filters = { "status_id" => { :type => :list_status, :order => 1, :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } }, | |
|
230 | "tracker_id" => { :type => :list, :order => 2, :values => trackers.collect{|s| [s.name, s.id.to_s] } }, | |
|
231 | "priority_id" => { :type => :list, :order => 3, :values => IssuePriority.all.collect{|s| [s.name, s.id.to_s] } }, | |
|
232 | "subject" => { :type => :text, :order => 8 }, | |
|
233 | "created_on" => { :type => :date_past, :order => 9 }, | |
|
234 | "updated_on" => { :type => :date_past, :order => 10 }, | |
|
235 | "start_date" => { :type => :date, :order => 11 }, | |
|
236 | "due_date" => { :type => :date, :order => 12 }, | |
|
237 | "estimated_hours" => { :type => :float, :order => 13 }, | |
|
238 | "done_ratio" => { :type => :integer, :order => 14 }} | |
|
239 | ||
|
228 | @available_filters = { | |
|
229 | "status_id" => { | |
|
230 | :type => :list_status, :order => 1, | |
|
231 | :values => IssueStatus.find(:all, :order => 'position').collect{|s| [s.name, s.id.to_s] } | |
|
232 | }, | |
|
233 | "tracker_id" => { | |
|
234 | :type => :list, :order => 2, :values => trackers.collect{|s| [s.name, s.id.to_s] } | |
|
235 | }, | |
|
236 | "priority_id" => { | |
|
237 | :type => :list, :order => 3, :values => IssuePriority.all.collect{|s| [s.name, s.id.to_s] } | |
|
238 | }, | |
|
239 | "subject" => { :type => :text, :order => 8 }, | |
|
240 | "created_on" => { :type => :date_past, :order => 9 }, | |
|
241 | "updated_on" => { :type => :date_past, :order => 10 }, | |
|
242 | "start_date" => { :type => :date, :order => 11 }, | |
|
243 | "due_date" => { :type => :date, :order => 12 }, | |
|
244 | "estimated_hours" => { :type => :float, :order => 13 }, | |
|
245 | "done_ratio" => { :type => :integer, :order => 14 } | |
|
246 | } | |
|
240 | 247 | IssueRelation::TYPES.each do |relation_type, options| |
|
241 | @available_filters[relation_type] = {:type => :relation, :order => @available_filters.size + 100, :label => options[:name]} | |
|
248 | @available_filters[relation_type] = { | |
|
249 | :type => :relation, :order => @available_filters.size + 100, | |
|
250 | :label => options[:name] | |
|
251 | } | |
|
242 | 252 | end |
|
243 | ||
|
244 | 253 | principals = [] |
|
245 | 254 | if project |
|
246 | 255 | principals += project.principals.sort |
|
247 | 256 | unless project.leaf? |
|
248 | 257 | subprojects = project.descendants.visible.all |
|
249 | 258 | if subprojects.any? |
|
250 | @available_filters["subproject_id"] = { :type => :list_subprojects, :order => 13, :values => subprojects.collect{|s| [s.name, s.id.to_s] } } | |
|
259 | @available_filters["subproject_id"] = { | |
|
260 | :type => :list_subprojects, :order => 13, | |
|
261 | :values => subprojects.collect{|s| [s.name, s.id.to_s] } | |
|
262 | } | |
|
251 | 263 | principals += Principal.member_of(subprojects) |
|
252 | 264 | end |
|
253 | 265 | end |
@@ -255,14 +267,15 class Query < ActiveRecord::Base | |||
|
255 | 267 | if all_projects.any? |
|
256 | 268 | # members of visible projects |
|
257 | 269 | principals += Principal.member_of(all_projects) |
|
258 | ||
|
259 | 270 | # project filter |
|
260 | 271 | project_values = [] |
|
261 | 272 | if User.current.logged? && User.current.memberships.any? |
|
262 | 273 | project_values << ["<< #{l(:label_my_projects).downcase} >>", "mine"] |
|
263 | 274 | end |
|
264 | 275 | project_values += all_projects_values |
|
265 | @available_filters["project_id"] = { :type => :list, :order => 1, :values => project_values} unless project_values.empty? | |
|
276 | @available_filters["project_id"] = { | |
|
277 | :type => :list, :order => 1, :values => project_values | |
|
278 | } unless project_values.empty? | |
|
266 | 279 | end |
|
267 | 280 | end |
|
268 | 281 | principals.uniq! |
@@ -271,59 +284,84 class Query < ActiveRecord::Base | |||
|
271 | 284 | |
|
272 | 285 | assigned_to_values = [] |
|
273 | 286 | assigned_to_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged? |
|
274 |
assigned_to_values += (Setting.issue_group_assignment? ? |
|
|
275 | @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => assigned_to_values } unless assigned_to_values.empty? | |
|
287 | assigned_to_values += (Setting.issue_group_assignment? ? | |
|
288 | principals : users).collect{|s| [s.name, s.id.to_s] } | |
|
289 | @available_filters["assigned_to_id"] = { | |
|
290 | :type => :list_optional, :order => 4, :values => assigned_to_values | |
|
291 | } unless assigned_to_values.empty? | |
|
276 | 292 | |
|
277 | 293 | author_values = [] |
|
278 | 294 | author_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged? |
|
279 | 295 | author_values += users.collect{|s| [s.name, s.id.to_s] } |
|
280 | @available_filters["author_id"] = { :type => :list, :order => 5, :values => author_values } unless author_values.empty? | |
|
296 | @available_filters["author_id"] = { | |
|
297 | :type => :list, :order => 5, :values => author_values | |
|
298 | } unless author_values.empty? | |
|
281 | 299 | |
|
282 | 300 | group_values = Group.all.collect {|g| [g.name, g.id.to_s] } |
|
283 | @available_filters["member_of_group"] = { :type => :list_optional, :order => 6, :values => group_values } unless group_values.empty? | |
|
301 | @available_filters["member_of_group"] = { | |
|
302 | :type => :list_optional, :order => 6, :values => group_values | |
|
303 | } unless group_values.empty? | |
|
284 | 304 | |
|
285 | 305 | role_values = Role.givable.collect {|r| [r.name, r.id.to_s] } |
|
286 | @available_filters["assigned_to_role"] = { :type => :list_optional, :order => 7, :values => role_values } unless role_values.empty? | |
|
306 | @available_filters["assigned_to_role"] = { | |
|
307 | :type => :list_optional, :order => 7, :values => role_values | |
|
308 | } unless role_values.empty? | |
|
287 | 309 | |
|
288 | 310 | if User.current.logged? |
|
289 | @available_filters["watcher_id"] = { :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] } | |
|
311 | @available_filters["watcher_id"] = { | |
|
312 | :type => :list, :order => 15, :values => [["<< #{l(:label_me)} >>", "me"]] | |
|
313 | } | |
|
290 | 314 | end |
|
291 | 315 | |
|
292 | 316 | if project |
|
293 | 317 | # project specific filters |
|
294 | 318 | categories = project.issue_categories.all |
|
295 | 319 | unless categories.empty? |
|
296 | @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => categories.collect{|s| [s.name, s.id.to_s] } } | |
|
320 | @available_filters["category_id"] = { | |
|
321 | :type => :list_optional, :order => 6, | |
|
322 | :values => categories.collect{|s| [s.name, s.id.to_s] } | |
|
323 | } | |
|
297 | 324 | end |
|
298 | 325 | versions = project.shared_versions.all |
|
299 | 326 | unless versions.empty? |
|
300 | @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } | |
|
327 | @available_filters["fixed_version_id"] = { | |
|
328 | :type => :list_optional, :order => 7, | |
|
329 | :values => versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } | |
|
330 | } | |
|
301 | 331 | end |
|
302 | 332 | add_custom_fields_filters(project.all_issue_custom_fields) |
|
303 | 333 | else |
|
304 | 334 | # global filters for cross project issue list |
|
305 | 335 | system_shared_versions = Version.visible.find_all_by_sharing('system') |
|
306 | 336 | unless system_shared_versions.empty? |
|
307 | @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => system_shared_versions.sort.collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s] } } | |
|
337 | @available_filters["fixed_version_id"] = { | |
|
338 | :type => :list_optional, :order => 7, | |
|
339 | :values => system_shared_versions.sort.collect{|s| | |
|
340 | ["#{s.project.name} - #{s.name}", s.id.to_s] | |
|
341 | } | |
|
342 | } | |
|
308 | 343 | end |
|
309 | add_custom_fields_filters(IssueCustomField.find(:all, :conditions => {:is_filter => true, :is_for_all => true})) | |
|
344 | add_custom_fields_filters( | |
|
345 | IssueCustomField.find(:all, | |
|
346 | :conditions => { | |
|
347 | :is_filter => true, | |
|
348 | :is_for_all => true | |
|
349 | })) | |
|
310 | 350 | end |
|
311 | ||
|
312 | 351 | add_associations_custom_fields_filters :project, :author, :assigned_to, :fixed_version |
|
313 | ||
|
314 | 352 | if User.current.allowed_to?(:set_issues_private, nil, :global => true) || |
|
315 | 353 | User.current.allowed_to?(:set_own_issues_private, nil, :global => true) |
|
316 | @available_filters["is_private"] = { :type => :list, :order => 15, :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]] } | |
|
354 | @available_filters["is_private"] = { | |
|
355 | :type => :list, :order => 15, | |
|
356 | :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]] | |
|
357 | } | |
|
317 | 358 | end |
|
318 | ||
|
319 | 359 | Tracker.disabled_core_fields(trackers).each {|field| |
|
320 | 360 | @available_filters.delete field |
|
321 | 361 | } |
|
322 | ||
|
323 | 362 | @available_filters.each do |field, options| |
|
324 | 363 | options[:name] ||= l(options[:label] || "field_#{field}".gsub(/_id$/, '')) |
|
325 | 364 | end |
|
326 | ||
|
327 | 365 | @available_filters |
|
328 | 366 | end |
|
329 | 367 |
General Comments 0
You need to be logged in to leave comments.
Login now