From e4cb079ae134459e64cd773bb3fd3d1b9e92d45c Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 5 Sep 2013 15:14:28 +1000 Subject: [PATCH] Fixes template drop down data and persisting an updated template. --- .../src/common/mocks/resources/_utils.js | 14 +++++++------- .../src/common/services/util.service.js | 4 +--- src/Umbraco.Web/Editors/ContentController.cs | 6 ++++-- .../Models/Mapping/ContentModelMapper.cs | 16 +++++----------- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/mocks/resources/_utils.js b/src/Umbraco.Web.UI.Client/src/common/mocks/resources/_utils.js index b552e15a0d..617bc59df4 100644 --- a/src/Umbraco.Web.UI.Client/src/common/mocks/resources/_utils.js +++ b/src/Umbraco.Web.UI.Client/src/common/mocks/resources/_utils.js @@ -145,19 +145,19 @@ angular.module('umbraco.mocks'). view: "dropdown", alias: "_umb_template", config: { - items: [ - { alias: "", name: "-- Choose template --" }, - { alias: "myTemplate", name: "My Templates" }, - { alias: "home", name: "Home Page" }, - { alias: "news", name: "News Page" } - ] + items: { + "" : "-- Choose template --", + "myTemplate" : "My Templates", + "home" : "Home Page", + "news" : "News Page" + } } }, { label: 'Link to document', value: ["/testing" + id, "http://localhost/testing" + id, "http://mydomain.com/testing" + id].join(), view: "urllist", - alias: "_umb_template" + alias: "_umb_urllist" }, { alias: "test", label: "Stuff", view: "test", value: "", diff --git a/src/Umbraco.Web.UI.Client/src/common/services/util.service.js b/src/Umbraco.Web.UI.Client/src/common/services/util.service.js index 321eb141b6..48db803ca0 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/util.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/util.service.js @@ -236,9 +236,7 @@ function umbDataFormatter() { saveModel.releaseDate = prop.value; break; case "_umb_template": - //this will be a json string - var json = angular.toJson(prop.value); - saveModel.templateAlias = json.alias; + saveModel.templateAlias = prop.value; break; } } diff --git a/src/Umbraco.Web/Editors/ContentController.cs b/src/Umbraco.Web/Editors/ContentController.cs index 89d1ae1560..efe2e678a8 100644 --- a/src/Umbraco.Web/Editors/ContentController.cs +++ b/src/Umbraco.Web/Editors/ContentController.cs @@ -184,17 +184,19 @@ namespace Umbraco.Web.Editors contentItem.PersistedContent.ReleaseDate = contentItem.ReleaseDate; //only set the template if it didn't change var templateChanged = (contentItem.PersistedContent.Template == null && contentItem.TemplateAlias.IsNullOrWhiteSpace() == false) - || (contentItem.PersistedContent.Template != null && contentItem.PersistedContent.Template.Alias != contentItem.TemplateAlias); + || (contentItem.PersistedContent.Template != null && contentItem.PersistedContent.Template.Alias != contentItem.TemplateAlias) + || (contentItem.PersistedContent.Template != null && contentItem.TemplateAlias.IsNullOrWhiteSpace()); if (templateChanged) { var template = Services.FileService.GetTemplate(contentItem.TemplateAlias); - if (template == null) + if (template == null && contentItem.TemplateAlias.IsNullOrWhiteSpace() == false) { //ModelState.AddModelError("Template", "No template exists with the specified alias: " + contentItem.TemplateAlias); LogHelper.Warn("No template exists with the specified alias: " + contentItem.TemplateAlias); } else { + //NOTE: this could be null if there was a template and the posted template is null, this should remove the assigned template contentItem.PersistedContent.Template = template; } } diff --git a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs index 533ea5b227..8281a27833 100644 --- a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs @@ -88,8 +88,11 @@ namespace Umbraco.Web.Models.Mapping private static void MapGenericCustomProperties(IContent content, ContentItemDisplay display) { //fill in the template config to be passed to the template drop down. - var templateItemConfig = new List {new AllowedTemplate {Alias = "", Name = "Choose..."}}; - templateItemConfig.AddRange(content.ContentType.AllowedTemplates.Select(t => new AllowedTemplate {Alias = t.Alias, Name = t.Name})); + var templateItemConfig = new Dictionary {{"", "Choose..."}}; + foreach (var t in content.ContentType.AllowedTemplates) + { + templateItemConfig.Add(t.Alias, t.Name); + } TabsAndPropertiesResolver.MapGenericProperties( content, display, @@ -127,15 +130,6 @@ namespace Umbraco.Web.Models.Mapping }); } - [DataContract(Name = "template", Namespace = "")] - private class AllowedTemplate - { - [DataMember(Name = "alias")] - public string Alias { get; set; } - [DataMember(Name = "name")] - public string Name { get; set; } - } - /// /// Gets the published date value for the IContent object ///