* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2 * @author Icinga Development Team */ // {{{ICINGA_LICENSE_HEADER}}} namespace Monitoring\Form\Command; use Icinga\Web\Form; use Icinga\Web\Form\Element\Note; use \Zend_Form_Element_Hidden; /** * Class AbstractCommand */ abstract class AbstractCommand extends Form { /** * Label for submit button * * If omitted, no button will be shown. * * @var string */ private $submitLabel; /** * Label for cancel button * * If omitted, no button will be shown. * * @var string */ private $cancelLabel; /** * Array of messages * @var string[] */ private $notes = array(); /** * Setter for cancel label * @param string $cancelLabel */ public function setCancelLabel($cancelLabel) { $this->cancelLabel = $cancelLabel; } /** * Getter for cancel label * @return string */ public function getCancelLabel() { return $this->cancelLabel; } /** * Setter for submit label * @param string $submitLabel */ public function setSubmitLabel($submitLabel) { $this->submitLabel = $submitLabel; } /** * Getter for submit label * @return string */ public function getSubmitLabel() { return $this->submitLabel; } /** * Add message to stack * @param string $message */ public function addNote($message) { $this->notes[] = $message; } /** * Purge messages from stack */ public function purgeNotes() { $this->notes = array(); } /** * Getter for notes * @return string[] */ public function getNotes() { return $this->notes; } /** * Create an instance name containing hidden field * @return Zend_Form_Element_Hidden */ private function createInstanceHiddenField() { $field = new Zend_Form_Element_Hidden('instance'); $value = $this->getRequest()->getParam($field->getName()); $field->setValue($value); return $field; } /** * Add elements to this form (used by extending classes) */ protected function create() { if (count($this->getNotes())) { foreach ($this->getNotes() as $nodeid => $note) { $element = new Note( array( 'name' => 'note_'. $nodeid, 'value' => $note ) ); $this->addElement($element); } } if ($this->getCancelLabel()) { $cancelLabel = new \Zend_Form_Element_Reset( array( 'name' => 'reset', 'label' => $this->getCancelLabel(), 'class' => 'btn pull-right' ) ); $this->addElement($cancelLabel); } if ($this->getSubmitLabel()) { $submitButton = new \Zend_Form_Element_Submit( array( 'name' => 'submit', 'label' => $this->getSubmitLabel(), 'class' => 'btn btn-primary pull-right' ) ); $this->addElement($submitButton); } $this->addElement($this->createInstanceHiddenField()); } /** * Get the author name * TODO(mh): This should work on the request, at present it's fix */ protected function getAuthorName() { return 'Iwan IV. Wassiljewitsch, der Schreckliche'; } /** * Creator for author field * @return Zend_Form_Element_Hidden */ protected function createAuthorField() { $authorName = $this->getAuthorName(); $authorField = new Zend_Form_Element_Hidden( array( 'name' => 'author', 'value' => $authorName, 'label' => t('Author name') ) ); $authorField->addDecorator( 'Callback', array( 'callback' => function () use ($authorName) { return sprintf('%s', $authorName); } ) ); return $authorField; } }