Commit 1249a774ea66c036230dd14e7e91c06b6f0340d8
1 parent
331957a6
Exists in
master
and in
28 other branches
ActionItem24: checkpoint
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1124 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
14 changed files
with
58 additions
and
92 deletions
Show diff stats
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
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 |
@@ -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
app/views/cms/text_html_edit.rhtml
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 < Test::Unit::TestCase | @@ -47,20 +47,20 @@ class CmsControllerTest < 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 < Test::Unit::TestCase | @@ -125,7 +125,7 @@ class CmsControllerTest < 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 |