Revision 1244:a3ed5c4d90f0 plugins/redmine_tags/lib/redmine_tags/patches
| 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