diff --git a/setup/ajax.dataloader.php b/setup/ajax.dataloader.php index 53c672faa..70f1df430 100644 --- a/setup/ajax.dataloader.php +++ b/setup/ajax.dataloader.php @@ -123,6 +123,7 @@ require_once('./xmldataloader.class.inc.php'); // Never cache this page header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Fri, 17 Jul 1970 05:00:00 GMT"); // Date in the past +$oCtx = new ContextTag(ContextTag::TAG_SETUP); /** * Main program diff --git a/setup/wizard.php b/setup/wizard.php index f48fda0c2..ae60b090d 100644 --- a/setup/wizard.php +++ b/setup/wizard.php @@ -61,6 +61,7 @@ if (!function_exists('json_decode')) { //N°3671 setup context: force $bForceTrustProxy to be persisted in next calls utils::GetAbsoluteUrlAppRoot(true); $oWizard = new WizardController('WizStepWelcome'); +$oCtx = new ContextTag(ContextTag::TAG_SETUP); //N°3952 if (SetupUtils::IsSessionSetupTokenValid()) { // Normal operation diff --git a/setup/wizardcontroller.class.inc.php b/setup/wizardcontroller.class.inc.php index eace6760d..964c83fd6 100644 --- a/setup/wizardcontroller.class.inc.php +++ b/setup/wizardcontroller.class.inc.php @@ -220,6 +220,8 @@ HTML; } } $oPage->LinkScriptFromAppRoot('setup/setup.js'); + $oStep->PreFormDisplay($oPage); + $oPage->add('
'); $oPage->add('
'); $oStep->Display($oPage); @@ -283,8 +285,8 @@ EOF $oPage->output(); } /** - * Make the wizard run: Start, Next or Back depending WizardUpdateButtons(); -on the page's parameters + * Make the wizard run: 'Start', 'Next' or 'Back' depending WizardUpdateButtons(); + * on the page's parameters */ public function Run() { diff --git a/setup/wizardsteps/WizStepLandingBeforeAudit.php b/setup/wizardsteps/WizStepLandingBeforeAudit.php index e29674720..7971b532c 100644 --- a/setup/wizardsteps/WizStepLandingBeforeAudit.php +++ b/setup/wizardsteps/WizStepLandingBeforeAudit.php @@ -40,8 +40,8 @@ class WizStepLandingBeforeAudit extends WizStepModulesChoice */ public function UpdateWizardStateAndGetNextStep($bMoveForward = true): WizardState { - $oProductionEnv = new RunTimeEnvironment(); - $sBuildConfigFile = APPCONF.$oProductionEnv->GetBuildEnv().'/'.ITOP_CONFIG_FILE; + $oRuntimeEnv = new RunTimeEnvironment(); + $sBuildConfigFile = APPCONF.$oRuntimeEnv->GetBuildEnv().'/'.ITOP_CONFIG_FILE; @chmod($sBuildConfigFile, 0770); // In case it exists: RWX for owner and group, nothing for others $oConfig = new Config($sBuildConfigFile); @@ -56,6 +56,14 @@ class WizStepLandingBeforeAudit extends WizStepModulesChoice $this->oWizard->SetParameter('display_choices', '[]'); $this->oWizard->SetParameter('extensions_not_uninstallable', '[]'); + if ($this->oWizard->GetParameter('skip_wizard', false)) { + $oExtensionMap = new iTopExtensionsMap($oRuntimeEnv->GetBuildEnv()); + $aExtensionsFromDatabase = $oExtensionMap->GetChoicesFromDatabase($oConfig); + $this->oWizard->SetParameter('selected_extensions', json_encode($aExtensionsFromDatabase)); + $adModulesFromDatabase = ModuleInstallationRepository::GetInstance()->ReadComputeInstalledModules($oConfig); + $this->oWizard->SetParameter('selected_modules', json_encode(array_keys($adModulesFromDatabase))); + } + $aWizardSteps = $this->GetWizardSteps(); $this->oWizard->SetWizardSteps($aWizardSteps); $this->sCurrentState = count($aWizardSteps) - 1; diff --git a/setup/wizardsteps/WizStepWelcome.php b/setup/wizardsteps/WizStepWelcome.php index c89389a16..2db53d59b 100644 --- a/setup/wizardsteps/WizStepWelcome.php +++ b/setup/wizardsteps/WizStepWelcome.php @@ -18,14 +18,21 @@ * You should have received a copy of the GNU Affero General Public License */ -use Combodo\iTop\Application\WebPage\WebPage; - /** * First step of the iTop Installation Wizard: Welcome screen, requirements */ class WizStepWelcome extends WizardStep { protected $bCanMoveForward; + private array $aInfo; + private array $aWarnings; + private array $aErrors; + + public function __construct(WizardController $oWizard, $sCurrentState) + { + parent::__construct($oWizard, $sCurrentState); + $this->CheckInstallation(); + } public function GetTitle() { @@ -70,39 +77,14 @@ class WizStepWelcome extends WizardStep EOF ); $oPage->add('

'.ITOP_APPLICATION.' Installation Wizard

'); - $aResults = SetupUtils::CheckPhpAndExtensions(); - $this->bCanMoveForward = true; - $aInfo = []; - $aWarnings = []; - $aErrors = []; - foreach ($aResults as $oCheckResult) { - switch ($oCheckResult->iSeverity) { - case CheckResult::ERROR: - $aErrors[] = $oCheckResult->sLabel; - $this->bCanMoveForward = false; - break; - - case CheckResult::WARNING: - $aWarnings[] = $oCheckResult->sLabel; - break; - - case CheckResult::INFO: - $aInfo[] = $oCheckResult->sLabel; - break; - - case CheckResult::TRACE: - SetupLog::Ok($oCheckResult->sLabel); - break; - } - } $sStyle = 'style="display:none;overflow:auto;"'; $sToggleButtons = ''; - if (count($aErrors) > 0) { + if (count($this->aErrors) > 0) { $sStyle = 'overflow:auto;"'; - $sTitle = count($aErrors).' Error(s), '.count($aWarnings).' Warning(s).'; + $sTitle = count($this->aErrors).' Error(s), '.count($this->aWarnings).' Warning(s).'; $sH2Class = 'text-error'; - } elseif (count($aWarnings) > 0) { - $sTitle = count($aWarnings).' Warning(s) '.$sToggleButtons; + } elseif (count($this->aWarnings) > 0) { + $sTitle = count($this->aWarnings).' Warning(s) '.$sToggleButtons; $sH2Class = 'text-warning'; } else { $sTitle = 'Ok. '.$sToggleButtons; @@ -114,13 +96,13 @@ EOF
HTML ); - foreach ($aErrors as $sText) { + foreach ($this->aErrors as $sText) { $oPage->error($sText); } - foreach ($aWarnings as $sText) { + foreach ($this->aWarnings as $sText) { $oPage->warning($sText); } - foreach ($aInfo as $sText) { + foreach ($this->aInfo as $sText) { $oPage->ok($sText); } $oPage->add('
'); @@ -131,8 +113,78 @@ HTML $oPage->add_ready_script('CheckDirectoryConfFilesPermissions("'.utils::GetItopVersionWikiSyntax().'")'); } + /** + * Add post display stuff to the setup screen + * @param \SetupPage $oPage + * + * @return void + */ + public function PreFormDisplay(SetupPage $oPage) + { + if ($this->bCanMoveForward) { + $sBuildConfigFile = APPCONF.ITOP_DEFAULT_ENV.'/'.ITOP_CONFIG_FILE; + if (file_exists($sBuildConfigFile)) { + $oContextTag = new ContextTag(ContextTag::TAG_SETUP); + $sToken = SetupUtils::CreateSetupToken(); + $oPage->add( + << + Fast track + + + + + + + + + + +
+ + +
+ Normal track +
+HTML + ); + } + } + } + public function CanMoveForward() { return $this->bCanMoveForward; } + + /** + */ + public function CheckInstallation(): void + { + $aResults = SetupUtils::CheckPhpAndExtensions(); + $this->bCanMoveForward = true; + $this->aInfo = []; + $this->aWarnings = []; + $this->aErrors = []; + foreach ($aResults as $oCheckResult) { + switch ($oCheckResult->iSeverity) { + case CheckResult::ERROR: + $this->aErrors[] = $oCheckResult->sLabel; + $this->bCanMoveForward = false; + break; + + case CheckResult::WARNING: + $this->aWarnings[] = $oCheckResult->sLabel; + break; + + case CheckResult::INFO: + $this->aInfo[] = $oCheckResult->sLabel; + break; + + case CheckResult::TRACE: + SetupLog::Ok($oCheckResult->sLabel); + break; + } + } + } } diff --git a/setup/wizardsteps/WizardStep.php b/setup/wizardsteps/WizardStep.php index bad393a3e..e7caa22a1 100644 --- a/setup/wizardsteps/WizardStep.php +++ b/setup/wizardsteps/WizardStep.php @@ -76,6 +76,10 @@ abstract class WizardStep { } + public function PreFormDisplay(SetupPage $oPage) + { + } + protected function CheckDependencies() { if (is_null($this->bDependencyCheck)) {