Commit fcffa9a4a7b8ead8bddb91a4005ab50088eca525
1 parent
ab1cffa8
Exists in
master
and in
22 other branches
ActionItem135: added profile info block and merged enterprises_block into list_block
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1083 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
26 changed files
with
183 additions
and
105 deletions
Show diff stats
app/controllers/admin/edit_template_controller.rb
app/controllers/application.rb
@@ -42,7 +42,8 @@ class ApplicationController < ActionController::Base | @@ -42,7 +42,8 @@ class ApplicationController < ActionController::Base | ||
42 | 42 | ||
43 | def render_not_found(path = nil) | 43 | def render_not_found(path = nil) |
44 | @path ||= request.path | 44 | @path ||= request.path |
45 | - render(:file => File.join(RAILS_ROOT, 'app', 'views', 'shared', 'not_found.rhtml'), :layout => 'not_found', :status => 404) && false | 45 | + raise "#{@path} not found" |
46 | +# render(:file => File.join(RAILS_ROOT, 'app', 'views', 'shared', 'not_found.rhtml'), :layout => 'not_found', :status => 404) && false | ||
46 | end | 47 | end |
47 | 48 | ||
48 | def load_admin_controller | 49 | def load_admin_controller |
app/controllers/my_profile/profile_editor_controller.rb
@@ -11,7 +11,7 @@ class ProfileEditorController < MyProfileController | @@ -11,7 +11,7 @@ class ProfileEditorController < MyProfileController | ||
11 | %w[ | 11 | %w[ |
12 | FavoriteLinksProfile | 12 | FavoriteLinksProfile |
13 | ListBlock | 13 | ListBlock |
14 | - EnterprisesBlock | 14 | + ProfileInfoBlock |
15 | ] | 15 | ] |
16 | end | 16 | end |
17 | 17 |
app/design_blocks/enterprises_block/controllers/enterprises_block_controller.rb
@@ -1,51 +0,0 @@ | @@ -1,51 +0,0 @@ | ||
1 | -class EnterprisesBlockController < ApplicationController | ||
2 | - | ||
3 | - # This controller always has the object @design_block available to it. | ||
4 | - # The method acts_as_design_block load a before_filter that always load | ||
5 | - # this object. | ||
6 | - | ||
7 | - needs_profile | ||
8 | - | ||
9 | - acts_as_design_block | ||
10 | - | ||
11 | - # You must have a hash on format: | ||
12 | - # { | ||
13 | - # 'action name' => 'How the action will be displayed on menu' | ||
14 | - # } | ||
15 | - # | ||
16 | - # EX: | ||
17 | - # CONTROL_ACTION_OPTIONS = { | ||
18 | - # 'design_edit' => _('Edit'), | ||
19 | - # 'manage_links' => _('Manage Links') | ||
20 | - # } | ||
21 | - # | ||
22 | - # This hash will define the options menu on edit mode. | ||
23 | - CONTROL_ACTION_OPTIONS = { | ||
24 | -# 'edit' => _('Edit') | ||
25 | - } | ||
26 | - | ||
27 | - | ||
28 | - ########################### | ||
29 | - # Mandatory methods | ||
30 | - ########################### | ||
31 | - | ||
32 | - def index | ||
33 | - @enterprises = Enterprise.find(:all) | ||
34 | - design_render | ||
35 | - end | ||
36 | - | ||
37 | - ########################### | ||
38 | - # Other Sample of methods | ||
39 | - ########################### | ||
40 | - | ||
41 | -# def edit | ||
42 | -# design_render_on_edit | ||
43 | -# end | ||
44 | - | ||
45 | -# def save | ||
46 | -# @design_block.update_attributes(params[:design_block]) | ||
47 | -# design_render_on_edit :nothing => true | ||
48 | -# end | ||
49 | - | ||
50 | - | ||
51 | -end |
app/design_blocks/enterprises_block/helpers/enterprises_block_helper.rb
app/design_blocks/enterprises_block/helpers/list_block_helper.rb
app/design_blocks/enterprises_block/models/enterprises_block.rb
@@ -1,15 +0,0 @@ | @@ -1,15 +0,0 @@ | ||
1 | -class EnterprisesBlock < Design::Block | ||
2 | - | ||
3 | - # Define an specific method using the settings hash serialized | ||
4 | - # variable to keep the value desired by method. | ||
5 | - # | ||
6 | - # EX: | ||
7 | - # def max_number_of_element= value | ||
8 | - # self.settings[:limit_number] = value | ||
9 | - # end | ||
10 | - | ||
11 | - def self.description | ||
12 | - _('Enterprises Block') | ||
13 | - end | ||
14 | - | ||
15 | -end |
app/design_blocks/enterprises_block/views/index.rhtml
app/design_blocks/list_block/controllers/list_block_controller.rb
@@ -5,7 +5,7 @@ class ListBlockController < ApplicationController | @@ -5,7 +5,7 @@ class ListBlockController < ApplicationController | ||
5 | # this object. | 5 | # this object. |
6 | 6 | ||
7 | needs_profile | 7 | needs_profile |
8 | - | 8 | + |
9 | acts_as_design_block | 9 | acts_as_design_block |
10 | 10 | ||
11 | # You must have a hash on format: | 11 | # You must have a hash on format: |
@@ -30,8 +30,8 @@ class ListBlockController < ApplicationController | @@ -30,8 +30,8 @@ class ListBlockController < ApplicationController | ||
30 | ########################### | 30 | ########################### |
31 | 31 | ||
32 | def index | 32 | def index |
33 | - @people = @design_block.people | ||
34 | - design_render | 33 | + @elements = @design_block.elements |
34 | + design_render :action => @design_block.view | ||
35 | end | 35 | end |
36 | 36 | ||
37 | ########################### | 37 | ########################### |
@@ -40,6 +40,7 @@ class ListBlockController < ApplicationController | @@ -40,6 +40,7 @@ class ListBlockController < ApplicationController | ||
40 | 40 | ||
41 | 41 | ||
42 | def edit | 42 | def edit |
43 | + @elements_types = @design_block.elements_types | ||
43 | design_render_on_edit :controller => 'list_block', :action => 'edit' | 44 | design_render_on_edit :controller => 'list_block', :action => 'edit' |
44 | end | 45 | end |
45 | 46 |
app/design_blocks/list_block/models/list_block.rb
@@ -20,8 +20,26 @@ class ListBlock < Design::Block | @@ -20,8 +20,26 @@ class ListBlock < Design::Block | ||
20 | self.settings[:limit_number] | 20 | self.settings[:limit_number] |
21 | end | 21 | end |
22 | 22 | ||
23 | - def people | ||
24 | - Person.find(:all, :limit => limit_number) | 23 | + def elements_types |
24 | + ['Person', 'Enterprise'] | ||
25 | + end | ||
26 | + | ||
27 | + def element_type | ||
28 | + self.settings[:element_type] | ||
29 | + end | ||
30 | + | ||
31 | + def element_type= value | ||
32 | + return nil unless elements_types.include?(value) | ||
33 | + self.settings[:element_type] = value | ||
34 | + end | ||
35 | + | ||
36 | + def elements | ||
37 | + return nil unless element_type | ||
38 | + self.element_type.constantize.find(:all, :limit => limit_number) | ||
39 | + end | ||
40 | + | ||
41 | + def view | ||
42 | + element_type.to_s.underscore | ||
25 | end | 43 | end |
26 | 44 | ||
27 | end | 45 | end |
app/design_blocks/list_block/views/edit.rhtml
@@ -4,10 +4,15 @@ | @@ -4,10 +4,15 @@ | ||
4 | <p> | 4 | <p> |
5 | <label for="design_block_title"> <%= _("Title") %> </label> | 5 | <label for="design_block_title"> <%= _("Title") %> </label> |
6 | <%= text_field 'design_block', 'title'%> | 6 | <%= text_field 'design_block', 'title'%> |
7 | + </p> | ||
8 | + | ||
9 | + <p> | ||
10 | + <label for="design_block_type"> <%= _("Type of objects to list") %> </label> | ||
11 | + <%= select 'design_block', 'element_type', @elements_types %> | ||
7 | </p> | 12 | </p> |
8 | 13 | ||
9 | <p> | 14 | <p> |
10 | - <label for="design_block_limit_number"> <%= _("Max number of people") %> </label> | 15 | + <label for="design_block_limit_number"> <%= _("Max number of elements") %> </label> |
11 | <%= text_field 'design_block', 'limit_number'%> | 16 | <%= text_field 'design_block', 'limit_number'%> |
12 | </p> | 17 | </p> |
13 | 18 |
app/design_blocks/list_block/views/index.rhtml
app/design_blocks/profile_info_block/controllers/profile_info_block_controller.rb
0 → 100644
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +class ProfileInfoBlockController < ApplicationController | ||
2 | + | ||
3 | + # This controller always has the object @design_block available to it. | ||
4 | + # The method acts_as_design_block load a before_filter that always load | ||
5 | + # this object. | ||
6 | + | ||
7 | + needs_profile | ||
8 | + | ||
9 | + acts_as_design_block | ||
10 | + | ||
11 | + # You must have a hash on format: | ||
12 | + # { | ||
13 | + # 'action name' => 'How the action will be displayed on menu' | ||
14 | + # } | ||
15 | + # | ||
16 | + # EX: | ||
17 | + # CONTROL_ACTION_OPTIONS = { | ||
18 | + # 'design_edit' => _('Edit'), | ||
19 | + # 'manage_links' => _('Manage Links') | ||
20 | + # } | ||
21 | + # | ||
22 | + # This hash will define the options menu on edit mode. | ||
23 | + CONTROL_ACTION_OPTIONS = { | ||
24 | +# 'edit' => _('Edit') | ||
25 | + } | ||
26 | + | ||
27 | + | ||
28 | + ########################### | ||
29 | + # Mandatory methods | ||
30 | + ########################### | ||
31 | + | ||
32 | + def index | ||
33 | + @info = @profile.info | ||
34 | + design_render | ||
35 | + end | ||
36 | + | ||
37 | + ########################### | ||
38 | + # Other Sample of methods | ||
39 | + ########################### | ||
40 | + | ||
41 | + def edit | ||
42 | + design_render_on_edit | ||
43 | + end | ||
44 | + | ||
45 | + def save | ||
46 | + @design_block.update_attributes(params[:design_block]) | ||
47 | + design_render_on_edit :nothing => true | ||
48 | + end | ||
49 | + | ||
50 | + | ||
51 | +end |
app/design_blocks/profile_info_block/helpers/profile_info_block_helper.rb
0 → 100644
app/design_blocks/profile_info_block/models/profile_info_block.rb
0 → 100644
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +class ProfileInfoBlock < Design::Block | ||
2 | + | ||
3 | + # Define an specific method using the settings hash serialized | ||
4 | + # variable to keep the value desired by method. | ||
5 | + # | ||
6 | + # EX: | ||
7 | + # def max_number_of_element= value | ||
8 | + # self.settings[:limit_number] = value | ||
9 | + # end | ||
10 | + | ||
11 | + def self.description | ||
12 | + 'ProfileInfoBlock' | ||
13 | + end | ||
14 | + | ||
15 | +end |
app/models/person_info.rb
1 | class PersonInfo < ActiveRecord::Base | 1 | class PersonInfo < ActiveRecord::Base |
2 | 2 | ||
3 | - # FIXME: add file_column :photo | ||
4 | - | ||
5 | belongs_to :person | 3 | belongs_to :person |
6 | 4 | ||
7 | def summary | 5 | def summary |
8 | - [ | ||
9 | - [ PersonInfo.columns_hash['name'].human_name, self.name ], | ||
10 | - [ PersonInfo.columns_hash['address'].human_name, self.address ], | ||
11 | - [ PersonInfo.columns_hash['contact_information'].human_name, self.contact_information ], | ||
12 | - ] | 6 | + ['name', 'sex', 'birth_date', 'address', 'city', 'state', 'country'].map do |col| |
7 | + [ PersonInfo.columns_hash[col] && PersonInfo.columns_hash[col].human_name, self.send(col) ] | ||
8 | + end | ||
9 | + end | ||
10 | + | ||
11 | + def age | ||
12 | + a = Date.today.year - birth_date.year | ||
13 | + Date.today.yday > birth_date.yday ? a : a-1 | ||
13 | end | 14 | end |
14 | 15 | ||
15 | end | 16 | end |
app/models/profile.rb
app/views/category/_product_category.rhtml
1 | +<%= link_to(_('I consume this'), {:profile => current_user.login, :controller => 'consumed_products', :action => 'new', 'consumption[product_category_id]' => @category.id }, :method => :post) %> | ||
1 | <ul> | 2 | <ul> |
2 | <li><%= n_("One product in this category.", "%{num} products in this category.", @products.size) % { :num => @products.size } %></li> | 3 | <li><%= n_("One product in this category.", "%{num} products in this category.", @products.size) % { :num => @products.size } %></li> |
3 | <li><%= n_("One enterprise sells products in this category.", "%{num} enterprises sells products in this category.", @enterprises.size) % { :num => @enterprises.size} %></li> | 4 | <li><%= n_("One enterprise sells products in this category.", "%{num} enterprises sells products in this category.", @enterprises.size) % { :num => @enterprises.size} %></li> |
@@ -0,0 +1,32 @@ | @@ -0,0 +1,32 @@ | ||
1 | +<label class='formlabel' for="name"><%= _('Name') %></label> | ||
2 | +<p class='formfield text_field'><%= text_field 'enterprise', 'name', 'size' => 20, 'class' => 'formfield text_field' %></p> | ||
3 | + | ||
4 | +<p class='formfield text_field'><label for="address"><%= _('Address') %></label><br/> | ||
5 | +<%= text_field 'enterprise', 'address', 'size' => 50 %></p> | ||
6 | + | ||
7 | +<p class='formfield text_field'><label for="contact_phone"><%= _('Contact Phone') %></label><br/> | ||
8 | +<%= text_field 'enterprise', 'contact_phone', 'size' => 20 %></p> | ||
9 | + | ||
10 | +<p class='formfield text_field'><label for="contact_person"><%= _('Contact Person') %></label><br/> | ||
11 | +<%= text_field 'organization_info', 'contact_person', 'size' => 20 %></p> | ||
12 | + | ||
13 | +<p class='formfield text_field'><label for="acronym"><%= _('Acronym') %></label><br/> | ||
14 | +<%= text_field 'organization_info', 'acronym', 'size' => 20 %></p> | ||
15 | + | ||
16 | +<p class='formfield text_field'><label for="foundation_year"><%= _('Foundation Year') %></label><br/> | ||
17 | +<%= text_field 'organization_info', 'foundation_year', 'size' => 20 %></p> | ||
18 | + | ||
19 | +<p class='formfield text_field'><label for="legal_form"><%= _('Legal Form') %></label><br/> | ||
20 | +<%= text_field 'organization_info', 'legal_form', 'size' => 20 %></p> | ||
21 | + | ||
22 | +<p class='formfield text_field'><label for="economic_activity"><%= _('Economic Activity') %></label><br/> | ||
23 | +<%= text_field 'organization_info', 'economic_activity', 'size' => 20 %></p> | ||
24 | + | ||
25 | +<p class='formfield text_area'><label for="management_information"><%= _('Management Information') %></label><br/> | ||
26 | +<%= text_area 'organization_info', 'management_information', 'cols' => 40, 'rows' => 20 %></p> | ||
27 | + | ||
28 | +<p class='formfield select'><label for="validation_entity"><%= _('Validation Entity') %></label><br/> | ||
29 | +<%= select 'validation_entity', 'id', @validation_entities.map{|v| [v.name, v.id]}, :include_blank => true %></p> | ||
30 | + | ||
31 | +<p class='formfield text_field'><label for="tag_list"><%= _('Tags') %></label><br/> | ||
32 | +<%= text_field 'enterprise', 'tag_list', 'size' => 20 %></p> |
app/views/profile_editor/person_info.rhtml
@@ -4,9 +4,16 @@ | @@ -4,9 +4,16 @@ | ||
4 | 4 | ||
5 | <%= display_form_field(_('Name'), f.text_field(:name)) %> | 5 | <%= display_form_field(_('Name'), f.text_field(:name)) %> |
6 | 6 | ||
7 | - <%= display_form_field(_('Address'), f.text_area(:address, :rows => 5)) %> | ||
8 | - | ||
9 | <%= display_form_field(_('Contact Information'), f.text_area(:contact_information, :rows => 5)) %> | 7 | <%= display_form_field(_('Contact Information'), f.text_area(:contact_information, :rows => 5)) %> |
8 | + <%= display_form_field(_('Birth day'), f.date_select(:birth_date, :start_year => 1930, :use_month_numbers => true, :order => [:day, :month, :year])) %> | ||
9 | + | ||
10 | + <%= _('Sex: ') %> | ||
11 | + <%= display_form_field(_('Male'), f.radio_button(:sex, 'male')) %> | ||
12 | + <%= display_form_field(_('Female'), f.radio_button(:sex, 'female')) %> | ||
13 | + <%= display_form_field(_('Address'), f.text_area(:address, :rows => 3)) %> | ||
14 | + <%= display_form_field(_('City'), f.text_field(:city)) %> | ||
15 | + <%= display_form_field(_('State'), f.text_field(:state)) %> | ||
16 | + <%= display_form_field(_('Country'), f.text_field(:country)) %> | ||
10 | 17 | ||
11 | <%= submit_tag _('Save') %> | 18 | <%= submit_tag _('Save') %> |
12 | 19 |
db/migrate/003_create_profiles.rb
@@ -5,7 +5,7 @@ class CreateProfiles < ActiveRecord::Migration | @@ -5,7 +5,7 @@ class CreateProfiles < ActiveRecord::Migration | ||
5 | t.column :type, :string | 5 | t.column :type, :string |
6 | t.column :identifier, :string | 6 | t.column :identifier, :string |
7 | t.column :environment_id, :integer | 7 | t.column :environment_id, :integer |
8 | - t.column :design_data, :text | 8 | + t.column :design_data, :text |
9 | 9 | ||
10 | t.column :active, :boolean, :default => true | 10 | t.column :active, :boolean, :default => true |
11 | t.column :address, :string | 11 | t.column :address, :string |
db/migrate/010_create_person_infos.rb
1 | class CreatePersonInfos < ActiveRecord::Migration | 1 | class CreatePersonInfos < ActiveRecord::Migration |
2 | def self.up | 2 | def self.up |
3 | create_table :person_infos do |t| | 3 | create_table :person_infos do |t| |
4 | - t.column :name, :string | ||
5 | - t.column :photo, :text | ||
6 | - t.column :address, :text | 4 | + t.column :name, :string |
5 | + t.column :photo, :text | ||
7 | t.column :contact_information, :text | 6 | t.column :contact_information, :text |
7 | + t.column :birth_date, :date | ||
8 | + t.column :sex, :string | ||
9 | + t.column :address, :text | ||
10 | + t.column :city, :string | ||
11 | + t.column :state, :string | ||
12 | + t.column :country, :string | ||
8 | 13 | ||
9 | - t.column :person_id, :integer | 14 | + t.column :created_at, :datetime |
15 | + t.column :updated_at, :datetime | ||
16 | + t.column :person_id, :integer | ||
10 | end | 17 | end |
11 | end | 18 | end |
12 | 19 |
test/integration/routing_test.rb
@@ -83,6 +83,9 @@ class RoutingTest < ActionController::IntegrationTest | @@ -83,6 +83,9 @@ class RoutingTest < ActionController::IntegrationTest | ||
83 | def test_routing_to_controllers_inside_design_blocks_directory | 83 | def test_routing_to_controllers_inside_design_blocks_directory |
84 | assert_routing('/block/cojones/favorite_links_profile/show/1', :profile => 'cojones', :controller => 'favorite_links_profile', :action => 'show', :id => '1') | 84 | assert_routing('/block/cojones/favorite_links_profile/show/1', :profile => 'cojones', :controller => 'favorite_links_profile', :action => 'show', :id => '1') |
85 | assert_routing('/block/cojones/favorite_links_profile/save', :profile => 'cojones', :controller => 'favorite_links_profile', :action => 'save') | 85 | assert_routing('/block/cojones/favorite_links_profile/save', :profile => 'cojones', :controller => 'favorite_links_profile', :action => 'save') |
86 | + assert_routing('/block/environment/favorite_links_profile/design_editor_destroy_block', :controller => 'favorite_links_profile', :action => 'design_editor_destroy_block' ) | ||
87 | + | ||
88 | + assert_routing('/block/cojones/list_block/show/1', :profile => 'cojones', :controller => 'list_block', :action => 'show', :id => '1') | ||
86 | end | 89 | end |
87 | 90 | ||
88 | def test_tag_viewing | 91 | def test_tag_viewing |