Commit 46095aa0e2b0e02d11d6e7899c527b79311071a7

Authored by Leandro Nunes dos Santos
1 parent 7e9327d0

Show only text article and folders on tree content

plugins/display_content/lib/display_content_block.rb
... ... @@ -18,6 +18,7 @@ class DisplayContentBlock < Block
18 18 self.holder.articles.find(params.keys).map do |article|
19 19 if article.folder?
20 20 articles = articles + article.children
  21 + parent_articles << article.id
21 22 else
22 23 articles<< article
23 24 end
... ... @@ -27,9 +28,11 @@ class DisplayContentBlock &lt; Block
27 28 self.nodes = articles.map{|a| a.id if a.is_a?(TextArticle) }.compact
28 29 end
29 30  
  31 + VALID_CONTENT = ['RawHTMLArticle', 'TextArticle', 'TextileArticle', 'TinyMceArticle', 'Folder', 'Blog', 'Forum']
  32 +
30 33 def articles_of_parent(parent = nil)
31 34 return [] if self.holder.nil?
32   - holder.articles.find(:all, :conditions => {:parent_id => parent.nil? ? nil : parent})
  35 + holder.articles.find(:all, :conditions => {:type => VALID_CONTENT, :parent_id => (parent.nil? ? nil : parent)})
33 36 end
34 37  
35 38 include ActionController::UrlWriter
... ...
plugins/display_content/test/unit/display_content_block_test.rb
1 1 require File.dirname(__FILE__) + '/../test_helper'
2 2 class DisplayContentBlockTest < ActiveSupport::TestCase
3 3  
  4 + INVALID_KIND_OF_ARTICLE = [EnterpriseHomepage, Event, RssFeed, UploadedFile, Gallery]
  5 + VALID_KIND_OF_ARTICLE = [RawHTMLArticle, TextArticle, TextileArticle, TinyMceArticle, Folder, Blog, Forum]
  6 +
4 7 should 'describe itself' do
5 8 assert_not_equal Block.description, DisplayContentBlock.description
6 9 end
... ... @@ -376,6 +379,57 @@ class DisplayContentBlockTest &lt; ActiveSupport::TestCase
376 379 assert_equal [], block.parent_nodes - [f1.id, f2.id, f3.id, f4.id, f5.id]
377 380 end
378 381  
  382 + should "save the folder in parent_nodes variable if it was checked" do
  383 + profile = create_user('testuser').person
  384 + Article.delete_all
  385 + f1 = fast_create(Folder, :name => 'test folder 1', :profile_id => profile.id)
  386 + a1 = fast_create(TextileArticle, :name => 'test article 1', :profile_id => profile.id, :parent_id => f1.id)
  387 + a2 = fast_create(TextileArticle, :name => 'test article 4', :profile_id => profile.id, :parent_id => f1.id)
  388 +
  389 + checked_articles= {f1.id => 1}
  390 +
  391 + block = DisplayContentBlock.new
  392 + block.stubs(:holder).returns(profile)
  393 + block.checked_nodes= checked_articles
  394 +
  395 + assert_equal [], [f1.id] - block.parent_nodes
  396 + assert_equal [], block.parent_nodes - [f1.id]
  397 + end
  398 +
  399 + should "save the blog in parent_nodes variable if it was checked" do
  400 + profile = create_user('testuser').person
  401 + Article.delete_all
  402 + b1 = fast_create(Blog, :name => 'test folder 1', :profile_id => profile.id)
  403 + a1 = fast_create(TextileArticle, :name => 'test article 1', :profile_id => profile.id, :parent_id => b1.id)
  404 + a2 = fast_create(TextileArticle, :name => 'test article 4', :profile_id => profile.id, :parent_id => b1.id)
  405 +
  406 + checked_articles= {b1.id => 1}
  407 +
  408 + block = DisplayContentBlock.new
  409 + block.stubs(:holder).returns(profile)
  410 + block.checked_nodes= checked_articles
  411 +
  412 + assert_equal [], [b1.id] - block.parent_nodes
  413 + assert_equal [], block.parent_nodes - [b1.id]
  414 + end
  415 +
  416 + should "save the forum in parent_nodes variable if it was checked" do
  417 + profile = create_user('testuser').person
  418 + Article.delete_all
  419 + f1 = fast_create(Forum, :name => 'test folder 1', :profile_id => profile.id)
  420 + a1 = fast_create(TextileArticle, :name => 'test article 1', :profile_id => profile.id, :parent_id => f1.id)
  421 + a2 = fast_create(TextileArticle, :name => 'test article 4', :profile_id => profile.id, :parent_id => f1.id)
  422 +
  423 + checked_articles= {f1.id => 1}
  424 +
  425 + block = DisplayContentBlock.new
  426 + block.stubs(:holder).returns(profile)
  427 + block.checked_nodes= checked_articles
  428 +
  429 + assert_equal [], [f1.id] - block.parent_nodes
  430 + assert_equal [], block.parent_nodes - [f1.id]
  431 + end
  432 +
379 433 should "return all root articles from profile" do
380 434 profile = create_user('testuser').person
381 435 Article.delete_all
... ... @@ -454,6 +508,41 @@ class DisplayContentBlockTest &lt; ActiveSupport::TestCase
454 508 assert_equal [], block.articles_of_parent()
455 509 end
456 510  
  511 + INVALID_KIND_OF_ARTICLE.map do |invalid_article|
  512 +
  513 + define_method "test_should_not_return_#{invalid_article.name}_articles_in_articles_of_parent_method" do
  514 + profile = create_user('testuser').person
  515 + Article.delete_all
  516 + a1 = fast_create(invalid_article, :name => 'test article 1', :profile_id => profile.id)
  517 + a2 = fast_create(VALID_KIND_OF_ARTICLE.first, :name => 'test article 2', :profile_id => profile.id)
  518 +
  519 + block = DisplayContentBlock.new
  520 + box = mock()
  521 + box.stubs(:owner).returns(profile)
  522 + block.stubs(:box).returns(box)
  523 + assert_equal [], [a2] - block.articles_of_parent
  524 + assert_equal [], block.articles_of_parent - [a2]
  525 + end
  526 +
  527 + end
  528 +
  529 + VALID_KIND_OF_ARTICLE.map do |valid_article|
  530 +
  531 + define_method "test_should_return_#{valid_article.name}_articles_in_articles_of_parent_method" do
  532 + profile = create_user('testuser').person
  533 + Article.delete_all
  534 + a1 = fast_create(valid_article, :name => 'test article 1', :profile_id => profile.id)
  535 + a2 = fast_create(INVALID_KIND_OF_ARTICLE.first, :name => 'test article 2', :profile_id => profile.id)
  536 +
  537 + block = DisplayContentBlock.new
  538 + box = mock()
  539 + box.stubs(:owner).returns(profile)
  540 + block.stubs(:box).returns(box)
  541 + assert_equal [a1], block.articles_of_parent
  542 + end
  543 +
  544 + end
  545 +
457 546 should 'list links for all articles title defined in nodes' do
458 547 profile = create_user('testuser').person
459 548 Article.delete_all
... ...