From afd37db97d6bc68502c1f0607400838987a0a58f Mon Sep 17 00:00:00 2001 From: Luciano Date: Thu, 22 Jan 2015 11:17:42 -0200 Subject: [PATCH] Update search software dynamically by selecting a category --- lib/ext/search_controller.rb | 44 ++++++++++++++------------------------------ public/software-catalog.js | 38 +++++++++++++++++++++----------------- views/search/_catalog_filter.html.erb | 6 +++--- views/search/_mpog_search_form.html.erb | 4 +--- views/search/software_infos.html.erb | 26 ++++++++++++++------------ 5 files changed, 53 insertions(+), 65 deletions(-) diff --git a/lib/ext/search_controller.rb b/lib/ext/search_controller.rb index 0bb76dd..4881f2a 100644 --- a/lib/ext/search_controller.rb +++ b/lib/ext/search_controller.rb @@ -22,11 +22,12 @@ class SearchController def software_infos - prepare_search_page + prepare_software_search_page results = filter_software_infos_list results = results.paginate(:per_page => 24, :page => params[:page]) @searches[@asset] = {:results => results} @search = results + render :layout=>false if request.xhr? end def filter_communities_list @@ -53,7 +54,7 @@ class SearchController category_ids = [] unless params[:selected_categories].blank? - category_ids = params[:selected_categories].values + category_ids = params[:selected_categories] end category_ids = category_ids.map(&:to_i) @@ -72,47 +73,30 @@ class SearchController filtered_community_list end - def get_search_result - redirect_to "/" unless request.xhr? - - selected_categories = {} - params[:categories_ids].each do |id| - selected_categories[Category.find(id).name] = id - end - params[:selected_categories] = selected_categories - - prepare_search_page - - results = filter_software_infos_list - results = results.paginate(:per_page => 24, :page => params[:page]) - - @searches[@asset] = {:results => results} - @search = results - render "/software_infos", :layout=>false - end - protected - def prepare_search_page + def prepare_software_search_page @titles[:software_infos] = _("Public Software Catalog") @category_filters = [] @categories = Category.all @selected_categories = params[:selected_categories] + @selected_categories ||= [] + @selected_categories = @selected_categories.map(&:to_i) - @selected_categories_name = [] - @message_selected_options = "Most options" - unless @selected_categories.nil? + @message_selected_options = "" + unless @selected_categories.empty? @message_selected_options = _("Selected options: ") - @selected_categories.each do |k, v| - @message_selected_options << "#{k}; " - @selected_categories_name << k - end + + categories = Category.find(@selected_categories) + @message_selected_options += categories.collect { |category| + "#{category.name}; " + }.join() end @categories.sort!{|a, b| a.name <=> b.name} @categories_groupe_one = [] @categories_groupe_two = [] - (0..(@categories.count - 1)).each do |i| + @categories.count.times do |i| if i % 2 == 0 @categories_groupe_one << @categories[i] else diff --git a/public/software-catalog.js b/public/software-catalog.js index 14ca7f4..81e467a 100644 --- a/public/software-catalog.js +++ b/public/software-catalog.js @@ -4,8 +4,8 @@ var AJAX_URL = { get_categories: url_with_subdirectory("/plugin/mpog_software/get_categories"), - get_search_result: - url_with_subdirectory("/search/get_search_result") + software_infos: + url_with_subdirectory("/search/software_infos") }; function create_catalog_element(first, value, id) { @@ -90,6 +90,14 @@ }); } + function selectCheckboxCategory() { + $("#filter-categories-option").slideUp(); + $("#filter-categories-select-catalog").show(); + $("#filter-option-catalog-software").hide(); + + dispatch_search_ajax(update_search_page_on_ajax); + } + function dispatch_search_ajax(callback) { var query_text = $("#search-input").val(); var selected_categories_ids = []; @@ -98,31 +106,27 @@ selected_categories_ids.push(element.value); }); - $.ajax({ - url: AJAX_URL.get_search_result, + url: AJAX_URL.software_infos, type: "GET", data: { query: query_text, - categories_ids: selected_categories_ids + selected_categories: selected_categories_ids }, - success: function(response) { - console.log(response); - callback(response); - } + success: callback }); } - function update_page_list() { - - } + function update_search_page_on_ajax(response) { + var search_list = $("#search-results"); + var selected_categories_field = $("#filter-categories-select-catalog"); - function selectCheckboxCategory() { - $("#filter-categories-option").slideUp(); - $("#filter-categories-select-catalog").show(); - $("#filter-option-catalog-software").hide(); + var result_list = $(response).find("#search-results").html(); + var result_categories = $(response).find("#filter-categories-select-catalog").html(); - dispatch_search_ajax(update_page_list); + search_list.html(result_list); + selected_categories_field.html(result_categories); + show_head_message(); } function selectProjectSoftwareCheckbox() { diff --git a/views/search/_catalog_filter.html.erb b/views/search/_catalog_filter.html.erb index 1671179..012562f 100644 --- a/views/search/_catalog_filter.html.erb +++ b/views/search/_catalog_filter.html.erb @@ -2,7 +2,7 @@
-
Mais opções
+
<%= _("More options") %>
<%= @message_selected_options %>
@@ -14,7 +14,7 @@
<% @categories_groupe_one.each do |category| %>
<% end %> @@ -22,7 +22,7 @@
<% @categories_groupe_two.each do |category| %>
<% end %> diff --git a/views/search/_mpog_search_form.html.erb b/views/search/_mpog_search_form.html.erb index a31ecd2..7c15b24 100644 --- a/views/search/_mpog_search_form.html.erb +++ b/views/search/_mpog_search_form.html.erb @@ -10,8 +10,7 @@
- <%= text_field_tag 'query', @query, :id => 'search-input', :size => 50 %> - <%= javascript_tag "jQuery('#search-input').attr('title', \"#{hint}\").hint()" if defined?(hint) %> + <%= text_field_tag 'query', @query, :id => 'search-input', :size => 50, :placeholder=>_("Type words about the software_info you're looking for") %> <%= submit_button(:search, _('Search'), :class => "button with-text icon-search submit") %> @@ -30,4 +29,3 @@
-
diff --git a/views/search/software_infos.html.erb b/views/search/software_infos.html.erb index fb5726e..7dbe18f 100644 --- a/views/search/software_infos.html.erb +++ b/views/search/software_infos.html.erb @@ -1,18 +1,20 @@ -<%= search_page_title( @titles[@asset], @category ) %> +
+ <%= search_page_title( @titles[@asset], @category ) %> -<%= render :partial => 'mpog_search_form', :locals => { :hint => _("Type words about the %s you're looking for") % @asset.to_s.singularize } %> + <%= render :partial => 'mpog_search_form', :locals => { :hint => _("Type words about the %s you're looking for") % @asset.to_s.singularize } %> -<%= render :partial => 'results_header' %> + <%= render :partial => 'results_header' %> -<%= display_results(@searches, @asset) %> -<% if params[:display] != 'map' %> - <%= pagination_links @searches[@asset][:results] %> -<% end %> + <%= display_results(@searches, @asset) %> + <% if params[:display] != 'map' %> + <%= pagination_links @searches[@asset][:results] %> + <% end %> -
+
-<% if @asset == :product %> - <%= javascript_tag do %> - jQuery('.search-product-price-details').altBeautify(); + <% if @asset == :product %> + <%= javascript_tag do %> + jQuery('.search-product-price-details').altBeautify(); + <% end %> <% end %> -<% end %> +
\ No newline at end of file -- libgit2 0.21.2