Commit a18ff65ca5322200d40bd54fe9b95b99cd8a116b

Authored by Joenio Costa
1 parent fa516d36

ActionItem806: add button to config blog in control panel

app/controllers/my_profile/cms_controller.rb
... ... @@ -61,6 +61,9 @@ class CmsController < MyProfileController
61 61 @article = profile.articles.find(params[:id])
62 62 @parent_id = params[:parent_id]
63 63 @type = params[:type]
  64 + if !@article.nil? && @article.blog? || !@type.nil? && @type == 'Blog'
  65 + @back_url = url_for(:controller => 'profile_editor', :profile => profile.identifier)
  66 + end
64 67 record_coming_from_public_view
65 68 if request.post?
66 69 @article.last_changed_by = user
... ... @@ -89,6 +92,10 @@ class CmsController < MyProfileController
89 92 @parent_id = params[:parent_id]
90 93 render :action => 'select_article_type', :layout => false
91 94 return
  95 + else
  96 + if @type == 'Blog'
  97 + @back_url = url_for(:controller => 'profile_editor', :profile => profile.identifier)
  98 + end
92 99 end
93 100  
94 101 raise "Invalid article type #{@type}" unless valid_article_type?(@type)
... ... @@ -175,7 +182,9 @@ class CmsController < MyProfileController
175 182 protected
176 183  
177 184 def redirect_back
178   - if params[:back_to] == 'public_view'
  185 + if params[:back_to] == 'control_panel'
  186 + redirect_to :controller => 'profile_editor', :profile => @profile.identifier
  187 + elsif params[:back_to] == 'public_view'
179 188 redirect_to @article.url
180 189 elsif @article.parent
181 190 redirect_to :action => 'view', :id => @article.parent
... ...
app/views/cms/_blog.rhtml
... ... @@ -15,3 +15,5 @@
15 15 <%= labelled_form_field(_('Use as description in RSS Feed:'), feed.select(:feed_item_description, [ [ _('Article abstract'), 'abstract'], [ _('Article body'), 'body']])) %>
16 16  
17 17 <% end %>
  18 +
  19 +<%= javascript_tag "$('back_to').value = 'control_panel'" %>
... ...
app/views/content_viewer/view_page.rhtml
... ... @@ -30,11 +30,13 @@
30 30 if ( act ) act.className = ( show ? "show" : "hidden" );
31 31 }
32 32 </script>
33   - <% if logged_in? && current_user.person.has_permission?('post_content', profile) %>
  33 + <% if logged_in? && current_user.person.has_permission?('post_content', profile) %>
34 34 <div id="article-actions" class="hidden">
  35 + <% unless @page.blog? %>
35 36 <%= link_to content_tag( 'span', label_for_edit_article(@page) ),
36 37 { :controller => 'cms', :action => 'edit', :id => @page },
37 38 :class => 'button with-text icon-edit' %>
  39 + <% end %>
38 40 <% if !(profile.kind_of?(Enterprise) && environment.enabled?('disable_cms')) %>
39 41 <% if @page != profile.home_page %>
40 42 <%= link_to content_tag( 'span', _('Delete') ),
... ...
app/views/profile_editor/index.rhtml
... ... @@ -25,6 +25,12 @@
25 25  
26 26 <%= file_manager_button(_('Manage Content'), 'icons-app/cms.png', :controller => 'cms') unless environment.enabled?('disable_cms') || profile.community? %>
27 27  
  28 + <% if profile.has_blog? %>
  29 + <%= file_manager_button(_('Config my blog'), 'icons-app/blog.png', :controller => 'cms', :action => 'edit', :id => profile.blog) %>
  30 + <% else %>
  31 + <%= file_manager_button(_('Create my blog'), 'icons-app/blog-disabled.png', :controller => 'cms', :action => 'new', :type => 'Blog') %>
  32 + <% end %>
  33 +
28 34 <%= file_manager_button(_('Change Password'), 'icons-app/change-password.png', :controller => 'account', :action => 'change_password') if profile.person? %>
29 35  
30 36 <%= file_manager_button(__('Manage friends'), 'icons-app/friends.png', :controller => 'friends', :action => 'index') if profile.person? %>
... ...
public/images/icons-app/README
... ... @@ -45,6 +45,7 @@ gtk-cancel.png dlg-neu
45 45 emblem-important.png dlg-neu
46 46 gnome-globe.png gnome
47 47 header-and-footer.svg Noosfero team
  48 +livejournal.png dlg-neu
48 49 ### END OF ICONS LISTING ###
49 50  
50 51 Icons rasterization
... ...
public/images/icons-app/blog-disabled.png 0 → 100644

1.85 KB

public/images/icons-app/blog.png 0 → 120000
... ... @@ -0,0 +1 @@
  1 +livejournal.png
0 2 \ No newline at end of file
... ...
public/images/icons-app/livejournal.png 0 → 100644

3.09 KB

test/functional/cms_controller_test.rb
... ... @@ -758,4 +758,28 @@ class CmsControllerTest &lt; Test::Unit::TestCase
758 758 assert :tag => 'input', :attributes => {:name => 'article[notify_comments]', :value => 1}
759 759 end
760 760  
  761 + should 'back to control panel after create blog' do
  762 + assert_difference Blog, :count do
  763 + post :new, :type => Blog.name, :profile => profile.identifier, :article => { :name => 'my-blog' }, :back_to => 'control_panel'
  764 + assert_redirected_to :controller => 'profile_editor', :profile => profile.identifier
  765 + end
  766 + end
  767 +
  768 + should 'back to control panel after config blog' do
  769 + profile.articles << Blog.new(:name => 'my-blog', :profile => profile)
  770 + post :edit, :profile => profile.identifier, :id => profile.blog.id, :back_to => 'control_panel'
  771 + assert_redirected_to :controller => 'profile_editor', :profile => profile.identifier
  772 + end
  773 +
  774 + should 'back to control panel if cancel create blog' do
  775 + get :new, :profile => profile.identifier, :type => Blog.name
  776 + assert_tag :tag => 'a', :content => 'Cancel', :attributes => { :href => /\/myprofile\/#{profile.identifier}/ }
  777 + end
  778 +
  779 + should 'back to control panel if cancel config blog' do
  780 + profile.articles << Blog.new(:name => 'my-blog', :profile => profile)
  781 + get :edit, :profile => profile.identifier, :id => profile.blog.id
  782 + assert_tag :tag => 'a', :content => 'Cancel', :attributes => { :href => /\/myprofile\/#{profile.identifier}/ }
  783 + end
  784 +
761 785 end
... ...
test/functional/profile_editor_controller_test.rb
... ... @@ -622,4 +622,15 @@ class ProfileEditorControllerTest &lt; Test::Unit::TestCase
622 622 assert_no_tag :tag => 'a', :attributes => { :href => '/myprofile/default_user/cms' }
623 623 end
624 624  
  625 + should 'offer to create blog in control panel' do
  626 + get :index, :profile => 'default_user'
  627 + assert_tag :tag => 'a', :attributes => { :href => "/myprofile/default_user/cms/new?type=Blog" }
  628 + end
  629 +
  630 + should 'offer to config blog in control panel' do
  631 + profile.articles << Blog.new(:name => 'My blog', :profile => profile)
  632 + get :index, :profile => 'default_user'
  633 + assert_tag :tag => 'a', :attributes => { :href => "/myprofile/default_user/cms/edit/#{profile.blog.id}" }
  634 + end
  635 +
625 636 end
... ...