Transcript
Page 1: Rocky Burt   Subtyping Unleashed

Subtyping Unleased!Speaker: Rocky Burt

Page 2: Rocky Burt   Subtyping Unleashed

Slide 2Subtyping Unleased! Plone Conference 2007 – Naples

Who I Am

Rocky BurtServerZen Software

http://www.serverzen.com

Page 3: Rocky Burt   Subtyping Unleashed

Slide 3Subtyping Unleased! Plone Conference 2007 – Naples

Subtyping?

Narrow classification Functionality hook

Page 4: Rocky Burt   Subtyping Unleashed

Slide 4Subtyping Unleased! Plone Conference 2007 – Naples

Why Subtype?

Many possible faces for an existing content type

Simple conversion Delayed specification

Page 5: Rocky Burt   Subtyping Unleashed

Slide 5Subtyping Unleased! Plone Conference 2007 – Naples

Use Cases

Need different content identity depending on situation

Need some way to transform identity based on event reaction

Page 6: Rocky Burt   Subtyping Unleashed

Slide 6Subtyping Unleased! Plone Conference 2007 – Naples

p4a.subtyper

Minimal framework Hooks up subtypes into content

menu

Page 7: Rocky Burt   Subtyping Unleashed

Slide 7Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Setting up p4a.subtyper

easy_install p4a.subtyper

Page 8: Rocky Burt   Subtyping Unleashed

Slide 8Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Creating New Package

p4a.subtyperdemo

Example source at:

http://www.plone4artists.org

/svn/projects/p4a.subtyperdemo/

Page 9: Rocky Burt   Subtyping Unleashed

Slide 9Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Sub-type Marker Interface

New module named interfaces New interface named IUltraDoc

Page 10: Rocky Burt   Subtyping Unleashed

Slide 10Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Sub-type Marker Interface

class IUltraDoc(interface.Interface): """A new ultra document subtype."""

interface.alsoProvides(IUltraDoc, IContentType)

Page 11: Rocky Burt   Subtyping Unleashed

Slide 11Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Sub-type Descriptor

New module named descriptors

New descriptor named UltraDocDescriptor

Page 12: Rocky Burt   Subtyping Unleashed

Slide 12Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Sub-type Descriptor

class UltraDocDescriptor(object): implements(IPortalTypedDescriptor) title = u'Ultra Doc' description = u'New ultra style '\ u'document.' type_interface = IUltraDoc for_portal_type = 'Document

Page 13: Rocky Burt   Subtyping Unleashed

Slide 13Subtyping Unleased! Plone Conference 2007 – Naples

An Example:New View

New template called ultradoc.pt

Page 14: Rocky Burt   Subtyping Unleashed

Slide 14Subtyping Unleased! Plone Conference 2007 – Naples

An Example:New View

<div metal:fill-slot="main"><h2>This is an ultradoc!</h2><h3 tal:content="context/Title"></h3><p tal:content="context/Description"></p></div>

Page 15: Rocky Burt   Subtyping Unleashed

Slide 15Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Tying Together – ZCML

Register descriptor as utility Hook new view up applying to

marker interface

Page 16: Rocky Burt   Subtyping Unleashed

Slide 16Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Tying Together – ZCML

<utility name="ultradoc" factory=".descriptors.UltraDocDescriptor" />

<browser:page for=".interfaces.IUltraDoc" name="document_view" permission="zope2.View" template="ultradoc.pt" />

Page 17: Rocky Burt   Subtyping Unleashed

Slide 17Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Before

Page 18: Rocky Burt   Subtyping Unleashed

Slide 18Subtyping Unleased! Plone Conference 2007 – Naples

An Example:After

Page 19: Rocky Burt   Subtyping Unleashed

Slide 19Subtyping Unleased! Plone Conference 2007 – Naples

An Example:Regular Content

Page 20: Rocky Burt   Subtyping Unleashed

Slide 20Subtyping Unleased! Plone Conference 2007 – Naples

Other Features

Special subtype events Extension by adapters and

schema's

Page 21: Rocky Burt   Subtyping Unleashed

Slide 21Subtyping Unleased! Plone Conference 2007 – Naples

Conclusion

Questions?Comments?Resources at:

http://www.serverzen.com/training/subtyping-unleashed


Top Related