diff --git a/app/helpers/folder_helper.rb b/app/helpers/folder_helper.rb index 13b8917..288d1cb 100644 --- a/app/helpers/folder_helper.rb +++ b/app/helpers/folder_helper.rb @@ -1,15 +1,11 @@ module FolderHelper - def list_articles(articles, user, recursive = false) - if !articles.blank? - content_tag( - 'table', - content_tag('tr', content_tag('th', _('Title')) + content_tag('th', _('Last update'))) + - articles.select { |item| item.display_to?(user)}.map {|item| display_article_in_listing(item, recursive, 0)}.join('') - ) - else - content_tag('em', _('(empty folder)')) - end + def list_articles(articles, recursive = false) + content_tag( + 'table', + content_tag('tr', content_tag('th', _('Title')) + content_tag('th', _('Last update'))) + + articles.select { |item| item.public? }.map {|item| display_article_in_listing(item, recursive, 0)}.join('') + ) end def display_article_in_listing(article, recursive = false, level = 0) diff --git a/app/models/folder.rb b/app/models/folder.rb index 280c7ec..9b6252f 100644 --- a/app/models/folder.rb +++ b/app/models/folder.rb @@ -41,7 +41,7 @@ class Folder < Article end def folder - content_tag('div', body) + tag('hr') + content_tag('div', body) + tag('hr') + (children.empty? ? content_tag('em', _('(empty folder)')) : list_articles(children)) end def image_gallery diff --git a/app/views/content_viewer/view_page.rhtml b/app/views/content_viewer/view_page.rhtml index b405289..ee16534 100644 --- a/app/views/content_viewer/view_page.rhtml +++ b/app/views/content_viewer/view_page.rhtml @@ -85,9 +85,6 @@ <% cache(@page.cache_key(params, user)) do %>
"> <%= article_to_html(@page) %> - <% if @page.folder? %> - <%= list_articles(@page.children, user)%> - <% end %>
<% end %> diff --git a/app/views/profile/sitemap.rhtml b/app/views/profile/sitemap.rhtml index 4f7c8da..fd74211 100644 --- a/app/views/profile/sitemap.rhtml +++ b/app/views/profile/sitemap.rhtml @@ -1,3 +1,3 @@

<%= _("%s: site map") % profile.name %>

-<%= list_articles(@articles, user) %> +<%= list_articles(@articles, false) %> diff --git a/test/unit/folder_helper_test.rb b/test/unit/folder_helper_test.rb index cbc2805..c0cb378 100644 --- a/test/unit/folder_helper_test.rb +++ b/test/unit/folder_helper_test.rb @@ -15,82 +15,4 @@ class FolderHelperTest < Test::Unit::TestCase assert_equal 'icons-mime/unknown.png', icon_for_article(art2) end - should 'list all the folder\'s children to the owner' do - profile = create_user('Folder Owner').person - folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) - sub_folder = fast_create(Folder, {:name => 'Child Folder', :parent_id => folder.id, - :profile_id => profile.id}) - sub_blog = fast_create(Blog, {:name => 'Child Blog', :parent_id => folder.id, - :profile_id => profile.id}) - sub_article = fast_create(Article, {:name => 'Not Public Child Article', :parent_id => - folder.id, :profile_id => profile.id, :published => false}) - - result = folder.list_articles(folder.children, profile) - - assert_match 'Child Folder', result - assert_match 'Not Public Child Article', result - assert_match 'Child Blog', result - end - - should 'list the folder\'s children that are public to the user' do - profile = create_user('Folder Owner').person - profile2 = create_user('Folder Viwer').person - folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) - public_article = fast_create(Article, {:name => 'Public Article', :parent_id => - folder.id, :profile_id => profile.id, :published => true}) - not_public_article = fast_create(Article, {:name => 'Not Public Article', :parent_id => - folder.id, :profile_id => profile.id, :published => false}) - - result = folder.list_articles(folder.children, profile2) - - assert_match 'Public Article', result - assert_no_match /Not Public Article/, result - end - - should ' not list the folder\'s children to the user because the owner\'s profile is not public' do - profile = create_user('folder-owner').person - profile.public_profile = false - profile.save! - profile2 = create_user('Folder Viwer').person - folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) - article = fast_create(Article, {:name => 'Article', :parent_id => folder.id, :profile_id => profile.id}) - - result = folder.list_articles(folder.children, profile2) - - assert_no_match /Article/, result - end - - should ' not list the folder\'s children to the user because the owner\'s profile is not visible' do - profile = create_user('folder-owner').person - profile.visible = false - profile.save! - profile2 = create_user('Folder Viwer').person - folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) - article = fast_create(Article, {:name => 'Article', :parent_id => folder.id, :profile_id => profile.id}) - - result = folder.list_articles(folder.children, profile2) - - assert_no_match /Article/, result - end - - should 'list subitems as HTML content' do - profile = create_user('folder-owner').person - folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) - article = fast_create(Article, {:name => 'Article1', :parent_id => folder.id, :profile_id => profile.id}) - article = fast_create(Article, {:name => 'Article2', :parent_id => folder.id, :profile_id => profile.id}) - - result = folder.list_articles(folder.children, profile) - - assert_tag_in_string result, :tag => 'td', :descendant => { :tag => 'a', :attributes => { :href => /.*\/folder-owner\/my-article-[0-9]*(\?|$)/ } }, :content => /Article1/ - assert_tag_in_string result, :tag => 'td', :descendant => { :tag => 'a', :attributes => { :href => /.*\/folder-owner\/my-article-[0-9]*(\?|$)/ } }, :content => /Article2/ - end - - should 'explictly advise if empty' do - profile = create_user('folder-owner').person - folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) - result = folder.list_articles(folder.children, profile) - - assert_match '(empty folder)', result - end - end diff --git a/test/unit/folder_test.rb b/test/unit/folder_test.rb index 8f0b3d3..3d9c893 100644 --- a/test/unit/folder_test.rb +++ b/test/unit/folder_test.rb @@ -18,6 +18,23 @@ class FolderTest < ActiveSupport::TestCase assert_not_equal Article.new.icon_name, Folder.new.icon_name end + should 'list subitems as HTML content' do + p = create_user('testuser').person + f = Folder.create!(:profile => p, :name => 'f') + f.children.create!(:profile => p, :name => 'onearticle') + f.children.create!(:profile => p, :name => 'otherarticle') + f.reload + + assert_tag_in_string f.to_html, :tag => 'td', :descendant => { :tag => 'a', :attributes => { :href => /.*\/testuser\/f\/onearticle(\?|$)/ } }, :content => /onearticle/ + assert_tag_in_string f.to_html, :tag => 'td', :descendant => { :tag => 'a', :attributes => { :href => /.*\/testuser\/f\/otherarticle(\?|$)/ } }, :content => /otherarticle/ + end + + should 'explictly advise if empty' do + p = create_user('testuser').person + f = Folder.create!(:profile => p, :name => 'f') + assert_tag_in_string f.to_html, :content => '(empty folder)' + end + should 'show text body in HTML content' do p = create_user('testuser').person f = Folder.create!(:name => 'f', :profile => p, :body => 'this-is-the-text') -- libgit2 0.21.2