diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 7cd396ca..05f9c5e6 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -11,8 +11,18 @@ def index respond_to do |current_request| current_request.html do ilid? - @pagy, @past_events = pagy(Event.past.order(date: :desc), page: params[:page]) - @upcoming_events = Event.upcoming.order(date: :asc).includes(:usergroup) + @search = Event.includes([:usergroup]).ransack(params[:search]) + if params[:search].present? + if (not params[:search]["title"]) or params[:search]["title"] == "" + # We redirect to events here so that we see the normal binnenkort and vroegah view again + redirect_to events_path + return + end + @pagy, @search_events = pagy(@search.result.order(date: :desc), items: 10, page: params[:page]) + else + @upcoming_events = Event.includes([:usergroup]).upcoming.order(date: :asc) + @pagy, @past_events = pagy(Event.includes([:usergroup]).past.order(date: :desc), items: 10, page: params[:page]) + end end current_request.ics do diff --git a/app/models/event.rb b/app/models/event.rb index aecdfd6f..79b52a14 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -81,6 +81,14 @@ def send_new_event_email end end + def self.ransackable_attributes(auth_object = nil) + ["title"] + end + + def self.ransackable_associations(auth_object = nil) + [] + end + def to_s title end diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb index a32a080c..75893329 100644 --- a/app/views/events/index.html.erb +++ b/app/views/events/index.html.erb @@ -3,10 +3,25 @@ <% end %> <% content_for :options do %> - <%= button_to "Nieuwe activiteit", new_event_path, method: :get, class: button_classes %> +
+ <%= search_form_for @search, class: "inline-flex rounded-md" do |f| %> + <%= f.search_field :title, placeholder: 'Zoek hier naar activiteiten', class: 'shadow-sm focus:ring-hamers-red-500 focus:border-hamers-red-500 block w-full text-sm dark:text-gray-200 dark:bg-gray-800 border-gray-300 dark:border-gray-700 rounded-l-md' %> + <%= submit_tag "Zoek", class: "-ml-px relative inline-flex items-center px-4 py-2 rounded-r-md border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 focus:z-10 focus:outline-none focus:ring-1 focus:ring-hamers-red-500 focus:border-hamers-red-500" %> + <% end %> +
+ <%= button_to "Nieuwe activiteit", new_event_path, method: :get, class: button_classes %> +
+
<% end %>
+ <% if @search_events %> + <%= button_to "Terug naar alle activiteiten", events_path, method: :get, class: 'm-4 ' + button_classes %> + <%= render 'events/list', events: @search_events %> +
+ <%= render 'shared/pagination/default' %> +
+ <% else %>
<% end %> - + +
- - + - + <% end %>