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 | 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 | 18 | settings_items :nodes, :type => Array, :default => [] |
| 4 | 19 | settings_items :parent_nodes, :type => Array, :default => [] |
| 5 | 20 | settings_items :sections, |
| 6 | 21 | :type => Array, |
| 7 | - :default => [{:name => _('Title'), :checked => true}, | |
| 22 | + :default => [{:name => _('Publish date'), :checked => true}, | |
| 23 | + {:name => _('Title'), :checked => true}, | |
| 8 | 24 | {:name => _('Abstract'), :checked => true}, |
| 9 | 25 | {:name => _('Body'), :checked => false}, |
| 10 | 26 | {:name => _('Image'), :checked => false}] |
| ... | ... | @@ -54,10 +70,12 @@ class DisplayContentBlock < Block |
| 54 | 70 | |
| 55 | 71 | sections.select { |section| |
| 56 | 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 | 75 | when 'Title' |
| 58 | 76 | content_sections += (display_section?(section) ? (content_tag('div', link_to(h(item.title), item.url), :class => 'title') ) : '') |
| 59 | 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 | 79 | if display_section?(section) |
| 62 | 80 | read_more_section = content_tag('div', link_to(_('Read more'), item.url), :class => 'read_more') |
| 63 | 81 | end |
| ... | ... | @@ -115,4 +133,20 @@ class DisplayContentBlock < Block |
| 115 | 133 | { :profile => [:article], :environment => [:article] } |
| 116 | 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 | 152 | end | ... | ... |
plugins/display_content/public/style.css
| ... | ... | @@ -15,6 +15,7 @@ |
| 15 | 15 | margin: 5px; |
| 16 | 16 | } |
| 17 | 17 | |
| 18 | +.block.display-content-block .published-at, | |
| 18 | 19 | .block.display-content-block .title, |
| 19 | 20 | .block.display-content-block .lead, |
| 20 | 21 | .block.display-content-block .body, |
| ... | ... | @@ -23,3 +24,4 @@ |
| 23 | 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 | 674 | assert block.display_section?(section) |
| 675 | 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 | 700 | end | ... | ... |