From c42170cf6bdba0765e22372abcfe7fd5095f36e8 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 15 Oct 2013 16:18:55 +1100 Subject: [PATCH] Fixes: U4-3110 Cant create new relationstype - ensures that the legacy action js path references are included --- .../src/common/directives/umbcontextmenu.directive.js | 2 +- src/Umbraco.Web/Editors/BackOfficeController.cs | 11 +++++++---- src/Umbraco.Web/UI/JavaScript/CssInitialization.cs | 6 +++--- src/Umbraco.Web/UI/JavaScript/JsInitialization.cs | 8 +++++++- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbcontextmenu.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/umbcontextmenu.directive.js index 7a45879d70..56726c8b99 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/umbcontextmenu.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/umbcontextmenu.directive.js @@ -17,7 +17,7 @@ angular.module("umbraco.directives") if (menuAction.length !== 2) { //if it is not two parts long then this most likely means that it's a legacy action - var js = action.metaData["jsAction"]; + var js = action.metaData["jsAction"].replace("javascript:", ""); //there's not really a different way to acheive this except for eval eval(js); diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs index 98909ec558..26bf5e3c38 100644 --- a/src/Umbraco.Web/Editors/BackOfficeController.cs +++ b/src/Umbraco.Web/Editors/BackOfficeController.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Web.Mvc; +using Newtonsoft.Json.Linq; using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.Manifest; @@ -33,7 +34,7 @@ namespace Umbraco.Web.Editors } /// - /// Returns the RequireJS file including all references found in manifests + /// Returns the JavaScript main file including all references found in manifests /// /// public JavaScriptResult Application() @@ -43,8 +44,10 @@ namespace Umbraco.Web.Editors var initJs = new JsInitialization(parser); var initCss = new CssInitialization(parser); + //get the legacy ActionJs file references to append as well + var legacyActionJsRef = new JArray(GetLegacyActionJs(LegacyJsActionType.JsUrl)); - var result = initJs.GetJavascriptInitialization(JsInitialization.GetDefaultInitialization()); + var result = initJs.GetJavascriptInitialization(JsInitialization.GetDefaultInitialization(), legacyActionJsRef); result += initCss.GetStylesheetInitialization(); return JavaScript(result); @@ -207,9 +210,9 @@ namespace Umbraco.Web.Editors } /// - /// Renders out all JavaScript blocks that have bee declared in IActions + /// Renders out all JavaScript references that have bee declared in IActions /// - private IEnumerable GetLegacyActionJs(LegacyJsActionType type) + private static IEnumerable GetLegacyActionJs(LegacyJsActionType type) { var blockList = new List(); var urlList = new List(); diff --git a/src/Umbraco.Web/UI/JavaScript/CssInitialization.cs b/src/Umbraco.Web/UI/JavaScript/CssInitialization.cs index 0f197a076e..da3a747750 100644 --- a/src/Umbraco.Web/UI/JavaScript/CssInitialization.cs +++ b/src/Umbraco.Web/UI/JavaScript/CssInitialization.cs @@ -23,7 +23,7 @@ namespace Umbraco.Web.UI.JavaScript /// public string GetStylesheetInitialization() { - JArray merged = new JArray(); + var merged = new JArray(); foreach (var m in _parser.GetManifests()) { ManifestParser.MergeJArrays(merged, m.StylesheetInitialize); @@ -36,11 +36,11 @@ namespace Umbraco.Web.UI.JavaScript /// /// Parses the CssResources.Main and returns a yepnop.injectCss format /// - /// + /// /// internal static string ParseMain(JArray files) { - StringBuilder sb = new StringBuilder(); + var sb = new StringBuilder(); foreach (var file in files) sb.AppendFormat("{0}yepnope.injectCss('{1}');", Environment.NewLine, file); diff --git a/src/Umbraco.Web/UI/JavaScript/JsInitialization.cs b/src/Umbraco.Web/UI/JavaScript/JsInitialization.cs index bff5f1ce3e..14d0fc9311 100644 --- a/src/Umbraco.Web/UI/JavaScript/JsInitialization.cs +++ b/src/Umbraco.Web/UI/JavaScript/JsInitialization.cs @@ -34,13 +34,19 @@ namespace Umbraco.Web.UI.JavaScript /// /// Processes all found manifest files and outputs the main.js file containing all plugin manifests /// - public string GetJavascriptInitialization(JArray umbracoInit) + public string GetJavascriptInitialization(JArray umbracoInit, JArray additionalJsFiles = null) { foreach (var m in _parser.GetManifests()) { ManifestParser.MergeJArrays(umbracoInit, m.JavaScriptInitialize); } + //merge in the additional ones specified if there are any + if (additionalJsFiles != null) + { + ManifestParser.MergeJArrays(umbracoInit, additionalJsFiles); + } + return ParseMain( umbracoInit.ToString(), IOHelper.ResolveUrl(SystemDirectories.Umbraco));