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   -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   -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 26 return
27 27 end
28 28 end
29   -
30   - render :action => "#{mime_type_to_action_name(@article.mime_type)}_edit"
31 29 end
32 30  
33 31 def new
... ... @@ -47,7 +45,7 @@ class CmsController < MyProfileController
47 45 end
48 46 end
49 47  
50   - render :action => "#{mime_type_to_action_name(type)}_new"
  48 + render :action => 'edit'
51 49 end
52 50  
53 51 post_only :set_home_page
... ...
app/models/tiny_mce_article.rb 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +class TinyMceArticle < Article
  2 +end
... ...
app/views/cms/_article.rhtml 0 → 120000
... ... @@ -0,0 +1 @@
  1 +_tiny_mce_article.rhtml
0 2 \ No newline at end of file
... ...
app/views/cms/_tiny_mce_article.rhtml 0 → 100644
... ... @@ -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 @@
  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   -<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 @@
  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   -text_html_new.rhtml
2 0 \ No newline at end of file
app/views/cms/text_html_new.rhtml
... ... @@ -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 47 a.save!
48 48  
49 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 51 end
57 52  
58 53 should 'be able to create a new document' do
59 54 get :new, :profile => profile.identifier
60   - assert_template 'text_html_new'
  55 + assert_template 'select_article_type'
61 56 assert_tag :tag => 'form', :attributes => { :action => "/myprofile/#{profile.identifier}/cms/new", :method => /post/i }
62 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 64 should 'be able to save a save a document' do
65 65 assert_difference Article, :count do
66 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 125  
126 126 get :edit, :profile => profile.identifier, :id => a.id
127 127 assert_response :success
128   - assert_template 'text_html_edit'
  128 + assert_template 'edit'
129 129 end
130 130  
131 131 should 'convert mime-types to action names' do
... ...
test/test_helper.rb
... ... @@ -103,6 +103,10 @@ class Test::Unit::TestCase
103 103 object.valid?
104 104 assert !object.errors.invalid?(attribute)
105 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 111 private
108 112  
... ...
test/unit/tiny_mce_article_test.rb 0 → 100644
... ... @@ -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
... ...