Renaud Paquay Senior Developer Lead Orchard Team rpaquaymicrosoftcom DEMO Orchard CMS What Is Orchard Orchard is a free open source communityfocused project aimed at delivering applications and reusable components on the ASPNET platform ID: 355438
Download Presentation The PPT/PDF document "Deep Dive into Orchard Extensibility for..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Deep Dive into Orchard Extensibility for CMS Developers
Renaud Paquay
Senior Developer Lead
Orchard Team
rpaquay@microsoft.comSlide2
DEMO
Orchard CMSSlide3
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
Slide4
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 modulesSlide5
Extensibility Deep Dive
Audience for the rest of the presentation is developersBuilding a (very) basic “Products” moduleGoal is to give a glimpse of the CMS platform the core Orchard team is buildingSlide6
Orchard Architecture
ASP.NET MVC
Orchard CMS
Orchard Modules
Pages
Blogs
Users
Comments
Tags
Roles
Media
Setup
Themes
XmlRpc
Scheduling
Navigation
Homepage
Feeds
SettingsSlide7
DEMO
Writing a moduleSlide8
Orchard Themes
Layout View Context
<!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)
Document.aspx
Layout.ascx
<view>.ascxSlide9
DEMO
Accessing the databaseSlide10
Composition
Routable
Body
Common
Comments
TagsSlide11
Data Composition
ContentManager
(CRUD)
ContentItem
ContentHandler
1
ContentHandler
2
ContentHandler
N
(…)
ContentPart
1
ContentPart
2
(…)
ContentPart
N
Data
Events
Record
Record
Record
Record
…passes back parts attached to Product type…Slide12
Data
Data Composition
ContentManager
(CRUD)
Product
ContentHandler
1
ContentHandler
2
ProductHandler
(…)
Tags
Comments
Common
…passes back parts attached to Product type…
Events
Record
Record
Record
RecordSlide13
Data Composition
ContentItemRecord
Id
ContentTypeRecord_Id
5
1
7
1
ContentTypeRecord
Id
Name
1
“page”
BodyRecord
Id
Text
5
“<p>First
post
</p>”
7
“<p>Second</p>”
RoutableRecord
Id
Slug
5
“first-post”
7
“second-post”Slide14
Data Composition
ProductRecord
Id
Sku
Description
Price
15
“sku1”
“shoes”
99.99
21
“sku2”
“t-shirt”
19.99
ContentItemRecord
Id
ContentTypeRecord_Id
5
1
7
1
15
2
21
2
ContentTypeRecordId
Name1“page”
2“product”
BodyRecord
IdText5
“<p>demo</p>”7
“<p>about us</p>”
RoutableRecord
Id
Slug
5
“/home”
7
“/about”Slide15
DEMO
Defining a new content typeSlide16
UI Composition
Routable
Body
Common
Comments
TagsSlide17
UI Composition
ContentManager
(
BuildXxxModel
)
ContentItem
ViewModel
ContentDriver
Part 1
ContentDriver
Part 2
ContentDriver
Part n
(…)
View
Controller
1
2
3
4Slide18
DEMO
Defining a content driverSlide19
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 CompositionProductDriver, ViewModelsEditor templates on back-end/admin
Complete sample code on http://orchardproject.netSlide20
Conclusion
Other works-in-progress (not shown today):Permissions, default roles
RSS/Atom
XmlRpc
Background tasks
EventingLoggingLocalizationSite settingsEtc.Slide21
Opportunities for You
Success of Orchard depends on community contributionWe 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…Slide22
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.
Slide23
MageliaSlide24
MageliaSlide25
MageliaSlide26
Magelia
Magelia NetStore
Complete
e-commerce offering
Targets mid-sized businesses
Open Source Edition H2 2010 (CodePlex)Commercial
version in 2011Visit www.magelia.org or
www.itelios.com
Orchard
&
Magelia
Magelia
benefits from Orchard extensibility
Orchard users can easily add commerce to sitesSlide27
ReviewerSlide28
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 moduleSlide29
TroavSlide30
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 FeaturesSlide31
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.comSlide32
EasySearchASP.NET
TODO: Screenshot of EasySearchSlide33
EasySearchASP.NET
TODO: Talking Points for EasySearchSlide34
DEMO
Orchard Partners @ MixSlide35
Call to Action
Visit http://orchardproject.netOpportunities to contribute to the system
Modules
Themes
Features
DesignEtc.Come find us in the lounge following this session – we will be there to answer questions!Slide36Slide37
©
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.