getTabs()->add( 'announcements', array( 'active' => true, 'label' => $this->translate('Announcements'), 'title' => $this->translate('List All Announcements'), 'url' => Url::fromPath('announcements') ) ); $repo = new AnnouncementIniRepository(); $this->view->announcements = $repo ->select(array('id', 'author', 'message', 'start', 'end')) ->order('start', 'DESC'); } /** * Create an announcement */ public function newAction() { $this->assertPermission('admin'); $form = $this->prepareForm()->add(); $form->handleRequest(); $this->renderForm($form, $this->translate('New Announcement')); } /** * Update an announcement */ public function updateAction() { $this->assertPermission('admin'); $form = $this->prepareForm()->edit($this->params->getRequired('id')); try { $form->handleRequest(); } catch (NotFoundError $_) { $this->httpNotFound($this->translate('Announcement not found')); } $this->renderForm($form, $this->translate('Update Announcement')); } /** * Remove an announcement */ public function removeAction() { $this->assertPermission('admin'); $form = $this->prepareForm()->remove($this->params->getRequired('id')); try { $form->handleRequest(); } catch (NotFoundError $_) { $this->httpNotFound($this->translate('Announcement not found')); } $this->renderForm($form, $this->translate('Remove Announcement')); } public function acknowledgeAction() { $this->assertHttpMethod('POST'); $this->getResponse()->setHeader('X-Icinga-Container', 'ignore', true); $form = new AcknowledgeAnnouncementForm(); $form->handleRequest(); } /** * Assert permission admin and return a prepared RepositoryForm * * @return AnnouncementForm */ protected function prepareForm() { $form = new AnnouncementForm(); return $form ->setRepository(new AnnouncementIniRepository()) ->setRedirectUrl(Url::fromPath('announcements')); } }