Since we are migrating from 2013sp1 hr1 to Web8.5, I am upgrading all GUI extensions. For new namespaces, I found a list here: SDLWeb 8.5 and SDL tridion 2013 JavaScript namespaces conflicts Do we have all namespaces covered in this list?
Also, while trying to use these namespaces and also modifying few deprecated methods to new ones, I am getting this javascript error.
Uncaught TypeError: e is not a constructor
at Object.Tridion.ControlRegistry.getControl (coreresource_v8.5.0.22656.28_.js?sav=1&cnt=core:64)
at Tridion.Cme.Views.Dashboard.initializeControls (Dashboard_v8.5.0.22656.28_.aspx?mode=js:1258)
at Tridion.Cme.Views.DashboardBase.initialize (Dashboard_v8.5.0.22656.28_.aspx?mode=js:1254)
at Tridion.Cme.Views.Dashboard.eval [as callBase] (coreresource_v8.5.0.22656.28_.js?sav=1&cnt=core:23)
at Tridion.Cme.Views.Dashboard.eval (Dashboard_v8.5.0.22656.28_.aspx?mode=js:1258)
at eval (coreresource_v8.5.0.22656.28_.js?sav=1&cnt=core:13)
at i (Dashboard_v8.5.0.22656.28_.aspx?mode=js:1258)
at Tridion.ContentManager.UserSettings.u (coreresource_v8.5.0.22656.28_.js?sav=1&cnt=models:37)
at Tridion.EventRegisterClass.executeListener (coreresource_v8.5.0.22656.28_.js?sav=1&cnt=core:30)
at Tridion.ContentManager.UserSettings.i (coreresource_v8.5.0.22656.28_.js?sav=1&cnt=core:30)
Do we have any way to make sure that all javascript files in GUI extension (Editor and commands) are valid - with respect to Web8.5.
Edit 1:
I am not sure the root cause of this error, but was able to resolve all issues related to GUI extension by following changes:
- this.addInterface('Tridion.Cme.View'); ==> this.addInterface('Tridion.Web.UI.Editors.Base.Views.ViewBase');
- $controls.controls["Tridion.Controls.MultiMediaLinkControl"]; ==> $controls.controls["Tridion.Web.UI.Editors.Base.Controls.MultiMediaLinkControl"];
- $popup.create($cme.Popups.OPEN_ITEM_OPTIONS.URL, $cme.Popups.OPEN_ITEM_OPTIONS.FEATURES, args); ==> $popup.create(Tridion.Web.UI.Editors.CME.Constants.Popups.OPEN_ITEM_OPTIONS.URL, Tridion.Web.UI.Editors.CME.Constants.Popups.OPEN_ITEM_OPTIONS.FEATURES, args);
- Resources: Tridion.Web.UI.Strings, SelectItem ==> Resources: Tridion.Web.UI.Editors.CME.Strings, SelectItem
- this.addInterface("Tridion.Cme.Command", ["NewCommand"]); ==> this.addInterface("Tridion.Web.UI.Editors.Base.Commands.CommandBase", ["NewCommand"]);
- Tridion.Controls.Popup.create() ==> $popupManager.createExternalContentPopup()
- Tridion.Controls.Popup.Type.MODAL_IFRAME ==> Tridion.Controls.PopupManager.Type.MODAL_IFRAME
- Tridion.Web.UI.Editors.CME.Views.Popups; ==> Tridion.Web.UI.Editors.Base.Views.Popups;
- Type.enableInterface(this, "XYZ"); ==> Tridion.OO.enableInterface(this, "XYZ");
- Tridion.Web.UI.Editors.CME ==> SDL.Web.UI.Editors.CME
- Tridion.Web.UI.Editors.CME.commands ==> SDL.Web.UI.Editors.CME.CommandSets.All
- merger="Tridion.Web.UI.Core.Configuration.Resources.CommandGroupProcessor" ==> merger="SDL.Web.UI.Core.Configuration.Resources.CommandGroupProcessor"
- merger="Tridion.Web.UI.Core.Configuration.Resources.DomainModelProcessor" ==> merger="SDL.Web.UI.Core.Configuration.Resources.DomainModelProcessor"
Putting it all here, so it would help others. Thanks.