diff --git a/admin_tickets.php b/admin_tickets.php index 4392ae8f..0e9d0438 100644 --- a/admin_tickets.php +++ b/admin_tickets.php @@ -197,12 +197,12 @@ if($page == 'tickets' else { $categories = ''; - $result = $db->query_first('SELECT `id`, `name` FROM `' . TABLE_PANEL_TICKET_CATS . '` WHERE `adminid` = "' . $userinfo['adminid'] . '" ORDER BY `name` ASC'); + $result = $db->query_first('SELECT `id`, `name` FROM `' . TABLE_PANEL_TICKET_CATS . '` WHERE `adminid` = "' . $userinfo['adminid'] . '" ORDER BY `logicalorder`, `name` ASC'); if(isset($result['name']) && $result['name'] != '') { - $result2 = $db->query('SELECT `id`, `name` FROM `' . TABLE_PANEL_TICKET_CATS . '` WHERE `adminid` = "' . $userinfo['adminid'] . '" ORDER BY `name` ASC'); + $result2 = $db->query('SELECT `id`, `name` FROM `' . TABLE_PANEL_TICKET_CATS . '` WHERE `adminid` = "' . $userinfo['adminid'] . '" ORDER BY `logicalorder`, `name` ASC'); while($row = $db->fetch_array($result2)) { @@ -435,10 +435,11 @@ elseif($page == 'categories' { $log->logAction(ADM_ACTION, LOG_NOTICE, "viewed admin_tickets::categories"); $fields = array( - 'name' => $lng['ticket']['category'] + 'name' => $lng['ticket']['category'], + 'logicalorder' => $lng['ticket']['logicalorder'] ); $paging = new paging($userinfo, $db, TABLE_PANEL_TICKET_CATS, $fields, $settings['panel']['paging'], $settings['panel']['natsorting']); - $result = $db->query("SELECT `main`.`id`, `main`.`name`, ( + $result = $db->query("SELECT `main`.`id`, `main`.`name`, `main`.`logicalorder`, ( SELECT COUNT(`sub`.`id`) FROM `" . TABLE_PANEL_TICKETS . "` `sub` WHERE `sub`.`category` = `main`.`id` AND `sub`.`answerto` = '0' AND `sub`.`adminid` = '" . $userinfo['adminid'] . "') @@ -481,6 +482,12 @@ elseif($page == 'categories' && $_POST['send'] == 'send') { $category = validate($_POST['category'], 'category'); + $order = validate($_POST['logicalorder'], 'logicalorder'); + + if($order < 1 || $order >= 1000) + { + $order = 1; + } if($category == '') { @@ -488,7 +495,7 @@ elseif($page == 'categories' } else { - ticket::addCategory($db, $category, $userinfo['adminid']); + ticket::addCategory($db, $category, $userinfo['adminid'], $order); $log->logAction(ADM_ACTION, LOG_INFO, "added ticket-category '" . $category . "'"); redirectTo($filename, Array('page' => $page, 's' => $s)); } @@ -505,6 +512,12 @@ elseif($page == 'categories' && $_POST['send'] == 'send') { $category = validate($_POST['category'], 'category'); + $order = validate($_POST['logicalorder'], 'logicalorder'); + + if($order < 1 || $order >= 1000) + { + $order = 1; + } if($category == '') { @@ -512,7 +525,7 @@ elseif($page == 'categories' } else { - ticket::editCategory($db, $category, $id); + ticket::editCategory($db, $category, $id, $order); $log->logAction(ADM_ACTION, LOG_INFO, "edited ticket-category '" . $category . "'"); redirectTo($filename, Array('page' => $page, 's' => $s)); } diff --git a/customer_tickets.php b/customer_tickets.php index 6f4f7404..e2209708 100644 --- a/customer_tickets.php +++ b/customer_tickets.php @@ -209,12 +209,12 @@ elseif($page == 'tickets') else { $categories = ''; - $result = $db->query_first('SELECT `id`, `name` FROM `' . TABLE_PANEL_TICKET_CATS . '` ORDER BY `name` ASC'); + $result = $db->query_first('SELECT `id`, `name` FROM `' . TABLE_PANEL_TICKET_CATS . '` ORDER BY `logicalorder`, `name` ASC'); if(isset($result['name']) && $result['name'] != '') { - $result2 = $db->query('SELECT `id`, `name` FROM `' . TABLE_PANEL_TICKET_CATS . '` ORDER BY `name` ASC'); + $result2 = $db->query('SELECT `id`, `name` FROM `' . TABLE_PANEL_TICKET_CATS . '` ORDER BY `logicalorder`, `name` ASC'); while($row = $db->fetch_array($result2)) { diff --git a/install/froxlor.sql b/install/froxlor.sql index 2258a54e..f07dae83 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -782,6 +782,7 @@ CREATE TABLE `panel_ticket_categories` ( `id` smallint(5) unsigned NOT NULL auto_increment, `name` varchar(60) NOT NULL, `adminid` int(11) NOT NULL, + `logicalorder` int(3) NOT NULL default '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM; diff --git a/install/updates/froxlor/0.9/update_0.9.inc.php b/install/updates/froxlor/0.9/update_0.9.inc.php index 417fe615..22c49492 100644 --- a/install/updates/froxlor/0.9/update_0.9.inc.php +++ b/install/updates/froxlor/0.9/update_0.9.inc.php @@ -481,6 +481,11 @@ if(isFroxlorVersion('0.9.5')) $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'defaultttl', '604800');"); lastStepStatus(0); + showUpdateStep("Updating database table structure for panel_ticket_categories"); + $db->query("ALTER TABLE `" . TABLE_PANEL_TICKET_CATS . "` ADD `logicalorder` int(3) NOT NULL default '1' AFTER `adminid`;"); + lastStepStatus(0); + updateToVersion('0.9.6-svn1'); } + ?> diff --git a/lib/classes/ticket/class.ticket.php b/lib/classes/ticket/class.ticket.php index fe8d25a8..0e012139 100644 --- a/lib/classes/ticket/class.ticket.php +++ b/lib/classes/ticket/class.ticket.php @@ -344,12 +344,19 @@ class ticket * Add a support-categories */ - static public function addCategory($_db, $_category = null, $_admin = 1) + static public function addCategory($_db, $_category = null, $_admin = 1, $_order = 1) { if($_category != null && $_category != '') { - $_db->query('INSERT INTO `' . TABLE_PANEL_TICKET_CATS . '` (`name`, `adminid`) VALUES ("' . $_db->escape($_category) . '", "' . (int)$_admin . '")'); + if($_order < 1) { + $_order = 1; + } + + $_db->query('INSERT INTO `' . TABLE_PANEL_TICKET_CATS . '` SET + `name` = "' . $_db->escape($_category) . '", + `adminid` = "' . (int)$_admin . '", + `logicalorder` = "' . (int)$_order . '"'); return true; } @@ -360,13 +367,19 @@ class ticket * Edit a support-categories */ - static public function editCategory($_db, $_category = null, $_id = 0) + static public function editCategory($_db, $_category = null, $_id = 0, $_order = 1) { if($_category != null && $_category != '' && $_id != 0) { - $_db->query('UPDATE `' . TABLE_PANEL_TICKET_CATS . '` SET `name` = "' . $_db->escape($_category) . '" + if($_order < 1) { + $_order = 1; + } + + $_db->query('UPDATE `' . TABLE_PANEL_TICKET_CATS . '` SET + `name` = "' . $_db->escape($_category) . '", + `logicalorder` = "' . (int)$_order . '" WHERE `id` = "' . (int)$_id . '"'); return true; } diff --git a/lng/english.lng.php b/lng/english.lng.php index 7399ba1e..6411a57a 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -1362,6 +1362,9 @@ $lng['admin']['configfiles']['compactoverview'] = 'Compact-overview'; $lng['admin']['lastlogin_succ'] = 'Last login'; $lng['panel']['neverloggedin'] = 'No login yet'; +// ADDED IN FROXLOR 0.9.6-svn1 $lng['serversettings']['defaultttl'] = 'Domain TTL for bind in seconds (default \'604800\' = 1 week)'; +$lng['ticket']['logicalorder'] = 'Logical order'; +$lng['ticket']['orderdesc'] = 'Here you can define your own logical order for the ticket-category. Use 1 - 999, lower numbers are displayed first.'; ?> diff --git a/lng/german.lng.php b/lng/german.lng.php index ae678086..2fc8814f 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1358,6 +1358,9 @@ $lng['success']['settingssaved'] = 'Die Einstellungen wurden erfolgreich gespeic $lng['admin']['lastlogin_succ'] = 'Letzte Anmeldung'; $lng['panel']['neverloggedin'] = 'Keine Anmeldung bisher'; +// ADDED IN FROXLOR 0.9.6-svn1 $lng['serversettings']['defaultttl'] = 'Domain TTL für Bind in Sekunden (default \'604800\' = 1 Woche)'; +$lng['ticket']['logicalorder'] = 'Logische Sortierung'; +$lng['ticket']['orderdesc'] = 'Hier kann eine logische Sortierung für die Ticket-Kategorien angegeben werden. Benutze 1 - 999, niedrigere Zahlen werden zuerst angezeigt.'; ?> diff --git a/templates/admin/ticket/categories.tpl b/templates/admin/ticket/categories.tpl index 04fe6c68..e829b83f 100644 --- a/templates/admin/ticket/categories.tpl +++ b/templates/admin/ticket/categories.tpl @@ -6,7 +6,7 @@ $header
{$lng['menue']['ticket']['categories']} |
- {$searchcode} | +{$searchcode} | |||||||||||||||||||||||||||||||||||||||||||||
| {$lng['ticket']['category']} {$arrowcode['name']} | +{$lng['ticket']['logicalorder']} {$arrowcode['logicalorder']} | {$lng['ticket']['ticketcount']} |
{$sortcode} | ||||||||||||||||||||||||||||||||||||||||||||
| {$pagingcode} | +{$pagingcode} | ||||||||||||||||||||||||||||||||||||||||||||||
| {$lng['ticket']['ticket_newcateory']} | +{$lng['ticket']['ticket_newcateory']} | ||||||||||||||||||||||||||||||||||||||||||||||
{$lng['ticket']['ticket_editcateory']}
{$lng['ticket']['ticket_newcateory']}