diff --git a/src/Umbraco.Core/Models/ContentBase.cs b/src/Umbraco.Core/Models/ContentBase.cs
index cc5cfcdee5..738a896155 100644
--- a/src/Umbraco.Core/Models/ContentBase.cs
+++ b/src/Umbraco.Core/Models/ContentBase.cs
@@ -293,7 +293,10 @@ namespace Umbraco.Core.Models
/// Value as a
public virtual TPassType GetValue(string propertyTypeAlias)
{
- return (TPassType)Properties[propertyTypeAlias].Value;
+ if (Properties[propertyTypeAlias].Value is TPassType)
+ return (TPassType)Properties[propertyTypeAlias].Value;
+
+ return (TPassType)Convert.ChangeType(Properties[propertyTypeAlias].Value, typeof(TPassType));
}
///
diff --git a/src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs b/src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs
index 7fc81b1db7..b50102396a 100644
--- a/src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs
+++ b/src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs
@@ -223,8 +223,6 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 4, DataTypeId = -88, ControlId = new Guid(Constants.PropertyEditors.Textbox), DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 5, DataTypeId = -89, ControlId = new Guid(Constants.PropertyEditors.TextboxMultiple), DbType = "Ntext" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 6, DataTypeId = -90, ControlId = new Guid(Constants.PropertyEditors.UploadField), DbType = "Nvarchar" });
- //Dropdown list
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 12, DataTypeId = -91, ControlId = new Guid("a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6"), DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 7, DataTypeId = -92, ControlId = new Guid(Constants.PropertyEditors.NoEdit), DbType = "Nvarchar" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 8, DataTypeId = -36, ControlId = new Guid(Constants.PropertyEditors.DateTime), DbType = "Date" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 9, DataTypeId = -37, ControlId = new Guid(Constants.PropertyEditors.ColorPicker), DbType = "Nvarchar" });
@@ -234,24 +232,6 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 13, DataTypeId = -41, ControlId = new Guid(Constants.PropertyEditors.Date), DbType = "Date" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 14, DataTypeId = -42, ControlId = new Guid(Constants.PropertyEditors.DropDownList), DbType = "Integer" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 15, DataTypeId = -43, ControlId = new Guid(Constants.PropertyEditors.CheckBoxList), DbType = "Nvarchar" });
- // Fix for rich text editor backwards compatibility -> 83722133-f80c-4273-bdb6-1befaa04a612 TinyMCE DataType
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 22, DataTypeId = -44, ControlId = new Guid("a3776494-0574-4d93-b7de-efdfdec6f2d1"), DbType = "Ntext" });
- //Radiobutton list
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 23, DataTypeId = -128, ControlId = new Guid("a52c7c1c-c330-476e-8605-d63d3b84b6a6"), DbType = "Nvarchar" });
- //Dropdown list multiple
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 24, DataTypeId = -129, ControlId = new Guid("928639ed-9c73-4028-920c-1e55dbb68783"), DbType = "Nvarchar" });
- //Dropdown list
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 25, DataTypeId = -130, ControlId = new Guid("a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6"), DbType = "Nvarchar" });
- //Dropdown list
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 26, DataTypeId = -131, ControlId = new Guid("a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6"), DbType = "Nvarchar" });
- //Dropdown list
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 27, DataTypeId = -132, ControlId = new Guid("a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6"), DbType = "Nvarchar" });
- //No edit
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 28, DataTypeId = -133, ControlId = new Guid("6c738306-4c17-4d88-b9bd-6546f3771597"), DbType = "Ntext" });
- //Dropdown list multiple
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 29, DataTypeId = -134, ControlId = new Guid("928639ed-9c73-4028-920c-1e55dbb68783"), DbType = "Nvarchar" });
- //Not found - maybe a legacy thing?
- //_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 30, DataTypeId = -50, ControlId = new Guid("aaf99bb2-dbbe-444d-a296-185076bf0484"), DbType = "Date" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 16, DataTypeId = 1034, ControlId = new Guid(Constants.PropertyEditors.ContentPicker), DbType = "Integer" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 17, DataTypeId = 1035, ControlId = new Guid(Constants.PropertyEditors.MediaPicker), DbType = "Integer" });
_database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 18, DataTypeId = 1036, ControlId = new Guid(Constants.PropertyEditors.MemberPicker), DbType = "Integer" });
diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs
index b087d42827..706322b81d 100644
--- a/src/Umbraco.Tests/Services/ContentServiceTests.cs
+++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs
@@ -813,6 +813,48 @@ namespace Umbraco.Tests.Services
Assert.That(hasPublishedVersion, Is.True);
}
+ [Test]
+ public void Can_Verify_Property_Types_On_Content()
+ {
+ // Arrange
+ var contentTypeService = ServiceContext.ContentTypeService;
+ var contentType = MockedContentTypes.CreateAllTypesContentType("allDataTypes", "All DataTypes");
+ contentTypeService.Save(contentType);
+ var contentService = ServiceContext.ContentService;
+ var content = MockedContent.CreateAllTypesContent(contentType, "Random Content", -1);
+ contentService.Save(content);
+ var id = content.Id;
+
+ // Act
+ var sut = contentService.GetById(id);
+
+ // Arrange
+ Assert.That(sut.GetValue("isTrue"), Is.True);
+ Assert.That(sut.GetValue("number"), Is.EqualTo(42));
+ Assert.That(sut.GetValue("bodyText"), Is.EqualTo("Lorem Ipsum Body Text Test"));
+ Assert.That(sut.GetValue("singleLineText"), Is.EqualTo("Single Line Text Test"));
+ Assert.That(sut.GetValue("multilineText"), Is.EqualTo("Multiple lines \n in one box"));
+ Assert.That(sut.GetValue("upload"), Is.EqualTo("/media/1234/koala.jpg"));
+ Assert.That(sut.GetValue("label"), Is.EqualTo("Non-editable label"));
+ Assert.That(sut.GetValue("dateTime"), Is.EqualTo(content.GetValue("dateTime")));
+ Assert.That(sut.GetValue("colorPicker"), Is.EqualTo("black"));
+ Assert.That(sut.GetValue("folderBrowser"), Is.Empty);
+ Assert.That(sut.GetValue("ddlMultiple"), Is.EqualTo("1234,1235"));
+ Assert.That(sut.GetValue("rbList"), Is.EqualTo("random"));
+ Assert.That(sut.GetValue("date"), Is.EqualTo(content.GetValue("date")));
+ Assert.That(sut.GetValue("ddl"), Is.EqualTo("1234"));
+ Assert.That(sut.GetValue("chklist"), Is.EqualTo("randomc"));
+ Assert.That(sut.GetValue("contentPicker"), Is.EqualTo(1090));
+ Assert.That(sut.GetValue("mediaPicker"), Is.EqualTo(1091));
+ Assert.That(sut.GetValue("memberPicker"), Is.EqualTo(1092));
+ Assert.That(sut.GetValue("simpleEditor"), Is.EqualTo("This is simply edited"));
+ Assert.That(sut.GetValue("ultimatePicker"), Is.EqualTo("1234,1235"));
+ Assert.That(sut.GetValue("relatedLinks"), Is.EqualTo(""));
+ Assert.That(sut.GetValue("tags"), Is.EqualTo("this,is,tags"));
+ Assert.That(sut.GetValue("macroContainer"), Is.Empty);
+ Assert.That(sut.GetValue("imgCropper"), Is.Empty);
+ }
+
private IEnumerable CreateContentHierarchy()
{
var contentType = ServiceContext.ContentTypeService.GetContentType("umbTextpage");
diff --git a/src/Umbraco.Tests/TestHelpers/Entities/MockedContent.cs b/src/Umbraco.Tests/TestHelpers/Entities/MockedContent.cs
index 02929dcc76..529421725c 100644
--- a/src/Umbraco.Tests/TestHelpers/Entities/MockedContent.cs
+++ b/src/Umbraco.Tests/TestHelpers/Entities/MockedContent.cs
@@ -79,6 +79,38 @@ namespace Umbraco.Tests.TestHelpers.Entities
return content;
}
+ public static Content CreateAllTypesContent(IContentType contentType, string name, int parentId)
+ {
+ var content = new Content("Random Content Name", parentId, contentType) { Language = "en-US", Level = 1, SortOrder = 1, CreatorId = 0, WriterId = 0 };
+
+ content.SetValue("isTrue", true);
+ content.SetValue("number", 42);
+ content.SetValue("bodyText", "Lorem Ipsum Body Text Test");
+ content.SetValue("singleLineText", "Single Line Text Test");
+ content.SetValue("multilineText", "Multiple lines \n in one box");
+ content.SetValue("upload", "/media/1234/koala.jpg");
+ content.SetValue("label", "Non-editable label");
+ content.SetValue("dateTime", DateTime.Now.AddDays(-20));
+ content.SetValue("colorPicker", "black");
+ content.SetValue("folderBrowser", "");
+ content.SetValue("ddlMultiple", "1234,1235");
+ content.SetValue("rbList", "random");
+ content.SetValue("date", DateTime.Now.AddDays(-10));
+ content.SetValue("ddl", "1234");
+ content.SetValue("chklist", "randomc");
+ content.SetValue("contentPicker", 1090);
+ content.SetValue("mediaPicker", 1091);
+ content.SetValue("memberPicker", 1092);
+ content.SetValue("simpleEditor", "This is simply edited");
+ content.SetValue("ultimatePicker", "1234,1235");
+ content.SetValue("relatedLinks", "");
+ content.SetValue("tags", "this,is,tags");
+ content.SetValue("macroContainer", "");
+ content.SetValue("imgCropper", "");
+
+ return content;
+ }
+
public static IEnumerable CreateTextpageContent(IContentType contentType, int parentId, int amount)
{
var list = new List();
diff --git a/src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs b/src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs
index 131e02dad1..f3f09e5fae 100644
--- a/src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs
+++ b/src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs
@@ -166,6 +166,51 @@ namespace Umbraco.Tests.TestHelpers.Entities
return contentType;
}
+ public static ContentType CreateAllTypesContentType(string alias, string name)
+ {
+ var contentType = new ContentType(-1)
+ {
+ Alias = alias,
+ Name = name,
+ Description = "ContentType containing all standard DataTypes",
+ Icon = ".sprTreeDoc3",
+ Thumbnail = "doc.png",
+ SortOrder = 1,
+ CreatorId = 0,
+ Trashed = false
+ };
+
+ var contentCollection = new PropertyTypeCollection();
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.TrueFalse), DataTypeDatabaseType.Integer) { Alias = "isTrue", Name = "Is True or False", Mandatory = false, SortOrder = 1, DataTypeDefinitionId = -49 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.Integer), DataTypeDatabaseType.Integer) { Alias = "number", Name = "Number", Mandatory = false, SortOrder = 2, DataTypeDefinitionId = -51 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.TinyMCEv3), DataTypeDatabaseType.Ntext) { Alias = "bodyText", Name = "Body Text", Mandatory = false, SortOrder = 3, DataTypeDefinitionId = -87 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.Textbox), DataTypeDatabaseType.Nvarchar) { Alias = "singleLineText", Name = "Text String", Mandatory = false, SortOrder = 4, DataTypeDefinitionId = -88 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.TextboxMultiple), DataTypeDatabaseType.Ntext) { Alias = "multilineText", Name = "Multiple Text Strings", Mandatory = false, SortOrder = 5, DataTypeDefinitionId = -89 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.UploadField), DataTypeDatabaseType.Nvarchar) { Alias = "upload", Name = "Upload Field", Mandatory = false, SortOrder = 6, DataTypeDefinitionId = -90 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.NoEdit), DataTypeDatabaseType.Nvarchar) { Alias = "label", Name = "Label", Mandatory = false, SortOrder = 7, DataTypeDefinitionId = -92 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.DateTime), DataTypeDatabaseType.Date) { Alias = "dateTime", Name = "Date Time", Mandatory = false, SortOrder = 8, DataTypeDefinitionId = -36 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.ColorPicker), DataTypeDatabaseType.Nvarchar) { Alias = "colorPicker", Name = "Color Picker", Mandatory = false, SortOrder = 9, DataTypeDefinitionId = -37 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.FolderBrowser), DataTypeDatabaseType.Nvarchar) { Alias = "folderBrowser", Name = "Folder Browser", Mandatory = false, SortOrder = 10, DataTypeDefinitionId = -38 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.DropDownListMultiple), DataTypeDatabaseType.Nvarchar) { Alias = "ddlMultiple", Name = "Dropdown List Multiple", Mandatory = false, SortOrder = 11, DataTypeDefinitionId = -39 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.RadioButtonList), DataTypeDatabaseType.Nvarchar) { Alias = "rbList", Name = "Radio Button List", Mandatory = false, SortOrder = 12, DataTypeDefinitionId = -40 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.Date), DataTypeDatabaseType.Date) { Alias = "date", Name = "Date", Mandatory = false, SortOrder = 13, DataTypeDefinitionId = -41 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.DropDownList), DataTypeDatabaseType.Integer) { Alias = "ddl", Name = "Dropdown List", Mandatory = false, SortOrder = 14, DataTypeDefinitionId = -42 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.CheckBoxList), DataTypeDatabaseType.Nvarchar) { Alias = "chklist", Name = "Checkbox List", Mandatory = false, SortOrder = 15, DataTypeDefinitionId = -43 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.ContentPicker), DataTypeDatabaseType.Integer) { Alias = "contentPicker", Name = "Content Picker", Mandatory = false, SortOrder = 16, DataTypeDefinitionId = 1034 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.MediaPicker), DataTypeDatabaseType.Integer) { Alias = "mediaPicker", Name = "Media Picker", Mandatory = false, SortOrder = 17, DataTypeDefinitionId = 1035 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.MemberPicker), DataTypeDatabaseType.Integer) { Alias = "memberPicker", Name = "Member Picker", Mandatory = false, SortOrder = 18, DataTypeDefinitionId = 1036 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.UltraSimpleEditor), DataTypeDatabaseType.Ntext) { Alias = "simpleEditor", Name = "Ultra Simple Editor", Mandatory = false, SortOrder = 19, DataTypeDefinitionId = 1038 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.UltimatePicker), DataTypeDatabaseType.Ntext) { Alias = "ultimatePicker", Name = "Ultimate Picker", Mandatory = false, SortOrder = 20, DataTypeDefinitionId = 1039 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.RelatedLinks), DataTypeDatabaseType.Ntext) { Alias = "relatedLinks", Name = "Related Links", Mandatory = false, SortOrder = 21, DataTypeDefinitionId = 1040 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.Tags), DataTypeDatabaseType.Ntext) { Alias = "tags", Name = "Tags", Mandatory = false, SortOrder = 22, DataTypeDefinitionId = 1041 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.MacroContainer), DataTypeDatabaseType.Ntext) { Alias = "macroContainer", Name = "Macro Container", Mandatory = false, SortOrder = 23, DataTypeDefinitionId = 1042 });
+ contentCollection.Add(new PropertyType(new Guid(Constants.PropertyEditors.ImageCropper), DataTypeDatabaseType.Ntext) { Alias = "imgCropper", Name = "Image Cropper", Mandatory = false, SortOrder = 24, DataTypeDefinitionId = 1043 });
+
+ contentType.PropertyGroups.Add(new PropertyGroup(contentCollection) { Name = "Content", SortOrder = 1 });
+
+ return contentType;
+ }
+
public static MediaType CreateVideoMediaType()
{
var mediaType = new MediaType(-1)
diff --git a/src/umbraco.editorControls/BaseTreePickerEditor.cs b/src/umbraco.editorControls/BaseTreePickerEditor.cs
index 0984a2375b..9908d07e46 100644
--- a/src/umbraco.editorControls/BaseTreePickerEditor.cs
+++ b/src/umbraco.editorControls/BaseTreePickerEditor.cs
@@ -106,7 +106,7 @@ namespace umbraco.editorControls
public void Save()
{
if (ItemIdValue.Value.Trim() != "")
- _data.Value = ItemIdValue.Value.Trim();
+ _data.Value = int.Parse(ItemIdValue.Value.Trim());
else
_data.Value = null;
}