# # 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