mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-13 00:44:25 +02:00
In case createElements() would still return the elements while requiring the caller to add them to the form all form dependent configurations get lost. (displaygroups, belongTo, ...) Wizards or parent forms can still retrieve only input relevant fields by just calling createElements() and getElements(). refs #5525
76 lines
2.0 KiB
PHP
76 lines
2.0 KiB
PHP
<?php
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
|
|
|
namespace Icinga\Form\Config;
|
|
|
|
use Icinga\Web\Request;
|
|
use Icinga\Web\Notification;
|
|
use Icinga\Form\ConfigForm;
|
|
use Icinga\Form\Config\General\LoggingConfigForm;
|
|
use Icinga\Form\Config\General\ApplicationConfigForm;
|
|
|
|
/**
|
|
* Form class for application-wide and logging specific settings
|
|
*/
|
|
class GeneralConfigForm extends ConfigForm
|
|
{
|
|
/**
|
|
* Initialize this configuration form
|
|
*/
|
|
public function init()
|
|
{
|
|
$this->setName('form_config_general');
|
|
$this->setSubmitLabel(t('Save Changes'));
|
|
}
|
|
|
|
/**
|
|
* @see Form::createElements()
|
|
*/
|
|
public function createElements(array $formData)
|
|
{
|
|
$appConfigForm = new ApplicationConfigForm();
|
|
$loggingConfigForm = new LoggingConfigForm();
|
|
$this->addElements($appConfigForm->createElements($formData)->getElements());
|
|
$this->addElements($loggingConfigForm->createElements($formData)->getElements());
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @see Form::onSuccess()
|
|
*/
|
|
public function onSuccess(Request $request)
|
|
{
|
|
foreach ($this->getValues() as $sectionAndPropertyName => $value) {
|
|
list($section, $property) = explode('_', $sectionAndPropertyName);
|
|
if (isset($this->config->{$section})) {
|
|
$this->config->{$section}->{$property} = $value;
|
|
} else {
|
|
$this->config->{$section} = array($property => $value);
|
|
}
|
|
}
|
|
|
|
if ($this->save()) {
|
|
Notification::success(t('New configuration has successfully been stored'));
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @see Form::onRequest()
|
|
*/
|
|
public function onRequest(Request $request)
|
|
{
|
|
$values = array();
|
|
foreach ($this->config as $section => $properties) {
|
|
foreach ($properties as $name => $value) {
|
|
$values[$section . '_' . $name] = $value;
|
|
}
|
|
}
|
|
|
|
$this->populate($values);
|
|
}
|
|
}
|