Fixed shot filter expression parsing depending upon field operators (#8371).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7624 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Etienne Massip
2011-10-12 23:45:47 +00:00
parent 765978871d
commit a118c4ccb0
2 changed files with 80 additions and 3 deletions
+6 -3
View File
@@ -308,9 +308,12 @@ class Query < ActiveRecord::Base
end
def add_short_filter(field, expression)
return unless expression
parms = expression.scan(/^(o|c|!\*|!|\*)?(.*)$/).first
add_filter field, (parms[0] || "="), [parms[1] || ""]
return unless expression && available_filters.has_key?(field)
field_type = available_filters[field][:type]
@@operators_by_filter_type[field_type].sort.reverse.detect do |operator|
next unless expression =~ /^#{Regexp.escape(operator)}(.*)$/
add_filter field, operator, $1.present? ? $1.split('|') : ['']
end || add_filter(field, '=', expression.split('|'))
end
# Add multiple filters using +add_filter+