Commit 21ff0c0931e42890be35281c0e60abd88b374152
1 parent
fb17b619
Exists in
master
and in
28 other branches
ActionItem22: first implementation of comments
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1115 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
6 changed files
with
68 additions
and
7 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
... | ... | @@ -9,13 +9,25 @@ class ContentViewerController < PublicController |
9 | 9 | @page = profile.home_page |
10 | 10 | if @page.nil? |
11 | 11 | render :action => 'no_home_page' |
12 | + return | |
12 | 13 | end |
13 | 14 | else |
14 | 15 | @page = profile.articles.find_by_path(path) |
15 | 16 | if @page.nil? |
16 | 17 | render_not_found(@path) |
18 | + return | |
17 | 19 | end |
18 | 20 | end |
21 | + | |
22 | + if request.post? && params[:comment] | |
23 | + @comment = Comment.new(params[:comment]) | |
24 | + @comment.author = user if logged_in? | |
25 | + @comment.article = @page | |
26 | + if @comment.save! | |
27 | + @comment = nil # clear the comment form | |
28 | + end | |
29 | + end | |
30 | + @comments = @page.comments(true) | |
19 | 31 | end |
20 | 32 | |
21 | 33 | end | ... | ... |
app/models/article.rb
... | ... | @@ -0,0 +1,7 @@ |
1 | +<div class'comment'> | |
2 | + <h4><%= comment.title %></h4> | |
3 | + <div><%= _('By %{author} on %{date}') % { :author => (comment.author ? comment.author.identifier : comment.name), :date => comment.created_on } %></div> | |
4 | + <div> | |
5 | + <%= comment.body %> | |
6 | + </div> | |
7 | +</div> | ... | ... |
... | ... | @@ -0,0 +1,19 @@ |
1 | +<h3><%= _('Post a comment') %></h3> | |
2 | + | |
3 | +<% form_tag do %> | |
4 | + | |
5 | + <% unless logged_in? %> | |
6 | + | |
7 | + <%= labelled_form_field(_('Name'), text_field(:comment, :name)) %> | |
8 | + <%= labelled_form_field(_('e-mail'), text_field(:comment, :email)) %> | |
9 | + | |
10 | + <p> | |
11 | + <%= _('If you are a registered user, you can login and be automatically recognized.') %> | |
12 | + </p> | |
13 | + | |
14 | + <% end %> | |
15 | + | |
16 | + <%= labelled_form_field(_('Title'), text_field(:comment, :title)) %> | |
17 | + <%= labelled_form_field(_('Enter your comment'), text_area(:comment, :body)) %> | |
18 | + <%= submit_tag _('Post comment') %> | |
19 | +<% end %> | ... | ... |
app/views/content_viewer/view_page.rhtml
... | ... | @@ -24,3 +24,7 @@ |
24 | 24 | <% end %> |
25 | 25 | <% end %> |
26 | 26 | --> |
27 | + | |
28 | +<h3><%= @comments.size == 0 ? _('No comments yet') : (n_('One comment', '%{comments} comments', @comments.size)) % { :comments => @comments.size} %></h3> | |
29 | +<%= render :partial => 'comment', :collection => @comments %> | |
30 | +<%= render :partial => 'comment_form' %> | ... | ... |
test/functional/content_viewer_controller_test.rb
... | ... | @@ -53,9 +53,6 @@ class ContentViewerControllerTest < Test::Unit::TestCase |
53 | 53 | uses_host 'anhetegua.net' |
54 | 54 | get :view_page, :profile => 'aprofile', :page => ['some_unexisting_page'] |
55 | 55 | assert_response :missing |
56 | - # This is an idea of instead of give an error search for the term | |
57 | -# assert_response :redirect | |
58 | -# assert_redirected_to :controller => 'search', :action => 'index' | |
59 | 56 | end |
60 | 57 | |
61 | 58 | def test_should_get_not_found_error_for_unexisting_profile |
... | ... | @@ -63,10 +60,30 @@ class ContentViewerControllerTest < Test::Unit::TestCase |
63 | 60 | uses_host 'anhetegua' |
64 | 61 | get :view_page, :profile => 'some_unexisting_profile', :page => [] |
65 | 62 | assert_response :missing |
66 | - | |
67 | - # This is an idea of instead of give an error search for the term | |
68 | -# assert_response :redirect | |
69 | -# assert_redirected_to :controller => 'search', :action => 'index' | |
70 | 63 | end |
71 | 64 | |
65 | + def test_should_be_able_to_post_comment_while_authenticated | |
66 | + profile = create_user('popstar').person | |
67 | + page = profile.articles.build(:name => 'myarticle', :body => 'the body of the text') | |
68 | + page.save! | |
69 | + profile.home_page = page; profile.save! | |
70 | + | |
71 | + assert_difference Comment, :count do | |
72 | + login_as('ze') | |
73 | + post :view_page, :profile => 'popstar', :page => [ 'myarticle' ], :comment => { :title => 'crap!', :body => 'I think that this article is crap' } | |
74 | + end | |
75 | + end | |
76 | + | |
77 | + def test_should_be_able_to_post_comment_while_not_authenticated | |
78 | + profile = create_user('popstar').person | |
79 | + page = profile.articles.build(:name => 'myarticle', :body => 'the body of the text') | |
80 | + page.save! | |
81 | + profile.home_page = page; profile.save! | |
82 | + | |
83 | + assert_difference Comment, :count do | |
84 | + post :view_page, :profile => 'popstar', :page => [ 'myarticle' ], :comment => { :title => 'crap!', :body => 'I think that this article is crap', :name => 'Anonymous coward', :email => 'coward@anonymous.com' } | |
85 | + end | |
86 | + end | |
87 | + | |
88 | + | |
72 | 89 | end | ... | ... |