Commit b4bacb9eb0a9a4976b4ebe27cad15da7e15c584a

Authored by MoisesMachado
1 parent ff69a878

ActionItem11: added affiliation of a person to an organization


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@314 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/enterprise_controller.rb
@@ -13,11 +13,10 @@ class EnterpriseController < ApplicationController @@ -13,11 +13,10 @@ class EnterpriseController < ApplicationController
13 13
14 def list 14 def list
15 @enterprises = Enterprise.find(:all) - @my_enterprises 15 @enterprises = Enterprise.find(:all) - @my_enterprises
16 - @pending_enterprises = current_user.person.pending_enterprises(false)  
17 end 16 end
18 17
19 def show 18 def show
20 - @enterprise = current_user.person.related_profiles.find(params[:id]) 19 + @enterprise = @my_enterprises.find(params[:id])
21 end 20 end
22 21
23 def register_form 22 def register_form
@@ -29,7 +28,7 @@ class EnterpriseController < ApplicationController @@ -29,7 +28,7 @@ class EnterpriseController < ApplicationController
29 @enterprise = Enterprise.new(params[:enterprise]) 28 @enterprise = Enterprise.new(params[:enterprise])
30 @enterprise.organization_info = OrganizationInfo.new(params[:organization]) 29 @enterprise.organization_info = OrganizationInfo.new(params[:organization])
31 if @enterprise.save 30 if @enterprise.save
32 - @enterprise.people << current_user.person 31 + @enterprise.people << @person
33 flash[:notice] = _('Enterprise was succesfully created') 32 flash[:notice] = _('Enterprise was succesfully created')
34 redirect_to :action => 'index' 33 redirect_to :action => 'index'
35 else 34 else
@@ -39,12 +38,12 @@ class EnterpriseController &lt; ApplicationController @@ -39,12 +38,12 @@ class EnterpriseController &lt; ApplicationController
39 end 38 end
40 39
41 def edit 40 def edit
42 - @enterprise = current_user.person.related_profiles.find(params[:id]) 41 + @enterprise = @my_enterprises.find(params[:id])
43 end 42 end
44 43
45 def update 44 def update
46 - @enterprise = current_user.person.related_profiles.find(params[:id])  
47 - if @enterprise.update_attributes(params[:enterprise]) 45 + @enterprise = @my_enterprises.find(params[:id])
  46 + if @enterprise.update_attributes(params[:enterprise]) && @enterprise.organization_info.update_attributes(params[:organization_info])
48 redirect_to :action => 'index' 47 redirect_to :action => 'index'
49 else 48 else
50 flash[:notice] = _('Could not update the enterprise') 49 flash[:notice] = _('Could not update the enterprise')
@@ -52,8 +51,14 @@ class EnterpriseController &lt; ApplicationController @@ -52,8 +51,14 @@ class EnterpriseController &lt; ApplicationController
52 end 51 end
53 end 52 end
54 53
  54 + def affiliate
  55 + @enterprise = Enterprise.find(params[:id])
  56 + @enterprise.people << @person
  57 + redirect_to :action => 'index'
  58 + end
  59 +
55 def destroy 60 def destroy
56 - @enterprise = current_user.person.related_profiles.find(params[:id]) 61 + @enterprise = @my_enterprises.find(params[:id])
57 @enterprise.destroy 62 @enterprise.destroy
58 redirect_to :action => 'index' 63 redirect_to :action => 'index'
59 end 64 end
@@ -61,10 +66,19 @@ class EnterpriseController &lt; ApplicationController @@ -61,10 +66,19 @@ class EnterpriseController &lt; ApplicationController
61 protected 66 protected
62 67
63 def logon 68 def logon
64 - redirect_to :controller => 'account' unless logged_in? 69 + if logged_in?
  70 + @user = current_user
  71 + @person = @user.person
  72 + else
  73 + redirect_to :controller => 'account' unless logged_in?
  74 + end
65 end 75 end
66 76
67 def my_enterprises 77 def my_enterprises
68 - @my_enterprises = current_user.person.enterprises 78 + if logged_in?
  79 + @my_active_enterprises = @person.active_enterprises
  80 + @my_pending_enterprises = @person.pending_enterprises
  81 + @my_enterprises = @person.enterprises
  82 + end
69 end 83 end
70 end 84 end
app/helpers/application_helper.rb
@@ -94,6 +94,7 @@ module ApplicationHelper @@ -94,6 +94,7 @@ module ApplicationHelper
94 [ link_to(_('My accont'), { :controller => 'account' }) ], 94 [ link_to(_('My accont'), { :controller => 'account' }) ],
95 [ link_to_profile(_('My home page')) ], 95 [ link_to_profile(_('My home page')) ],
96 [ link_to_cms(_('Manage content')) ], 96 [ link_to_cms(_('Manage content')) ],
  97 + [ link_to(_('My enterprises'), { :controller => 'enterprise' }) ],
97 ].join("\n") 98 ].join("\n")
98 content_tag('span', links, :id => 'user_links') 99 content_tag('span', links, :id => 'user_links')
99 end 100 end
app/models/affiliation.rb
1 class Affiliation < ActiveRecord::Base 1 class Affiliation < ActiveRecord::Base
2 belongs_to :person 2 belongs_to :person
3 - belongs_to :profile 3 + belongs_to :organization
4 end 4 end
app/models/friendship.rb 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 +class Friendship < ActiveRecord::Base
  2 +end
app/models/organization.rb
1 class Organization < Profile 1 class Organization < Profile
2 has_one :organization_info 2 has_one :organization_info
  3 + has_many :affiliations
  4 + has_many :people, :through => :affiliations
3 end 5 end
app/models/person.rb
1 class Person < Profile 1 class Person < Profile
2 - belongs_to :user  
3 - has_many :personal_affiliations, :class_name => 'Affiliation'  
4 - has_many :related_profiles, :class_name => 'Profile', :through => :personal_affiliations, :source => 'profile' 2 + ENTERPRISE = {:class_name => 'Enterprise', :through => :affiliations, :source => 'organization'}
5 3
6 - has_many :enterprises, :class_name => 'Enterprise', :through => :personal_affiliations, :source => 'profile', :conditions => ['active = ?', true]  
7 -  
8 - has_many :pending_enterprises, :class_name => 'Profile', :through => :personal_affiliations, :source => 'profile', :conditions => ['type = ? and active = ?', 'Enterprise', false]  
9 - 4 + belongs_to :user
  5 + has_many :affiliations
  6 + has_many :organizations, :through => :affiliations
  7 + has_many :enterprises, ENTERPRISE
  8 + has_many :pending_enterprises, ENTERPRISE.merge(:conditions => ['active = ?', false])
  9 + has_many :active_enterprises, ENTERPRISE.merge(:conditions => ['active = ?', true])
10 has_many :friendships 10 has_many :friendships
11 has_many :friends, :class_name => 'Person', :through => :friendships 11 has_many :friends, :class_name => 'Person', :through => :friendships
12 -  
13 - has_many :other_friendships  
14 - has_many :other_friend, :class_name => 'Person', :through => :other_friendships, :foreign_key => 'friend_id' 12 + has_many :person_friendships
  13 + has_many :people, :through => :person_friendships, :foreign_key => 'friend_id'
15 end 14 end
app/views/enterprise/_enterprise.rhtml
1 -<li> <%= link_to enterprise.name, :action => 'show', :id => enterprise %>  
2 -<p> <%= link_to _('Edit'), :action => 'edit', :id => enterprise %> </p>  
3 -<p> <%= link_to _('Delete'), :action => 'destroy', :id => enterprise %> </p> 1 +<li>
  2 +<%= link_to enterprise.name, :action => 'show', :id => enterprise %>
  3 +<%= link_to _('Edit'), :action => 'edit', :id => enterprise %>
  4 +<%= link_to _('Delete'), :action => 'destroy', :id => enterprise %>
  5 +<%= link_to _('Affiliate'), :action => 'affiliate', :id => enterprise unless @my_enterprises.include?(enterprise) %>
4 </li> 6 </li>
app/views/enterprise/list.rhtml
1 <p> <%= link_to _('Register new enterprise'), :action => 'register_form' %> </p> 1 <p> <%= link_to _('Register new enterprise'), :action => 'register_form' %> </p>
2 <h2> <%= _('Listing my enterprises') %> </h2> 2 <h2> <%= _('Listing my enterprises') %> </h2>
3 <ul> 3 <ul>
4 - <%= render :partial => 'enterprise', :collection => @my_enterprises %> 4 + <%= render :partial => 'enterprise', :collection => @my_active_enterprises %>
5 </ul> 5 </ul>
6 6
7 -<% unless @pending_enterprises.blank? %> 7 +<% unless @my_pending_enterprises.blank? %>
8 <h2> <%= _('Listing pending enterprises') %> </h2> 8 <h2> <%= _('Listing pending enterprises') %> </h2>
9 <ul> 9 <ul>
10 - <%= render :partial => 'enterprise', :collection => @pending_enterprises %> 10 + <%= render :partial => 'enterprise', :collection => @my_pending_enterprises %>
11 </ul> 11 </ul>
12 <% end %> 12 <% end %>
  13 +
  14 +<h4> <%= _('Other Enterprises') %> </h4>
  15 +<ul>
  16 + <%= render :partial => 'enterprise', :collection => @enterprises %>
  17 +</ul>
app/views/enterprise/show.rhtml
@@ -10,6 +10,6 @@ @@ -10,6 +10,6 @@
10 <p> <%= _('Economic activity: ') %> <%= @enterprise.organization_info.economic_activity %> </p> 10 <p> <%= _('Economic activity: ') %> <%= @enterprise.organization_info.economic_activity %> </p>
11 <p> <%= _('Management infomation: ') %> <%= @enterprise.organization_info.management_information %> </p> 11 <p> <%= _('Management infomation: ') %> <%= @enterprise.organization_info.management_information %> </p>
12 12
13 -<p> <%= link_to _('Edit enterprise'), :action => 'edit', :id => @enterprise %> </p>  
14 -<p> <%= link_to _('Delete enterprise'), :action => 'destroy', :id => @enterprise %> </p>  
15 -<p> <%= link_to _('Register new enterprise'), :action => 'register_form' %> </p> 13 +<%= link_to _('Edit enterprise'), :action => 'edit', :id => @enterprise %>
  14 +<%= link_to _('Delete enterprise'), :action => 'destroy', :id => @enterprise %>
  15 +<%= link_to _('Register new enterprise'), :action => 'register_form' %>
db/migrate/007_create_affiliations.rb
1 class CreateAffiliations < ActiveRecord::Migration 1 class CreateAffiliations < ActiveRecord::Migration
2 def self.up 2 def self.up
3 create_table :affiliations do |t| 3 create_table :affiliations do |t|
4 - t.column :person_id, :integer  
5 - t.column :profile_id, :integer 4 + t.column :person_id, :integer
  5 + t.column :organization_id, :integer
6 end 6 end
7 end 7 end
8 8
db/migrate/011_create_friendships.rb 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +class CreateFriendships < ActiveRecord::Migration
  2 + def self.up
  3 + create_table :friendships do |t|
  4 + t.column :person_id, :integer
  5 + t.column :friend_id, :integer
  6 + t.column :created_at, :datetime
  7 + end
  8 + end
  9 +
  10 + def self.down
  11 + drop_table :friendships
  12 + end
  13 +end
test/fixtures/friendships.yml 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
  2 +one:
  3 + id: 1
  4 +two:
  5 + id: 2
test/unit/friendship_test.rb 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +
  3 +class FriendshipTest < Test::Unit::TestCase
  4 + fixtures :friendships
  5 +
  6 + # Replace this with your real tests.
  7 + def test_truth
  8 + assert true
  9 + end
  10 +end