search is broken on redmine3 #370

This commit is contained in:
Karel Pičman 2015-03-31 13:23:34 +02:00
parent ea2e3f7676
commit 874b017362
2 changed files with 16 additions and 14 deletions

View File

@ -1,4 +1,4 @@
# encoding: utf-8
/scoping/# encoding: utf-8
#
# Redmine plugin for Document Management System "Features"
#
@ -296,7 +296,7 @@ class DmsfFile < ActiveRecord::Base
tokens = [] << tokens unless tokens.is_a?(Array)
projects = [] << projects unless projects.nil? || projects.is_a?(Array)
find_options = {:include => [:project,:revisions]}
find_options = {}
find_options[:order] = 'dmsf_files.updated_at ' + (options[:before] ? 'DESC' : 'ASC')
limit_options = {}
@ -314,14 +314,15 @@ class DmsfFile < ActiveRecord::Base
find_options[:conditions] = [sql, * (tokens.collect {|w| "%#{w.downcase}%"} * token_clauses.size).sort]
project_conditions = []
project_conditions << (Project.allowed_to_condition(User.current, :view_dmsf_files))
project_conditions << Project.allowed_to_condition(User.current, :view_dmsf_files)
project_conditions << "#{DmsfFile.table_name}.project_id IN (#{projects.collect(&:id).join(',')})" unless projects.nil?
results = []
results_count = 0
with_scope(:find => {:conditions => [project_conditions.join(' AND ') + " AND #{DmsfFile.table_name}.deleted = :false", {:false => false}]}) do
with_scope(:find => find_options) do
results_count = 0
includes(:project, :revisions).
where(project_conditions.join(' AND ') + " AND #{DmsfFile.table_name}.deleted = :false", {:false => false}).scoping do
where(find_options[:conditions]).order(find_options[:order]).scoping do
results_count = count(:all)
results = find(:all, limit_options)
end

View File

@ -282,11 +282,11 @@ class DmsfFolder < ActiveRecord::Base
end
# To fullfill searchable module expectations
def self.search(tokens, projects=nil, options={})
def self.search(tokens, projects = nil, options = {})
tokens = [] << tokens unless tokens.is_a?(Array)
projects = [] << projects unless projects.nil? || projects.is_a?(Array)
find_options = {:include => [:project]}
find_options = {}
find_options[:order] = 'dmsf_folders.updated_at ' + (options[:before] ? 'DESC' : 'ASC')
limit_options = {}
@ -295,7 +295,7 @@ class DmsfFolder < ActiveRecord::Base
limit_options[:conditions] = '(dmsf_folders.updated_at ' + (options[:before] ? '<' : '>') + "'#{connection.quoted_date(options[:offset])}')"
end
columns = options[:titles_only] ? ["dmsf_folders.title"] : ["dmsf_folders.title", "dmsf_folders.description"]
columns = options[:titles_only] ? ['dmsf_folders.title'] : ['dmsf_folders.title', 'dmsf_folders.description']
token_clauses = columns.collect {|column| "(LOWER(#{column}) LIKE ?)"}
@ -304,13 +304,14 @@ class DmsfFolder < ActiveRecord::Base
project_conditions = []
project_conditions << (Project.allowed_to_condition(User.current, :view_dmsf_files))
project_conditions << "project_id IN (#{projects.collect(&:id).join(',')})" unless projects.nil?
project_conditions << "project_id IN (#{projects.collect(&:id).join(',')})" if projects
results = []
results_count = 0
with_scope(:find => {:conditions => [project_conditions.join(' AND ')]}) do
with_scope(:find => find_options) do
includes(:project).
where(project_conditions.join(' AND ')).scoping do
where(find_options[:conditions]).order(find_options[:order]).scoping do
results_count = count(:all)
results = find(:all, limit_options)
end