Slide 1

Slide 1 text

Playing with Blocks: 6 Pro Tips for Building Your Next Super-Charged Plone Site Calvin Hendryx-Parker, CTO Plone Conference 2012

Slide 2

Slide 2 text

#PloneConf We love Plone!

Slide 3

Slide 3 text

#PloneConf • Workflow • WYSIWYG tools for editing • WebDAV and FTP built in for managing content • Collections • Versioning, Staging and Locking • Support for Word and PDF document indexing Does so many things for us

Slide 4

Slide 4 text

#PloneConf • Application Security Track Record • Fine grained Security Permissions We sleep soundly at night with Plone

Slide 5

Slide 5 text

#PloneConf • Make a great impression • SEO • Not just bolted on #1: Use APIs vs embedded iframes

Slide 6

Slide 6 text

#PloneConf EBSCO Content Integration

Slide 7

Slide 7 text

#PloneConf SEO Hell

Slide 8

Slide 8 text

#PloneConf Integration Bliss

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

#PloneConf WordPress Blog and ZenPhoto

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

#PloneConf • Version control • Mailing list • Last release • Size of community #2: Criteria for Evaluating Your Options

Slide 13

Slide 13 text

#PloneConf Spam Takeover?

Slide 14

Slide 14 text

#PloneConf Mailing List Neglect

Slide 15

Slide 15 text

#PloneConf Anyone Home?

Slide 16

Slide 16 text

#PloneConf Activity?

Slide 17

Slide 17 text

#PloneConf Questionable Roadmap

Slide 18

Slide 18 text

#PloneConf Corporate Takeover

Slide 19

Slide 19 text

#PloneConf Hope

Slide 20

Slide 20 text

#PloneConf #3: Leverage SSO and centralized Authentication

Slide 21

Slide 21 text

#PloneConf • SAML • OpenID • OAuth • Mozilla Personas (BrowserID) Web SSO

Slide 22

Slide 22 text

#PloneConf • Pre-existing OpenID Authentication • Plone CMS • Moin Moin Wiki • Vanilla Forum Real World Usage

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

#PloneConf #4: Supercharge your search with Solr

Slide 25

Slide 25 text

#PloneConf • Java Based • Full-Text Search • Web Services API • Standards Based Interfaces • Scalable • XML Configuration • Extensible What is Solr?

Slide 26

Slide 26 text

#PloneConf • ZCatalog Index • Doesn't depend on Plone • Utilizes new foreign_connections Connection Method • Pass through Solr Queries • Direct access to the Solr Response SolrIndex

Slide 27

Slide 27 text

#PloneConf Spelling

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

#PloneConf External Content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

#PloneConf import MoinMoin.events as ev def handle(event): if isinstance(event, ev.PageRenamedEvent): handle_renamed(event) elif isinstance(event, ev.PageRevertedEvent): handle_reverted(event) elif isinstance(event, (ev.PageChangedEvent, ev.PageCopiedEvent, ev.TrivialPageChangedEvent)): handle_changed(event) elif isinstance(event, ev.PageDeletedEvent): handle_deleted(event)

Slide 32

Slide 32 text

#PloneConf class IFakeBrainView(Interface): """Utility methods for updating the Wiki fake brains. """ def getFakeBrainId(url): """Generate an id based on the provided URL. The id is always the same for an item. """ def updateFakeBrain(type, title, description, date, url): """Parameters: * Content type * Title * Description * Date * URL to the item Grab the id of the item using getFakeBrainId. If the item already exists, we update it, otherwise we create it. """ def deleteFakeBrain(id): """Given an item id, delete it from the catalog.""" def processUpdate(): """Accept a POST and dispatch appropriately."""

Slide 33

Slide 33 text

#PloneConf • Can replace several ZCatalog indexes • Remove any indexes you have replaced • Use it for all Text Indexes • Still Utilize the ZCatalog Indexes for Everything Else Solr Tips

Slide 34

Slide 34 text

#PloneConf Pro Tip #5: Beware of Over Customization

Slide 35

Slide 35 text

#PloneConf The story of KARL 1.0 • Xapian • Windows • Tasty Tags • Deliverance

Slide 36

Slide 36 text

#PloneConf Rosetta Project • Wasn't really a CMS • Semantic Web Application • Abused Zope and Plone

Slide 37

Slide 37 text

#PloneConf • PubMed unicode data coming back for SFARI • Data you get today may be fine, but what happens months down the road • Make sure to test what you think Plone will do • Mock External Dependancies #6: Testing, Testing, Testing

Slide 38

Slide 38 text

#PloneConf Q&A @calvinhp [email protected] Let's keep building with Blocks