From 09c9e2002b6cda941a9d15edc63bd4f46914d98e Mon Sep 17 00:00:00 2001 From: elijah Date: Mon, 15 Jun 2015 12:24:03 -0700 Subject: fixed autocomplete patch --- app/controllers/auto_completes_controller.rb | 24 -------------- init.rb | 13 ++++++-- lib/redmine_hacks/auto_complete_patch.rb | 47 ++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 27 deletions(-) delete mode 100644 app/controllers/auto_completes_controller.rb create mode 100644 lib/redmine_hacks/auto_complete_patch.rb 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 diff --git a/init.rb b/init.rb index 657be0f..e805601 100644 --- a/init.rb +++ b/init.rb @@ -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 + + -- cgit v1.2.3