aboutsummaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
Diffstat (limited to 'admin')
-rw-r--r--admin/configuration.php14
-rw-r--r--admin/themes/default/template/configuration.tpl38
2 files changed, 41 insertions, 11 deletions
diff --git a/admin/configuration.php b/admin/configuration.php
index 53916199f..8488aa489 100644
--- a/admin/configuration.php
+++ b/admin/configuration.php
@@ -134,15 +134,18 @@ if (isset($_POST['submit']))
{
$order_by = array();
$order_by_inside_category = array();
+
for ($i=0; $i<count($_POST['order_by_field']); $i++)
{
- if ($i>5) 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];
@@ -150,8 +153,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 205d5ffb0..c0070b1a5 100644
--- a/admin/themes/default/template/configuration.tpl
+++ b/admin/themes/default/template/configuration.tpl
@@ -115,24 +115,44 @@
</li>
{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}
</ul>
</fieldset>