From 7d52e00a51450bc4a080d4e21b7dda02c0a65191 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Thu, 14 Nov 2013 05:42:06 -0500
Subject: [PATCH] Fixed list sorting
---
interface/lib/classes/plugin_listview.inc.php | 91 ++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 81 insertions(+), 10 deletions(-)
diff --git a/interface/lib/classes/plugin_listview.inc.php b/interface/lib/classes/plugin_listview.inc.php
index b1bfbdb..30932b9 100644
--- a/interface/lib/classes/plugin_listview.inc.php
+++ b/interface/lib/classes/plugin_listview.inc.php
@@ -1,5 +1,33 @@
<?php
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
class plugin_listview extends plugin_base {
var $module;
@@ -28,13 +56,13 @@
// $app->listform->listDef["page_params"] = "&id=".$app->tform_actions->id."&next_tab=".$_SESSION["s"]["form"]["tab"];
$app->listform->listDef["page_params"] = "&id=".$this->form->id."&next_tab=".$_SESSION["s"]["form"]["tab"];
$listTpl->setVar('parent_id',$this->form->id);
+ $listTpl->setVar('theme', $_SESSION['s']['theme']);
// Generate the SQL for searching
+ $sql_where = "";
if($app->listform->listDef["auth"] != 'no') {
- if($_SESSION["s"]["user"]["typ"] == "admin") {
- $sql_where = "";
- } else {
- $sql_where = $app->tform->getAuthSQL('r')." and";
+ if($_SESSION["s"]["user"]["typ"] != "admin") {
+ $sql_where = $app->tform->getAuthSQL('r')." and";
}
}
@@ -53,6 +81,48 @@
if(isset($this->options["sql_order_by"])) {
$sql_order_by = $this->options["sql_order_by"];
}
+
+ //* Limit each page
+ $limits = array('5'=>'5','15'=>'15','25'=>'25','50'=>'50','100'=>'100','999999999' => 'all');
+
+ //* create options and set selected, if default -> 15 is selected
+ $options='';
+ foreach($limits as $key => $val){
+ $options .= '<option value="'.$key.'" '.(isset($_SESSION['search']['limit']) && $_SESSION['search']['limit'] == $key ? 'selected="selected"':'' ).(!isset($_SESSION['search']['limit']) && $key == '15' ? 'selected="selected"':'').'>'.$val.'</option>';
+ }
+ $listTpl->setVar('search_limit','<select name="search_limit" style="width:50px">'.$options.'</select>');
+
+
+ //Sorting
+ if(!isset($_SESSION['search'][$app->listform->listDef["name"]]['order'])){
+ $_SESSION['search'][$app->listform->listDef["name"]]['order'] = '';
+ }
+
+ if(!empty($_GET['orderby'])){
+ $order = str_replace('tbl_col_','',$_GET['orderby']);
+ //* Check the css class submited value
+ if (preg_match("/^[a-z\_]{1,}$/",$order)) {
+ if($_SESSION['search'][$app->listform->listDef["name"]]['order'] == $order){
+ $_SESSION['search'][$app->listform->listDef["name"]]['order'] = $order.' DESC';
+ } else {
+ $_SESSION['search'][$app->listform->listDef["name"]]['order'] = $order;
+ }
+ }
+ }
+
+ // If a manuel oder by like customers isset the sorting will be infront
+ if(!empty($_SESSION['search'][$app->listform->listDef["name"]]['order'])){
+ if(empty($sql_order_by)){
+ $sql_order_by = "ORDER BY ".$_SESSION['search'][$app->listform->listDef["name"]]['order'];
+ } else {
+ $sql_order_by = str_replace("ORDER BY ","ORDER BY ".$_SESSION['search'][$app->listform->listDef["name"]]['order'].', ',$sql_order_by);
+ }
+ }
+
+ // Loading language field
+ $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_".$app->listform->listDef['name']."_list.lng";
+ include($lng_file);
+ $listTpl->setVar($wb);
// Get the data
@@ -73,7 +143,12 @@
foreach($app->listform->listDef["item"] as $field) {
$key = $field["field"];
if($field['formtype'] == "SELECT") {
- $rec[$key] = $field['value'][$rec[$key]];
+ if(strtolower($rec[$key]) == 'y' or strtolower($rec[$key]) == 'n') {
+ // Set a additional image variable for bolean fields
+ $rec['_'.$key.'_'] = (strtolower($rec[$key]) == 'y')?'x16/tick_circle.png':'x16/cross_circle.png';
+ }
+ //* substitute value for select field
+ @$rec[$key] = $field['value'][$rec[$key]];
}
// Create a lowercase version of every item
$rec[$key.'_lowercase'] = strtolower($rec[$key]);
@@ -81,17 +156,13 @@
// The variable "id" contains always the index field
$rec["id"] = $rec[$idx_key];
+ $rec["delete_confirmation"] = $wb['delete_confirmation'];
$records_new[] = $rec;
}
}
$listTpl->setLoop('records',@$records_new);
-
- // Loading language field
- $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_".$app->listform->listDef['name']."_list.lng";
- include($lng_file);
- $listTpl->setVar($wb);
// Setting Returnto information in the session
$list_name = $app->listform->listDef["name"];
--
Gitblit v1.9.1