Commit 87648bee97a337c6e9f02f02cb8a41f7c0a72dbf

Authored by AntonioTerceiro
1 parent 4d52e142

ActionItem132: associating articles with categories and displaying them.



git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1161 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/helpers/cms_helper.rb
@@ -22,4 +22,23 @@ module CmsHelper @@ -22,4 +22,23 @@ module CmsHelper
22 end 22 end
23 end 23 end
24 24
  25 + attr_reader :environment
  26 +
  27 + def select_categories(object_name)
  28 + object = instance_variable_get("@#{object_name}")
  29 +
  30 + result = content_tag('h4', _('Categories'))
  31 + environment.top_level_categories.each do |toplevel|
  32 + toplevel.map_traversal do |cat|
  33 + if cat.top_level?
  34 + result << content_tag('h5', toplevel.name)
  35 + else
  36 + result << content_tag('div', check_box_tag("#{object_name}[category_ids][]", cat.id, object.category_ids.include?(cat.id)) + cat.full_name_without_leading(1))
  37 + end
  38 + end
  39 + end
  40 +
  41 + content_tag('div', result)
  42 + end
  43 +
25 end 44 end
app/views/cms/edit.rhtml
1 -  
2 -  
3 -  
4 <%= error_messages_for 'article' %> 1 <%= error_messages_for 'article' %>
5 2
6 <% labelled_form_for 'article', @article, :html => { :multipart => true } do |f| %> 3 <% labelled_form_for 'article', @article, :html => { :multipart => true } do |f| %>
@@ -11,6 +8,8 @@ @@ -11,6 +8,8 @@
11 8
12 <%= render :partial => partial_for_class(@article.class), :locals => { :f => f } %> 9 <%= render :partial => partial_for_class(@article.class), :locals => { :f => f } %>
13 10
  11 + <%= select_categories(:article) %>
  12 +
14 <%# TODO display the tooltip (title below) in a directly visible way %> 13 <%# TODO display the tooltip (title below) in a directly visible way %>
15 <%= f.text_field('tag_list', :size => 64, :title => _('Separate tags with commas')) %> 14 <%= f.text_field('tag_list', :size => 64, :title => _('Separate tags with commas')) %>
16 15
app/views/cms/view.rhtml
@@ -61,6 +61,10 @@ @@ -61,6 +61,10 @@
61 <li> 61 <li>
62 <%= _('Public address of this article: %s') % (@article.public_path) %> 62 <%= _('Public address of this article: %s') % (@article.public_path) %>
63 </li> 63 </li>
  64 + <li>
  65 + <%= _('Tags:') %> <%= @article.tag_list %>
  66 + </li>
  67 + <%= _('Categories:') %> <%= @article.categories.map { |item| item.name }.join(', ') %>
64 </ul> 68 </ul>
65 69
66 <%= button('edit', _('Edit'), { :action => 'edit', :id => @article}) %> 70 <%= button('edit', _('Edit'), { :action => 'edit', :id => @article}) %>
app/views/content_viewer/view_page.rhtml
@@ -25,6 +25,10 @@ @@ -25,6 +25,10 @@
25 <% end %> 25 <% end %>
26 --> 26 -->
27 27
  28 +<h3><%= _('Categories') %></h3>
  29 +
  30 +<%= @page.categories.map {|item| link_to_category(item) }.join(', ') %>
  31 +
28 <h3><%= @comments.size == 0 ? _('No comments yet') : (n_('One comment', '%{comments} comments', @comments.size)) % { :comments => @comments.size} %></h3> 32 <h3><%= @comments.size == 0 ? _('No comments yet') : (n_('One comment', '%{comments} comments', @comments.size)) % { :comments => @comments.size} %></h3>
29 <%= render :partial => 'comment', :collection => @comments %> 33 <%= render :partial => 'comment', :collection => @comments %>
30 <%= render :partial => 'comment_form' %> 34 <%= render :partial => 'comment_form' %>
test/functional/cms_controller_test.rb
@@ -225,4 +225,20 @@ class CmsControllerTest &lt; Test::Unit::TestCase @@ -225,4 +225,20 @@ class CmsControllerTest &lt; Test::Unit::TestCase
225 end 225 end
226 end 226 end
227 227
  228 + should 'be able to associate articles with categories' do
  229 +
  230 + env = Environment.default
  231 + c1 = env.categories.build(:name => "Test category 1"); c1.save!
  232 + c2 = env.categories.build(:name => "Test category 2"); c2.save!
  233 + c3 = env.categories.build(:name => "Test Category 3"); c3.save!
  234 +
  235 + # post is in c1 and c3
  236 + post :new, :type => TextileArticle.name, :profile => profile.identifier, :article => { :name => 'adding-categories-test', :category_ids => [ c1.id, c3.id] }
  237 +
  238 + saved = TextileArticle.find_by_name('adding-categories-test')
  239 + assert_includes saved.categories, c1
  240 + assert_not_includes saved.categories, c2
  241 + assert_includes saved.categories, c3
  242 + end
  243 +
228 end 244 end