Commit 482b8deb94546100d69bb0a9f7868f3073e9853a
1 parent
af0e87e3
Exists in
elasticsearch_api
Create initial style of elasticsearch, and refectored html
Signed-off-by: DylanGuedes <djmgguedes@gmail.com> Signed-off-by: Macartur Sousa <macartur.sc@gmail.com>
Showing
7 changed files
with
95 additions
and
65 deletions
Show diff stats
plugins/elasticsearch/controllers/elasticsearch_plugin_controller.rb
1 | class ElasticsearchPluginController < ApplicationController | 1 | class ElasticsearchPluginController < ApplicationController |
2 | no_design_blocks | 2 | no_design_blocks |
3 | 3 | ||
4 | - SEARCHABLE_MODELS = {communities: true, articles: true, people: true} | 4 | + SEARCHABLE_TYPES = { :all => { label: "All Results" }, |
5 | + :community => { label: "Communities"}, | ||
6 | + :article => { label: "Articles"}, | ||
7 | + :event => { label: "Events"}, | ||
8 | + :person => { label: "People"} | ||
9 | + } | ||
5 | 10 | ||
6 | def index | 11 | def index |
7 | search() | 12 | search() |
@@ -9,23 +14,20 @@ class ElasticsearchPluginController < ApplicationController | @@ -9,23 +14,20 @@ class ElasticsearchPluginController < ApplicationController | ||
9 | end | 14 | end |
10 | 15 | ||
11 | def search | 16 | def search |
12 | - @results = [] | 17 | + @searchable_types = SEARCHABLE_TYPES |
18 | + @selected_type = selected_type params | ||
19 | + | ||
13 | @query = params[:q] | 20 | @query = params[:q] |
14 | - @checkbox = {} | 21 | + @results = [] |
15 | 22 | ||
16 | - if params[:model].present? | ||
17 | - params[:model].keys.each do |model| | ||
18 | - @checkbox[model.to_sym] = true | ||
19 | - results model | ||
20 | - end | ||
21 | - else | ||
22 | - unless params[:q].blank? | ||
23 | - SEARCHABLE_MODELS.keys.each do |model| | ||
24 | - results model | ||
25 | - end | ||
26 | - end | ||
27 | - end | 23 | +# results 'article' |
24 | +# results 'people' | ||
25 | + results "community" | ||
26 | + end | ||
28 | 27 | ||
28 | + def selected_type params | ||
29 | + return :all if params[:selected_type].nil? | ||
30 | + params[:selected_type] | ||
29 | end | 31 | end |
30 | 32 | ||
31 | private | 33 | private |
@@ -68,22 +70,10 @@ class ElasticsearchPluginController < ApplicationController | @@ -68,22 +70,10 @@ class ElasticsearchPluginController < ApplicationController | ||
68 | query | 70 | query |
69 | end | 71 | end |
70 | 72 | ||
71 | - def get_terms params | ||
72 | - terms = {} | ||
73 | - return terms unless params[:filter].present? | ||
74 | - params[:filter].keys.each do |model| | ||
75 | - terms[model] = {} | ||
76 | - params[:filter][model].keys.each do |filter| | ||
77 | - @checkbox[filter.to_sym] = true | ||
78 | - terms[model][params[:filter][model.to_sym][filter]] = filter | ||
79 | - end | ||
80 | - end | ||
81 | - terms | ||
82 | - end | ||
83 | - | ||
84 | def results model | 73 | def results model |
85 | klass = model.to_s.classify.constantize | 74 | klass = model.to_s.classify.constantize |
86 | query = get_query params[:q], klass | 75 | query = get_query params[:q], klass |
76 | + query = {} | ||
87 | @results |= klass.__elasticsearch__.search(query).records.to_a | 77 | @results |= klass.__elasticsearch__.search(query).records.to_a |
88 | end | 78 | end |
89 | 79 |
plugins/elasticsearch/lib/elasticsearch_plugin.rb
@@ -8,4 +8,7 @@ class ElasticsearchPlugin < Noosfero::Plugin | @@ -8,4 +8,7 @@ class ElasticsearchPlugin < Noosfero::Plugin | ||
8 | _("This plugin is used to communicate a elasticsearch to privide a search.") | 8 | _("This plugin is used to communicate a elasticsearch to privide a search.") |
9 | end | 9 | end |
10 | 10 | ||
11 | + def stylesheet? | ||
12 | + true | ||
13 | + end | ||
11 | end | 14 | end |
plugins/elasticsearch/views/elasticsearch_plugin/_article_display.html.erb
1 | +<div class="article-model"> | ||
2 | + <h3> <%= article.name %> </h3> | ||
3 | + <div class="article-info"> | ||
4 | + <%= article.created_at %> <strong><%= article.class %></strong> | ||
5 | + </div> | ||
1 | 6 | ||
2 | -Article: <%= article.id %><%= article.name %> | 7 | + <div class="article-content"> |
8 | + MY BODY CONTENT | ||
9 | + </div> | ||
10 | +</div> |
plugins/elasticsearch/views/elasticsearch_plugin/_community_display.html.erb
plugins/elasticsearch/views/elasticsearch_plugin/_person_display.html.erb
plugins/elasticsearch/views/elasticsearch_plugin/search.html.erb
1 | -<h1> Search </h1> | ||
2 | - | ||
3 | -<%= form_tag controller: "elasticsearch_plugin", action: "search" do %> | ||
4 | - <%= label_tag(:q, _("Search")) %> | ||
5 | - <%= text_field_tag(:q, @query) %> | ||
6 | - | ||
7 | - <%= submit_tag _("Send") %> | ||
8 | - | ||
9 | - <%= check_box_tag 'model[communities]', 1, @checkbox[:communities] %> | ||
10 | - <%= label_tag('communities', _("communities")) %> | ||
11 | - | ||
12 | - <%= check_box_tag 'model[people]', 1, @checkbox[:people] %> | ||
13 | - <%= label_tag('people', _("people")) %> | ||
14 | - | ||
15 | - <%= check_box_tag 'model[articles]', 1, @checkbox[:articles] %> | ||
16 | - <%= label_tag('articles', _("articles")) %> | ||
17 | - | ||
18 | -<% end %> | ||
19 | - | ||
20 | -<% for result in @results %> | ||
21 | - <% if result.is_a? Article %> | ||
22 | - <%= render partial: "article_display", :locals => {:article => result} %> | ||
23 | - <br> | ||
24 | - <% end %> | ||
25 | - | ||
26 | - <% if result.is_a? Person %> | ||
27 | - <%= render partial: "person_display", :locals => {:person => result} %> | ||
28 | - <br> | ||
29 | - <% end %> | ||
30 | - <% if result.is_a? Community %> | ||
31 | - <%= render partial: "community_display", :locals => {:community => result} %> | ||
32 | - <br> | ||
33 | - <% end %> | ||
34 | -<% end %> | 1 | +<div class="wrapper"> |
2 | + | ||
3 | + <div class="sidebar"> | ||
4 | + <%= @results.count %> | ||
5 | + <ul> | ||
6 | + <% for type in @searchable_types.values %> | ||
7 | + <li><a class=""> <%= type[:label] %></a></li> | ||
8 | + <% end %> | ||
9 | + </ul> | ||
10 | + </div> | ||
11 | + | ||
12 | + <div class="search_form"> | ||
13 | + <div class="search_field"> | ||
14 | + <%= form_tag controller: "elasticsearch_plugin", action: "search" do %> | ||
15 | + <%= label_tag(:q, _("Search")) %> | ||
16 | + <%= text_field_tag(:q, @query) %> | ||
17 | + | ||
18 | + <%= submit_tag _("Send") %> | ||
19 | + <% end %> | ||
20 | + </div> | ||
21 | + | ||
22 | + <div class="results"> | ||
23 | + <% for result in @results %> | ||
24 | + <% for klass in @searchable_types.keys %> | ||
25 | + <% next if klass.to_s.include? "all" %> | ||
26 | + | ||
27 | + <% if result.is_a? klass.to_s.classify.constantize %> | ||
28 | + <%= render partial: "#{klass}_display", :locals => { klass => result} %> | ||
29 | + <% break %> | ||
30 | + <% end %> | ||
31 | + | ||
32 | + <% end %> | ||
33 | + <% end %> | ||
34 | + </div> | ||
35 | + </div> | ||
36 | + | ||
37 | +</div> |