Personal tools
You are here: Home Documentation Developers Plone Conference 2008 Day 3 (Plone Conference 2008)

Day 3 (Plone Conference 2008)

by vanghn17 last modified Oct 16, 2008 02:20 PM

Nathan's Notes

"Plone Form Gen" by Steve McMahon

  • Fields are content types
  • Adapters are not Z3 adapters
  • can have multiple action adapters
  • Extensions
    • SalesForce adapter
    • Captchas
      • skimpy gimpy
    • GetPaid
  • tricks
    • create own validators
      • overrides in field
    • chained forms
    • turn fields on and off
    • SQL CRU(D)
  • amazing tricks
    • inject js/css
    • customized thanks pages
    • posting to outside
    • creating content
      • using custom script adapter
  • gotchas
    • inefficient due to Plone 2.1 architecture
    • not interactive enough
  • future
    • zope 3 events
    • avoid waking up all inner objects
    • zope 3 schema
      • connect to new world a dev
    • z3c.form
    • kss
      • inline editing is a mistake
      • inline validating is good though!
      • drag and drop widgets
    • need more developers
    • smooth migration!
    • stay simple or hide complexity
    • dexterity
    • CSRF(cross site request forgery) protection
      • not currently there

"Intro to z3c.form" by Stephan Richter

  • benefits
    • automatic validation
    • nice error messages
    • reusable form components
    • does all tedious bits
  • what is it?
    • presentation component
    • can be viewlet
    • buttons generate form actions
    • template associated with a form to describe layout
  • fields
    • forms represent fields as attributes
      • see z3c.form.field
    • communicator between presentation(widget) and form
    • examples...
      • fields = field.Fields(ISchema).select('when', 'who')
  • widgets
    • the python representation of output format
    • modes of display
    • components
      • converters are used to convert field values to widget-processable values
      • validators - custom messages
        • need more sensible error messages - available to contribution
      • data managers are used to store the value to a content component
  • buttons
    • defines actions for a form
    • simple extensions to schema fields
    • conditions determine availability of a button
    • many ways to create buttons
    • can have multiple sets of buttons
    • same as field, but produces actions
  • actions
    • actions are widgets for buttons
    • handlers
      • defines set of instructions to execute wen action is called
  • declaring buttons
    • button schemas
    • can copy buttons, actions and handers from super-form
  • form classes
    • BaseForm, DisplayForm, Form, AddForm, EditForm
  • side note
    • to create zope object
    • inherit from zope.location.Location and persistent.Persistent
  • apidoc.zope.org
  • Add Forms
    • see z3c.form.add.AddForm
  • Display Forms
    • produce human readable representations of data
  • Edit Forms
  • Future
    • integrate z3c.pt
      • benchmarks show generation is 2-3 times faster
    • new widgets
      • TextLinesWidget, MultiWidget, ObjectWidget
    • translations
  • Extensions
    • z3c.formjs
      • see z3c.formjsdemo
    • z3c.formwidget.query - query large collective and select a value fromt he query results
    • plone.z3cfrom
    • megrok.z3cform
    • five.megrok.z3cform
    • z3c.formext - extjs integration
  • zope.contentprovider
    • info on update render pattern
  • update render pattern
    • update is overridden all the time
    • render-not as often
    • should be able to call update many times

"Plone and Multimedia" by Nate Aune

  • p4artists
  • -podcasting is huge now
  • use plone and combine with multimedia add-ons
  • audio enhanced folder
  • not a good idea to store large files in zodb
    • blob file
  • no new content types
  • add social networking features
  • howto
    • eggs =

        p4a.ploneaudio

        p4a.plonevideo

        p4a.plonevideoembed

    zcml =

        p4a.ploneaudio

        p4a.plonevideo

        p4a.plonevideoembed

  • plone.app.blob
    • allows you to store large files
    • FileSystemStorage, ExternalStorage --- bad way
  • PloneFlashUpload
  • PloneJUpload
  • ZipFileTransport
  • WebDAV
  • Tramline
    • intercepts the upload requests for large files and give it to apache
    • use to go straight to flash server
  • Amazon S3 HTTTP Post
    • doc.s3.amazonaws.com/proposals/post.html
    • takes upload and stores on amazon
  • Blip.tv
    • wiki.blip.tv/index.php/REST_upload
  • plone bookmarklets

"RIA with kss, extjs and more" by Godefroid Chapelle

  • RIA(Rich Internet Applications)
    • like desktop apps
  • faster
    • only rendering new edit window instead of render whole new page
    • dialogs..
    • still renders plone widgets
    • no full page reloads
  • uses blueprint.css
    • css framework
    • grid layout
  • extjs license
    • releases under GPL3
    • no access to svn though
    • only access to released code
    • highly configurable
    • stylable
    • event system
    • data stores
  • ease of development
    • z3c.form
    • z3c.table
  • eggs
    • collective.extjs
    • kss.plugin.extjs
    • collective.z3ctable.extjs
    • collective.blueprint
    • collective.z3cform.contentproviders

"Collective Good"

  • before you create, make sure...
    • does it scratch an itch
    • worth a new product
    • willing to maintain this?
  • issues to consider
    • uninstall does no harm
    • install only affects one site(some zope stuff)
    • install shouldn't nuke site
  • first tests
    • installs js, css, skins, etc
    • uninstall test... gets rid of junk
  • browserlayers!
  • play well with others
    • no new wheels
    • viewlets
    • subtype/schema extend
    • go by naming styles in base-properties
    • do not always create new types!
      • uninstall without losing content
  • plan for widespread use
    • unit test
    • functional tests
    • browser tests
    • i18n
    • eggify
    • compatibility
      • support two versions of plone at a time
      • check out ploneformgen -> great examples
      • separate skins folders for 2.5 and 3.0
  • plan for customization
    • separate logic from presentation
    • user browser views
  • am I ready for parenthood
    • use collective but don't put up on plone.org
    • good name
    • good documentation
      • HISTORY.txt
      • comments in code, generic setup
    • good storage
      • collective
      • release product to plone.org as tarball
      • pypi
      • never delete tags from svn
      • never put import pdb in collective
    • namespace is not the Product name!
  • stewardship
    • release
    • never delete release
    • maintain
    • migrate
      • hook into install method of product(Install.py)
      • GS - setup handlers
Document Actions
  • Print this
  • Bookmarks