Commit fec8c9a75a96a97cea1dedc2eb8eb7c6cd6c4b4e
Exists in
master
and in
22 other branches
Merge commit 'refs/merge-requests/295' of git://gitorious.org/noosfero/noosfero …
…into merge-requests/295
Showing
7 changed files
with
121 additions
and
10 deletions
Show diff stats
app/helpers/application_helper.rb
| @@ -1114,7 +1114,8 @@ module ApplicationHelper | @@ -1114,7 +1114,8 @@ module ApplicationHelper | ||
| 1114 | end | 1114 | end |
| 1115 | 1115 | ||
| 1116 | def manage_enterprises | 1116 | def manage_enterprises |
| 1117 | - if user && !user.enterprises.empty? | 1117 | + return if not user |
| 1118 | + if !user.enterprises.empty? | ||
| 1118 | enterprises_link = user.enterprises.map do |enterprise| | 1119 | enterprises_link = user.enterprises.map do |enterprise| |
| 1119 | link_to(content_tag('strong', [_('<span>Manage</span> %s') % enterprise.short_name(25)]), @environment.top_url + "/myprofile/#{enterprise.identifier}", :class => "icon-menu-"+enterprise.class.identification.underscore, :title => [_('Manage %s') % enterprise.short_name]) | 1120 | link_to(content_tag('strong', [_('<span>Manage</span> %s') % enterprise.short_name(25)]), @environment.top_url + "/myprofile/#{enterprise.identifier}", :class => "icon-menu-"+enterprise.class.identification.underscore, :title => [_('Manage %s') % enterprise.short_name]) |
| 1120 | end | 1121 | end |
| @@ -1122,6 +1123,17 @@ module ApplicationHelper | @@ -1122,6 +1123,17 @@ module ApplicationHelper | ||
| 1122 | end | 1123 | end |
| 1123 | end | 1124 | end |
| 1124 | 1125 | ||
| 1126 | + def manage_communities | ||
| 1127 | + return if not user | ||
| 1128 | + administered_communities = user.communities.select {|c| c.admins.include? user} | ||
| 1129 | + if !administered_communities.empty? | ||
| 1130 | + communities_link = administered_communities.map do |community| | ||
| 1131 | + link_to(content_tag('strong', [_('<span>Manage</span> %s') % community.short_name(25)]), @environment.top_url + "/myprofile/#{community.identifier}", :class => "icon-menu-"+community.class.identification.underscore, :title => [_('Manage %s') % community.short_name]) | ||
| 1132 | + end | ||
| 1133 | + render :partial => 'shared/manage_communities', :locals => {:communities_link => communities_link} | ||
| 1134 | + end | ||
| 1135 | + end | ||
| 1136 | + | ||
| 1125 | def usermenu_logged_in | 1137 | def usermenu_logged_in |
| 1126 | pending_tasks_count = '' | 1138 | pending_tasks_count = '' |
| 1127 | count = user ? Task.to(user).pending.count : -1 | 1139 | count = user ? Task.to(user).pending.count : -1 |
| @@ -1133,6 +1145,7 @@ module ApplicationHelper | @@ -1133,6 +1145,7 @@ module ApplicationHelper | ||
| 1133 | render_environment_features(:usermenu) + | 1145 | render_environment_features(:usermenu) + |
| 1134 | link_to('<i class="icon-menu-admin"></i><strong>' + _('Administration') + '</strong>', @environment.top_url + '/admin', :id => "controlpanel", :title => _("Configure the environment"), :class => 'admin-link', :style => 'display: none') + | 1146 | link_to('<i class="icon-menu-admin"></i><strong>' + _('Administration') + '</strong>', @environment.top_url + '/admin', :id => "controlpanel", :title => _("Configure the environment"), :class => 'admin-link', :style => 'display: none') + |
| 1135 | manage_enterprises.to_s + | 1147 | manage_enterprises.to_s + |
| 1148 | + manage_communities.to_s + | ||
| 1136 | link_to('<i class="icon-menu-ctrl-panel"></i><strong>' + _('Control panel') + '</strong>', @environment.top_url + '/myprofile/{login}', :id => "controlpanel", :title => _("Configure your personal account and content")) + | 1149 | link_to('<i class="icon-menu-ctrl-panel"></i><strong>' + _('Control panel') + '</strong>', @environment.top_url + '/myprofile/{login}', :id => "controlpanel", :title => _("Configure your personal account and content")) + |
| 1137 | pending_tasks_count + | 1150 | pending_tasks_count + |
| 1138 | link_to('<i class="icon-menu-logout"></i><strong>' + _('Logout') + '</strong>', { :controller => 'account', :action => 'logout'} , :id => "logout", :title => _("Leave the system")) | 1151 | link_to('<i class="icon-menu-logout"></i><strong>' + _('Logout') + '</strong>', { :controller => 'account', :action => 'logout'} , :id => "logout", :title => _("Leave the system")) |
| @@ -0,0 +1,8 @@ | @@ -0,0 +1,8 @@ | ||
| 1 | +<div id="manage-communities" class="manage-groups"> | ||
| 2 | + <a href="#" id="manage-communities-link" class="simplemenu-trigger" title="<%= _('Manage communities') %>"><i class="icon-menu-community"></i><strong><%= ui_icon('ui-icon-triangle-1-s') + _('My communities') %></strong></a> | ||
| 3 | + <ul class="simplemenu-submenu"> | ||
| 4 | + <% communities_link.each do |link| %> | ||
| 5 | + <li class="simplemenu-item"><%= link %></li> | ||
| 6 | + <% end %> | ||
| 7 | + </ul> | ||
| 8 | +</div> |
app/views/shared/_manage_enterprises.rhtml
| 1 | -<div id='manage-enterprises'> | ||
| 2 | - <a href="#" id='manage-enterprises-link' class='simplemenu-trigger' title='<%= _('Manage enterprises') %>'><i class="icon-menu-enterprise"></i><strong><%= ui_icon('ui-icon-triangle-1-s') + _('My enterprises') %></strong></a> | ||
| 3 | - <ul class='simplemenu-submenu'> | 1 | +<div id="manage-enterprises" class="manage-groups"> |
| 2 | + <a href="#" id="manage-enterprises-link" class="simplemenu-trigger" title="<%= _('Manage enterprises') %>"><i class="icon-menu-enterprise"></i><strong><%= ui_icon('ui-icon-triangle-1-s') + _('My enterprises') %></strong></a> | ||
| 3 | + <ul class="simplemenu-submenu"> | ||
| 4 | <% enterprises_link.each do |link| %> | 4 | <% enterprises_link.each do |link| %> |
| 5 | - <li class='simplemenu-item'><%= link %></li> | 5 | + <li class="simplemenu-item"><%= link %></li> |
| 6 | <% end %> | 6 | <% end %> |
| 7 | </ul> | 7 | </ul> |
| 8 | </div> | 8 | </div> |
public/designs/themes/base/style.css
| @@ -89,7 +89,7 @@ body, th, td, input { | @@ -89,7 +89,7 @@ body, th, td, input { | ||
| 89 | color: #555753; | 89 | color: #555753; |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | -#controlpanel, #logout, #openchat, #manage-enterprises { | 92 | +#controlpanel, #logout, #openchat, .manage-groups { |
| 93 | margin-left: 25px; | 93 | margin-left: 25px; |
| 94 | } | 94 | } |
| 95 | 95 |
public/javascripts/application.js
| @@ -709,7 +709,7 @@ jQuery(function($) { | @@ -709,7 +709,7 @@ jQuery(function($) { | ||
| 709 | document.location.href = this.href; | 709 | document.location.href = this.href; |
| 710 | }) | 710 | }) |
| 711 | } | 711 | } |
| 712 | - $('#manage-enterprises-link').live('click', function() { | 712 | + $('.manage-groups > a').live('click', function() { |
| 713 | toggleMenu(this); | 713 | toggleMenu(this); |
| 714 | return false; | 714 | return false; |
| 715 | }); | 715 | }); |
public/stylesheets/application.css
| @@ -882,6 +882,40 @@ code input { | @@ -882,6 +882,40 @@ code input { | ||
| 882 | .webkit #manage-enterprises .simplemenu-submenu { | 882 | .webkit #manage-enterprises .simplemenu-submenu { |
| 883 | top: 20px; | 883 | top: 20px; |
| 884 | } | 884 | } |
| 885 | +#manage-communities { | ||
| 886 | + display: inline-block; | ||
| 887 | + margin-right: 5px; | ||
| 888 | + position: relative; | ||
| 889 | +} | ||
| 890 | +#manage-communities .ui-icon { | ||
| 891 | + position: absolute; | ||
| 892 | + top: 0; | ||
| 893 | + right: -20px; | ||
| 894 | +} | ||
| 895 | +#manage-communities .simplemenu-submenu { | ||
| 896 | + text-align: left; | ||
| 897 | + left: -20px; | ||
| 898 | + width: 200px; | ||
| 899 | +} | ||
| 900 | +#manage-communities .simplemenu-item { | ||
| 901 | + padding: 5px 0; | ||
| 902 | +} | ||
| 903 | +#manage-communities .simplemenu-item a { | ||
| 904 | + background-repeat: no-repeat; | ||
| 905 | + padding-left: 20px; | ||
| 906 | +} | ||
| 907 | +#manage-communities .simplemenu-item a span { | ||
| 908 | + display: none; | ||
| 909 | +} | ||
| 910 | +.msie8 #manage-communities-link { /* IE8 hack */ | ||
| 911 | + border: 0px solid; | ||
| 912 | +} | ||
| 913 | +.msie8 #manage-communities .simplemenu-submenu { | ||
| 914 | + top: 16px; | ||
| 915 | +} | ||
| 916 | +.webkit #manage-communities .simplemenu-submenu { | ||
| 917 | + top: 20px; | ||
| 918 | +} | ||
| 885 | #article { | 919 | #article { |
| 886 | position: relative; | 920 | position: relative; |
| 887 | text-align: justify; | 921 | text-align: justify; |
test/functional/profile_controller_test.rb
| @@ -96,7 +96,7 @@ class ProfileControllerTest < ActionController::TestCase | @@ -96,7 +96,7 @@ class ProfileControllerTest < ActionController::TestCase | ||
| 96 | end | 96 | end |
| 97 | 97 | ||
| 98 | should 'not show enterprises link to enterprise' do | 98 | should 'not show enterprises link to enterprise' do |
| 99 | - ent = fast_create(Enterprise, :identifier => 'test_enterprise1', :name => 'Test enteprise1') | 99 | + ent = fast_create(Enterprise, :identifier => 'test_enterprise1', :name => 'Test enterprise1') |
| 100 | get :index, :profile => ent.identifier | 100 | get :index, :profile => ent.identifier |
| 101 | assert_no_tag :tag => 'a', :content => 'Enterprises', :attributes => { :href => /profile\/#{ent.identifier}\/enterprises$/ } | 101 | assert_no_tag :tag => 'a', :content => 'Enterprises', :attributes => { :href => /profile\/#{ent.identifier}\/enterprises$/ } |
| 102 | end | 102 | end |
| @@ -561,7 +561,7 @@ class ProfileControllerTest < ActionController::TestCase | @@ -561,7 +561,7 @@ class ProfileControllerTest < ActionController::TestCase | ||
| 561 | assert_response 403 | 561 | assert_response 403 |
| 562 | end | 562 | end |
| 563 | 563 | ||
| 564 | - should 'allow environment admin to unblock enteprises' do | 564 | + should 'allow environment admin to unblock enterprises' do |
| 565 | login_as(profile.identifier) | 565 | login_as(profile.identifier) |
| 566 | enterprise = fast_create(Enterprise) | 566 | enterprise = fast_create(Enterprise) |
| 567 | enterprise.environment.add_admin(profile) | 567 | enterprise.environment.add_admin(profile) |
| @@ -882,7 +882,7 @@ class ProfileControllerTest < ActionController::TestCase | @@ -882,7 +882,7 @@ class ProfileControllerTest < ActionController::TestCase | ||
| 882 | assert_template 'index' | 882 | assert_template 'index' |
| 883 | end | 883 | end |
| 884 | 884 | ||
| 885 | - should 'the network activity be visible to uses not logged in on communities and enteprises' do | 885 | + should 'the network activity be visible to uses not logged in on communities and enterprises' do |
| 886 | p1= Person.first | 886 | p1= Person.first |
| 887 | community = fast_create(Community) | 887 | community = fast_create(Community) |
| 888 | p2= fast_create(Person) | 888 | p2= fast_create(Person) |
| @@ -1550,4 +1550,60 @@ class ProfileControllerTest < ActionController::TestCase | @@ -1550,4 +1550,60 @@ class ProfileControllerTest < ActionController::TestCase | ||
| 1550 | assert_tag :tag => 'td', :content => 'e-Mail:' | 1550 | assert_tag :tag => 'td', :content => 'e-Mail:' |
| 1551 | end | 1551 | end |
| 1552 | 1552 | ||
| 1553 | + should 'build menu to the community panel' do | ||
| 1554 | + u = create_user('other_other_ze').person | ||
| 1555 | + u2 = create_user('guy_that_will_be_admin_of_all').person # because the first member of each community is an admin | ||
| 1556 | + Environment.any_instance.stubs(:required_person_fields).returns([]) | ||
| 1557 | + u.data = { :email => 'test@test.com', :fields_privacy => { } } | ||
| 1558 | + u.save! | ||
| 1559 | + c1 = Community.create!(:name => 'community_1') | ||
| 1560 | + c2 = Community.create!(:name => 'community_2') | ||
| 1561 | + c3 = Community.create!(:name => 'community_3') | ||
| 1562 | + c4 = Community.create!(:name => 'community_4') | ||
| 1563 | + | ||
| 1564 | + c1.add_admin(u2) | ||
| 1565 | + c2.add_admin(u2) | ||
| 1566 | + c3.add_admin(u2) | ||
| 1567 | + | ||
| 1568 | + c1.add_member(u) | ||
| 1569 | + c2.add_member(u) | ||
| 1570 | + c3.add_member(u) | ||
| 1571 | + c1.add_admin(u) | ||
| 1572 | + c2.add_admin(u) | ||
| 1573 | + | ||
| 1574 | + login_as(u.identifier) | ||
| 1575 | + | ||
| 1576 | + get :index | ||
| 1577 | + | ||
| 1578 | + assert_tag :tag => 'div', :attributes => {:id => 'manage-communities'} | ||
| 1579 | + assert_select '#manage-communities li > a' do |links| | ||
| 1580 | + assert_equal 2, links.length | ||
| 1581 | + assert_match /community_1/, links.to_s | ||
| 1582 | + assert_match /community_2/, links.to_s | ||
| 1583 | + assert_no_match /community_3/, links.to_s | ||
| 1584 | + assert_no_match /community_4/, links.to_s | ||
| 1585 | + end | ||
| 1586 | + end | ||
| 1587 | + | ||
| 1588 | + should 'build menu to the enterprise panel' do | ||
| 1589 | + u = create_user('other_other_ze').person | ||
| 1590 | + Environment.any_instance.stubs(:required_person_fields).returns([]) | ||
| 1591 | + u.data = { :email => 'test@test.com', :fields_privacy => { } } | ||
| 1592 | + u.save! | ||
| 1593 | + e1 = fast_create(Enterprise, :identifier => 'test_enterprise1', :name => 'Test enterprise1') | ||
| 1594 | + e2 = fast_create(Enterprise, :identifier => 'test_enterprise2', :name => 'Test enterprise2') | ||
| 1595 | + | ||
| 1596 | + e1.add_member(u) | ||
| 1597 | + | ||
| 1598 | + login_as(u.identifier) | ||
| 1599 | + | ||
| 1600 | + get :index | ||
| 1601 | + | ||
| 1602 | + assert_tag :tag => 'div', :attributes => {:id => 'manage-enterprises'} | ||
| 1603 | + assert_select '#manage-enterprises li > a' do |links| | ||
| 1604 | + assert_equal 1, links.length | ||
| 1605 | + assert_match /Test enterprise1/, links.to_s | ||
| 1606 | + assert_no_match /Test enterprise_2/, links.to_s | ||
| 1607 | + end | ||
| 1608 | + end | ||
| 1553 | end | 1609 | end |