Commit 87648bee97a337c6e9f02f02cb8a41f7c0a72dbf
1 parent
4d52e142
Exists in
master
and in
28 other branches
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
Showing
5 changed files
with
45 additions
and
3 deletions
Show diff stats
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 < Test::Unit::TestCase | @@ -225,4 +225,20 @@ class CmsControllerTest < 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 |