Commit 3c57e0221b7fc5a4e8084b6e81b8e12ca638670c
1 parent
a1c5c11c
Exists in
master
and in
22 other branches
ActionItem102: several stuff
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@663 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
14 changed files
with
188 additions
and
4 deletions
Show diff stats
app/controllers/environment_admin/region_validators_controller.rb
0 → 100644
| ... | ... | @@ -0,0 +1,38 @@ |
| 1 | +class RegionValidatorsController < ApplicationController | |
| 2 | + | |
| 3 | + before_filter :load_region_and_search, :except => 'index' | |
| 4 | + | |
| 5 | + def index | |
| 6 | + @regions = Region.top_level_for(environment) | |
| 7 | + end | |
| 8 | + | |
| 9 | + def region | |
| 10 | + # nothing to do, load_region_and_search already does everything needed here | |
| 11 | + end | |
| 12 | + | |
| 13 | + def search | |
| 14 | + render :partial => 'search' | |
| 15 | + end | |
| 16 | + | |
| 17 | + def add | |
| 18 | + validator = environment.organizations.find(params[:validator_id]) | |
| 19 | + @region.validators << validator | |
| 20 | + redirect_to :action => 'region', :id => @region.id | |
| 21 | + end | |
| 22 | + | |
| 23 | + def remove | |
| 24 | + validator = environment.organizations.find(params[:validator_id]) | |
| 25 | + @region.validators.delete(validator) | |
| 26 | + redirect_to :action => 'region', :id => @region.id | |
| 27 | + end | |
| 28 | + | |
| 29 | + protected | |
| 30 | + | |
| 31 | + def load_region_and_search | |
| 32 | + @region = environment.regions.find(params[:id]) | |
| 33 | + if params[:search] | |
| 34 | + @search = Organization.find_by_contents(params[:search]) | |
| 35 | + end | |
| 36 | + end | |
| 37 | + | |
| 38 | +end | ... | ... |
app/models/environment.rb
| ... | ... | @@ -22,6 +22,8 @@ class Environment < ActiveRecord::Base |
| 22 | 22 | has_many :domains, :as => :owner |
| 23 | 23 | has_many :profiles |
| 24 | 24 | |
| 25 | + has_many :organizations | |
| 26 | + | |
| 25 | 27 | has_many :categories |
| 26 | 28 | has_many :display_categories, :class_name => 'Category', :conditions => 'display_color is not null and parent_id is null', :order => 'display_color' |
| 27 | 29 | ... | ... |
app/models/profile.rb
app/views/admin_panel/index.rhtml
| ... | ... | @@ -7,4 +7,5 @@ |
| 7 | 7 | <li><%= link_to _('Edit the Visual Design'), :controller => 'edit_template'%></li> |
| 8 | 8 | <li><%= link_to _('Manage Categories'), :controller => 'categories'%></li> |
| 9 | 9 | <li><%= link_to _('Manage User roles'), :controller => 'role' %></li> |
| 10 | + <li><%= link_to _('Manage Validators by region'), :controller => 'region_validators' %></li> | |
| 10 | 11 | </ul> | ... | ... |
| ... | ... | @@ -0,0 +1,14 @@ |
| 1 | +<li> | |
| 2 | + | |
| 3 | +<div class='treeitem'> | |
| 4 | + <%= link_to region.name, :action => 'region', :id => region %> | |
| 5 | + <em><%= n_('1 validator', '%{num} validators.', region.validators.size) % { :num => region.validators.size } %></em> | |
| 6 | + <% unless region.children.empty? %> | |
| 7 | + <ul class='tree'> | |
| 8 | + <%= render :partial => 'region', :collection => region.children %> | |
| 9 | + </ul> | |
| 10 | + <% end %> | |
| 11 | + | |
| 12 | +</div> | |
| 13 | + | |
| 14 | +</li> | ... | ... |
| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | +<% if @search %> | |
| 2 | + <ul> | |
| 3 | + <% for item in @search %> | |
| 4 | + <li> | |
| 5 | + <%= item.name %> | |
| 6 | + <% form_tag :action => 'add', :id => @region do %> | |
| 7 | + <%= hidden_field_tag :validator_id, item.id %> | |
| 8 | + <%= submit_tag _('Adicionar') %> | |
| 9 | + <% end %> | |
| 10 | + </li> | |
| 11 | + <% end %> | |
| 12 | + </ul> | |
| 13 | +<% end %> | ... | ... |
| ... | ... | @@ -0,0 +1,29 @@ |
| 1 | +<h1><%= _('Validators for region %s') % @region.name %></h1> | |
| 2 | + | |
| 3 | +<h2><%= _('Current validators') %></h2> | |
| 4 | + | |
| 5 | +<ul> | |
| 6 | + <% for validator in @region.validators %> | |
| 7 | + <li> | |
| 8 | + <%= link_to_homepage validator.name, validator.identifier %> | |
| 9 | + <%= link_to _('Remove validation rights'), { :action => 'remove', :id => @region.id, :validator_id => validator }, :method => 'post' %> | |
| 10 | + </li> | |
| 11 | + <% end %> | |
| 12 | +</ul> | |
| 13 | + | |
| 14 | +<h2><%= _('Add new validators') %></h2> | |
| 15 | + | |
| 16 | +<p> | |
| 17 | +<%= help _('First search organizations by their name, then use the buttons in the search result to add them as validators for this region. ') %> | |
| 18 | +</p> | |
| 19 | + | |
| 20 | +<% form_tag({}, { :method => 'get' }) do %> | |
| 21 | + <%= text_field_tag :search, nil, :id => 'search_validator' %> | |
| 22 | + <%= submit_tag _('Search') %> | |
| 23 | +<% end %> | |
| 24 | + | |
| 25 | +<%= observe_field 'search_validator', :url => { :action => 'search', :id => @region.id }, :with => 'search', :frequency => 1, :update => 'search_results' %> | |
| 26 | + | |
| 27 | +<div id='search_results'> | |
| 28 | + <%= render :partial => 'search' %> | |
| 29 | +</div> | ... | ... |
db/migrate/003_create_profiles.rb
| ... | ... | @@ -5,9 +5,6 @@ class CreateProfiles < ActiveRecord::Migration |
| 5 | 5 | t.column :type, :string |
| 6 | 6 | t.column :identifier, :string |
| 7 | 7 | t.column :environment_id, :integer |
| 8 | - t.column :flexible_template_template, :string, :default => "default" | |
| 9 | - t.column :flexible_template_theme, :string, :default => "default" | |
| 10 | - t.column :flexible_template_icon_theme, :string, :default => "default" | |
| 11 | 8 | t.column :active, :boolean, :default => false |
| 12 | 9 | t.column :address, :string |
| 13 | 10 | t.column :contact_phone, :string | ... | ... |
| ... | ... | @@ -0,0 +1,12 @@ |
| 1 | +class CreateRegionValidatorsTable < ActiveRecord::Migration | |
| 2 | + def self.up | |
| 3 | + create_table :region_validators, :id => false do |t| | |
| 4 | + t.column :region_id, :integer | |
| 5 | + t.column :organization_id, :integer | |
| 6 | + end | |
| 7 | + end | |
| 8 | + | |
| 9 | + def self.down | |
| 10 | + drop_table :region_validators | |
| 11 | + end | |
| 12 | +end | ... | ... |
test/functional/membership_editor_controller_test.rb
| ... | ... | @@ -19,7 +19,7 @@ class MembershipEditorControllerTest < Test::Unit::TestCase |
| 19 | 19 | assert_kind_of Array, assigns(:memberships) |
| 20 | 20 | end |
| 21 | 21 | |
| 22 | - should 'propmt for new enterprise data' do | |
| 22 | + should 'prompt for new enterprise data' do | |
| 23 | 23 | get :new_enterprise, :profile => 'ze' |
| 24 | 24 | assert assigns(:virtual_communities) |
| 25 | 25 | assert_kind_of Array, assigns(:virtual_communities) | ... | ... |
| ... | ... | @@ -0,0 +1,61 @@ |
| 1 | +require File.dirname(__FILE__) + '/../test_helper' | |
| 2 | +require 'region_validators_controller' | |
| 3 | + | |
| 4 | +# Re-raise errors caught by the controller. | |
| 5 | +class RegionValidatorsController; def rescue_action(e) raise e end; end | |
| 6 | + | |
| 7 | +class RegionValidatorsControllerTest < Test::Unit::TestCase | |
| 8 | + def setup | |
| 9 | + @controller = RegionValidatorsController.new | |
| 10 | + @request = ActionController::TestRequest.new | |
| 11 | + @response = ActionController::TestResponse.new | |
| 12 | + end | |
| 13 | + | |
| 14 | + # Replace this with your real tests. | |
| 15 | + should 'list regions at index' do | |
| 16 | + get :index | |
| 17 | + assert_response :success | |
| 18 | + assert_template 'index' | |
| 19 | + assert_kind_of Array, assigns(:regions) | |
| 20 | + end | |
| 21 | + | |
| 22 | + should 'view validators for a specific region' do | |
| 23 | + environment = Environment.create!(:name => "my environment") | |
| 24 | + region = Region.new(:name => 'my region') | |
| 25 | + environment.regions << region | |
| 26 | + assert !region.new_record? | |
| 27 | + | |
| 28 | + @controller.expects(:environment).returns(environment) | |
| 29 | + | |
| 30 | + get :region, :id => region.id | |
| 31 | + | |
| 32 | + assert_response :success | |
| 33 | + assert_template 'region' | |
| 34 | + assert_equal region, assigns(:region) | |
| 35 | + end | |
| 36 | + | |
| 37 | + should 'search possible validators by name' do | |
| 38 | + environment = Environment.create!(:name => "my environment") | |
| 39 | + region = Region.new(:name => 'my region') | |
| 40 | + environment.regions << region | |
| 41 | + assert !region.new_record? | |
| 42 | + org = Organization.create!(:name => "My frufru organization", :identifier => 'frufru') | |
| 43 | + | |
| 44 | + @controller.expects(:environment).returns(environment) | |
| 45 | + Organization.expects(:find_by_contents).with('frufru').returns([org]) | |
| 46 | + | |
| 47 | + get :search, :id => region.id, :search => 'frufru' | |
| 48 | + | |
| 49 | + assert_response :success | |
| 50 | + assert_equal [org], assigns(:search) | |
| 51 | + end | |
| 52 | + | |
| 53 | + should 'be able to add validators to the current region' do | |
| 54 | + flunk 'need to write this test' | |
| 55 | + end | |
| 56 | + | |
| 57 | + should 'be able to remove validators from the current region' do | |
| 58 | + flunk 'need to write this test' | |
| 59 | + end | |
| 60 | + | |
| 61 | +end | ... | ... |
test/unit/region_test.rb
| ... | ... | @@ -16,4 +16,12 @@ class RegionTest < Test::Unit::TestCase |
| 16 | 16 | end |
| 17 | 17 | end |
| 18 | 18 | |
| 19 | + should 'be able to search for possible validators by name' do | |
| 20 | + flunk 'need to write this test' | |
| 21 | + end | |
| 22 | + | |
| 23 | + should 'return search results without validators that are already associated to the current region' do | |
| 24 | + flunk 'need to write this test' | |
| 25 | + end | |
| 26 | + | |
| 19 | 27 | end | ... | ... |