Commit 0a187954dba951cd2d9288f7974131f106416e6c
Exists in
master
and in
29 other branches
Merge branch 'master' of https://gitlab.com/noosfero/noosfero
Showing
11 changed files
with
152 additions
and
48 deletions
Show diff stats
app/helpers/box_organizer_helper.rb
... | ... | @@ -4,4 +4,10 @@ module BoxOrganizerHelper |
4 | 4 | render :partial => 'icon_selector', :locals => { :icon => icon } |
5 | 5 | end |
6 | 6 | |
7 | -end | |
7 | + def extra_option_checkbox(option) | |
8 | + if [:human_name, :name, :value, :checked, :options].all? {|k| option.key? k} | |
9 | + labelled_check_box(option[:human_name], option[:name], option[:value], option[:checked], option[:options]) | |
10 | + end | |
11 | + end | |
12 | + | |
13 | +end | |
8 | 14 | \ No newline at end of file | ... | ... |
app/models/members_block.rb
1 | 1 | class MembersBlock < ProfileListBlock |
2 | + settings_items :show_join_leave_button, :type => :boolean, :default => false | |
2 | 3 | |
3 | 4 | def self.description |
4 | 5 | _('Members') |
... | ... | @@ -14,8 +15,10 @@ class MembersBlock < ProfileListBlock |
14 | 15 | |
15 | 16 | def footer |
16 | 17 | profile = self.owner |
18 | + s = show_join_leave_button | |
19 | + | |
17 | 20 | lambda do |
18 | - link_to _('View all'), :profile => profile.identifier, :controller => 'profile', :action => 'members' | |
21 | + render :file => 'blocks/members', :locals => { :profile => profile, :show_join_leave_button => s} | |
19 | 22 | end |
20 | 23 | end |
21 | 24 | |
... | ... | @@ -23,4 +26,14 @@ class MembersBlock < ProfileListBlock |
23 | 26 | owner.members |
24 | 27 | end |
25 | 28 | |
29 | + def extra_option | |
30 | + data = { | |
31 | + :human_name => _("Show join leave button"), | |
32 | + :name => 'block[show_join_leave_button]', | |
33 | + :value => true, | |
34 | + :checked => show_join_leave_button, | |
35 | + :options => {} | |
36 | + } | |
37 | + end | |
38 | + | |
26 | 39 | end | ... | ... |
app/models/profile_list_block.rb
app/views/blocks/profile_info_actions/_join_leave_community.rhtml
0 → 100644
... | ... | @@ -0,0 +1,29 @@ |
1 | +<div class='join-leave-button'> | |
2 | + <% if logged_in? %> | |
3 | + <% if profile.members.include?(user) %> | |
4 | + <%= button(:delete, content_tag('span', __('Leave community')), profile.leave_url, | |
5 | + :class => 'leave-community', | |
6 | + :title => _("Leave community"), | |
7 | + :style => 'position: relative;') %> | |
8 | + <%= button(:add, content_tag('span', __('Join')), profile.join_url, | |
9 | + :class => 'join-community', | |
10 | + :title => _("Join community"), | |
11 | + :style => 'position: relative; display: none;') %> | |
12 | + <% else %> | |
13 | + <% unless profile.already_request_membership?(user) %> | |
14 | + <%= button(:delete, content_tag('span', __('Leave community')), profile.leave_url, | |
15 | + :class => 'leave-community', | |
16 | + :title => _("Leave community"), | |
17 | + :style => 'position: relative; display: none;') %> | |
18 | + <%= button(:add, content_tag('span', __('Join')), profile.join_url, | |
19 | + :class => 'join-community', | |
20 | + :title => _("Join community"), | |
21 | + :style => 'position: relative;') %> | |
22 | + <% end %> | |
23 | + <% end %> | |
24 | + <% else %> | |
25 | + <%= link_to content_tag('span', _('Join')), profile.join_not_logged_url, | |
26 | + :class => 'button with-text icon-add', | |
27 | + :title => _('Join this community') %> | |
28 | + <% end %> | |
29 | +</div> | ... | ... |
app/views/blocks/profile_info_actions/community.rhtml
1 | 1 | <ul> |
2 | + <li> | |
3 | + <%= render "blocks/profile_info_actions/join_leave_community" %> | |
4 | + </li> | |
2 | 5 | <% if logged_in? %> |
3 | - <% if profile.members.include?(user) %> | |
4 | - <li> | |
5 | - <%= button(:delete, content_tag('span', __('Leave community')), profile.leave_url, | |
6 | - :class => 'leave-community', | |
7 | - :title => _("Leave community"), | |
8 | - :style => 'position: relative;') %> | |
9 | - <%= button(:add, content_tag('span', __('Join')), profile.join_url, | |
10 | - :class => 'join-community', | |
11 | - :title => _("Join community"), | |
12 | - :style => 'position: relative; display: none;') %> | |
13 | - </li> | |
14 | - <% else %> | |
15 | - <% unless profile.already_request_membership?(user) %> | |
16 | - <li> | |
17 | - <%= button(:delete, content_tag('span', __('Leave community')), profile.leave_url, | |
18 | - :class => 'leave-community', | |
19 | - :title => _("Leave community"), | |
20 | - :style => 'position: relative; display: none;') %> | |
21 | - <%= button(:add, content_tag('span', __('Join')), profile.join_url, | |
22 | - :class => 'join-community', | |
23 | - :title => _("Join community"), | |
24 | - :style => 'position: relative;') %> | |
25 | - </li> | |
26 | - <% end %> | |
27 | - <% end %> | |
28 | - | |
29 | 6 | <% if profile.enable_contact? %> |
30 | 7 | <li> |
31 | 8 | <%= link_to content_tag('span', _('Send an e-mail')), |
... | ... | @@ -39,11 +16,5 @@ |
39 | 16 | <li><%= report_abuse(profile, :button) %></li> |
40 | 17 | |
41 | 18 | <%= render_environment_features(:profile_actions) %> |
42 | - <% else %> | |
43 | - <li> | |
44 | - <%= link_to content_tag('span', _('Join')), profile.join_not_logged_url, | |
45 | - :class => 'button with-text icon-add', | |
46 | - :title => _('Join this community') %> | |
47 | - </li> | |
48 | 19 | <% end %> |
49 | 20 | -</ul> |
21 | +</ul> | |
50 | 22 | \ No newline at end of file | ... | ... |
app/views/box_organizer/_profile_list_block.rhtml
... | ... | @@ -2,5 +2,8 @@ |
2 | 2 | <%= labelled_form_field _('Limit of items'), text_field(:block, :limit, :size => 3) %> |
3 | 3 | <%= check_box(:block, :prioritize_profiles_with_image) %> |
4 | 4 | <label for="block_prioritize_profiles_with_image"><%= _('Prioritize profiles with image') %></label> |
5 | -</div> | |
6 | 5 | |
6 | + <div> | |
7 | + <%= extra_option_checkbox(@block.extra_option) %> | |
8 | + </div> | |
9 | +</div> | |
7 | 10 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,55 @@ |
1 | +Feature: | |
2 | + In order to enter in a community | |
3 | + As a logged user | |
4 | + I want to enter in a community by 'join leave' button in members block | |
5 | + | |
6 | + Background: | |
7 | + Given the following users | |
8 | + | login | name | | |
9 | + | joaosilva | Joao Silva | | |
10 | + | mariasilva | Maria Silva | | |
11 | + And the following communities | |
12 | + | owner | identifier | name | | |
13 | + | joaosilva | sample-community | Sample Community | | |
14 | + And the following blocks | |
15 | + | owner | type | | |
16 | + | sample-community | MembersBlock | | |
17 | + And I am logged in as "joaosilva" | |
18 | + And I go to sample-community's control panel | |
19 | + And I follow "Edit sideboxes" | |
20 | + And I follow "Edit" within ".members-block" | |
21 | + And I check "Show join leave button" | |
22 | + And I press "Save" | |
23 | + | |
24 | + Scenario: a user can join in a community by members block's button | |
25 | + Given I am logged in as "mariasilva" | |
26 | + And I go to sample-community's homepage | |
27 | + When I follow "Join" within ".members-block" | |
28 | + And I go to mariasilva's control panel | |
29 | + And I follow "Manage my groups" | |
30 | + Then I should see "Sample Community" | |
31 | + | |
32 | + Scenario: a user can leave a community by members block's button | |
33 | + Given "Maria Silva" is a member of "Sample Community" | |
34 | + And I am logged in as "mariasilva" | |
35 | + When I go to sample-community's homepage | |
36 | + And I follow "Leave community" within ".members-block" | |
37 | + And I go to mariasilva's control panel | |
38 | + And I follow "Manage my groups" | |
39 | + Then I should not see "Sample Community" | |
40 | + | |
41 | + Scenario: a not logged in user can log in by members block's button | |
42 | + Given I am not logged in | |
43 | + When I go to sample-community's homepage | |
44 | + And I follow "Join" within ".members-block" | |
45 | + Then I should see "Username / Email" | |
46 | + | |
47 | + Scenario: the join-leave button do not appear if the checkbox show-join-leave-button is not checked | |
48 | + And I go to sample-community's control panel | |
49 | + And I follow "Edit sideboxes" | |
50 | + And I follow "Edit" within ".members-block" | |
51 | + And I uncheck "Show join leave button" | |
52 | + And I press "Save" | |
53 | + When I go to sample-community's homepage | |
54 | + Then I should not see "Join" within ".members-block" | |
55 | + And I should not see "Leave community" within ".members-block" | ... | ... |
public/designs/themes/base/style.css
... | ... | @@ -516,9 +516,31 @@ div#notice { |
516 | 516 | color: #000; |
517 | 517 | text-decoration: none; |
518 | 518 | padding-right: 15px; |
519 | +} | |
520 | +#content .tags-block .block-footer-content a, | |
521 | +#content .people-block .block-footer-content a, | |
522 | +#content .profile-list-block .block-footer-content a, | |
523 | +#content .enterprises-block .block-footer-content a, | |
524 | +#content .communities-block .block-footer-content a, | |
525 | +#content .friends-block .block-footer-content a { | |
519 | 526 | background: url(imgs/arrow-right-p.png) 100% 50% no-repeat; |
520 | 527 | } |
521 | 528 | |
529 | +#content .members-block .block-footer-content .join-leave-button a { | |
530 | + position: relative; | |
531 | + background-color: #EEE; | |
532 | + border: 1px solid #CCC; | |
533 | + color: #555; | |
534 | + padding-right: inherit; | |
535 | +} | |
536 | + | |
537 | +#content .members-block .block-footer-content .join-leave-button a:hover { | |
538 | + color: #FFF; | |
539 | + background-color: #555; | |
540 | + border: 1px solid #2e3436; | |
541 | + text-decoration: none; | |
542 | +} | |
543 | + | |
522 | 544 | #content .profile-list-block .block-title { |
523 | 545 | text-align: left; |
524 | 546 | } | ... | ... |
public/javascripts/add-and-join.js
... | ... | @@ -12,7 +12,7 @@ jQuery(function($) { |
12 | 12 | }) |
13 | 13 | |
14 | 14 | $(".join-community").live('click', function(){ |
15 | - clicked = $(this) | |
15 | + clicked = $(".join-community"); | |
16 | 16 | url = clicked.attr("href"); |
17 | 17 | loading_for_button(this); |
18 | 18 | $.post(url, function(data){ |
... | ... | @@ -29,7 +29,7 @@ jQuery(function($) { |
29 | 29 | }) |
30 | 30 | |
31 | 31 | $(".leave-community").live('click', function(){ |
32 | - clicked = $(this) | |
32 | + clicked = $(".leave-community"); | |
33 | 33 | url = clicked.attr("href"); |
34 | 34 | loading_for_button(this); |
35 | 35 | $.post(url, function(data){ | ... | ... |
test/unit/members_block_test.rb
... | ... | @@ -14,16 +14,13 @@ class MembersBlockTest < ActiveSupport::TestCase |
14 | 14 | assert_not_equal ProfileListBlock.new.default_title, MembersBlock.new.default_title |
15 | 15 | end |
16 | 16 | |
17 | - should 'link to "all members" page' do | |
18 | - profile = create_user('mytestuser').person | |
19 | - block = MembersBlock.new | |
20 | - block.box = profile.boxes.first | |
21 | - block.save! | |
22 | - | |
23 | - expects(:_).with('View all').returns('View all') | |
24 | - expects(:link_to).with('View all' , :profile => 'mytestuser', :controller => 'profile', :action => 'members').returns('link-to-members') | |
17 | + should 'display members file' do | |
18 | + community = fast_create(Community) | |
19 | + block = MembersBlock.create | |
20 | + block.expects(:owner).returns(community) | |
25 | 21 | |
26 | - assert_equal 'link-to-members', instance_eval(&block.footer) | |
22 | + self.expects(:render).with(:file => 'blocks/members', :locals => { :profile => community, :show_join_leave_button => false}).returns('file-with-members-list') | |
23 | + assert_equal 'file-with-members-list', instance_eval(&block.footer) | |
27 | 24 | end |
28 | 25 | |
29 | 26 | should 'pick random members' do |
... | ... | @@ -39,4 +36,3 @@ class MembersBlockTest < ActiveSupport::TestCase |
39 | 36 | end |
40 | 37 | |
41 | 38 | end |
42 | - | ... | ... |