diff --git a/app/controllers/admin/templates_controller.rb b/app/controllers/admin/templates_controller.rb
index c188d0c..33866ce 100644
--- a/app/controllers/admin/templates_controller.rb
+++ b/app/controllers/admin/templates_controller.rb
@@ -40,8 +40,40 @@ class TemplatesController < AdminController
end
end
+ def set_community_as_default
+ set_as_default(Community.find(params[:template_id]))
+ redirect_to :action => 'index'
+ end
+
+ def set_person_as_default
+ set_as_default(Person.find(params[:template_id]))
+ redirect_to :action => 'index'
+ end
+
+ def set_enterprise_as_default
+ set_as_default(Enterprise.find(params[:template_id]))
+ redirect_to :action => 'index'
+ end
+
private
+ def set_as_default(obj)
+ return nil if obj.nil?
+ case obj.class.name
+ when 'Community' then
+ environment.community_default_template = obj
+ environment.save!
+ when 'Person' then
+ environment.person_default_template = obj
+ environment.save!
+ when 'Enterprise' then
+ environment.enterprise_default_template = obj
+ environment.save!
+ else
+ nil
+ end
+ end
+
def create_organization_template(klass)
identifier = params[:name].to_slug
template = klass.new(:name => params[:name], :identifier => identifier, :is_template => true)
diff --git a/app/models/environment.rb b/app/models/environment.rb
index 5672e57..c806777 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -717,6 +717,13 @@ class Environment < ActiveRecord::Base
]
end
+ def is_default_template?(template)
+ is_default = template == community_default_template
+ is_default = is_default || template == person_default_template
+ is_default = is_default || template == enterprise_default_template
+ is_default
+ end
+
def community_templates
self.communities.templates
end
diff --git a/app/views/templates/index.html.erb b/app/views/templates/index.html.erb
index 003fb32..d41c3cf 100644
--- a/app/views/templates/index.html.erb
+++ b/app/views/templates/index.html.erb
@@ -16,6 +16,11 @@
<%= image_tag "icons-app/#{kind}-icon.png" %>
<%= link_to(template.name, {:controller => 'profile_editor', :profile => template.identifier}, :title => _('Edit template "%s"') % template.name ) %>
+ <% if environment.is_default_template?(template) %>
+ <%= _('is the default template') %>
+ <% else %>
+ <%= link_to(_('Set as default'), {:action => "set_#{kind}_as_default", :template_id => template.id}, :title => _('Set %s template as default') % template.name ) %>
+ <% end %>
<% end %>
diff --git a/test/functional/templates_controller_test.rb b/test/functional/templates_controller_test.rb
index 413d79f..d032825 100644
--- a/test/functional/templates_controller_test.rb
+++ b/test/functional/templates_controller_test.rb
@@ -6,14 +6,17 @@ class TemplatesController; def rescue_action(e) raise e end; end
class TemplatesControllerTest < ActionController::TestCase
- all_fixtures
def setup
@controller = TemplatesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
- login_as(create_admin_user(Environment.default))
+ Environment.destroy_all
+ @environment = fast_create(Environment, :is_default => true)
+ login_as(create_admin_user(@environment))
end
+ attr_accessor :environment
+
should 'create person template' do
post :create_person_template, :name => 'Developer'
assert Person['developer'].is_template
@@ -28,5 +31,45 @@ class TemplatesControllerTest < ActionController::TestCase
post :create_enterprise_template, :name => 'Free Software Foundation'
assert Enterprise['free-software-foundation'].is_template
end
+
+ should 'set a community as default template' do
+
+ c1= fast_create(Community, :is_template => true, :environment_id => environment.id)
+ environment.community_default_template= c1
+ environment.save
+
+ c3 = fast_create(Community, :is_template => true, :environment_id => environment.id)
+
+ post :set_community_as_default, :template_id => c3.id
+ environment.reload
+ assert_equal c3, environment.community_default_template
+ end
+
+ should 'set a person as default template' do
+
+ p1= fast_create(Person, :is_template => true, :environment_id => environment.id)
+ environment.person_default_template= p1
+ environment.save
+
+ p3 = fast_create(Person, :is_template => true, :environment_id => environment.id)
+
+ post :set_person_as_default, :template_id => p3.id
+ environment.reload
+ assert_equal p3, environment.person_default_template
+ end
+
+ should 'set a enterprise as default template' do
+
+ e1= fast_create(Enterprise, :is_template => true, :environment_id => environment.id)
+ environment.enterprise_default_template= e1
+ environment.save
+
+ e3 = fast_create(Enterprise, :is_template => true, :environment_id => environment.id)
+
+ post :set_enterprise_as_default, :template_id => e3.id
+ environment.reload
+ assert_equal e3, environment.enterprise_default_template
+ end
+
end
diff --git a/test/unit/environment_test.rb b/test/unit/environment_test.rb
index 7c321ce..0f33093 100644
--- a/test/unit/environment_test.rb
+++ b/test/unit/environment_test.rb
@@ -687,6 +687,42 @@ class EnvironmentTest < ActiveSupport::TestCase
assert_equal e3, env.enterprise_default_template
end
+ should 'is_default_template? method identify a person default template as default' do
+ env = fast_create(Environment)
+
+ p1 = fast_create(Person, :is_template => true, :environment_id => env.id)
+ env.person_default_template= p1.id
+ assert env.is_default_template?(p1)
+
+ p2 = fast_create(Person, :is_template => true, :environment_id => env.id)
+ env.person_default_template= p2.id
+ assert !env.is_default_template?(p1)
+ end
+
+ should 'is_default_template? method identify a community default template as default' do
+ env = fast_create(Environment)
+
+ c1 = fast_create(Community, :is_template => true, :environment_id => env.id)
+ env.community_default_template= c1.id
+ assert env.is_default_template?(c1)
+
+ c2 = fast_create(Community, :is_template => true, :environment_id => env.id)
+ env.community_default_template= c2.id
+ assert !env.is_default_template?(c1)
+ end
+
+ should 'is_default_template? method identify a enterprise default template as default' do
+ env = fast_create(Environment)
+
+ e1 = fast_create(Enterprise, :is_template => true, :environment_id => env.id)
+ env.enterprise_default_template= e1.id
+ assert env.is_default_template?(e1)
+
+ e2 = fast_create(Enterprise, :is_template => true, :environment_id => env.id)
+ env.enterprise_default_template= e2.id
+ assert !env.is_default_template?(e1)
+ end
+
should 'have a layout template' do
e = build(Environment, :layout_template => 'mytemplate')
assert_equal 'mytemplate', e.layout_template
--
libgit2 0.21.2