Commit 40df430a3b31efc91336b18418193bdde52eb3fc
1 parent
fcad091d
Exists in
master
and in
22 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 | ... | ... |