mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-09-26 11:19:14 +02:00
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.
82 lines
1.8 KiB
PHP
82 lines
1.8 KiB
PHP
<?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();
|
|
}
|
|
}
|