Commit 46095aa0e2b0e02d11d6e7899c527b79311071a7
1 parent
7e9327d0
Exists in
master
and in
23 other branches
Show only text article and folders on tree content
Showing
2 changed files
with
93 additions
and
1 deletions
Show diff stats
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 < 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 < 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 < 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 | ... | ... |