mirror of
https://github.com/Combodo/iTop.git
synced 2026-08-04 21:08:18 +02:00
Compare commits
3 Commits
develop
...
feature/89
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e4c3ab005d | ||
|
|
0c01be9d32 | ||
|
|
899f87f163 |
@@ -37,6 +37,7 @@ class DataFeatureRemovalController extends Controller
|
|||||||
private array $aCountClassesToCleanup = [];
|
private array $aCountClassesToCleanup = [];
|
||||||
private array $aAnalysisDataTable = [];
|
private array $aAnalysisDataTable = [];
|
||||||
private array $aDeletionExecutionSummary = [];
|
private array $aDeletionExecutionSummary = [];
|
||||||
|
private ?array $aBasePackageModules = null;
|
||||||
|
|
||||||
private int $iCount = 0;
|
private int $iCount = 0;
|
||||||
private int $iColumnCount = 2;
|
private int $iColumnCount = 2;
|
||||||
@@ -349,20 +350,28 @@ class DataFeatureRemovalController extends Controller
|
|||||||
private function GetAvailableExtensions(bool $bIncludePackageExtensions = false): array
|
private function GetAvailableExtensions(bool $bIncludePackageExtensions = false): array
|
||||||
{
|
{
|
||||||
$aExtensionsData = [];
|
$aExtensionsData = [];
|
||||||
|
$oExtensionMap = DataFeatureRemoverExtensionService::GetInstance()->GetExtensionMap();
|
||||||
|
$aBasePackageModules = $this->GetBasePackageModules();
|
||||||
if ($bIncludePackageExtensions) {
|
if ($bIncludePackageExtensions) {
|
||||||
$aExtensionsRef = DataFeatureRemoverExtensionService::GetInstance()->GetExtensionMap()->GetAllExtensionsWithPreviouslyInstalled();
|
$aExtensionsRef = $oExtensionMap->GetAllExtensionsWithPreviouslyInstalled();
|
||||||
} else {
|
} else {
|
||||||
$aExtensionsRef = DataFeatureRemoverExtensionService::GetInstance()->ReadItopExtensions();
|
$aExtensionsRef = DataFeatureRemoverExtensionService::GetInstance()->ReadItopExtensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($aExtensionsRef as $oExtension) {
|
foreach ($aExtensionsRef as $oExtension) {
|
||||||
/** @var \iTopExtension $oExtension */
|
/** @var \iTopExtension $oExtension */
|
||||||
|
$aMetaData = [$oExtension->sVersion, $oExtension->GetExtensionSourceLabel()];
|
||||||
|
if (SetupUtils::IsIncludedInPackage($oExtensionMap->GetFromExtensionCode($oExtension->sCode), $aBasePackageModules)) {
|
||||||
|
$aMetaData[] = 'Already in package';
|
||||||
|
}
|
||||||
|
|
||||||
$aExtensionsData[$oExtension->sCode] = [
|
$aExtensionsData[$oExtension->sCode] = [
|
||||||
'version' => $oExtension->sVersion,
|
'version' => $oExtension->sVersion,
|
||||||
'label' => $oExtension->sLabel,
|
'label' => $oExtension->sLabel,
|
||||||
'code' => $oExtension->sCode,
|
'code' => $oExtension->sCode,
|
||||||
'description' => $oExtension->sDescription,
|
'description' => $oExtension->sDescription,
|
||||||
'source' => $oExtension->GetExtensionSourceLabel(),
|
'source' => $oExtension->GetExtensionSourceLabel(),
|
||||||
|
'metadata' => $aMetaData,
|
||||||
'installed' => $oExtension->bInstalled,
|
'installed' => $oExtension->bInstalled,
|
||||||
'extra_flags' => [
|
'extra_flags' => [
|
||||||
'uninstallable' => $oExtension->CanBeUninstalled(),
|
'uninstallable' => $oExtension->CanBeUninstalled(),
|
||||||
@@ -377,6 +386,26 @@ class DataFeatureRemovalController extends Controller
|
|||||||
return $aExtensionsData;
|
return $aExtensionsData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function GetBasePackageModules(): array
|
||||||
|
{
|
||||||
|
if ($this->aBasePackageModules !== null) {
|
||||||
|
return $this->aBasePackageModules;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$oRuntimeEnvironment = new RunTimeEnvironment(MetaModel::GetEnvironment(), false);
|
||||||
|
$aAvailableModules = $oRuntimeEnvironment->AnalyzeInstallation(MetaModel::GetConfig(), [APPROOT]);
|
||||||
|
$this->aBasePackageModules = SetupUtils::GetBasePackageModules($aAvailableModules, APPROOT.'datamodels');
|
||||||
|
|
||||||
|
echo implode(', <br/>', $this->aBasePackageModules);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
DataFeatureRemovalLog::Warning(__METHOD__, null, ['error' => $e->getMessage()]);
|
||||||
|
$this->aBasePackageModules = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->aBasePackageModules;
|
||||||
|
}
|
||||||
|
|
||||||
private function GetExtensionsDiff(array $aAddedExtensions, array $aRemovedExtensions): array
|
private function GetExtensionsDiff(array $aAddedExtensions, array $aRemovedExtensions): array
|
||||||
{
|
{
|
||||||
$aExtensions = [];
|
$aExtensions = [];
|
||||||
|
|||||||
@@ -32,9 +32,9 @@
|
|||||||
{% UIColumn Standard {} %}
|
{% UIColumn Standard {} %}
|
||||||
{% for aExtension in aAvailableExtensions[iColumnIndex] %}
|
{% for aExtension in aAvailableExtensions[iColumnIndex] %}
|
||||||
{% if aExtension['installed'] %}
|
{% if aExtension['installed'] %}
|
||||||
{% UIExtensionDetails Installed { sCode : aExtension['code'], sLabel : aExtension['label'], sDescription : aExtension['description'], aMetaData : [aExtension['version'], aExtension['source']], aExtraFlags : aExtension['extra_flags']} %}{% EndUIExtensionDetails %}
|
{% UIExtensionDetails Installed { sCode : aExtension['code'], sLabel : aExtension['label'], sDescription : aExtension['description'], aMetaData : aExtension['metadata'], aExtraFlags : aExtension['extra_flags']} %}{% EndUIExtensionDetails %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% UIExtensionDetails NotInstalled { sCode : aExtension['code'], sLabel : aExtension['label'], sDescription : aExtension['description'], aMetaData : [aExtension['version'], aExtension['source']], aExtraFlags : aExtension['extra_flags']} %}{% EndUIExtensionDetails %}
|
{% UIExtensionDetails NotInstalled { sCode : aExtension['code'], sLabel : aExtension['label'], sDescription : aExtension['description'], aMetaData : aExtension['metadata'], aExtraFlags : aExtension['extra_flags']} %}{% EndUIExtensionDetails %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% EndUIColumn %}
|
{% EndUIColumn %}
|
||||||
|
|||||||
@@ -12,9 +12,9 @@
|
|||||||
{% UIColumn Standard {} %}
|
{% UIColumn Standard {} %}
|
||||||
{% for aExtension in aAvailableExtensions[iColumnIndex] %}
|
{% for aExtension in aAvailableExtensions[iColumnIndex] %}
|
||||||
{% if aExtension['installed'] %}
|
{% if aExtension['installed'] %}
|
||||||
{% UIExtensionDetails Installed { sCode : aExtension['code'], sLabel : aExtension['label'], sDescription : aExtension['description'], aMetaData : [aExtension['version'], aExtension['source']], aExtraFlags : aExtension['extra_flags']} %}{% EndUIExtensionDetails %}
|
{% UIExtensionDetails Installed { sCode : aExtension['code'], sLabel : aExtension['label'], sDescription : aExtension['description'], aMetaData : aExtension['metadata'], aExtraFlags : aExtension['extra_flags']} %}{% EndUIExtensionDetails %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% UIExtensionDetails NotInstalled { sCode : aExtension['code'], sLabel : aExtension['label'], sDescription : aExtension['description'], aMetaData : [aExtension['version'], aExtension['source']], aExtraFlags : aExtension['extra_flags']} %}{% EndUIExtensionDetails %}
|
{% UIExtensionDetails NotInstalled { sCode : aExtension['code'], sLabel : aExtension['label'], sDescription : aExtension['description'], aMetaData : aExtension['metadata'], aExtraFlags : aExtension['extra_flags']} %}{% EndUIExtensionDetails %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% EndUIColumn %}
|
{% EndUIColumn %}
|
||||||
|
|||||||
@@ -1707,6 +1707,69 @@ JS
|
|||||||
return array_key_exists('itsm-designer-connector', $aModules);
|
return array_key_exists('itsm-designer-connector', $aModules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build a map of module IDs that belong to the package base scope.
|
||||||
|
*
|
||||||
|
* @param array $aAnalyzeInstallationModules Output from AnalyzeInstallation method
|
||||||
|
* @param string $sSourceDir Base directory used as package scope
|
||||||
|
*
|
||||||
|
* @return array<string, bool>
|
||||||
|
*/
|
||||||
|
public static function GetBasePackageModules(array $aAnalyzeInstallationModules, string $sSourceDir): array
|
||||||
|
{
|
||||||
|
$aBasePackageModules = [];
|
||||||
|
$sNormalizedSourceDir = self::NormalizePathForComparison($sSourceDir);
|
||||||
|
if ($sNormalizedSourceDir === '') {
|
||||||
|
return $aBasePackageModules;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($aAnalyzeInstallationModules as $sModuleId => $aModuleInfo) {
|
||||||
|
if ($sModuleId === ROOT_MODULE) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sRootDir = $aModuleInfo['root_dir'] ?? '';
|
||||||
|
if ($sRootDir === '') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sModuleRootDir = self::NormalizePathForComparison($sRootDir);
|
||||||
|
if (utils::StartsWith($sModuleRootDir, $sNormalizedSourceDir)) {
|
||||||
|
$aBasePackageModules[$sModuleId] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $aBasePackageModules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true when all modules of a non-package extension are already included in base package modules.
|
||||||
|
*/
|
||||||
|
public static function IsIncludedInPackage(?iTopExtension $oExtension, array $aBasePackageModules): bool
|
||||||
|
{
|
||||||
|
if (($oExtension === null) || ($oExtension->sSource === iTopExtension::SOURCE_WIZARD)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$aModules = $oExtension->aModules ?? [];
|
||||||
|
if (!is_array($aModules) || empty($aModules)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($aModules as $sModuleId) {
|
||||||
|
if (!array_key_exists($sModuleId, $aBasePackageModules)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function NormalizePathForComparison(string $sPath): string
|
||||||
|
{
|
||||||
|
return rtrim(str_replace('\\', '/', $sPath), '/');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $aModules List of available module codes
|
* @param array $aModules List of available module codes
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class WizStepModulesChoice extends AbstractWizStepInstall
|
|||||||
protected bool $bChoicesFromDatabase;
|
protected bool $bChoicesFromDatabase;
|
||||||
|
|
||||||
private array $aAnalyzeInstallationModules = [];
|
private array $aAnalyzeInstallationModules = [];
|
||||||
|
private ?array $aBasePackageModules = null;
|
||||||
private ?MissingDependencyException $oMissingDependencyException = null;
|
private ?MissingDependencyException $oMissingDependencyException = null;
|
||||||
|
|
||||||
public function __construct(WizardController $oWizard, $sCurrentState, bool $bOverWriteConfig = true)
|
public function __construct(WizardController $oWizard, $sCurrentState, bool $bOverWriteConfig = true)
|
||||||
@@ -167,6 +168,33 @@ class WizStepModulesChoice extends AbstractWizStepInstall
|
|||||||
return new WizardState(WizStepModulesChoice::class, (string)($index - 1));
|
return new WizardState(WizStepModulesChoice::class, (string)($index - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function GetAllSelectedModulesUntilNow(): array
|
||||||
|
{
|
||||||
|
$aModules = [];
|
||||||
|
$aSelectedChoices = json_decode($this->oWizard->GetParameter('selected_components', '{}'), true);
|
||||||
|
$iNextStep = $this->GetStepIndex();
|
||||||
|
$index = $iNextStep;
|
||||||
|
while(isset($aSelectedChoices[$iNextStep])){
|
||||||
|
//Let's empty the next steps, we only want what has been chosen before
|
||||||
|
$aSelectedChoices[$iNextStep] = [];
|
||||||
|
$iNextStep++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($i = 0; $i < $index; $i++) {
|
||||||
|
$aStepInfo = $this->GetStepInfo($i);
|
||||||
|
$this->GetSelectedModules($aStepInfo, $aSelectedChoices[$i], $aModules );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
echo "===GetAllSelectedModulesUntilNow : ===<br/>";
|
||||||
|
echo implode(', <br/>',array_keys($aModules));
|
||||||
|
echo "<br/>=======<br/><hr/>";
|
||||||
|
*/
|
||||||
|
|
||||||
|
return $aModules;
|
||||||
|
}
|
||||||
|
|
||||||
public function GetWizardSteps(): array
|
public function GetWizardSteps(): array
|
||||||
{
|
{
|
||||||
$aSteps = [
|
$aSteps = [
|
||||||
@@ -570,6 +598,7 @@ EOF
|
|||||||
foreach ($this->aAnalyzeInstallationModules as $sModuleId => $aModule) {
|
foreach ($this->aAnalyzeInstallationModules as $sModuleId => $aModule) {
|
||||||
if (($sModuleId != ROOT_MODULE) && !isset($aModules[$sModuleId])) {
|
if (($sModuleId != ROOT_MODULE) && !isset($aModules[$sModuleId])) {
|
||||||
if (($aModule['category'] == 'authentication') || (!$aModule['visible'] && !isset($aModule['auto_select']))) {
|
if (($aModule['category'] == 'authentication') || (!$aModule['visible'] && !isset($aModule['auto_select']))) {
|
||||||
|
//echo "Set module ".$sModuleId." to selected1<br/>";
|
||||||
$aModules[$sModuleId] = true;
|
$aModules[$sModuleId] = true;
|
||||||
$sDisplayChoices .= '<li><i>'.$aModule['label'].' (hidden)</i></li>';
|
$sDisplayChoices .= '<li><i>'.$aModule['label'].' (hidden)</i></li>';
|
||||||
}
|
}
|
||||||
@@ -612,6 +641,7 @@ EOF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($bSelected) {
|
if ($bSelected) {
|
||||||
|
//echo "Set module ".$sModuleId." to selected 2<br/>";
|
||||||
$aModules[$sModuleId] = true; // store the Id of the selected module
|
$aModules[$sModuleId] = true; // store the Id of the selected module
|
||||||
SetupInfo::SetSelectedModules($aModules);
|
SetupInfo::SetSelectedModules($aModules);
|
||||||
}
|
}
|
||||||
@@ -742,8 +772,22 @@ EOF
|
|||||||
return $this->aSteps[$index] ?? null;
|
return $this->aSteps[$index] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function ComputeChoiceFlags(array $aChoice, string $sChoiceId, array $aSelectedComponents, bool $bAllDisabled, bool $bDisableUninstallCheck, bool $bUpgradeMode)
|
public function ExtensionIsAlreadyIncludedInPreviousChoices(?iTopExtension $oITopExtension): bool
|
||||||
{
|
{
|
||||||
|
if(is_null($oITopExtension) || empty($oITopExtension->aModules)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$aAllPreviousChoicesModules = $this->GetAllSelectedModulesUntilNow();
|
||||||
|
|
||||||
|
foreach($oITopExtension->aModules as $sModuleId) {
|
||||||
|
if (!isset($aAllPreviousChoicesModules[$sModuleId])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ComputeChoiceFlags(array $aChoice, string $sChoiceId, array $aSelectedComponents, bool $bAllDisabled, bool $bDisableUninstallCheck, bool $bUpgradeMode) {
|
||||||
$oITopExtension = $this->oExtensionsMap->GetFromExtensionCode($aChoice['extension_code']);
|
$oITopExtension = $this->oExtensionsMap->GetFromExtensionCode($aChoice['extension_code']);
|
||||||
//If the extension is missing from disk, it won't exist in the ExtensionsMap, thus returning null
|
//If the extension is missing from disk, it won't exist in the ExtensionsMap, thus returning null
|
||||||
$bCanBeUninstalled = isset($aChoice['uninstallable']) ? $aChoice['uninstallable'] === true || $aChoice['uninstallable'] === 'yes' : $oITopExtension->CanBeUninstalled();
|
$bCanBeUninstalled = isset($aChoice['uninstallable']) ? $aChoice['uninstallable'] === true || $aChoice['uninstallable'] === 'yes' : $oITopExtension->CanBeUninstalled();
|
||||||
@@ -752,13 +796,17 @@ EOF
|
|||||||
$bMandatory = (isset($aChoice['mandatory']) && $aChoice['mandatory']);
|
$bMandatory = (isset($aChoice['mandatory']) && $aChoice['mandatory']);
|
||||||
$bInstalled = $bMissingFromDisk || $oITopExtension?->bInstalled ?? false;
|
$bInstalled = $bMissingFromDisk || $oITopExtension?->bInstalled ?? false;
|
||||||
$bDependencyIssue = $oITopExtension?->HasDependencyIssue() ?? false;
|
$bDependencyIssue = $oITopExtension?->HasDependencyIssue() ?? false;
|
||||||
|
$bAlreadyIncluded = $this->ExtensionIsAlreadyIncludedInPreviousChoices($oITopExtension);
|
||||||
|
|
||||||
$bChecked = $bSelected;
|
$bChecked = $bSelected;
|
||||||
$bDisabled = false;
|
$bDisabled = false;
|
||||||
if ($bMissingFromDisk) {
|
if ($bMissingFromDisk) {
|
||||||
$bDisabled = true;
|
$bDisabled = true;
|
||||||
$bChecked = false;
|
$bChecked = false;
|
||||||
} elseif ($bMandatory) {
|
}elseif($bAlreadyIncluded){
|
||||||
|
$bDisabled = true;
|
||||||
|
$bChecked = true;
|
||||||
|
}elseif ($bMandatory) {
|
||||||
$bDisabled = true;
|
$bDisabled = true;
|
||||||
$bChecked = true;
|
$bChecked = true;
|
||||||
} elseif ($bDependencyIssue) {
|
} elseif ($bDependencyIssue) {
|
||||||
@@ -790,6 +838,7 @@ EOF
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
'uninstallable' => $bCanBeUninstalled,
|
'uninstallable' => $bCanBeUninstalled,
|
||||||
|
'already_included' => $bAlreadyIncluded,
|
||||||
'dependency_issue' => $bDependencyIssue,
|
'dependency_issue' => $bDependencyIssue,
|
||||||
'mandatory' => $bMandatory,
|
'mandatory' => $bMandatory,
|
||||||
'missing' => $bMissingFromDisk,
|
'missing' => $bMissingFromDisk,
|
||||||
@@ -868,7 +917,7 @@ EOF
|
|||||||
<a class="setup--wizard-choice--more-info" target="_blank" href="'.$aChoice['more_info'].'">
|
<a class="setup--wizard-choice--more-info" target="_blank" href="'.$aChoice['more_info'].'">
|
||||||
<i class="setup-extension--icon fas fa-external-link-alt" title="More information"></i>
|
<i class="setup-extension--icon fas fa-external-link-alt" title="More information"></i>
|
||||||
</a>' : '';
|
</a>' : '';
|
||||||
$sDescription = isset($aChoice['description']) ? utils::EscapeHtml($aChoice['description']) : '';
|
$sDescription = isset($aChoice['description']) ? trim(utils::EscapeHtml($aChoice['description'])) : '';
|
||||||
$sId = utils::EscapeHtml($aChoice['extension_code']);
|
$sId = utils::EscapeHtml($aChoice['extension_code']);
|
||||||
$sDataId = 'data-id="'.utils::EscapeHtml($aChoice['extension_code']).'"';
|
$sDataId = 'data-id="'.utils::EscapeHtml($aChoice['extension_code']).'"';
|
||||||
$sDisabled = $aFlags['disabled'] ? ' disabled data-disabled="disabled"' : '';
|
$sDisabled = $aFlags['disabled'] ? ' disabled data-disabled="disabled"' : '';
|
||||||
@@ -893,11 +942,18 @@ EOF
|
|||||||
if ($aFlags['dependency_issue']) {
|
if ($aFlags['dependency_issue']) {
|
||||||
$sTooltip .= '<div id="badge--'.$sId.'--cannot-be-installed" class="ibo-badge ibo-block ibo-is-orange" title="This extension cannot be installed because one or more dependencies are not satisfied." >cannot be installed</div>';
|
$sTooltip .= '<div id="badge--'.$sId.'--cannot-be-installed" class="ibo-badge ibo-block ibo-is-orange" title="This extension cannot be installed because one or more dependencies are not satisfied." >cannot be installed</div>';
|
||||||
}
|
}
|
||||||
|
if ($aFlags['already_included']) {
|
||||||
|
if(mb_strlen($sDescription) > 0){
|
||||||
|
$sDescription .= '<br/>';
|
||||||
|
}
|
||||||
|
$sDescription .= '<b>All the modules included in this extension are also included in the package. To uninstall this extension, you have to delete its folder.</b>';
|
||||||
|
}
|
||||||
|
|
||||||
$sMetadata = '';
|
$sMetadata = '';
|
||||||
if (isset($aChoice['version']) && isset($aChoice['source_label'])) {
|
if (isset($aChoice['version']) && isset($aChoice['source_label'])) {
|
||||||
$sMetadata = '<span>v'.$aChoice['version'].'</span><span>'.$aChoice['source_label'].'</span>';
|
$sMetadata = '<span>v'.$aChoice['version'].'</span><span>'.$aChoice['source_label'].'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sChoiceDisabled = $aFlags['disabled'] && !$aFlags['checked'] ? 'choice-disabled' : '';
|
$sChoiceDisabled = $aFlags['disabled'] && !$aFlags['checked'] ? 'choice-disabled' : '';
|
||||||
|
|
||||||
$oPage->add('
|
$oPage->add('
|
||||||
@@ -937,6 +993,7 @@ EOF
|
|||||||
return $sSourceDir.'/installation.xml';
|
return $sSourceDir.'/installation.xml';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function CanMoveForward()
|
public function CanMoveForward()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => false,
|
'disabled' => false,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -72,6 +73,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => false,
|
'disabled' => false,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -93,6 +95,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -114,6 +117,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => true,
|
'mandatory' => true,
|
||||||
],
|
],
|
||||||
@@ -135,6 +139,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => true,
|
'mandatory' => true,
|
||||||
],
|
],
|
||||||
@@ -158,6 +163,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => false,
|
'disabled' => false,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -181,6 +187,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -204,6 +211,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => false,
|
'disabled' => false,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -227,6 +235,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => true,
|
'mandatory' => true,
|
||||||
],
|
],
|
||||||
@@ -250,6 +259,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => true,
|
'mandatory' => true,
|
||||||
],
|
],
|
||||||
@@ -285,6 +295,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => false,
|
'disabled' => false,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -320,6 +331,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -355,6 +367,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -390,6 +403,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => false,
|
'disabled' => false,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => false,
|
'dependency_issue' => false,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -417,6 +431,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => true,
|
'dependency_issue' => true,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -444,6 +459,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => true,
|
'dependency_issue' => true,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -471,6 +487,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => false,
|
'disabled' => false,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => true,
|
'dependency_issue' => true,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -498,6 +515,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => false,
|
'disabled' => false,
|
||||||
'checked' => false,
|
'checked' => false,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => true,
|
'dependency_issue' => true,
|
||||||
'mandatory' => false,
|
'mandatory' => false,
|
||||||
],
|
],
|
||||||
@@ -525,6 +543,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => true,
|
'installed' => true,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => true,
|
'dependency_issue' => true,
|
||||||
'mandatory' => true,
|
'mandatory' => true,
|
||||||
],
|
],
|
||||||
@@ -552,6 +571,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
|||||||
'installed' => false,
|
'installed' => false,
|
||||||
'disabled' => true,
|
'disabled' => true,
|
||||||
'checked' => true,
|
'checked' => true,
|
||||||
|
'already_included' => false,
|
||||||
'dependency_issue' => true,
|
'dependency_issue' => true,
|
||||||
'mandatory' => true,
|
'mandatory' => true,
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user