changeset 727:e3e958595e07 feature_14

added new files for hooks; modified redmine tags init file so that patches are loaded.
author luisf <luis.figueira@eecs.qmul.ac.uk>
date Tue, 25 Oct 2011 17:10:42 +0100
parents 386fcfd7459f
children cc4d3d842171
files vendor/plugins/redmine_tags/app/views/projects/_tags.html.erb vendor/plugins/redmine_tags/assets/javascripts/tags_input.js vendor/plugins/redmine_tags/init.rb vendor/plugins/redmine_tags/lib/redmine_tags/hooks/views_projects_hook.rb vendor/plugins/redmine_tags/lib/redmine_tags/patches/project_patch.rb
diffstat 5 files changed, 82 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/plugins/redmine_tags/app/views/projects/_tags.html.erb	Tue Oct 25 17:10:42 2011 +0100
@@ -0,0 +1,8 @@
+BAHAUS
+
+<% unless project.tag_list.empty? %>
+  <tr>
+    <td><b><%=l(:tags)%>:</b></td>
+    <td><%= project.tag_counts.collect{ |t| render_tag_link(t, :show_count => false, :open_only => false) }.join(', ') %></td>
+  </tr>
+<% end %>
--- a/vendor/plugins/redmine_tags/assets/javascripts/tags_input.js	Mon Oct 24 15:28:29 2011 +0100
+++ b/vendor/plugins/redmine_tags/assets/javascripts/tags_input.js	Tue Oct 25 17:10:42 2011 +0100
@@ -92,3 +92,8 @@
 function observeIssueTagsField(url) {
   new Redmine.TagsInput('issue_tag_list').autocomplete('issue_tag_candidates', url);
 }
+
+
+function observeProjectTagsField(url) {
+  new Redmine.TagsInput('project_tag_list').autocomplete('project_tag_candidates', url);
+}
\ No newline at end of file
--- a/vendor/plugins/redmine_tags/init.rb	Mon Oct 24 15:28:29 2011 +0100
+++ b/vendor/plugins/redmine_tags/init.rb	Tue Oct 25 17:10:42 2011 +0100
@@ -41,6 +41,10 @@
 require 'dispatcher'
 
 Dispatcher.to_prepare :redmine_tags do
+  unless Project.included_modules.include?(RedmineTags::Patches::ProjectPatch)
+    Project.send(:include, RedmineTags::Patches::ProjectPatch)
+  end
+
   unless Issue.included_modules.include?(RedmineTags::Patches::IssuePatch)
     Issue.send(:include, RedmineTags::Patches::IssuePatch)
   end
@@ -65,3 +69,5 @@
 
 require 'redmine_tags/hooks/model_issue_hook'
 require 'redmine_tags/hooks/views_issues_hook'
+require 'redmine_tags/hooks/views_projects_hook'
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/plugins/redmine_tags/lib/redmine_tags/hooks/views_projects_hook.rb	Tue Oct 25 17:10:42 2011 +0100
@@ -0,0 +1,10 @@
+module RedmineTags
+  module Hooks
+    class ViewsProjectsHook < Redmine::Hook::ViewListener
+      render_on :view_projects_show_left, :partial => 'projects/tags'
+#      render_on :view_issues_form_details_bottom, :partial => 'issues/tags_form'
+#      render_on :view_issues_sidebar_planning_bottom, :partial => 'issues/tags_sidebar'
+    end
+  end
+end
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/plugins/redmine_tags/lib/redmine_tags/patches/project_patch.rb	Tue Oct 25 17:10:42 2011 +0100
@@ -0,0 +1,53 @@
+# C4DM
+
+require_dependency 'project'
+
+module RedmineTags
+  module Patches
+    module ProjectPatch
+      def self.included(base)
+        base.extend(ClassMethods)
+
+        base.class_eval do
+          unloadable
+          acts_as_taggable
+        end
+      end
+
+      module ClassMethods
+        # Returns available issue tags
+        # === Parameters
+        # * <i>options</i> = (optional) Options hash of
+        #   * project   - Project to search in.
+        #   * open_only - Boolean. Whenever search within open issues only.
+        #   * name_like - String. Substring to filter found tags.
+        def available_tags(options = {})
+          project   = options[:project]
+          open_only = options[:open_only]
+          name_like = options[:name_like]
+          options   = {}
+          visible   = ARCondition.new
+          
+          if project
+            project = project.id if project.is_a? Project
+            visible << ["#{Issue.table_name}.project_id = ?", project]
+          end
+
+          if open_only
+            visible << ["#{Issue.table_name}.status_id IN " +
+                        "( SELECT issue_status.id " + 
+                        "    FROM #{IssueStatus.table_name} issue_status " +
+                        "   WHERE issue_status.is_closed = ? )", false]
+          end
+
+          if name_like
+            visible << ["#{ActsAsTaggableOn::Tag.table_name}.name LIKE ?", "%#{name_like.downcase}%"]
+          end
+
+          options[:conditions] = visible.conditions
+          self.all_tag_counts(options)
+        end
+      end
+    end
+  end
+end