Commit 8b4dbf410582237c15e121a207080ee9c7c8afe3

Authored by Carlos Morais
Committed by Paulo Meireles
1 parent 816c2a4e

Adding content type and view_path hotspots

app/controllers/my_profile/cms_controller.rb
@@ -50,7 +50,7 @@ class CmsController < MyProfileController @@ -50,7 +50,7 @@ class CmsController < MyProfileController
50 end 50 end
51 51
52 def special_article_types 52 def special_article_types
53 - [Folder, Blog, UploadedFile, Forum, Gallery, RssFeed] 53 + [Folder, Blog, UploadedFile, Forum, Gallery, RssFeed] + @plugins.map(:content_types)
54 end 54 end
55 55
56 def view 56 def view
@@ -79,6 +79,7 @@ class CmsController < MyProfileController @@ -79,6 +79,7 @@ class CmsController < MyProfileController
79 end 79 end
80 80
81 def edit 81 def edit
  82 + plugins_prepend_view_paths
82 @article = profile.articles.find(params[:id]) 83 @article = profile.articles.find(params[:id])
83 @parent_id = params[:parent_id] 84 @parent_id = params[:parent_id]
84 @type = params[:type] || @article.class.to_s 85 @type = params[:type] || @article.class.to_s
@@ -102,6 +103,7 @@ class CmsController < MyProfileController @@ -102,6 +103,7 @@ class CmsController < MyProfileController
102 end 103 end
103 104
104 def new 105 def new
  106 + plugins_prepend_view_paths
105 # FIXME this method should share some logic wirh edit !!! 107 # FIXME this method should share some logic wirh edit !!!
106 108
107 # user must choose an article type first 109 # user must choose an article type first
@@ -352,6 +354,12 @@ class CmsController < MyProfileController @@ -352,6 +354,12 @@ class CmsController < MyProfileController
352 } 354 }
353 end.to_json 355 end.to_json
354 end 356 end
  357 +
  358 + def plugins_prepend_view_paths
  359 + @plugins.map(:view_path).each do |view_path|
  360 + prepend_view_path(view_path)
  361 + end
  362 + end
355 363
356 def content_editor? 364 def content_editor?
357 true 365 true
app/controllers/public/content_viewer_controller.rb
@@ -6,6 +6,7 @@ class ContentViewerController < ApplicationController @@ -6,6 +6,7 @@ class ContentViewerController < ApplicationController
6 helper TagsHelper 6 helper TagsHelper
7 7
8 def view_page 8 def view_page
  9 + plugins_prepend_view_paths
9 path = params[:page].join('/') 10 path = params[:page].join('/')
10 11
11 if path.blank? 12 if path.blank?
@@ -151,5 +152,12 @@ class ContentViewerController < ApplicationController @@ -151,5 +152,12 @@ class ContentViewerController < ApplicationController
151 end 152 end
152 end 153 end
153 end 154 end
  155 +
  156 + # FIXME duplicated
  157 + def plugins_prepend_view_paths
  158 + @plugins.map(:view_path).each do |view_path|
  159 + prepend_view_path(view_path)
  160 + end
  161 + end
154 162
155 end 163 end
lib/noosfero/plugin.rb
@@ -105,6 +105,18 @@ class Noosfero::Plugin @@ -105,6 +105,18 @@ class Noosfero::Plugin
105 nil 105 nil
106 end 106 end
107 107
  108 + # -> Adds plugin-specific content types to CMS
  109 + # returns = { content type class }
  110 + def content_types
  111 + nil
  112 + end
  113 +
  114 + # -> Can be used to add plugin-specific view paths to controllers
  115 + # returns = { plugins' view paths }
  116 + def view_path
  117 + nil
  118 + end
  119 +
108 # -> Adds content to calalog item 120 # -> Adds content to calalog item
109 # returns = lambda block that creates a html code 121 # returns = lambda block that creates a html code
110 def catalog_item_extras(item) 122 def catalog_item_extras(item)