diff --git a/application/forms/BpConfigForm.php b/application/forms/BpConfigForm.php index 386dcf1..89902f5 100644 --- a/application/forms/BpConfigForm.php +++ b/application/forms/BpConfigForm.php @@ -2,28 +2,12 @@ namespace Icinga\Module\Businessprocess\Forms; -use Icinga\Application\Config; use Icinga\Authentication\Auth; use Icinga\Module\Businessprocess\BpConfig; -use Icinga\Module\Businessprocess\Storage\Storage; -use Icinga\Module\Businessprocess\Web\Form\QuickForm; +use Icinga\Module\Businessprocess\Web\Form\BpConfigBaseForm; -class BpConfigForm extends QuickForm +class BpConfigForm extends BpConfigBaseForm { - /** @var Storage */ - protected $storage; - - protected $backend; - - /** @var BpConfig */ - protected $config; - - protected $node; - - protected $objectList = array(); - - protected $processList = array(); - protected $deleteButtonName; public function setup() @@ -132,24 +116,6 @@ class BpConfigForm extends QuickForm } } - protected function listAvailableBackends() - { - $keys = array_keys(Config::module('monitoring', 'backends')->toArray()); - return array_combine($keys, $keys); - } - - public function setStorage($storage) - { - $this->storage = $storage; - return $this; - } - - public function setProcessConfig($config) - { - $this->config = $config; - return $this; - } - protected function onRequest() { $name = $this->getValue('name'); @@ -170,7 +136,11 @@ class BpConfigForm extends QuickForm // New config $config = new BpConfig(); $config->setName($name); - $config->getMetadata()->set('Owner', Auth::getInstance()->getUser()->getUsername()); + + if (! $this->prepareMetadata($config)) { + return; + } + $this->setSuccessUrl( $this->getSuccessUrl()->setParams( array('config' => $name, 'unlocked' => true) diff --git a/application/forms/BpUploadForm.php b/application/forms/BpUploadForm.php index 1bd4f39..a46d729 100644 --- a/application/forms/BpUploadForm.php +++ b/application/forms/BpUploadForm.php @@ -3,23 +3,15 @@ namespace Icinga\Module\Businessprocess\Forms; use Exception; -use Icinga\Application\Config; use Icinga\Module\Businessprocess\BpConfig; use Icinga\Module\Businessprocess\Storage\LegacyConfigParser; -use Icinga\Module\Businessprocess\Storage\LegacyStorage; -use Icinga\Module\Businessprocess\Web\Form\QuickForm; +use Icinga\Module\Businessprocess\Web\Form\BpConfigBaseForm; use Icinga\Web\Notification; -class BpUploadForm extends QuickForm +class BpUploadForm extends BpConfigBaseForm { - /** @var LegacyStorage */ - protected $storage; - protected $backend; - /** @var BpConfig */ - protected $config; - protected $node; protected $objectList = array(); @@ -151,24 +143,6 @@ class BpUploadForm extends QuickForm ); } - protected function listAvailableBackends() - { - $keys = array_keys(Config::module('monitoring', 'backends')->toArray()); - return array_combine($keys, $keys); - } - - public function setStorage(LegacyStorage $storage) - { - $this->storage = $storage; - return $this; - } - - public function setProcessConfig(BpConfig $config) - { - $this->config = $config; - return $this; - } - protected function getTempDir() { return sys_get_temp_dir(); @@ -211,7 +185,11 @@ class BpUploadForm extends QuickForm $name )); - return false; + return; + } + + if (! $this->prepareMetadata($config)) { + return; } $this->storage->storeProcess($config); diff --git a/library/Businessprocess/Web/Form/BpConfigBaseForm.php b/library/Businessprocess/Web/Form/BpConfigBaseForm.php new file mode 100644 index 0000000..e22c26b --- /dev/null +++ b/library/Businessprocess/Web/Form/BpConfigBaseForm.php @@ -0,0 +1,60 @@ +toArray()); + return array_combine($keys, $keys); + } + + public function setStorage(LegacyStorage $storage) + { + $this->storage = $storage; + return $this; + } + + public function setProcessConfig(BpConfig $config) + { + $this->config = $config; + return $this; + } + + protected function prepareMetadata(BpConfig $config) + { + $meta = $config->getMetadata(); + $auth = Auth::getInstance(); + $meta->set('Owner', $auth->getUser()->getUsername()); + $prefixes = $auth->getRestrictions('businessprocess/prefix'); + if (! empty($prefixes) && ! $meta->nameIsPrefixedWithOneOf($prefixes)) { + if (count($prefixes) === 1) { + $this->getElement('name')->addError(sprintf( + $this->translate('Please prefix the name with "%s"'), + current($prefixes) + )); + } else { + $this->getElement('name')->addError(sprintf( + $this->translate('Please prefix the name with one of "%s"'), + implode('", "', $prefixes) + )); + } + + return false; + } + + return true; + } +}