Commit 941acfdc4cc256a19aadfaa63e36d6dfa90c2639
Committed by
Antonio Terceiro
1 parent
5aee489a
Exists in
master
and in
29 other branches
ActionItem1221: allowing publisher to add new content
Showing
3 changed files
with
24 additions
and
5 deletions
Show diff stats
app/models/article.rb
| @@ -217,7 +217,11 @@ class Article < ActiveRecord::Base | @@ -217,7 +217,11 @@ class Article < ActiveRecord::Base | ||
| 217 | end | 217 | end |
| 218 | 218 | ||
| 219 | def allow_post_content?(user = nil) | 219 | def allow_post_content?(user = nil) |
| 220 | - user && (user.has_permission?('post_content', profile) || user.has_permission?('publish_content', profile) && (user == self.creator)) | 220 | + user && (user.has_permission?('post_content', profile) || allow_publish_content?(user) && (user == self.creator)) |
| 221 | + end | ||
| 222 | + | ||
| 223 | + def allow_publish_content?(user = nil) | ||
| 224 | + user && user.has_permission?('publish_content', profile) | ||
| 221 | end | 225 | end |
| 222 | 226 | ||
| 223 | def comments_updated | 227 | def comments_updated |
app/views/content_viewer/view_page.rhtml
| @@ -23,8 +23,8 @@ | @@ -23,8 +23,8 @@ | ||
| 23 | 23 | ||
| 24 | <div> | 24 | <div> |
| 25 | <%= article_title(@page, :no_link => true) %> | 25 | <%= article_title(@page, :no_link => true) %> |
| 26 | - <% if @page.allow_post_content?(user) %> | ||
| 27 | - <div id="article-actions"> | 26 | + <div id="article-actions"> |
| 27 | + <% if @page.allow_post_content?(user) %> | ||
| 28 | <% unless @page.blog? %> | 28 | <% unless @page.blog? %> |
| 29 | <%= link_to content_tag( 'span', label_for_edit_article(@page) ), | 29 | <%= link_to content_tag( 'span', label_for_edit_article(@page) ), |
| 30 | profile.admin_url.merge({ :controller => 'cms', :action => 'edit', :id => @page.id }), | 30 | profile.admin_url.merge({ :controller => 'cms', :action => 'edit', :id => @page.id }), |
| @@ -41,6 +41,10 @@ | @@ -41,6 +41,10 @@ | ||
| 41 | profile.admin_url.merge({ :controller => 'cms', :action => 'publish', :id => @page }), | 41 | profile.admin_url.merge({ :controller => 'cms', :action => 'publish', :id => @page }), |
| 42 | :class => 'button with-text icon-spread' %> | 42 | :class => 'button with-text icon-spread' %> |
| 43 | <% end %> | 43 | <% end %> |
| 44 | + <% end %> | ||
| 45 | + <% end %> | ||
| 46 | + <% if @page.allow_post_content?(user) || @page.allow_publish_content?(user) %> | ||
| 47 | + <% if !(profile.kind_of?(Enterprise) && environment.enabled?('disable_cms')) %> | ||
| 44 | <% if !@page.display_as_gallery? %> | 48 | <% if !@page.display_as_gallery? %> |
| 45 | <%= lightbox_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)))) %> | 49 | <%= lightbox_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)))) %> |
| 46 | <% end %> | 50 | <% end %> |
| @@ -51,8 +55,8 @@ | @@ -51,8 +55,8 @@ | ||
| 51 | <% if profile.kind_of?(Enterprise) && @page.display_as_gallery? %> | 55 | <% if profile.kind_of?(Enterprise) && @page.display_as_gallery? %> |
| 52 | <%= button('upload-file', _('Upload files'), :controller => 'cms', :action => 'upload_files', :parent_id => (@page.folder? ? @page : @page.parent)) %> | 56 | <%= button('upload-file', _('Upload files'), :controller => 'cms', :action => 'upload_files', :parent_id => (@page.folder? ? @page : @page.parent)) %> |
| 53 | <% end %> | 57 | <% end %> |
| 54 | - </div> | ||
| 55 | - <% end %> | 58 | + <% end %> |
| 59 | + </div> | ||
| 56 | </div> | 60 | </div> |
| 57 | 61 | ||
| 58 | <% if !@page.tags.empty? %> | 62 | <% if !@page.tags.empty? %> |
test/functional/content_viewer_controller_test.rb
| @@ -862,4 +862,15 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -862,4 +862,15 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
| 862 | assert_template 'view_page' | 862 | assert_template 'view_page' |
| 863 | end | 863 | end |
| 864 | 864 | ||
| 865 | + should 'display link to new_article if profile is publisher' do | ||
| 866 | + c = Community.create!(:name => 'test_com') | ||
| 867 | + u = create_user_with_permission('test_user', 'publish_content', c) | ||
| 868 | + login_as u.identifier | ||
| 869 | + a = c.articles.create!(:name => 'test-article', :last_changed_by => profile, :published => true) | ||
| 870 | + | ||
| 871 | + get :view_page, :profile => c.identifier, :page => a.explode_path | ||
| 872 | + | ||
| 873 | + assert_tag :tag => 'a', :content => 'New article' | ||
| 874 | + end | ||
| 875 | + | ||
| 865 | end | 876 | end |