Revision 1244:a3ed5c4d90f0 plugins/redmine_tags/lib/redmine_tags/patches

View differences:

plugins/redmine_tags/lib/redmine_tags/patches/project_patch.rb
22 22
      end
23 23

  
24 24
      module ClassMethods
25
        TAGGING_IDS_LIMIT_SQL = <<-SQL
26
            tag_id IN (
27
                SELECT #{ActsAsTaggableOn::Tagging.table_name}.tag_id
28
                FROM #{ActsAsTaggableOn::Tagging.table_name}
29
                WHERE #{ActsAsTaggableOn::Tagging.table_name}.taggable_id IN (?)
30
            )
31
        SQL
32

  
25 33
        def search_by_question(question)
26 34
          if question.length > 1
27 35
            search(RedmineProjectFiltering.calculate_tokens(question), nil, :all_words => true).first.sort_by(&:lft)
......
30 38
          end
31 39
        end
32 40

  
41
        # Returns available project tags
42
        # Does not return tags from private projects
43
        # === Parameters
44
        # * <i>options</i> = (optional) Options hash of
45
        #   * name_like - String. Substring to filter found tags.
46
        def available_tags( options = {} )
47
          ids_scope = Project.visible
33 48

  
34
        # Returns available project tags
35
        #  does not show tags from private projects
36
        def available_tags( options = {} )
49
          conditions = [""]
37 50

  
38
          name_like = options[:name_like]
39
          options = {}
40
          visible   = ARCondition.new
41

  
42
          visible << ["#{Project.table_name}.is_public = '1'"]
43

  
44
          if name_like
45
            visible << ["#{ActsAsTaggableOn::Tag.table_name}.name LIKE ?", "%#{name_like.downcase}%"]
51
          # limit to the tags matching given %name_like%
52
          if options[:name_like]
53
            conditions[0] << "#{ActsAsTaggableOn::Tag.table_name}.name LIKE ? AND "
54
            conditions << "%#{options[:name_like].downcase}%"
46 55
          end
47 56

  
48
          options[:conditions] = visible.conditions
57
          conditions[0] << TAGGING_IDS_LIMIT_SQL
58
          conditions << ids_scope.map{ |issue| issue.id }.push(-1)
49 59

  
50
          self.all_tag_counts(options)
60
          self.all_tag_counts(:conditions => conditions)
51 61
        end
52 62
      end
53 63
    end

Also available in: Unified diff