From caf972cd0f4b251f0dbbccc3ca21cb9d6fde16ac Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 9 Jan 2015 17:01:38 +1100 Subject: [PATCH] Ensures virtual path is set on the template, updates the tree controller to render the correct editor if it's webforms, updates the rest service to return the updated contents if the server changes it and updates the UI --- .../Persistence/Repositories/TemplateRepository.cs | 7 ++----- src/Umbraco.Web.UI/umbraco_client/Editors/EditTemplate.js | 3 +++ src/Umbraco.Web.UI/umbraco_client/Editors/EditView.js | 3 +++ src/Umbraco.Web/Trees/TemplatesTreeController.cs | 4 ++-- src/Umbraco.Web/WebServices/SaveFileController.cs | 6 +++++- .../umbraco.presentation/umbraco/Trees/loadTemplates.cs | 1 - .../umbraco/settings/editTemplate.aspx.cs | 2 +- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs index 74df05bd84..5c3f39e228 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs @@ -172,8 +172,6 @@ namespace Umbraco.Core.Persistence.Repositories var o = Database.IsNew(nodeDto) ? Convert.ToInt32(Database.Insert(nodeDto)) : Database.Update(nodeDto); //Update with new correct path - //TODO: need to fix: - // http://issues.umbraco.org/issue/U4-5846 var parent = Get(template.MasterTemplateId.Value); if (parent != null) { @@ -236,9 +234,6 @@ namespace Umbraco.Core.Persistence.Repositories var template = (Template)entity; - //TODO: need to fix: - // http://issues.umbraco.org/issue/U4-5846 - // And use the ParentId column instead of the extra template parent id column if (entity.IsPropertyDirty("MasterTemplateId")) { var parent = Get(template.MasterTemplateId.Value); @@ -417,6 +412,7 @@ namespace Umbraco.Core.Persistence.Repositories } template.UpdateDate = _viewsFileSystem.GetLastModified(fileName).UtcDateTime; template.Content = content; + template.VirtualPath = _viewsFileSystem.GetUrl(fileName); } private void PopulateMasterpageTemplate(ITemplate template, string fileName) @@ -431,6 +427,7 @@ namespace Umbraco.Core.Persistence.Repositories template.UpdateDate = _masterpagesFileSystem.GetLastModified(fileName).UtcDateTime; template.Content = content; + template.VirtualPath = _masterpagesFileSystem.GetUrl(fileName); } #region Implementation of ITemplateRepository diff --git a/src/Umbraco.Web.UI/umbraco_client/Editors/EditTemplate.js b/src/Umbraco.Web.UI/umbraco_client/Editors/EditTemplate.js index 0a3bb45c5c..d9b1a28505 100644 --- a/src/Umbraco.Web.UI/umbraco_client/Editors/EditTemplate.js +++ b/src/Umbraco.Web.UI/umbraco_client/Editors/EditTemplate.js @@ -148,6 +148,9 @@ } path = args.path; } + if (args.contents) { + UmbEditor.SetCode(args.contents); + } top.UmbSpeechBubble.ShowMessage('save', header, msg); UmbClientMgr.mainTree().setActiveTreeType('templates'); diff --git a/src/Umbraco.Web.UI/umbraco_client/Editors/EditView.js b/src/Umbraco.Web.UI/umbraco_client/Editors/EditView.js index 17f151bd2c..554d0bafc8 100644 --- a/src/Umbraco.Web.UI/umbraco_client/Editors/EditView.js +++ b/src/Umbraco.Web.UI/umbraco_client/Editors/EditView.js @@ -155,6 +155,9 @@ } path = args.path; } + if (args.contents) { + UmbEditor.SetCode(args.contents); + } UmbClientMgr.mainTree().setActiveTreeType(this._opts.currentTreeType); diff --git a/src/Umbraco.Web/Trees/TemplatesTreeController.cs b/src/Umbraco.Web/Trees/TemplatesTreeController.cs index 8c19749d27..11eaf8cef7 100644 --- a/src/Umbraco.Web/Trees/TemplatesTreeController.cs +++ b/src/Umbraco.Web/Trees/TemplatesTreeController.cs @@ -129,9 +129,9 @@ namespace Umbraco.Web.Trees { //TODO: Rebuild the language editor in angular, then we dont need to have this at all (which is just a path to the legacy editor) - return Path.GetExtension(template.Path).InvariantEquals(".master") + return template.GetTypeOfRenderingEngine() == RenderingEngine.WebForms ? "/" + queryStrings.GetValue("application") + "/framed/" + - Uri.EscapeDataString("/umbraco/settings/editTemplate.aspx?id=" + template.Id) + Uri.EscapeDataString("/umbraco/settings/editTemplate.aspx?templateID=" + template.Id) : "/" + queryStrings.GetValue("application") + "/framed/" + Uri.EscapeDataString("/umbraco/settings/Views/EditView.aspx?treeType=" + Constants.Trees.Templates + "&templateID=" + template.Id); } diff --git a/src/Umbraco.Web/WebServices/SaveFileController.cs b/src/Umbraco.Web/WebServices/SaveFileController.cs index 288e8f19a3..651b372988 100644 --- a/src/Umbraco.Web/WebServices/SaveFileController.cs +++ b/src/Umbraco.Web/WebServices/SaveFileController.cs @@ -204,7 +204,11 @@ namespace Umbraco.Web.WebServices var syncPath = "-1,init," + t.Path.Replace("-1,", ""); return Success(ui.Text("speechBubbles", "templateSavedText"), ui.Text("speechBubbles", "templateSavedHeader"), - new { path = syncPath }); + new + { + path = syncPath, + contents = t.Design + }); } catch (Exception ex) { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadTemplates.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadTemplates.cs index c461f6335f..0b8644aa43 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadTemplates.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadTemplates.cs @@ -35,7 +35,6 @@ using umbraco.BusinessLogic.Actions; namespace umbraco { [Obsolete("This is no longer used and will be removed from the codebase in the future")] - //[Tree(Constants.Applications.Settings, "templates", "Templates", sortOrder: 1)] public class loadTemplates : BaseTree { public loadTemplates(string application) : base(application) {} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/settings/editTemplate.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/settings/editTemplate.aspx.cs index fe193d3b91..8f533188cd 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/settings/editTemplate.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/settings/editTemplate.aspx.cs @@ -74,7 +74,7 @@ namespace umbraco.cms.presentation.settings } ClientTools - .SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree().Tree.Alias) + .SetActiveTreeType(Constants.Trees.Templates) .SyncTree(TemplateTreeSyncPath, false); LoadScriptingTemplates();