Changeset 25489


Ignore:
Timestamp:
Nov 15, 2013, 4:41:11 PM (10 years ago)
Author:
mistic100
Message:

bug 2883: filter order_by for duplicated values

Location:
trunk/admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/configuration.php

    r25372 r25489  
    153153        if ( !empty($_POST['order_by']) )
    154154        {
     155          $used = array();
    155156          foreach ($_POST['order_by'] as $i => $val)
    156157          {
    157             if (empty($val)) unset($_POST['order_by'][$i]);
     158            if (empty($val) or isset($used[$val]))
     159            {
     160              unset($_POST['order_by'][$i]);
     161            }
     162            else
     163            {
     164              $used[$val] = true;
     165            }
    158166          }
    159167          if ( !count($_POST['order_by']) )
  • trunk/admin/themes/default/template/configuration.tpl

    r25372 r25489  
    6969{footer_script require='jquery'}
    7070(function(){
    71 // counters for displaying of addFilter link
    72 var fields = {$main.order_by|@count},
    73     max_fields = Math.ceil({$main.order_by_options|@count}/2);
    74 
    75 function updateAddFilterLink() {
    76   if (fields >= max_fields) {
    77     jQuery('.addFilter').css('display', 'none');
    78   } else {
    79     jQuery('.addFilter').css('display', '');
    80   }
     71var max_fields = Math.ceil({$main.order_by_options|@count}/2);
     72
     73function updateFilters() {
     74  var $selects = jQuery('#order_filters select');
     75
     76  jQuery('#order_filters .addFilter').toggle($selects.length <= max_fields);
     77  jQuery('#order_filters .removeFilter').css('display', '').filter(':first').css('display', 'none');
     78 
     79  $selects.find('option').removeAttr('disabled');
     80  $selects.each(function() {
     81    $selects.not(this).find('option[value="'+ jQuery(this).val() +'"]').attr('disabled', 'disabled');
     82  });
    8183}
    8284
    83 function updateRemoveFilterTrigger() {
    84   jQuery(".removeFilter").click(function() {
    85     jQuery(this).parent('span.filter').remove();
    86     fields--;
    87     updateAddFilterLink();
    88   });
    89 
    90   jQuery(".removeFilter").css('display', '');
    91   jQuery(".filter:first .removeFilter").css('display', 'none');
    92 }
    93 
    94 
    95 jQuery('.addFilter').click(function() {
    96   jQuery(this).prev('span.filter').clone().insertBefore($(this));
    97   jQuery(this).prev('span.filter').children('select[name="order_by[]"]').val('');
    98 
    99   fields++;
    100   updateRemoveFilterTrigger();
    101   updateAddFilterLink();
     85jQuery('#order_filters').on('click', '.removeFilter', function() {
     86  jQuery(this).parent('span.filter').remove();
     87  updateFilters();
    10288});
    10389
    104 updateRemoveFilterTrigger();
    105 updateAddFilterLink();
     90jQuery('#order_filters').on('change', 'select', updateFilters);
     91
     92jQuery('#order_filters .addFilter').click(function() {
     93  jQuery(this).prev('span.filter').clone().insertBefore(jQuery(this));
     94  jQuery(this).prev('span.filter').children('select').val('');
     95  updateFilters();
     96});
     97
     98updateFilters();
    10699}());
    107100{/footer_script}
Note: See TracChangeset for help on using the changeset viewer.