diff options
author | elijah <elijah@riseup.net> | 2015-06-15 12:24:03 -0700 |
---|---|---|
committer | elijah <elijah@riseup.net> | 2015-06-15 12:24:03 -0700 |
commit | 09c9e2002b6cda941a9d15edc63bd4f46914d98e (patch) | |
tree | 70c9328242f47bb153e523c136b8a3ab084ba8cf | |
parent | 7ffb825d6775449ec842f5b66b1eb4d8fbc37765 (diff) |
fixed autocomplete patch
-rw-r--r-- | app/controllers/auto_completes_controller.rb | 24 | ||||
-rw-r--r-- | init.rb | 13 | ||||
-rw-r--r-- | lib/redmine_hacks/auto_complete_patch.rb | 47 |
3 files changed, 57 insertions, 27 deletions
diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb deleted file mode 100644 index cbecd77..0000000 --- a/app/controllers/auto_completes_controller.rb +++ /dev/null @@ -1,24 +0,0 @@ -# -# Override to change the LIMIT. -# Copied from Redmine 2.6 -# - -class AutoCompletesController < ApplicationController - def issues - @issues = [] - q = (params[:q] || params[:term]).to_s.strip - if q.present? - scope = Issue.cross_project_scope(@project, params[:scope]).visible - if q.match(/\A#?(\d+)\z/) - @issues << scope.find_by_id($1.to_i) - end - @issues += scope. - where("LOWER(#{Issue.table_name}.subject) LIKE LOWER(?)", "%#{q}%"). - order("#{Issue.table_name}.id DESC"). - limit(100). - all - @issues.compact! - end - render :layout => false - end -end @@ -1,9 +1,16 @@ require_dependency 'redmine_hacks/timelog_hooks' +require_dependency 'redmine_hacks/auto_complete_patch' +require_dependency 'auto_completes_controller' + +# re-apply whenever the controller is unloaded +Rails.configuration.to_prepare do + AutoCompletesController.send(:include, RedmineHacks::AutoCompletePatch) +end Redmine::Plugin.register :redmine_hacks do - name 'redmine hacks' + name 'Redmine Hacks' author 'LEAP' - description 'various hacks to redmine' - version '0.0.1' + description 'Various hacks to Redmine used by LEAP' + version '0.0.2' url 'https://leap.se/git/redmine_hacks.git' end diff --git a/lib/redmine_hacks/auto_complete_patch.rb b/lib/redmine_hacks/auto_complete_patch.rb new file mode 100644 index 0000000..aa7a6e4 --- /dev/null +++ b/lib/redmine_hacks/auto_complete_patch.rb @@ -0,0 +1,47 @@ +# +# Overrides AutoCompletesController#issues to add: +# +# * higher limit to the number of issues shown +# * sort by issue status (closed or open) +# * sort by issue subject +# * show 'OPEN' or 'CLOSED' in the issue subject +# + +module RedmineHacks::AutoCompletePatch + def self.included(base) + base.class_eval do + def issues + @issues = [] + q = (params[:q] || params[:term]).to_s.strip + if q.present? + scope = Issue.cross_project_scope(@project, params[:scope]).visible + if q.match(/\A#?(\d+)\z/) + @issues << scope.find_by_id($1.to_i) + end + @issues += scope. + where("LOWER(#{Issue.table_name}.subject) LIKE LOWER(?)", "%#{q}%"). + order("#{Issue.table_name}.id DESC"). + limit(100). + all + @issues.compact! + end + @issues.each do |issue| + issue.subject += (issue.closed? ? ' CLOSED' : ' OPEN') + end + # sort by status, then by subject + @issues.sort! do |a, b| + if !a.closed? && b.closed? + -1 + elsif a.closed? && !b.closed? + 1 + else + a.subject <=> b.subject + end + end + render :layout => false + end + end + end +end + + |