From 3b569fa2ace22975284e68df02794cb03457dda2 Mon Sep 17 00:00:00 2001 From: Leandro Nunes dos Santos Date: Mon, 11 Aug 2014 14:03:19 -0300 Subject: [PATCH] Add set as default method for templates --- app/controllers/admin/templates_controller.rb | 32 ++++++++++++++++++++++++++++++++ app/models/environment.rb | 7 +++++++ app/views/templates/index.html.erb | 5 +++++ test/functional/templates_controller_test.rb | 47 +++++++++++++++++++++++++++++++++++++++++++++-- test/unit/environment_test.rb | 36 ++++++++++++++++++++++++++++++++++++ 5 files changed, 125 insertions(+), 2 deletions(-) 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