summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2015-06-15 12:24:03 -0700
committerelijah <elijah@riseup.net>2015-06-15 12:24:03 -0700
commit09c9e2002b6cda941a9d15edc63bd4f46914d98e (patch)
tree70c9328242f47bb153e523c136b8a3ab084ba8cf /lib
parent7ffb825d6775449ec842f5b66b1eb4d8fbc37765 (diff)
fixed autocomplete patch
Diffstat (limited to 'lib')
-rw-r--r--lib/redmine_hacks/auto_complete_patch.rb47
1 files changed, 47 insertions, 0 deletions
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
+
+