Commit fcd6492a16aa5c39aa8834f9cfbd812844bcb757

Authored by Leandro Santos
Committed by Joenio Costa
1 parent 830bbafe

Adding the possibility to manage the user terms of use by a graphic interface

(ActionItem1502)
app/models/environment.rb
... ... @@ -209,7 +209,7 @@ class Environment < ActiveRecord::Base
209 209  
210 210 # sets the environment's terms of use.
211 211 def terms_of_use=(value)
212   - self.settings['terms_of_use'] = value
  212 + self.settings['terms_of_use'] = value.blank? ? nil : value
213 213 end
214 214  
215 215 # returns <tt>true</tt> if this Environment has terms of use to be
... ...
app/views/admin_panel/index.rhtml
... ... @@ -13,4 +13,5 @@
13 13 <tr><td><%= link_to _('Edit Templates'), :action => 'edit_templates' %></td></tr>
14 14 <tr><td><%= link_to _('Manage Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr>
15 15 <tr><td><%= link_to _('Set Portal'), :action => 'set_portal_community' %></td></tr>
  16 + <tr><td><%= link_to _('Terms of use'), :action => 'terms_of_use' %></td></tr>
16 17 </table>
... ...
app/views/admin_panel/terms_of_use.rhtml 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +<h2><%= _('Terms of use') %></h2>
  2 +
  3 +<%= render :file => 'shared/tiny_mce' %>
  4 +
  5 +<% labelled_form_for :environment, @environment, :url => {:action => 'site_info'} do |f| %>
  6 +
  7 + <%= f.text_area :terms_of_use, :cols => 40, :style => 'width: 90%' %>
  8 +
  9 + <% button_bar do %>
  10 + <%= submit_button(:save, _('Save')) %>
  11 + <%= button(:cancel, _('Cancel'), :action => 'index') %>
  12 + <% end %>
  13 +
  14 +<% end %>
... ...
test/functional/admin_panel_controller_test.rb
... ... @@ -66,7 +66,12 @@ class AdminPanelControllerTest &lt; Test::Unit::TestCase
66 66 get :index
67 67 assert_tag :tag => 'a', :attributes => { :href => '/admin/admin_panel/message_for_disabled_enterprise' }
68 68 end
69   -
  69 +
  70 + should 'link to define terms of use' do
  71 + get :index
  72 + assert_tag :tag => 'a', :attributes => { :href => '/admin/admin_panel/terms_of_use' }
  73 + end
  74 +
70 75 should 'display form for editing site info' do
71 76 get :site_info
72 77 assert_template 'site_info'
... ... @@ -79,6 +84,12 @@ class AdminPanelControllerTest &lt; Test::Unit::TestCase
79 84 assert_tag :tag => 'textarea', :attributes => { :name => 'environment[message_for_disabled_enterprise]'}
80 85 end
81 86  
  87 + should 'display form for editing terms of use' do
  88 + get :terms_of_use
  89 + assert_template 'terms_of_use'
  90 + assert_tag :tag => 'textarea', :attributes => { :name => 'environment[terms_of_use]'}
  91 + end
  92 +
82 93 should 'save site description' do
83 94 post :site_info, :environment => { :description => "This is my new environment" }
84 95 assert_redirected_to :action => 'index'
... ... @@ -93,6 +104,23 @@ class AdminPanelControllerTest &lt; Test::Unit::TestCase
93 104 assert_equal "This enterprise is disabled", Environment.default.message_for_disabled_enterprise
94 105 end
95 106  
  107 + should 'save content of terms of use' do
  108 + content = "This is my term of use"
  109 + post :site_info, :environment => { :terms_of_use => content }
  110 + assert_redirected_to :action => 'index'
  111 +
  112 + assert_equal content, Environment.default.terms_of_use
  113 + assert Environment.default.has_terms_of_use?
  114 + end
  115 +
  116 + should 'not save empty string as terms of use' do
  117 + content = ""
  118 + post :site_info, :environment => { :terms_of_use => content }
  119 + assert_redirected_to :action => 'index'
  120 +
  121 + assert !Environment.default.has_terms_of_use?
  122 + end
  123 +
96 124 should 'sanitize message for disabled enterprise with white_list' do
97 125 post :site_info, :environment => { :message_for_disabled_enterprise => "This <strong>is</strong> <script>alert('alow')</script>my new environment" }
98 126 assert_redirected_to :action => 'index'
... ...
test/unit/environment_test.rb
... ... @@ -71,6 +71,16 @@ class EnvironmentTest &lt; Test::Unit::TestCase
71 71 assert_equal 'To be part of this environment, you must accept the following terms: ...', Environment.find(id).terms_of_use
72 72 end
73 73  
  74 + should "terms of use not be an empty string" do
  75 + v = Environment.new(:name => 'My test environment')
  76 + assert_nil v.terms_of_use
  77 + v.terms_of_use = ""
  78 + assert v.save
  79 + assert !v.has_terms_of_use?
  80 + id = v.id
  81 + assert_nil Environment.find(v.id).terms_of_use
  82 + end
  83 +
74 84 def test_has_terms_of_use
75 85 v = Environment.new
76 86 assert !v.has_terms_of_use?
... ... @@ -902,4 +912,17 @@ class EnvironmentTest &lt; Test::Unit::TestCase
902 912 assert_match /<!-- .* --> <h1> Wellformed html code <\/h1>/, environment.message_for_disabled_enterprise
903 913 end
904 914  
  915 + should "not crash when set nil as terms of use" do
  916 + v = Environment.new(:name => 'My test environment')
  917 + v.terms_of_use = nil
  918 + assert v.save!
  919 + end
  920 +
  921 + should "terms of use not be an blank string" do
  922 + v = Environment.new(:name => 'My test environment')
  923 + v.terms_of_use = " "
  924 + assert v.save!
  925 + assert !v.has_terms_of_use?
  926 + end
  927 +
905 928 end
... ...