Plone has undergone several rounds of changes and developers need to make sure their applications evolve with it in a graceful manner. Review powerful new tools that have been created to ease Plone development. Learn how your products can take advantage of Plone 3's improved user-experience.
Unleash the power of Zope 3 using Five to utilize views, viewlets, events and utilities. Learn how to leverage migration steps in GenericSetup. Find out what methods are now deprecated in Plone 3.
Developers will walk away with the knowledge needed to keep their applications current.
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Tips For Migrating Apps To Plone 3
1. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Tips for Migrating Apps to
Plone 3
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
2. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Questions?
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
3. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
How Do We Get There?
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
4. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Zope Won’t Start
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
5. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Deprecated Methods and Imports
• Products.CMFCore.CMFPermissions
Products.CMFCore.permissions
• Products.CMFPlone.utils.BrowserView
Products.Five.BrowserView
• toPortalTime finally gone
• toLocalizedTime now in the @@plone view
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
6. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Getting Current
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
7. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Update your type info
• Remove Sharing Tab
• Remove Properties Tab
• Add Lock Awareness to the Edit Tab
condition_expr=quot;not:object/
@@plone_lock_info/
is_locked_for_current_user|python:Truequot;
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
8. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Life Changing Decisions
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
9. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Taking Advantage of Zope 3
• View Classes
• Create Utilities instead of Portal Tools
• Use MenuItems to add custom Actions
• Zope 3 Events
manage_afterAdd
manage_beforeDelete
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
ZCML
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
11. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
<configure
xmlns=quot;http://namespaces.zope.org/zopequot;>
<subscriber
for=quot;Products.OER.interfaces.IOERItem
OFS.interfaces.IObjectWillBeRemovedEventquot;
handler=quot;.subscribers.deleteSubmissionsquot;/>
<subscriber
for=quot;Products.OER.interfaces.IOERTag
zope.app.event.interfaces.IObjectModifiedEventquot;
handler=quot;.subscribers.checkTagsquot;/>
<subscriber
for=quot;Products.OER.interfaces.IOERSubmission
OFS.interfaces.IObjectWillBeAddedEventquot;
handler=quot;.subscribers.changeStateHomeFolderquot;/>
</configure>
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
12. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
def deleteSubmissions(self, event):
quot;quot;quot;
Delete the submissions attached to the object we just come from deleting
quot;quot;quot;
item = event.object
# we delete the tags/ratings/reviews/notes associated with this item
ps = getToolByName(self, 'portal_submissions')
pc = getToolByName(self, 'portal_catalog')
targets = ps.getTargets(item)
...
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
13. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
GenericSetup
• Replaces Customization Policies
• Replaces the old Install.py for QuickInstaller
• Upgrade Steps
Versatile One Time Steps
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
14. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
<configure
xmlns=quot;http://namespaces.zope.org/zopequot;
xmlns:genericsetup=quot;http://namespaces.zope.org/genericsetupquot;
i18n_domain=quot;plonequot;>
<genericsetup:registerProfile
name=quot;defaultquot;
title=quot;AdvancedDocument Profilequot;
directory=quot;profiles/defaultquot;
description=quot;Extension profile for the AdvancedDocument Productquot;
provides=quot;Products.GenericSetup.interfaces.EXTENSIONquot;
/>
<genericsetup:upgradeStep
title=quot;Update Catalogquot;
description=quot;Update the Catalogquot;
source=quot;0.4quot;
destination=quot;0.5quot;
handler=quot;Products.AdvancedDocument.upgrades.updatecatalog.updateCatalogquot;
sortkey=quot;1quot;
profile=quot;Products.AdvancedDocument:defaultquot;
/>
</configure>
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
15. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
16. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Setting up Versioning
• GenericSetup export/import broken
• Setup via a setup handler
• Register via your product
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
17. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
<?xml version=quot;1.0quot;?>
<import-steps>
<import-step id=quot;versioningsetupquot; version=quot;20070828-01quot;
handler=quot;Products.AdvancedDocument.exportimport.versioningsetup.versioningSetupquot;
title=quot;Versioning Setupquot;>
<dependency step=quot;contentquot;/>
Add versioning on our selected content types
</import-step>
</import-steps>
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
18. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
def versioningSetup(context):
quot;quot;quot;Setup portal_factory
quot;quot;quot;
site = context.getSite()
portal_repository = getToolByName(site, 'portal_repository')
portal_diff = getToolByName(site, 'portal_diff')
versionable_types = list(portal_repository.getVersionableContentTypes())
type_ids = ['AdvancedDocument', ]
for type_id in type_ids:
if type_id not in versionable_types:
versionable_types.append(type_id)
for policy_id in DEFAULT_POLICIES:
portal_repository.addPolicyForContentType(type_id, policy_id)
diff_res = portal_diff.getDiffForPortalType(type_id)
if not diff_res:
portal_diff.manage_addDiffField(type_id, 'any', 'Compound Diff for AT types')
portal_repository.setVersionableContentTypes(versionable_types)
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
19. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
People Skills
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
20. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
GRUF and PAS
• PAS added as default in 2.5
• GRUF completely removed in 3.0
• User and Group Searching Done via PAS
directly
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
21. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
New Roles
• Reader
• Editor
• Contributor
Add your custom add permissions to this role
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
22. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Portlets
• Viewlets
• Viewlet Manager
• Classic Portlet
Performance Issues
left and right slots properties gone
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
23. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
<configure xmlns=quot;http://namespaces.zope.org/zopequot;
xmlns:plone=quot;http://namespaces.plone.org/plonequot;>
<plone:portlet
name=quot;portlets.Adsquot;
interface=quot;.portlets.ads.IAdPortletquot;
assignment=quot;.portlets.ads.Assignmentquot;
renderer=quot;.portlets.ads.Rendererquot;
addview=quot;.portlets.ads.AddFormquot;
editview=quot;.portlets.ads.EditFormquot;
/>
</configure>
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
24. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Leverage Other New
Features
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
25. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Additional Markup and Field
Support
• textile
• markdown
• wiki style linking
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
26. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Don’t Forget the Basics
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
27. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Catalog Enhancements
• ExtendedPathIndex
• New Date Indexes
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
28. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Leverage the Registries
• CSS
• Javascript
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
29. Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker 10.11.2007
Questions?
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest