aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormistic100 <mistic@piwigo.org>2013-11-15 15:41:11 +0000
committermistic100 <mistic@piwigo.org>2013-11-15 15:41:11 +0000
commit80d803116771269f8118916c77d02b9b142a8c1b (patch)
tree7caebfe0658bde0753e017a07224de5b81502c88
parent1951be5673a9e495d70c246b3cdbb381b264c596 (diff)
bug 2883: filter order_by for duplicated values
git-svn-id: http://piwigo.org/svn/trunk@25489 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin/configuration.php10
-rw-r--r--admin/themes/default/template/configuration.tpl45
2 files changed, 28 insertions, 27 deletions
diff --git a/admin/configuration.php b/admin/configuration.php
index 4aad5f49d..4b5329139 100644
--- a/admin/configuration.php
+++ b/admin/configuration.php
@@ -152,9 +152,17 @@ if (isset($_POST['submit']))
{
if ( !empty($_POST['order_by']) )
{
+ $used = array();
foreach ($_POST['order_by'] as $i => $val)
{
- if (empty($val)) unset($_POST['order_by'][$i]);
+ if (empty($val) or isset($used[$val]))
+ {
+ unset($_POST['order_by'][$i]);
+ }
+ else
+ {
+ $used[$val] = true;
+ }
}
if ( !count($_POST['order_by']) )
{
diff --git a/admin/themes/default/template/configuration.tpl b/admin/themes/default/template/configuration.tpl
index bb5531e60..5af1c18c5 100644
--- a/admin/themes/default/template/configuration.tpl
+++ b/admin/themes/default/template/configuration.tpl
@@ -68,41 +68,34 @@
{if !isset($ORDER_BY_IS_CUSTOM)}
{footer_script require='jquery'}
(function(){
-// counters for displaying of addFilter link
-var fields = {$main.order_by|@count},
- max_fields = Math.ceil({$main.order_by_options|@count}/2);
+var max_fields = Math.ceil({$main.order_by_options|@count}/2);
-function updateAddFilterLink() {
- if (fields >= max_fields) {
- jQuery('.addFilter').css('display', 'none');
- } else {
- jQuery('.addFilter').css('display', '');
- }
-}
+function updateFilters() {
+ var $selects = jQuery('#order_filters select');
-function updateRemoveFilterTrigger() {
- jQuery(".removeFilter").click(function() {
- jQuery(this).parent('span.filter').remove();
- fields--;
- updateAddFilterLink();
+ jQuery('#order_filters .addFilter').toggle($selects.length <= max_fields);
+ jQuery('#order_filters .removeFilter').css('display', '').filter(':first').css('display', 'none');
+
+ $selects.find('option').removeAttr('disabled');
+ $selects.each(function() {
+ $selects.not(this).find('option[value="'+ jQuery(this).val() +'"]').attr('disabled', 'disabled');
});
-
- jQuery(".removeFilter").css('display', '');
- jQuery(".filter:first .removeFilter").css('display', 'none');
}
+jQuery('#order_filters').on('click', '.removeFilter', function() {
+ jQuery(this).parent('span.filter').remove();
+ updateFilters();
+});
-jQuery('.addFilter').click(function() {
- jQuery(this).prev('span.filter').clone().insertBefore($(this));
- jQuery(this).prev('span.filter').children('select[name="order_by[]"]').val('');
+jQuery('#order_filters').on('change', 'select', updateFilters);
- fields++;
- updateRemoveFilterTrigger();
- updateAddFilterLink();
+jQuery('#order_filters .addFilter').click(function() {
+ jQuery(this).prev('span.filter').clone().insertBefore(jQuery(this));
+ jQuery(this).prev('span.filter').children('select').val('');
+ updateFilters();
});
-updateRemoveFilterTrigger();
-updateAddFilterLink();
+updateFilters();
}());
{/footer_script}
{/if}