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 |