mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 15:34:12 +01:00
N°8864 list extensions installation in setup recap
This commit is contained in:
@@ -1029,4 +1029,4 @@ class RunTimeEnvironment
|
||||
|
||||
return sprintf("Checked %d classes in %.1f ms. No error found.\n", $iCount, $fDuration * 1000.0);
|
||||
}
|
||||
} // End of class
|
||||
} // End of class
|
||||
|
||||
@@ -1368,6 +1368,52 @@ class WizStepModulesChoice extends WizardStep
|
||||
return ['WizStepModulesChoice', 'WizStepSummary'];
|
||||
}
|
||||
|
||||
public function GetAddedAndRemovedExtensions($aSelectedExtensions)
|
||||
{
|
||||
$aExtensionsAdded = [];
|
||||
$aExtensionsRemoved = [];
|
||||
$aExtensionsNotUninstallable = [];
|
||||
foreach ($this->oExtensionsMap->GetAllExtensionsWithPreviouslyInstalled() as $oExtension) {
|
||||
/* @var \iTopExtension $oExtension */
|
||||
$bSelected = in_array($oExtension->sCode, $aSelectedExtensions);
|
||||
if ($oExtension->bInstalled && !$bSelected) {
|
||||
$aExtensionsRemoved[$oExtension->sCode] = $oExtension->sLabel;
|
||||
if (!$oExtension->CanBeUninstalled()) {
|
||||
$aExtensionsNotUninstallable[$oExtension->sCode] = true;
|
||||
}
|
||||
} elseif (!$oExtension->bInstalled && $bSelected) {
|
||||
$aExtensionsAdded[$oExtension->sCode] = $oExtension->sLabel;
|
||||
}
|
||||
}
|
||||
|
||||
$sExtensionsAdded = '';
|
||||
if (count($aExtensionsAdded) > 0) {
|
||||
$sExtensionsAdded = '<ul>';
|
||||
foreach ($aExtensionsAdded as $sExtensionCode) {
|
||||
$sExtensionsAdded .= '<li>'.$sExtensionCode.'</li>';
|
||||
}
|
||||
$sExtensionsAdded .= '</ul>';
|
||||
} else {
|
||||
$sExtensionsAdded = '<ul><li>No extension added.</li></ul>';
|
||||
}
|
||||
|
||||
$sExtensionsRemoved = '';
|
||||
if (count($aExtensionsRemoved) > 0) {
|
||||
$sExtensionsRemoved = '<ul>';
|
||||
foreach ($aExtensionsRemoved as $sCode => $sExtensionCode) {
|
||||
$sForcedUninstall = '';
|
||||
if (isset($aExtensionsNotUninstallable[$sCode])) {
|
||||
$sForcedUninstall = ' (forced uninstallation)';
|
||||
}
|
||||
$sExtensionsRemoved .= '<li>'.$sExtensionCode.$sForcedUninstall.'</li>';
|
||||
}
|
||||
$sExtensionsRemoved .= '</ul>';
|
||||
} else {
|
||||
$sExtensionsRemoved = '<ul><li>No extension removed.</li></ul>';
|
||||
}
|
||||
return [$sExtensionsAdded, $sExtensionsRemoved];
|
||||
}
|
||||
|
||||
public function ProcessParams($bMoveForward = true)
|
||||
{
|
||||
// Accumulates the selected modules:
|
||||
@@ -1397,9 +1443,14 @@ class WizStepModulesChoice extends WizardStep
|
||||
if (class_exists('CreateITILProfilesInstaller')) {
|
||||
$this->oWizard->SetParameter('old_addon', true);
|
||||
}
|
||||
|
||||
[$sExtensionsAdded, $sExtensionsRemoved] = $this->GetAddedAndRemovedExtensions($aExtensions);
|
||||
|
||||
$this->oWizard->SetParameter('selected_modules', json_encode(array_keys($aModules)));
|
||||
$this->oWizard->SetParameter('selected_extensions', json_encode($aExtensions));
|
||||
$this->oWizard->SetParameter('display_choices', $sDisplayChoices);
|
||||
$this->oWizard->SetParameter('extensions_added', $sExtensionsAdded);
|
||||
$this->oWizard->SetParameter('extensions_removed', $sExtensionsRemoved);
|
||||
return ['class' => 'WizStepSummary', 'state' => ''];
|
||||
}
|
||||
|
||||
@@ -2217,6 +2268,14 @@ class WizStepSummary extends WizardStep
|
||||
|
||||
$oPage->add('<fieldset id="summary"><legend>Installation Parameters</legend>');
|
||||
$oPage->add('<div id="params_summary">');
|
||||
|
||||
$oPage->add('<div class="closed"><span class="title ibo-setup-summary-title">Extensions to be installed</span>');
|
||||
$oPage->add($this->oWizard->GetParameter('extensions_added'));
|
||||
$oPage->add('</div>');
|
||||
$oPage->add('<div class="closed"><span class="title ibo-setup-summary-title">Extensions to be uninstalled</span>');
|
||||
$oPage->add($this->oWizard->GetParameter('extensions_removed'));
|
||||
$oPage->add('</div>');
|
||||
|
||||
$oPage->add('<div class="closed"><span class="title ibo-setup-summary-title">Database Parameters</span><ul>');
|
||||
$oPage->add('<li>Server Name: '.$aInstallParams['database']['server'].'</li>');
|
||||
$oPage->add('<li>DB User Name: '.$aInstallParams['database']['user'].'</li>');
|
||||
|
||||
@@ -7,30 +7,26 @@
|
||||
*
|
||||
*
|
||||
*/
|
||||
$MySettings = array(
|
||||
|
||||
|
||||
$MySettings = [
|
||||
|
||||
// app_root_url: Root URL used for navigating within the application, or from an email to the application (you can put $SERVER_NAME$ as a placeholder for the server's name)
|
||||
// default: ''
|
||||
'app_root_url' => 'http://%server(SERVER_NAME)?:localhost%/itop/iTop/',
|
||||
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
/**
|
||||
*
|
||||
* Modules specific settings
|
||||
*
|
||||
*/
|
||||
$MyModuleSettings = array(
|
||||
);
|
||||
$MyModuleSettings = [
|
||||
];
|
||||
|
||||
/**
|
||||
*
|
||||
* Data model modules to be loaded. Names are specified as relative paths
|
||||
*
|
||||
*/
|
||||
$MyModules = array(
|
||||
);
|
||||
?>
|
||||
$MyModules = [
|
||||
];
|
||||
|
||||
@@ -7,30 +7,26 @@
|
||||
*
|
||||
*
|
||||
*/
|
||||
$MySettings = array(
|
||||
|
||||
|
||||
$MySettings = [
|
||||
|
||||
// app_root_url: Root URL used for navigating within the application, or from an email to the application (you can put $SERVER_NAME$ as a placeholder for the server's name)
|
||||
// default: ''
|
||||
'app_root_url' => 'http://' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost') . '/itop/iTop/',
|
||||
'app_root_url' => 'http://'.(isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost').'/itop/iTop/',
|
||||
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
/**
|
||||
*
|
||||
* Modules specific settings
|
||||
*
|
||||
*/
|
||||
$MyModuleSettings = array(
|
||||
);
|
||||
$MyModuleSettings = [
|
||||
];
|
||||
|
||||
/**
|
||||
*
|
||||
* Data model modules to be loaded. Names are specified as relative paths
|
||||
*
|
||||
*/
|
||||
$MyModules = array(
|
||||
);
|
||||
?>
|
||||
$MyModules = [
|
||||
];
|
||||
|
||||
@@ -257,4 +257,99 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
||||
$this->assertEquals($aExpectedFlags, $aFlags);
|
||||
}
|
||||
|
||||
public function ProviderGetAddedAndRemovedExtensions()
|
||||
{
|
||||
return [
|
||||
'no extensions' => [
|
||||
'aExtensions' => [],
|
||||
|
||||
'aSelected' => [],
|
||||
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
|
||||
'sExpectedRemovedList' => '<ul><li>No extension removed.</li></ul>',
|
||||
],
|
||||
'no extensions selected' => [
|
||||
'aExtensions' => [
|
||||
'itop-ext1' => [
|
||||
'installed' => false,
|
||||
],
|
||||
],
|
||||
'aSelected' => [],
|
||||
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
|
||||
'sExpectedRemovedList' => '<ul><li>No extension removed.</li></ul>',
|
||||
],
|
||||
'no extensions removed' => [
|
||||
'aExtensions' => [
|
||||
'itop-ext1' => [
|
||||
'installed' => true,
|
||||
],
|
||||
],
|
||||
'aSelected' => ['itop-ext1'],
|
||||
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
|
||||
'sExpectedRemovedList' => '<ul><li>No extension removed.</li></ul>',
|
||||
],
|
||||
'One added extension' => [
|
||||
'aExtensions' => [
|
||||
'itop-ext1' => [
|
||||
'installed' => false,
|
||||
],
|
||||
],
|
||||
'aSelected' => ['itop-ext1'],
|
||||
'sExpectedAddedList' => '<ul><li>itop-ext1</li></ul>',
|
||||
'sExpectedRemovedList' => '<ul><li>No extension removed.</li></ul>',
|
||||
],
|
||||
'One removed extension' => [
|
||||
'aExtensions' => [
|
||||
'itop-ext1' => [
|
||||
'installed' => true,
|
||||
],
|
||||
],
|
||||
'aSelected' => [],
|
||||
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
|
||||
'sExpectedRemovedList' => '<ul><li>itop-ext1</li></ul>',
|
||||
],
|
||||
'Forced removed extension' => [
|
||||
'aExtensions' => [
|
||||
'itop-ext1' => [
|
||||
'installed' => true,
|
||||
'uninstallable' => false,
|
||||
],
|
||||
],
|
||||
'aSelected' => [],
|
||||
'sExpectedAddedList' => '<ul><li>No extension added.</li></ul>',
|
||||
'sExpectedRemovedList' => '<ul><li>itop-ext1 (forced uninstallation)</li></ul>',
|
||||
],
|
||||
'added and removed extensions' => [
|
||||
'aExtensions' => [
|
||||
'itop-ext-added1' => [
|
||||
'installed' => false,
|
||||
],
|
||||
'itop-ext-added2' => [
|
||||
'installed' => false,
|
||||
],
|
||||
'itop-ext-removed1' => [
|
||||
'installed' => true,
|
||||
],
|
||||
'itop-ext-removed2' => [
|
||||
'installed' => true,
|
||||
],
|
||||
],
|
||||
'aSelected' => ['itop-ext-added1', 'itop-ext-added2'],
|
||||
'sExpectedAddedList' => '<ul><li>itop-ext-added1</li><li>itop-ext-added2</li></ul>',
|
||||
'sExpectedRemovedList' => '<ul><li>itop-ext-removed1</li><li>itop-ext-removed2</li></ul>',
|
||||
],
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider ProviderGetAddedAndRemovedExtensions
|
||||
*/
|
||||
public function testGetAddedAndRemovedExtensions($aExtensions, $aSelectedExtensions, $sExpectedAddedList, $sExpectedRemovedList)
|
||||
{
|
||||
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensions));
|
||||
[$sAddedList, $sRemovedList] = $this->oStep->GetAddedAndRemovedExtensions($aSelectedExtensions);
|
||||
$this->assertEquals($sExpectedAddedList, $sAddedList);
|
||||
$this->assertEquals($sExpectedRemovedList, $sRemovedList);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,9 +12,11 @@ class iTopExtensionsMapFake extends iTopExtensionsMap
|
||||
public static function createFromArray($aExtensions)
|
||||
{
|
||||
$oMap = new static();
|
||||
|
||||
foreach ($aExtensions as $sCode => $aExtension) {
|
||||
$oExtension = new iTopExtension();
|
||||
$oExtension->sCode = $sCode;
|
||||
$oExtension->sLabel = $sCode;
|
||||
$oExtension->bInstalled = $aExtension['installed'];
|
||||
$oExtension->aModules = $aExtension['modules'] ?? [];
|
||||
$oExtension->bCanBeUninstalled = $aExtension['uninstallable'] ?? null;
|
||||
|
||||
Reference in New Issue
Block a user