diff --git a/include/ajax.users.php b/include/ajax.users.php index a978c70543ec73c17587069d0c1f31ba9f4aa57a..97b9ae7dc068a76d96add06aaa69543a5f22e0c9 100644 --- a/include/ajax.users.php +++ b/include/ajax.users.php @@ -383,5 +383,48 @@ class UsersAjaxAPI extends AjaxController { return $ajax->createNote('U'.$id); } + function manageForms($user_id) { + $forms = DynamicFormEntry::forUser($user_id); + $info = array('action' => '#users/'.Format::htmlchars($user_id).'/forms/manage'); + include(STAFFINC_DIR . 'templates/form-manage.tmpl.php'); + } + + function updateForms($user_id) { + global $thisstaff; + + if (!$thisstaff) + Http::response(403, "Login required"); + elseif (!($user = User::lookup($user_id))) + Http::response(404, "No such user"); + elseif (!isset($_POST['forms'])) + Http::response(422, "Send updated forms list"); + + // Add new forms + $forms = DynamicFormEntry::forUser($user_id); + foreach ($_POST['forms'] as $sort => $id) { + $found = false; + foreach ($forms as $e) { + if ($e->get('form_id') == $id) { + $e->set('sort', $sort); + $e->save(); + $found = true; + break; + } + } + // New form added + if (!$found && ($new = DynamicForm::lookup($id))) { + $user->addForm($new, $sort); + } + } + + // Deleted forms + foreach ($forms as $idx => $e) { + if (!in_array($e->get('form_id'), $_POST['forms'])) + $e->delete(); + } + + Http::response(201, 'Successfully managed'); + } + } ?> diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index d26cfb484f21da64b87ec2ac93b41eb3121d4b0a..97348ff2c2e66dff5e50a4fce246925064eaf94d 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -615,6 +615,11 @@ class DynamicFormEntry extends VerySimpleModel { $this->object_id = $object_id; } + function forUser($user_id) { + return DynamicFormEntry::objects() + ->filter(array('object_id'=>$user_id, 'object_type'=>'U')); + } + function forOrganization($org_id) { return DynamicFormEntry::objects() ->filter(array('object_id'=>$org_id, 'object_type'=>'O')); diff --git a/include/class.user.php b/include/class.user.php index 89a35ab46f54b35e91a4810ffc654510e20e8e68..098e5611bdf75956b69e93db8355096b31405b45 100644 --- a/include/class.user.php +++ b/include/class.user.php @@ -230,6 +230,14 @@ class User extends UserModel { return $this->created; } + function addForm($form, $sort=1) { + $form = $form->instanciate(); + $form->set('sort', $sort); + $form->set('object_type', 'U'); + $form->set('object_id', $this->getId()); + $form->save(); + } + function to_json() { $info = array( diff --git a/include/staff/user-view.inc.php b/include/staff/user-view.inc.php index 4b267a9cc510d0bb4998ef34804bb1c885b014c4..8e6514447332f4ed3e421139000957ae41edd2c6 100644 --- a/include/staff/user-view.inc.php +++ b/include/staff/user-view.inc.php @@ -13,14 +13,10 @@ $org = $user->getOrganization(); title="Reload"><i class="icon-refresh"></i> <?php echo $user->getName(); ?></a></h2> </td> <td width="50%" class="right_align has_bottom_border"> - <?php - if ($account) { ?> <span class="action-button" data-dropdown="#action-dropdown-more"> <span ><i class="icon-cog"></i> More</span> <i class="icon-caret-down"></i> </span> - <?php - } ?> <a id="user-delete" class="action-button user-action" href="#users/<?php echo $user->getId(); ?>/delete"><i class="icon-trash"></i> Delete User</a> <?php @@ -53,6 +49,12 @@ $org = $user->getOrganization(); <?php } ?> + <li><a href="#ajax.php/users/<?php echo $user->getId(); + ?>/forms/manage" onclick="javascript: + $.dialog($(this).attr('href').substr(1), 201); + return false" + ><i class="icon-paste"></i> Manage Forms</a></li> + </ul> </div> </td> diff --git a/scp/ajax.php b/scp/ajax.php index 98dd7f132fa0c6a9830cc1e0db203dfce6645b89..75a3c4ac6597781f3cf366aef8aa9c4304dc4471 100644 --- a/scp/ajax.php +++ b/scp/ajax.php @@ -91,7 +91,9 @@ $dispatcher = patterns('', url_get('^/(?P<id>\d+)/org(?:/(?P<orgid>\d+))?$', 'updateOrg'), url_post('^/(?P<id>\d+)/org$', 'updateOrg'), url_get('^/staff$', 'searchStaff'), - url_post('^/(?P<id>\d+)/note$', 'createNote') + url_post('^/(?P<id>\d+)/note$', 'createNote'), + url_get('^/(?P<id>\d+)/forms/manage$', 'manageForms'), + url_post('^/(?P<id>\d+)/forms/manage$', 'updateForms') )), url('^/orgs', patterns('ajax.orgs.php:OrgsAjaxAPI', url_get('^$', 'search'),