Commit 63f6c6c0dc402e5dda0f804eb74e13ef2395765e
1 parent
99e46a3b
Exists in
master
and in
29 other branches
ActionItem856: active/inactive templates
* adding setting on template to define if entreprise template should be changed when enabled * adding changing of template when an enterprise is enabled if environment allows * fixing bug on footer when applying template * removing disabled enterprise message if the enterprise has the block for it
Showing
12 changed files
with
113 additions
and
15 deletions
Show diff stats
app/models/disabled_enterprise_message_block.rb
app/models/enterprise.rb
| @@ -37,6 +37,9 @@ class Enterprise < Organization | @@ -37,6 +37,9 @@ class Enterprise < Organization | ||
| 37 | return if enabled | 37 | return if enabled |
| 38 | affiliate(owner, Profile::Roles.all_roles) | 38 | affiliate(owner, Profile::Roles.all_roles) |
| 39 | update_attribute(:enabled,true) | 39 | update_attribute(:enabled,true) |
| 40 | + if environment.replace_enterprise_template_when_enable | ||
| 41 | + apply_template(template) | ||
| 42 | + end | ||
| 40 | save | 43 | save |
| 41 | end | 44 | end |
| 42 | 45 |
app/models/environment.rb
| @@ -386,6 +386,14 @@ class Environment < ActiveRecord::Base | @@ -386,6 +386,14 @@ class Environment < ActiveRecord::Base | ||
| 386 | end | 386 | end |
| 387 | end | 387 | end |
| 388 | 388 | ||
| 389 | + def replace_enterprise_template_when_enable | ||
| 390 | + settings[:replace_enterprise_template_when_enable] || false | ||
| 391 | + end | ||
| 392 | + | ||
| 393 | + def replace_enterprise_template_when_enable=(value) | ||
| 394 | + settings[:replace_enterprise_template_when_enable] = value | ||
| 395 | + end | ||
| 396 | + | ||
| 389 | after_create :create_templates | 397 | after_create :create_templates |
| 390 | 398 | ||
| 391 | def create_templates | 399 | def create_templates |
app/models/profile.rb
| @@ -471,11 +471,11 @@ class Profile < ActiveRecord::Base | @@ -471,11 +471,11 @@ class Profile < ActiveRecord::Base | ||
| 471 | if footer | 471 | if footer |
| 472 | %w[contact_person contact_email contact_phone location address economic_activity].each do |att| | 472 | %w[contact_person contact_email contact_phone location address economic_activity].each do |att| |
| 473 | if self.respond_to?(att) && footer.include?("{#{att}}") | 473 | if self.respond_to?(att) && footer.include?("{#{att}}") |
| 474 | - footer.gsub!("{#{att}}", self.send(att).to_s) | 474 | + footer = footer.gsub("{#{att}}", self.send(att).to_s) |
| 475 | end | 475 | end |
| 476 | end | 476 | end |
| 477 | + footer | ||
| 477 | end | 478 | end |
| 478 | - footer | ||
| 479 | end | 479 | end |
| 480 | 480 | ||
| 481 | def theme | 481 | def theme |
app/views/admin_panel/manage_templates.rhtml
| 1 | <h1><%= _('Set Templates') %></h1> | 1 | <h1><%= _('Set Templates') %></h1> |
| 2 | 2 | ||
| 3 | <% labelled_form_for(:environment, @environment, :url => {:action => 'set_template'}) do |f| %> | 3 | <% labelled_form_for(:environment, @environment, :url => {:action => 'set_template'}) do |f| %> |
| 4 | -<%= current_user.name %> | ||
| 5 | <p> | 4 | <p> |
| 6 | <label for='environment_person_template'><%= _('Person Template') %></label><br/> | 5 | <label for='environment_person_template'><%= _('Person Template') %></label><br/> |
| 7 | <%= f.select :person_template, @person_templates.map {|item| [ item.identifier, item.id]}, :selected => (environment.person_template.nil? ? nil : environment.person_template.id) %> | 6 | <%= f.select :person_template, @person_templates.map {|item| [ item.identifier, item.id]}, :selected => (environment.person_template.nil? ? nil : environment.person_template.id) %> |
| @@ -17,11 +16,6 @@ | @@ -17,11 +16,6 @@ | ||
| 17 | <%= f.select :enterprise_template, @enterprise_templates.map {|item| [ item.identifier, item.id]}, :selected => (environment.enterprise_template.nil? ? nil : environment.enterprise_template.id) %> | 16 | <%= f.select :enterprise_template, @enterprise_templates.map {|item| [ item.identifier, item.id]}, :selected => (environment.enterprise_template.nil? ? nil : environment.enterprise_template.id) %> |
| 18 | </p> | 17 | </p> |
| 19 | 18 | ||
| 20 | - <p> | ||
| 21 | - <label for='environment_inactive_enterprise_template'><%= _('Inactive Enterprise Template') %></label><br/> | ||
| 22 | - <%= f.select :inactive_enterprise_template, @enterprise_templates.map {|item| [ item.identifier, item.id]}, :selected => (environment.inactive_enterprise_template.nil? ? nil : environment.inactive_enterprise_template.id) %> | ||
| 23 | - </p> | ||
| 24 | - | ||
| 25 | <% button_bar do %> | 19 | <% button_bar do %> |
| 26 | <%= submit_button(:save, _('Save')) %> | 20 | <%= submit_button(:save, _('Save')) %> |
| 27 | <%= button(:cancel, _('Cancel'), :action => 'index') %> | 21 | <%= button(:cancel, _('Cancel'), :action => 'index') %> |
app/views/content_viewer/view_page.rhtml
| @@ -58,7 +58,7 @@ | @@ -58,7 +58,7 @@ | ||
| 58 | </div> | 58 | </div> |
| 59 | <% end %> | 59 | <% end %> |
| 60 | 60 | ||
| 61 | -<% if profile.enterprise? and !profile.enabled? %> | 61 | +<% if profile.enterprise? and !profile.enabled? and !profile.blocks.select {|b| b.class == DisabledEnterpriseMessageBlock}.any? %> |
| 62 | <div id='profile-disabled'> | 62 | <div id='profile-disabled'> |
| 63 | <%= environment.message_for_disabled_enterprise %> | 63 | <%= environment.message_for_disabled_enterprise %> |
| 64 | </div> | 64 | </div> |
app/views/profile/index.rhtml
| 1 | -<% if profile.enterprise? and !profile.enabled? %> | 1 | +<% if profile.enterprise? and !profile.enabled? and !profile.blocks.select {|b| b.class == DisabledEnterpriseMessageBlock}.any? %> |
| 2 | <div id='profile-disabled'> | 2 | <div id='profile-disabled'> |
| 3 | <%= environment.message_for_disabled_enterprise %> | 3 | <%= environment.message_for_disabled_enterprise %> |
| 4 | </div> | 4 | </div> |
test/functional/content_viewer_controller_test.rb
| @@ -325,6 +325,16 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -325,6 +325,16 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
| 325 | assert_no_tag :tag => 'div', :attributes => { :id => 'profile-disabled' }, :content => Environment.default.message_for_disabled_enterprise | 325 | assert_no_tag :tag => 'div', :attributes => { :id => 'profile-disabled' }, :content => Environment.default.message_for_disabled_enterprise |
| 326 | end | 326 | end |
| 327 | 327 | ||
| 328 | + should 'not show message for disabled enterprise if there is a block for it' do | ||
| 329 | + login_as(@profile.identifier) | ||
| 330 | + ent = Enterprise.create!(:name => 'my test enterprise', :identifier => 'my-test-enterprise', :enabled => false) | ||
| 331 | + ent.boxes << Box.new | ||
| 332 | + ent.boxes[0].blocks << DisabledEnterpriseMessageBlock.new | ||
| 333 | + ent.save | ||
| 334 | + get :view_page, :profile => ent.identifier, :page => [] | ||
| 335 | + assert_no_tag :tag => 'div', :attributes => {:id => 'article'}, :descendant => { :tag => 'div', :attributes => { :id => 'profile-disabled' }} | ||
| 336 | + end | ||
| 337 | + | ||
| 328 | should 'load the correct profile when using hosted domain' do | 338 | should 'load the correct profile when using hosted domain' do |
| 329 | profile = create_user('mytestuser').person | 339 | profile = create_user('mytestuser').person |
| 330 | profile.domains << Domain.create!(:name => 'micojones.net') | 340 | profile.domains << Domain.create!(:name => 'micojones.net') |
test/functional/profile_controller_test.rb
| @@ -243,6 +243,16 @@ class ProfileControllerTest < Test::Unit::TestCase | @@ -243,6 +243,16 @@ class ProfileControllerTest < Test::Unit::TestCase | ||
| 243 | assert_no_tag :tag => 'div', :attributes => { :id => 'profile-disabled' }, :content => Environment.default.message_for_disabled_enterprise | 243 | assert_no_tag :tag => 'div', :attributes => { :id => 'profile-disabled' }, :content => Environment.default.message_for_disabled_enterprise |
| 244 | end | 244 | end |
| 245 | 245 | ||
| 246 | + should 'not show message for disabled enterprise if there is a block for it' do | ||
| 247 | + login_as(@profile.identifier) | ||
| 248 | + ent = Enterprise.create!(:name => 'my test enterprise', :identifier => 'my-test-enterprise', :enabled => false) | ||
| 249 | + ent.boxes << Box.new | ||
| 250 | + ent.boxes[0].blocks << DisabledEnterpriseMessageBlock.new | ||
| 251 | + ent.save | ||
| 252 | + get :index, :profile => ent.identifier | ||
| 253 | + assert_no_tag :tag => 'div', :attributes => {:class => 'blocks'}, :descendant => { :tag => 'div', :attributes => { :id => 'profile-disabled' }} | ||
| 254 | + end | ||
| 255 | + | ||
| 246 | should 'display "Products" link for enterprise' do | 256 | should 'display "Products" link for enterprise' do |
| 247 | ent = Enterprise.create!(:name => 'my test enterprise', :identifier => 'my-test-enterprise', :enabled => false) | 257 | ent = Enterprise.create!(:name => 'my test enterprise', :identifier => 'my-test-enterprise', :enabled => false) |
| 248 | 258 |
test/unit/enterprise_test.rb
| @@ -155,7 +155,47 @@ class EnterpriseTest < Test::Unit::TestCase | @@ -155,7 +155,47 @@ class EnterpriseTest < Test::Unit::TestCase | ||
| 155 | assert_includes ent.members, p | 155 | assert_includes ent.members, p |
| 156 | end | 156 | end |
| 157 | 157 | ||
| 158 | - should 'create EnterpriseActivation task when creating with enabled = false' do | 158 | + should 'replace template if environment allows' do |
| 159 | + template = Enterprise.create!(:name => 'template enteprise', :identifier => 'template_enterprise', :enabled => false) | ||
| 160 | + template.boxes.destroy_all | ||
| 161 | + template.boxes << Box.new | ||
| 162 | + template.boxes[0].blocks << Block.new | ||
| 163 | + template.save! | ||
| 164 | + | ||
| 165 | + e = Environment.default | ||
| 166 | + e.replace_enterprise_template_when_enable = true | ||
| 167 | + e.enterprise_template = template | ||
| 168 | + e.save! | ||
| 169 | + | ||
| 170 | + ent = Enterprise.create!(:name => 'test enteprise', :identifier => 'test_ent', :enabled => false) | ||
| 171 | + | ||
| 172 | + p = create_user('test_user').person | ||
| 173 | + ent.enable(p) | ||
| 174 | + ent.reload | ||
| 175 | + assert_equal 1, ent.boxes.size | ||
| 176 | + assert_equal 1, ent.boxes[0].blocks.size | ||
| 177 | + end | ||
| 178 | + | ||
| 179 | + should 'not replace template if environment doesnt allow' do | ||
| 180 | + template = Enterprise.create!(:name => 'template enteprise', :identifier => 'template_enterprise', :enabled => false) | ||
| 181 | + template.boxes.destroy_all | ||
| 182 | + template.boxes << Box.new | ||
| 183 | + template.boxes[0].blocks << Block.new | ||
| 184 | + template.save! | ||
| 185 | + | ||
| 186 | + e = Environment.default | ||
| 187 | + e.enterprise_template = template | ||
| 188 | + e.save! | ||
| 189 | + | ||
| 190 | + ent = Enterprise.create!(:name => 'test enteprise', :identifier => 'test_ent', :enabled => false) | ||
| 191 | + | ||
| 192 | + p = create_user('test_user').person | ||
| 193 | + ent.enable(p) | ||
| 194 | + ent.reload | ||
| 195 | + assert_equal 1, ent.boxes.size | ||
| 196 | + assert_equal 1, ent.boxes[0].blocks.size | ||
| 197 | + end | ||
| 198 | + should 'create EnterpriseActivation task when creating with enabled = false' do | ||
| 159 | EnterpriseActivation.delete_all | 199 | EnterpriseActivation.delete_all |
| 160 | ent = Enterprise.create!(:name => 'test enteprise', :identifier => 'test_ent', :enabled => false) | 200 | ent = Enterprise.create!(:name => 'test enteprise', :identifier => 'test_ent', :enabled => false) |
| 161 | assert_equal [ent], EnterpriseActivation.find(:all).map(&:enterprise) | 201 | assert_equal [ent], EnterpriseActivation.find(:all).map(&:enterprise) |
test/unit/environment_test.rb
| @@ -521,4 +521,15 @@ class EnvironmentTest < Test::Unit::TestCase | @@ -521,4 +521,15 @@ class EnvironmentTest < Test::Unit::TestCase | ||
| 521 | assert_equal 20, env.enterprises.find_by_contents('test').total_entries | 521 | assert_equal 20, env.enterprises.find_by_contents('test').total_entries |
| 522 | end | 522 | end |
| 523 | 523 | ||
| 524 | + should 'set replace_enterprise_template_when_enable on environment' do | ||
| 525 | + e = Environment.new(:name => 'Enterprise test') | ||
| 526 | + e.replace_enterprise_template_when_enable = true | ||
| 527 | + e.save | ||
| 528 | + assert_equal true, e.replace_enterprise_template_when_enable | ||
| 529 | + end | ||
| 530 | + | ||
| 531 | + should 'not replace enterprise template when enable by default' do | ||
| 532 | + assert_equal false, Environment.new.replace_enterprise_template_when_enable | ||
| 533 | + end | ||
| 534 | + | ||
| 524 | end | 535 | end |
test/unit/profile_test.rb
| @@ -918,9 +918,6 @@ class ProfileTest < Test::Unit::TestCase | @@ -918,9 +918,6 @@ class ProfileTest < Test::Unit::TestCase | ||
| 918 | 918 | ||
| 919 | should 'copy articles when applying template' do | 919 | should 'copy articles when applying template' do |
| 920 | template = Profile.create!(:name => 'test template', :identifier => 'test_template') | 920 | template = Profile.create!(:name => 'test template', :identifier => 'test_template') |
| 921 | - template.boxes.destroy_all | ||
| 922 | - template.boxes << Box.new | ||
| 923 | - template.boxes[0].blocks << Block.new | ||
| 924 | template.articles.create(:name => 'template article') | 921 | template.articles.create(:name => 'template article') |
| 925 | template.save! | 922 | template.save! |
| 926 | 923 | ||
| @@ -948,6 +945,31 @@ class ProfileTest < Test::Unit::TestCase | @@ -948,6 +945,31 @@ class ProfileTest < Test::Unit::TestCase | ||
| 948 | assert_not_nil p.articles.find_by_name('some article') | 945 | assert_not_nil p.articles.find_by_name('some article') |
| 949 | end | 946 | end |
| 950 | 947 | ||
| 948 | + should 'copy header when applying template' do | ||
| 949 | + template = Profile.create!(:name => 'test template', :identifier => 'test_template') | ||
| 950 | + template[:custom_header] = '{name}' | ||
| 951 | + template.save! | ||
| 952 | + | ||
| 953 | + p = Profile.create!(:name => 'test prof', :identifier => 'test_prof') | ||
| 954 | + | ||
| 955 | + p.apply_template(template) | ||
| 956 | + | ||
| 957 | + assert_equal '{name}', p[:custom_header] | ||
| 958 | + assert_equal 'test prof', p.custom_header | ||
| 959 | + end | ||
| 960 | + | ||
| 961 | + should 'copy footer when applying template' do | ||
| 962 | + template = Profile.create!(:name => 'test template', :identifier => 'test_template', :address => 'Template address') | ||
| 963 | + template[:custom_footer] = '{address}' | ||
| 964 | + template.save! | ||
| 965 | + | ||
| 966 | + p = Profile.create!(:name => 'test prof', :identifier => 'test_prof', :address => 'Profile address') | ||
| 967 | + p.apply_template(template) | ||
| 968 | + | ||
| 969 | + assert_equal '{address}', p[:custom_footer] | ||
| 970 | + assert_equal 'Profile address', p.custom_footer | ||
| 971 | + end | ||
| 972 | + | ||
| 951 | TMP_THEMES_DIR = RAILS_ROOT + '/test/tmp/profile_themes' | 973 | TMP_THEMES_DIR = RAILS_ROOT + '/test/tmp/profile_themes' |
| 952 | should 'have themes' do | 974 | should 'have themes' do |
| 953 | Theme.stubs(:user_themes_dir).returns(TMP_THEMES_DIR) | 975 | Theme.stubs(:user_themes_dir).returns(TMP_THEMES_DIR) |