From 114a2689bf17b950a695406d763488669b9a31e8 Mon Sep 17 00:00:00 2001 From: Francisco Marcelo de Araújo Lima Júnior Date: Sat, 7 Dec 2013 15:51:21 -0300 Subject: [PATCH] display content plugin : add publish date attribute --- plugins/display_content/lib/display_content_block.rb | 38 ++++++++++++++++++++++++++++++++++++-- plugins/display_content/public/style.css | 2 ++ plugins/display_content/test/unit/display_content_block_test.rb | 23 +++++++++++++++++++++++ 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/plugins/display_content/lib/display_content_block.rb b/plugins/display_content/lib/display_content_block.rb index 5e541a5..291f6d5 100644 --- a/plugins/display_content/lib/display_content_block.rb +++ b/plugins/display_content/lib/display_content_block.rb @@ -1,10 +1,26 @@ class DisplayContentBlock < Block + MONTHS = [ + N_('January'), + N_('February'), + N_('March'), + N_('April'), + N_('May'), + N_('June'), + N_('July'), + N_('August'), + N_('September'), + N_('October'), + N_('November'), + N_('December') + ] + settings_items :nodes, :type => Array, :default => [] settings_items :parent_nodes, :type => Array, :default => [] settings_items :sections, :type => Array, - :default => [{:name => _('Title'), :checked => true}, + :default => [{:name => _('Publish date'), :checked => true}, + {:name => _('Title'), :checked => true}, {:name => _('Abstract'), :checked => true}, {:name => _('Body'), :checked => false}, {:name => _('Image'), :checked => false}] @@ -54,10 +70,12 @@ class DisplayContentBlock < Block sections.select { |section| case section[:name] + when 'Publish date' + content_sections += (display_section?(section) ? (content_tag('div', show_date(item.published_at, false), :class => 'published-at') ) : '') when 'Title' content_sections += (display_section?(section) ? (content_tag('div', link_to(h(item.title), item.url), :class => 'title') ) : '') when 'Abstract' - content_sections += (display_section?(section) ? (content_tag('div', item.abstract ,:class => 'lead')) : '' ) + content_sections += (display_section?(section) ? (content_tag('div', item.abstract , :class => 'lead')) : '' ) if display_section?(section) read_more_section = content_tag('div', link_to(_('Read more'), item.url), :class => 'read_more') end @@ -115,4 +133,20 @@ class DisplayContentBlock < Block { :profile => [:article], :environment => [:article] } end + def show_date(date, use_numbers = false, year=true) + if date && use_numbers + date_format = year ? _('%{month}/%{day}/%{year}') : _('%{month}/%{day}') + date_format % { :day => date.day, :month => date.month, :year => date.year } + elsif date + date_format = year ? _('%{month_name} %{day}, %{year}') : _('%{month_name} %{day}') + date_format % { :day => date.day, :month_name => month_name(date.month), :year => date.year } + else + '' + end + end + + def month_name(n) + _(MONTHS[n-1]) + end + end diff --git a/plugins/display_content/public/style.css b/plugins/display_content/public/style.css index 4bc3106..b65a8cd 100644 --- a/plugins/display_content/public/style.css +++ b/plugins/display_content/public/style.css @@ -15,6 +15,7 @@ margin: 5px; } +.block.display-content-block .published-at, .block.display-content-block .title, .block.display-content-block .lead, .block.display-content-block .body, @@ -23,3 +24,4 @@ margin: 2px 0px 2px 0px; } + diff --git a/plugins/display_content/test/unit/display_content_block_test.rb b/plugins/display_content/test/unit/display_content_block_test.rb index bc63955..be9fc7f 100644 --- a/plugins/display_content/test/unit/display_content_block_test.rb +++ b/plugins/display_content/test/unit/display_content_block_test.rb @@ -674,4 +674,27 @@ class DisplayContentBlockTest < ActiveSupport::TestCase assert block.display_section?(section) end + should 'display_attribute be true for publish date by default' do + profile = create_user('testuser').person + + block = DisplayContentBlock.new + + assert block.display_section?({:name => 'Publish date', :checked => true}) + end + + should 'show publishd date if defined by user' do + profile = create_user('testuser').person + a = fast_create(TextArticle, :name => 'test article 1', :profile_id => profile.id, :body => 'some body') + + block = DisplayContentBlock.new + block.nodes = [a.id] + block.sections = [{:name => 'Publish date', :checked => true}] + box = mock() + block.stubs(:box).returns(box) + box.stubs(:owner).returns(profile) + + assert_match /#{a.published_at}/, block.content + end + + end -- libgit2 0.21.2