diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs index ced63f04bb..87fe63002b 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs @@ -280,6 +280,11 @@ namespace Umbraco.Core.Configuration.UmbracoSettings } } + IImagingCrops IContentSection.ImageCrops + { + get { return Imaging.Crops; } + } + string IContentSection.NotificationEmailAddress { get { return Notifications.NotificationEmailAddress; } diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropCollection.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropCollection.cs new file mode 100644 index 0000000000..ed2da19b34 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropCollection.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Configuration; + +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + internal class ContentImagingCropCollection : ConfigurationElementCollection, IEnumerable + { + internal void Add(ContentImagingCropElement c) + { + BaseAdd(c); + } + + protected override ConfigurationElement CreateNewElement() + { + return new ContentImagingCropElement(); + } + + protected override object GetElementKey(ConfigurationElement element) + { + return ((ContentImagingCropElement)element).MediaTypeAlias; + } + + IEnumerator IEnumerable.GetEnumerator() + { + for (var i = 0; i < Count; i++) + { + yield return BaseGet(i) as IImagingCrop; + } + } + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropElement.cs new file mode 100644 index 0000000000..7a8f2a3ad4 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropElement.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Configuration; + +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + internal class ContentImagingCropElement : ConfigurationElement, IImagingCrop + { + [ConfigurationProperty("mediaTypeAlias", IsRequired = true)] + public string MediaTypeAlias + { + get { return (string)base["mediaTypeAlias"]; } + } + + [ConfigurationProperty("focalPointProperty", IsRequired = true)] + public string FocalPointProperty + { + get { return (string)base["focalPointProperty"]; } + } + + [ConfigurationProperty("fileProperty", IsRequired = true)] + public string FileProperty + { + get { return (string)base["fileProperty"]; } + } + + [ConfigurationCollection(typeof(ContentImagingCropSizeCollection))] + [ConfigurationProperty("", IsDefaultCollection = true)] + public ContentImagingCropSizeCollection CropSizeCollection + { + get { return (ContentImagingCropSizeCollection)base[""]; } + //set { base[""] = value; } + } + + IEnumerable IImagingCrop.CropSizes + { + get { return CropSizeCollection; } + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropSizeCollection.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropSizeCollection.cs new file mode 100644 index 0000000000..427674720a --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropSizeCollection.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Configuration; + +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + internal class ContentImagingCropSizeCollection : ConfigurationElementCollection, IEnumerable + { + internal void Add(ContentImagingCropSizeElement c) + { + BaseAdd(c); + } + + protected override ConfigurationElement CreateNewElement() + { + return new ContentImagingCropSizeElement(); + } + + protected override object GetElementKey(ConfigurationElement element) + { + return ((ContentImagingCropSizeElement)element).Alias; + } + + IEnumerator IEnumerable.GetEnumerator() + { + for (var i = 0; i < Count; i++) + { + yield return BaseGet(i) as IImagingCropSize; + } + } + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropSizeElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropSizeElement.cs new file mode 100644 index 0000000000..6691a8ea06 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropSizeElement.cs @@ -0,0 +1,25 @@ +using System.Configuration; + +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + internal class ContentImagingCropSizeElement : ConfigurationElement, IImagingCropSize + { + [ConfigurationProperty("alias", IsRequired = true)] + public string Alias + { + get { return (string)base["alias"]; } + } + + [ConfigurationProperty("width", IsRequired = true)] + public int Width + { + get { return (int)base["width"]; } + } + + [ConfigurationProperty("height", IsRequired = true)] + public int Height + { + get { return (int)base["height"]; } + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropsElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropsElement.cs new file mode 100644 index 0000000000..9555fe1422 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingCropsElement.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.Configuration; + +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + internal class ContentImagingCropsElement : ConfigurationElement, IImagingCrops + { + [ConfigurationProperty("saveFiles", DefaultValue = false)] + public bool SaveFiles + { + get { return (bool)base["saveFiles"]; } + } + + [ConfigurationCollection(typeof(ContentImagingCropCollection), AddItemName = "crop")] + [ConfigurationProperty("", IsDefaultCollection = true)] + public ContentImagingCropCollection CropCollection + { + get { return (ContentImagingCropCollection)base[""]; } + //set { base[""] = value; } + } + + IEnumerable IImagingCrops.Crops + { + get { return CropCollection; } + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingElement.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingElement.cs index d07bfb3eda..07af1335b3 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingElement.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ContentImagingElement.cs @@ -1,10 +1,15 @@ -using System.Collections.Generic; -using System.Configuration; +using System.Configuration; namespace Umbraco.Core.Configuration.UmbracoSettings { internal class ContentImagingElement : ConfigurationElement { + [ConfigurationProperty("crops")] + internal ContentImagingCropsElement Crops + { + get { return (ContentImagingCropsElement)base["crops"]; } + } + [ConfigurationProperty("imageFileTypes")] internal CommaDelimitedConfigurationElement ImageFileTypes { diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs index 93e3260b44..c3a86c1710 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs @@ -4,6 +4,8 @@ namespace Umbraco.Core.Configuration.UmbracoSettings { public interface IContentSection : IUmbracoConfigurationSection { + IImagingCrops ImageCrops { get; } + string NotificationEmailAddress { get; } bool DisableHtmlEmail { get; } diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCrop.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCrop.cs new file mode 100644 index 0000000000..e6e8a243f4 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCrop.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; + +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + public interface IImagingCrop + { + string MediaTypeAlias { get; } + + string FocalPointProperty { get; } + + string FileProperty { get; } + + IEnumerable CropSizes { get; } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCropSize.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCropSize.cs new file mode 100644 index 0000000000..0dac07b9b2 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCropSize.cs @@ -0,0 +1,11 @@ +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + public interface IImagingCropSize + { + string Alias { get; } + + int Width { get; } + + int Height { get; } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCrops.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCrops.cs new file mode 100644 index 0000000000..02b602c6b9 --- /dev/null +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/IImagingCrops.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace Umbraco.Core.Configuration.UmbracoSettings +{ + public interface IImagingCrops + { + bool SaveFiles { get; } + + IEnumerable Crops { get; } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index f29a9f5b29..22e43c4e02 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -198,6 +198,14 @@ + + + + + + + + @@ -1121,9 +1129,7 @@ - - - +