Commit 1249a774ea66c036230dd14e7e91c06b6f0340d8

Authored by AntonioTerceiro
1 parent 331957a6

ActionItem24: checkpoint



git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1124 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/my_profile/cms/README
@@ -1,46 +0,0 @@ @@ -1,46 +0,0 @@
1 -CMS editors for Noosfero  
2 -========================  
3 -  
4 -This directory contains code for custom content editors in Noosfero.  
5 -  
6 -Creating a new editor  
7 -=====================  
8 -  
9 -:: File structure  
10 -  
11 -Let's say that you are implementingn and editor for type, say, "foo/bar". Then  
12 -you have to create:  
13 -  
14 - * app/controllers/my_profile/cms/foo_bar.html  
15 - * app/views/cms/foo_bar_*.rhtml (one view for each action you define in the  
16 - controller class, if applicable).  
17 -  
18 -:: Coding conventions  
19 -  
20 -You file must add methods to CmsController class. They are going to be loaded  
21 -after the cms_controller.rb file itself, to you don't need to care about  
22 -declaring the superclass:  
23 -  
24 - class CmsController  
25 - def foo_bar_edit  
26 - # code for preparing the "edit" view  
27 - end  
28 -  
29 - def foo_bar_new  
30 - # code for preparing the "new" view  
31 - end  
32 -  
33 - # etc ...  
34 - end  
35 -  
36 -Note that *all* of your actions must be prefixed with the content type (e.g.  
37 -"foor_bar_" for "foo/bar"), in order to avoid conflicts.  
38 -  
39 -The views for those actions can be thrown in app/views/cms/, just like other  
40 -views for this controller.  
41 -  
42 -Limitations  
43 -===========  
44 -  
45 -  
46 -  
app/controllers/my_profile/cms/text_html.rb
@@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
1 -class CmsController  
2 -  
3 - # add eventual helper methods you need for editing your type of article.  
4 -  
5 -end  
app/controllers/my_profile/cms_controller.rb
@@ -26,8 +26,6 @@ class CmsController < MyProfileController @@ -26,8 +26,6 @@ class CmsController < MyProfileController
26 return 26 return
27 end 27 end
28 end 28 end
29 -  
30 - render :action => "#{mime_type_to_action_name(@article.mime_type)}_edit"  
31 end 29 end
32 30
33 def new 31 def new
@@ -47,7 +45,7 @@ class CmsController < MyProfileController @@ -47,7 +45,7 @@ class CmsController < MyProfileController
47 end 45 end
48 end 46 end
49 47
50 - render :action => "#{mime_type_to_action_name(type)}_new" 48 + render :action => 'edit'
51 end 49 end
52 50
53 post_only :set_home_page 51 post_only :set_home_page
app/models/tiny_mce_article.rb 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 +class TinyMceArticle < Article
  2 +end
app/views/cms/_article.rhtml 0 → 120000
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +_tiny_mce_article.rhtml
0 \ No newline at end of file 2 \ No newline at end of file
app/views/cms/_tiny_mce_article.rhtml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +
  2 +<%= f.text_field('name', :size => '64') %>
  3 +
  4 +<%= f.text_field('tag_list', :size => 64, :title => _('Separate tags with commas')) %>
  5 +
  6 +<%= f.text_area('abstract', :cols => 64, :rows => 5) %>
  7 +
  8 +<%= f.text_area('body', :cols => 64) %>
  9 +
app/views/cms/edit.rhtml 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +
  2 +
  3 +<%= render :file => 'shared/tiny_mce' %>
  4 +
  5 +<%= error_messages_for 'article' %>
  6 +
  7 +<% labelled_form_for 'article', @article do |f| %>
  8 +
  9 + <%= hidden_field_tag('parent_id', params[:parent_id]) if params[:parent_id] %>
  10 +
  11 + <%= render :partial => partial_for_class(@article.class), :locals => { :f => f } %>
  12 +
  13 + <%= design_display_button_submit('save', _('Save')) %>
  14 + <%= design_display_button('cancel', _('Cancel'), :action => (@article.parent ? 'view' : 'index'), :id => @article.parent) %>
  15 +<% end %>
app/views/cms/new.rhtml
@@ -1,9 +0,0 @@ @@ -1,9 +0,0 @@
1 -<p>  
2 - <%= _('Choose the type of article:') %>  
3 -</p>  
4 -  
5 -<ul>  
6 -<% CmsController.available_types.each do |item| %>  
7 - <li><%= link_to_new_article(item) %></li>  
8 -<% end %>  
9 -</ul>  
app/views/cms/select_article_type.rhtml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<p>
  2 + <%= _('Choose the type of article:') %>
  3 +</p>
  4 +
  5 +<ul>
  6 +<% CmsController.available_types.each do |item| %>
  7 + <li><%= link_to_new_article(item) %></li>
  8 +<% end %>
  9 +</ul>
app/views/cms/text_html_edit.rhtml
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -text_html_new.rhtml  
2 \ No newline at end of file 0 \ No newline at end of file
app/views/cms/text_html_new.rhtml
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -<%= render :file => 'shared/tiny_mce' %>  
2 -  
3 -<%= error_messages_for 'article' %>  
4 -  
5 -<% labelled_form_for 'article', @article do |f| %>  
6 -  
7 - <%= hidden_field_tag('parent_id', params[:parent_id]) if params[:parent_id] %>  
8 -  
9 - <%= f.text_field('name', :size => '64') %>  
10 -  
11 - <%= f.text_field('tag_list', :size => 64, :title => _('Separate tags with commas')) %>  
12 -  
13 - <%= f.text_area('abstract', :cols => 64, :rows => 5) %>  
14 -  
15 - <%= f.text_area('body', :cols => 64) %>  
16 -  
17 - <%= design_display_button_submit('save', _('Save')) %>  
18 - <%= design_display_button('cancel', _('Cancel'), :action => (@article.parent ? 'view' : 'index'), :id => @article.parent) %>  
19 -  
20 -<% end %>  
test/functional/cms_controller_test.rb
@@ -47,20 +47,20 @@ class CmsControllerTest &lt; Test::Unit::TestCase @@ -47,20 +47,20 @@ class CmsControllerTest &lt; Test::Unit::TestCase
47 a.save! 47 a.save!
48 48
49 get :edit, :profile => profile.identifier, :id => a.id 49 get :edit, :profile => profile.identifier, :id => a.id
50 - assert_template 'text_html_edit'  
51 - end  
52 -  
53 - should 'be able to type a new document' do  
54 - get :new, :profile => profile.identifier  
55 - assert_template 'text_html_new' 50 + assert_template 'edit'
56 end 51 end
57 52
58 should 'be able to create a new document' do 53 should 'be able to create a new document' do
59 get :new, :profile => profile.identifier 54 get :new, :profile => profile.identifier
60 - assert_template 'text_html_new' 55 + assert_template 'select_article_type'
61 assert_tag :tag => 'form', :attributes => { :action => "/myprofile/#{profile.identifier}/cms/new", :method => /post/i } 56 assert_tag :tag => 'form', :attributes => { :action => "/myprofile/#{profile.identifier}/cms/new", :method => /post/i }
62 end 57 end
63 58
  59 + should 'present edit screen after choosing article type' do
  60 + get :new, :profile => profile.identifier, :article_type => 'Article'
  61 + assert_template 'edit'
  62 + end
  63 +
64 should 'be able to save a save a document' do 64 should 'be able to save a save a document' do
65 assert_difference Article, :count do 65 assert_difference Article, :count do
66 post :new, :profile => profile.identifier, :article => { :name => 'a test article', :body => 'the text of the article ...' } 66 post :new, :profile => profile.identifier, :article => { :name => 'a test article', :body => 'the text of the article ...' }
@@ -125,7 +125,7 @@ class CmsControllerTest &lt; Test::Unit::TestCase @@ -125,7 +125,7 @@ class CmsControllerTest &lt; Test::Unit::TestCase
125 125
126 get :edit, :profile => profile.identifier, :id => a.id 126 get :edit, :profile => profile.identifier, :id => a.id
127 assert_response :success 127 assert_response :success
128 - assert_template 'text_html_edit' 128 + assert_template 'edit'
129 end 129 end
130 130
131 should 'convert mime-types to action names' do 131 should 'convert mime-types to action names' do
test/test_helper.rb
@@ -103,6 +103,10 @@ class Test::Unit::TestCase @@ -103,6 +103,10 @@ class Test::Unit::TestCase
103 object.valid? 103 object.valid?
104 assert !object.errors.invalid?(attribute) 104 assert !object.errors.invalid?(attribute)
105 end 105 end
  106 +
  107 + def assert_subclass(parent, child)
  108 + assert_equal parent, child.superclass, "Class #{child} expected to be a subclass of #{parent}"
  109 + end
106 110
107 private 111 private
108 112
test/unit/tiny_mce_article_test.rb 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +
  3 +class TinyMceArticleTest < Test::Unit::TestCase
  4 +
  5 + should 'be an article' do
  6 + assert_subclass Article, TinyMceArticle
  7 + end
  8 +
  9 +end