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 06b5f9496c..43ba045230 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 @@ -2,13 +2,13 @@ * @ngdoc service * @name umbraco.resources.macroResource * @description Deals with data for macros - * + * **/ function macroResource($q, $http, umbRequestHelper) { //the factory object returned return { - + /** * @ngdoc method * @name umbraco.resources.macroResource#getMacroParameters @@ -20,7 +20,7 @@ function macroResource($q, $http, umbRequestHelper) { * @param {int} macroId The macro id to get parameters for * */ - getMacroParameters: function (macroId) { + getMacroParameters: function (macroId) { return umbRequestHelper.resourcePromise( $http.get( umbRequestHelper.getApiUrl( @@ -29,7 +29,7 @@ function macroResource($q, $http, umbRequestHelper) { [{ macroId: macroId }])), 'Failed to retrieve macro parameters for macro with id ' + macroId); }, - + /** * @ngdoc method * @name umbraco.resources.macroResource#getMacroResult @@ -55,6 +55,27 @@ function macroResource($q, $http, umbRequestHelper) { macroParams: macroParamDictionary }), 'Failed to retrieve macro result for macro with alias ' + macroAlias); + }, + + /** + * + * @param {} filename + * @returns {} + */ + createPartialViewMacroWithFile: function(parent, filename) { + + return umbRequestHelper.resourcePromise( + $http.post( + umbRequestHelper.getApiUrl( + "macroApiBaseUrl", + "CreatePartialViewMacroWithFile"), { + parent: parent, + filename: filename + } + ), + 'Failed to create macro "' + filename + '"' + ); + } }; } diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.controller.js b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.controller.js index 6132ba3f89..839e282f2c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.controller.js @@ -1,47 +1,42 @@ (function () { "use strict"; - function PartialViewMacrosCreateController($scope, codefileResource, $location, navigationService, formHelper, localizationService, appState) { + function PartialViewMacrosCreateController($scope, codefileResource, macroResource, $location, navigationService, formHelper, localizationService, appState) { var vm = this; var node = $scope.dialogOptions.currentNode; var localizeCreateFolder = localizationService.localize("defaultdialog_createFolder"); vm.snippets = []; - vm.showSnippets = false; - vm.creatingFolder = false; + vm.snippet = "Empty"; + vm.createMacro = false; vm.createFolderError = ""; vm.folderName = ""; + vm.fileName = ""; + + vm.creatingFolder = false; + vm.creatingFile = false; - vm.createPartialViewMacro = createPartialViewMacro; vm.showCreateFolder = showCreateFolder; + vm.showCreateFile = showCreateFile; vm.createFolder = createFolder; - vm.showCreateFromSnippet = showCreateFromSnippet; + vm.createFile = createFile; function onInit() { codefileResource.getSnippets('partialViewMacros') - .then(function(snippets) { + .then(function (snippets) { vm.snippets = snippets; }); } - function createPartialViewMacro(selectedSnippet) { - - var snippet = null; - - if(selectedSnippet && selectedSnippet.fileName) { - snippet = selectedSnippet.fileName; - } - - $location.path("/developer/partialviewmacros/edit/" + node.id).search("create", "true").search("snippet", snippet); - navigationService.hideMenu(); - - } - function showCreateFolder() { vm.creatingFolder = true; } + function showCreateFile() { + vm.creatingFile = true; + } + function createFolder(form) { if (formHelper.submitForm({scope: $scope, formCtrl: form, statusMessage: localizeCreateFolder})) { @@ -75,11 +70,32 @@ }); } } - - function showCreateFromSnippet() { - vm.showSnippets = true; + + function createFile(form) { + if (formHelper.submitForm({ scope: $scope, formCtrl: form, statusMessage: 'create file' })) { + + if (vm.createMacro) { + var path = decodeURIComponent(node.id); + macroResource.createPartialViewMacroWithFile(path, vm.fileName).then(function(created) { + $location.path("/developer/partialviewmacros/edit/" + node.id).search("create", "true").search("name", vm.fileName).search("snippet", vm.snippet); + navigationService.hideMenu(); + }, function(err) { + vm.createFileError = err; + + //show any notifications + if (angular.isArray(err.data.notifications)) { + for (var i = 0; i < err.data.notifications.length; i++) { + notificationsService.showNotification(err.data.notifications[i]); + } + } + }); + } else { + $location.path("/developer/partialviewmacros/edit/" + node.id).search("create", "true").search("name", vm.fileName).search("snippet", vm.snippet); + navigationService.hideMenu(); + } + } } - + onInit(); } diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.html b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.html index 0c5a74c4b0..e1223dab25 100644 --- a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.html +++ b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.html @@ -2,46 +2,61 @@