Commit 40df430a3b31efc91336b18418193bdde52eb3fc
1 parent
fcad091d
Exists in
master
and in
27 other branches
profile_suggestions: group suggestions interface
Users can: * add a suggestion as community * remove a suggestion from list (ActionItem3234)
Showing
6 changed files
with
101 additions
and
1 deletions
Show diff stats
app/controllers/my_profile/memberships_controller.rb
... | ... | @@ -25,4 +25,19 @@ class MembershipsController < MyProfileController |
25 | 25 | return |
26 | 26 | end |
27 | 27 | end |
28 | + | |
29 | + def suggest | |
30 | + @suggestions = profile.suggested_communities.paginate(:per_page => 8, :page => params[:npage]) | |
31 | + end | |
32 | + | |
33 | + def remove_suggestion | |
34 | + @community = profile.suggested_communities.find_by_identifier(params[:id]) | |
35 | + redirect_to :action => 'suggest' unless @community | |
36 | + if @community && request.post? | |
37 | + suggestion = profile.profile_suggestions.find_by_suggestion_id @community.id | |
38 | + suggestion.disable | |
39 | + redirect_to :action => 'suggest' | |
40 | + end | |
41 | + end | |
42 | + | |
28 | 43 | end | ... | ... |
app/views/memberships/index.html.erb
... | ... | @@ -16,6 +16,8 @@ |
16 | 16 | <%= labelled_select(_('Filter')+': ', :filter_type, :first, :last, @filter, type_collection, :id => 'memberships_filter')%> |
17 | 17 | </p> |
18 | 18 | |
19 | +<p><%= link_to _('See some suggestions of communities...'), :action => 'suggest' %></p> | |
20 | + | |
19 | 21 | <% if @memberships.empty? %> |
20 | 22 | <p> |
21 | 23 | <em><%= _('No groups to list') %></em> | ... | ... |
... | ... | @@ -0,0 +1,40 @@ |
1 | +<div class='communities-suggestions'> | |
2 | + <h1><%= _("Communities suggestions for %s") % profile.name %></h1> | |
3 | + | |
4 | + <% button_bar do %> | |
5 | + <%= button(:back, _('Go to groups list'), :controller => 'memberships') %> | |
6 | + <% end %> | |
7 | + | |
8 | + <% if @suggestions.empty? %> | |
9 | + <p> | |
10 | + <em> | |
11 | + <%= _('You have no suggestions yet.') %> | |
12 | + <%= link_to _('Do you want to see communities in this environment?'), :controller => 'search', :action => 'assets', :asset => 'communities' %> | |
13 | + </em> | |
14 | + </p> | |
15 | + <% else %> | |
16 | + <ul class="profile-list"> | |
17 | + <% @suggestions.each do |suggestion| %> | |
18 | + <li> | |
19 | + <%= link_to_profile profile_image(suggestion) + '<br/>' + suggestion.short_name, | |
20 | + suggestion.identifier, :class => 'profile-link' %> | |
21 | + <div class="controll"> | |
22 | + <%= link_to content_tag('span',_('join')), | |
23 | + suggestion.join_url, | |
24 | + :class => 'button icon-add join-community', | |
25 | + :title => _("Join %s") % suggestion.name %> | |
26 | + <%= link_to content_tag('span',_('remove')), | |
27 | + { :action => 'remove_suggestion', :id => suggestion.identifier }, | |
28 | + :class => 'button icon-remove', | |
29 | + :title => _('Remove suggestion'), | |
30 | + :method => 'post', | |
31 | + :confirm => _('Are you sure you want to remove this suggestion?') %> | |
32 | + </div><!-- end class="controll" --> | |
33 | + </li> | |
34 | + <% end %> | |
35 | + </ul> | |
36 | + <% end %> | |
37 | + | |
38 | + <%= pagination_links @suggestions, :param_name => 'npage' %> | |
39 | + <br style="clear:both" /> | |
40 | +</div> | ... | ... |
public/javascripts/add-and-join.js
test/functional/memberships_controller_test.rb
... | ... | @@ -327,4 +327,42 @@ class MembershipsControllerTest < ActionController::TestCase |
327 | 327 | assert_includes assigns(:roles), role1 |
328 | 328 | assert_not_includes assigns(:roles), role2 |
329 | 329 | end |
330 | + | |
331 | + should 'display list suggestions button' do | |
332 | + community = fast_create(Community) | |
333 | + profile.profile_suggestions.create(:suggestion => community) | |
334 | + get :index, :profile => 'testuser' | |
335 | + assert_tag :tag => 'a', :content => 'See some suggestions of communities...', :attributes => { :href => "/myprofile/testuser/memberships/suggest" } | |
336 | + end | |
337 | + | |
338 | + should 'display communities suggestions' do | |
339 | + community = fast_create(Community) | |
340 | + profile.profile_suggestions.create(:suggestion => community) | |
341 | + get :suggest, :profile => 'testuser' | |
342 | + assert_tag :tag => 'a', :content => community.name, :attributes => { :href => "/profile/#{community.identifier}" } | |
343 | + end | |
344 | + | |
345 | + should 'display button to join on community suggestion' do | |
346 | + community = fast_create(Community) | |
347 | + profile.profile_suggestions.create(:suggestion => community) | |
348 | + get :suggest, :profile => 'testuser' | |
349 | + assert_tag :tag => 'a', :attributes => { :href => "/profile/#{community.identifier}/join" } | |
350 | + end | |
351 | + | |
352 | + should 'display button to remove community suggestion' do | |
353 | + community = fast_create(Community) | |
354 | + profile.profile_suggestions.create(:suggestion => community) | |
355 | + get :suggest, :profile => 'testuser' | |
356 | + assert_tag :tag => 'a', :attributes => { :href => "/myprofile/testuser/memberships/remove_suggestion/#{community.identifier}" } | |
357 | + end | |
358 | + | |
359 | + should 'remove suggestion of community' do | |
360 | + community = fast_create(Community) | |
361 | + suggestion = profile.profile_suggestions.create(:suggestion => community) | |
362 | + post :remove_suggestion, :profile => 'testuser', :id => community.identifier | |
363 | + | |
364 | + assert_redirected_to :action => 'suggest' | |
365 | + assert_equal false, ProfileSuggestion.find(suggestion.id).enabled | |
366 | + end | |
367 | + | |
330 | 368 | end | ... | ... |