From 79cb273d2cb3b858fdd3b648af5b387c775015cf Mon Sep 17 00:00:00 2001 From: echarp Date: Sun, 27 Dec 2015 16:12:27 +0100 Subject: [PATCH] It is now possible to filter organisations by region. Refs #11 --- app/controllers/orgas_controller.rb | 5 ++++- app/models/orga.rb | 2 ++ app/views/orgas/index.html.haml | 5 +++-- app/views/regions/_selector.haml | 19 ++++++++++--------- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/app/controllers/orgas_controller.rb b/app/controllers/orgas_controller.rb index 3374eb3c..c8d1828f 100644 --- a/app/controllers/orgas_controller.rb +++ b/app/controllers/orgas_controller.rb @@ -1,5 +1,7 @@ # Groups life cycle class OrgasController < ApplicationController + has_scope :region + before_action :set_orga, except: [:index, :new, :create] before_action :set_mailer_host before_action :authenticate_user!, only: [:edit, :update], @@ -8,7 +10,8 @@ class OrgasController < ApplicationController :destroy] def index - @search = Orga.moderated.includes(:kind).includes(:region).search params[:q] + @search = apply_scopes(Orga).moderated.includes(:kind, + :region).search params[:q] @search.sorts = 'updated_at desc' if @search.sorts.empty? @orgas = @search.result.page params[:page] end diff --git a/app/models/orga.rb b/app/models/orga.rb index c6357680..55f2fb7e 100644 --- a/app/models/orga.rb +++ b/app/models/orga.rb @@ -17,6 +17,8 @@ class Orga < ActiveRecord::Base scope :moderated, -> { where moderated: true } scope :unmoderated, -> { where moderated: false } + scope :region, ->(region) { where region: region unless region == 'all' } + before_validation do unless submitter.blank? self.secret ||= SecureRandom.urlsafe_base64(32)[0...32] diff --git a/app/views/orgas/index.html.haml b/app/views/orgas/index.html.haml index 33e79707..cfa2de14 100644 --- a/app/views/orgas/index.html.haml +++ b/app/views/orgas/index.html.haml @@ -1,9 +1,10 @@ += render 'search' += render '/regions/selector' + %h2 %em.fa.fa-users = title t 'orgas.search.title', entity: Orga.model_name.human -= render 'search' - %table.list.autopagerize_page_element %thead %th= sort_link @search, :kind_name, Orga.human_attribute_name(:kind) diff --git a/app/views/regions/_selector.haml b/app/views/regions/_selector.haml index a429c90e..8c5cc1a3 100644 --- a/app/views/regions/_selector.haml +++ b/app/views/regions/_selector.haml @@ -8,12 +8,12 @@ - elsif params[:locality] %span.placeholder %em.locality.fa.fa-globe - =t '.national' + = t '.national' %em.fa.fa-chevron-down - else %span.placeholder %em.locality.fa.fa-globe - =t '.all_regions' + = t '.all_regions' %em.fa.fa-chevron-down -# Choose a region to filter events with @@ -31,10 +31,11 @@ year: params[:year], tag: params[:tag] - %li - = link_to locality: 1, - start_date: params[:start_date], - year: params[:year], - tag: params[:tag] do - %em.fa.fa-globe - =t '.national' + - unless controller.class == OrgasController + %li + = link_to locality: 1, + start_date: params[:start_date], + year: params[:year], + tag: params[:tag] do + %em.fa.fa-globe + = t '.national'