From 431f91b90032dec0ca2ec5f36f1851e2e8b6febb Mon Sep 17 00:00:00 2001 From: Emil Wangaa Date: Mon, 30 Jan 2017 14:57:08 +0100 Subject: [PATCH 01/15] Adds an api endpoint for getting the available snippets in the Umbraco folder --- src/Umbraco.Web/Editors/CodeFileController.cs | 36 +++++++++++++++++++ .../Models/ContentEditing/SnippetDisplay.cs | 14 ++++++++ src/Umbraco.Web/Umbraco.Web.csproj | 1 + 3 files changed, 51 insertions(+) create mode 100644 src/Umbraco.Web/Models/ContentEditing/SnippetDisplay.cs diff --git a/src/Umbraco.Web/Editors/CodeFileController.cs b/src/Umbraco.Web/Editors/CodeFileController.cs index 60dcf624a0..4f1be8563a 100644 --- a/src/Umbraco.Web/Editors/CodeFileController.cs +++ b/src/Umbraco.Web/Editors/CodeFileController.cs @@ -1,7 +1,10 @@ using AutoMapper; +using System.Collections.Generic; +using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; +using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Web.Models.ContentEditing; @@ -100,6 +103,39 @@ namespace Umbraco.Web.Editors throw new HttpResponseException(HttpStatusCode.NotFound); } + /// + /// Used to get a list of available templates/snippets to base a new Partial View og Partial View Macro from + /// + /// This is a string but will be 'partialViews', 'partialViewMacros' + /// Returns a list of if a correct type is sent + public IEnumerable GetSnippets(string type) + { + if (string.IsNullOrWhiteSpace(type)) + { + throw new HttpResponseException(HttpStatusCode.BadRequest); + } + + IEnumerable snippets; + switch (type) + { + case Core.Constants.Trees.PartialViews: + snippets = Services.FileService.GetPartialViewSnippetNames( + //ignore these - (this is taken from the logic in "PartialView.ascx.cs") + "Gallery", + "ListChildPagesFromChangeableSource", + "ListChildPagesOrderedByProperty", + "ListImagesFromMediaFolder"); + break; + case Core.Constants.Trees.PartialViewMacros: + snippets = Services.FileService.GetPartialViewSnippetNames(); + break; + default: + throw new HttpResponseException(HttpStatusCode.NotFound); + } + + return snippets.Select(snippet => new SnippetDisplay() {Name = snippet.SplitPascalCasing().ToFirstUpperInvariant(), FileName = snippet}); + } + /// /// Used to delete a specific file from disk via the FileService /// diff --git a/src/Umbraco.Web/Models/ContentEditing/SnippetDisplay.cs b/src/Umbraco.Web/Models/ContentEditing/SnippetDisplay.cs new file mode 100644 index 0000000000..e05f8c5c89 --- /dev/null +++ b/src/Umbraco.Web/Models/ContentEditing/SnippetDisplay.cs @@ -0,0 +1,14 @@ +using System.Runtime.Serialization; + +namespace Umbraco.Web.Models.ContentEditing +{ + [DataContract(Name = "scriptFile", Namespace = "")] + public class SnippetDisplay + { + [DataMember(Name = "name", IsRequired = true)] + public string Name { get; set; } + + [DataMember(Name = "fileName", IsRequired = true)] + public string FileName { get; set; } + } +} diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 68bb81fad7..f65ac1fce2 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -339,6 +339,7 @@ + From 6bd1a77b967cc992d31a115cef8a16271fe50636 Mon Sep 17 00:00:00 2001 From: Emil Wangaa Date: Tue, 31 Jan 2017 10:10:05 +0100 Subject: [PATCH 02/15] Simple wiring up of the create menu for partialview, partialviewmacro and script --- .../src/views/partialviewmacros/create.controller.js | 8 ++++++++ .../src/views/partialviewmacros/create.html | 5 +++++ .../src/views/partialviews/create.controller.js | 8 ++++++++ .../src/views/partialviews/create.html | 5 +++++ .../src/views/scripts/create.controller.js | 8 ++++++++ src/Umbraco.Web.UI.Client/src/views/scripts/create.html | 5 +++++ src/Umbraco.Web/Trees/PartialViewMacrosTreeController.cs | 5 ++++- src/Umbraco.Web/Trees/PartialViewsTreeController.cs | 5 ++++- src/Umbraco.Web/Trees/ScriptTreeController.cs | 5 ++++- 9 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.controller.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.html create mode 100644 src/Umbraco.Web.UI.Client/src/views/partialviews/create.controller.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/partialviews/create.html create mode 100644 src/Umbraco.Web.UI.Client/src/views/scripts/create.controller.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/scripts/create.html 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 new file mode 100644 index 0000000000..a350a626f4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.controller.js @@ -0,0 +1,8 @@ +(function () { + "use strict"; + + function PartialViewMacrosCreateController() { + } + + angular.module("umbraco").controller("Umbraco.Editors.PartialViewMacros.CreateController", PartialViewMacrosCreateController); +})(); diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.html b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.html new file mode 100644 index 0000000000..9e5504aa0c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/create.html @@ -0,0 +1,5 @@ + diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviews/create.controller.js b/src/Umbraco.Web.UI.Client/src/views/partialviews/create.controller.js new file mode 100644 index 0000000000..cbd1af039a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/partialviews/create.controller.js @@ -0,0 +1,8 @@ +(function () { + "use strict"; + + function PartialViewsCreateController() { + } + + angular.module("umbraco").controller("Umbraco.Editors.PartialViews.CreateController", PartialViewsCreateController); +})(); diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviews/create.html b/src/Umbraco.Web.UI.Client/src/views/partialviews/create.html new file mode 100644 index 0000000000..e5edc326f4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/partialviews/create.html @@ -0,0 +1,5 @@ + 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 new file mode 100644 index 0000000000..419a037fa3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/scripts/create.controller.js @@ -0,0 +1,8 @@ +(function () { + "use strict"; + + function ScriptsCreateController() { + } + + angular.module("umbraco").controller("Umbraco.Editors.Scripts.CreateController", ScriptsCreateController); +})(); diff --git a/src/Umbraco.Web.UI.Client/src/views/scripts/create.html b/src/Umbraco.Web.UI.Client/src/views/scripts/create.html new file mode 100644 index 0000000000..99cf043e35 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/scripts/create.html @@ -0,0 +1,5 @@ + diff --git a/src/Umbraco.Web/Trees/PartialViewMacrosTreeController.cs b/src/Umbraco.Web/Trees/PartialViewMacrosTreeController.cs index 10daa56dbe..688787e338 100644 --- a/src/Umbraco.Web/Trees/PartialViewMacrosTreeController.cs +++ b/src/Umbraco.Web/Trees/PartialViewMacrosTreeController.cs @@ -34,7 +34,10 @@ namespace Umbraco.Web.Trees if (id == Constants.System.Root.ToInvariantString()) { - + //set the default to create + menu.DefaultMenuAlias = ActionNew.Instance.Alias; + //create action + menu.Items.Add(Services.TextService.Localize(string.Format("actions/{0}", ActionNew.Instance.Alias))); //refresh action menu.Items.Add(Services.TextService.Localize(string.Format("actions/{0}", ActionRefresh.Instance.Alias)), true); diff --git a/src/Umbraco.Web/Trees/PartialViewsTreeController.cs b/src/Umbraco.Web/Trees/PartialViewsTreeController.cs index 7a88def826..3913c41a32 100644 --- a/src/Umbraco.Web/Trees/PartialViewsTreeController.cs +++ b/src/Umbraco.Web/Trees/PartialViewsTreeController.cs @@ -33,7 +33,10 @@ namespace Umbraco.Web.Trees if (id == Constants.System.Root.ToInvariantString()) { - + //set the default to create + menu.DefaultMenuAlias = ActionNew.Instance.Alias; + //create action + menu.Items.Add(Services.TextService.Localize(string.Format("actions/{0}", ActionNew.Instance.Alias))); //refresh action menu.Items.Add(Services.TextService.Localize(string.Format("actions/{0}", ActionRefresh.Instance.Alias)), true); diff --git a/src/Umbraco.Web/Trees/ScriptTreeController.cs b/src/Umbraco.Web/Trees/ScriptTreeController.cs index ae19dbcf48..90174b6931 100644 --- a/src/Umbraco.Web/Trees/ScriptTreeController.cs +++ b/src/Umbraco.Web/Trees/ScriptTreeController.cs @@ -30,7 +30,10 @@ namespace Umbraco.Web.Trees if (id == Constants.System.Root.ToInvariantString()) { - + //set the default to create + menu.DefaultMenuAlias = ActionNew.Instance.Alias; + //create action + menu.Items.Add(Services.TextService.Localize(string.Format("actions/{0}", ActionNew.Instance.Alias))); //refresh action menu.Items.Add(Services.TextService.Localize(string.Format("actions/{0}", ActionRefresh.Instance.Alias)), true); From d22afe07db387db5b857f263ad25be9e8e2c0bae Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 31 Jan 2017 12:40:56 +0100 Subject: [PATCH 03/15] add UI for scripts create dialog --- .../src/views/scripts/create.controller.js | 29 +++++++++- .../src/views/scripts/create.html | 54 +++++++++++++++++-- 2 files changed, 79 insertions(+), 4 deletions(-) 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 419a037fa3..4e4a317591 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,7 +1,34 @@ (function () { "use strict"; - function ScriptsCreateController() { + function ScriptsCreateController($scope, $location, navigationService) { + + var vm = this; + var node = $scope.dialogOptions.currentNode; + + vm.creatingFolder = false; + vm.folderName = ""; + vm.fileExtension = ""; + + vm.createFile = createFile; + vm.showCreateFolder = showCreateFolder; + vm.createFolder = createFolder; + + function createFile(fileExtension) { + $location.search('create', null); + $location.search('fileExtension', null); + $location.path("/settings/scripts/edit/" + node.id).search("create", "true").search("fileExtension", fileExtension); + navigationService.hideMenu(); + } + + function showCreateFolder() { + vm.creatingFolder = true; + } + + function createFolder() { + alert("create folder"); + } + } angular.module("umbraco").controller("Umbraco.Editors.Scripts.CreateController", ScriptsCreateController); 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 99cf043e35..2836d44d2c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/scripts/create.html +++ b/src/Umbraco.Web.UI.Client/src/views/scripts/create.html @@ -1,5 +1,53 @@ -