Commit 46095aa0e2b0e02d11d6e7899c527b79311071a7
1 parent
7e9327d0
Exists in
master
and in
28 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 | ... | ... |