Commit b314b6eaae99b3d579d0b36d502cc0585314f62a

Authored by Leandro Santos
Committed by Antonio Terceiro
1 parent ff14fe17

Add environment portal community interface. closes ActionItem1488

app/controllers/admin/admin_panel_controller.rb
... ... @@ -16,6 +16,17 @@ class AdminPanelController < AdminController
16 16 end
17 17 end
18 18  
  19 + def manage_portal_community
  20 + params[:activate] == '1' ? environment.enable('use_portal_community') : environment.disable('use_portal_community')
  21 + environment.save
  22 + redirect_to :action => 'set_portal_community'
  23 + end
  24 +
  25 + def unset_portal_community
  26 + environment.unset_portal_community!
  27 + redirect_to :action => 'set_portal_community'
  28 + end
  29 +
19 30 def set_portal_community
20 31 env = environment
21 32 @portal_community = env.portal_community || Community.new
... ...
app/models/environment.rb
... ... @@ -616,7 +616,15 @@ class Environment < ActiveRecord::Base
616 616 end
617 617  
618 618 def portal_community=(value)
619   - settings[:portal_community_identifier] = value.identifier
  619 + settings[:portal_community_identifier] = value.nil? ? nil : value.identifier
  620 + end
  621 +
  622 + def unset_portal_community!
  623 + self.portal_community=nil
  624 + self.portal_folders=nil
  625 + self.news_amount_by_folder=nil
  626 + self.disable('use_portal_community')
  627 + self.save
620 628 end
621 629  
622 630 def is_portal_community?(profile)
... ...
app/views/admin_panel/set_portal_community.rhtml
1 1 <h1> <%= _('Set Environment Portal') %></h1>
2 2  
3   -<% form_tag do %>
4   - <%= labelled_form_field(_('Portal identifier'), text_field_tag('portal_community_identifier', @portal_community.identifier, :size => 40) ) %>
  3 +<% if @portal_community.new_record? %>
  4 + <% form_tag do %>
  5 + <%= labelled_form_field(_('Portal identifier'), text_field_tag('portal_community_identifier', @portal_community.identifier, :size => 40) ) %>
  6 +
  7 + <% button_bar do %>
  8 + <%= submit_button 'save', _('Save'), :cancel => { :action => 'index' } %>
  9 + <% end %>
  10 + <% end %>
  11 +<% else %>
  12 + <%= _('Portal identifier: %s') % link_to(@portal_community.identifier, @portal_community.url) %>
5 13  
6 14 <% button_bar do %>
7   - <%= submit_button 'save', _('Save'), :cancel => { :action => 'index' } %>
  15 + <%if @portal_community.environment.enabled?('use_portal_community') %>
  16 + <%= button 'disable', _('Disable'), {:action => 'manage_portal_community', :activate => 0} %>
  17 + <% else %>
  18 + <%= button 'enable', _('Enable'), {:action => 'manage_portal_community', :activate => 1} %>
  19 + <% end %>
  20 + <%= button 'folder', _('Select Portal Folders'), {:action => 'set_portal_folders'} %>
  21 + <%= button 'amount', _('Define Amount by Folder'), {:action => 'set_portal_news_amount'} %>
  22 + <%= button 'delete', _('Remove'), { :action => 'unset_portal_community'} %>
8 23 <% end %>
9 24 <% end %>
... ...
test/functional/admin_panel_controller_test.rb
... ... @@ -121,6 +121,59 @@ class AdminPanelControllerTest &lt; Test::Unit::TestCase
121 121 assert_equal c, e.portal_community
122 122 end
123 123  
  124 + should 'unset portal community' do
  125 + e = Environment.default
  126 + @controller.stubs(:environment).returns(e)
  127 + c = Community.create!(:name => 'portal_community')
  128 +
  129 + get :unset_portal_community
  130 + e.reload
  131 +
  132 + assert_nil e.portal_community
  133 + assert_equal false, e.enabled?('use_portal_community')
  134 + end
  135 +
  136 + should 'redirect to set_portal_community after unset portal community' do
  137 + e = Environment.default
  138 + @controller.stubs(:environment).returns(e)
  139 +
  140 + get :unset_portal_community
  141 + assert_redirected_to :action => 'set_portal_community'
  142 + end
  143 +
  144 + should 'enable portal community' do
  145 + e = Environment.default
  146 + @controller.stubs(:environment).returns(e)
  147 + c = Community.create!(:name => 'portal_community')
  148 + e.portal_community=c
  149 + e.save
  150 + assert_equal false, e.enabled?('use_portal_community')
  151 +
  152 + get :manage_portal_community, :activate => 1
  153 + e.reload
  154 + assert_equal true, e.enabled?('use_portal_community')
  155 + end
  156 +
  157 + should 'disable portal community' do
  158 + e = Environment.default
  159 + @controller.stubs(:environment).returns(e)
  160 + c = Community.create!(:name => 'portal_community')
  161 + e.portal_community=c
  162 + e.save
  163 + assert_equal false, e.enabled?('use_portal_community')
  164 +
  165 + get :manage_portal_community, :activate => 0
  166 + e.reload
  167 + assert_equal false, e.enabled?('use_portal_community')
  168 + end
  169 +
  170 + should 'redirect to set_portal_community after enable or disable portal community' do
  171 + e = Environment.default
  172 + @controller.stubs(:environment).returns(e)
  173 + get :manage_portal_community
  174 + assert_redirected_to :action => 'set_portal_community'
  175 + end
  176 +
124 177 should 'change portal_community and list new portal folders as options' do
125 178 env = Environment.default
126 179 old = Community.create!(:name => 'old_portal')
... ...
test/unit/environment_test.rb
... ... @@ -737,6 +737,21 @@ class EnvironmentTest &lt; Test::Unit::TestCase
737 737 assert_equal c, e.portal_community
738 738 end
739 739  
  740 + should 'unset the portal community' do
  741 + e = Environment.default
  742 + c = fast_create(Community)
  743 +
  744 + e.portal_community = c; e.save!
  745 + e.reload
  746 + assert_equal c, e.portal_community
  747 + e.unset_portal_community!
  748 + e.reload
  749 + assert_nil e.portal_community
  750 + assert_equal [], e.portal_folders
  751 + assert_equal 0, e.news_amount_by_folder
  752 + assert_equal false, e.enabled?('use_portal_community')
  753 + end
  754 +
740 755 should 'have a set of portal folders' do
741 756 e = Environment.default
742 757  
... ...