@openui5/sap.ui.rta 1.134.0 → 1.136.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/REUSE.toml +649 -0
- package/THIRDPARTY.txt +23 -23
- package/package.json +6 -6
- package/src/sap/ui/rta/.library +2 -2
- package/src/sap/ui/rta/Client.js +2 -2
- package/src/sap/ui/rta/RuntimeAuthoring.js +124 -28
- package/src/sap/ui/rta/Utils.js +19 -2
- package/src/sap/ui/rta/api/startAdaptation.js +1 -1
- package/src/sap/ui/rta/api/startKeyUserAdaptation.js +1 -1
- package/src/sap/ui/rta/appVariant/AppVariantDialog.js +1 -1
- package/src/sap/ui/rta/appVariant/AppVariantManager.js +26 -26
- package/src/sap/ui/rta/appVariant/AppVariantOverviewDialog.js +1 -1
- package/src/sap/ui/rta/appVariant/AppVariantUtils.js +1 -1
- package/src/sap/ui/rta/appVariant/Feature.js +72 -72
- package/src/sap/ui/rta/appVariant/S4HanaCloudBackend.js +1 -1
- package/src/sap/ui/rta/appVariant/Utils.js +27 -36
- package/src/sap/ui/rta/appVariant/manageApps/webapp/Component.js +1 -1
- package/src/sap/ui/rta/appVariant/manageApps/webapp/controller/ManageApps.controller.js +54 -68
- package/src/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n_fr_CA.properties +2 -2
- package/src/sap/ui/rta/appVariant/manageApps/webapp/index.js +1 -1
- package/src/sap/ui/rta/appVariant/manageApps/webapp/model/models.js +1 -1
- package/src/sap/ui/rta/command/AddIFrame.js +2 -2
- package/src/sap/ui/rta/command/AddProperty.js +2 -2
- package/src/sap/ui/rta/command/AddXML.js +2 -2
- package/src/sap/ui/rta/command/AddXMLAtExtensionPoint.js +2 -2
- package/src/sap/ui/rta/command/AnnotationCommand.js +66 -6
- package/src/sap/ui/rta/command/BaseCommand.js +2 -2
- package/src/sap/ui/rta/command/BindProperty.js +2 -2
- package/src/sap/ui/rta/command/Combine.js +2 -2
- package/src/sap/ui/rta/command/CommandFactory.js +72 -48
- package/src/sap/ui/rta/command/CompositeCommand.js +13 -13
- package/src/sap/ui/rta/command/ControlVariantConfigure.js +2 -2
- package/src/sap/ui/rta/command/ControlVariantSave.js +2 -2
- package/src/sap/ui/rta/command/ControlVariantSaveAs.js +2 -2
- package/src/sap/ui/rta/command/ControlVariantSetTitle.js +2 -2
- package/src/sap/ui/rta/command/ControlVariantSwitch.js +2 -2
- package/src/sap/ui/rta/command/CreateContainer.js +2 -2
- package/src/sap/ui/rta/command/CustomAdd.js +2 -2
- package/src/sap/ui/rta/command/ExtendControllerCommand.js +93 -0
- package/src/sap/ui/rta/command/FlexCommand.js +55 -44
- package/src/sap/ui/rta/command/LREPSerializer.js +24 -24
- package/src/sap/ui/rta/command/LocalReset.js +2 -2
- package/src/sap/ui/rta/command/ManifestCommand.js +112 -0
- package/src/sap/ui/rta/command/Move.js +2 -2
- package/src/sap/ui/rta/command/Property.js +2 -2
- package/src/sap/ui/rta/command/Remove.js +2 -2
- package/src/sap/ui/rta/command/Rename.js +2 -2
- package/src/sap/ui/rta/command/Resize.js +2 -2
- package/src/sap/ui/rta/command/Reveal.js +2 -2
- package/src/sap/ui/rta/command/Settings.js +2 -2
- package/src/sap/ui/rta/command/Split.js +2 -2
- package/src/sap/ui/rta/command/Stack.js +20 -5
- package/src/sap/ui/rta/command/compVariant/CompVariantContent.js +2 -2
- package/src/sap/ui/rta/command/compVariant/CompVariantSaveAs.js +2 -2
- package/src/sap/ui/rta/command/compVariant/CompVariantSwitch.js +2 -2
- package/src/sap/ui/rta/command/compVariant/CompVariantUpdate.js +2 -2
- package/src/sap/ui/rta/command/{appDescriptor → manifest}/AddLibrary.js +11 -11
- package/src/sap/ui/rta/enablement/TestDelegate.js +1 -1
- package/src/sap/ui/rta/enablement/elementActionTest.js +2 -2
- package/src/sap/ui/rta/library.js +3 -3
- package/src/sap/ui/rta/messagebundle.properties +181 -9
- package/src/sap/ui/rta/messagebundle_ar.properties +105 -6
- package/src/sap/ui/rta/messagebundle_bg.properties +105 -6
- package/src/sap/ui/rta/messagebundle_ca.properties +108 -9
- package/src/sap/ui/rta/messagebundle_cnr.properties +106 -7
- package/src/sap/ui/rta/messagebundle_cs.properties +103 -4
- package/src/sap/ui/rta/messagebundle_cy.properties +105 -6
- package/src/sap/ui/rta/messagebundle_da.properties +104 -5
- package/src/sap/ui/rta/messagebundle_de.properties +114 -15
- package/src/sap/ui/rta/messagebundle_el.properties +102 -3
- package/src/sap/ui/rta/messagebundle_en.properties +105 -6
- package/src/sap/ui/rta/messagebundle_en_GB.properties +105 -6
- package/src/sap/ui/rta/messagebundle_en_US_saprigi.properties +9 -1
- package/src/sap/ui/rta/messagebundle_es.properties +109 -10
- package/src/sap/ui/rta/messagebundle_es_MX.properties +113 -14
- package/src/sap/ui/rta/messagebundle_et.properties +103 -4
- package/src/sap/ui/rta/messagebundle_fi.properties +107 -8
- package/src/sap/ui/rta/messagebundle_fr.properties +123 -24
- package/src/sap/ui/rta/messagebundle_fr_CA.properties +110 -11
- package/src/sap/ui/rta/messagebundle_hi.properties +105 -6
- package/src/sap/ui/rta/messagebundle_hr.properties +145 -46
- package/src/sap/ui/rta/messagebundle_hu.properties +104 -5
- package/src/sap/ui/rta/messagebundle_id.properties +113 -14
- package/src/sap/ui/rta/messagebundle_it.properties +146 -47
- package/src/sap/ui/rta/messagebundle_iw.properties +105 -6
- package/src/sap/ui/rta/messagebundle_ja.properties +117 -18
- package/src/sap/ui/rta/messagebundle_kk.properties +104 -5
- package/src/sap/ui/rta/messagebundle_ko.properties +105 -6
- package/src/sap/ui/rta/messagebundle_lt.properties +105 -6
- package/src/sap/ui/rta/messagebundle_lv.properties +104 -5
- package/src/sap/ui/rta/messagebundle_mk.properties +108 -9
- package/src/sap/ui/rta/messagebundle_ms.properties +115 -16
- package/src/sap/ui/rta/messagebundle_nl.properties +104 -5
- package/src/sap/ui/rta/messagebundle_no.properties +108 -9
- package/src/sap/ui/rta/messagebundle_pl.properties +104 -5
- package/src/sap/ui/rta/messagebundle_pt.properties +103 -4
- package/src/sap/ui/rta/messagebundle_pt_PT.properties +103 -4
- package/src/sap/ui/rta/messagebundle_ro.properties +103 -4
- package/src/sap/ui/rta/messagebundle_ru.properties +107 -8
- package/src/sap/ui/rta/messagebundle_sh.properties +106 -7
- package/src/sap/ui/rta/messagebundle_sk.properties +103 -4
- package/src/sap/ui/rta/messagebundle_sl.properties +103 -4
- package/src/sap/ui/rta/messagebundle_sr.properties +106 -7
- package/src/sap/ui/rta/messagebundle_sv.properties +104 -5
- package/src/sap/ui/rta/messagebundle_th.properties +104 -5
- package/src/sap/ui/rta/messagebundle_tr.properties +103 -4
- package/src/sap/ui/rta/messagebundle_uk.properties +105 -6
- package/src/sap/ui/rta/messagebundle_vi.properties +105 -6
- package/src/sap/ui/rta/messagebundle_zh_CN.properties +104 -5
- package/src/sap/ui/rta/messagebundle_zh_TW.properties +105 -6
- package/src/sap/ui/rta/plugin/AddXMLAtExtensionPoint.js +34 -34
- package/src/sap/ui/rta/plugin/AddXMLPlugin.js +54 -32
- package/src/sap/ui/rta/plugin/BaseCreate.js +2 -2
- package/src/sap/ui/rta/plugin/Combine.js +2 -2
- package/src/sap/ui/rta/plugin/CompVariant.js +114 -114
- package/src/sap/ui/rta/plugin/ControlVariant.js +37 -54
- package/src/sap/ui/rta/plugin/CreateContainer.js +2 -2
- package/src/sap/ui/rta/plugin/CutPaste.js +2 -2
- package/src/sap/ui/rta/plugin/DragDrop.js +2 -2
- package/src/sap/ui/rta/plugin/ExtendControllerPlugin.js +172 -0
- package/src/sap/ui/rta/plugin/LocalReset.js +4 -3
- package/src/sap/ui/rta/plugin/Plugin.js +31 -11
- package/src/sap/ui/rta/plugin/RTAElementMover.js +2 -2
- package/src/sap/ui/rta/plugin/Remove.js +2 -2
- package/src/sap/ui/rta/plugin/Resize.js +2 -2
- package/src/sap/ui/rta/plugin/Selection.js +2 -2
- package/src/sap/ui/rta/plugin/Settings.js +75 -62
- package/src/sap/ui/rta/plugin/Split.js +2 -2
- package/src/sap/ui/rta/plugin/Stretch.js +2 -2
- package/src/sap/ui/rta/plugin/additionalElements/ActionExtractor.js +2 -2
- package/src/sap/ui/rta/plugin/additionalElements/AddElementsDialog.js +2 -2
- package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsAnalyzer.js +1 -1
- package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin.js +2 -2
- package/src/sap/ui/rta/plugin/additionalElements/AdditionalElementsUtils.js +2 -2
- package/src/sap/ui/rta/plugin/additionalElements/CommandBuilder.js +2 -2
- package/src/sap/ui/rta/plugin/annotations/AnnotationChangeDialog.fragment.xml +13 -9
- package/src/sap/ui/rta/plugin/annotations/AnnotationChangeDialog.js +75 -13
- package/src/sap/ui/rta/plugin/annotations/AnnotationChangeDialogController.js +38 -32
- package/src/sap/ui/rta/plugin/annotations/AnnotationPlugin.js +61 -21
- package/src/sap/ui/rta/plugin/annotations/AnnotationTypes.js +1 -1
- package/src/sap/ui/rta/plugin/iframe/AddIFrame.js +8 -2
- package/src/sap/ui/rta/plugin/iframe/AddIFrameDialog.js +2 -2
- package/src/sap/ui/rta/plugin/iframe/AddIFrameDialogController.js +1 -1
- package/src/sap/ui/rta/plugin/iframe/urlCleaner.js +1 -1
- package/src/sap/ui/rta/plugin/{Rename.js → rename/Rename.js} +29 -67
- package/src/sap/ui/rta/plugin/rename/RenameDialog.fragment.xml +63 -0
- package/src/sap/ui/rta/plugin/rename/RenameDialog.js +140 -0
- package/src/sap/ui/rta/service/Action.js +2 -2
- package/src/sap/ui/rta/service/ControllerExtension.js +11 -5
- package/src/sap/ui/rta/service/Outline.js +2 -2
- package/src/sap/ui/rta/service/Property.js +2 -2
- package/src/sap/ui/rta/service/Receiver.js +1 -1
- package/src/sap/ui/rta/service/Selection.js +2 -2
- package/src/sap/ui/rta/service/SupportTools.js +2 -2
- package/src/sap/ui/rta/service/index.js +1 -1
- package/src/sap/ui/rta/themes/base/Toolbar.adaptation.less +5 -0
- package/src/sap/ui/rta/themes/base/library.source.less +1 -1
- package/src/sap/ui/rta/themes/sap_hcb/library.source.less +1 -1
- package/src/sap/ui/rta/toolbar/ActionsMenu.fragment.xml +6 -0
- package/src/sap/ui/rta/toolbar/Adaptation.fragment.xml +22 -9
- package/src/sap/ui/rta/toolbar/Adaptation.js +44 -9
- package/src/sap/ui/rta/toolbar/AdaptationRenderer.js +1 -1
- package/src/sap/ui/rta/toolbar/Base.js +2 -2
- package/src/sap/ui/rta/toolbar/BaseRenderer.js +1 -1
- package/src/sap/ui/rta/toolbar/Fiori.js +19 -10
- package/src/sap/ui/rta/toolbar/FioriLike.js +7 -5
- package/src/sap/ui/rta/toolbar/OverflowToolbarButton.js +2 -2
- package/src/sap/ui/rta/toolbar/Standalone.js +2 -2
- package/src/sap/ui/rta/toolbar/contextBased/ManageAdaptations.js +1 -1
- package/src/sap/ui/rta/toolbar/contextBased/SaveAsAdaptation.js +2 -2
- package/src/sap/ui/rta/toolbar/translation/Translation.js +2 -2
- package/src/sap/ui/rta/toolbar/versioning/Versioning.js +2 -2
- package/src/sap/ui/rta/util/Animation.js +1 -1
- package/src/sap/ui/rta/util/BindingsExtractor.js +1 -1
- package/src/sap/ui/rta/util/PluginManager.js +8 -6
- package/src/sap/ui/rta/util/PopupManager.js +2 -2
- package/src/sap/ui/rta/util/ReloadManager.js +2 -2
- package/src/sap/ui/rta/util/ServiceEventBus.js +2 -2
- package/src/sap/ui/rta/util/ServiceManager.js +2 -2
- package/src/sap/ui/rta/util/adaptationStarter.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/ChangeCategories.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/ChangeIndicator.js +2 -2
- package/src/sap/ui/rta/util/changeVisualization/ChangeIndicatorRegistry.js +2 -2
- package/src/sap/ui/rta/util/changeVisualization/ChangeStates.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/ChangeVisualization.js +4 -4
- package/src/sap/ui/rta/util/changeVisualization/ChangeVisualizationUtils.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/commands/CombineVisualization.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/commands/CreateContainerVisualization.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/commands/MoveVisualization.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/commands/RenameVisualization.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/commands/SplitVisualization.js +1 -1
- package/src/sap/ui/rta/util/changeVisualization/commands/getCommandVisualization.js +1 -1
- package/src/sap/ui/rta/util/guidedTour/GuidedTour.js +242 -0
- package/src/sap/ui/rta/util/guidedTour/TourMarker.fragment.xml +50 -0
- package/src/sap/ui/rta/util/guidedTour/content/GeneralTour.js +205 -0
- package/src/sap/ui/rta/util/hasStableId.js +1 -1
- package/src/sap/ui/rta/util/isReuseComponent.js +1 -1
- package/src/sap/ui/rta/util/showMessageBox.js +1 -1
- package/src/sap/ui/rta/util/validateFlexEnabled.js +1 -1
- package/src/sap/ui/rta/util/validateStableIds.js +1 -1
- package/src/sap/ui/rta/util/validateText.js +1 -1
- package/src/sap/ui/rta/util/whatsNew/WhatsNew.js +8 -4
- package/src/sap/ui/rta/util/whatsNew/WhatsNewDialog.fragment.xml +1 -1
- package/src/sap/ui/rta/util/whatsNew/WhatsNewOverview.js +1 -1
- package/src/sap/ui/rta/util/whatsNew/WhatsNewUtils.js +1 -1
- package/src/sap/ui/rta/util/whatsNew/whatsNewContent/WhatsNewFeatures.js +85 -1
- package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/ChangeLabelsAction.png +0 -0
- package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/DisplayBehavior.png +0 -0
- package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/ExtendedActions.png +0 -0
- package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/GuidedTour.png +0 -0
- package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/ReloadButtonToolbar.png +0 -0
- package/src/sap/ui/rta/util/whatsNew/whatsNewContent/whatsNewImages/RenameDialog.png +0 -0
- package/ui5.yaml +1 -1
- package/.reuse/dep5 +0 -471
- package/src/sap/ui/rta/command/AppDescriptorCommand.js +0 -114
- package/src/sap/ui/rta/plugin/RenameHandler.js +0 -477
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright
|
|
3
|
+
* (c) Copyright 2025 SAP SE or an SAP affiliate company.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
sap.ui.define([
|
|
7
|
-
"sap/base/i18n/ResourceBundle",
|
|
8
7
|
"sap/ui/core/IconPool",
|
|
9
8
|
"sap/ui/fl/apply/api/FlexRuntimeInfoAPI",
|
|
10
9
|
"sap/ui/fl/write/api/AppVariantWriteAPI",
|
|
11
10
|
"sap/ui/fl/Utils",
|
|
12
11
|
"sap/ui/rta/appVariant/AppVariantUtils"
|
|
13
12
|
], function(
|
|
14
|
-
ResourceBundle,
|
|
15
13
|
IconPool,
|
|
16
14
|
FlexRuntimeInfoAPI,
|
|
17
15
|
AppVariantWriteAPI,
|
|
@@ -20,15 +18,10 @@ sap.ui.define([
|
|
|
20
18
|
) {
|
|
21
19
|
"use strict";
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var sModulePath = `${sap.ui.require.toUrl("sap/ui/rta/appVariant/manageApps/")}webapp`;
|
|
26
|
-
var oI18n = ResourceBundle.create({
|
|
27
|
-
url: `${sModulePath}/i18n/i18n.properties`
|
|
28
|
-
});
|
|
21
|
+
const Utils = {};
|
|
29
22
|
|
|
30
23
|
Utils._checkNavigationSupported = function(oNavigationParams) {
|
|
31
|
-
|
|
24
|
+
const oUShellContainer = FlUtils.getUshellContainer();
|
|
32
25
|
return oUShellContainer.getServiceAsync("Navigation")
|
|
33
26
|
.then(function(oNavigationService) {
|
|
34
27
|
return oNavigationService.getLinks([oNavigationParams]);
|
|
@@ -38,7 +31,7 @@ sap.ui.define([
|
|
|
38
31
|
});
|
|
39
32
|
};
|
|
40
33
|
|
|
41
|
-
Utils._checkAppType = function(bOriginalApp, bAppVariant) {
|
|
34
|
+
Utils._checkAppType = function(bOriginalApp, bAppVariant, oI18n) {
|
|
42
35
|
if (bOriginalApp && bAppVariant) {
|
|
43
36
|
return oI18n.getText("MAA_ORIGINAL_TYPE");
|
|
44
37
|
} else if (bAppVariant) {
|
|
@@ -50,9 +43,9 @@ sap.ui.define([
|
|
|
50
43
|
return undefined;
|
|
51
44
|
};
|
|
52
45
|
|
|
53
|
-
Utils._calculateCurrentStatus = function(sAppVariantInfoId, sAppVarStatus) {
|
|
46
|
+
Utils._calculateCurrentStatus = function(sAppVariantInfoId, sAppVarStatus, oI18n) {
|
|
54
47
|
// Get the id of a new created app variant
|
|
55
|
-
|
|
48
|
+
const sNewAppVariantId = AppVariantUtils.getNewAppVariantId();
|
|
56
49
|
|
|
57
50
|
if (sAppVarStatus === "R") {
|
|
58
51
|
return oI18n.getText("MAA_OPERATION_IN_PROGRESS");
|
|
@@ -65,7 +58,7 @@ sap.ui.define([
|
|
|
65
58
|
};
|
|
66
59
|
|
|
67
60
|
Utils._checkMenuItemOptions = function(oPreparedObject, bAdaptUIButtonEnabled) {
|
|
68
|
-
|
|
61
|
+
const oAppVarObject = {};
|
|
69
62
|
|
|
70
63
|
if (oPreparedObject.isKeyUser) {
|
|
71
64
|
if (oPreparedObject.isOriginal) {
|
|
@@ -112,21 +105,19 @@ sap.ui.define([
|
|
|
112
105
|
};
|
|
113
106
|
|
|
114
107
|
Utils._getNavigationInfo = function(oPreparedObject) {
|
|
115
|
-
|
|
108
|
+
let oNavigationObject = {};
|
|
116
109
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
110
|
+
const sSemanticObject = oPreparedObject.startWith.semanticObject;
|
|
111
|
+
const sAction = oPreparedObject.startWith.action;
|
|
112
|
+
const oParams = oPreparedObject.startWith.parameters;
|
|
120
113
|
|
|
121
|
-
|
|
114
|
+
const oNavigationParams = {
|
|
122
115
|
semanticObject: sSemanticObject,
|
|
123
116
|
action: sAction,
|
|
124
117
|
params: oParams
|
|
125
118
|
};
|
|
126
119
|
|
|
127
120
|
return this._checkNavigationSupported(oNavigationParams).then(function(aResult) {
|
|
128
|
-
var oDeleteButtonProperties;
|
|
129
|
-
|
|
130
121
|
if (aResult[0].length && oPreparedObject.isKeyUser) {
|
|
131
122
|
oNavigationObject.adaptUIButtonEnabled = true;
|
|
132
123
|
|
|
@@ -138,7 +129,7 @@ sap.ui.define([
|
|
|
138
129
|
oNavigationObject.adaptUIButtonEnabled = false;
|
|
139
130
|
}
|
|
140
131
|
|
|
141
|
-
oDeleteButtonProperties = this._checkMenuItemOptions(oPreparedObject, oNavigationObject.adaptUIButtonEnabled);
|
|
132
|
+
const oDeleteButtonProperties = this._checkMenuItemOptions(oPreparedObject, oNavigationObject.adaptUIButtonEnabled);
|
|
142
133
|
|
|
143
134
|
oNavigationObject.semanticObject = sSemanticObject;
|
|
144
135
|
oNavigationObject.action = sAction;
|
|
@@ -173,10 +164,10 @@ sap.ui.define([
|
|
|
173
164
|
};
|
|
174
165
|
};
|
|
175
166
|
|
|
176
|
-
Utils.getAppVariantOverviewAttributes = function(oAppVariantInfo, bKeyUser) {
|
|
177
|
-
|
|
167
|
+
Utils.getAppVariantOverviewAttributes = function(oAppVariantInfo, bKeyUser, oI18n) {
|
|
168
|
+
let oAppVariantAttributes;
|
|
178
169
|
// Adding the tooltip to every icon which is shown on the App Variant Overview Dialog
|
|
179
|
-
|
|
170
|
+
const sIconUrl = oAppVariantInfo.iconUrl;
|
|
180
171
|
if (sIconUrl && IconPool.isIconURI(sIconUrl)) {
|
|
181
172
|
// eslint-disable-next-line prefer-destructuring
|
|
182
173
|
oAppVariantInfo.iconText = sIconUrl.split("//")[1];
|
|
@@ -188,16 +179,16 @@ sap.ui.define([
|
|
|
188
179
|
oAppVariantAttributes.isKeyUser = bKeyUser;
|
|
189
180
|
|
|
190
181
|
// Type of application required for Overview dialog
|
|
191
|
-
oAppVariantAttributes.typeOfApp = this._checkAppType(oAppVariantInfo.isOriginal, oAppVariantInfo.isAppVariant);
|
|
182
|
+
oAppVariantAttributes.typeOfApp = this._checkAppType(oAppVariantInfo.isOriginal, oAppVariantInfo.isAppVariant, oI18n);
|
|
192
183
|
|
|
193
184
|
// Calculate current status of application required for Overview Dialog
|
|
194
|
-
oAppVariantAttributes.currentStatus = this._calculateCurrentStatus(oAppVariantInfo.appId, oAppVariantInfo.appVarStatus);
|
|
185
|
+
oAppVariantAttributes.currentStatus = this._calculateCurrentStatus(oAppVariantInfo.appId, oAppVariantInfo.appVarStatus, oI18n);
|
|
195
186
|
|
|
196
187
|
const bIsS4HanaCloud = FlexRuntimeInfoAPI.isAtoEnabled();
|
|
197
188
|
// Populate the app variant attributes with the cloud system information
|
|
198
189
|
oAppVariantAttributes.isS4HanaCloud = bIsS4HanaCloud;
|
|
199
190
|
|
|
200
|
-
|
|
191
|
+
const oPreparedObject = {
|
|
201
192
|
isKeyUser: bKeyUser,
|
|
202
193
|
isOriginal: oAppVariantInfo.isOriginal,
|
|
203
194
|
isS4HanaCloud: bIsS4HanaCloud,
|
|
@@ -213,16 +204,16 @@ sap.ui.define([
|
|
|
213
204
|
}
|
|
214
205
|
|
|
215
206
|
oAppVariantAttributes.adaptUIButtonEnabled = false;
|
|
216
|
-
|
|
207
|
+
const oDeleteButtonProperties = this._checkMenuItemOptions(oPreparedObject, false);
|
|
217
208
|
oAppVariantAttributes = { ...oAppVariantAttributes, ...oDeleteButtonProperties };
|
|
218
209
|
return Promise.resolve(oAppVariantAttributes);
|
|
219
210
|
};
|
|
220
211
|
|
|
221
|
-
Utils.getAppVariantOverview = function(sReferenceAppId, bKeyUser) {
|
|
212
|
+
Utils.getAppVariantOverview = function(sReferenceAppId, bKeyUser, oI18n) {
|
|
222
213
|
// Customer* means the layer can be either CUSTOMER or CUSTOMER_BASE. This layer determination takes place in backend.
|
|
223
|
-
|
|
214
|
+
const sLayer = bKeyUser ? "CUSTOMER*" : "VENDOR";
|
|
224
215
|
|
|
225
|
-
|
|
216
|
+
const mPropertyBag = {
|
|
226
217
|
selector: {
|
|
227
218
|
appId: sReferenceAppId
|
|
228
219
|
},
|
|
@@ -230,8 +221,8 @@ sap.ui.define([
|
|
|
230
221
|
};
|
|
231
222
|
|
|
232
223
|
return AppVariantWriteAPI.listAllAppVariants(mPropertyBag).then(function(oResult) {
|
|
233
|
-
|
|
234
|
-
|
|
224
|
+
const aAppVariantOverviewInfo = [];
|
|
225
|
+
let aAppVariantInfo;
|
|
235
226
|
if (oResult.response && oResult.response.items) {
|
|
236
227
|
aAppVariantInfo = oResult.response.items;
|
|
237
228
|
} else {
|
|
@@ -240,7 +231,7 @@ sap.ui.define([
|
|
|
240
231
|
|
|
241
232
|
aAppVariantInfo.forEach(function(oAppVariantInfo) {
|
|
242
233
|
if (!oAppVariantInfo.isDescriptorVariant) {
|
|
243
|
-
aAppVariantOverviewInfo.push(this.getAppVariantOverviewAttributes(oAppVariantInfo, bKeyUser));
|
|
234
|
+
aAppVariantOverviewInfo.push(this.getAppVariantOverviewAttributes(oAppVariantInfo, bKeyUser, oI18n));
|
|
244
235
|
}
|
|
245
236
|
}, this);
|
|
246
237
|
|
|
@@ -250,7 +241,7 @@ sap.ui.define([
|
|
|
250
241
|
}.bind(this));
|
|
251
242
|
};
|
|
252
243
|
|
|
253
|
-
Utils.
|
|
244
|
+
Utils.getManifest = function(mPropertyBag) {
|
|
254
245
|
return AppVariantWriteAPI.getManifest(mPropertyBag).then(function(oResult) {
|
|
255
246
|
return oResult.response;
|
|
256
247
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright
|
|
3
|
+
* (c) Copyright 2025 SAP SE or an SAP affiliate company.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
sap.ui.define([
|
|
@@ -36,26 +36,21 @@ sap.ui.define([
|
|
|
36
36
|
) {
|
|
37
37
|
"use strict";
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var oI18n;
|
|
39
|
+
let _sIdRunningApp;
|
|
40
|
+
let _bKeyUser;
|
|
41
|
+
let _sLayer;
|
|
42
|
+
let _oCrossAppNavService;
|
|
43
|
+
let sModulePath;
|
|
45
44
|
|
|
46
45
|
return Controller.extend("sap.ui.rta.appVariant.manageApps.webapp.controller.ManageApps", {
|
|
47
46
|
onInit() {
|
|
48
47
|
_sIdRunningApp = this.getOwnerComponent().getIdRunningApp();
|
|
49
48
|
_bKeyUser = this.getOwnerComponent().getIsOverviewForKeyUser();
|
|
50
49
|
_sLayer = this.getOwnerComponent().getLayer();
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (!oI18n) {
|
|
54
|
-
this._createResourceBundle();
|
|
55
|
-
}
|
|
50
|
+
const oUShellContainer = FlUtils.getUshellContainer();
|
|
56
51
|
|
|
57
52
|
BusyIndicator.show();
|
|
58
|
-
return
|
|
53
|
+
return this._createResourceBundle()
|
|
59
54
|
.then(function() {
|
|
60
55
|
if (oUShellContainer) {
|
|
61
56
|
return oUShellContainer.getServiceAsync("Navigation")
|
|
@@ -65,7 +60,9 @@ sap.ui.define([
|
|
|
65
60
|
}
|
|
66
61
|
return undefined;
|
|
67
62
|
})
|
|
68
|
-
.then(
|
|
63
|
+
.then(() => (
|
|
64
|
+
AppVariantOverviewUtils.getAppVariantOverview(_sIdRunningApp, _bKeyUser, this._oI18n)
|
|
65
|
+
))
|
|
69
66
|
.then(function(aAppVariantOverviewAttributes) {
|
|
70
67
|
BusyIndicator.hide();
|
|
71
68
|
if (aAppVariantOverviewAttributes.length) {
|
|
@@ -79,17 +76,18 @@ sap.ui.define([
|
|
|
79
76
|
}.bind(this))
|
|
80
77
|
.catch(function(oError) {
|
|
81
78
|
AppVariantUtils.closeOverviewDialog();
|
|
82
|
-
|
|
79
|
+
const oErrorInfo = AppVariantUtils.buildErrorInfo("MSG_MANAGE_APPS_FAILED", oError);
|
|
83
80
|
oErrorInfo.overviewDialog = true;
|
|
84
81
|
BusyIndicator.hide();
|
|
85
82
|
return AppVariantUtils.showRelevantDialog(oErrorInfo, false);
|
|
86
83
|
});
|
|
87
84
|
},
|
|
88
85
|
|
|
89
|
-
_createResourceBundle() {
|
|
90
|
-
sModulePath = `${sap.ui.require.toUrl("sap/ui/rta/appVariant/manageApps/")}webapp`;
|
|
91
|
-
|
|
92
|
-
url:
|
|
86
|
+
async _createResourceBundle() {
|
|
87
|
+
sModulePath = `${sap.ui.require.toUrl("sap/ui/rta/appVariant/manageApps/")}webapp/i18n/i18n.properties`;
|
|
88
|
+
this._oI18n = await ResourceBundle.create({
|
|
89
|
+
url: sModulePath,
|
|
90
|
+
async: true
|
|
93
91
|
});
|
|
94
92
|
},
|
|
95
93
|
|
|
@@ -100,15 +98,16 @@ sap.ui.define([
|
|
|
100
98
|
},
|
|
101
99
|
|
|
102
100
|
_highlightNewCreatedAppVariant(aAppVariantOverviewAttributes) {
|
|
103
|
-
|
|
101
|
+
const oTable = this.byId("Table1");
|
|
104
102
|
if (!oTable) {
|
|
105
103
|
return Promise.resolve();
|
|
106
104
|
}
|
|
107
105
|
oTable.focus();
|
|
108
106
|
|
|
109
|
-
aAppVariantOverviewAttributes.forEach(
|
|
110
|
-
if (
|
|
111
|
-
|
|
107
|
+
aAppVariantOverviewAttributes.forEach((oAppVariantManifest, index) => {
|
|
108
|
+
if (
|
|
109
|
+
oAppVariantManifest.currentStatus === this._oI18n.getText("MAA_NEW_APP_VARIANT")
|
|
110
|
+
|| oAppVariantManifest.currentStatus === this._oI18n.getText("MAA_OPERATION_IN_PROGRESS")
|
|
112
111
|
) {
|
|
113
112
|
if (oTable.getItems().length >= index) {
|
|
114
113
|
oTable.getItems()[index].focus();
|
|
@@ -120,13 +119,13 @@ sap.ui.define([
|
|
|
120
119
|
},
|
|
121
120
|
|
|
122
121
|
_arrangeOverviewDataAndBindToModel(aAppVariantOverviewAttributes) {
|
|
123
|
-
|
|
122
|
+
const aAdaptingAppAttributes = aAppVariantOverviewAttributes.filter(function(oAppVariantProperty) {
|
|
124
123
|
return oAppVariantProperty.appId === _sIdRunningApp;
|
|
125
124
|
});
|
|
126
125
|
|
|
127
|
-
|
|
126
|
+
const oAdaptingAppAttributes = aAdaptingAppAttributes[0];
|
|
128
127
|
if (oAdaptingAppAttributes && oAdaptingAppAttributes.appVarStatus !== "R") {
|
|
129
|
-
oAdaptingAppAttributes.currentStatus =
|
|
128
|
+
oAdaptingAppAttributes.currentStatus = this._oI18n.getText("MAA_CURRENTLY_ADAPTING");
|
|
130
129
|
}
|
|
131
130
|
|
|
132
131
|
aAppVariantOverviewAttributes = aAppVariantOverviewAttributes.filter(function(oAppVariantProperty) {
|
|
@@ -135,11 +134,11 @@ sap.ui.define([
|
|
|
135
134
|
|
|
136
135
|
aAppVariantOverviewAttributes.unshift(oAdaptingAppAttributes);
|
|
137
136
|
|
|
138
|
-
|
|
137
|
+
const aReferenceAppAttributes = aAppVariantOverviewAttributes.filter(function(oAppVariantProperty) {
|
|
139
138
|
return oAppVariantProperty.isOriginal;
|
|
140
139
|
});
|
|
141
140
|
|
|
142
|
-
|
|
141
|
+
const oReferenceAppAttributes = aReferenceAppAttributes[0];
|
|
143
142
|
|
|
144
143
|
aAppVariantOverviewAttributes = aAppVariantOverviewAttributes.filter(function(oAppVariantProperty) {
|
|
145
144
|
return !oAppVariantProperty.isOriginal;
|
|
@@ -149,11 +148,11 @@ sap.ui.define([
|
|
|
149
148
|
|
|
150
149
|
// Bind the app variant overview to JSON model
|
|
151
150
|
|
|
152
|
-
|
|
151
|
+
const oModelData = {
|
|
153
152
|
appVariants: aAppVariantOverviewAttributes
|
|
154
153
|
};
|
|
155
154
|
|
|
156
|
-
|
|
155
|
+
const oModel = Model.createModel(oModelData);
|
|
157
156
|
this.getView().setModel(oModel);
|
|
158
157
|
|
|
159
158
|
return Promise.resolve(aAppVariantOverviewAttributes);
|
|
@@ -161,11 +160,11 @@ sap.ui.define([
|
|
|
161
160
|
|
|
162
161
|
formatRowHighlight(sValue) {
|
|
163
162
|
// Your logic for rowHighlight goes here
|
|
164
|
-
if (sValue ===
|
|
163
|
+
if (sValue === this._oI18n.getText("MAA_CURRENTLY_ADAPTING")) {
|
|
165
164
|
return "Success";
|
|
166
|
-
} else if (sValue ===
|
|
165
|
+
} else if (sValue === this._oI18n.getText("MAA_NEW_APP_VARIANT")) {
|
|
167
166
|
return "Information";
|
|
168
|
-
} else if (sValue ===
|
|
167
|
+
} else if (sValue === this._oI18n.getText("MAA_OPERATION_IN_PROGRESS")) {
|
|
169
168
|
return "Warning";
|
|
170
169
|
}
|
|
171
170
|
|
|
@@ -173,33 +172,27 @@ sap.ui.define([
|
|
|
173
172
|
},
|
|
174
173
|
|
|
175
174
|
formatDelButtonTooltip(bDelAppVarButtonEnabled, bIsS4HanaCloud) {
|
|
176
|
-
if (!oI18n) {
|
|
177
|
-
this._createResourceBundle();
|
|
178
|
-
}
|
|
179
175
|
if (!bDelAppVarButtonEnabled && !bIsS4HanaCloud) {
|
|
180
|
-
return
|
|
176
|
+
return this._oI18n.getText("TOOLTIP_DELETE_APP_VAR");
|
|
181
177
|
}
|
|
182
178
|
return undefined;
|
|
183
179
|
},
|
|
184
180
|
|
|
185
181
|
formatAdaptUIButtonTooltip(bAdaptUIButtonEnabled, sAppVarStatus) {
|
|
186
|
-
if (!oI18n) {
|
|
187
|
-
this._createResourceBundle();
|
|
188
|
-
}
|
|
189
182
|
if (!bAdaptUIButtonEnabled) {
|
|
190
183
|
switch (sAppVarStatus) {
|
|
191
184
|
case "R":
|
|
192
185
|
// For S4/Hana Cloud systems
|
|
193
|
-
return
|
|
186
|
+
return this._oI18n.getText("TOOLTIP_ADAPTUI_STATUS_RUNNING");
|
|
194
187
|
case "U":
|
|
195
|
-
return
|
|
188
|
+
return this._oI18n.getText("TOOLTIP_ADAPTUI_STATUS_UNPBLSHD_ERROR");
|
|
196
189
|
case "E":
|
|
197
|
-
return
|
|
190
|
+
return this._oI18n.getText("TOOLTIP_ADAPTUI_STATUS_UNPBLSHD_ERROR");
|
|
198
191
|
case "P":
|
|
199
|
-
return
|
|
192
|
+
return this._oI18n.getText("TOOLTIP_ADAPTUI_STATUS_PUBLISHED");
|
|
200
193
|
case undefined:
|
|
201
194
|
// For S4/Hana onPrem systems
|
|
202
|
-
return
|
|
195
|
+
return this._oI18n.getText("TOOLTIP_ADAPTUI_ON_PREMISE");
|
|
203
196
|
default:
|
|
204
197
|
// Do nothing
|
|
205
198
|
}
|
|
@@ -216,8 +209,8 @@ sap.ui.define([
|
|
|
216
209
|
},
|
|
217
210
|
|
|
218
211
|
onMenuAction(oEvent) {
|
|
219
|
-
|
|
220
|
-
|
|
212
|
+
let oItem = oEvent.getParameter("item");
|
|
213
|
+
let sItemPath = "";
|
|
221
214
|
|
|
222
215
|
while (oItem instanceof MenuItem) {
|
|
223
216
|
sItemPath = `${oItem.getText()} > ${sItemPath}`;
|
|
@@ -226,15 +219,11 @@ sap.ui.define([
|
|
|
226
219
|
|
|
227
220
|
sItemPath = sItemPath.substr(0, sItemPath.lastIndexOf(" > "));
|
|
228
221
|
|
|
229
|
-
if (
|
|
230
|
-
this._createResourceBundle();
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
if (sItemPath === oI18n.getText("MAA_DIALOG_ADAPT_UI")) {
|
|
222
|
+
if (sItemPath === this._oI18n.getText("MAA_DIALOG_ADAPT_UI")) {
|
|
234
223
|
return this.handleUiAdaptation(oEvent);
|
|
235
|
-
} else if (sItemPath ===
|
|
224
|
+
} else if (sItemPath === this._oI18n.getText("MAA_DIALOG_COPY_ID")) {
|
|
236
225
|
return this.copyId(oEvent);
|
|
237
|
-
} else if (sItemPath ===
|
|
226
|
+
} else if (sItemPath === this._oI18n.getText("MAA_DIALOG_DELETE_APPVAR")) {
|
|
238
227
|
return this.deleteAppVariant(oEvent);
|
|
239
228
|
}
|
|
240
229
|
|
|
@@ -242,11 +231,11 @@ sap.ui.define([
|
|
|
242
231
|
},
|
|
243
232
|
|
|
244
233
|
handleUiAdaptation(oEvent) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
234
|
+
const sSemanticObject = this.getModelProperty("semanticObject", oEvent.getSource().getBindingContext());
|
|
235
|
+
const sAction = this.getModelProperty("action", oEvent.getSource().getBindingContext());
|
|
236
|
+
const oParams = this.getModelProperty("params", oEvent.getSource().getBindingContext());
|
|
248
237
|
|
|
249
|
-
|
|
238
|
+
let oNavigationParams;
|
|
250
239
|
if (sSemanticObject && sAction && oParams) {
|
|
251
240
|
oNavigationParams = {
|
|
252
241
|
target: {
|
|
@@ -271,23 +260,20 @@ sap.ui.define([
|
|
|
271
260
|
},
|
|
272
261
|
|
|
273
262
|
copyId(oEvent) {
|
|
274
|
-
|
|
263
|
+
const sCopiedId = this.getModelProperty("appId", oEvent.getSource().getBindingContext());
|
|
275
264
|
AppVariantUtils.copyId(sCopiedId);
|
|
276
|
-
MessageToast.show(
|
|
265
|
+
MessageToast.show(this._oI18n.getText("MAA_COPY_ID_SUCCESS"));
|
|
277
266
|
},
|
|
278
267
|
|
|
279
268
|
deleteAppVariant(oEvent) {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
this._createResourceBundle();
|
|
283
|
-
}
|
|
284
|
-
var sMessage = oI18n.getText("MSG_APP_VARIANT_DELETE_CONFIRMATION");
|
|
269
|
+
const oInfo = {};
|
|
270
|
+
const sMessage = this._oI18n.getText("MSG_APP_VARIANT_DELETE_CONFIRMATION");
|
|
285
271
|
oInfo.text = sMessage;
|
|
286
272
|
oInfo.deleteAppVariant = true;
|
|
287
273
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
274
|
+
const sAppVarId = this.getModelProperty("appId", oEvent.getSource().getBindingContext());
|
|
275
|
+
const sCurrentStatus = this.getModelProperty("currentStatus", oEvent.getSource().getBindingContext());
|
|
276
|
+
const bCurrentlyAdapting = sCurrentStatus === this._oI18n.getText("MAA_CURRENTLY_ADAPTING");
|
|
291
277
|
|
|
292
278
|
return AppVariantUtils.showRelevantDialog(oInfo)
|
|
293
279
|
.then(function() {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
MAA_DIALOG_ICON=Ic\u00F4ne
|
|
3
3
|
MAA_DIALOG_DESCRIPTION=Description
|
|
4
|
-
MAA_DIALOG_COPY_ID_ACTION=Copier l'
|
|
4
|
+
MAA_DIALOG_COPY_ID_ACTION=Action Copier l'ID
|
|
5
5
|
MAA_DIALOG_ADAPT_UI_ACTION=Adapter l'action d'IU
|
|
6
|
-
MAA_DIALOG_SAVE_AS_ACTION=Enregistrer
|
|
6
|
+
MAA_DIALOG_SAVE_AS_ACTION=Action Enregistrer sous
|
|
7
7
|
MAA_DIALOG_ACTIONS=Actions
|
|
8
8
|
MAA_DIALOG_DELETE_APPVAR=Supprimer la variante d'application
|
|
9
9
|
MAA_DIALOG_ADAPT_UI=Adapter l'IU
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright
|
|
3
|
+
* (c) Copyright 2025 SAP SE or an SAP affiliate company.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
sap.ui.define([
|
|
@@ -16,7 +16,7 @@ sap.ui.define([
|
|
|
16
16
|
* @class
|
|
17
17
|
* @extends sap.ui.rta.command.FlexCommand
|
|
18
18
|
* @author SAP SE
|
|
19
|
-
* @version 1.
|
|
19
|
+
* @version 1.136.0
|
|
20
20
|
* @constructor
|
|
21
21
|
* @private
|
|
22
22
|
* @since 1.75
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright
|
|
3
|
+
* (c) Copyright 2025 SAP SE or an SAP affiliate company.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
sap.ui.define([
|
|
@@ -14,7 +14,7 @@ sap.ui.define([
|
|
|
14
14
|
* @class
|
|
15
15
|
* @extends sap.ui.rta.command.FlexCommand
|
|
16
16
|
* @author SAP SE
|
|
17
|
-
* @version 1.
|
|
17
|
+
* @version 1.136.0
|
|
18
18
|
* @constructor
|
|
19
19
|
* @private
|
|
20
20
|
* @since 1.78
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright
|
|
3
|
+
* (c) Copyright 2025 SAP SE or an SAP affiliate company.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
sap.ui.define([
|
|
@@ -16,7 +16,7 @@ sap.ui.define([
|
|
|
16
16
|
* @class
|
|
17
17
|
* @extends sap.ui.rta.command.FlexCommand
|
|
18
18
|
* @author SAP SE
|
|
19
|
-
* @version 1.
|
|
19
|
+
* @version 1.136.0
|
|
20
20
|
* @constructor
|
|
21
21
|
* @private
|
|
22
22
|
* @since 1.54
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright
|
|
3
|
+
* (c) Copyright 2025 SAP SE or an SAP affiliate company.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
sap.ui.define([
|
|
@@ -24,7 +24,7 @@ sap.ui.define([
|
|
|
24
24
|
* @class
|
|
25
25
|
* @extends sap.ui.rta.command.FlexCommand
|
|
26
26
|
* @author SAP SE
|
|
27
|
-
* @version 1.
|
|
27
|
+
* @version 1.136.0
|
|
28
28
|
* @constructor
|
|
29
29
|
* @private
|
|
30
30
|
* @since 1.76
|