QuickBaseForm: take over parts of QuickForm
This commit is contained in:
parent
561b786aff
commit
5fc16f393d
|
@ -0,0 +1,120 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Icinga\Module\Director\Web\Form;
|
||||||
|
|
||||||
|
use Zend_Form;
|
||||||
|
|
||||||
|
abstract class QuickBaseForm extends Zend_Form
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The Icinga module this form belongs to. Usually only set if the
|
||||||
|
* form is initialized through the FormLoader
|
||||||
|
*/
|
||||||
|
protected $icingaModule;
|
||||||
|
|
||||||
|
protected $icingaModuleName;
|
||||||
|
|
||||||
|
public function __construct($options = null)
|
||||||
|
{
|
||||||
|
parent::__construct($this->handleOptions($options));
|
||||||
|
|
||||||
|
if ($this->icingaModule) {
|
||||||
|
$basedir = sprintf(
|
||||||
|
'%s/%s/Web/Form',
|
||||||
|
$this->icingaModule->getLibDir(),
|
||||||
|
ucfirst($this->icingaModuleName)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->addPrefixPaths(array(
|
||||||
|
array(
|
||||||
|
'prefix' => __NAMESPACE__ . '\\Element\\',
|
||||||
|
'path' => $basedir . '/Element',
|
||||||
|
'type' => static::ELEMENT
|
||||||
|
)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addHidden($name, $value = null)
|
||||||
|
{
|
||||||
|
$this->addElement('hidden', $name);
|
||||||
|
$el = $this->getElement($name);
|
||||||
|
$el->setDecorators(array('ViewHelper'));
|
||||||
|
if ($value !== null) {
|
||||||
|
$this->setDefault($name, $value);
|
||||||
|
$el->setValue($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Should be an element
|
||||||
|
public function addHtmlHint($html, $options = array())
|
||||||
|
{
|
||||||
|
return $this->addHtml('<div class="hint">' . $html . '</div>', $options);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addHtml($html, $options = array())
|
||||||
|
{
|
||||||
|
if (array_key_exists('name', $options)) {
|
||||||
|
$name = $options['name'];
|
||||||
|
unset($options['name']);
|
||||||
|
} else {
|
||||||
|
$name = '_HINT' . ++$this->hintCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addElement('simpleNote', $name, $options);
|
||||||
|
$this->getElement($name)
|
||||||
|
->setValue($html)
|
||||||
|
->setIgnore(true)
|
||||||
|
->setDecorators(array('ViewHelper'));
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function optionalEnum($enum)
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
null => $this->translate('- please choose -')
|
||||||
|
) + $enum;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function handleOptions($options = null)
|
||||||
|
{
|
||||||
|
if ($options === null) {
|
||||||
|
return $options;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('icingaModule', $options)) {
|
||||||
|
$this->icingaModule = $options['icingaModule'];
|
||||||
|
$this->icingaModuleName = $this->icingaModule->getName();
|
||||||
|
unset($options['icingaModule']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $options;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setIcingaModule(Module $module)
|
||||||
|
{
|
||||||
|
$this->icingaModule = $module;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function loadForm($name, Module $module = null)
|
||||||
|
{
|
||||||
|
if ($module === null) {
|
||||||
|
$module = $this->icingaModule;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FormLoader::load($name, $module);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function translate($string)
|
||||||
|
{
|
||||||
|
if ($this->icingaModuleName === null) {
|
||||||
|
return t($string);
|
||||||
|
} else {
|
||||||
|
return mt($this->icingaModuleName, $string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,12 +9,11 @@ use Icinga\Web\Notification;
|
||||||
use Icinga\Web\Request;
|
use Icinga\Web\Request;
|
||||||
use Icinga\Web\Url;
|
use Icinga\Web\Url;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Zend_Form;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* QuickForm wants to be a base class for simple forms
|
* QuickForm wants to be a base class for simple forms
|
||||||
*/
|
*/
|
||||||
abstract class QuickForm extends Zend_Form
|
abstract class QuickForm extends QuickBaseForm
|
||||||
{
|
{
|
||||||
const ID = '__FORM_NAME';
|
const ID = '__FORM_NAME';
|
||||||
|
|
||||||
|
@ -60,14 +59,6 @@ abstract class QuickForm extends Zend_Form
|
||||||
*/
|
*/
|
||||||
protected $didSetup = false;
|
protected $didSetup = false;
|
||||||
|
|
||||||
/**
|
|
||||||
* The Icinga module this form belongs to. Usually only set if the
|
|
||||||
* form is initialized through the FormLoader
|
|
||||||
*/
|
|
||||||
protected $icingaModule;
|
|
||||||
|
|
||||||
protected $icingaModuleName;
|
|
||||||
|
|
||||||
protected $hintCount = 0;
|
protected $hintCount = 0;
|
||||||
|
|
||||||
protected $isApiRequest = false;
|
protected $isApiRequest = false;
|
||||||
|
@ -76,20 +67,6 @@ abstract class QuickForm extends Zend_Form
|
||||||
{
|
{
|
||||||
parent::__construct($this->handleOptions($options));
|
parent::__construct($this->handleOptions($options));
|
||||||
|
|
||||||
$basedir = Icinga::app()
|
|
||||||
->getModuleManager()
|
|
||||||
->getModule('director')
|
|
||||||
->getLibDir()
|
|
||||||
. '/Director/Web/Form';
|
|
||||||
|
|
||||||
$this->addPrefixPaths(array(
|
|
||||||
array(
|
|
||||||
'prefix' => __NAMESPACE__ . '\\Element\\',
|
|
||||||
'path' => $basedir . '/Element',
|
|
||||||
'type' => static::ELEMENT
|
|
||||||
)
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->setMethod('post');
|
$this->setMethod('post');
|
||||||
$this->setAction(Url::fromRequest());
|
$this->setAction(Url::fromRequest());
|
||||||
$this->createIdElement();
|
$this->createIdElement();
|
||||||
|
@ -104,21 +81,6 @@ abstract class QuickForm extends Zend_Form
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function handleOptions($options = null)
|
|
||||||
{
|
|
||||||
if ($options === null) {
|
|
||||||
return $options;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (array_key_exists('icingaModule', $options)) {
|
|
||||||
$this->icingaModule = $options['icingaModule'];
|
|
||||||
$this->icingaModuleName = $this->icingaModule->getName();
|
|
||||||
unset($options['icingaModule']);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $options;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function addSubmitButtonIfSet()
|
protected function addSubmitButtonIfSet()
|
||||||
{
|
{
|
||||||
if (false !== ($label = $this->getSubmitLabel())) {
|
if (false !== ($label = $this->getSubmitLabel())) {
|
||||||
|
@ -212,15 +174,6 @@ abstract class QuickForm extends Zend_Form
|
||||||
return $this->isApiRequest;
|
return $this->isApiRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function loadForm($name, Module $module = null)
|
|
||||||
{
|
|
||||||
if ($module === null) {
|
|
||||||
$module = $this->icingaModule;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FormLoader::load($name, $module);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function regenerateCsrfToken()
|
public function regenerateCsrfToken()
|
||||||
{
|
{
|
||||||
if (! $element = $this->getElement(self::CSRF)) {
|
if (! $element = $this->getElement(self::CSRF)) {
|
||||||
|
@ -238,49 +191,6 @@ abstract class QuickForm extends Zend_Form
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addHidden($name, $value = null)
|
|
||||||
{
|
|
||||||
$this->addElement('hidden', $name);
|
|
||||||
$el = $this->getElement($name);
|
|
||||||
$el->setDecorators(array('ViewHelper'));
|
|
||||||
if ($value !== null) {
|
|
||||||
$this->setDefault($name, $value);
|
|
||||||
$el->setValue($value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function addHtmlHint($html, $options = array())
|
|
||||||
{
|
|
||||||
return $this->addHtml('<div class="hint">' . $html . '</div>', $options);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function addHtml($html, $options = array())
|
|
||||||
{
|
|
||||||
if (array_key_exists('name', $options)) {
|
|
||||||
$name = $options['name'];
|
|
||||||
unset($options['name']);
|
|
||||||
} else {
|
|
||||||
$name = '_HINT' . ++$this->hintCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->addElement('simpleNote', $name, $options);
|
|
||||||
$this->getElement($name)
|
|
||||||
->setValue($html)
|
|
||||||
->setIgnore(true)
|
|
||||||
->setDecorators(array('ViewHelper'));
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function optionalEnum($enum)
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
null => $this->translate('- please choose -')
|
|
||||||
) + $enum;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setSuccessUrl($url, $params = null)
|
public function setSuccessUrl($url, $params = null)
|
||||||
{
|
{
|
||||||
if (! $url instanceof Url) {
|
if (! $url instanceof Url) {
|
||||||
|
@ -324,12 +234,6 @@ abstract class QuickForm extends Zend_Form
|
||||||
return parent::setAction($action);
|
return parent::setAction($action);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setIcingaModule(Module $module)
|
|
||||||
{
|
|
||||||
$this->icingaModule = $module;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function hasBeenSubmitted()
|
public function hasBeenSubmitted()
|
||||||
{
|
{
|
||||||
if ($this->hasBeenSubmitted === null) {
|
if ($this->hasBeenSubmitted === null) {
|
||||||
|
@ -420,15 +324,6 @@ abstract class QuickForm extends Zend_Form
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function translate($string)
|
|
||||||
{
|
|
||||||
if ($this->icingaModuleName === null) {
|
|
||||||
return t($string);
|
|
||||||
} else {
|
|
||||||
return mt($this->icingaModuleName, $string);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function onSuccess()
|
public function onSuccess()
|
||||||
{
|
{
|
||||||
$this->redirectOnSuccess();
|
$this->redirectOnSuccess();
|
||||||
|
|
Loading…
Reference in New Issue