diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/codefile.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/codefile.resource.js index e83bb4f14e..b6a56d336b 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/codefile.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/codefile.resource.js @@ -205,6 +205,38 @@ function codefileResource($q, $http, umbDataFormatter, umbRequestHelper) { "codeFileApiBaseUrl", "GetScaffold?type=" + type + "&id=" + id + "&snippetName=" + snippetName)), "Failed to get scaffold for" + type); + }, + + /** + * @ngdoc method + * @name umbraco.resources.codefileResource#createContainer + * @methodOf umbraco.resources.codefileResource + * + * @description + * Creates a container/folder + * + * ##usage + *
+ * codefileResource.createContainer("partialViews", "folder%2ffolder", "folder")
+ * .then(function(data) {
+ * alert('its here!');
+ * });
+ *
+ *
+ * @param {string} File type: (scripts, partialViews, partialViewMacros).
+ * @param {string} Parent Id: url encoded path
+ * @param {string} Container name
+ * @returns {Promise} resourcePromise object.
+ *
+ */
+
+ createContainer: function(type, parentId, name) {
+ return umbRequestHelper.resourcePromise(
+ $http.post(umbRequestHelper.getApiUrl(
+ "codeFileApiBaseUrl",
+ "PostCreateContainer",
+ { type: type, parentId: parentId, name: name })),
+ 'Failed to create a folder under parent id ' + parentId);
}
};
diff --git a/src/Umbraco.Web.UI.Client/src/views/scripts/create.controller.js b/src/Umbraco.Web.UI.Client/src/views/scripts/create.controller.js
index 1729693d83..89ff9e6643 100644
--- a/src/Umbraco.Web.UI.Client/src/views/scripts/create.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/scripts/create.controller.js
@@ -1,13 +1,15 @@
(function () {
"use strict";
- function ScriptsCreateController($scope, $location, navigationService) {
+ function ScriptsCreateController($scope, $location, navigationService, formHelper, codefileResource, localizationService) {
var vm = this;
var node = $scope.dialogOptions.currentNode;
+ var localizeCreateFolder = localizationService.localize("defaultdialog_createFolder");
vm.creatingFolder = false;
vm.folderName = "";
+ vm.createFolderError = "";
vm.fileExtension = "";
vm.createFile = createFile;
@@ -23,8 +25,40 @@
vm.creatingFolder = true;
}
- function createFolder() {
-
+ function createFolder(form) {
+
+ if (formHelper.submitForm({scope: $scope, formCtrl: form, statusMessage: localizeCreateFolder})) {
+
+ codefileResource.createContainer("scripts", node.id, vm.folderName).then(function(path) {
+
+ navigationService.hideMenu();
+
+ navigationService.syncTree({
+ tree: "scripts",
+ path: path,
+ forceReload: true,
+ activate: true
+ });
+
+ formHelper.resetForm({
+ scope: $scope
+ });
+
+ var section = appState.getSectionState("currentSection");
+
+ }, function(err) {
+
+ vm.createFolderError = 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]);
+ }
+ }
+ });
+ }
+
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/views/scripts/create.html b/src/Umbraco.Web.UI.Client/src/views/scripts/create.html
index d57ead3b15..22b238606d 100644
--- a/src/Umbraco.Web.UI.Client/src/views/scripts/create.html
+++ b/src/Umbraco.Web.UI.Client/src/views/scripts/create.html
@@ -22,12 +22,12 @@