Commit 114a2689bf17b950a695406d763488669b9a31e8
1 parent
01bea002
Exists in
master
and in
29 other branches
display content plugin : add publish date attribute
Showing
3 changed files
with
61 additions
and
2 deletions
Show diff stats
plugins/display_content/lib/display_content_block.rb
| 1 | class DisplayContentBlock < Block | 1 | class DisplayContentBlock < Block |
| 2 | 2 | ||
| 3 | + MONTHS = [ | ||
| 4 | + N_('January'), | ||
| 5 | + N_('February'), | ||
| 6 | + N_('March'), | ||
| 7 | + N_('April'), | ||
| 8 | + N_('May'), | ||
| 9 | + N_('June'), | ||
| 10 | + N_('July'), | ||
| 11 | + N_('August'), | ||
| 12 | + N_('September'), | ||
| 13 | + N_('October'), | ||
| 14 | + N_('November'), | ||
| 15 | + N_('December') | ||
| 16 | + ] | ||
| 17 | + | ||
| 3 | settings_items :nodes, :type => Array, :default => [] | 18 | settings_items :nodes, :type => Array, :default => [] |
| 4 | settings_items :parent_nodes, :type => Array, :default => [] | 19 | settings_items :parent_nodes, :type => Array, :default => [] |
| 5 | settings_items :sections, | 20 | settings_items :sections, |
| 6 | :type => Array, | 21 | :type => Array, |
| 7 | - :default => [{:name => _('Title'), :checked => true}, | 22 | + :default => [{:name => _('Publish date'), :checked => true}, |
| 23 | + {:name => _('Title'), :checked => true}, | ||
| 8 | {:name => _('Abstract'), :checked => true}, | 24 | {:name => _('Abstract'), :checked => true}, |
| 9 | {:name => _('Body'), :checked => false}, | 25 | {:name => _('Body'), :checked => false}, |
| 10 | {:name => _('Image'), :checked => false}] | 26 | {:name => _('Image'), :checked => false}] |
| @@ -54,10 +70,12 @@ class DisplayContentBlock < Block | @@ -54,10 +70,12 @@ class DisplayContentBlock < Block | ||
| 54 | 70 | ||
| 55 | sections.select { |section| | 71 | sections.select { |section| |
| 56 | case section[:name] | 72 | case section[:name] |
| 73 | + when 'Publish date' | ||
| 74 | + content_sections += (display_section?(section) ? (content_tag('div', show_date(item.published_at, false), :class => 'published-at') ) : '') | ||
| 57 | when 'Title' | 75 | when 'Title' |
| 58 | content_sections += (display_section?(section) ? (content_tag('div', link_to(h(item.title), item.url), :class => 'title') ) : '') | 76 | content_sections += (display_section?(section) ? (content_tag('div', link_to(h(item.title), item.url), :class => 'title') ) : '') |
| 59 | when 'Abstract' | 77 | when 'Abstract' |
| 60 | - content_sections += (display_section?(section) ? (content_tag('div', item.abstract ,:class => 'lead')) : '' ) | 78 | + content_sections += (display_section?(section) ? (content_tag('div', item.abstract , :class => 'lead')) : '' ) |
| 61 | if display_section?(section) | 79 | if display_section?(section) |
| 62 | read_more_section = content_tag('div', link_to(_('Read more'), item.url), :class => 'read_more') | 80 | read_more_section = content_tag('div', link_to(_('Read more'), item.url), :class => 'read_more') |
| 63 | end | 81 | end |
| @@ -115,4 +133,20 @@ class DisplayContentBlock < Block | @@ -115,4 +133,20 @@ class DisplayContentBlock < Block | ||
| 115 | { :profile => [:article], :environment => [:article] } | 133 | { :profile => [:article], :environment => [:article] } |
| 116 | end | 134 | end |
| 117 | 135 | ||
| 136 | + def show_date(date, use_numbers = false, year=true) | ||
| 137 | + if date && use_numbers | ||
| 138 | + date_format = year ? _('%{month}/%{day}/%{year}') : _('%{month}/%{day}') | ||
| 139 | + date_format % { :day => date.day, :month => date.month, :year => date.year } | ||
| 140 | + elsif date | ||
| 141 | + date_format = year ? _('%{month_name} %{day}, %{year}') : _('%{month_name} %{day}') | ||
| 142 | + date_format % { :day => date.day, :month_name => month_name(date.month), :year => date.year } | ||
| 143 | + else | ||
| 144 | + '' | ||
| 145 | + end | ||
| 146 | + end | ||
| 147 | + | ||
| 148 | + def month_name(n) | ||
| 149 | + _(MONTHS[n-1]) | ||
| 150 | + end | ||
| 151 | + | ||
| 118 | end | 152 | end |
plugins/display_content/public/style.css
| @@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
| 15 | margin: 5px; | 15 | margin: 5px; |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | +.block.display-content-block .published-at, | ||
| 18 | .block.display-content-block .title, | 19 | .block.display-content-block .title, |
| 19 | .block.display-content-block .lead, | 20 | .block.display-content-block .lead, |
| 20 | .block.display-content-block .body, | 21 | .block.display-content-block .body, |
| @@ -23,3 +24,4 @@ | @@ -23,3 +24,4 @@ | ||
| 23 | margin: 2px 0px 2px 0px; | 24 | margin: 2px 0px 2px 0px; |
| 24 | } | 25 | } |
| 25 | 26 | ||
| 27 | + |
plugins/display_content/test/unit/display_content_block_test.rb
| @@ -674,4 +674,27 @@ class DisplayContentBlockTest < ActiveSupport::TestCase | @@ -674,4 +674,27 @@ class DisplayContentBlockTest < ActiveSupport::TestCase | ||
| 674 | assert block.display_section?(section) | 674 | assert block.display_section?(section) |
| 675 | end | 675 | end |
| 676 | 676 | ||
| 677 | + should 'display_attribute be true for publish date by default' do | ||
| 678 | + profile = create_user('testuser').person | ||
| 679 | + | ||
| 680 | + block = DisplayContentBlock.new | ||
| 681 | + | ||
| 682 | + assert block.display_section?({:name => 'Publish date', :checked => true}) | ||
| 683 | + end | ||
| 684 | + | ||
| 685 | + should 'show publishd date if defined by user' do | ||
| 686 | + profile = create_user('testuser').person | ||
| 687 | + a = fast_create(TextArticle, :name => 'test article 1', :profile_id => profile.id, :body => 'some body') | ||
| 688 | + | ||
| 689 | + block = DisplayContentBlock.new | ||
| 690 | + block.nodes = [a.id] | ||
| 691 | + block.sections = [{:name => 'Publish date', :checked => true}] | ||
| 692 | + box = mock() | ||
| 693 | + block.stubs(:box).returns(box) | ||
| 694 | + box.stubs(:owner).returns(profile) | ||
| 695 | + | ||
| 696 | + assert_match /#{a.published_at}/, block.content | ||
| 697 | + end | ||
| 698 | + | ||
| 699 | + | ||
| 677 | end | 700 | end |