Commit 3599b17b353e25e0db6b75af8731a3d48e79a4de

Authored by Visita
1 parent c054d8c6

Restricting template alternatives to those inside the current environment

ActionItem2608
app/helpers/application_helper.rb
... ... @@ -1330,11 +1330,12 @@ module ApplicationHelper
1330 1330 end
1331 1331  
1332 1332 def template_options(klass, field_name)
1333   - return '' if klass.templates.count == 0
1334   - return hidden_field_tag("#{field_name}[template_id]", klass.templates.first.id) if klass.templates.count == 1
  1333 + templates = klass.templates(environment.id)
  1334 + return '' if templates.count == 0
  1335 + return hidden_field_tag("#{field_name}[template_id]", templates.first.id) if templates.count == 1
1335 1336  
1336 1337 counter = 0
1337   - radios = klass.templates.map do |template|
  1338 + radios = templates.map do |template|
1338 1339 counter += 1
1339 1340 content_tag('li', labelled_radio_button(link_to(template.name, template.url, :target => '_blank'), "#{field_name}[template_id]", template.id, counter==1))
1340 1341 end.join("\n")
... ...
app/models/profile.rb
... ... @@ -68,7 +68,7 @@ class Profile < ActiveRecord::Base
68 68 #FIXME: these will work only if the subclass is already loaded
69 69 named_scope :enterprises, lambda { {:conditions => (Enterprise.send(:subclasses).map(&:name) << 'Enterprise').map { |klass| "profiles.type = '#{klass}'"}.join(" OR ")} }
70 70 named_scope :communities, lambda { {:conditions => (Community.send(:subclasses).map(&:name) << 'Community').map { |klass| "profiles.type = '#{klass}'"}.join(" OR ")} }
71   - named_scope :templates, :conditions => {:is_template => true}
  71 + named_scope :templates, lambda { |environment_id| { :conditions => {:is_template => true, :environment_id => environment_id} } }
72 72  
73 73 def members
74 74 scopes = plugins.dispatch_scopes(:organization_members, self)
... ...
app/views/templates/index.html.erb
... ... @@ -2,9 +2,9 @@
2 2  
3 3 <%= _('Manage the templates used on creation of profiles') %>
4 4  
5   -<% list_of_templates = [[_('Person') , Person.templates , 'person' ],
6   - [_('Community') , Community.templates , 'community' ],
7   - [_('Enterprise'), Enterprise.templates, 'enterprise']] %>
  5 +<% list_of_templates = [[_('Person') , Person.templates(environment.id) , 'person' ],
  6 + [_('Community') , Community.templates(environment.id) , 'community' ],
  7 + [_('Enterprise'), Enterprise.templates(environment.id), 'enterprise']] %>
8 8  
9 9 <% list_of_templates.each do |title, templates, kind|%>
10 10 <div class='template-kind'>
... ...
test/functional/account_controller_test.rb
... ... @@ -579,6 +579,21 @@ class AccountControllerTest &lt; ActionController::TestCase
579 579 assert_equal 1, assigns(:user).person.boxes[0].blocks.size
580 580 end
581 581  
  582 + should 'display only templates of the current environment' do
  583 + env2 = fast_create(Environment)
  584 +
  585 + template1 = fast_create(Person, :name => 'template1', :environment_id => Environment.default.id, :is_template => true)
  586 + template2 = fast_create(Person, :name => 'template2', :environment_id => Environment.default.id, :is_template => true)
  587 + template3 = fast_create(Person, :name => 'template3', :environment_id => env2.id, :is_template => true)
  588 +
  589 + get :signup
  590 + assert_select '#template-options' do |elements|
  591 + assert_match /template1/, elements[0].to_s
  592 + assert_match /template2/, elements[0].to_s
  593 + assert_no_match /template3/, elements[0].to_s
  594 + end
  595 + end
  596 +
582 597 should 'render person partial' do
583 598 Environment.any_instance.expects(:signup_person_fields).returns(['contact_phone']).at_least_once
584 599 get :signup
... ...
test/unit/application_helper_test.rb
... ... @@ -243,6 +243,7 @@ class ApplicationHelperTest &lt; ActiveSupport::TestCase
243 243 end
244 244  
245 245 should 'not display templates options when there is no template' do
  246 + self.stubs(:environment).returns(Environment.default)
246 247 [Person, Community, Enterprise].each do |klass|
247 248 assert_equal '', template_options(klass, 'profile_data')
248 249 end
... ...
test/unit/profile_test.rb
... ... @@ -1444,9 +1444,9 @@ class ProfileTest &lt; ActiveSupport::TestCase
1444 1444 t2 = fast_create(Profile, :is_template => true)
1445 1445 profile = fast_create(Profile)
1446 1446  
1447   - assert_includes Profile.templates, t1
1448   - assert_includes Profile.templates, t2
1449   - assert_not_includes Profile.templates, profile
  1447 + assert_includes Profile.templates(Environment.default.id), t1
  1448 + assert_includes Profile.templates(Environment.default.id), t2
  1449 + assert_not_includes Profile.templates(Environment.default.id), profile
1450 1450 end
1451 1451  
1452 1452 should 'provide URL to leave' do
... ...