]> source.dussan.org Git - redmine.git/commitdiff
Change the notation of "contains any of" filter operator to "*~" (#38435).
authorGo MAEDA <maeda@farend.jp>
Sun, 16 Apr 2023 08:02:30 +0000 (08:02 +0000)
committerGo MAEDA <maeda@farend.jp>
Sun, 16 Apr 2023 08:02:30 +0000 (08:02 +0000)
git-svn-id: https://svn.redmine.org/redmine/trunk@22197 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue_query.rb
app/models/query.rb
lib/redmine/wiki_formatting/textile/redcloth3.rb
test/unit/query_test.rb

index 2aa60fceadf807283ec4e2b4b8eb223f985cbf98..5c66800f9a325390b4034616f03a492dca551715 100644 (file)
@@ -614,8 +614,8 @@ class IssueQuery < Query
     when "*", "!*"
       e = (operator == "*" ? "EXISTS" : "NOT EXISTS")
       "#{e} (SELECT 1 FROM #{Attachment.table_name} a WHERE a.container_type = 'Issue' AND a.container_id = #{Issue.table_name}.id)"
-    when "~", "!~", "|~"
-      c = sql_contains("a.filename", value.first, :all_words => (operator != "|~"))
+    when "~", "!~", "*~"
+      c = sql_contains("a.filename", value.first, :all_words => (operator != "*~"))
       e = (operator == "!~" ? "NOT EXISTS" : "EXISTS")
       "#{e} (SELECT 1 FROM #{Attachment.table_name} a WHERE a.container_type = 'Issue' AND a.container_id = #{Issue.table_name}.id AND (#{c}))"
     when "^", "$"
@@ -630,9 +630,9 @@ class IssueQuery < Query
       case operator
       when '*', '!*'
         (operator == '*' ? cond_description : "NOT (#{cond_description})")
-      when '~', '!~', '|~'
+      when '~', '!~', '*~'
         (operator == '~' ? '' : "#{cond_description} AND ") +
-        sql_contains('a.description', value.first, :match => (operator != '!~'), :all_words => (operator != '|~'))
+        sql_contains('a.description', value.first, :match => (operator != '!~'), :all_words => (operator != '*~'))
       when '^', '$'
         sql_contains('a.description', value.first, (operator == '^' ? :starts_with : :ends_with) => true)
       else
@@ -794,7 +794,7 @@ class IssueQuery < Query
     is_all_words =
       case operator
       when '~'        then true
-      when '|~', '!~' then false
+      when '*~', '!~' then false
       end
 
     fetcher = Redmine::Search::Fetcher.new(
index 10bd23adf7daa2b05927f8f6309d59c7f25e8cea..7764fede1c18be0f2c824827b6e5314999496aa6 100644 (file)
@@ -306,7 +306,7 @@ class Query < ActiveRecord::Base
     "t-"  => :label_ago,
     "~"   => :label_contains,
     "!~"  => :label_not_contains,
-    "|~"  => :label_contains_any_of,
+    "*~"  => :label_contains_any_of,
     "^"   => :label_starts_with,
     "$"   => :label_ends_with,
     "=p"  => :label_any_issues_in_project,
@@ -324,9 +324,9 @@ class Query < ActiveRecord::Base
     :list_subprojects => [ "*", "!*", "=", "!" ],
     :date => [ "=", ">=", "<=", "><", "<t+", ">t+", "><t+", "t+", "nd", "t", "ld", "nw", "w", "lw", "l2w", "nm", "m", "lm", "y", ">t-", "<t-", "><t-", "t-", "!*", "*" ],
     :date_past => [ "=", ">=", "<=", "><", ">t-", "<t-", "><t-", "t-", "t", "ld", "w", "lw", "l2w", "m", "lm", "y", "!*", "*" ],
-    :string => [ "~", "|~", "=", "!~", "!", "^", "$", "!*", "*" ],
-    :text => [  "~", "|~", "!~", "^", "$", "!*", "*" ],
-    :search => [ "~", "|~", "!~" ],
+    :string => [ "~", "*~", "=", "!~", "!", "^", "$", "!*", "*" ],
+    :text => [  "~", "*~", "!~", "^", "$", "!*", "*" ],
+    :search => [ "~", "*~", "!~" ],
     :integer => [ "=", ">=", "<=", "><", "!*", "*" ],
     :float => [ "=", ">=", "<=", "><", "!*", "*" ],
     :relation => ["=", "!", "=p", "=!p", "!p", "*o", "!o", "!*", "*"],
@@ -1432,7 +1432,7 @@ class Query < ActiveRecord::Base
       sql = sql_contains("#{db_table}.#{db_field}", value.first)
     when "!~"
       sql = sql_contains("#{db_table}.#{db_field}", value.first, :match => false)
-    when "|~"
+    when "*~"
       sql = sql_contains("#{db_table}.#{db_field}", value.first, :all_words => false)
     when "^"
       sql = sql_contains("#{db_table}.#{db_field}", value.first, :starts_with => true)
index 406fca08dd25971e3e3de83db41e410b4c8c6cc5..e93d165518e0282c54178ce5edc430a065f085cf 100644 (file)
@@ -348,7 +348,7 @@ class RedCloth3 < String
     S = "(?:#{S_CSPN}?#{S_RSPN}|#{S_RSPN}?#{S_CSPN}?)"
     C = "(?:#{C_CLAS}?#{C_STYL}?#{C_LNGE}?|#{C_STYL}?#{C_LNGE}?#{C_CLAS}?|#{C_LNGE}?#{C_STYL}?#{C_CLAS}?)"
     # PUNCT = Regexp::quote( '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' )
-    PUNCT = Regexp::quote( '!"#$%&\'*+,-./:;=?@\\^_`|~' )
+    PUNCT = Regexp::quote( '!"#$%&\'*+,-./:;=?@\\^_`*~' )
     PUNCT_NOQ = Regexp::quote( '!"#$&\',./:;=?@\\`|' )
     PUNCT_Q = Regexp::quote( '*-_+^~%' )
     HYPERLINK = '(\S+?)([^\w\s/;=\?]*?)(?=\s|<|$)'
index 2f09952e55df50f4c9b0a718df8bd702caccf1b4..164a7d304974e446ac5239da093d4686a7b7699c 100644 (file)
@@ -742,7 +742,7 @@ class QueryTest < ActiveSupport::TestCase
       :name => '_',
       :filters => {
         'subject' => {
-          :operator => '|~',
+          :operator => '*~',
           :values => ['close block']
         }
       }
@@ -758,7 +758,7 @@ class QueryTest < ActiveSupport::TestCase
       :name => '_',
       :filters => {
         'any_searchable' => {
-          :operator => '|~',
+          :operator => '*~',
           :values => ['recipe categories']
         }
       }
@@ -773,7 +773,7 @@ class QueryTest < ActiveSupport::TestCase
       :name => '_',
       :filters => {
         'attachment' => {
-          :operator => '|~',
+          :operator => '*~',
           :values => ['source changeset']
         }
       }
@@ -788,7 +788,7 @@ class QueryTest < ActiveSupport::TestCase
       :name => '_',
       :filters => {
         'attachment_description' => {
-          :operator => '|~',
+          :operator => '*~',
           :values => ['ruby issue']
         }
       }