Commit 13ed467bf487418e3a73a2267974e39753bbce4e
Committed by
Antonio Terceiro
1 parent
b8d2a3be
Exists in
master
and in
29 other branches
ActionItem1043: blocks enhancements
* changed 'all <profile>' to simply 'view all' * adding number to profile list blocks title * added mebers info to communities block
Showing
17 changed files
with
174 additions
and
24 deletions
Show diff stats
app/helpers/application_helper.rb
... | ... | @@ -454,6 +454,23 @@ module ApplicationHelper |
454 | 454 | :class => 'vcard' |
455 | 455 | end |
456 | 456 | |
457 | + # displays a link to the community homepage with its image (as generated by | |
458 | + # #profile_image) and its name and number of members beside it. | |
459 | + def community_image_link( profile, size=:portrait, tag='li' ) | |
460 | + name = profile.short_name | |
461 | + content_tag tag, | |
462 | + link_to( | |
463 | + content_tag( 'span', profile_image( profile, size ), :class => 'profile-image' ) + | |
464 | + content_tag( 'span', name, :class => 'org' ) + | |
465 | + content_tag( 'span', n_('1 member', '%s members', profile.members.count) % profile.members.count, :class => 'community-member-count' ), | |
466 | + profile.url, | |
467 | + :onclick => 'document.location.href = this.href', # work-arround for ie. | |
468 | + :class => 'profile_link url', | |
469 | + :help => _('Click on this icon to go to the <b>%s</b>\'s home page') % profile.name, | |
470 | + :title => profile.name ), | |
471 | + :class => 'vcard' | |
472 | + end | |
473 | + | |
457 | 474 | def gravatar_url_for(email, options = {}) |
458 | 475 | # Ta dando erro de roteamento |
459 | 476 | url_for( { :gravatar_id => Digest::MD5.hexdigest(email), | ... | ... |
app/models/block.rb
app/models/communities_block.rb
1 | 1 | class CommunitiesBlock < ProfileListBlock |
2 | 2 | |
3 | + settings_items :limit, :default => 3 | |
4 | + | |
3 | 5 | def self.description |
4 | 6 | __('A block that displays your communities') |
5 | 7 | end |
6 | 8 | |
7 | 9 | def default_title |
8 | - __('Communities') | |
10 | + __('{#} communities') | |
11 | + end | |
12 | + | |
13 | + def profile_image_link_method | |
14 | + :community_image_link | |
9 | 15 | end |
10 | 16 | |
11 | 17 | def help |
... | ... | @@ -17,17 +23,21 @@ class CommunitiesBlock < ProfileListBlock |
17 | 23 | case owner |
18 | 24 | when Profile |
19 | 25 | lambda do |
20 | - link_to __('See all'), :profile => owner.identifier, :controller => 'profile', :action => 'communities' | |
26 | + link_to __('View all'), :profile => owner.identifier, :controller => 'profile', :action => 'communities' | |
21 | 27 | end |
22 | 28 | when Environment |
23 | 29 | lambda do |
24 | - link_to __('See all'), :controller => 'search', :action => 'assets', :asset => 'communities' | |
30 | + link_to __('View all'), :controller => 'search', :action => 'assets', :asset => 'communities' | |
25 | 31 | end |
26 | 32 | else |
27 | 33 | '' |
28 | 34 | end |
29 | 35 | end |
30 | 36 | |
37 | + def profile_count | |
38 | + owner.communities.count | |
39 | + end | |
40 | + | |
31 | 41 | def profile_finder |
32 | 42 | @profile_finder ||= CommunitiesBlock::Finder.new(self) |
33 | 43 | end | ... | ... |
app/models/enterprises_block.rb
1 | 1 | class EnterprisesBlock < ProfileListBlock |
2 | 2 | |
3 | 3 | def default_title |
4 | - __('Enterprises') | |
4 | + __('{#} enterprises') | |
5 | 5 | end |
6 | 6 | |
7 | 7 | def help |
... | ... | @@ -17,17 +17,20 @@ class EnterprisesBlock < ProfileListBlock |
17 | 17 | case owner |
18 | 18 | when Profile |
19 | 19 | lambda do |
20 | - link_to __('See all'), :profile => owner.identifier, :controller => 'profile', :action => 'enterprises' | |
20 | + link_to __('View all'), :profile => owner.identifier, :controller => 'profile', :action => 'enterprises' | |
21 | 21 | end |
22 | 22 | when Environment |
23 | 23 | lambda do |
24 | - link_to __('See all'), :controller => 'search', :action => 'assets', :asset => 'enterprises' | |
24 | + link_to __('View all'), :controller => 'search', :action => 'assets', :asset => 'enterprises' | |
25 | 25 | end |
26 | 26 | else |
27 | 27 | '' |
28 | 28 | end |
29 | 29 | end |
30 | 30 | |
31 | + def profile_count | |
32 | + owner.enterprises.count | |
33 | + end | |
31 | 34 | |
32 | 35 | def profile_finder |
33 | 36 | @profile_finder ||= EnterprisesBlock::Finder.new(self) | ... | ... |
app/models/favorite_enterprises_block.rb
... | ... | @@ -16,10 +16,13 @@ class FavoriteEnterprisesBlock < ProfileListBlock |
16 | 16 | owner = self.owner |
17 | 17 | return '' unless owner.kind_of?(Person) |
18 | 18 | lambda do |
19 | - link_to __('All favorite enterprises'), :profile => owner.identifier, :controller => 'profile', :action => 'favorite_enterprises' | |
19 | + link_to __('View all'), :profile => owner.identifier, :controller => 'profile', :action => 'favorite_enterprises' | |
20 | 20 | end |
21 | 21 | end |
22 | 22 | |
23 | + def profile_count | |
24 | + owner.favorite_enterprises.count | |
25 | + end | |
23 | 26 | |
24 | 27 | def profile_finder |
25 | 28 | @profile_finder ||= FavoriteEnterprisesBlock::Finder.new(self) | ... | ... |
app/models/friends_block.rb
... | ... | @@ -5,7 +5,7 @@ class FriendsBlock < ProfileListBlock |
5 | 5 | end |
6 | 6 | |
7 | 7 | def default_title |
8 | - __('Friends') | |
8 | + __('{#} friends') | |
9 | 9 | end |
10 | 10 | |
11 | 11 | def help |
... | ... | @@ -15,7 +15,7 @@ class FriendsBlock < ProfileListBlock |
15 | 15 | def footer |
16 | 16 | owner_id = owner.identifier |
17 | 17 | lambda do |
18 | - link_to __('See all'), :profile => owner_id, :controller => 'profile', :action => 'friends' | |
18 | + link_to __('View all'), :profile => owner_id, :controller => 'profile', :action => 'friends' | |
19 | 19 | end |
20 | 20 | end |
21 | 21 | |
... | ... | @@ -29,4 +29,8 @@ class FriendsBlock < ProfileListBlock |
29 | 29 | @profile_finder ||= FriendsBlock::Finder.new(self) |
30 | 30 | end |
31 | 31 | |
32 | + def profile_count | |
33 | + owner.friends.count | |
34 | + end | |
35 | + | |
32 | 36 | end | ... | ... |
app/models/members_block.rb
... | ... | @@ -5,7 +5,7 @@ class MembersBlock < ProfileListBlock |
5 | 5 | end |
6 | 6 | |
7 | 7 | def default_title |
8 | - _('Members') | |
8 | + _('{#} members') | |
9 | 9 | end |
10 | 10 | |
11 | 11 | def help |
... | ... | @@ -19,6 +19,10 @@ class MembersBlock < ProfileListBlock |
19 | 19 | end |
20 | 20 | end |
21 | 21 | |
22 | + def profile_count | |
23 | + owner.members.count | |
24 | + end | |
25 | + | |
22 | 26 | def profile_finder |
23 | 27 | @profile_finder ||= MembersBlock::Finder.new(self) |
24 | 28 | end | ... | ... |
app/models/people_block.rb
... | ... | @@ -24,7 +24,7 @@ class PeopleBlock < ProfileListBlock |
24 | 24 | |
25 | 25 | def footer |
26 | 26 | lambda do |
27 | - link_to _('All people'), :controller => 'search', :action => 'assets', :asset => 'people' | |
27 | + link_to _('View all'), :controller => 'search', :action => 'assets', :asset => 'people' | |
28 | 28 | end |
29 | 29 | end |
30 | 30 | ... | ... |
app/models/profile_list_block.rb
... | ... | @@ -52,7 +52,7 @@ class ProfileListBlock < Block |
52 | 52 | |
53 | 53 | # the title of the block. Probably will be overriden in subclasses. |
54 | 54 | def default_title |
55 | - _('People and Groups') | |
55 | + _('{#} People or Groups') | |
56 | 56 | end |
57 | 57 | |
58 | 58 | def help |
... | ... | @@ -61,13 +61,14 @@ class ProfileListBlock < Block |
61 | 61 | |
62 | 62 | def content |
63 | 63 | profiles = self.profiles |
64 | - title = self.title | |
64 | + title = self.view_title | |
65 | 65 | nl = "\n" |
66 | + link_method = profile_image_link_method | |
66 | 67 | lambda do |
67 | 68 | count=0 |
68 | 69 | list = profiles.map {|item| |
69 | 70 | count+=1 |
70 | - profile_image_link( item ) #+ | |
71 | + send(link_method, item ) #+ | |
71 | 72 | }.join("\n ") |
72 | 73 | if list.empty? |
73 | 74 | list = '<div class="common-profile-list-block-none">'+ _('None') +'</div>' |
... | ... | @@ -80,4 +81,16 @@ class ProfileListBlock < Block |
80 | 81 | end |
81 | 82 | end |
82 | 83 | |
84 | + def profile_image_link_method | |
85 | + :profile_image_link | |
86 | + end | |
87 | + | |
88 | + def view_title | |
89 | + title.gsub('{#}', profile_count.to_s) | |
90 | + end | |
91 | + | |
92 | + def profile_count #defined in children | |
93 | + 0 | |
94 | + end | |
95 | + | |
83 | 96 | end | ... | ... |
test/unit/block_test.rb
... | ... | @@ -46,6 +46,12 @@ class BlockTest < Test::Unit::TestCase |
46 | 46 | assert_equal 'my title', b.title |
47 | 47 | end |
48 | 48 | |
49 | + should 'have default view_title ' do | |
50 | + b = Block.new | |
51 | + b.expects(:title).returns('my title') | |
52 | + assert_equal 'my title', b.view_title | |
53 | + end | |
54 | + | |
49 | 55 | should 'have a visible setting' do |
50 | 56 | b = Block.new |
51 | 57 | assert b.visible? | ... | ... |
test/unit/communities_block_test.rb
... | ... | @@ -49,7 +49,7 @@ class CommunitiesBlockTest < Test::Unit::TestCase |
49 | 49 | block = CommunitiesBlock.new |
50 | 50 | block.expects(:owner).returns(profile) |
51 | 51 | |
52 | - expects(:__).with('All communities').returns('All communities') | |
52 | + expects(:__).with('View all').returns('All communities') | |
53 | 53 | expects(:link_to).with('All communities', :controller => 'profile', :profile => 'theprofile', :action => 'communities') |
54 | 54 | instance_eval(&block.footer) |
55 | 55 | end |
... | ... | @@ -59,7 +59,7 @@ class CommunitiesBlockTest < Test::Unit::TestCase |
59 | 59 | block = CommunitiesBlock.new |
60 | 60 | block.expects(:owner).returns(env) |
61 | 61 | |
62 | - expects(:__).with('All communities').returns('All communities') | |
62 | + expects(:__).with('View all').returns('All communities') | |
63 | 63 | expects(:link_to).with('All communities', :controller => 'search', :action => 'assets', :asset => 'communities') |
64 | 64 | |
65 | 65 | instance_eval(&block.footer) |
... | ... | @@ -86,4 +86,19 @@ class CommunitiesBlockTest < Test::Unit::TestCase |
86 | 86 | assert_equal [public_community], block.profiles |
87 | 87 | end |
88 | 88 | |
89 | + should 'count number of owner communities' do | |
90 | + user = create_user('testuser').person | |
91 | + | |
92 | + community1 = Community.create!(:name => 'test community 1', :identifier => 'comm1', :environment => Environment.default) | |
93 | + community1.add_member(user) | |
94 | + | |
95 | + community2 = Community.create!(:name => 'test community 2', :identifier => 'comm2', :environment => Environment.default) | |
96 | + community2.add_member(user) | |
97 | + | |
98 | + block = CommunitiesBlock.new | |
99 | + block.expects(:owner).at_least_once.returns(user) | |
100 | + | |
101 | + assert_equal 2, block.profile_count | |
102 | + end | |
103 | + | |
89 | 104 | end | ... | ... |
test/unit/enterprises_block_test.rb
... | ... | @@ -74,7 +74,7 @@ class EnterprisesBlockTest < Test::Unit::TestCase |
74 | 74 | block = EnterprisesBlock.new |
75 | 75 | block.expects(:owner).returns(profile) |
76 | 76 | |
77 | - expects(:__).with('All enterprises').returns('All enterprises') | |
77 | + expects(:__).with('View all').returns('All enterprises') | |
78 | 78 | expects(:link_to).with('All enterprises', :controller => 'profile', :profile => 'theprofile', :action => 'enterprises') |
79 | 79 | |
80 | 80 | instance_eval(&block.footer) |
... | ... | @@ -85,7 +85,7 @@ class EnterprisesBlockTest < Test::Unit::TestCase |
85 | 85 | block = EnterprisesBlock.new |
86 | 86 | block.expects(:owner).returns(env) |
87 | 87 | |
88 | - expects(:__).with('All enterprises').returns('All enterprises') | |
88 | + expects(:__).with('View all').returns('All enterprises') | |
89 | 89 | expects(:link_to).with('All enterprises', :controller => 'search', :action => 'assets', :asset => 'enterprises') |
90 | 90 | instance_eval(&block.footer) |
91 | 91 | end |
... | ... | @@ -96,4 +96,21 @@ class EnterprisesBlockTest < Test::Unit::TestCase |
96 | 96 | assert_equal '', block.footer |
97 | 97 | end |
98 | 98 | |
99 | + should 'count number of owner enterprises' do | |
100 | + user = create_user('testuser').person | |
101 | + | |
102 | + ent1 = Enterprise.create!(:name => 'test enterprise 1', :identifier => 'ent1', :environment => Environment.default) | |
103 | + ent1.expects(:closed?).returns(false) | |
104 | + ent1.add_member(user) | |
105 | + | |
106 | + ent2 = Enterprise.create!(:name => 'test enterprise 2', :identifier => 'ent2', :environment => Environment.default) | |
107 | + ent2.expects(:closed?).returns(false) | |
108 | + ent2.add_member(user) | |
109 | + | |
110 | + block = EnterprisesBlock.new | |
111 | + block.expects(:owner).at_least_once.returns(user) | |
112 | + | |
113 | + assert_equal 2, block.profile_count | |
114 | + end | |
115 | + | |
99 | 116 | end | ... | ... |
test/unit/favorite_enterprises_block_test.rb
... | ... | @@ -48,8 +48,8 @@ class FavoriteEnterprisesBlockTest < ActiveSupport::TestCase |
48 | 48 | block = FavoriteEnterprisesBlock.new |
49 | 49 | block.expects(:owner).returns(person) |
50 | 50 | |
51 | - expects(:__).with('All favorite enterprises').returns('All enterprises') | |
52 | - expects(:link_to).with('All enterprises', :controller => 'profile', :profile => 'theprofile', :action => 'favorite_enterprises') | |
51 | + expects(:__).with('View all').returns('View all enterprises') | |
52 | + expects(:link_to).with('View all enterprises', :controller => 'profile', :profile => 'theprofile', :action => 'favorite_enterprises') | |
53 | 53 | |
54 | 54 | instance_eval(&block.footer) |
55 | 55 | end |
... | ... | @@ -60,4 +60,19 @@ class FavoriteEnterprisesBlockTest < ActiveSupport::TestCase |
60 | 60 | assert_equal '', block.footer |
61 | 61 | end |
62 | 62 | |
63 | + should 'count number of owner favorite enterprises' do | |
64 | + user = create_user('testuser').person | |
65 | + | |
66 | + ent1 = Enterprise.create!(:name => 'test enterprise 1', :identifier => 'ent1', :environment => Environment.default) | |
67 | + | |
68 | + ent2 = Enterprise.create!(:name => 'test enterprise 2', :identifier => 'ent2', :environment => Environment.default) | |
69 | + | |
70 | + user.favorite_enterprises << [ent1, ent2] | |
71 | + | |
72 | + block = FavoriteEnterprisesBlock.new | |
73 | + block.expects(:owner).at_least_once.returns(user) | |
74 | + | |
75 | + assert_equal 2, block.profile_count | |
76 | + end | |
77 | + | |
63 | 78 | end | ... | ... |
test/unit/friends_block_test.rb
... | ... | @@ -39,9 +39,25 @@ class FriendsBlockTest < ActiveSupport::TestCase |
39 | 39 | |
40 | 40 | def self._(s); s; end |
41 | 41 | def self.gettext(s); s; end |
42 | - expects(:link_to).with('All friends', :profile => 'theuser', :controller => 'profile', :action => 'friends') | |
42 | + expects(:link_to).with('View all', :profile => 'theuser', :controller => 'profile', :action => 'friends') | |
43 | 43 | |
44 | 44 | instance_eval(&block.footer) |
45 | 45 | end |
46 | 46 | |
47 | + should 'count number of owner friends' do | |
48 | + p1 = create_user('testuser1').person | |
49 | + p2 = create_user('testuser2').person | |
50 | + p3 = create_user('testuser3').person | |
51 | + p4 = create_user('testuser4').person | |
52 | + | |
53 | + p1.add_friend(p2) | |
54 | + p1.add_friend(p3) | |
55 | + p1.add_friend(p4) | |
56 | + | |
57 | + block = FriendsBlock.new | |
58 | + block.expects(:owner).returns(p1) | |
59 | + | |
60 | + assert_equal 3, block.profile_count | |
61 | + end | |
62 | + | |
47 | 63 | end | ... | ... |
test/unit/members_block_test.rb
... | ... | @@ -52,4 +52,19 @@ class MembersBlockTest < Test::Unit::TestCase |
52 | 52 | assert_equal [member3, member1], block.profiles |
53 | 53 | end |
54 | 54 | |
55 | + should 'count number of owner members' do | |
56 | + profile = create_user('mytestuser').person | |
57 | + owner = mock | |
58 | + | |
59 | + member1 = mock; member1.stubs(:id).returns(1) | |
60 | + member2 = mock; member2.stubs(:id).returns(2) | |
61 | + member3 = mock; member3.stubs(:id).returns(3) | |
62 | + | |
63 | + owner.expects(:members).returns([member1, member2, member3]) | |
64 | + | |
65 | + block = MembersBlock.new | |
66 | + block.expects(:owner).returns(owner) | |
67 | + assert_equal 3, block.profile_count | |
68 | + end | |
55 | 69 | end |
70 | + | ... | ... |
test/unit/people_block_test.rb
... | ... | @@ -36,8 +36,8 @@ class PeopleBlockTest < ActiveSupport::TestCase |
36 | 36 | block = PeopleBlock.new |
37 | 37 | block.stubs(:owner).returns(Environment.default) |
38 | 38 | |
39 | - expects(:link_to).with('All people', :controller => 'search', :action => 'assets', :asset => 'people') | |
40 | - expects(:_).with('All people').returns('All people') | |
39 | + expects(:_).with('View all').returns('View all people') | |
40 | + expects(:link_to).with('View all people', :controller => 'search', :action => 'assets', :asset => 'people') | |
41 | 41 | instance_eval(&block.footer) |
42 | 42 | end |
43 | 43 | ... | ... |
test/unit/profile_list_block_test.rb
... | ... | @@ -67,5 +67,13 @@ class ProfileListBlockTest < Test::Unit::TestCase |
67 | 67 | assert_respond_to ProfileListBlock::Finder.new(nil), :pick_random |
68 | 68 | end |
69 | 69 | |
70 | - | |
70 | + should 'provide view_title' do | |
71 | + p = ProfileListBlock.new(:title => 'Title from block') | |
72 | + assert_equal 'Title from block', p.view_title | |
73 | + end | |
74 | + | |
75 | + should 'provide view title with variables' do | |
76 | + p = ProfileListBlock.new(:title => '{#} members') | |
77 | + assert_equal '0 members', p.view_title | |
78 | + end | |
71 | 79 | end | ... | ... |