diff --git a/better_exposed_filters.js b/better_exposed_filters.js index 3a7b59b..e9240e5 100644 --- a/better_exposed_filters.js +++ b/better_exposed_filters.js @@ -124,6 +124,34 @@ }); } } + + // This is only needed to provide ajax functionality + Drupal.behaviors.betterExposedFiltersSelectAsLinks = { + attach: function(context) { + + $('.bef-select-as-links', context).once(function() { + var $widgets = $('.views-exposed-widgets'); + // Hide the actual form elements from the user. + $widgets.find('.bef-select-as-links select').hide(); + var $options = $('.bef-select-as-links select option'); + $(this).find('a').click(function(event) { + // We have to prevent the page load triggered by the links. + event.preventDefault(); + event.stopPropagation(); + var text = $(this).text(); + // Set the corresponding option inside the select element + $options.filter(function() { + return $(this).text() == text; + }).attr('selected', true); + $('.bef-new-value').val($options.filter(':selected').val()); + + // Submit the form. + $widgets.find('.views-submit-button input').click(); + }); + }); + } + }; + /* * Helper functions */ diff --git a/better_exposed_filters.theme b/better_exposed_filters.theme index 24300d1..ea9f794 100644 --- a/better_exposed_filters.theme +++ b/better_exposed_filters.theme @@ -505,14 +505,15 @@ function theme_select_as_links($vars) { $output = ''; diff --git a/better_exposed_filters_exposed_form_plugin.inc b/better_exposed_filters_exposed_form_plugin.inc index 69fb4af..133041b 100644 --- a/better_exposed_filters_exposed_form_plugin.inc +++ b/better_exposed_filters_exposed_form_plugin.inc @@ -805,6 +805,7 @@ Title Desc|Z -> A Leave the replacement value blank to remove an option al case 'bef_links': $show_apply = TRUE; + $form['#attached']['js'][] = drupal_get_path('module', 'better_exposed_filters') . '/better_exposed_filters.js'; $form[$field_id]['#theme'] = 'select_as_links'; break;