From 31dc1b2cdbcf52ea92b9635b56b35b8447df9d80 Mon Sep 17 00:00:00 2001 From: engern Date: Sat, 21 Nov 2015 13:20:13 +0100 Subject: [PATCH] Fixes U46340 --- .../src/common/resources/macro.resource.js | 21 ++++++------------- src/Umbraco.Web/Editors/MacroController.cs | 4 +++- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/macro.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/macro.resource.js index 9ba64838c9..af0d5292c6 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/macro.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/macro.resource.js @@ -36,7 +36,7 @@ function macroResource($q, $http, umbRequestHelper) { * @methodOf umbraco.resources.macroResource * * @description - * Gets the result of a macro as html to display in the rich text editor + * Gets the result of a macro as html to display in the rich text editor or in the Grid * * @param {int} macroId The macro id to get parameters for * @param {int} pageId The current page id @@ -47,37 +47,28 @@ function macroResource($q, $http, umbRequestHelper) { //need to format the query string for the custom dictionary var query = "macroAlias=" + macroAlias + "&pageId=" + pageId; + var macroParams = {}; if (macroParamDictionary) { - var counter = 0; _.each(macroParamDictionary, function (val, key) { //check for null val = val ? val : ""; //need to detect if the val is a string or an object if (!angular.isString(val)) { //if it's not a string we'll send it through the json serializer - var json = angular.toJson(val); - //then we need to url encode it so that it's safe - val = encodeURIComponent(json); + val = angular.toJson(val); } - else { - //we still need to encode the string, it could contain line breaks, etc... - val = encodeURIComponent(val); - } - - query += "¯oParams[" + counter + "].key=" + key + "¯oParams[" + counter + "].value=" + val; - counter++; + macroParams[key] = val; }); } return umbRequestHelper.resourcePromise( - $http.get( + $http.post( umbRequestHelper.getApiUrl( "macroApiBaseUrl", "GetMacroResultAsHtmlForEditor", - query)), + query), JSON.stringify(macroParams)), 'Failed to retrieve macro result for macro with alias ' + macroAlias); } - }; } diff --git a/src/Umbraco.Web/Editors/MacroController.cs b/src/Umbraco.Web/Editors/MacroController.cs index 11fef4a25d..e14971db36 100644 --- a/src/Umbraco.Web/Editors/MacroController.cs +++ b/src/Umbraco.Web/Editors/MacroController.cs @@ -49,7 +49,9 @@ namespace Umbraco.Web.Editors /// /// /// - public HttpResponseMessage GetMacroResultAsHtmlForEditor(string macroAlias, int pageId, [FromUri]IDictionary macroParams) + [HttpPost] + [HttpGet] + public HttpResponseMessage GetMacroResultAsHtmlForEditor(string macroAlias, int pageId, [FromBody]IDictionary macroParams) { // note - here we should be using the cache, provided that the preview content is in the cache...