diff --git a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj index f3082fc..456de20 100644 --- a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj +++ b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj @@ -37,9 +37,9 @@ ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\businesslogic.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\businesslogic.dll ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll @@ -47,20 +47,20 @@ ..\packages\ClientDependency-Mvc.1.7.0.4\lib\ClientDependency.Core.Mvc.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\cms.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\cms.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\controls.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\controls.dll ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll False - ..\packages\UmbracoCms.Core.7.1.1\lib\Examine.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\Examine.dll ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll @@ -68,30 +68,32 @@ ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll - - ..\packages\ImageProcessor.1.8.7.0\lib\ImageProcessor.dll - - - ..\packages\ImageProcessor.Web.3.2.1.0\lib\net45\ImageProcessor.Web.dll - - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\interfaces.dll + ..\packages\ImageProcessor.1.9.0.0\lib\ImageProcessor.dll + + + False + ..\packages\ImageProcessor.Web.3.2.3.0\lib\net45\ImageProcessor.Web.dll + + + False + ..\packages\UmbracoCms.Core.7.1.2\lib\interfaces.dll False - ..\packages\UmbracoCms.Core.7.1.1\lib\log4net.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\log4net.dll ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll False - ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.ApplicationBlocks.Data.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\Microsoft.ApplicationBlocks.Data.dll False - ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.Web.Helpers.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\Microsoft.Web.Helpers.dll True @@ -116,19 +118,19 @@ ..\packages\NUnit.2.6.3\lib\nunit.framework.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\SQLCE4Umbraco.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\SQLCE4Umbraco.dll True - ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\System.Data.SqlServerCe.dll True - ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.Entity.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\System.Data.SqlServerCe.Entity.dll @@ -173,47 +175,47 @@ False - ..\packages\UmbracoCms.Core.7.1.1\lib\TidyNet.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\TidyNet.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Core.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\Umbraco.Core.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.DataLayer.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.DataLayer.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.editorControls.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.editorControls.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.MacroEngines.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.MacroEngines.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.providers.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.providers.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Web.UI.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\Umbraco.Web.UI.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.XmlSerializers.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.XmlSerializers.dll - + False - ..\packages\UmbracoCms.Core.7.1.1\lib\UmbracoExamine.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\UmbracoExamine.dll False - ..\packages\UmbracoCms.Core.7.1.1\lib\UrlRewritingNet.UrlRewriter.dll + ..\packages\UmbracoCms.Core.7.1.2\lib\UrlRewritingNet.UrlRewriter.dll diff --git a/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs b/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs index e7a0b81..e1bbc0d 100644 --- a/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs +++ b/app/Umbraco/Archetype.Tests/Models/FieldsetTests.cs @@ -4,7 +4,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; -using Archetype.Umbraco.PropertyConverters; +using Archetype.PropertyConverters; using NUnit.Framework; namespace Archetype.Tests.Models diff --git a/app/Umbraco/Archetype.Tests/PropertyValueConverter/PropertyValueConverterTests.cs b/app/Umbraco/Archetype.Tests/PropertyValueConverter/PropertyValueConverterTests.cs index 85a4f77..63f595c 100644 --- a/app/Umbraco/Archetype.Tests/PropertyValueConverter/PropertyValueConverterTests.cs +++ b/app/Umbraco/Archetype.Tests/PropertyValueConverter/PropertyValueConverterTests.cs @@ -4,7 +4,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; -using Archetype.Umbraco.PropertyConverters; +using Archetype.PropertyConverters; using Moq; using NUnit.Framework; using Umbraco.Core.Models.PublishedContent; diff --git a/app/Umbraco/Archetype.Tests/packages.config b/app/Umbraco/Archetype.Tests/packages.config index 493b067..e0df35f 100644 --- a/app/Umbraco/Archetype.Tests/packages.config +++ b/app/Umbraco/Archetype.Tests/packages.config @@ -4,8 +4,8 @@ - - + + @@ -23,6 +23,6 @@ - + \ No newline at end of file diff --git a/app/Umbraco/DatabaseSizer/Application.cs b/app/Umbraco/DatabaseSizer/Application.cs new file mode 100644 index 0000000..0824ba5 --- /dev/null +++ b/app/Umbraco/DatabaseSizer/Application.cs @@ -0,0 +1,49 @@ +using System; +using Umbraco.Core; +using Umbraco.Core.Logging; + +namespace DatabaseSizer +{ + public class Application : ApplicationEventHandler + { + protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) + { + base.ApplicationStarted(umbracoApplication, applicationContext); + + ExpandPrevalueValueColumnSize(); + } + + protected void ExpandPrevalueValueColumnSize() + { + try + { + var dbContext = ApplicationContext.Current.DatabaseContext; + var colCount = + dbContext.Database.ExecuteScalar( + "SELECT COUNT(1) FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'nvarchar' AND COLUMN_NAME = 'value' AND CHARACTER_MAXIMUM_LENGTH = 2500 AND TABLE_NAME = 'cmsDataTypePreValues'"); + + // Check column + if (colCount != 0) + { + using (var trans = dbContext.Database.GetTransaction()) + { + // Change column + dbContext.Database.Execute("ALTER TABLE [cmsDataTypePreValues] ALTER COLUMN [value] ntext NULL;"); + + trans.Complete(); + } + + LogHelper.Debug(typeof(Application), "Successfully expanded Prevalue table Value column"); + } + else + { + LogHelper.Debug(typeof(Application), "Prevalue table Value column is already expanded"); + } + } + catch (Exception ex) + { + LogHelper.Error(typeof(Application), "Error expanding Prevalue table Value column", ex); + } + } + } +} \ No newline at end of file diff --git a/app/Umbraco/DatabaseSizer/DatabaseSizer.csproj b/app/Umbraco/DatabaseSizer/DatabaseSizer.csproj new file mode 100644 index 0000000..60c92b8 --- /dev/null +++ b/app/Umbraco/DatabaseSizer/DatabaseSizer.csproj @@ -0,0 +1,213 @@ + + + + + Debug + AnyCPU + {0114C963-C514-49C1-B7AB-DCB1825F498C} + Library + Properties + DatabaseSizer + DatabaseSizer + v4.5 + 512 + ..\ + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.dll + + + ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\businesslogic.dll + + + ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll + + + ..\packages\ClientDependency-Mvc.1.7.0.4\lib\ClientDependency.Core.Mvc.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\cms.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\controls.dll + + + ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\Examine.dll + + + ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll + + + ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll + + + ..\packages\ImageProcessor.1.9.0.0\lib\ImageProcessor.dll + + + ..\packages\ImageProcessor.Web.3.2.3.0\lib\net45\ImageProcessor.Web.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\interfaces.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\log4net.dll + + + ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\Microsoft.ApplicationBlocks.Data.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\Microsoft.Web.Helpers.dll + + + True + ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + ..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll + + + ..\packages\MiniProfiler.2.1.0\lib\net40\MiniProfiler.dll + + + ..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll + + + ..\packages\Newtonsoft.Json.6.0.2\lib\net45\Newtonsoft.Json.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\SQLCE4Umbraco.dll + + + + + True + ..\packages\UmbracoCms.Core.7.1.2\lib\System.Data.SqlServerCe.dll + + + True + ..\packages\UmbracoCms.Core.7.1.2\lib\System.Data.SqlServerCe.Entity.dll + + + ..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll + + + + True + ..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.Helpers.dll + + + ..\packages\Microsoft.AspNet.WebApi.Core.4.0.20710.0\lib\net40\System.Web.Http.dll + + + ..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.20710.0\lib\net40\System.Web.Http.WebHost.dll + + + True + ..\packages\Microsoft.AspNet.Mvc.4.0.20710.0\lib\net40\System.Web.Mvc.dll + + + True + ..\packages\Microsoft.AspNet.Razor.2.0.20710.0\lib\net40\System.Web.Razor.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Deployment.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Razor.dll + + + + + + + + ..\packages\UmbracoCms.Core.7.1.2\lib\TidyNet.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\Umbraco.Core.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.DataLayer.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.editorControls.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.MacroEngines.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.providers.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\Umbraco.Web.UI.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.XmlSerializers.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\UmbracoExamine.dll + + + ..\packages\UmbracoCms.Core.7.1.2\lib\UrlRewritingNet.UrlRewriter.dll + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + \ No newline at end of file diff --git a/app/Umbraco/DatabaseSizer/Properties/AssemblyInfo.cs b/app/Umbraco/DatabaseSizer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..46a4e6f --- /dev/null +++ b/app/Umbraco/DatabaseSizer/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("DatabaseSizer.cs")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("DatabaseSizer.cs")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("28dc35d2-3dfb-40b4-9093-bc47c91127ea")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/app/Umbraco/DatabaseSizer/app.config b/app/Umbraco/DatabaseSizer/app.config new file mode 100644 index 0000000..ccb9166 --- /dev/null +++ b/app/Umbraco/DatabaseSizer/app.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/Umbraco/DatabaseSizer/packages.config b/app/Umbraco/DatabaseSizer/packages.config new file mode 100644 index 0000000..3fc6851 --- /dev/null +++ b/app/Umbraco/DatabaseSizer/packages.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/Umbraco/Umbraco.Archetype.sln b/app/Umbraco/Umbraco.Archetype.sln index 88272ac..bb5fa55 100644 --- a/app/Umbraco/Umbraco.Archetype.sln +++ b/app/Umbraco/Umbraco.Archetype.sln @@ -12,6 +12,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D84AA4 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Archetype.Tests", "Archetype.Tests\Archetype.Tests.csproj", "{21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DatabaseSizer", "DatabaseSizer\DatabaseSizer.csproj", "{0114C963-C514-49C1-B7AB-DCB1825F498C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -26,6 +28,10 @@ Global {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Debug|Any CPU.Build.0 = Debug|Any CPU {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Release|Any CPU.ActiveCfg = Release|Any CPU {21F3E6CF-B76F-4059-9474-1AF1CE63CD6B}.Release|Any CPU.Build.0 = Release|Any CPU + {0114C963-C514-49C1-B7AB-DCB1825F498C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0114C963-C514-49C1-B7AB-DCB1825F498C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0114C963-C514-49C1-B7AB-DCB1825F498C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0114C963-C514-49C1-B7AB-DCB1825F498C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs index 3a03b2f..a544c3a 100644 --- a/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs +++ b/app/Umbraco/Umbraco.Archetype/Api/ArchetypeDataTypeController.cs @@ -9,7 +9,7 @@ using Umbraco.Web.Models.ContentEditing; using Umbraco.Web.Mvc; using Umbraco.Web.Editors; -namespace Archetype.Umbraco.Api +namespace Archetype.Api { [PluginController("ArchetypeApi")] public class ArchetypeDataTypeController : UmbracoAuthorizedJsonController diff --git a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj index 8153502..0288163 100644 --- a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj +++ b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj @@ -7,7 +7,7 @@ {7D185D41-4228-4978-ACB8-83F9A48AD94F} Library Properties - Archetype.Umbraco + Archetype Archetype v4.5 512 @@ -41,8 +41,7 @@ False - ..\packages\UmbracoCms.Core.7.1.1\lib\businesslogic.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\businesslogic.dll ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll @@ -53,20 +52,17 @@ False - ..\packages\UmbracoCms.Core.7.1.1\lib\cms.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\cms.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\controls.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\controls.dll ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll False - ..\packages\UmbracoCms.Core.7.1.1\lib\Examine.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\Examine.dll ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll @@ -77,32 +73,26 @@ False - ..\packages\ImageProcessor.1.8.7.0\lib\ImageProcessor.dll - False + ..\packages\ImageProcessor.1.9.0.0\lib\ImageProcessor.dll - ..\packages\ImageProcessor.Web.3.2.1.0\lib\net45\ImageProcessor.Web.dll - False + ..\packages\ImageProcessor.Web.3.2.3.0\lib\net45\ImageProcessor.Web.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\interfaces.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\interfaces.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\log4net.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\log4net.dll ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll False - ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.ApplicationBlocks.Data.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\Microsoft.ApplicationBlocks.Data.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\Microsoft.Web.Helpers.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\Microsoft.Web.Helpers.dll False @@ -125,18 +115,17 @@ False - ..\packages\UmbracoCms.Core.7.1.1\lib\SQLCE4Umbraco.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\SQLCE4Umbraco.dll - False - ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.dll + True + ..\packages\UmbracoCms.Core.7.1.2\lib\System.Data.SqlServerCe.dll - False - ..\packages\UmbracoCms.Core.7.1.1\lib\System.Data.SqlServerCe.Entity.dll + True + ..\packages\UmbracoCms.Core.7.1.2\lib\System.Data.SqlServerCe.Entity.dll @@ -183,48 +172,37 @@ - ..\packages\UmbracoCms.Core.7.1.1\lib\TidyNet.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\TidyNet.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Core.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\Umbraco.Core.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.DataLayer.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.DataLayer.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.editorControls.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.editorControls.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.MacroEngines.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.MacroEngines.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.providers.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.providers.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\Umbraco.Web.UI.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\Umbraco.Web.UI.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\umbraco.XmlSerializers.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.XmlSerializers.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\UmbracoExamine.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\UmbracoExamine.dll - ..\packages\UmbracoCms.Core.7.1.1\lib\UrlRewritingNet.UrlRewriter.dll - False + ..\packages\UmbracoCms.Core.7.1.2\lib\UrlRewritingNet.UrlRewriter.dll diff --git a/app/Umbraco/Umbraco.Archetype/Constants.cs b/app/Umbraco/Umbraco.Archetype/Constants.cs index 83d036b..f8e6b50 100644 --- a/app/Umbraco/Umbraco.Archetype/Constants.cs +++ b/app/Umbraco/Umbraco.Archetype/Constants.cs @@ -1,4 +1,4 @@ -namespace Archetype.Umbraco +namespace Archetype { public static class Constants { diff --git a/app/Umbraco/Umbraco.Archetype/Events/ExpireCache.cs b/app/Umbraco/Umbraco.Archetype/Events/ExpireCache.cs index 3db68df..792165b 100644 --- a/app/Umbraco/Umbraco.Archetype/Events/ExpireCache.cs +++ b/app/Umbraco/Umbraco.Archetype/Events/ExpireCache.cs @@ -8,7 +8,7 @@ using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Web; -namespace Archetype.Umbraco.Events +namespace Archetype.Events { public class ExpireCache : ApplicationEventHandler { diff --git a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs index 0c84f85..1db4ea6 100644 --- a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs +++ b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs @@ -5,7 +5,7 @@ using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Models; -namespace Archetype.Umbraco.Extensions +namespace Archetype.Extensions { public class ArchetypeHelper { diff --git a/app/Umbraco/Umbraco.Archetype/Extensions/Extensions.cs b/app/Umbraco/Umbraco.Archetype/Extensions/Extensions.cs index d0f38a5..a8fcf78 100644 --- a/app/Umbraco/Umbraco.Archetype/Extensions/Extensions.cs +++ b/app/Umbraco/Umbraco.Archetype/Extensions/Extensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Web; using System.Text; using System.Text.RegularExpressions; @@ -7,7 +7,7 @@ using Umbraco.Core; using Umbraco.Web; using Archetype.Models; -namespace Archetype.Umbraco.Extensions +namespace Archetype.Extensions { public static class Extensions { diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeFieldsetModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeFieldsetModel.cs index 6a0a26a..e25982a 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeFieldsetModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeFieldsetModel.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using Umbraco.Core; @@ -16,7 +16,6 @@ namespace Archetype.Models public ArchetypeFieldsetModel() { Properties = new List(); - } #region Helper Methods diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueProperty.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueProperty.cs index 8217644..d5c4b49 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueProperty.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueProperty.cs @@ -31,5 +31,8 @@ namespace Archetype.Models [JsonProperty("required")] public bool Required { get; set; } + + [JsonProperty("regEx")] + public bool RegEx { get; set; } } } \ No newline at end of file diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs index 66e6e3c..6f6f9d0 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using Umbraco.Core; @@ -10,7 +10,6 @@ using Umbraco.Web; namespace Archetype.Models { public class ArchetypePropertyModel - { [JsonProperty("alias")] public string Alias { get; internal set; } diff --git a/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs b/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs index 8fe131c..96b59c3 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs @@ -1,7 +1,7 @@ -using System; +using System; using System.Collections.Generic; -using System.Linq; -using Archetype.Umbraco.Extensions; +using System.Linq; +using Archetype.Extensions; using Archetype.Models; using Newtonsoft.Json; using Umbraco.Core; @@ -9,8 +9,8 @@ using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; - -namespace Archetype.Umbraco.PropertyConverters + +namespace Archetype.PropertyConverters { [PropertyValueType(typeof(Models.ArchetypeModel))] [PropertyValueCache(PropertyCacheValue.All, PropertyCacheLevel.Content)] diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index 3192130..9877119 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Archetype.Umbraco.Extensions; +using Archetype.Extensions; using ClientDependency.Core; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -13,7 +13,7 @@ using Umbraco.Core.Services; using Umbraco.Web.PropertyEditors; using Umbraco.Core.Logging; -namespace Archetype.Umbraco.PropertyEditors +namespace Archetype.PropertyEditors { [PropertyEditorAsset(ClientDependencyType.Javascript, "/App_Plugins/Archetype/js/archetype.js")] [PropertyEditor("Imulus.Archetype", "Archetype", "/App_Plugins/Archetype/views/archetype.html", diff --git a/app/Umbraco/Umbraco.Archetype/packages.config b/app/Umbraco/Umbraco.Archetype/packages.config index d006ee4..8da9da0 100644 --- a/app/Umbraco/Umbraco.Archetype/packages.config +++ b/app/Umbraco/Umbraco.Archetype/packages.config @@ -4,8 +4,8 @@ - - + + @@ -21,6 +21,6 @@ - + \ No newline at end of file diff --git a/app/controllers/controller.js b/app/controllers/controller.js index c6c35f9..b70426a 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -4,7 +4,7 @@ $scope.model.hideLabel = $scope.model.config.hideLabel == 1; //get a reference to the current form - var form = angularHelper.getCurrentForm($scope); + $scope.form = $scope.form || angularHelper.getCurrentForm($scope); //set the config equal to our prevalue config $scope.model.config = $scope.model.config.archetypeConfig; @@ -43,7 +43,7 @@ cursor: "move", handle: ".handle", update: function (ev, ui) { - + $scope.setDirty(); }, stop: function (ev, ui) { @@ -67,6 +67,7 @@ $scope.model.value.fieldsets.push(newFieldset); } } + $scope.setDirty(); newFieldset.collapse = $scope.model.config.enableCollapsing ? true : false; $scope.focusFieldset(newFieldset); @@ -76,6 +77,7 @@ $scope.removeRow = function ($index) { if ($scope.canRemove()) { if (confirm('Are you sure you want to remove this?')) { + $scope.setDirty(); $scope.model.value.fieldsets.splice($index, 1); } } @@ -261,6 +263,13 @@ return (typeof property == 'undefined') ? true : property.isValid; } + // helper to force the current form into the dirty state + $scope.setDirty = function () { + if($scope.form) { + $scope.form.$setDirty(); + } + } + //custom js if ($scope.model.config.customJsPath) { assetsService.loadJs($scope.model.config.customJsPath); diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index 2433e5f..3579bd6 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -97,10 +97,22 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c property.isValid = true; var propertyConfig = getPropertyByAlias(configFieldsetModel, property.alias); - if(propertyConfig && propertyConfig.required && (property.value == null || property.value === "")){ - fieldset.isValid = false; - property.isValid = false; - valid = false; + if (propertyConfig) { + if(propertyConfig.required && (property.value == null || property.value === "")) { + fieldset.isValid = false; + property.isValid = false; + valid = false; + } + // issue 116: RegEx validate property value + // Only validate the property value if anything has been entered - RegEx is considered a supplement to "required". + if (valid == true && propertyConfig.regEx && property.value) { + var regEx = new RegExp(propertyConfig.regEx); + if (regEx.test(property.value) == false) { + fieldset.isValid = false; + property.isValid = false; + valid = false; + } + } } }); }); @@ -121,6 +133,7 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c } //define the initial model and config + scope.form = scope.umbracoForm; scope.model = {}; scope.model.config = {}; @@ -144,8 +157,11 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c scope.$watch('model.value', function (newValue, oldValue) { scope.archetypeRenderModel.fieldsets[scope.fieldsetIndex].properties[renderModelPropertyIndex].value = newValue; - //trigger the validation pipeline - ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue); + // don't set the current value twice - this will keep Umbraco from prompting to discard changes immediately after saving + if (newValue != oldValue) { + //trigger the validation pipeline + ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue); + } }); element.html(data).show(); @@ -173,7 +189,8 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c fieldset: '=', fieldsetIndex: '=', archetypeRenderModel: '=', - umbracoPropertyAlias: '=' + umbracoPropertyAlias: '=', + umbracoForm: '=' } } }); \ No newline at end of file diff --git a/app/langs/da-dk.js b/app/langs/da-dk.js index 923133f..2203673 100644 --- a/app/langs/da-dk.js +++ b/app/langs/da-dk.js @@ -27,6 +27,7 @@ "defaultValue": "Standard værdi", "dataType": "Datatype", "required": "Påkrævet", + "regEx": "RegEx validering", "properties": "Egenskaber", "labelTemplate": "Label skabelon", "select": "Vælg", diff --git a/app/langs/de-de.js b/app/langs/de-de.js index 7446d25..00aaaf6 100644 --- a/app/langs/de-de.js +++ b/app/langs/de-de.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/en-gb.js b/app/langs/en-gb.js index 7f0fe80..404398f 100644 --- a/app/langs/en-gb.js +++ b/app/langs/en-gb.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/en-us.js b/app/langs/en-us.js index 7446d25..00aaaf6 100644 --- a/app/langs/en-us.js +++ b/app/langs/en-us.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/es-es.js b/app/langs/es-es.js index 7446d25..00aaaf6 100644 --- a/app/langs/es-es.js +++ b/app/langs/es-es.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/fr-fr.js b/app/langs/fr-fr.js index 7446d25..00aaaf6 100644 --- a/app/langs/fr-fr.js +++ b/app/langs/fr-fr.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/he-il.js b/app/langs/he-il.js index 7446d25..00aaaf6 100644 --- a/app/langs/he-il.js +++ b/app/langs/he-il.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/it-it.js b/app/langs/it-it.js index 7446d25..00aaaf6 100644 --- a/app/langs/it-it.js +++ b/app/langs/it-it.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/ja-jp.js b/app/langs/ja-jp.js index 7446d25..00aaaf6 100644 --- a/app/langs/ja-jp.js +++ b/app/langs/ja-jp.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/ko-kr.js b/app/langs/ko-kr.js index 7446d25..00aaaf6 100644 --- a/app/langs/ko-kr.js +++ b/app/langs/ko-kr.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/nb-no.js b/app/langs/nb-no.js index 7446d25..00aaaf6 100644 --- a/app/langs/nb-no.js +++ b/app/langs/nb-no.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/nl-nl.js b/app/langs/nl-nl.js index 7446d25..00aaaf6 100644 --- a/app/langs/nl-nl.js +++ b/app/langs/nl-nl.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/pl-pl.js b/app/langs/pl-pl.js index 7446d25..00aaaf6 100644 --- a/app/langs/pl-pl.js +++ b/app/langs/pl-pl.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/pt-br.js b/app/langs/pt-br.js index 7446d25..00aaaf6 100644 --- a/app/langs/pt-br.js +++ b/app/langs/pt-br.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/ru-ru.js b/app/langs/ru-ru.js index 7446d25..00aaaf6 100644 --- a/app/langs/ru-ru.js +++ b/app/langs/ru-ru.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/sv-se.js b/app/langs/sv-se.js index 7446d25..00aaaf6 100644 --- a/app/langs/sv-se.js +++ b/app/langs/sv-se.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/zh-cn.js b/app/langs/zh-cn.js index 7446d25..00aaaf6 100644 --- a/app/langs/zh-cn.js +++ b/app/langs/zh-cn.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index 5f769b1..cebb76c 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -64,6 +64,10 @@ +
+ + +
diff --git a/app/views/archetype.html b/app/views/archetype.html index 6cf11d0..6efdb32 100644 --- a/app/views/archetype.html +++ b/app/views/archetype.html @@ -37,7 +37,7 @@
- +