diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs
index f9a7b674a..e4b00a464 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs
@@ -68,9 +68,7 @@ namespace Orchard.Blogs {
ContentDefinitionManager.AlterTypeDefinition("RecentBlogPosts",
cfg => cfg
.WithPart("RecentBlogPostsPart")
- .WithPart("CommonPart")
- .WithPart("WidgetPart")
- .WithSetting("Stereotype", "Widget")
+ .AsWidgetWithIdentity()
);
ContentDefinitionManager.AlterPartDefinition("BlogArchivesPart", part => part
@@ -134,6 +132,11 @@ namespace Orchard.Blogs {
}
public int UpdateFrom6() {
+ ContentDefinitionManager.AlterTypeDefinition("RecentBlogPosts",
+ cfg => cfg
+ .WithPart("IdentityPart")
+ );
+
ContentDefinitionManager.AlterTypeDefinition("BlogArchives",
cfg => cfg
.WithPart("IdentityPart")
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj
index 8eabc5568..31f5295d6 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj
@@ -167,6 +167,10 @@
{f301ef7d-f19c-4d83-aa94-cb64f29c037d}
Orchard.ContentPicker
+
+ {194d3ccc-1153-474d-8176-fde8d7d0d0bd}
+ Orchard.Widgets
+
diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Migrations.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Migrations.cs
index 16acf01e1..cc20cd75a 100644
--- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Migrations.cs
+++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Migrations.cs
@@ -56,15 +56,14 @@ namespace Orchard.DynamicForms {
.Draftable());
ContentDefinitionManager.AlterTypeDefinition("FormWidget", type => type
+ .AsWidgetWithIdentity()
+ .WithPart("LayoutPart", p => p
+ .WithSetting("LayoutTypePartSettings.DefaultLayoutData", DefaultFormLayoutData))
.WithPart("CommonPart", p => p
.WithSetting("OwnerEditorSettings.ShowOwnerEditor", "false")
.WithSetting("DateEditorSettings.ShowDateEditor", "false"))
- .WithPart("WidgetPart")
- .WithPart("LayoutPart", p => p
- .WithSetting("LayoutTypePartSettings.DefaultLayoutData", DefaultFormLayoutData))
- .WithSetting("Stereotype", "Widget")
.DisplayedAs("Form Widget"));
- return 2;
+ return 3;
}
public int UpdateFrom1() {
@@ -107,6 +106,13 @@ namespace Orchard.DynamicForms {
return 2;
}
+ public int UpdateFrom2() {
+ ContentDefinitionManager.AlterTypeDefinition("FormWidget", type => type
+ .WithPart("IdentityPart"));
+
+ return 3;
+ }
+
private byte[] GetMD5(string text) {
byte[] encodedText = System.Text.Encoding.UTF8.GetBytes(text);
return ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(encodedText);
diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Orchard.DynamicForms.csproj b/src/Orchard.Web/Modules/Orchard.DynamicForms/Orchard.DynamicForms.csproj
index f81446fb4..31d0071b5 100644
--- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Orchard.DynamicForms.csproj
+++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Orchard.DynamicForms.csproj
@@ -154,6 +154,10 @@
{79aed36e-abd0-4747-93d3-8722b042454b}
Orchard.Users
+
+ {194d3ccc-1153-474d-8176-fde8d7d0d0bd}
+ Orchard.Widgets
+
{7059493c-8251-4764-9c1e-2368b8b485bc}
Orchard.Workflows
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Extensions/MetaDataExtensions.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Extensions/MetaDataExtensions.cs
new file mode 100644
index 000000000..154150808
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Extensions/MetaDataExtensions.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using Orchard.ContentManagement.MetaData.Builders;
+
+namespace Orchard.ContentManagement.MetaData {
+ public static class MetaDataExtensions {
+ ///
+ /// This extension method can be used for easy image part creation. Adds all necessary parts and settings to the part.
+ ///
+ public static ContentTypeDefinitionBuilder AsImage(this ContentTypeDefinitionBuilder builder) {
+ return builder
+ .AsMedia()
+ .WithPart("ImagePart");
+ }
+
+ ///
+ /// This extension method can be used for easy vector image part creation. Adds all necessary parts and settings to the part.
+ ///
+ public static ContentTypeDefinitionBuilder AsVectorImage(this ContentTypeDefinitionBuilder builder) {
+ return builder
+ .AsMedia()
+ .WithPart("VectorImagePart");
+ }
+
+ ///
+ /// This extension method can be used for easy audio part creation. Adds all necessary parts and settings to the part.
+ ///
+ public static ContentTypeDefinitionBuilder AsAudio(this ContentTypeDefinitionBuilder builder) {
+ return builder
+ .AsMedia()
+ .WithPart("AudioPart");
+ }
+
+ ///
+ /// This extension method can be used for video image part creation. Adds all necessary parts and settings to the part.
+ ///
+ public static ContentTypeDefinitionBuilder AsVideo(this ContentTypeDefinitionBuilder builder) {
+ return builder
+ .AsMedia()
+ .WithPart("VideoPart");
+ }
+
+ ///
+ /// This extension method can be used for easy document part creation. Adds all necessary parts and settings to the part.
+ ///
+ public static ContentTypeDefinitionBuilder AsDocument(this ContentTypeDefinitionBuilder builder) {
+ return builder
+ .AsMedia()
+ .WithPart("DocumentPart");
+ }
+
+ ///
+ /// This extension method can be used for easy media part creation. Adds all necessary parts and settings to the part.
+ ///
+ public static ContentTypeDefinitionBuilder AsMedia(this ContentTypeDefinitionBuilder builder) {
+ return builder
+ .WithSetting("Stereotype", "Media")
+ .WithPart("CommonPart")
+ .WithPart("MediaPart")
+ .WithPart("TitlePart");
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Migrations.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Migrations.cs
index f231d8125..8a6be0d4c 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Migrations.cs
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Migrations.cs
@@ -57,57 +57,37 @@ namespace Orchard.MediaLibrary {
ContentDefinitionManager.AlterTypeDefinition("Image", td => td
.DisplayedAs("Image")
- .WithSetting("Stereotype", "Media")
.WithSetting("MediaFileNameEditorSettings.ShowFileNameEditor", "True")
+ .AsImage()
.WithPart("IdentityPart")
- .WithPart("CommonPart")
- .WithPart("MediaPart")
- .WithPart("ImagePart")
- .WithPart("TitlePart")
);
ContentDefinitionManager.AlterTypeDefinition("VectorImage", td => td
.DisplayedAs("Vector Image")
- .WithSetting("Stereotype", "Media")
.WithSetting("MediaFileNameEditorSettings.ShowFileNameEditor", "True")
+ .AsVectorImage()
.WithPart("IdentityPart")
- .WithPart("CommonPart")
- .WithPart("MediaPart")
- .WithPart("VectorImagePart")
- .WithPart("TitlePart")
);
ContentDefinitionManager.AlterTypeDefinition("Video", td => td
.DisplayedAs("Video")
- .WithSetting("Stereotype", "Media")
.WithSetting("MediaFileNameEditorSettings.ShowFileNameEditor", "True")
+ .AsVideo()
.WithPart("IdentityPart")
- .WithPart("CommonPart")
- .WithPart("MediaPart")
- .WithPart("VideoPart")
- .WithPart("TitlePart")
);
ContentDefinitionManager.AlterTypeDefinition("Audio", td => td
.DisplayedAs("Audio")
- .WithSetting("Stereotype", "Media")
.WithSetting("MediaFileNameEditorSettings.ShowFileNameEditor", "True")
+ .AsAudio()
.WithPart("IdentityPart")
- .WithPart("CommonPart")
- .WithPart("MediaPart")
- .WithPart("AudioPart")
- .WithPart("TitlePart")
);
ContentDefinitionManager.AlterTypeDefinition("Document", td => td
.DisplayedAs("Document")
- .WithSetting("Stereotype", "Media")
.WithSetting("MediaFileNameEditorSettings.ShowFileNameEditor", "True")
+ .AsDocument()
.WithPart("IdentityPart")
- .WithPart("CommonPart")
- .WithPart("MediaPart")
- .WithPart("DocumentPart")
- .WithPart("TitlePart")
);
ContentDefinitionManager.AlterTypeDefinition("OEmbed", td => td
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj
index 788aa1a3a..dac14d392 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj
@@ -101,6 +101,7 @@
+
diff --git a/src/Orchard.Web/Modules/Orchard.Search/Migrations.cs b/src/Orchard.Web/Modules/Orchard.Search/Migrations.cs
index a8634d9a5..abd815677 100644
--- a/src/Orchard.Web/Modules/Orchard.Search/Migrations.cs
+++ b/src/Orchard.Web/Modules/Orchard.Search/Migrations.cs
@@ -11,10 +11,7 @@ namespace Orchard.Search {
ContentDefinitionManager.AlterTypeDefinition("SearchForm",
cfg => cfg
.WithPart("SearchFormPart")
- .WithPart("CommonPart")
- .WithPart("WidgetPart")
- .WithPart("IdentityPart")
- .WithSetting("Stereotype", "Widget")
+ .AsWidgetWithIdentity()
);
return 3;
diff --git a/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj b/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj
index c001741b9..17359f424 100644
--- a/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj
@@ -105,6 +105,10 @@
{73a7688a-5bd3-4f7e-adfa-ce36c5a10e3b}
Orchard.MediaLibrary
+
+ {194d3ccc-1153-474d-8176-fde8d7d0d0bd}
+ Orchard.Widgets
+
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Migrations.cs b/src/Orchard.Web/Modules/Orchard.Tags/Migrations.cs
index 9cbbf25f7..a14a0fd54 100644
--- a/src/Orchard.Web/Modules/Orchard.Tags/Migrations.cs
+++ b/src/Orchard.Web/Modules/Orchard.Tags/Migrations.cs
@@ -47,9 +47,7 @@ namespace Orchard.Tags {
"TagCloud",
cfg => cfg
.WithPart("TagCloudPart")
- .WithPart("CommonPart")
- .WithPart("WidgetPart")
- .WithSetting("Stereotype", "Widget")
+ .AsWidget()
);
return 1;
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj b/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj
index c49663fbf..d2ebbd3ba 100644
--- a/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj
@@ -135,6 +135,10 @@
{66FCCD76-2761-47E3-8D11-B45D0001DDAA}
Orchard.Autoroute
+
+ {194d3ccc-1153-474d-8176-fde8d7d0d0bd}
+ Orchard.Widgets
+
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Extensions/MetaDataExtensions.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Extensions/MetaDataExtensions.cs
new file mode 100644
index 000000000..720ace53a
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Extensions/MetaDataExtensions.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using Orchard.ContentManagement.MetaData.Builders;
+
+namespace Orchard.ContentManagement.MetaData {
+ public static class MetaDataExtensions {
+ ///
+ /// This extension method can be used for easy widget creation. Adds all necessary parts and settings to the part.
+ ///
+ /// The ContentTypeDefinitionBuilder object on which this method is called.
+ public static ContentTypeDefinitionBuilder AsWidget(this ContentTypeDefinitionBuilder builder) {
+ return builder
+ .WithPart("CommonPart")
+ .WithPart("WidgetPart")
+ .WithSetting("Stereotype", "Widget");
+ }
+
+ ///
+ /// This extension method can be used for easy widget creation. Adds all necessary parts and settings to the part. And adds IdentityPart too.
+ ///
+ /// The ContentTypeDefinitionBuilder object on which this method is called.
+ public static ContentTypeDefinitionBuilder AsWidgetWithIdentity(this ContentTypeDefinitionBuilder builder) {
+ return builder
+ .WithPart("CommonPart")
+ .WithPart("WidgetPart")
+ .WithPart("IdentityPart")
+ .WithSetting("Stereotype", "Widget");
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Migrations.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Migrations.cs
index acf0be706..c1f2b91b0 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Migrations.cs
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Migrations.cs
@@ -36,11 +36,8 @@ namespace Orchard.Widgets {
ContentDefinitionManager.AlterTypeDefinition("HtmlWidget",
cfg => cfg
- .WithPart("WidgetPart")
.WithPart("BodyPart")
- .WithPart("CommonPart")
- .WithPart("IdentityPart")
- .WithSetting("Stereotype", "Widget")
+ .AsWidgetWithIdentity()
);
return 5;
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj b/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj
index c2ba01fe1..8770c9dca 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj
@@ -72,6 +72,7 @@
+