mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-19 07:12:26 +02:00
N°9167 Remote extensions (from hub & designer) need a forced uninstallation
This commit is contained in:
@@ -228,6 +228,7 @@ class DataFeatureRemovalController extends Controller
|
|||||||
'installed' => $oExtension->bInstalled,
|
'installed' => $oExtension->bInstalled,
|
||||||
'extra_flags' => [
|
'extra_flags' => [
|
||||||
'uninstallable' => $oExtension->CanBeUninstalled(),
|
'uninstallable' => $oExtension->CanBeUninstalled(),
|
||||||
|
'remote' => $oExtension->IsRemote(),
|
||||||
'missing' => $oExtension->bRemovedFromDisk,
|
'missing' => $oExtension->bRemovedFromDisk,
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -319,7 +320,7 @@ class DataFeatureRemovalController extends Controller
|
|||||||
if ($aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] !== 'on') {
|
if ($aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] !== 'on') {
|
||||||
$aExtensionData['extra_flags']['selected'] = false;
|
$aExtensionData['extra_flags']['selected'] = false;
|
||||||
$this->aExtensionsToCheck['to_be_removed'][] = $sCode;
|
$this->aExtensionsToCheck['to_be_removed'][] = $sCode;
|
||||||
if (!$aExtensionData['extra_flags']['uninstallable']) {
|
if (!$aExtensionData['extra_flags']['uninstallable'] || $aExtensionData['extra_flags']['remote']) {
|
||||||
$this->bForcedUninstallation = true;
|
$this->bForcedUninstallation = true;
|
||||||
}
|
}
|
||||||
} elseif (!$aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] === 'on') {
|
} elseif (!$aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] === 'on') {
|
||||||
|
|||||||
@@ -145,9 +145,14 @@ class iTopExtension
|
|||||||
public function GetExtensionSourceLabel(): string
|
public function GetExtensionSourceLabel(): string
|
||||||
{
|
{
|
||||||
return match ($this->sSource) {
|
return match ($this->sSource) {
|
||||||
iTopExtension::SOURCE_MANUAL => 'Local extensions folder',
|
self::SOURCE_MANUAL => 'Local extensions folder',
|
||||||
iTopExtension::SOURCE_REMOTE => (ITOP_APPLICATION == 'iTop') ? 'iTop Hub' : 'ITSM Designer',
|
self::SOURCE_REMOTE => (ITOP_APPLICATION == 'iTop') ? 'iTop Hub' : 'ITSM Designer',
|
||||||
default => '',
|
default => '',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function IsRemote(): string
|
||||||
|
{
|
||||||
|
return $this->sSource === self::SOURCE_REMOTE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ class ExtensionDetailsUIBlockFactory extends AbstractUIBlockFactory
|
|||||||
$bMissingFromDisk = $aExtraFlags['missing'] ?? false;
|
$bMissingFromDisk = $aExtraFlags['missing'] ?? false;
|
||||||
$bSelected = $aExtraFlags['selected'] ?? true;
|
$bSelected = $aExtraFlags['selected'] ?? true;
|
||||||
$bDisabled = $aExtraFlags['disabled'] ?? false;
|
$bDisabled = $aExtraFlags['disabled'] ?? false;
|
||||||
|
$bRemote = $aExtraFlags['remote'] ?? false;
|
||||||
self::AddExtraBadges($aBadges, $bUninstallable, $bMissingFromDisk);
|
self::AddExtraBadges($aBadges, $bUninstallable, $bMissingFromDisk);
|
||||||
$oBadgeInstalled = BadgeUIBlockFactory::MakeGreen(Dict::S('UI:Layout:ExtensionsDetails:BadgeInstalled'));
|
$oBadgeInstalled = BadgeUIBlockFactory::MakeGreen(Dict::S('UI:Layout:ExtensionsDetails:BadgeInstalled'));
|
||||||
$oBadgeInstalled->AddCSSClass('checked');
|
$oBadgeInstalled->AddCSSClass('checked');
|
||||||
@@ -33,7 +34,7 @@ class ExtensionDetailsUIBlockFactory extends AbstractUIBlockFactory
|
|||||||
if ($bMissingFromDisk) {
|
if ($bMissingFromDisk) {
|
||||||
$oExtensionDetails->GetToggler()->SetIsToggled(false);
|
$oExtensionDetails->GetToggler()->SetIsToggled(false);
|
||||||
$oExtensionDetails->GetToggler()->SetIsDisabled(true);
|
$oExtensionDetails->GetToggler()->SetIsDisabled(true);
|
||||||
} elseif (!$bUninstallable) {
|
} elseif (!$bUninstallable || $bRemote) {
|
||||||
$oExtensionDetails->AllowForceUninstall();
|
$oExtensionDetails->AllowForceUninstall();
|
||||||
$oExtensionDetails->GetToggler()->SetIsDisabled(true);
|
$oExtensionDetails->GetToggler()->SetIsDisabled(true);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user