From 46bdae7492aa9a6fce41141e12b1e79a8f413352 Mon Sep 17 00:00:00 2001 From: Claus Date: Mon, 21 Dec 2015 10:45:14 +0100 Subject: [PATCH] Fixing failing macro tests. --- src/Umbraco.Core/Models/MacroTypes.cs | 2 ++ src/Umbraco.Tests/Macros/MacroTests.cs | 6 +++--- src/Umbraco.Web/umbraco.presentation/macro.cs | 4 +++- src/umbraco.cms/businesslogic/macro/Macro.cs | 13 ++++++++----- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Core/Models/MacroTypes.cs b/src/Umbraco.Core/Models/MacroTypes.cs index 54b60154c5..9625396f0c 100644 --- a/src/Umbraco.Core/Models/MacroTypes.cs +++ b/src/Umbraco.Core/Models/MacroTypes.cs @@ -17,6 +17,8 @@ namespace Umbraco.Core.Models [EnumMember] Unknown = 4, [EnumMember] + Script = 6, + [EnumMember] PartialView = 7 } } \ No newline at end of file diff --git a/src/Umbraco.Tests/Macros/MacroTests.cs b/src/Umbraco.Tests/Macros/MacroTests.cs index 9ab51b107b..45467ceac4 100644 --- a/src/Umbraco.Tests/Macros/MacroTests.cs +++ b/src/Umbraco.Tests/Macros/MacroTests.cs @@ -64,7 +64,7 @@ namespace Umbraco.Tests.Macros public void SetUserControlProperty(string val, string macroPropName, Type convertTo) { var ctrl = new UserControlTest(); - var macroModel = new MacroModel("test", "test", "", "~/usercontrols/menu.ascx", "", 0, false, false); + var macroModel = new MacroModel("test", "test", "", "", "~/usercontrols/menu.ascx", 0, false, false); macroModel.Properties.Add(new MacroPropertyModel(macroPropName, val)); macro.UpdateControlProperties(ctrl, macroModel); @@ -97,7 +97,7 @@ namespace Umbraco.Tests.Macros [TestCase("", "", "~/usercontrols/menu.ascx", "~/usercontrols/menu.ascx")] public void Get_Macro_File(string xslt, string scriptFile, string scriptType, string expectedResult) { - var model = new MacroModel("Test", "test", "", scriptType, xslt, 0, false, false); + var model = new MacroModel("Test", "test", scriptType, xslt, scriptFile, 0, false, false); var file = macro.GetMacroFile(model); Assert.AreEqual(expectedResult, file); } @@ -142,7 +142,7 @@ namespace Umbraco.Tests.Macros File.CreateText(path).Close(); //needs to be file based (i.e. xslt) - var model = new MacroModel("Test", "test", "", "", "test.xslt", 0, false, false); + var model = new MacroModel("Test", "test", "", "test.xslt", "", 0, false, false); Assert.AreEqual(expectedResult, macro.MacroNeedsToBeClearedFromCache(model, "TestDate", new FileInfo(path))); } diff --git a/src/Umbraco.Web/umbraco.presentation/macro.cs b/src/Umbraco.Web/umbraco.presentation/macro.cs index 753f04d459..0b92792459 100644 --- a/src/Umbraco.Web/umbraco.presentation/macro.cs +++ b/src/Umbraco.Web/umbraco.presentation/macro.cs @@ -637,7 +637,9 @@ namespace umbraco switch (model.MacroType) { case MacroTypes.Xslt: - return string.Concat("~/xslt/", model.Xslt); + return string.Concat("~/xslt/", model.Xslt); + case MacroTypes.Script: + return string.Concat("~/macroScripts/", model.ScriptName); case MacroTypes.PartialView: return model.ScriptName; //partial views are saved with the full virtual path case MacroTypes.UserControl: diff --git a/src/umbraco.cms/businesslogic/macro/Macro.cs b/src/umbraco.cms/businesslogic/macro/Macro.cs index a716c134a1..078ff3a4c3 100644 --- a/src/umbraco.cms/businesslogic/macro/Macro.cs +++ b/src/umbraco.cms/businesslogic/macro/Macro.cs @@ -435,11 +435,14 @@ namespace umbraco.cms.businesslogic.macro if (string.IsNullOrEmpty(scriptFile) == false) { - //we need to check if the file path saved is a virtual path starting with ~/Views/MacroPartials, if so then this is - //a partial view macro, not a script macro - //we also check if the file exists in ~/App_Plugins/[Packagename]/Views/MacroPartials, if so then it is also a partial view. - return MacroTypes.PartialView; - } + //we need to check if the file path saved is a virtual path starting with ~/Views/MacroPartials, if so then this is + //a partial view macro, not a script macro + //we also check if the file exists in ~/App_Plugins/[Packagename]/Views/MacroPartials, if so then it is also a partial view. + return (scriptFile.InvariantStartsWith(SystemDirectories.MvcViews + "/MacroPartials/") + || (Regex.IsMatch(scriptFile, "~/App_Plugins/.+?/Views/MacroPartials", RegexOptions.Compiled | RegexOptions.IgnoreCase))) + ? MacroTypes.PartialView + : MacroTypes.Script; + } if (string.IsNullOrEmpty(scriptType) == false && scriptType.InvariantContains(".ascx")) return MacroTypes.UserControl;