From 9a5239e77748f9fcb1f2b9659f608e0e61434e13 Mon Sep 17 00:00:00 2001 From: Nathan Heskew Date: Thu, 28 Oct 2010 15:30:14 -0700 Subject: [PATCH] Starting the new queried content list module. Everything for the new part, content type and widget are there except for what makes them useful (back-end logic & data and complete shape templates) --HG-- branch : dev --- .../Drivers/ContentQueryPartDriver.cs | 30 +++++ .../Orchard.ContentQueries/Migrations.cs | 33 ++++++ .../Models/ContentQueryPart.cs | 5 + .../Models/ContentQueryPartRecord.cs | 5 + .../Modules/Orchard.ContentQueries/Module.txt | 12 ++ .../Orchard.ContentQueries.csproj | 111 ++++++++++++++++++ .../Orchard.ContentQueries/Placement.info | 19 +++ .../Properties/AssemblyInfo.cs | 35 ++++++ .../Parts/ContentQueries.Configuration.cshtml | 1 + .../Views/Parts/QueriedContents.cshtml | 14 +++ .../Modules/Orchard.ContentQueries/Web.config | 32 +++++ .../Orchard.Setup/Services/SetupService.cs | 3 +- src/Orchard.sln | 13 ++ 13 files changed, 312 insertions(+), 1 deletion(-) create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Drivers/ContentQueryPartDriver.cs create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Migrations.cs create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Models/ContentQueryPart.cs create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Models/ContentQueryPartRecord.cs create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Module.txt create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Orchard.ContentQueries.csproj create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Placement.info create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Properties/AssemblyInfo.cs create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Views/EditorTemplates/Parts/ContentQueries.Configuration.cshtml create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Views/Parts/QueriedContents.cshtml create mode 100644 src/Orchard.Web/Modules/Orchard.ContentQueries/Web.config diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Drivers/ContentQueryPartDriver.cs b/src/Orchard.Web/Modules/Orchard.ContentQueries/Drivers/ContentQueryPartDriver.cs new file mode 100644 index 000000000..e40dff50d --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Drivers/ContentQueryPartDriver.cs @@ -0,0 +1,30 @@ +using Orchard.ContentManagement.Drivers; +using Orchard.ContentQueries.Models; + +namespace Orchard.ContentQueries.Drivers { + public class ContentQueryPartDriver : ContentPartDriver { + protected override DriverResult Display(ContentQueryPart part, string displayType, dynamic shapeHelper) { + return ContentShape("Parts_QueriedContents", + list => { + var contentItems = shapeHelper.List(); + //contentItems.AddRange(theContentItems); + + list.ContentItems(contentItems); + + if (true) // pager + list.Pager(/* pager configuration */); + + return list; + }); + } + + protected override DriverResult Editor(ContentQueryPart part, dynamic shapeHelper) { + return ContentShape("Parts_ContentQueries_Configuration", + () => shapeHelper.EditorTemplate(TemplateName: "Parts/ContentQueries.Configuration", Model: part, Prefix: Prefix)); + } + + protected override DriverResult Editor(ContentQueryPart part, ContentManagement.IUpdateModel updater, dynamic shapeHelper) { + return Editor(part, shapeHelper); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Migrations.cs b/src/Orchard.Web/Modules/Orchard.ContentQueries/Migrations.cs new file mode 100644 index 000000000..0e6cd9371 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Migrations.cs @@ -0,0 +1,33 @@ +using Orchard.ContentManagement.MetaData; +using Orchard.Core.Contents.Extensions; +using Orchard.Data.Migration; + +namespace Orchard.ContentQueries { + public class Migrations : DataMigrationImpl { + public int Create() { + //SchemaBuilder.CreateTable("ContentQueryPartRecord", + // table => table + // .ContentPartRecord() + // ); + + ContentDefinitionManager.AlterTypeDefinition("ContentQuery", + cfg => cfg + .WithPart("ContentQueryPart") + .WithPart("CommonPart") + .WithPart("RoutePart") + .WithPart("MenuPart") + .Creatable() + ); + + ContentDefinitionManager.AlterTypeDefinition("ContentQueryWidget", + cfg => cfg + .WithPart("ContentQueryPart") + .WithPart("CommonPart") + .WithPart("WidgetPart") + .WithSetting("Stereotype", "Widget") + ); + + return 1; + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Models/ContentQueryPart.cs b/src/Orchard.Web/Modules/Orchard.ContentQueries/Models/ContentQueryPart.cs new file mode 100644 index 000000000..54f14ddc8 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Models/ContentQueryPart.cs @@ -0,0 +1,5 @@ +using Orchard.ContentManagement; + +namespace Orchard.ContentQueries.Models { + public class ContentQueryPart : ContentPart {} +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Models/ContentQueryPartRecord.cs b/src/Orchard.Web/Modules/Orchard.ContentQueries/Models/ContentQueryPartRecord.cs new file mode 100644 index 000000000..375bf61b5 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Models/ContentQueryPartRecord.cs @@ -0,0 +1,5 @@ +using Orchard.ContentManagement.Records; + +namespace Orchard.ContentQueries.Models { + public class ContentQueryPartRecord : ContentPartRecord {} +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Module.txt b/src/Orchard.Web/Modules/Orchard.ContentQueries/Module.txt new file mode 100644 index 000000000..9561a77d0 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Module.txt @@ -0,0 +1,12 @@ +Name: Content Queries +AntiForgery: enabled +Author: The Orchard Team +Website: http://orchardproject.net +Version: 0.8.0 +OrchardVersion: 0.8.0 +Features: + Orchard.ContentQueries: + Name: Queried Content Lists + Description: Use simple queries to create orderd lists of content items with optional paging support. + Dependencies: Contents + Category: Content diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Orchard.ContentQueries.csproj b/src/Orchard.Web/Modules/Orchard.ContentQueries/Orchard.ContentQueries.csproj new file mode 100644 index 000000000..a0eb16848 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Orchard.ContentQueries.csproj @@ -0,0 +1,111 @@ + + + + Debug + AnyCPU + + + 2.0 + {848126A0-9C88-415A-868F-F5F03449D0B6} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + Orchard.ContentQueries + Orchard.ContentQueries + v4.0 + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + + + + + + + + + + ..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll + + + + + + + + + + + + + + + + + + + + + + + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} + Orchard.Framework + + + {9916839C-39FC-4CEB-A5AF-89CA7E87119F} + Orchard.Core + + + + + + Designer + + + + + + + + + + + False + True + 57372 + / + + + False + True + http://orchard.codeplex.com + False + + + + + + \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Placement.info b/src/Orchard.Web/Modules/Orchard.ContentQueries/Placement.info new file mode 100644 index 000000000..f9dfe0571 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Placement.info @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Properties/AssemblyInfo.cs b/src/Orchard.Web/Modules/Orchard.ContentQueries/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..471617b95 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +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("Orchard.ContentQueries")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Orchard")] +[assembly: AssemblyCopyright("")] +[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("0003600f-7634-43b0-9a63-68ee7c247db3")] + +// 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 Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("0.8.0")] +[assembly: AssemblyFileVersion("0.8.0")] diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Views/EditorTemplates/Parts/ContentQueries.Configuration.cshtml b/src/Orchard.Web/Modules/Orchard.ContentQueries/Views/EditorTemplates/Parts/ContentQueries.Configuration.cshtml new file mode 100644 index 000000000..0028f00f6 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Views/EditorTemplates/Parts/ContentQueries.Configuration.cshtml @@ -0,0 +1 @@ +

content query config here -> x

\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Views/Parts/QueriedContents.cshtml b/src/Orchard.Web/Modules/Orchard.ContentQueries/Views/Parts/QueriedContents.cshtml new file mode 100644 index 000000000..ac6ffaa9a --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Views/Parts/QueriedContents.cshtml @@ -0,0 +1,14 @@ +@{ + IEnumerable queriedContents = Model.ContentItems; + Model.ContentItems.Classes.Add("content-items"); + Model.ContentItems.Classes.Add("queried-contents"); +} +@if (queriedContents != null && queriedContents.Count() > 0) { + @Display(Model.ContentItems) + if (Model.Pager != null) { + @Display(Model.Pager) + } +} +else { +

@T("There are no contents.")

+} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ContentQueries/Web.config b/src/Orchard.Web/Modules/Orchard.ContentQueries/Web.config new file mode 100644 index 000000000..aeb6287ed --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ContentQueries/Web.config @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs index 53a0ada60..30f83c52f 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs @@ -94,7 +94,8 @@ namespace Orchard.Setup.Services { "Orchard.Tags", "Orchard.Media", "Orchard.Widgets", - "Orchard.jQuery" + "Orchard.jQuery", + "Orchard.ContentQueries" }; context.EnabledFeatures = hardcoded; diff --git a/src/Orchard.sln b/src/Orchard.sln index 768c6b70a..2f7139dc3 100644 --- a/src/Orchard.sln +++ b/src/Orchard.sln @@ -93,6 +93,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Themes", "Orchard.Web\Theme EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.PublishLater", "Orchard.Web\Modules\Orchard.PublishLater\Orchard.PublishLater.csproj", "{C889167C-E52C-4A65-A419-224B3D1B957D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.ContentQueries", "Orchard.Web\Modules\Orchard.ContentQueries\Orchard.ContentQueries.csproj", "{848126A0-9C88-415A-868F-F5F03449D0B6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution CodeCoverage|Any CPU = CodeCoverage|Any CPU @@ -492,6 +494,16 @@ Global {C889167C-E52C-4A65-A419-224B3D1B957D}.FxCop|Any CPU.Build.0 = Release|Any CPU {C889167C-E52C-4A65-A419-224B3D1B957D}.Release|Any CPU.ActiveCfg = Release|Any CPU {C889167C-E52C-4A65-A419-224B3D1B957D}.Release|Any CPU.Build.0 = Release|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.Coverage|Any CPU.ActiveCfg = Release|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.Coverage|Any CPU.Build.0 = Release|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.FxCop|Any CPU.ActiveCfg = Release|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.FxCop|Any CPU.Build.0 = Release|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {848126A0-9C88-415A-868F-F5F03449D0B6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -521,6 +533,7 @@ Global {AB3C207C-0126-4143-8D62-1119DF80D366} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {EA4F1DA7-F2AB-4384-9AA4-9B756E2026B1} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {C889167C-E52C-4A65-A419-224B3D1B957D} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} + {848126A0-9C88-415A-868F-F5F03449D0B6} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {ABC826D4-2FA1-4F2F-87DE-E6095F653810} = {74E681ED-FECC-4034-B9BD-01B0BB1BDECA} {F112851D-B023-4746-B6B1-8D2E5AD8F7AA} = {74E681ED-FECC-4034-B9BD-01B0BB1BDECA} {6CB3EB30-F725-45C0-9742-42599BA8E8D2} = {74E681ED-FECC-4034-B9BD-01B0BB1BDECA}