diff --git a/controllers/public/proposals_discussion_plugin_public_controller.rb b/controllers/public/proposals_discussion_plugin_public_controller.rb index c02c243..0c4a6ae 100644 --- a/controllers/public/proposals_discussion_plugin_public_controller.rb +++ b/controllers/public/proposals_discussion_plugin_public_controller.rb @@ -6,13 +6,13 @@ class ProposalsDiscussionPluginPublicController < ApplicationController holder = profile.articles.find(params[:holder_id]) page = (params[:page] || 1).to_i set_rand_cookie if page == 1 + order = params[:order] - set_seed - @proposals = holder.proposals.public.reorder('random()') + @proposals = order_proposals(holder.proposals.public, order) @proposals = @proposals.page(page).per_page(5) unless @proposals.empty? - render :partial => 'content_viewer/proposals_list_content', :locals => {:proposals => @proposals, :holder => holder, :page => page+1} + render :partial => 'content_viewer/proposals_list_content', :locals => {:proposals => @proposals, :holder => holder, :page => page+1, :order => order} else render :text => '' end @@ -20,6 +20,16 @@ class ProposalsDiscussionPluginPublicController < ApplicationController private + def order_proposals(proposals, order) + case order + when 'alphabetical' + proposals.reorder('name') + else + set_seed + proposals.reorder('random()') + end + end + def set_seed #XXX postgresql specific seed_val = profile.connection.quote(cookies[:_noosfero_proposals_discussion_rand_seed]) diff --git a/public/style.css b/public/style.css index 087bdfb..ae82319 100644 --- a/public/style.css +++ b/public/style.css @@ -109,3 +109,15 @@ form .proposals-discussion-plugin .body textarea { font-weight: bold; font-size: 14px; } + +.proposals_list .filters { + float: right; +} +#article .proposals_list .filters a { + text-decoration: none; + border-left: 1px solid rgb(185, 185, 185); + padding: 0 5px; +} +.proposals_list .filters a.selected { + font-weight: bold; +} diff --git a/test/functional/proposals_discussion_plugin_public_controller_test.rb b/test/functional/proposals_discussion_plugin_public_controller_test.rb index be5cb94..2461186 100644 --- a/test/functional/proposals_discussion_plugin_public_controller_test.rb +++ b/test/functional/proposals_discussion_plugin_public_controller_test.rb @@ -27,4 +27,12 @@ class ProposalsDiscussionPluginPublicControllerTest < ActionController::TestCase assert_equal '', response.body end + should 'load proposals with alphabetical order' do + proposal1 = fast_create(ProposalsDiscussionPlugin::Proposal, :name => 'z proposal', :abstract => 'proposal abstract', :profile_id => profile.id, :parent_id => topic.id) + proposal2 = fast_create(ProposalsDiscussionPlugin::Proposal, :name => 'abc proposal', :abstract => 'proposal abstract', :profile_id => profile.id, :parent_id => topic.id) + proposal3 = fast_create(ProposalsDiscussionPlugin::Proposal, :name => 'abd proposal', :abstract => 'proposal abstract', :profile_id => profile.id, :parent_id => topic.id) + get :load_proposals, :profile => profile.identifier, :holder_id => discussion.id, :order => 'alphabetical' + assert_equal [proposal2, proposal3, proposal1], assigns(:proposals) + end + end diff --git a/views/content_viewer/_proposals_list.html.erb b/views/content_viewer/_proposals_list.html.erb index 0c4123e..b5e1f60 100644 --- a/views/content_viewer/_proposals_list.html.erb +++ b/views/content_viewer/_proposals_list.html.erb @@ -1,12 +1,24 @@ <% private_proposals = user ? @page.proposals.private(user) : [] %> @@ -17,10 +29,20 @@ <% end %> -