From 3151ece7dfac0f4dd6193bb83f3a8fee6a634579 Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Sat, 27 Sep 2014 22:14:49 -0400 Subject: [PATCH] #39 making more progress on parent/child relationships Still need to update childs when merging/deleting tickets, and need to add the ability to assign its parent, and to delete a parent/child relationship --- admin/admin_ticket.php | 53 +++++++++++++++++++++++++++++++++++++++++ js/nuMods-javascript.js | 10 ++++++++ language/en/text.php | 5 ++++ 3 files changed, 68 insertions(+) diff --git a/admin/admin_ticket.php b/admin/admin_ticket.php index c84443f4..5a4eee24 100644 --- a/admin/admin_ticket.php +++ b/admin/admin_ticket.php @@ -309,6 +309,42 @@ if ( ($can_reply || $can_edit) && isset($_POST['h']) && isset($_POST['m']) && is hesk_process_messages($hesklang['twu'],'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999),'SUCCESS'); } +/* Add child action */ +if (($can_reply || $can_edit) && isset($_POST['childTrackingId'])) { + //-- Make sure this isn't the same ticket or one of its merged tickets. + $mergedTickets = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` WHERE `trackid` = + \''.hesk_dbEscape($trackingID).'\' AND `merged` LIKE \'#'.hesk_dbEscape($_POST['childTrackingId']).'\''); + if ($_POST['childTrackingId'] == $trackingID || $mergedTickets->num_rows > 0) { + hesk_process_messages($hesklang['child_is_itself'], 'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999)); + } + + //-- Does the child exist? + $existRs = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` WHERE `trackid` = \''.hesk_dbEscape($_POST['childTrackingId']).'\''); + if ($existRs->num_rows == 0) { + //-- Maybe it was merged? + $existRs = hesk_dbQuery('SELECT `trackid` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` WHERE `merged` LIKE \'#'.hesk_dbEscape($_POST['childTrackingId']).'#\''); + if ($existRs->num_rows > 0) { + //-- Yes, it was merged. Set the child to the "new" ticket; not the merged one. + $exist = $existRs->fetch_assoc(); + $_POST['childTrackingId'] = $exist['trackid']; + } else { + hesk_process_messages(sprintf($hesklang['child_does_not_exist'], $_POST['childTrackingId']), 'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999)); + } + } + + //-- Check if the ticket is already a child. + $childRs = hesk_dbQuery('SELECT * FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` WHERE `parent` = '.$ticket['id'].' AND `trackid` = \''.$_POST['childTrackingId'].'\''); + if ($childRs->num_rows > 0) { + hesk_process_messages(sprintf($hesklang['is_child_already'], $_POST['childTrackingId']), 'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999), 'NOTICE'); + } + + hesk_dbQuery('UPDATE `'.hesk_dbEscape($hesk_settings['db_pfix']).'tickets` SET `parent` = '.$ticket['id'].' WHERE `trackid` = \''.$_POST['childTrackingId'].'\''); + hesk_process_messages(sprintf($hesklang['child_added'], $_POST['childTrackingId']), 'admin_ticket.php?track='.$trackingID.'&Refresh='.mt_rand(10000,99999), 'SUCCESS'); +} + +/* Delete child action */ +//TODO Populate this + /* Delete attachment action */ if (isset($_GET['delatt']) && hesk_token_check()) { @@ -528,6 +564,23 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); echo $hesklang['none']; } ?>

+ +

'.$hesklang['add_child'].''; ?>

+ + diff --git a/js/nuMods-javascript.js b/js/nuMods-javascript.js index 71d1bb31..2ac14462 100644 --- a/js/nuMods-javascript.js +++ b/js/nuMods-javascript.js @@ -40,4 +40,14 @@ function toggleFilterCheckboxes(show) { } } +function toggleChildrenForm(show) { + if (show) { + $('#childrenForm').show(); + $('#addChildText').hide(); + } else { + $('#childrenForm').hide(); + $('#addChildText').show(); + } +} + jQuery(document).ready(loadJquery); diff --git a/language/en/text.php b/language/en/text.php index e659d01b..ff2bd438 100644 --- a/language/en/text.php +++ b/language/en/text.php @@ -62,6 +62,11 @@ $hesklang['email_banned'] = 'The email address you have entered has been banned $hesklang['none'] = 'None'; $hesklang['parent'] = 'Parent'; $hesklang['children'] = 'Children'; +$hesklang['add_child'] = 'Add Child'; +$hesklang['child_added'] = 'Successfully added %s as a child to this ticket.'; //%s: the child tracking ID +$hesklang['is_child_already'] = '%s is already a child of this ticket.'; //%s: the child tracking ID +$hesklang['child_does_not_exist'] = '%s is not a valid Tracking ID!'; //%s: the child tracking ID +$hesklang['child_is_itself'] = 'You cannot set a ticket as a child of itself.'; // ADDED OR MODIFIED IN NuMods 1.3.1 $hesklang['autorefresh'] = 'Autorefresh:';