136 lines
3.8 KiB
PHP
136 lines
3.8 KiB
PHP
<?php
|
|
/* Icinga Web 2 | (c) 2016 Icinga Development Team | GPLv2+ */
|
|
|
|
namespace Icinga\Forms\Announcement;
|
|
|
|
use DateTime;
|
|
use Icinga\Authentication\Auth;
|
|
use Icinga\Data\Filter\Filter;
|
|
use Icinga\Forms\RepositoryForm;
|
|
|
|
/**
|
|
* Create, update and delete announcements
|
|
*/
|
|
class AnnouncementForm extends RepositoryForm
|
|
{
|
|
protected function fetchEntry()
|
|
{
|
|
$entry = parent::fetchEntry();
|
|
if ($entry !== false) {
|
|
if ($entry->start !== null) {
|
|
$entry->start = (new DateTime())->setTimestamp($entry->start);
|
|
}
|
|
if ($entry->end !== null) {
|
|
$entry->end = (new DateTime())->setTimestamp($entry->end);
|
|
}
|
|
}
|
|
|
|
return $entry;
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function createInsertElements(array $formData)
|
|
{
|
|
$this->addElement(
|
|
'text',
|
|
'author',
|
|
array(
|
|
'disabled' => ! $this->getRequest()->isApiRequest(),
|
|
'required' => true,
|
|
'value' => Auth::getInstance()->getUser()->getUsername()
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'textarea',
|
|
'message',
|
|
array(
|
|
'description' => $this->translate('The message to display to users'),
|
|
'label' => $this->translate('Message'),
|
|
'required' => true
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'dateTimePicker',
|
|
'start',
|
|
array(
|
|
'description' => $this->translate('The time to display the announcement from'),
|
|
'label' => $this->translate('Start'),
|
|
'placeholder' => new DateTime('tomorrow'),
|
|
'required' => true
|
|
)
|
|
);
|
|
$this->addElement(
|
|
'dateTimePicker',
|
|
'end',
|
|
array(
|
|
'description' => $this->translate('The time to display the announcement until'),
|
|
'label' => $this->translate('End'),
|
|
'placeholder' => new DateTime('tomorrow +1day'),
|
|
'required' => true
|
|
)
|
|
);
|
|
|
|
$this->setTitle($this->translate('Create a new announcement'));
|
|
$this->setSubmitLabel($this->translate('Create'));
|
|
}
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function createUpdateElements(array $formData)
|
|
{
|
|
$this->createInsertElements($formData);
|
|
$this->setTitle(sprintf($this->translate('Edit announcement %s'), $this->getIdentifier()));
|
|
$this->setSubmitLabel($this->translate('Save'));
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function createDeleteElements(array $formData)
|
|
{
|
|
$this->setTitle(sprintf($this->translate('Remove announcement %s?'), $this->getIdentifier()));
|
|
$this->setSubmitLabel($this->translate('Yes'));
|
|
$this->setAttrib('class', 'icinga-controls');
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function createFilter()
|
|
{
|
|
return Filter::where('id', $this->getIdentifier());
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function getInsertMessage($success)
|
|
{
|
|
return $success
|
|
? $this->translate('Announcement created')
|
|
: $this->translate('Failed to create announcement');
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function getUpdateMessage($success)
|
|
{
|
|
return $success
|
|
? $this->translate('Announcement updated')
|
|
: $this->translate('Failed to update announcement');
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
protected function getDeleteMessage($success)
|
|
{
|
|
return $success
|
|
? $this->translate('Announcement removed')
|
|
: $this->translate('Failed to remove announcement');
|
|
}
|
|
}
|