Commit 00dacfc25b70dd86f30770bcde110f64a7eaa662
Committed by
Daniela Feitosa
1 parent
3fc192fc
Exists in
master
and in
28 other branches
[multiple-templates] Manage templates views and controllers
(ActionItem2378)
Showing
9 changed files
with
150 additions
and
11 deletions
Show diff stats
@@ -0,0 +1,52 @@ | @@ -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,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,7 +12,7 @@ | ||
12 | <tr><td><%= link_to _('Manage User roles'), :controller => 'role' %></td></tr> | 12 | <tr><td><%= link_to _('Manage User roles'), :controller => 'role' %></td></tr> |
13 | <tr><td><%= link_to _('Manage users'), :controller => 'users' %></td></tr> | 13 | <tr><td><%= link_to _('Manage users'), :controller => 'users' %></td></tr> |
14 | <tr><td><%= link_to _('Manage Validators by region'), :controller => 'region_validators' %></td></tr> | 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 | <tr><td><%= link_to _('Manage Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr> | 16 | <tr><td><%= link_to _('Manage Fields'), :controller => 'features', :action => 'manage_fields' %></td></tr> |
17 | <tr><td><%= link_to _('Set Portal'), :action => 'set_portal_community' %></td></tr> | 17 | <tr><td><%= link_to _('Set Portal'), :action => 'set_portal_community' %></td></tr> |
18 | <% @plugins.dispatch(:admin_panel_links).each do |link| %> | 18 | <% @plugins.dispatch(:admin_panel_links).each do |link| %> |
@@ -0,0 +1,19 @@ | @@ -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 | + |
@@ -0,0 +1,12 @@ | @@ -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' %> |
@@ -0,0 +1,19 @@ | @@ -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> |
@@ -0,0 +1,32 @@ | @@ -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 | + |