diff --git a/Gruntfile.js b/Gruntfile.js index e28eec5..50001e9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -29,11 +29,6 @@ module.exports = function(grunt) { tasks: ['copy:html'] }, - config: { - files: ['config/package.manifest'], - tasks: ['copy:config'] - }, - dll: { files: ['app/Umbraco/**/*.dll'], tasks: ['copy:dll'] diff --git a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj index e790eb8..f3082fc 100644 --- a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj +++ b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj @@ -37,8 +37,9 @@ ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\businesslogic.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\businesslogic.dll ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll @@ -46,17 +47,20 @@ ..\packages\ClientDependency-Mvc.1.7.0.4\lib\ClientDependency.Core.Mvc.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\cms.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\cms.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\controls.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\controls.dll ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\Examine.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Examine.dll ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll @@ -70,22 +74,24 @@ ..\packages\ImageProcessor.Web.3.2.1.0\lib\net45\ImageProcessor.Web.dll - + False - ..\packages\UmbracoCms.Core.7.1.0\lib\interfaces.dll + ..\packages\UmbracoCms.Core.7.1.1\lib\interfaces.dll False - ..\packages\UmbracoCms.Core.7.1.0\lib\log4net.dll + ..\packages\UmbracoCms.Core.7.1.1\lib\log4net.dll ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\Microsoft.ApplicationBlocks.Data.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.ApplicationBlocks.Data.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\Microsoft.Web.Helpers.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.Web.Helpers.dll True @@ -103,24 +109,26 @@ ..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll - - ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll + + False + ..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll ..\packages\NUnit.2.6.3\lib\nunit.framework.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\SQLCE4Umbraco.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\SQLCE4Umbraco.dll True - ..\packages\UmbracoCms.Core.7.1.0\lib\System.Data.SqlServerCe.dll + ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.dll True - ..\packages\UmbracoCms.Core.7.1.0\lib\System.Data.SqlServerCe.Entity.dll + ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.Entity.dll @@ -163,39 +171,49 @@ - - ..\packages\UmbracoCms.Core.7.1.0\lib\TidyNet.dll - - - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.dll - - + False - ..\packages\UmbracoCms.Core.7.1.0\lib\Umbraco.Core.dll + ..\packages\UmbracoCms.Core.7.1.1\lib\TidyNet.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.DataLayer.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.editorControls.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Core.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.MacroEngines.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.DataLayer.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.providers.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.editorControls.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\Umbraco.Web.UI.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.MacroEngines.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.XmlSerializers.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.providers.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\UmbracoExamine.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Web.UI.dll - - ..\packages\UmbracoCms.Core.7.1.0\lib\UrlRewritingNet.UrlRewriter.dll + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.XmlSerializers.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\UmbracoExamine.dll + + + False + ..\packages\UmbracoCms.Core.7.1.1\lib\UrlRewritingNet.UrlRewriter.dll diff --git a/app/Umbraco/Archetype.Tests/app.config b/app/Umbraco/Archetype.Tests/app.config index e509377..72cac16 100644 --- a/app/Umbraco/Archetype.Tests/app.config +++ b/app/Umbraco/Archetype.Tests/app.config @@ -18,6 +18,10 @@ + + + + \ No newline at end of file diff --git a/app/Umbraco/Archetype.Tests/packages.config b/app/Umbraco/Archetype.Tests/packages.config index 66fbf23..493b067 100644 --- a/app/Umbraco/Archetype.Tests/packages.config +++ b/app/Umbraco/Archetype.Tests/packages.config @@ -20,9 +20,9 @@ - + - + \ No newline at end of file diff --git a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj index f821384..53469ca 100644 --- a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj +++ b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj @@ -41,8 +41,7 @@ False - ..\packages\UmbracoCms.Core.7.1.0\lib\businesslogic.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\businesslogic.dll ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll @@ -53,20 +52,17 @@ False - ..\packages\UmbracoCms.Core.7.1.0\lib\cms.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\cms.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\controls.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\controls.dll ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll False - ..\packages\UmbracoCms.Core.7.1.0\lib\Examine.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\Examine.dll ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll @@ -85,24 +81,20 @@ False - ..\packages\UmbracoCms.Core.7.1.0\lib\interfaces.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\interfaces.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\log4net.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\log4net.dll ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll False - ..\packages\UmbracoCms.Core.7.1.0\lib\Microsoft.ApplicationBlocks.Data.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.ApplicationBlocks.Data.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\Microsoft.Web.Helpers.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.Web.Helpers.dll False @@ -121,22 +113,20 @@ False - ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll - False + ..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\SQLCE4Umbraco.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\SQLCE4Umbraco.dll - False - ..\packages\UmbracoCms.Core.7.1.0\lib\System.Data.SqlServerCe.dll + True + ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.dll - False - ..\packages\UmbracoCms.Core.7.1.0\lib\System.Data.SqlServerCe.Entity.dll + True + ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.Entity.dll @@ -183,48 +173,37 @@ - ..\packages\UmbracoCms.Core.7.1.0\lib\TidyNet.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\TidyNet.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\Umbraco.Core.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Core.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.DataLayer.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.DataLayer.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.editorControls.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.editorControls.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.MacroEngines.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.MacroEngines.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.providers.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.providers.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\Umbraco.Web.UI.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Web.UI.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\umbraco.XmlSerializers.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.XmlSerializers.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\UmbracoExamine.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\UmbracoExamine.dll - ..\packages\UmbracoCms.Core.7.1.0\lib\UrlRewritingNet.UrlRewriter.dll - False + ..\packages\UmbracoCms.Core.7.1.1\lib\UrlRewritingNet.UrlRewriter.dll @@ -242,8 +221,10 @@ + + diff --git a/app/Umbraco/Umbraco.Archetype/Extensions/Extensions.cs b/app/Umbraco/Umbraco.Archetype/Extensions/Extensions.cs index 2232aa5..c9f3953 100644 --- a/app/Umbraco/Umbraco.Archetype/Extensions/Extensions.cs +++ b/app/Umbraco/Umbraco.Archetype/Extensions/Extensions.cs @@ -1,4 +1,10 @@ -using Umbraco.Core; +using System; +using System.Web; +using System.Text; +using System.Text.RegularExpressions; +using System.Collections.Generic; +using Umbraco.Core; +using Umbraco.Web; using Archetype.Umbraco.Models; namespace Archetype.Umbraco.Extensions diff --git a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs index 7a33150..799f844 100644 --- a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs +++ b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("0.0.0.0")] \ No newline at end of file +[assembly: AssemblyVersion("1.0")] +[assembly: AssemblyFileVersion("1.0-beta")] \ No newline at end of file diff --git a/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs b/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs index f38a029..ab697ec 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs @@ -1,39 +1,39 @@ using System; using System.Collections.Generic; -using System.Linq; -using Archetype.Umbraco.Extensions; -using Archetype.Umbraco.Models; -using Newtonsoft.Json; +using System.Linq; +using Archetype.Umbraco.Extensions; +using Archetype.Umbraco.Models; +using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Models; -using Umbraco.Core.Models.PublishedContent; -using Umbraco.Core.PropertyEditors; +using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; -namespace Archetype.Umbraco.PropertyConverters -{ - [PropertyValueType(typeof(Models.Archetype))] - [PropertyValueCache(PropertyCacheValue.All, PropertyCacheLevel.Content)] - public class ArchetypeValueConverter : PropertyValueConverterBase - { - - public ServiceContext Services - { - get { return ApplicationContext.Current.Services; } - } - - public override bool IsConverter(PublishedPropertyType propertyType) - { - return propertyType.PropertyEditorAlias.Equals(Constants.PropertyEditorAlias); - } - +namespace Archetype.Umbraco.PropertyConverters +{ + [PropertyValueType(typeof(Models.Archetype))] + [PropertyValueCache(PropertyCacheValue.All, PropertyCacheLevel.Content)] + public class ArchetypeValueConverter : PropertyValueConverterBase + { + + public ServiceContext Services + { + get { return ApplicationContext.Current.Services; } + } + + public override bool IsConverter(PublishedPropertyType propertyType) + { + return propertyType.PropertyEditorAlias.Equals(Constants.PropertyEditorAlias); + } + public override object ConvertDataToSource(PublishedPropertyType propertyType, object source, bool preview) { - var defaultValue = new Models.Archetype(); - - if (source == null) - return defaultValue; - + var defaultValue = new Models.Archetype(); + + if (source == null) + return defaultValue; + var sourceString = source.ToString(); if (!sourceString.DetectIsJson()) @@ -42,8 +42,8 @@ namespace Archetype.Umbraco.PropertyConverters var archetype = new ArchetypeHelper().DeserializeJsonToArchetype(source.ToString(), (propertyType != null ? propertyType.DataTypeId : -1)); - return archetype; + return archetype; } - } -} + } +} \ No newline at end of file diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs new file mode 100644 index 0000000..eda1e23 --- /dev/null +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using ClientDependency.Core; +using Newtonsoft.Json; +using Umbraco.Core; +using Umbraco.Core.Models; +using Umbraco.Core.Models.Editors; +using Umbraco.Core.PropertyEditors; +using Umbraco.Core.Services; +using Umbraco.Web.PropertyEditors; + +namespace Archetype.Umbraco.PropertyEditors +{ + [PropertyEditorAsset(ClientDependencyType.Javascript, "/App_Plugins/Archetype/js/archetype.js")] + [PropertyEditor("Imulus.Archetype", "Archetype", "/App_Plugins/Archetype/views/archetype.html", + ValueType = "JSON")] + public class ArchetypePropertyEditor : PropertyEditor + { + #region Pre Value Editor + + protected override PreValueEditor CreatePreValueEditor() + { + return new ArchetypePreValueEditor(); + } + + internal class ArchetypePreValueEditor : PreValueEditor + { + [PreValueField("archetypeConfig", "Config", "/App_Plugins/Archetype/views/archetype.config.html", + Description = "(Required) Describe your Archetype.")] + public string Config { get; set; } + + [PreValueField("hideLabel", "Hide Label", "boolean", + Description = "Hide the Umbraco property title and description, making the Archetype span the entire page width")] + public bool HideLabel { get; set; } + } + + #endregion + + #region Value Editor + + protected override PropertyValueEditor CreateValueEditor() + { + return new ArchetypePropertyValueEditor(base.CreateValueEditor()); + } + + internal class ArchetypePropertyValueEditor : PropertyValueEditorWrapper + { + protected JsonSerializerSettings _jsonSettings; + + public ArchetypePropertyValueEditor(PropertyValueEditor wrapped) + : base(wrapped) + { + var dcr = new Newtonsoft.Json.Serialization.DefaultContractResolver(); + dcr.DefaultMembersSearchFlags |= System.Reflection.BindingFlags.NonPublic; + + _jsonSettings = new JsonSerializerSettings { ContractResolver = dcr }; + } + + public override string ConvertDbToString(Property property, PropertyType propertyType, IDataTypeService dataTypeService) + { + if (property.Value == null) + return string.Empty; + + var archetype = JsonConvert.DeserializeObject(property.Value.ToString(), _jsonSettings); + + foreach (var fieldset in archetype.Fieldsets) + { + foreach (var propDef in fieldset.Properties) + { + var dtd = dataTypeService.GetDataTypeDefinitionById(Guid.Parse(propDef.DataTypeGuid)); + var propType = new PropertyType(dtd) { Alias = propDef.Alias }; + var prop = new Property(propType, propDef.Value); + var propEditor = PropertyEditorResolver.Current.GetByAlias(dtd.PropertyEditorAlias); + propDef.Value = propEditor.ValueEditor.ConvertDbToString(prop, propType, dataTypeService); + } + } + + property.Value = JsonConvert.SerializeObject(archetype); + + return base.ConvertDbToString(property, propertyType, dataTypeService); + } + + public override object ConvertDbToEditor(Property property, PropertyType propertyType, IDataTypeService dataTypeService) + { + if (property.Value == null) + return string.Empty; + + var archetype = JsonConvert.DeserializeObject(property.Value.ToString(), _jsonSettings); + + foreach (var fieldset in archetype.Fieldsets) + { + foreach (var propDef in fieldset.Properties) + { + var dtd = dataTypeService.GetDataTypeDefinitionById(Guid.Parse(propDef.DataTypeGuid)); + var propType = new PropertyType(dtd) { Alias = propDef.Alias }; + var prop = new Property(propType, propDef.Value); + var propEditor = PropertyEditorResolver.Current.GetByAlias(dtd.PropertyEditorAlias); + propDef.Value = propEditor.ValueEditor.ConvertDbToEditor(prop, propType, dataTypeService); + } + } + + return archetype; + } + + public override object ConvertEditorToDb(ContentPropertyData editorValue, object currentValue) + { + if (editorValue.Value == null) + return string.Empty; + + var archetype = JsonConvert.DeserializeObject(editorValue.Value.ToString(), _jsonSettings); + + foreach (var fieldset in archetype.Fieldsets) + { + foreach (var propDef in fieldset.Properties) + { + var dtd = ApplicationContext.Current.Services.DataTypeService.GetDataTypeDefinitionById(Guid.Parse(propDef.DataTypeGuid)); + var preValues = ApplicationContext.Current.Services.DataTypeService.GetPreValuesCollectionByDataTypeId(dtd.Id); + var propData = new ContentPropertyData(propDef.Value, preValues, new Dictionary()); + var propEditor = PropertyEditorResolver.Current.GetByAlias(dtd.PropertyEditorAlias); + propDef.Value = propEditor.ValueEditor.ConvertEditorToDb(propData, propDef.Value); + } + } + + return JsonConvert.SerializeObject(archetype); + } + } + + #endregion + } +} diff --git a/app/Umbraco/Umbraco.Archetype/app.config b/app/Umbraco/Umbraco.Archetype/app.config new file mode 100644 index 0000000..4429813 --- /dev/null +++ b/app/Umbraco/Umbraco.Archetype/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/Umbraco/Umbraco.Archetype/packages.config b/app/Umbraco/Umbraco.Archetype/packages.config index 85afbc7..d006ee4 100644 --- a/app/Umbraco/Umbraco.Archetype/packages.config +++ b/app/Umbraco/Umbraco.Archetype/packages.config @@ -19,8 +19,8 @@ - + - + \ No newline at end of file diff --git a/config/meta.json b/config/meta.json index df9f7e5..e963137 100644 --- a/config/meta.json +++ b/config/meta.json @@ -1,6 +1,6 @@ { "name": "Archetype", - "version": "0.5.1-alpha", + "version": "1.0-beta", "url": "http://github.com/imulus/archetype/", "author": "Imulus", "authorUrl": "http://imulus.com/",