summaryrefslogtreecommitdiff
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
parent7ffb825d6775449ec842f5b66b1eb4d8fbc37765 (diff)
fixed autocomplete patch
-rw-r--r--app/controllers/auto_completes_controller.rb24
-rw-r--r--init.rb13
-rw-r--r--lib/redmine_hacks/auto_complete_patch.rb47
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
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
+
+