123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- (function($) {
- Drupal.behaviors.custom_search = {
- attach: function(context) {
- if (!Drupal.settings.custom_search.solr) {
- // Check if the search box is not empty on submit
- $('form.search-form', context).submit(function(){
- var $this = $(this);
- var box = $this.find('input.custom-search-box');
- if (box.val() != undefined && box.val() == '') {
- $this.find('input.custom-search-box').addClass('error');
- return false;
- }
- // If basic search is hidden, copy or value to the keys
- if ($this.find('#edit-keys').parents('div.element-invisible').attr('class') == 'element-invisible') {
- $this.find('#edit-keys').val($this.find('#edit-or').val());
- $this.find('#edit-or').val('');
- }
- return true;
- });
- }
- // Search from target
- $('form.search-form').attr('target', Drupal.settings.custom_search.form_target);
- // Displays Popup.
- $('form.search-form input.custom-search-box', context).bind('click focus', function(e){
- var $parentForm = $(this).parents('form');
- // check if there's something in the popup and displays it
- var popup = $parentForm.find('fieldset.custom_search-popup');
- if (popup.find('input,select').length && !popup.hasClass('opened')) {
- popup.fadeIn().addClass('opened');
- }
- e.stopPropagation();
- });
- $(document).bind('click focus', function(){
- $('fieldset.custom_search-popup').hide().removeClass('opened');
- });
- // Handle checkboxes
- $('.custom-search-selector input:checkbox', context).each(function(){
- var el = $(this);
- if (el.val() == 'c-all') {
- el.change(function(){
- $(this).parents('.custom-search-selector').find('input:checkbox[value!=c-all]').attr('checked', false);
- });
- }
- else {
- if (el.val().substr(0,2) == 'c-') {
- el.change(function(){
- $('.custom-search-selector input:checkbox').each(function(){
- if ($(this).val().substr(0,2) == 'o-') {
- $(this).attr('checked', false);
- }
- });
- $(this).parents('.custom-search-selector').find('input:checkbox[value=c-all]').attr('checked', false);
- });
- } else {
- el.change(function(){
- $(this).parents('.custom-search-selector').find('input:checkbox[value!=' + el.val() + ']').attr('checked', false);
- });
- }
- }
- });
- // Reselect types and terms in advanced search
- var edit_keys = encodeURIComponent($('#edit-keys').val());
- if (edit_keys) {
- // types
- var pos = edit_keys.indexOf('type:');
- if (pos != -1) {
- var pos2 = edit_keys.indexOf(' ', pos);
- if (pos2 == -1) {
- pos2 = edit_keys.length;
- }
- var types = edit_keys.substring(pos + 5,pos2);
- types = types.split(',');
- for (var i = 0; i < types.length; i++) {
- $('.search-form input:checkbox[value=' + types[i] + ']').attr('checked', true);
- }
- }
- // terms
- var pos = edit_keys.indexOf('term:');
- if (pos != -1) {
- var pos2 = edit_keys.indexOf(' ', pos);
- if (pos2 == -1) {
- pos2 = edit_keys.length;
- }
- var terms = edit_keys.substring(pos + 5, pos2);
- terms = terms.split(',');
- for (var i = 0; i < terms.length; i++) {
- $('#edit-term option[value=' + terms[i] + ']').attr('selected', true);
- }
- }
- // languages
- var pos = edit_keys.indexOf('language:');
- if (pos != -1) {
- var pos2 = edit_keys.indexOf(' ', pos);
- if (pos2 == -1) {
- pos2 = edit_keys.length;
- }
- var languages = edit_keys.substring(pos + 9,pos2);
- languages = languages.split(',');
- for (var i = 0; i < languages.length; i++) {
- $('.search-advanced #edit-language-' + languages[i]).attr('checked', true);
- }
- }
- }
- var popup = $('fieldset.custom_search-popup:not(.custom_search-processed)', context).addClass("custom_search-processed");
- popup.click(function(e){
- e.stopPropagation();
- })
- popup.append('<a class="custom_search-popup-close" href="#">' + Drupal.t('Close') + '</a>');
- $('a.custom_search-popup-close').click(function(e){
- $('fieldset.custom_search-popup.opened').hide().removeClass('opened');
- e.preventDefault();
- });
- }
- }
- })(jQuery);
|