Commit 13ed467bf487418e3a73a2267974e39753bbce4e
Committed by
Antonio Terceiro
1 parent
b8d2a3be
Exists in
staging
and in
42 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 | ... | ... |