Commit 00dacfc25b70dd86f30770bcde110f64a7eaa662

Authored by Rodrigo Souto
Committed by Daniela Feitosa
1 parent 3fc192fc

[multiple-templates] Manage templates views and controllers

(ActionItem2378)
app/controllers/admin/templates_controller.rb 0 → 100644
... ... @@ -0,0 +1,52 @@
  1 +class TemplatesController < AdminController
  2 + protect 'manage_environment_templates', :environment
  3 +
  4 + def create_person_template
  5 + if request.post?
  6 + begin
  7 + identifier = params[:name].to_slug
  8 + password = Digest::MD5.hexdigest(rand.to_s)
  9 + template = User.new(:login => identifier, :email => identifier+'@templates.noo', :password => password, :password_confirmation => password, :person_data => {:name => params[:name], :is_template => true})
  10 + template.save!
  11 + session[:notice] = _('New template created')
  12 + redirect_to :action => 'edit_templates'
  13 + rescue
  14 + @error = _('Name has already been taken')
  15 + end
  16 + end
  17 + end
  18 +
  19 + def create_community_template
  20 + if request.post?
  21 + begin
  22 + create_organization_template(Community)
  23 + session[:notice] = _('New template created')
  24 + redirect_to :action => 'edit_templates'
  25 + rescue
  26 + @error = _('Name has already been taken')
  27 + end
  28 + end
  29 + end
  30 +
  31 + def create_enterprise_template
  32 + if request.post?
  33 + begin
  34 + create_organization_template(Enterprise)
  35 + session[:notice] = _('New template created')
  36 + redirect_to :action => 'edit_templates'
  37 + rescue
  38 + @error = _('Name has already been taken')
  39 + end
  40 + end
  41 + end
  42 +
  43 + private
  44 +
  45 + def create_organization_template(klass)
  46 + identifier = params[:name].to_slug
  47 + template = klass.new(:name => params[:name], :identifier => identifier, :is_template => true)
  48 + template.save!
  49 + end
  50 +
  51 +end
  52 +
... ...
app/views/admin_panel/edit_templates.rhtml
... ... @@ -1,10 +0,0 @@
1   -<h1><%= _('Edit Templates') %></h1>
2   -
3   -<ul>
4   -<% [[_('Edit Person Template'), environment.person_template],
5   - [_('Edit Community Template'), environment.community_template],
6   - [__('Edit Enterprise Template'), environment.enterprise_template],
7   - [__('Edit Inactive Enterprise Template'), environment.inactive_enterprise_template]].select{|i| i[1]}.each do |row| %>
8   -<li><%= link_to row[0], :controller => 'profile_editor', :profile => row[1].identifier %></li>
9   -<% end %>
10   -</ul>
app/views/admin_panel/index.rhtml
... ... @@ -12,7 +12,7 @@
12 12 <tr><td><%= link_to _('Manage User roles'), :controller => 'role' %></td></tr>
13 13 <tr><td><%= link_to _('Manage users'), :controller => 'users' %></td></tr>
14 14 <tr><td><%= link_to _('Manage Validators by region'), :controller => 'region_validators' %></td></tr>
15   - <tr><td><%= link_to _('Edit Templates'), :action => 'edit_templates' %></td></tr>
  15 + <tr><td><%= link_to _('Edit Templates'), :controller => 'templates' %></td></tr>
16 16 <tr><td><%= link_to _('Manage Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr>
17 17 <tr><td><%= link_to _('Set Portal'), :action => 'set_portal_community' %></td></tr>
18 18 <% @plugins.dispatch(:admin_panel_links).each do |link| %>
... ...
app/views/templates/_create_template_form.html.erb 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +<% if @error %>
  2 + <div class="errorExplanation" id="errorExplanation">
  3 + <h2><%= _('The template could not be saved') %></h2>
  4 + <p><%= _('There were problems with the following fields:') %> </p>
  5 + <ul>
  6 + <li><%= @error %></li>
  7 + </ul>
  8 + </div>
  9 +<% end %>
  10 +
  11 +<% form_tag do %>
  12 + <%= labelled_text_field(_('Name')+': ', :name)%>
  13 +
  14 + <% button_bar do %>
  15 + <%= submit_button('save', _('Save'))%>
  16 + <%= button('cancel', _('Cancel'), {:action => 'index'})%>
  17 + <% end %>
  18 +<% end %>
  19 +
... ...
app/views/templates/create_community_template.html.erb 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +<% title = case @kind
  2 + when 'person'
  3 +
  4 + when 'community'
  5 +
  6 + when 'enterprise'
  7 + _('Create enterprise template')
  8 +end %>
  9 +
  10 +<h1><%= _('Create community template') %></h1>
  11 +
  12 +<%= render :partial => 'create_template_form' %>
... ...
app/views/templates/create_enterprise_template.html.erb 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +<h1><%= _('Create enterprise template') %></h1>
  2 +
  3 +<%= render :partial => 'create_template_form' %>
... ...
app/views/templates/create_person_template.html.erb 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +<% title = case @kind
  2 + when 'person'
  3 +
  4 + when 'community'
  5 + _('Create community template')
  6 + when 'enterprise'
  7 + _('Create enterprise template')
  8 +end %>
  9 +
  10 +<h1><%= _('Create person template') %></h1>
  11 +
  12 +<%= render :partial => 'create_template_form' %>
... ...
app/views/templates/index.html.erb 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +<h1><%= _('Edit Templates') %></h1>
  2 +
  3 +<% list_of_templates = [[_('Person') , Person.templates , 'person' ],
  4 + [_('Community') , Community.templates , 'community' ],
  5 + [_('Enterprise'), Enterprise.templates, 'enterprise']] %>
  6 +
  7 +<ul>
  8 + <% list_of_templates.each do |title, templates, kind|%>
  9 + <li><%= title %></li>
  10 + <ul>
  11 + <% templates.each do |template| %>
  12 + <li><%= link_to(template.name, {:controller => 'profile_editor', :profile => template.identifier}) %></li>
  13 + <% end %>
  14 + <li><strong>
  15 + <%= link_to(_('New...'), {:action => "create_#{kind}_template"}) %>
  16 + </strong></li>
  17 + </ul>
  18 + <% end %>
  19 +</ul>
... ...
test/functional/templates_controller_test.rb 0 → 100644
... ... @@ -0,0 +1,32 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +require 'templates_controller'
  3 +
  4 +# Re-raise errors caught by the controller.
  5 +class TemplatesController; def rescue_action(e) raise e end; end
  6 +
  7 +class TemplatesControllerTest < ActionController::TestCase
  8 +
  9 + all_fixtures
  10 + def setup
  11 + @controller = TemplatesController.new
  12 + @request = ActionController::TestRequest.new
  13 + @response = ActionController::TestResponse.new
  14 + login_as(create_admin_user(Environment.default))
  15 + end
  16 +
  17 + should 'create person template' do
  18 + post :create_person_template, :name => 'Developer'
  19 + assert Person['developer'].is_template
  20 + end
  21 +
  22 + should 'create community template' do
  23 + post :create_community_template, :name => 'Debian'
  24 + assert Community['debian'].is_template
  25 + end
  26 +
  27 + should 'create enterprise template' do
  28 + post :create_enterprise_template, :name => 'Free Software Foundation'
  29 + assert Enterprise['free-software-foundation'].is_template
  30 + end
  31 +end
  32 +
... ...