From cb83de3223c0b6f63c5f581ddcc4a7a1bf88b3c2 Mon Sep 17 00:00:00 2001 From: Macartur Sousa Date: Wed, 20 Apr 2016 17:22:06 -0300 Subject: [PATCH] Adding category search filter to elasticsearch --- plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb | 16 ++++++++++++++-- plugins/elasticsearch/lib/elasticsearch_plugin.rb | 3 +++ plugins/elasticsearch/views/elasticsearch_plugin/_article_display.html.erb | 2 ++ plugins/elasticsearch/views/elasticsearch_plugin/_community_display.html.erb | 1 + plugins/elasticsearch/views/elasticsearch_plugin/_person_display.html.erb | 2 ++ plugins/elasticsearch/views/elasticsearch_plugin/communities.html.erb | 8 -------- plugins/elasticsearch/views/elasticsearch_plugin/search.html.erb | 34 ++++++++++++++++++++++++++++++++++ 7 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 plugins/elasticsearch/views/elasticsearch_plugin/_article_display.html.erb create mode 100644 plugins/elasticsearch/views/elasticsearch_plugin/_community_display.html.erb create mode 100644 plugins/elasticsearch/views/elasticsearch_plugin/_person_display.html.erb delete mode 100644 plugins/elasticsearch/views/elasticsearch_plugin/communities.html.erb create mode 100644 plugins/elasticsearch/views/elasticsearch_plugin/search.html.erb diff --git a/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb b/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb index 92cbf8b..49982a6 100644 --- a/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb +++ b/plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb @@ -1,6 +1,18 @@ class ElasticsearchPluginController < ApplicationController - def communities - @communities = environment.communities + no_design_blocks + + def search + @results = [] + + @checkbox = {:articles => params[:articles].present?, + :communities => params[:communities].present?, + :people => params[:people].present? + } + + @results += Article.__elasticsearch__.search('{}').records.to_a if params[:articles] + @results += Community.__elasticsearch__.search('{}').records.to_a if params[:communities] + @results += Person.__elasticsearch__.search('{}').records.to_a if params[:people] end + end diff --git a/plugins/elasticsearch/lib/elasticsearch_plugin.rb b/plugins/elasticsearch/lib/elasticsearch_plugin.rb index a8c138b..ffb0c4d 100644 --- a/plugins/elasticsearch/lib/elasticsearch_plugin.rb +++ b/plugins/elasticsearch/lib/elasticsearch_plugin.rb @@ -12,6 +12,9 @@ class ElasticsearchPlugin < Noosfero::Plugin Noosfero::Application.class_eval do config.after_initialize do + + Rails.application.eager_load! #TODO: REMOVE THIS LINE + models = ActiveRecord::Base.descendants.select do |model| model.const_defined?("SEARCHABLE_FIELDS") end diff --git a/plugins/elasticsearch/views/elasticsearch_plugin/_article_display.html.erb b/plugins/elasticsearch/views/elasticsearch_plugin/_article_display.html.erb new file mode 100644 index 0000000..cd586ab --- /dev/null +++ b/plugins/elasticsearch/views/elasticsearch_plugin/_article_display.html.erb @@ -0,0 +1,2 @@ + +Article: <%= article.name %> diff --git a/plugins/elasticsearch/views/elasticsearch_plugin/_community_display.html.erb b/plugins/elasticsearch/views/elasticsearch_plugin/_community_display.html.erb new file mode 100644 index 0000000..f35c383 --- /dev/null +++ b/plugins/elasticsearch/views/elasticsearch_plugin/_community_display.html.erb @@ -0,0 +1 @@ +Community: <%= community.name %> diff --git a/plugins/elasticsearch/views/elasticsearch_plugin/_person_display.html.erb b/plugins/elasticsearch/views/elasticsearch_plugin/_person_display.html.erb new file mode 100644 index 0000000..cfa742d --- /dev/null +++ b/plugins/elasticsearch/views/elasticsearch_plugin/_person_display.html.erb @@ -0,0 +1,2 @@ + +Person: <%= person.name %> diff --git a/plugins/elasticsearch/views/elasticsearch_plugin/communities.html.erb b/plugins/elasticsearch/views/elasticsearch_plugin/communities.html.erb deleted file mode 100644 index 4fb51b0..0000000 --- a/plugins/elasticsearch/views/elasticsearch_plugin/communities.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -

Communities

- -<% @communities.each do |community| %> - - <%= community.name %> -
- -<% end %> diff --git a/plugins/elasticsearch/views/elasticsearch_plugin/search.html.erb b/plugins/elasticsearch/views/elasticsearch_plugin/search.html.erb new file mode 100644 index 0000000..bf58e8a --- /dev/null +++ b/plugins/elasticsearch/views/elasticsearch_plugin/search.html.erb @@ -0,0 +1,34 @@ +

Search

+ +<%= form_tag controller: "elasticsearch_plugin", action: "search" do %> + <%= label_tag(:q, _("Search")) %> + <%= text_field_tag(:q) %> + + <%= submit_tag _("Send") %> + + <%= check_box_tag 'communities', 1, @checkbox[:communities] %> + <%= label_tag('communities', _("communities")) %> + + <%= check_box_tag 'people', 1, @checkbox[:people] %> + <%= label_tag('people', _("people")) %> + + <%= check_box_tag 'articles', 1, @checkbox[:articles] %> + <%= label_tag('articles', _("articles")) %> + +<% end %> + +<% for result in @results %> + <% if result.is_a? Article %> + <%= render partial: "article_display", :locals => {:article => result} %> +
+ <% end %> + + <% if result.is_a? Person %> + <%= render partial: "person_display", :locals => {:person => result} %> +
+ <% end %> + <% if result.is_a? Community %> + <%= render partial: "community_display", :locals => {:community => result} %> +
+ <% end %> +<% end %> -- libgit2 0.21.2