diff --git a/app/controllers/admin/legislation/proposals_controller.rb b/app/controllers/admin/legislation/proposals_controller.rb index 7f4441bce..bd46d28fe 100644 --- a/app/controllers/admin/legislation/proposals_controller.rb +++ b/app/controllers/admin/legislation/proposals_controller.rb @@ -1,7 +1,23 @@ class Admin::Legislation::ProposalsController < Admin::Legislation::BaseController + + has_orders %w{id title supports}, only: :index + load_and_authorize_resource :process, class: "Legislation::Process" load_and_authorize_resource :proposal, class: "Legislation::Proposal", through: :process def index + @proposals = @proposals.send("sort_by_#{@current_order}").page(params[:page]) end -end + + def update + @proposal.selected = !@proposal.selected + + if @proposal.save + notice = t('admin.legislation.proposals.update.notice') + else + notice = t('admin.legislation.proposals.update.error') + end + redirect_to admin_legislation_process_proposals_path, notice: notice + end + +end \ No newline at end of file diff --git a/app/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb index f30b9d894..11b1be0d6 100644 --- a/app/controllers/legislation/processes_controller.rb +++ b/app/controllers/legislation/processes_controller.rb @@ -1,5 +1,7 @@ class Legislation::ProcessesController < Legislation::BaseController has_filters %w{open next past}, only: :index + has_filters %w{all selected}, only: :proposals + load_and_authorize_resource before_action :set_random_seed, only: :proposals @@ -91,7 +93,9 @@ class Legislation::ProcessesController < Legislation::BaseController @proposals = ::Legislation::Proposal.where(process: @process) @proposals = @proposals.search(params[:search]) if params[:search].present? - @proposals = @proposals.order('random()').page(params[:page]) + @proposals = @proposals.send(@current_filter).order('random()').page(params[:page]) + + @valid_filters = [] unless @proposals.map(&:selected).include? true if @process.proposals_phase.started? || (current_user && current_user.administrator?) legislation_proposal_votes(@proposals) diff --git a/app/models/legislation/proposal.rb b/app/models/legislation/proposal.rb index a345a5904..ad6691578 100644 --- a/app/models/legislation/proposal.rb +++ b/app/models/legislation/proposal.rb @@ -45,9 +45,13 @@ class Legislation::Proposal < ActiveRecord::Base scope :sort_by_confidence_score, -> { reorder(confidence_score: :desc) } scope :sort_by_created_at, -> { reorder(created_at: :desc) } scope :sort_by_most_commented, -> { reorder(comments_count: :desc) } + scope :sort_by_title, -> { reorder(title: :asc) } + scope :sort_by_id, -> { reorder(id: :asc) } + scope :sort_by_supports, -> { reorder(cached_votes_up: :asc) } scope :sort_by_random, -> { reorder("RANDOM()") } scope :sort_by_flags, -> { order(flags_count: :desc, updated_at: :desc) } scope :last_week, -> { where("proposals.created_at >= ?", 7.days.ago)} + scope :selected, -> { where(selected: true) } def to_param "#{id}-#{title}".parameterize diff --git a/app/views/admin/legislation/proposals/index.html.erb b/app/views/admin/legislation/proposals/index.html.erb index aae66e008..d5f4c39fe 100644 --- a/app/views/admin/legislation/proposals/index.html.erb +++ b/app/views/admin/legislation/proposals/index.html.erb @@ -11,4 +11,44 @@ <%= render 'admin/legislation/processes/subnav', process: @process, active: 'proposals' %> <%= render 'form' %> + +<% if @proposals.any? %> +
| <%= t("admin.legislation.proposals.index.id") %> | +<%= t("admin.legislation.proposals.index.title") %> | +<%= t("admin.legislation.proposals.index.supports") %> | +<%= t("admin.legislation.proposals.index.selected") %> | +
|---|---|---|---|
| <%= proposal.id %> | +<%= proposal.title %> | +<%= proposal.cached_votes_up %> | ++ <% if proposal.selected? + button_text = t("admin.legislation.proposals.index.selected") + clas = 'button expanded' + else + button_text = t("admin.legislation.proposals.index.select") + clas = 'button hollow expanded' + end %> + <%= link_to button_text, admin_legislation_process_proposal_path(@process, proposal), method: 'PUT', class: clas %> + | +
<%= t("legislation.processes.proposals.empty_proposals") %>
<% else %> + <%= render 'shared/filter_subnav', i18n_namespace: "legislation.processes.proposals" %> <%= render proposals %> <%= paginate proposals %> <% end %> diff --git a/app/views/shared/_wide_order_selector.html.erb b/app/views/shared/_wide_order_selector.html.erb index d5b1405eb..0594f4301 100644 --- a/app/views/shared/_wide_order_selector.html.erb +++ b/app/views/shared/_wide_order_selector.html.erb @@ -2,6 +2,7 @@ # # i18n_namespace: for example "moderation.debates.index" %> + <% if @valid_orders.present? && @valid_orders.count > 1 %>