diff options
Diffstat (limited to 'application/forms/ActionForm.php')
-rw-r--r-- | application/forms/ActionForm.php | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/application/forms/ActionForm.php b/application/forms/ActionForm.php new file mode 100644 index 0000000..5b5b6ed --- /dev/null +++ b/application/forms/ActionForm.php @@ -0,0 +1,78 @@ +<?php +/* Icinga Web 2 | (c) 2018 Icinga Development Team | GPLv2+ */ + +namespace Icinga\Forms; + +use Icinga\Application\Hook\ConfigFormEventsHook; +use Icinga\Web\Form; + +class ActionForm extends Form +{ + /** + * The icon shown on the button + * + * @var string + */ + protected $icon = 'arrows-cw'; + + /** + * Set the icon to show on the button + * + * @param string $name + * + * @return $this + */ + public function setIcon($name) + { + $this->icon = (string) $name; + return $this; + } + + public function init() + { + $this->setAttrib('class', 'inline'); + $this->setUidDisabled(true); + $this->setDecorators(['FormElements', 'Form']); + } + + public function createElements(array $formData) + { + $this->addElement( + 'hidden', + 'identifier', + [ + 'required' => true, + 'decorators' => ['ViewHelper'] + ] + ); + $this->addElement( + 'button', + 'btn_submit', + [ + 'escape' => false, + 'type' => 'submit', + 'class' => 'link-button spinner', + 'value' => 'btn_submit', + 'decorators' => ['ViewHelper'], + 'label' => $this->getView()->icon($this->icon), + 'title' => $this->getDescription() + ] + ); + } + + public function isValid($formData) + { + $valid = parent::isValid($formData); + + if ($valid) { + $valid = ConfigFormEventsHook::runIsValid($this); + } + + return $valid; + } + + public function onSuccess() + { + ConfigFormEventsHook::runOnSuccess($this); + } +} |