Commit a778c26196568ef0468c7425d07338a27078e75c

Authored by Antonio Terceiro
1 parent 24c78ad5

Refactor logic in the article toolbar

Maximum nesting level reduced from 4 to 2. Pretty good, hm?

(ActionItem2345)
app/models/article.rb
@@ -408,6 +408,14 @@ class Article < ActiveRecord::Base @@ -408,6 +408,14 @@ class Article < ActiveRecord::Base
408 user && user.has_permission?('view_private_content', profile) 408 user && user.has_permission?('view_private_content', profile)
409 end 409 end
410 410
  411 + alias :allow_delete? :allow_post_content?
  412 + alias :allow_spread? :allow_post_content?
  413 + alias :allow_edit? :allow_post_content?
  414 +
  415 + def allow_create?(user)
  416 + allow_post_content?(user) || allow_publish_content?(user)
  417 + end
  418 +
411 def comments_updated 419 def comments_updated
412 ferret_update 420 ferret_update
413 end 421 end
app/views/content_viewer/_article_toolbar.rhtml
1 -<div<%= " class='logged-in'" if user %>> 1 +<div<%= user && " class='logged-in'" %>>
2 <div id="article-actions"> 2 <div id="article-actions">
3 - <% if @page.allow_post_content?(user) || @page.allow_publish_content?(user) %>  
4 - <% if @page.allow_post_content?(user) %>  
5 - <%= link_to content_tag( 'span', label_for_edit_article(@page) ),  
6 - profile.admin_url.merge({ :controller => 'cms', :action => 'edit', :id => @page.id }),  
7 - :class => 'button with-text icon-edit' %>  
8 - <% if @page != profile.home_page && !@page.has_posts? %>  
9 - <%= link_to content_tag( 'span', _('Delete') ),  
10 - profile.admin_url.merge({ :controller => 'cms', :action => 'destroy', :id => @page}),  
11 - :method => :post,  
12 - :class => 'button with-text icon-delete',  
13 - :confirm => delete_article_message(@page) %>  
14 - <% end %>  
15 - <% if !@page.folder? %>  
16 - <% if profile.kind_of?(Person) %>  
17 - <%= link_to content_tag( 'span', _('Spread this') ),  
18 - profile.admin_url.merge({ :controller => 'cms', :action => 'publish', :id => @page }),  
19 - :class => 'button with-text icon-spread' %>  
20 - <% elsif profile.kind_of?(Community) && environment.portal_community %>  
21 - <%= link_to content_tag( 'span', _('Spread this') ),  
22 - profile.admin_url.merge({ :controller => 'cms', :action => 'publish_on_portal_community', :id => @page }),  
23 - :class => 'button with-text icon-spread' %>  
24 - <% end %>  
25 - <% end %>  
26 - <% end %>  
27 - <% if !@page.gallery? %>  
28 - <%= link_to _('Add translation'),  
29 - profile.admin_url.merge(:controller => 'cms', :action => 'new',  
30 - :parent_id => (@page.folder? ? @page : (@page.parent.nil? ? nil : @page.parent)),  
31 - :type => @page.type, :article => { :translation_of_id => @page.native_translation.id }),  
32 - :class => 'button with-text icon-locale' if @page.translatable? && !@page.native_translation.language.blank? %>  
33 - <%= lightbox_remote_button(:new, label_for_new_article(@page), profile.admin_url.merge(:controller => 'cms', :action => 'new', :parent_id => (@page.folder? ? @page : (@page.parent.nil? ? nil : @page.parent)))) %>  
34 - <% end %>  
35 - <% if @page.accept_uploads? %>  
36 - <%= button('upload-file', _('Upload files'), profile.admin_url.merge(:controller => 'cms', :action => 'upload_files', :parent_id => (@page.folder? ? @page : @page.parent))) %> 3 +
  4 + <% if @page.allow_edit?(user) %>
  5 + <%= link_to content_tag( 'span', label_for_edit_article(@page) ),
  6 + profile.admin_url.merge({ :controller => 'cms', :action => 'edit', :id => @page.id }),
  7 + :class => 'button with-text icon-edit' %>
  8 + <% end %>
  9 +
  10 + <% if @page != profile.home_page && !@page.has_posts? && @page.allow_delete?(user) %>
  11 + <%= link_to content_tag( 'span', _('Delete') ),
  12 + profile.admin_url.merge({ :controller => 'cms', :action => 'destroy', :id => @page}),
  13 + :method => :post,
  14 + :class => 'button with-text icon-delete',
  15 + :confirm => delete_article_message(@page) %>
  16 + <% end %>
  17 +
  18 + <% if !@page.folder? && @page.allow_spread?(user) %>
  19 + <% if profile.kind_of?(Person) %>
  20 + <%= link_to content_tag( 'span', _('Spread this') ),
  21 + profile.admin_url.merge({ :controller => 'cms', :action => 'publish', :id => @page }),
  22 + :class => 'button with-text icon-spread' %>
  23 + <% elsif profile.kind_of?(Community) && environment.portal_community %>
  24 + <%= link_to content_tag( 'span', _('Spread this') ),
  25 + profile.admin_url.merge({ :controller => 'cms', :action => 'publish_on_portal_community', :id => @page }),
  26 + :class => 'button with-text icon-spread' %>
37 <% end %> 27 <% end %>
  28 + <% end %>
  29 +
  30 + <% if !@page.gallery? && @page.allow_create?(user) %>
  31 + <%= link_to _('Add translation'),
  32 + profile.admin_url.merge(:controller => 'cms', :action => 'new',
  33 + :parent_id => (@page.folder? ? @page : (@page.parent.nil? ? nil : @page.parent)),
  34 + :type => @page.type, :article => { :translation_of_id => @page.native_translation.id }),
  35 + :class => @page.translatable? && !@page.native_translation.language.blank? && 'button with-text icon-locale' %>
  36 + <%= lightbox_remote_button(:new, label_for_new_article(@page), profile.admin_url.merge(:controller => 'cms', :action => 'new', :parent_id => (@page.folder? ? @page : (@page.parent.nil? ? nil : @page.parent)))) %>
  37 + <% end %>
  38 +
  39 + <% if @page.accept_uploads? && @page.allow_create?(user) %>
  40 + <%= button('upload-file', _('Upload files'), profile.admin_url.merge(:controller => 'cms', :action => 'upload_files', :parent_id => (@page.folder? ? @page : @page.parent))) %>
  41 + <% end %>
38 42
39 - <% elsif profile.community? && (@page.blog? || @page.parent && @page.parent.blog?) %> 43 + <% if !@page.allow_create?(user) && profile.community? && (@page.blog? || @page.parent && @page.parent.blog?) %>
40 <%= link_to content_tag( 'span', _('Suggest an article') ), profile.admin_url.merge({ :controller => 'cms', :action => 'suggest_an_article'}), :id => 'suggest-article-link', :class => 'button with-text icon-new' %> 44 <%= link_to content_tag( 'span', _('Suggest an article') ), profile.admin_url.merge({ :controller => 'cms', :action => 'suggest_an_article'}), :id => 'suggest-article-link', :class => 'button with-text icon-new' %>
41 <% end %> 45 <% end %>
42 46