From 09c9e2002b6cda941a9d15edc63bd4f46914d98e Mon Sep 17 00:00:00 2001 From: elijah Date: Mon, 15 Jun 2015 12:24:03 -0700 Subject: fixed autocomplete patch --- lib/redmine_hacks/auto_complete_patch.rb | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lib/redmine_hacks/auto_complete_patch.rb (limited to 'lib') 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