From e349749d423b042afe7ce6f8dc006544d9e6710a Mon Sep 17 00:00:00 2001 From: mistic100 Date: Tue, 10 Jan 2012 20:50:25 +0000 Subject: bug:2540 When default photos order is only by rank, failure outside albums define a default order_by + some javascript for limit number of fields git-svn-id: http://piwigo.org/svn/trunk@12872 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/configuration.php | 14 +++++++-- admin/themes/default/template/configuration.tpl | 38 +++++++++++++++++++------ 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/admin/configuration.php b/admin/configuration.php index de8311b97..a59e815fc 100644 --- a/admin/configuration.php +++ b/admin/configuration.php @@ -135,15 +135,18 @@ if (isset($_POST['submit'])) { $order_by = array(); $order_by_inside_category = array(); + for ($i=0; $i5) continue; - if ($_POST['order_by_field'][$i] == '') + if ( $i >= (count($sort_fields)-1) ) break; // limit to the number of available parameters + if ( empty($_POST['order_by_field'][$i]) ) { array_push($page['errors'], l10n('No field selected')); + break; } else { + // there is no rank outside categories if ($_POST['order_by_field'][$i] != 'rank') { $order_by[] = $_POST['order_by_field'][$i].' '.$_POST['order_by_direction'][$i]; @@ -151,8 +154,15 @@ if (isset($_POST['submit'])) $order_by_inside_category[] = $_POST['order_by_field'][$i].' '.$_POST['order_by_direction'][$i]; } } + // must define a default order_by if user want to order by rank only + if ( count($order_by) == 0 ) + { + $order_by = array('id ASC'); + } + $_POST['order_by'] = 'ORDER BY '.implode(', ', $order_by); $_POST['order_by_inside_category'] = 'ORDER BY '.implode(', ', $order_by_inside_category); + unset($_POST['order_by_field']); } } diff --git a/admin/themes/default/template/configuration.tpl b/admin/themes/default/template/configuration.tpl index f426eaca9..982e20357 100644 --- a/admin/themes/default/template/configuration.tpl +++ b/admin/themes/default/template/configuration.tpl @@ -115,24 +115,44 @@ {if !$ORDER_BY_IS_CUSTOM} -{footer_script require='jquery'}{literal} +{footer_script require='jquery'} +// counters for displaying of addFilter link +fields = {$main.order_by|@count}; max_fields = {$main.order_field_options|@count}; max_fields--; + +{literal} +function updateAddFilterLink() { + if (fields >= max_fields) { + $('.addFilter').css('display', 'none'); + } else { + $('.addFilter').css('display', ''); + } +} + +function updateRemoveFilterTrigger() { + $(".removeFilter").click(function () { + $(this).parent('span.filter').remove(); + fields--; + updateAddFilterLink(); + }); +} + jQuery(document).ready(function () { $('.addFilter').click(function() { rel = $(this).attr('rel'); $(this).prev('span.filter').clone().insertBefore($(this)); $(this).prev('span.filter').children('select[name="order_by_field[]"]').val(''); $(this).prev('span.filter').children('select[name="order_by_direction[]"]').val('ASC'); - - $(".removeFilter").click(function () { - $(this).parent('span.filter').remove(); - }); + + fields++; + updateAddFilterLink(); + updateRemoveFilterTrigger(); }); - $(".removeFilter").click(function () { - $(this).parent('span.filter').remove(); - }); + updateRemoveFilterTrigger(); + updateAddFilterLink(); }); -{/literal}{/footer_script} +{/literal} +{/footer_script} {/if} -- cgit v1.2.3