diff --git a/lib/ext/search_controller.rb b/lib/ext/search_controller.rb
index df26904..0bb76dd 100644
--- a/lib/ext/search_controller.rb
+++ b/lib/ext/search_controller.rb
@@ -22,32 +22,7 @@ class SearchController
def software_infos
- @titles[:software_infos] = _("Public Software Catalog")
- @category_filters = []
- @categories = Category.all
- @selected_categories = params[:selected_categories]
-
- @selected_categories_name = []
- @message_selected_options = "Most options"
- unless @selected_categories.nil?
- @message_selected_options = _("Selected options: ")
- @selected_categories.each do |k, v|
- @message_selected_options << "#{k}; "
- @selected_categories_name << k
- end
- end
-
- @categories.sort!{|a, b| a.name <=> b.name}
- @categories_groupe_one = []
- @categories_groupe_two = []
- (0..(@categories.count - 1)).each do |i|
- if i % 2 == 0
- @categories_groupe_one << @categories[i]
- else
- @categories_groupe_two << @categories[i]
- end
- end
-
+ prepare_search_page
results = filter_software_infos_list
results = results.paginate(:per_page => 24, :page => params[:page])
@searches[@asset] = {:results => results}
@@ -96,4 +71,53 @@ 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
+ @titles[:software_infos] = _("Public Software Catalog")
+ @category_filters = []
+ @categories = Category.all
+ @selected_categories = params[:selected_categories]
+
+ @selected_categories_name = []
+ @message_selected_options = "Most options"
+ unless @selected_categories.nil?
+ @message_selected_options = _("Selected options: ")
+ @selected_categories.each do |k, v|
+ @message_selected_options << "#{k}; "
+ @selected_categories_name << k
+ end
+ end
+
+ @categories.sort!{|a, b| a.name <=> b.name}
+ @categories_groupe_one = []
+ @categories_groupe_two = []
+ (0..(@categories.count - 1)).each do |i|
+ if i % 2 == 0
+ @categories_groupe_one << @categories[i]
+ else
+ @categories_groupe_two << @categories[i]
+ end
+ end
+ end
end
diff --git a/public/software-catalog.js b/public/software-catalog.js
index ade9512..14ca7f4 100644
--- a/public/software-catalog.js
+++ b/public/software-catalog.js
@@ -1,9 +1,11 @@
-(function(){
+(function($){
"use strict";
var AJAX_URL = {
get_categories:
- url_with_subdirectory("/plugin/mpog_software/get_categories")
+ url_with_subdirectory("/plugin/mpog_software/get_categories"),
+ get_search_result:
+ url_with_subdirectory("/search/get_search_result")
};
function create_catalog_element(first, value, id) {
@@ -18,7 +20,7 @@
function add_item_to_catalog(value, id) {
var already_has = false;
- jQuery("#catalog-list ul li").each(function(i, li){
+ $("#catalog-list ul li").each(function(i, li){
var regex = new RegExp(value, "g");
if( regex.test(li.innerHTML) ) {
@@ -27,21 +29,21 @@
});
if( !already_has ) {
- var catalog_list = jQuery("#catalog-list ul li");
- var current_ids = jQuery("#filter").val();
+ var catalog_list = $("#catalog-list ul li");
+ var current_ids = $("#filter").val();
var first = catalog_list.length == 0;
current_ids += first ? id : ","+id;
- jQuery("#filter").val(current_ids);
+ $("#filter").val(current_ids);
- jQuery("#catalog-list ul").append(create_catalog_element(first, value, id));
+ $("#catalog-list ul").append(create_catalog_element(first, value, id));
}
}
function remote_catalog_item() {
var current_id = this.getAttribute("data-id");
- var filter_ids = jQuery("#filter").val();
+ var filter_ids = $("#filter").val();
var id_list = [];
filter_ids.split(",").forEach(function(id){
@@ -50,60 +52,89 @@
}
});
- jQuery("#filter").val(id_list.join(","));
+ $("#filter").val(id_list.join(","));
- jQuery(this).parent().remove();
+ $(this).parent().remove();
}
function show_head_message() {
- if (jQuery("#filter-categories-select-catalog").text().blank()){
- jQuery("#filter-categories-select-catalog").hide();
- jQuery("#filter-option-catalog-software").show();
+ if ($("#filter-categories-select-catalog").text().blank()){
+ $("#filter-categories-select-catalog").hide();
+ $("#filter-option-catalog-software").show();
}else{
- jQuery("#filter-categories-select-catalog").show();
- jQuery("#filter-option-catalog-software").hide();
+ $("#filter-categories-select-catalog").show();
+ $("#filter-option-catalog-software").hide();
}
}
function slideDowsCategoriesOptionAndHideOptionCatalog() {
- jQuery("#filter-categories-option").slideDown();
- jQuery("#filter-option-catalog-software").hide();
+ $("#filter-categories-option").slideDown();
+ $("#filter-option-catalog-software").hide();
}
function slideDownCategoriesOptionAndHideCategoriesSelect() {
- jQuery("#filter-categories-option").slideDown();
- jQuery("#filter-categories-select-catalog").hide();
+ $("#filter-categories-option").slideDown();
+ $("#filter-categories-select-catalog").hide();
}
function slideUpCategoriesAndShowHeadMessage() {
- jQuery("#filter-categories-option").slideUp();
+ $("#filter-categories-option").slideUp();
show_head_message();
}
function clearCatalogCheckbox(){
- jQuery("#filter-categories-option").slideUp();
- jQuery("#filter-option-catalog-software").show();
- jQuery("#group-categories input:checked").each(function() {
- jQuery(this).prop('checked', false);
+ $("#filter-categories-option").slideUp();
+ $("#filter-option-catalog-software").show();
+ $("#group-categories input:checked").each(function() {
+ $(this).prop('checked', false);
});
}
+ function dispatch_search_ajax(callback) {
+ var query_text = $("#search-input").val();
+ var selected_categories_ids = [];
+
+ $(".categories-catalog:checked").each(function(index, element) {
+ selected_categories_ids.push(element.value);
+ });
+
+
+ $.ajax({
+ url: AJAX_URL.get_search_result,
+ type: "GET",
+ data: {
+ query: query_text,
+ categories_ids: selected_categories_ids
+ },
+ success: function(response) {
+ console.log(response);
+ callback(response);
+ }
+ });
+ }
+
+ function update_page_list() {
+
+ }
+
function selectCheckboxCategory() {
- jQuery("#filter-categories-option").slideUp();
- jQuery("#filter-categories-select-catalog").show();
- jQuery("#filter-option-catalog-software").hide();
+ $("#filter-categories-option").slideUp();
+ $("#filter-categories-select-catalog").show();
+ $("#filter-option-catalog-software").hide();
+
+ dispatch_search_ajax(update_page_list);
}
function selectProjectSoftwareCheckbox() {
- jQuery("#filter-categories-option").slideUp();
- jQuery("#filter-categories-select-catalog").show();
- jQuery("#filter-option-catalog-software").hide();
+ $("#filter-categories-option").slideUp();
+ $("#filter-categories-select-catalog").show();
+ $("#filter-option-catalog-software").hide();
}
function set_autocomplate() {
- jQuery("#software-catalog").autocomplete({
+ $("#software-catalog").autocomplete({
source : function(request, response){
- jQuery.ajax({
+ $.ajax({
type: "GET",
url: AJAX_URL.get_categories,
data: {query: request.term},
@@ -128,21 +159,21 @@
}
function set_events() {
- jQuery(".catalog-remove-item").click(remote_catalog_item);
- jQuery("#filter-option-catalog-software").click(slideDowsCategoriesOptionAndHideOptionCatalog);
- jQuery("#filter-categories-select-catalog").click(slideDownCategoriesOptionAndHideCategoriesSelect);
- jQuery("#close-filter-catalog").click(slideUpCategoriesAndShowHeadMessage);
- jQuery("#cleanup-filter-catalg").click(clearCatalogCheckbox);
- jQuery(".categories-catalog").click(selectCheckboxCategory);
- jQuery(".project-software").click(selectProjectSoftwareCheckbox);
+ $(".catalog-remove-item").click(remote_catalog_item);
+ $("#filter-option-catalog-software").click(slideDowsCategoriesOptionAndHideOptionCatalog);
+ $("#filter-categories-select-catalog").click(slideDownCategoriesOptionAndHideCategoriesSelect);
+ $("#close-filter-catalog").click(slideUpCategoriesAndShowHeadMessage);
+ $("#cleanup-filter-catalg").click(clearCatalogCheckbox);
+ $(".categories-catalog").click(selectCheckboxCategory);
+ $(".project-software").click(selectProjectSoftwareCheckbox);
}
- jQuery(document).ready(function(){
+ $(document).ready(function(){
set_autocomplate();
set_events();
show_head_message();
- jQuery("#filter-categories-option").hide();
+ $("#filter-categories-option").hide();
});
-})();
+})(jQuery);
diff --git a/views/search/_catalog_filter.html.erb b/views/search/_catalog_filter.html.erb
index 8eae030..1671179 100644
--- a/views/search/_catalog_filter.html.erb
+++ b/views/search/_catalog_filter.html.erb
@@ -15,7 +15,7 @@
<% @categories_groupe_one.each do |category| %>
<% end %>
--
libgit2 0.21.2