diff --git a/include/ajax.users.php b/include/ajax.users.php index 6291fd3627c44b8938b0e0688ca5fdf637939aaa..a0e3b234e616e8b091524aa33b54d7a6e6056738 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 26d4e21a1cc58cd8da129dcd683cfc01916e19aa..460248be22a420910f6bf54bf88a20a826a66727 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 684f2c98191fa3918fd200429688d2d3ff057409..d99c0ecb4f3a488af78cf4235c8e31c881d47c1d 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; }