370 likes | 1.1k Views
Deep Dive into Orchard Extensibility for CMS Developers. Renaud Paquay Senior Developer Lead Orchard Team rpaquay@microsoft.com. Orchard CMS. DEMO. What Is Orchard?.
E N D
Deep Dive into Orchard Extensibility for CMS Developers Renaud Paquay Senior Developer Lead Orchard Team rpaquay@microsoft.com
Orchard CMS DEMO
What Is Orchard? • Orchard is a free, open source, community-focused project aimed at delivering applications and reusable components on the ASP.NET platform. • CMS platform built on ASP.NET MVC 2 • Licensed under the New BSD license • Included in the ASP.NET Open Source Gallery under the CodePlex Foundation • Accepts external contributions/patches today • Hosted on http://orchard.codeplex.com • Community site: http://orchardproject.net • Preview release: http://orchard.codeplex.com/releases
Target Audiences • End-users • Pre-configured Orchard distributions enable creation of web sites through UI customization • Developers • Orchard is a CMS platform for creating custom applications and modules • Designers • Orchard offers a flexible theming platform • Web Professionals • Orchard is a highly customizable CMS application • Market place with a large choice of themes and modules
Extensibility Deep Dive • Audience for the rest of the presentation is developers • Building a (very) basic “Products” module • Goal is to give a glimpse of the CMS platform the core Orchard team is building
Orchard Architecture Orchard Modules Pages Blogs Comments Tags Media Feeds Scheduling XmlRpc Users Roles Themes Navigation Setup Settings Homepage Orchard CMS ASP.NET MVC
Writing a module DEMO
Orchard Themes Document.aspx Layout.ascx <view>.ascx <!DOCTYPE html> <html> <head> <title><%=Html.Title()%></title> <% Model.Zones.Add("head:before”); Html.Zone("head", ":metas :styles :scripts"); %> </head> <body> <%Html.ZoneBody(“layout");%> </body> </html> <% Html.RegisterStyle("site.css“) Model.Zones.Add("header”); %> <div class="page"> <div id="header"><% Html.Zone("header"); Html.Zone("menu"); %> </div> <div id="main"><% Html.ZoneBody("content");%> <div id="footer"><% Html.Zone("footer"); %></div> </div> </div> (action specific view) Layout View Context
Composition Routable Body Tags Comments Common
Data Composition ContentHandler 1 ContentManager (CRUD) ContentHandler 2 ContentItem Data Events (…) ContentPart 1 ContentPart2 (…) ContentHandler N ContentPartN …passes back parts attached to Product type…
Data Composition ContentHandler 1 ContentManager (CRUD) ContentHandler 2 Product Data Events (…) Tags Comments Common ProductHandler …passes back parts attached to Product type…
UI Composition Routable Body Tags Comments Common
UI Composition ContentDriver Part 1 Controller 1 ContentManager (BuildXxxModel) ContentDriver Part 2 ContentItem ViewModel 3 2 (…) 4 View ContentDriver Part n
Conclusion What you’ve seen: • Defining a simple module as MVC “Area” • Working with data (ProductRecord) • Defining a content type (Product) • Data Composition • ProductHandler, wiring up “Parts” like Common, Comments, Tags • UI Composition • ProductDriver, ViewModels • Editor templates on back-end/admin • Complete sample code on http://orchardproject.net
Conclusion Other works-in-progress (not shown today): • Permissions, default roles • RSS/Atom • XmlRpc • Background tasks • Eventing • Logging • Localization • Site settings • Etc.
Opportunities for You • Success of Orchard depends on community contribution • We are seeking partners and early evaluators/adopters • Reminder: this project is at a very early stage, so expect churn and breaking changes. • A few partners have started building stuff on Orchard today, and we’re getting great input from them…
Partners @ Mix • Itelios/Magelia– commerce module • Magelia Commerce is a complete e-commerce offering. • Matt Lee (Redgate) – reviewer app • Online book hosting and review • Charlie Strout (SevenShadow) – troav app • Troav is a social encyclopedia, where users can create "treasures" that they share with their friends. • Scott Cate (EasySearchASP.net) – search module • EasySearchASP.NET is a search engine component that is very easy to integrate to an ASP.NET web site.
Magelia • MageliaNetStore • Complete e-commerce offering • Targets mid-sized businesses • Open Source Edition H2 2010 (CodePlex) • Commercial version in 2011 • Visit www.magelia.org or www.itelios.com • Orchard & Magelia • Magelia benefits from Orchard extensibility • Orchard users can easily add commerce to sites
Reviewer • Why Reviewer? • Red Gate publishes technical books • http://www.red-gate.com/books • Needed innovative way of publishing and getting user feedback • Why Orchard? • Get “common things” for free – users / comments / admin system / persistence • Orchard users can add reviewer to other sites as a module
Troav • An Online Encyclopedia with a Social Twist • Users Create “Treasures” to Share Friends • Users Create Connections Between Treasures • Custom Educational Tours of Historic Treasures • Comments, Feeds, Linking, Blogs • Geo-location and Mapping • Location-aware Features
Troav • Why Orchard ? • .NET MVC Framework • Out of the Box Modules Like Blogs and Pages • Easy Module and Theme Development • Ability to Use/Develop/Share Modules • Vibrant Developer Community http://Troav.com Charlie@troav.com
EasySearchASP.NET • TODO: Screenshot of EasySearch
EasySearchASP.NET • TODO: Talking Points for EasySearch
Call to Action • Visit http://orchardproject.net • Opportunities to contribute to the system • Modules • Themes • Features • Design • Etc. • Come find us in the lounge following this session – we will be there to answer questions!
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.