Commit fa785f1a9a10f109c4c966f06418090de6ef5ebe
Committed by
Fabio Teixeira
1 parent
088735b3
Exists in
article_blog_visualization_format
Add new visualization option for blog posts.
Signed-off-by: Arthur Del Esposte <arthurmde@gmail.com> Signed-off-by: David Carlos <ddavidcarlos1392@gmail.com> Signed-off-by: Gabriela Navarro <navarro1703@gmail.com>
Showing
9 changed files
with
107 additions
and
9 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
app/helpers/blog_helper.rb
| ... | ... | @@ -2,6 +2,7 @@ module BlogHelper |
| 2 | 2 | |
| 3 | 3 | include ArticleHelper |
| 4 | 4 | |
| 5 | + | |
| 5 | 6 | def custom_options_for_article(article,tokenized_children) |
| 6 | 7 | @article = article |
| 7 | 8 | hidden_field_tag('article[published]', 1) + |
| ... | ... | @@ -22,7 +23,9 @@ module BlogHelper |
| 22 | 23 | :param_name => 'npage', |
| 23 | 24 | :previous_label => _('« Newer posts'), |
| 24 | 25 | :next_label => _('Older posts »'), |
| 25 | - :params => {:action=>"view_page", :page=>articles.first.parent.path.split('/'), :controller=>"content_viewer"} | |
| 26 | + :params => {:action=>"view_page", | |
| 27 | + :page=>articles.first.parent.path.split('/'), | |
| 28 | + :controller=>"content_viewer"} | |
| 26 | 29 | }) if articles.present? && conf[:paginate] |
| 27 | 30 | content = [] |
| 28 | 31 | artic_len = articles.length |
| ... | ... | @@ -44,7 +47,7 @@ module BlogHelper |
| 44 | 47 | end |
| 45 | 48 | |
| 46 | 49 | def display_post(article, format = 'full') |
| 47 | - no_comments = (format == 'full') ? false : true | |
| 50 | + no_comments = (format == 'full' || format == 'compact' ) ? false : true | |
| 48 | 51 | title = article_title(article, :no_comments => no_comments) |
| 49 | 52 | method = "display_#{format.split('+')[0]}_format" |
| 50 | 53 | html = send(method, FilePresenter.for(article)).html_safe |
| ... | ... | @@ -55,8 +58,12 @@ module BlogHelper |
| 55 | 58 | else |
| 56 | 59 | '<div class="post-pic" style="background-image:url('+img+')"></div>' |
| 57 | 60 | end |
| 58 | - end.to_s + | |
| 59 | - title + html | |
| 61 | + end.to_s + title + html | |
| 62 | + end | |
| 63 | + | |
| 64 | + def display_compact_format(article) | |
| 65 | + render :file => 'content_viewer/_display_compact_format', | |
| 66 | + :locals => { :article => article, :format => "compact" } | |
| 60 | 67 | end |
| 61 | 68 | |
| 62 | 69 | def display_full_format(article) | ... | ... |
app/models/blog.rb
| ... | ... | @@ -76,9 +76,12 @@ class Blog < Folder |
| 76 | 76 | end |
| 77 | 77 | |
| 78 | 78 | settings_items :visualization_format, :type => :string, :default => 'full' |
| 79 | - validates_inclusion_of :visualization_format, :in => [ 'full', 'short', 'short+pic' ], :if => :visualization_format | |
| 79 | + validates_inclusion_of :visualization_format, | |
| 80 | + :in => [ 'full', 'short', 'short+pic', 'compact'], | |
| 81 | + :if => :visualization_format | |
| 80 | 82 | |
| 81 | - settings_items :display_posts_in_current_language, :type => :boolean, :default => false | |
| 83 | + settings_items :display_posts_in_current_language, | |
| 84 | + :type => :boolean, :default => false | |
| 82 | 85 | |
| 83 | 86 | alias :display_posts_in_current_language? :display_posts_in_current_language |
| 84 | 87 | ... | ... |
app/views/cms/_blog.html.erb
| ... | ... | @@ -67,7 +67,8 @@ |
| 67 | 67 | <%= labelled_form_field(_('How to display posts:'), f.select(:visualization_format, [ |
| 68 | 68 | [ _('Full post'), 'full'], |
| 69 | 69 | [ _('First paragraph'), 'short'], |
| 70 | - [ _('First paragraph, with post picture'), 'short+pic'] | |
| 70 | + [ _('First paragraph, with post picture'), 'short+pic'], | |
| 71 | + [ _("Title, Image, Lead"), 'compact'] | |
| 71 | 72 | ])) %> |
| 72 | 73 | |
| 73 | 74 | <%= labelled_form_field(_('Posts per page:'), f.select(:posts_per_page, Blog.posts_per_page_options)) %> | ... | ... |
app/views/content_viewer/_display_compact_format.html.erb
0 → 100644
| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | +<% if article.image %> | |
| 2 | + <% className = "article-compact-abstract-with-image" %> | |
| 3 | + <% if article.image.thumbnails_processed? %> | |
| 4 | + <% image_file = article.image.thumbnails[4].public_filename %> | |
| 5 | + <% else %> | |
| 6 | + <% image_file = "/images/icons-app/image-loading-thumb.png" %> | |
| 7 | + <% end %> | |
| 8 | +<% else %> | |
| 9 | + <% className = "article-compact-abstract" %> | |
| 10 | +<% end %> | |
| 11 | + | |
| 12 | +<div> | |
| 13 | + <% if article.image %> | |
| 14 | + <div class = "article-compact-image"> | |
| 15 | + <%= image_tag(image_file) %> | |
| 16 | + </div> | |
| 17 | + <% end %> | |
| 18 | + <div class = <%= className %> > | |
| 19 | + <%= article.abstract.truncate(400) %> | |
| 20 | + </div> | |
| 21 | +</div> | ... | ... |
app/views/content_viewer/blog_page.html.erb
public/stylesheets/application.css
| ... | ... | @@ -1559,6 +1559,31 @@ div.article-body p img { |
| 1559 | 1559 | #content .blog-post .read-more a { |
| 1560 | 1560 | margin: 0 10px; |
| 1561 | 1561 | } |
| 1562 | + | |
| 1563 | +#content #article .blog-posts .blog-post .article-compact-abstract{ | |
| 1564 | + position: relative; | |
| 1565 | + float:left; | |
| 1566 | + margin-left: 10px; | |
| 1567 | + width: 100%; | |
| 1568 | + word-wrap: break-word; | |
| 1569 | +} | |
| 1570 | + | |
| 1571 | +#content #article .blog-posts .blog-post .article-compact-image{ | |
| 1572 | + position:relative; | |
| 1573 | + float:left; | |
| 1574 | + width: 27%; | |
| 1575 | + display: table-cell; | |
| 1576 | + vertical-align: middle; | |
| 1577 | + text-align: center; | |
| 1578 | +} | |
| 1579 | + | |
| 1580 | +#content #article .blog-posts .blog-post .article-compact-abstract-with-image{ | |
| 1581 | + position: relative; | |
| 1582 | + float:left; | |
| 1583 | + margin-left: 10px; | |
| 1584 | + width: 70%; | |
| 1585 | + word-wrap: break-word; | |
| 1586 | +} | |
| 1562 | 1587 | /* NOT PUBLISHED BLOG POSTS */ |
| 1563 | 1588 | |
| 1564 | 1589 | .blog-post.not-published { | ... | ... |
test/functional/content_viewer_controller_test.rb
| ... | ... | @@ -1547,4 +1547,31 @@ class ContentViewerControllerTest < ActionController::TestCase |
| 1547 | 1547 | assert_tag :tag => 'div', :attributes => { :id => 'article-actions' }, :descendant => { :tag => 'a', :attributes => { :href => "/anotherurl" }} |
| 1548 | 1548 | end |
| 1549 | 1549 | |
| 1550 | + should 'show lead,image and title in compact blog visualization' do | |
| 1551 | + community = Community.create(:name => 'test-community') | |
| 1552 | + community.add_member(@profile) | |
| 1553 | + community.save! | |
| 1554 | + | |
| 1555 | + blog = community.articles.find_by_name("Blog") | |
| 1556 | + blog.visualization_format = 'compact' | |
| 1557 | + blog.save! | |
| 1558 | + | |
| 1559 | + article = TinyMceArticle.create(:name => 'Article to be shared with images', | |
| 1560 | + :body => 'This article should be shared with all social networks', | |
| 1561 | + :profile => @profile, | |
| 1562 | + :published => false, | |
| 1563 | + :abstract => "teste teste teste", | |
| 1564 | + :show_to_followers => true, | |
| 1565 | + :image_builder => { :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')} ) | |
| 1566 | + article.parent = blog | |
| 1567 | + article.save! | |
| 1568 | + | |
| 1569 | + login_as(@profile.identifier) | |
| 1570 | + | |
| 1571 | + | |
| 1572 | + get :view_page, :profile => community.identifier, "page" => 'blog' | |
| 1573 | + | |
| 1574 | + assert_tag :tag => 'div', :attributes => { :class => 'article-compact-image' } | |
| 1575 | + assert_tag :tag => 'div', :attributes => { :class => 'article-compact-abstract-with-image' } | |
| 1576 | + end | |
| 1550 | 1577 | end | ... | ... |
test/unit/blog_test.rb
| ... | ... | @@ -161,7 +161,16 @@ class BlogTest < ActiveSupport::TestCase |
| 161 | 161 | assert_equal 'short', p.blog.visualization_format |
| 162 | 162 | end |
| 163 | 163 | |
| 164 | - should 'allow only full and short as visualization_format' do | |
| 164 | + should 'update visualization_format setting to compact' do | |
| 165 | + p = create_user('testuser').person | |
| 166 | + p.articles << build(Blog, :profile => p, :name => 'Blog test') | |
| 167 | + blog = p.blog | |
| 168 | + blog.visualization_format = 'compact' | |
| 169 | + assert blog.save! | |
| 170 | + assert_equal 'compact', p.blog.visualization_format | |
| 171 | + end | |
| 172 | + | |
| 173 | + should 'allow only full, short or compact as visualization_format' do | |
| 165 | 174 | blog = build(Blog, :name => 'blog') |
| 166 | 175 | blog.visualization_format = 'wrong_format' |
| 167 | 176 | blog.valid? |
| ... | ... | @@ -174,6 +183,10 @@ class BlogTest < ActiveSupport::TestCase |
| 174 | 183 | blog.visualization_format = 'full' |
| 175 | 184 | blog.valid? |
| 176 | 185 | assert !blog.errors[:visualization_format.to_s].present? |
| 186 | + | |
| 187 | + blog.visualization_format = 'compact' | |
| 188 | + blog.valid? | |
| 189 | + assert !blog.errors[:visualization_format.to_s].present? | |
| 177 | 190 | end |
| 178 | 191 | |
| 179 | 192 | should 'have posts' do | ... | ... |