From 3ea63b0425499a316c75983bde060140f91c5132 Mon Sep 17 00:00:00 2001 From: Peter Rotich <peter@enhancesoft.com> Date: Tue, 26 Nov 2013 03:51:00 +0000 Subject: [PATCH] Add ticket owner edit/manage --- include/ajax.tickets.php | 52 +++++++++++++++++++ include/staff/templates/user.tmpl.php | 75 +++++++++++++++++++++++++++ scp/ajax.php | 2 + 3 files changed, 129 insertions(+) create mode 100644 include/staff/templates/user.tmpl.php diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php index ef207f84d..aa4d99129 100644 --- a/include/ajax.tickets.php +++ b/include/ajax.tickets.php @@ -449,6 +449,58 @@ class TicketsAjaxAPI extends AjaxController { return $resp; } + function viewUser($tid) { + global $thisstaff; + + if(!$thisstaff + || !($ticket=Ticket::lookup($tid)) + || !$ticket->checkStaffAccess($thisstaff)) + Http::response(404, 'No such ticket'); + + + if(!($user = $ticket->getOwner())) + Http::response(404, 'Unknown user'); + + + $info = array( + 'title' => sprintf('Ticket #%s: %s', $ticket->getNumber(), $user->getName()) + ); + + ob_start(); + include(STAFFINC_DIR . 'templates/user.tmpl.php'); + $resp = ob_get_contents(); + ob_end_clean(); + return $resp; + + } + + function updateUser($tid) { + + global $thisstaff; + + if(!$thisstaff + || !($ticket=Ticket::lookup($tid)) + || !$ticket->checkStaffAccess($thisstaff) + || ! ($user = $ticket->getOwner())) + Http::response(404, 'No such ticket/user'); + + $errors = array(); + if($user->updateInfo($_POST, $errors)) + Http::response(201, $user->to_json()); + + $forms = $user->getForms(); + + $info = array( + 'title' => sprintf('Ticket #%s: %s', $ticket->getNumber(), $user->getName()) + ); + + ob_start(); + include(STAFFINC_DIR . 'templates/user.tmpl.php'); + $resp = ob_get_contents(); + ob_end_clean(); + return $resp; + } + function changeUserForm($tid) { global $thisstaff; diff --git a/include/staff/templates/user.tmpl.php b/include/staff/templates/user.tmpl.php new file mode 100644 index 000000000..92bbe3754 --- /dev/null +++ b/include/staff/templates/user.tmpl.php @@ -0,0 +1,75 @@ +<?php +if (!$info['title']) + $info['title'] = $user->getName(); +?> +<h3><?php echo $info['title']; ?></h3> +<b><a class="close" href="#"><i class="icon-remove-circle"></i></a></b> +<hr/> +<?php +if ($info['error']) { + echo sprintf('<p id="msg_error">%s</p>', $info['error']); +} elseif ($info['msg']) { + echo sprintf('<p id="msg_notice">%s</p>', $info['msg']); +} ?> +<div id="user-profile" style="display:<?php echo $forms ? 'none' : 'block'; ?>;margin:5px;"> + <i class="icon-user icon-4x pull-left icon-border"></i> + <?php + if ($ticket) { ?> + <a class="action-button pull-right change-user" style="overflow:inherit" + href="#tickets/<?php echo $ticket->getId(); ?>/change-user" ><i class="icon-user"></i> Change User</a> + <?php + } ?> + <div><b><a href="#" id="edituser"><i class="icon-edit"></i> <?php + echo $user->getName(); ?></a></b></div> + <div><<?php echo $user->getEmail(); ?>></div> + <div><?php echo $user->getPhoneNumber(); ?></div> + <div class="clear"></div> + <hr> + <div class="faded">Last updated <b><?php echo Format::db_datetime($user->getUpdateDate()); ?> </b></div> +</div> +<div id="user-form" style="display:<?php echo $forms ? 'block' : 'none'; ?>;"> +<div><p id="msg_info"><i class="icon-info-sign"></i> Please note that updates will be reflected system-wide.</p></div> +<?php +$action = '#users/'.$user->getId(); +if ($ticket && $ticket->getOwnerId() == $user->getId()) + $action = '#tickets/'.$ticket->getId().'/user'; +?> +<form method="post" class="user" action="<?php echo $action; ?>"> + <input type="hidden" name="uid" value="<?php echo $user->getId(); ?>" /> + <table width="100%"> + <?php + if (!$forms) $forms = $user->getForms(); + foreach ($forms as $form) + $form->render(); + ?> + </table> + <hr> + <p class="full-width"> + <span class="buttons" style="float:left"> + <input type="reset" value="Reset"> + <input type="button" name="cancel" class="<?php echo $user ? 'cancel' : 'close' ?>" value="Cancel"> + </span> + <span class="buttons" style="float:right"> + <input type="submit" value="Update User"> + </span> + </p> +</form> +</div> +<div class="clear"></div> +<script type="text/javascript"> +$(function() { + $('a#edituser').click( function(e) { + e.preventDefault(); + $('div#user-profile').hide(); + $('div#user-form').fadeIn(); + return false; + }); + + $(document).on('click', 'form.user input.cancel', function (e) { + e.preventDefault(); + $('div#user-form').hide(); + $('div#user-profile').fadeIn(); + return false; + }); +}); +</script> diff --git a/scp/ajax.php b/scp/ajax.php index 82a2ce3ef..ddf0ab893 100644 --- a/scp/ajax.php +++ b/scp/ajax.php @@ -69,6 +69,8 @@ $dispatcher = patterns('', url('^/tickets/', patterns('ajax.tickets.php:TicketsAjaxAPI', url_get('^(?P<tid>\d+)/change-user$', 'changeUserForm'), url_post('^(?P<tid>\d+)/change-user$', 'changeUser'), + url_get('^(?P<tid>\d+)/user$', 'viewUser'), + url_post('^(?P<tid>\d+)/user$', 'updateUser'), url_get('^(?P<tid>\d+)/preview', 'previewTicket'), url_post('^(?P<tid>\d+)/lock', 'acquireLock'), url_post('^(?P<tid>\d+)/lock/(?P<id>\d+)/renew', 'renewLock'), -- GitLab