tips for migrating apps to plone 3
DESCRIPTION
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.TRANSCRIPT
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
Tips for Migrating Apps to Plone 3
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
Questions?
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
How Do We Get There?
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
Zope Won’t Start
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• Products.CMFCore.CMFPermissions
Products.CMFCore.permissions
• Products.CMFPlone.utils.BrowserView
Products.Five.BrowserView
• toPortalTime finally gone
• toLocalizedTime now in the @@plone view
Deprecated Methods and Imports
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
Getting Current
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• Remove Sharing Tab
• Remove Properties Tab
• Add Lock Awareness to the Edit Tab
condition_expr="not:object/@@plone_lock_info/is_locked_for_current_user|python:True"
Update your type info
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
Life Changing Decisions
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• View Classes
• Create Utilities instead of Portal Tools
• Use MenuItems to add custom Actions
• Zope 3 Events
manage_afterAdd
manage_beforeDelete
Taking Advantage of Zope 3
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
ZCML
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
<configure xmlns="http://namespaces.zope.org/zope">
<subscriber for="Products.OER.interfaces.IOERItem OFS.interfaces.IObjectWillBeRemovedEvent" handler=".subscribers.deleteSubmissions"/>
<subscriber for="Products.OER.interfaces.IOERTag zope.app.event.interfaces.IObjectModifiedEvent" handler=".subscribers.checkTags"/>
<subscriber for="Products.OER.interfaces.IOERSubmission OFS.interfaces.IObjectWillBeAddedEvent" handler=".subscribers.changeStateHomeFolder"/>
</configure>
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
def deleteSubmissions(self, event): """ Delete the submissions attached to the object we just come from deleting """ 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) ...
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• Replaces Customization Policies
• Replaces the old Install.py for QuickInstaller
• Upgrade Steps
Versatile One Time Steps
GenericSetup
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
<configure xmlns="http://namespaces.zope.org/zope" xmlns:genericsetup="http://namespaces.zope.org/genericsetup" i18n_domain="plone">
<genericsetup:registerProfile name="default" title="AdvancedDocument Profile" directory="profiles/default" description="Extension profile for the AdvancedDocument Product" provides="Products.GenericSetup.interfaces.EXTENSION" />
<genericsetup:upgradeStep title="Update Catalog" description="Update the Catalog" source="0.4" destination="0.5" handler="Products.AdvancedDocument.upgrades.updatecatalog.updateCatalog" sortkey="1" profile="Products.AdvancedDocument:default" /></configure>
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
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
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
<?xml version="1.0"?><import-steps>
<import-step id="versioningsetup" version="20070828-01" handler="Products.AdvancedDocument.exportimport.versioningsetup.versioningSetup" title="Versioning Setup"> <dependency step="content"/> Add versioning on our selected content types </import-step> </import-steps>
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
def versioningSetup(context): """Setup portal_factory """ 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
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
People Skills
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• PAS added as default in 2.5
• GRUF completely removed in 3.0
• User and Group Searching Done via PAS directly
GRUF and PAS
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• Reader
• Editor
• Contributor
Add your custom add permissions to this role
New Roles
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• Viewlets
• Viewlet Manager
• Classic Portlet
Performance Issues
left and right slots properties gone
Portlets
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
<configure xmlns="http://namespaces.zope.org/zope" xmlns:plone="http://namespaces.plone.org/plone"> <plone:portlet name="portlets.Ads" interface=".portlets.ads.IAdPortlet" assignment=".portlets.ads.Assignment" renderer=".portlets.ads.Renderer" addview=".portlets.ads.AddForm" editview=".portlets.ads.EditForm" />
</configure>
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
Leverage Other New Features
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• textile
• markdown
• wiki style linking
Additional Markup and Field Support
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
Don’t Forget the Basics
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• ExtendedPathIndex
• New Date Indexes
Catalog Enhancements
10.11.2007
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
• CSS
• Javascript
Leverage the Registries
Six Feet Up, Inc. • http://www.sixfeetup.com Silicon Valley • Midwest
10.11.2007Tips for Migrating Apps to Plone 3 - Calvin Hendryx-Parker
Questions?