From b5c1c88b6f5ece7ef18bdee980112bcc3fa4a130 Mon Sep 17 00:00:00 2001 From: Peter Rotich <peter@enhancesoft.com> Date: Sat, 23 Nov 2013 19:53:06 +0000 Subject: [PATCH] Add user lookup routines to the dispatcher Fix odd CSS error --- include/ajax.users.php | 51 ++++++++++++++++++++++++++++++++++++------ scp/ajax.php | 5 ++++- scp/css/scp.css | 6 ++--- 3 files changed, 51 insertions(+), 11 deletions(-) diff --git a/include/ajax.users.php b/include/ajax.users.php index 6291fd362..a0e3b234e 100644 --- a/include/ajax.users.php +++ b/include/ajax.users.php @@ -20,7 +20,7 @@ if(!defined('INCLUDE_DIR')) die('403'); include_once(INCLUDE_DIR.'class.ticket.php'); class UsersAjaxAPI extends AjaxController { - + /* Assumes search by emal for now */ function search() { @@ -54,14 +54,51 @@ class UsersAjaxAPI extends AjaxController { } - function getLookupForm() { - $user_info = array(); - if ($_REQUEST['id']) { - $user = User::lookup($_REQUEST['id']); - $user_info += array( - 'name'=>$user->getName(), 'email'=>$user->getEmail()); + function getUser() { + + if(($user=User::lookup($_REQUEST['id']))) + Http::response(201, $user->to_json()); + + $info = array('error' =>'Unknown or invalid user'); + + return self::_lookupform(null, $info); + } + + function addUser() { + + $errors = $info = array(); + $user = null; + + $form = UserForm::getInstance(); + if ($form->isValid()) { + if (($f=$form->getField('email')) + && User::lookup(array('emails__address'=>$f->getClean()))) + $f->addError('Email is assigned to another user'); + elseif (($user = User::fromForm($form->getClean()))) + Http::response(201, $user->to_json()); } + + if (!$info || !$info['error']) + $info += array('error' =>'Error adding user - try again!'); + + return self::_lookupform($form, $info); + } + + function getLookupForm() { + return self::_lookupform(); + } + + static function _lookupform($form=null, $info=array()) { + + if (!$info or !$info['title']) + $info += array('title' => 'User Lookup'); + + ob_start(); include(STAFFINC_DIR . 'templates/user-lookup.tmpl.php'); + $resp = ob_get_contents(); + ob_end_clean(); + return $resp; } + } ?> diff --git a/scp/ajax.php b/scp/ajax.php index 26d4e21a1..460248be2 100644 --- a/scp/ajax.php +++ b/scp/ajax.php @@ -61,7 +61,10 @@ $dispatcher = patterns('', )), url('^/users', patterns('ajax.users.php:UsersAjaxAPI', url_get('^$', 'search'), - url_get('^/lookup$', 'getLookupForm') + url_get('^/(?P<id>\d+)$', 'getUser'), + url_get('^/lookup$', 'getUser'), + url_get('^/lookup/form$', 'getLookupForm'), + url_post('^/lookup/form$', 'addUser') )), url('^/tickets/', patterns('ajax.tickets.php:TicketsAjaxAPI', url_get('^(?P<tid>\d+)/preview', 'previewTicket'), diff --git a/scp/css/scp.css b/scp/css/scp.css index 684f2c981..d99c0ecb4 100644 --- a/scp/css/scp.css +++ b/scp/css/scp.css @@ -45,11 +45,11 @@ a { #msg_info { margin: 0; padding: 5px; margin-bottom: 10px; color: #3a87ad; border: 1px solid #bce8f1; background-color: #d9edf7; } -#msg_notice { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #0a0; background: url('../images/icons/ok.png') 10px 50% no-repeat #e0ffe0; } +#msg_notice { margin: 0; padding: 5px 10px 5px 36px; margin-bottom: 10px; border: 1px solid #0a0; background: url('../images/icons/ok.png') 10px 50% no-repeat #e0ffe0; } -#msg_warning { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #f26522; background: url('../images/icons/alert.png') 10px 50% no-repeat #ffffdd; } +#msg_warning { margin: 0; padding: 5px 10px 5px 36px; margin-bottom: 10px; border: 1px solid #f26522; background: url('../images/icons/alert.png') 10px 50% no-repeat #ffffdd; } -#msg_error { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; margin-bottom: 10px; border: 1px solid #a00; background: url('../images/icons/error.png') 10px 50% no-repeat #fff0f0; } +#msg_error { margin: 0; padding: 5px 10px 5px 36px; margin-bottom: 10px; border: 1px solid #a00; background: url('../images/icons/error.png') 10px 50% no-repeat #fff0f0; } #notice_bar { margin: 0; padding: 5px 10px 5px 36px; height: 16px; line-height: 16px; border: 1px solid #0a0; background: url('../images/icons/ok.png') 10px 50% no-repeat #e0ffe0; } -- GitLab