Changeset 25489


Ignore:
Timestamp:
11/15/13 16:41:11 (6 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.