From 527375b2384eecc0a3c75d7e98aa44f12a26d79d Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Tue, 9 Apr 2013 07:49:22 -0200 Subject: [PATCH] Fixes U4-2052 Creating a new document type has a bin icon by default Also deals better with pre-existing selected id's before switching the behaviour --- .../controls/ContentTypeControlNew.ascx.cs | 38 ++++++------------- .../umbraco/create/nodetypeTasks.cs | 4 +- 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs index 9c4d013b15..9629a15cae 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs @@ -188,29 +188,18 @@ namespace umbraco.controls var dirInfo = new DirectoryInfo(UmbracoContext.Current.Server.MapPath(SystemDirectories.Umbraco + "/images/umbraco")); var fileInfo = dirInfo.GetFiles(); - var spriteFileNames = new List(); - foreach (var iconClass in cms.businesslogic.CMSNode.DefaultIconClasses) - spriteFileNames.Add(IconClassToIconFileName(iconClass)); + var spriteFileNames = CMSNode.DefaultIconClasses.Select(IconClassToIconFileName).ToList(); - var diskFileNames = new List(); - foreach (var file in fileInfo) - diskFileNames.Add(FileNameToIconFileName(file)); + var diskFileNames = fileInfo.Select(FileNameToIconFileName).ToList(); var listOfIcons = new List(); - foreach (var iconClass in cms.businesslogic.CMSNode.DefaultIconClasses) + // .sprNew was never intended to be in the document type editor + foreach (var iconClass in CMSNode.DefaultIconClasses.Where(iconClass => iconClass.Equals(".sprNew", StringComparison.InvariantCultureIgnoreCase) == false)) { - // .sprNew was never intended to be in the document type editor - if (iconClass.ToLowerInvariant() == ".sprNew".ToLowerInvariant()) - continue; - - if (_contentType.IconUrl == iconClass) - { - AddSpriteListItem(iconClass, listOfIcons); - continue; - } - - if (UmbracoSettings.IconPickerBehaviour == IconPickerBehaviour.HideSpriteDuplicates + // Still shows the selected even if we tell it to hide sprite duplicates so as not to break an existing selection + if (_contentType.IconUrl.Equals(iconClass, StringComparison.InvariantCultureIgnoreCase) == false + && UmbracoSettings.IconPickerBehaviour == IconPickerBehaviour.HideSpriteDuplicates && diskFileNames.Contains(IconClassToIconFileName(iconClass))) continue; @@ -223,17 +212,14 @@ namespace umbraco.controls if (file.Name.ToLowerInvariant() == "sprites.png".ToLowerInvariant() || file.Name.ToLowerInvariant() == "sprites_ie6.gif".ToLowerInvariant()) continue; - var listItemValue = this.ResolveClientUrl(SystemDirectories.Umbraco + "/images/umbraco/" + file.Name); - if (_contentType.IconUrl == listItemValue) - { - AddFileListItem(file.Name, listItemValue, listOfIcons); - continue; - } - - if (UmbracoSettings.IconPickerBehaviour == IconPickerBehaviour.HideFileDuplicates + // Still shows the selected even if we tell it to hide file duplicates so as not to break an existing selection + if (_contentType.IconUrl.Equals(file.Name, StringComparison.InvariantCultureIgnoreCase) == false + && UmbracoSettings.IconPickerBehaviour == IconPickerBehaviour.HideFileDuplicates && spriteFileNames.Contains(FileNameToIconFileName(file))) continue; + var listItemValue = ResolveClientUrl(SystemDirectories.Umbraco + "/images/umbraco/" + file.Name); + AddFileListItem(file.Name, listItemValue, listOfIcons); } diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/create/nodetypeTasks.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/create/nodetypeTasks.cs index 4655bdf11e..707698bf97 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/create/nodetypeTasks.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/create/nodetypeTasks.cs @@ -1,6 +1,8 @@ using System; +using System.Configuration; using System.Data; using System.Web.Security; +using Umbraco.Core; using umbraco.BusinessLogic; using umbraco.DataLayer; using umbraco.BasePages; @@ -43,7 +45,7 @@ namespace umbraco public bool Save() { cms.businesslogic.web.DocumentType dt = cms.businesslogic.web.DocumentType.MakeNew(BusinessLogic.User.GetUser(_userID), Alias.Replace("'", "''")); - dt.IconUrl = "folder.gif"; + dt.IconUrl = UmbracoSettings.IconPickerBehaviour == IconPickerBehaviour.HideFileDuplicates ? ".sprTreeFolder" : "folder.gif"; // Create template? if (ParentID == 1)