Use Icinga\Web\Form\Element\Button instead of Zend's button
Due to a bug in Zend prior to 1.12.2 we need our own button implementation to support earlier versions of the Zend Framework. The side effect is, that this button can also be used as submit button for our forms as isChecked will do its job now properly.
This commit is contained in:
parent
dc1960184d
commit
6be51d1565
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
// {{{ICINGA_LICENSE_HEADER}}}
|
||||
// {{{ICINGA_LICENSE_HEADER}}}
|
||||
|
||||
namespace Icinga\Web\Form\Element;
|
||||
|
||||
use Zend_Form_Element;
|
||||
use Icinga\Web\Request;
|
||||
use Icinga\Application\Icinga;
|
||||
|
||||
/**
|
||||
* A button
|
||||
*/
|
||||
class Button extends Zend_Form_Element
|
||||
{
|
||||
/**
|
||||
* Use formButton view helper by default
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $helper = 'formButton';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string|array|Zend_Config $spec Element name or configuration
|
||||
* @param string|array|Zend_Config $options Element value or configuration
|
||||
*/
|
||||
public function __construct($spec, $options = null)
|
||||
{
|
||||
if (is_string($spec) && ((null !== $options) && is_string($options))) {
|
||||
$options = array('label' => $options);
|
||||
}
|
||||
|
||||
if (!isset($options['ignore'])) {
|
||||
$options['ignore'] = true;
|
||||
}
|
||||
|
||||
parent::__construct($spec, $options);
|
||||
|
||||
if ($label = $this->getLabel()) {
|
||||
// Necessary to get the label shown on the generated HTML
|
||||
$this->content = $label;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate element value (pseudo)
|
||||
*
|
||||
* There is no need to reset the value
|
||||
*
|
||||
* @param mixed $value Is always ignored
|
||||
* @param mixed $context Is always ignored
|
||||
*
|
||||
* @return bool Returns always TRUE
|
||||
*/
|
||||
public function isValid($value, $context = null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Has this button been selected?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isChecked()
|
||||
{
|
||||
return $this->getRequest()->getParam($this->getName()) === $this->getValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current request
|
||||
*
|
||||
* @return Request
|
||||
*/
|
||||
protected function getRequest()
|
||||
{
|
||||
return Icinga::app()->getFrontController()->getRequest();
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@ use LogicException;
|
|||
use InvalidArgumentException;
|
||||
use Icinga\Web\Session\SessionNamespace;
|
||||
use Icinga\Web\Form\Decorator\ElementDoubler;
|
||||
use Icinga\Web\Form\Element\Button;
|
||||
|
||||
/**
|
||||
* Container and controller for form based wizards
|
||||
|
@ -426,55 +427,60 @@ class Wizard
|
|||
$index = array_search($page, $pages, true);
|
||||
if ($index === 0) {
|
||||
$page->addElement(
|
||||
'button',
|
||||
static::BTN_NEXT,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $pages[1]->getName(),
|
||||
'label' => t('Next'),
|
||||
'decorators' => array('ViewHelper')
|
||||
new Button(
|
||||
static::BTN_NEXT,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $pages[1]->getName(),
|
||||
'label' => t('Next'),
|
||||
'decorators' => array('ViewHelper')
|
||||
)
|
||||
)
|
||||
);
|
||||
} elseif ($index < count($pages) - 1) {
|
||||
$page->addElement(
|
||||
'button',
|
||||
static::BTN_PREV,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $pages[$index - 1]->getName(),
|
||||
'label' => t('Back'),
|
||||
'decorators' => array('ViewHelper')
|
||||
new Button(
|
||||
static::BTN_PREV,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $pages[$index - 1]->getName(),
|
||||
'label' => t('Back'),
|
||||
'decorators' => array('ViewHelper')
|
||||
)
|
||||
)
|
||||
);
|
||||
$page->addElement(
|
||||
'button',
|
||||
static::BTN_NEXT,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $pages[$index + 1]->getName(),
|
||||
'label' => t('Next'),
|
||||
'decorators' => array('ViewHelper')
|
||||
new Button(
|
||||
static::BTN_NEXT,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $pages[$index + 1]->getName(),
|
||||
'label' => t('Next'),
|
||||
'decorators' => array('ViewHelper')
|
||||
)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$page->addElement(
|
||||
'button',
|
||||
static::BTN_PREV,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $pages[$index - 1]->getName(),
|
||||
'label' => t('Back'),
|
||||
'decorators' => array('ViewHelper')
|
||||
new Button(
|
||||
static::BTN_PREV,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $pages[$index - 1]->getName(),
|
||||
'label' => t('Back'),
|
||||
'decorators' => array('ViewHelper')
|
||||
)
|
||||
)
|
||||
);
|
||||
$page->addElement(
|
||||
'button',
|
||||
static::BTN_NEXT,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $page->getName(),
|
||||
'label' => t('Finish'),
|
||||
'decorators' => array('ViewHelper')
|
||||
new Button(
|
||||
static::BTN_NEXT,
|
||||
array(
|
||||
'type' => 'submit',
|
||||
'value' => $page->getName(),
|
||||
'label' => t('Finish'),
|
||||
'decorators' => array('ViewHelper')
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue