From c8c27930d96e43b3ed69fe9c8fb92b5d9f305cab Mon Sep 17 00:00:00 2001 From: Fabio Teixeira Date: Tue, 3 Mar 2015 22:19:28 -0300 Subject: [PATCH] Fix software catalog search bug --- lib/ext/search_controller.rb | 9 +++++++-- public/views/search-software-catalog.js | 27 +++++++++++++-------------- views/search/_catalog_filter.html.erb | 70 +++++++++++++++++++++++++++++++++++----------------------------------- 3 files changed, 55 insertions(+), 51 deletions(-) diff --git a/lib/ext/search_controller.rb b/lib/ext/search_controller.rb index 4bfeb5f..bb7793e 100644 --- a/lib/ext/search_controller.rb +++ b/lib/ext/search_controller.rb @@ -73,8 +73,12 @@ class SearchController unless category_ids.empty? filtered_software_list.select! do |software| - result_ids = (software.community.category_ids & category_ids).sort - result_ids == category_ids.sort + if software.nil? || software.community.nil? + false + else + result_ids = (software.community.category_ids & category_ids).sort + result_ids == category_ids.sort + end end end @@ -150,4 +154,5 @@ class SearchController @categories_groupe_two = categories_sliced.next end end + end diff --git a/public/views/search-software-catalog.js b/public/views/search-software-catalog.js index 6ea8ec3..9ee5f10 100644 --- a/public/views/search-software-catalog.js +++ b/public/views/search-software-catalog.js @@ -8,7 +8,7 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, function show_head_message() { - if ($("#filter-categories-select-catalog").text()){ + if ($("#filter-categories-select-catalog").text().length === 0){ $("#filter-categories-select-catalog").hide(); $("#filter-option-catalog-software").show(); }else{ @@ -94,28 +94,26 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, } - function get_result_div_core(message){ - var div_result = $(".search-results-type-empty"); - var html = '
'+message+'
' - - div_result.replaceWith('
Nenhum software encontrado
'+message+'
') + function get_result_div_core(message) { + $("#search-results-empty").html(message); } - function catalog_message(){ - var result_list = $("#search-results").find('.search-results-empty'); - var selected_categories_field = $("#filter-categories-select-catalog"); + function catalog_message() { + var empty_result = $('#empty_result').val() === 'true'; + var user_selected_categories = $('.categories-catalog:checked').length !== 0; - if(result_list.length > 1 && selected_categories_field.html().length < 1){ - get_result_div_core("Tente filtros mais abrangentes"); - }else if (result_list.length > 1 && selected_categories_field.html().length >= 1) { - get_result_div_core("Tente filtros mais abrangentes ou confira os softwares das categorias individualmente"); + if(empty_result && !user_selected_categories) { + get_result_div_core($('#message-no-catalog-selected').val()); + } else if (empty_result && user_selected_categories) { + get_result_div_core($('#message-catalog-selected').val()); } } function update_search_page_on_ajax(response) { response = $(response); + var search_list = $("#search-results"); var selected_categories_field = $("#filter-categories-select-catalog"); var pagination = $("#software-pagination"); @@ -126,7 +124,7 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, var result_pagination = response.find("#software-pagination").html(); var result_software_count = response.find("#software-count").html(); - catalog_message() + search_list.html(result_list); selected_categories_field.html(result_categories); @@ -134,6 +132,7 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, software_count.html(result_software_count); show_head_message(); highlight_searched_terms(); + catalog_message(); hide_load_after_ajax(); } diff --git a/views/search/_catalog_filter.html.erb b/views/search/_catalog_filter.html.erb index 7c6975f..3fb478d 100644 --- a/views/search/_catalog_filter.html.erb +++ b/views/search/_catalog_filter.html.erb @@ -1,45 +1,45 @@
-
+
-
<%= _("More options") %>
- +
<%= _("More options") %>
+ -
<%= @message_selected_options %>
+
<%= @message_selected_options %>
-
+
-

<%= _("Categories") %>

-
-
- <% @categories_groupe_one.each do |category| %> -
- <% end %> -
-
- <% @categories_groupe_two.each do |category| %> -
- <% end %> -
+

<%= _("Categories") %>

+
+
+ <% @categories_groupe_one.each do |category| %> +
+ <% end %> +
+
+ <% @categories_groupe_two.each do |category| %> +
+ <% end %> +
+
+
+ +
<%= _("Software Projects:") %> + + (?)
+
+ <%= button_tag _("Clean up"), :id => "cleanup-filter-catalg", :type => "button" %> + <%= button_tag _("Close"), :id => "close-filter-catalog", :type => "button" %>
- -
<%= _("Software Projects:") %> - - (?)
-
- <%= button_tag _("Clean up"), :id => "cleanup-filter-catalg", :type => "button" %> - <%= button_tag _("Close"), :id => "close-filter-catalog", :type => "button" %> -
-
-- libgit2 0.21.2