From f056e83b408a84caaba8696e32e1ea3621141beb Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 27 Jul 2015 00:06:57 -0400 Subject: [PATCH] #209 Statuses can now be sorted --- admin/manage_statuses.php | 44 +++++++++++++++--------- install/mods-for-hesk/sql/installSql.php | 8 ++++- language/en/text.php | 1 + 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/admin/manage_statuses.php b/admin/manage_statuses.php index 1337ef2a..00963f41 100644 --- a/admin/manage_statuses.php +++ b/admin/manage_statuses.php @@ -22,7 +22,7 @@ if (isset($_REQUEST['a'])) { if ($_POST['a'] == 'create') { createStatus(); } elseif ($_POST['a'] == 'update') { updateStatus(); } elseif ($_GET['a'] == 'delete') { deleteStatus(); } - elseif ($_GET['a'] == 'up') { moveStatus('up'); } + elseif ($_GET['a'] == 'sort') { moveStatus(); } } @@ -84,10 +84,10 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); $numOfStatusesRS = hesk_dbQuery('SELECT 1 FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses`'); $numberOfStatuses = hesk_dbNumRows($numOfStatusesRS); - $statusesSql = 'SELECT `ID`, `IsAutocloseOption`, `TextColor`, `Closable`, `IsClosed` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses`'; - $closedStatusesSql = 'SELECT `ID`, `IsClosedByClient` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsClosed` = 1'; + $statusesSql = 'SELECT `ID`, `IsAutocloseOption`, `TextColor`, `Closable`, `IsClosed` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` ORDER BY `sort` ASC'; + $closedStatusesSql = 'SELECT `ID`, `IsClosedByClient` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsClosed` = 1 ORDER BY `sort` ASC'; $openStatusesSql = 'SELECT `ID`, `IsNewTicketStatus`, `IsStaffReopenedStatus`, `IsDefaultStaffReplyStatus` FROM - `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsClosed` = 0'; + `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsClosed` = 0 ORDER BY `sort` ASC'; $statusesRS = hesk_dbQuery($statusesSql); $statuses = array(); while ($row = hesk_dbFetchAssoc($statusesRS)) { @@ -350,7 +350,7 @@ function echoArrows($index, $numberOfStatuses, $statusId) { if ($index !== 1) { // Display move up - echo ' + echo ' '; } else { @@ -359,7 +359,9 @@ function echoArrows($index, $numberOfStatuses, $statusId) { if ($index !== $numberOfStatuses) { // Display move down - echo ''; + echo ' + '; } else { echo ''; } @@ -613,7 +615,7 @@ function updateStatus() { hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."text_to_status_xref` WHERE `status_id` = ".intval($statusId)); foreach (hesk_POST_array('name') as $language => $translation) { hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."text_to_status_xref` (`language`, `text`, `status_id`) - VALUES ('".hesk_dbEscape($language)."', '".hesk_dbEscape($translation)."', ".intval($newStatusId).")"); + VALUES ('".hesk_dbEscape($language)."', '".hesk_dbEscape($translation)."', ".intval($statusId).")"); } hesk_process_messages($hesklang['ticket_status_updated'],'manage_statuses.php','SUCCESS'); @@ -630,19 +632,27 @@ function deleteStatus() { hesk_process_messages($hesklang['ticket_status_deleted'],'manage_statuses.php','SUCCESS'); } -function moveStatus($direction) { - die(var_dump($_GET)); +function moveStatus() { + global $hesk_settings, $hesklang; - // Get the current position of the status - $statusId = hesk_GET('id'); - $rs = hesk_dbQuery("SELECT `sort` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `ID` = ".intval($statusId)); - $record = hesk_dbFetchAssoc($rs); + $statusId = intval(hesk_GET('id')); + $statusMove = intval(hesk_GET('move')); - if ($direction == 'up') { - $newSort = intval($record['sort']) - 1; - } else { - $newSort = intval($record['sort']) + 1; + hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` SET `sort` = `sort`+".intval($statusMove)." + WHERE `ID` = '".intval($statusId)."' LIMIT 1"); + + /* Update all category fields with new order */ + $res = hesk_dbQuery("SELECT `ID` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` ORDER BY `sort` ASC"); + + $i = 10; + while ($myStatus = hesk_dbFetchAssoc($res)) + { + hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` SET `sort`=".intval($i)." + WHERE `ID`='".intval($myStatus['ID'])."' LIMIT 1"); + $i += 10; } + + hesk_process_messages($hesklang['status_sort_updated'],'manage_statuses.php','SUCCESS'); } function save() { diff --git a/install/mods-for-hesk/sql/installSql.php b/install/mods-for-hesk/sql/installSql.php index a11fbd26..3e6c38ad 100644 --- a/install/mods-for-hesk/sql/installSql.php +++ b/install/mods-for-hesk/sql/installSql.php @@ -569,7 +569,13 @@ function execute240Scripts() { `status_id` INT NOT NULL, PRIMARY KEY (`id`)) ENGINE = MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"); executeQuery("ALTER TABLE `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` ADD COLUMN `sort` INT"); - executeQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` SET `sort` = `ID`"); + $statusesRs = executeQuery("SELECT `ID` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` ORDER BY `ID` ASC"); + $i = 10; + while ($myStatus = hesk_dbFetchAssoc($statusesRs)) { + hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` SET `sort`=".intval($i)." + WHERE `id`='".intval($myStatus['ID'])."' LIMIT 1"); + $i += 10; + } } function execute240FileUpdate() { diff --git a/language/en/text.php b/language/en/text.php index b07347c8..7735f7f0 100644 --- a/language/en/text.php +++ b/language/en/text.php @@ -46,6 +46,7 @@ $hesklang['ticket_status_updated'] = 'Ticket status successfully updated!'; $hesklang['ticket_status_deleted'] = 'Ticket status deleted!'; $hesklang['confirm_delete_status_question'] = 'Delete status?'; $hesklang['confirm_delete_status'] = 'Are you sure you want to delete this status? This cannot be undone!'; +$hesklang['status_sort_updated'] = 'Ticket status sort updated!'; // ADDED OR MODIFIED IN Mods for HESK 2.3.0 $hesklang['sm_icon'] = 'Icon';