diff --git a/src/Umbraco.Web.UI.Client/src/common/services/templatehelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/templatehelper.service.js index aefbc5625b..5643ea8e48 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/templatehelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/templatehelper.service.js @@ -8,8 +8,15 @@ return "@Umbraco.GetDictionaryValue(\"" + nodeName + "\")"; } - function getInsertPartialSnippet(nodeName) { - return "@Html.Partial(\"" + nodeName + "\")"; + function getInsertPartialSnippet(parentId, nodeName) { + + var partialViewName = nodeName.replace(".cshtml", ""); + + if(parentId) { + partialViewName = parentId + "/" + partialViewName; + } + + return "@Html.Partial(\"" + partialViewName + "\")"; } function getQuerySnippet(queryExpression) { diff --git a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js index 9edb659d09..c0fa9a8d7e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js @@ -308,7 +308,7 @@ break; case "partial": - var code = templateHelper.getInsertPartialSnippet(model.insert.node.name); + var code = templateHelper.getInsertPartialSnippet(model.insert.node.parentId, model.insert.node.name); insert(code); break; @@ -419,8 +419,8 @@ show: true, title: localizationService.localize("template_insertPartialView"), select: function(node){ - - var code = templateHelper.getInsertPartialSnippet(node.name); + + var code = templateHelper.getInsertPartialSnippet(node.parentId, node.name); insert(code); vm.partialItemOverlay.show = false; diff --git a/src/Umbraco.Web.UI.Client/test/unit/common/services/template-helper.spec.js b/src/Umbraco.Web.UI.Client/test/unit/common/services/template-helper.spec.js index e1ba0670ed..0ccc9ab1dc 100644 --- a/src/Umbraco.Web.UI.Client/test/unit/common/services/template-helper.spec.js +++ b/src/Umbraco.Web.UI.Client/test/unit/common/services/template-helper.spec.js @@ -23,9 +23,32 @@ describe('service: templateHelper', function () { describe('getInsertPartialSnippet', function () { - it('should return the snippet for inserting a partial', function () { - var snippet = '@Html.Partial("nodeName")'; - expect(templateHelper.getInsertPartialSnippet("nodeName")).toBe(snippet); + it('should return the snippet for inserting a partial from the root', function () { + var parentId = ""; + var nodeName = "Footer.cshtml"; + var snippet = '@Html.Partial("Footer")'; + expect(templateHelper.getInsertPartialSnippet(parentId, nodeName)).toBe(snippet); + }); + + it('should return the snippet for inserting a partial from a folder', function () { + var parentId = "Folder"; + var nodeName = "Footer.cshtml"; + var snippet = '@Html.Partial("Folder/Footer")'; + expect(templateHelper.getInsertPartialSnippet(parentId, nodeName)).toBe(snippet); + }); + + it('should return the snippet for inserting a partial from a nested folder', function () { + var parentId = "Folder/NestedFolder"; + var nodeName = "Footer.cshtml"; + var snippet = '@Html.Partial("Folder/NestedFolder/Footer")'; + expect(templateHelper.getInsertPartialSnippet(parentId, nodeName)).toBe(snippet); + }); + + it('should return the snippet for inserting a partial from a folder with spaces in its name', function () { + var parentId = "Folder with spaces"; + var nodeName = "Footer.cshtml"; + var snippet = '@Html.Partial("Folder with spaces/Footer")'; + expect(templateHelper.getInsertPartialSnippet(parentId, nodeName)).toBe(snippet); }); });