mirror of
https://github.com/Combodo/iTop.git
synced 2026-09-16 11:48:20 +02:00
N°9134 - Detect extension with no code when installing by data feature removal extension
This commit is contained in:
@@ -24,6 +24,7 @@ use ContextTag;
|
||||
use CoreException;
|
||||
use Dict;
|
||||
use Exception;
|
||||
use iTopExtension;
|
||||
use MetaModel;
|
||||
use MFCompiler;
|
||||
use RunTimeEnvironment;
|
||||
@@ -464,13 +465,14 @@ class DataFeatureRemovalController extends Controller
|
||||
'extensions_not_uninstallable' => [],
|
||||
];
|
||||
foreach ($aAvailableExtensions as $sCode => &$aExtensionData) {
|
||||
if (!isset($aSelectedExtensionsFromUI[$sCode])) {
|
||||
$sCodeFromUI = $sCode !== '' ? $sCode : iTopExtension::CODE_NO_CODE;
|
||||
if (!isset($aSelectedExtensionsFromUI[$sCodeFromUI])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] !== 'on') {
|
||||
if ($aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCodeFromUI] !== 'on') {
|
||||
$aExtensionData['extra_flags']['selected'] = false;
|
||||
$sLabel = $aAvailableExtensions[$sCode]['label'];
|
||||
$sLabel = $aExtensionData['label'];
|
||||
$this->aExtensionsToCheck['to_be_removed'][$sCode] = $sLabel;
|
||||
if (! $this->bForcedUninstallation && $aExtensionData['extra_flags']['uninstallable']) {
|
||||
$this->bForcedUninstallation = true;
|
||||
@@ -478,9 +480,9 @@ class DataFeatureRemovalController extends Controller
|
||||
if (false === $aExtensionData['extra_flags']['uninstallable'] || true === $aExtensionData['extra_flags']['remote']) {
|
||||
$this->aExtensionsToCheck['extensions_not_uninstallable'][] = $sCode;
|
||||
}
|
||||
} elseif (!$aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCode] === 'on') {
|
||||
} elseif (!$aExtensionData['installed'] && $aSelectedExtensionsFromUI[$sCodeFromUI] === 'on') {
|
||||
$aExtensionData['extra_flags']['selected'] = true;
|
||||
$sLabel = $aAvailableExtensions[$sCode]['label'];
|
||||
$sLabel = $aExtensionData['label'];
|
||||
$this->aExtensionsToCheck['to_be_installed'][$sCode] = $sLabel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ class iTopExtension
|
||||
public const SOURCE_WIZARD = 'datamodels';
|
||||
public const SOURCE_MANUAL = 'extensions';
|
||||
public const SOURCE_REMOTE = 'data';
|
||||
public const CODE_NO_CODE = 'error-extension-code-missing';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
|
||||
@@ -9,6 +9,7 @@ use Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenu;
|
||||
use Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenuItem\PopoverMenuItemFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlock;
|
||||
use Dict;
|
||||
use iTopExtension;
|
||||
use JSButtonItem;
|
||||
|
||||
class ExtensionDetails extends UIContentBlock
|
||||
@@ -179,7 +180,8 @@ class ExtensionDetails extends UIContentBlock
|
||||
|
||||
protected function InitializeToggler()
|
||||
{
|
||||
$sName = 'aSelectedExtensions['.$this->GetCode().']';
|
||||
$sCode = $this->GetCode() !== '' ? $this->GetCode() : iTopExtension::CODE_NO_CODE;
|
||||
$sName = 'aSelectedExtensions['.$sCode.']';
|
||||
$this->oToggler = new Toggler();
|
||||
$this->oToggler->SetName($sName);
|
||||
$this->oToggler->SetTooltip(Dict::Format('UI:Layout:ExtensionsDetails:TogglerTooltip', $this->GetLabel()));
|
||||
|
||||
Reference in New Issue
Block a user