Merge remote-tracking branch 'origin/netcore/dev' into netcore/dev

This commit is contained in:
Bjarke Berg
2021-04-20 19:37:24 +02:00
17 changed files with 82 additions and 117 deletions

View File

@@ -2,17 +2,17 @@
* @ngdoc service
* @name umbraco.services.macroService
*
*
*
* @description
* A service to return macro information such as generating syntax to insert a macro into an editor
*/
function macroService() {
return {
/** parses the special macro syntax like <?UMBRACO_MACRO macroAlias="Map" /> and returns an object with the macro alias and it's parameters */
parseMacroSyntax: function (syntax) {
//This regex will match an alias of anything except characters that are quotes or new lines (for legacy reasons, when new macros are created
// their aliases are cleaned an invalid chars are stripped)
var expression = /(<\?UMBRACO_MACRO (?:.+?)?macroAlias=["']([^\"\'\n\r]+?)["'][\s\S]+?)(\/>|>.*?<\/\?UMBRACO_MACRO>)/i;
@@ -24,9 +24,9 @@ function macroService() {
//this will leave us with just the parameters
var paramsChunk = match[1].trim().replace(new RegExp("UMBRACO_MACRO macroAlias=[\"']" + alias + "[\"']"), "").trim();
var paramExpression = /(\w+?)=['\"]([\s\S]*?)['\"]/g;
var paramMatch;
var returnVal = {
macroAlias: alias,
@@ -42,11 +42,11 @@ function macroService() {
* @ngdoc function
* @name umbraco.services.macroService#generateMacroSyntax
* @methodOf umbraco.services.macroService
* @function
* @function
*
* @description
* generates the syntax for inserting a macro into a rich text editor - this is the very old umbraco style syntax
*
*
* @param {object} args an object containing the macro alias and it's parameter values
*/
generateMacroSyntax: function (args) {
@@ -72,7 +72,7 @@ function macroService() {
var encoded = encodeURIComponent(json);
keyVal = key + "=\"" + encoded + "\" ";
}
macroString += keyVal;
});
@@ -82,38 +82,38 @@ function macroService() {
return macroString;
},
/**
* @ngdoc function
* @name umbraco.services.macroService#generateMvcSyntax
* @methodOf umbraco.services.macroService
* @function
* @function
*
* @description
* generates the syntax for inserting a macro into an mvc template
*
*
* @param {object} args an object containing the macro alias and it's parameter values
*/
generateMvcSyntax: function (args) {
var macroString = "@Umbraco.RenderMacro(\"" + args.macroAlias + "\"";
var macroString = "@await Umbraco.RenderMacroAsync(\"" + args.macroAlias + "\"";
var hasParams = false;
var paramString;
if (args.macroParamsDictionary) {
paramString = ", new {";
_.each(args.macroParamsDictionary, function(val, key) {
hasParams = true;
var keyVal = key + "=\"" + (val ? val : "") + "\", ";
paramString += keyVal;
});
//remove the last ,
//remove the last ,
paramString = paramString.trimEnd(", ");
paramString += "}";

View File

@@ -62,7 +62,7 @@ describe('macro service tests', function () {
expect(result.macroParamsDictionary.test2).not.toBeUndefined();
expect(result.macroParamsDictionary.test2).toBe("hello");
});
it('can parse syntax for macros with body', function () {
var result = macroService.parseMacroSyntax("<?UMBRACO_MACRO macroAlias='Map' test1=\"asdf\" test2='hello' ><img src='blah.jpg'/></?UMBRACO_MACRO>");
@@ -108,7 +108,7 @@ describe('macro service tests', function () {
toBe("<?UMBRACO_MACRO macroAlias=\"myMacro\" />");
});
it('can generate syntax for MVC', function () {
var syntax = macroService.generateMvcSyntax({
@@ -121,11 +121,11 @@ describe('macro service tests', function () {
});
expect(syntax).
toBe("@Umbraco.RenderMacro(\"myMacro\", new {param1=\"value1\", param2=\"value2\", param3=\"value3\"})");
toBe("@await Umbraco.RenderMacroAsync(\"myMacro\", new {param1=\"value1\", param2=\"value2\", param3=\"value3\"})");
});
it('can generate syntax for MVC with no params', function () {
var syntax = macroService.generateMvcSyntax({
@@ -134,7 +134,7 @@ describe('macro service tests', function () {
});
expect(syntax).
toBe("@Umbraco.RenderMacro(\"myMacro\")");
toBe("@await Umbraco.RenderMacroAsync(\"myMacro\")");
});