diff --git a/application/forms/Setup/RequirementsPage.php b/application/forms/Setup/RequirementsPage.php new file mode 100644 index 000000000..ec629b03f --- /dev/null +++ b/application/forms/Setup/RequirementsPage.php @@ -0,0 +1,69 @@ +<?php +// {{{ICINGA_LICENSE_HEADER}}} +// {{{ICINGA_LICENSE_HEADER}}} + +namespace Icinga\Form\Setup; + +use Icinga\Web\Form; +use Icinga\Web\Setup\Requirements; + +/** + * Wizard page to list installation requirements + */ +class RequirementsPage extends Form +{ + /** + * The requirements to list + * + * @var Requirements + */ + protected $requirements; + + /** + * Initialize this page + */ + public function init() + { + $this->setName('setup_requirements'); + $this->setViewScript('form/setup-requirements.phtml'); + } + + /** + * Set the requirements to list + * + * @param Requirements $requirements + * + * @return self + */ + public function setRequirements(Requirements $requirements) + { + $this->requirements = $requirements; + return $this; + } + + /** + * Return the requirements to list + * + * @return Requirements + */ + public function getRequirements() + { + return $this->requirements; + } + + /** + * Validate the given form data and check whether the requirements are fulfilled + * + * @param array $data The data to validate + * + * @return bool + */ + public function isValid($data) + { + if (false === parent::isValid($data)) { + return false; + } + + return $this->requirements->fulfilled(); + } +} diff --git a/application/views/scripts/form/setup-requirements.phtml b/application/views/scripts/form/setup-requirements.phtml new file mode 100644 index 000000000..18fd2d1de --- /dev/null +++ b/application/views/scripts/form/setup-requirements.phtml @@ -0,0 +1,33 @@ +<?php + +use Icinga\Web\Wizard; +use Icinga\Web\Setup\Requirements; + +$requirements = $form->getRequirements(); + +?> +<table> + <tbody> +<?php foreach ($requirements as $requirement): ?> + <tr> + <td><?= $requirement->title; ?></td> + <td><?= $requirement->description; ?></td> + <td style="background-color: <?= $requirement->state === Requirements::STATE_OK ? 'green' : ( + $requirement->state === Requirements::STATE_OPTIONAL ? 'yellow' : 'red' + ); ?>"><?= $requirement->message; ?></td> + </tr> +<?php endforeach ?> + </tbody> +</table> +<form id="<?= $form->getName(); ?>" name="<?= $form->getName(); ?>" enctype="<?= $form->getEncType(); ?>" method="<?= $form->getMethod(); ?>"> + <?= $form->getElement($form->getTokenElementName()); ?> + <?= $form->getElement($form->getUidElementName()); ?> + <?= $form->getElement(Wizard::BTN_PREV); ?> + <?php + $btn = $form->getElement(Wizard::BTN_NEXT); + if (false === $requirements->fulfilled()) { + $btn->setAttrib('disabled', 1); + } + echo $btn; + ?> +</form> \ No newline at end of file