/** * Show a user */ public function showAction() { $this->assertPermission('config/authentication/users/show'); $userName = $this->params->getRequired('user'); $backend = $this->getUserBackend($this->params->getRequired('backend')); $user = $backend->select(array('user_name', 'is_active', 'created_at', 'last_modified'))->where('user_name', $userName)->fetchRow(); if ($user === false) { $this->httpNotFound(sprintf($this->translate('User "%s" not found'), $userName)); } $memberships = $this->loadMemberships(new User($userName))->select(); $filterEditor = Widget::create('filterEditor')->setQuery($memberships)->setSearchColumns(array('group_name'))->preserveParams('limit', 'sort', 'dir', 'view', 'backend', 'user')->ignoreParams('page')->handleRequest($this->getRequest()); $memberships->applyFilter($filterEditor->getFilter()); $this->setupFilterControl($filterEditor); $this->setupPaginationControl($memberships); $this->setupLimitControl(); $this->setupSortControl(array('group_name' => $this->translate('Group')), $memberships); if ($this->hasPermission('config/authentication/groups/edit')) { $extensibleBackends = $this->loadUserGroupBackends('Icinga\\Data\\Extensible'); $this->view->showCreateMembershipLink = !empty($extensibleBackends); } else { $this->view->showCreateMembershipLink = false; } $this->view->user = $user; $this->view->backend = $backend; $this->view->memberships = $memberships; $this->createShowTabs($backend->getName(), $userName)->activate('user/show'); if ($this->hasPermission('config/authentication/groups/edit')) { $removeForm = new Form(); $removeForm->setUidDisabled(); $removeForm->addElement('hidden', 'user_name', array('isArray' => true, 'value' => $userName, 'decorators' => array('ViewHelper'))); $removeForm->addElement('hidden', 'redirect', array('value' => Url::fromPath('user/show', array('backend' => $backend->getName(), 'user' => $userName)), 'decorators' => array('ViewHelper'))); $removeForm->addElement('button', 'btn_submit', array('escape' => false, 'type' => 'submit', 'class' => 'link-like', 'value' => 'btn_submit', 'decorators' => array('ViewHelper'), 'label' => $this->view->icon('trash'), 'title' => $this->translate('Cancel this membership'))); $this->view->removeForm = $removeForm; } }
/** * Remove a group member */ public function removememberAction() { $this->assertPermission('config/authentication/groups/edit'); $this->assertHttpMethod('POST'); $groupName = $this->params->getRequired('group'); $backend = $this->getUserGroupBackend($this->params->getRequired('backend'), 'Icinga\\Data\\Reducible'); $form = new Form(array('onSuccess' => function ($form) use($groupName, $backend) { foreach ($form->getValue('user_name') as $userName) { try { $backend->delete('group_membership', Filter::matchAll(Filter::where('group_name', $groupName), Filter::where('user_name', $userName))); Notification::success(sprintf(t('User "%s" has been removed from group "%s"'), $userName, $groupName)); } catch (NotFoundError $e) { throw $e; } catch (Exception $e) { Notification::error($e->getMessage()); } } $redirect = $form->getValue('redirect'); if (!empty($redirect)) { $form->setRedirectUrl(htmlspecialchars_decode($redirect)); } return true; })); $form->setUidDisabled(); $form->setSubmitLabel('btn_submit'); // Required to ensure that isSubmitted() is called $form->addElement('hidden', 'user_name', array('required' => true, 'isArray' => true)); $form->addElement('hidden', 'redirect'); try { $form->handleRequest(); } catch (NotFoundError $_) { $this->httpNotFound(sprintf($this->translate('Group "%s" not found'), $groupName)); } }
/** * Unshare a navigation item */ public function unshareAction() { $this->assertPermission('config/application/navigation'); $this->assertHttpMethod('POST'); // TODO: I'd like these being form fields $itemType = $this->params->getRequired('type'); $itemOwner = $this->params->getRequired('owner'); $navigationConfigForm = new NavigationConfigForm(); $navigationConfigForm->setUser($this->Auth()->getUser()); $navigationConfigForm->setShareConfig(Config::navigation($itemType)); $navigationConfigForm->setUserConfig(Config::navigation($itemType, $itemOwner)); $form = new Form(array('onSuccess' => function ($form) use($navigationConfigForm) { $itemName = $form->getValue('name'); try { $newConfig = $navigationConfigForm->unshare($itemName); if ($navigationConfigForm->save()) { if ($newConfig->getSection($itemName)->type === 'menu-item') { $form->getResponse()->setRerenderLayout(); } Notification::success(sprintf(t('Navigation item "%s" has been unshared'), $form->getValue('name'))); } else { // TODO: It failed obviously to write one of the configs, so we're leaving the user in // a inconsistent state. Luckily, it's nothing lost but possibly duplicated... Notification::error(sprintf(t('Failed to unshare navigation item "%s"'), $form->getValue('name'))); } } catch (NotFoundError $e) { throw $e; } catch (Exception $e) { Notification::error($e->getMessage()); } $redirect = $form->getValue('redirect'); if (!empty($redirect)) { $form->setRedirectUrl(htmlspecialchars_decode($redirect)); } return true; })); $form->setUidDisabled(); $form->setSubmitLabel('btn_submit'); // Required to ensure that isSubmitted() is called $form->addElement('hidden', 'name', array('required' => true)); $form->addElement('hidden', 'redirect'); try { $form->handleRequest(); } catch (NotFoundError $_) { $this->httpNotFound(sprintf($this->translate('Navigation item "%s" not found'), $form->getValue('name'))); } }
/** * Renders this widget and returns the HTML as a string * * @return string */ public function render() { $form = new Form(); $form->setAttrib('class', 'inline'); $form->setMethod('GET'); $form->setUidDisabled(); $form->setTokenDisabled(); $form->setName($this->name); $form->addElement('select', $this->parameter, array('label' => $this->label, 'multiOptions' => $this->values, 'autosubmit' => true)); if ($this->request) { $form->populate($this->request->getParams()); } return $form; }
/** * Render this widget * * @return string The HTML of the widget as a string */ public function render() { $view = $this->view(); $form = new Form(); $form->setAttrib('class', 'inline'); $form->setMethod('GET'); $form->setAction(Url::fromPath('/filter')); $form->setTokenDisabled(); $form->addElement('text', 'query', array('name' => 'query', 'placeholder' => 'Add filter')); $query = $form->getElement('query')->setDecorators(array('ViewHelper')); $badges = new FilterBadgeRenderer($this->initialFilter); return '<div class="pull-right">' . $badges->render($view) . '</div>' . $form; $html = str_replace('{{FORM}}', $form->render($view), self::$TPL); $html = '<div class="input-append">' . $html . '</div>'; return str_replace('{{BADGES}}', $badges->render($view), $html); }
/** * Render this SortBox as HTML * * @return string */ public function render() { $columnForm = new Form(); $columnForm->setTokenDisabled(); $columnForm->setName($this->name . '-column'); $columnForm->setAttrib('class', 'inline'); $columnForm->addElement('select', 'sort', array('autosubmit' => true, 'label' => $this->view()->translate('Sort by'), 'multiOptions' => $this->sortFields, 'decorators' => array(array('ViewHelper'), array('Label')))); $orderForm = new Form(); $orderForm->setTokenDisabled(); $orderForm->setName($this->name . '-order'); $orderForm->setAttrib('class', 'inline'); $orderForm->addElement('select', 'dir', array('autosubmit' => true, 'label' => $this->view()->translate('Direction', 'sort direction'), 'multiOptions' => array('asc' => $this->view()->translate('Ascending', 'sort direction'), 'desc' => $this->view()->translate('Descending', 'sort direction')), 'decorators' => array(array('ViewHelper'), array('Label', array('class' => 'no-js'))))); $column = null; if ($this->request) { $url = $this->request->getUrl(); if ($url->hasParam('sort')) { $column = $url->getParam('sort'); if ($url->hasParam('dir')) { $direction = $url->getParam('dir'); } else { list($_, $direction) = $this->getSortDefaults($column); } } elseif ($url->hasParam('dir')) { $direction = $url->getParam('dir'); list($column, $_) = $this->getSortDefaults(); } } if ($column === null) { list($column, $direction) = $this->getSortDefaults(); } $columnForm->populate(array('sort' => $column)); $orderForm->populate(array('dir' => $direction)); return '<div class="sort-control">' . $columnForm . $orderForm . '</div>'; }
/** * Render the form for removing a dashboard elemetn * * @return string The html representation of the form */ protected function getRemoveForm() { // TODO: temporarily disabled, should point to a form asking for confirmal return ''; $removeUrl = Url::fromPath('/dashboard/removecomponent', array('pane' => $this->pane->getName(), 'component' => $this->getTitle())); $form = new Form(); $form->setMethod('POST'); $form->setAttrib('class', 'inline'); $form->setAction($removeUrl); $form->addElement(new Zend_Form_Element_Button('remove_pane_btn', array('class' => 'link-like pull-right', 'type' => 'submit', 'label' => 'x'))); return $form; }
/** * Render this SortBox as HTML * * @return string */ public function render() { $columnForm = new Form(); $columnForm->setTokenDisabled(); $columnForm->setName($this->name . '-column'); $columnForm->setAttrib('class', 'inline'); $columnForm->addElement('select', 'sort', array('autosubmit' => true, 'label' => $this->view()->translate('Sort by'), 'multiOptions' => $this->sortFields, 'decorators' => array(array('ViewHelper'), array('Label')))); $column = null; if ($this->request) { $url = $this->request->getUrl(); if ($url->hasParam('sort')) { $column = $url->getParam('sort'); if ($url->hasParam('dir')) { $direction = $url->getParam('dir'); } else { list($_, $direction) = $this->getSortDefaults($column); } } elseif ($url->hasParam('dir')) { $direction = $url->getParam('dir'); list($column, $_) = $this->getSortDefaults(); } } if ($column === null) { list($column, $direction) = $this->getSortDefaults(); } // TODO(el): ToggleButton :) $toggle = array('asc' => 'sort-name-down', 'desc' => 'sort-name-up'); unset($toggle[$direction]); $newDirection = key($toggle); $icon = current($toggle); $orderForm = new Form(); $orderForm->setTokenDisabled(); $orderForm->setName($this->name . '-order'); $orderForm->setAttrib('class', 'inline sort-direction-control'); $orderForm->addElement('hidden', 'dir'); $orderForm->addElement('button', 'btn_submit', array('ignore' => true, 'type' => 'submit', 'label' => $this->view()->icon($icon), 'decorators' => array('ViewHelper'), 'escape' => false, 'class' => 'link-button spinner', 'value' => 'submit', 'title' => t('Change sort direction'))); $columnForm->populate(array('sort' => $column)); $orderForm->populate(array('dir' => $newDirection)); return '<div class="sort-control">' . $columnForm . $orderForm . '</div>'; }
/** * Renders this widget via the given view and returns the * HTML as a string * * @return string */ public function render() { $form = new Form(); $form->setAttrib('class', 'inline'); $form->setMethod('GET'); $form->setTokenDisabled(); $form->setName($this->name); $form->addElement('select', 'sort', array('label' => 'Sort By', 'multiOptions' => $this->sortFields, 'class' => 'autosubmit')); $form->addElement('select', 'dir', array('multiOptions' => array('desc' => 'Desc', 'asc' => 'Asc'), 'class' => 'autosubmit')); $sort = $form->getElement('sort')->setDecorators(array('ViewHelper')); $dir = $form->getElement('dir')->setDecorators(array('ViewHelper')); // $form->enableAutoSubmit(array('sort', 'dir')); // $form->addElement($this->createFallbackSubmitButton()); if ($this->request) { $form->setAction($this->request->getRequestUri()); $form->populate($this->request->getParams()); } return $form; }
/** * Render this SortBox as HTML * * @return string */ public function render() { $form = new Form(); $form->setTokenDisabled(); $form->setName($this->name); $form->setAttrib('class', 'sort-control inline'); $form->addElement('select', 'sort', array('autosubmit' => true, 'label' => $this->view()->translate('Sort by'), 'multiOptions' => $this->sortFields)); $form->getElement('sort')->setDecorators(array(array('ViewHelper'), array('Label'))); $form->addElement('select', 'dir', array('autosubmit' => true, 'multiOptions' => array('asc' => 'Asc', 'desc' => 'Desc'), 'decorators' => array(array('ViewHelper')))); if ($this->request) { $form->populate($this->request->getParams()); } return $form; }