parent
64a8006973
commit
08e600a376
|
@ -0,0 +1,96 @@
|
|||
<?php
|
||||
// {{{ICINGA_LICENSE_HEADER}}}
|
||||
// {{{ICINGA_LICENSE_HEADER}}}
|
||||
|
||||
namespace Icinga\Module\Setup\Forms;
|
||||
|
||||
use Icinga\Application\Icinga;
|
||||
use Icinga\Web\Form;
|
||||
|
||||
class ModulePage extends Form
|
||||
{
|
||||
protected $modules;
|
||||
|
||||
protected $modulePaths;
|
||||
|
||||
/**
|
||||
* Initialize this page
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
$this->setName('setup_modules');
|
||||
//$this->setViewScript('form/setup-modules.phtml');
|
||||
|
||||
$this->modulePaths = array();
|
||||
if (($appModulePath = realpath(Icinga::app()->getApplicationDir() . '/../modules')) !== false) {
|
||||
$this->modulePaths[] = $appModulePath;
|
||||
}
|
||||
}
|
||||
|
||||
public function createElements(array $formData)
|
||||
{
|
||||
foreach ($this->getModules() as $module) {
|
||||
$this->addElement(
|
||||
'checkbox',
|
||||
$module->getName(),
|
||||
array(
|
||||
'label' => ucfirst($module->getName())
|
||||
)
|
||||
);
|
||||
$this->addElement(
|
||||
'note',
|
||||
$module->getName() . '_desc',
|
||||
array(
|
||||
'value' => $module->getDescription()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected function getModules()
|
||||
{
|
||||
if ($this->modules !== null) {
|
||||
return $this->modules;
|
||||
} else {
|
||||
$this->modules = array();
|
||||
}
|
||||
|
||||
$moduleManager = Icinga::app()->getModuleManager();
|
||||
$moduleManager->detectInstalledModules($this->modulePaths);
|
||||
foreach ($moduleManager->listInstalledModules() as $moduleName) {
|
||||
if ($moduleName !== 'setup') {
|
||||
$this->modules[$moduleName] = $moduleManager->loadModule($moduleName)->getModule($moduleName);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->modules;
|
||||
}
|
||||
|
||||
public function getCheckedModules()
|
||||
{
|
||||
$modules = $this->getModules();
|
||||
|
||||
$checked = array();
|
||||
foreach ($this->getElements() as $name => $element) {
|
||||
if (array_key_exists($name, $modules) && $element->isChecked()) {
|
||||
$checked[$name] = $modules[$name];
|
||||
}
|
||||
}
|
||||
|
||||
return $checked;
|
||||
}
|
||||
|
||||
public function getModuleWizards()
|
||||
{
|
||||
$checked = $this->getCheckedModules();
|
||||
|
||||
$wizards = array();
|
||||
foreach ($checked as $name => $module) {
|
||||
if ($module->providesSetupWizard()) {
|
||||
$wizards[$name] = $module->getSetupWizard();
|
||||
}
|
||||
}
|
||||
|
||||
return $wizards;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue