SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Building a Humane CMS with Plone
                                       Naples Conference 2007




                     Joel Burton <joel@joelburton.com>
       Author:
                     Copyright 2007 Joel Burton. All rights reserved.
       Copyright:
                     Plone 2.5 or newer
       Covering:
                     Distribution outside of presentation prohibited.
       Notice:
                     PloneBootcamps: www.plonebootcamps.com
       Company:



Contents
1   Building a Humane CMS with Plone                                                                                                                                 3
    1.1 Introduction . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
         1.1.1 Welcome . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
         1.1.2 Who Am I? . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
         1.1.3 Our Inspiration . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
         1.1.4 Background . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
         1.1.5 Profile . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
         1.1.6 Goals . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
    1.2 Adding the Right Type . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
         1.2.1 Specialized Factory Forms . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
         1.2.2 Specialized Factory Forms . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
         1.2.3 Obvious Choice for Content Types          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
         1.2.4 Same Thing; Different Name . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
         1.2.5 What Users Guessed . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
    1.3 Content Creation . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
         1.3.1 How to Structure Site . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
         1.3.2 How to Structure Site (2) . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
         1.3.3 How To Structure Site (3) . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
         1.3.4 Content in the Right Place . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
         1.3.5 Content in the Right Place (2) . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
         1.3.6 Content in the Right Place (3) . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
         1.3.7 Content in the Right Place (4) . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
         1.3.8 Composition . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
         1.3.9 Composition Details . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
         1.3.10 Only Folderish Things At Top . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
         1.3.11 Removing “My Folder” . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
    1.4 Editing Content . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
         1.4.1 Edit Forms: General . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
         1.4.2 Getting Checkboxes . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9
         1.4.3 Explaining Multiselect . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9
         1.4.4 Edit Forms: Dates . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9
         1.4.5 Edit Forms: Keywords . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9
         1.4.6 Keywords vs Categories . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9



                                                     1
CONTENTS                                                                                                                                      CONTENTS


       1.4.7 Renaming “Categories” . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
       1.4.8 Customizing Kupu . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
       1.4.9 Remove Buttons from Kupu . . . . . .             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
       1.4.10 Kupu Style Menu . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
       1.4.11 Kupu Drawers and Your Types . . . .             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
       1.4.12 Click to Edit . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
       1.4.13 Click to Edit Caveats . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
       1.4.14 Oh, the Humanity! . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
       1.4.15 Dependent Items . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
       1.4.16 Dependent Items . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
  1.5 Simplifying Interface . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
       1.5.1 Power Users . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
       1.5.2 Undo . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
       1.5.3 “Undo” for Other Users . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
       1.5.4 Properties Tab . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
       1.5.5 Effective/Expiration Date . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
       1.5.6 Display Menu . . . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
       1.5.7 Default Page . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
       1.5.8 Add Menu . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
       1.5.9 Actions Menu . . . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
       1.5.10 Cut/Copy/Paste . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
       1.5.11 Duplicate . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
       1.5.12 Sharing Tab . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
  1.6 Features . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
       1.6.1 Smart Folders . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
       1.6.2 Smart Folder Criteria . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
       1.6.3 Smart Folder Criteria . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
       1.6.4 Smart Folder Dates . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
       1.6.5 Show All or Published? . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16
       1.6.6 RSS . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16
       1.6.7 Keywords . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16
       1.6.8 Workflow . . . . . . . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16
       1.6.9 Simple Workflow . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16
       1.6.10 Easy to Use Workflows . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
       1.6.11 Obvious Workflow Security . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
       1.6.12 Use Workflow At All? . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
  1.7 CMFEditions . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
       1.7.1 CMFEditions . . . . . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
  1.8 Iterate . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
       1.8.1 Iterate . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
  1.9 Consistency of Solutions . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
       1.9.1 Smart Folder Where Possible . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
       1.9.2 Example: EZPortlet . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
       1.9.3 Example: Filtered Smart Folders . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
  1.10 Consistency of Appearance . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
       1.10.1 Document Actions . . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
       1.10.2 base_view-based Skin . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
       1.10.3 base_view Macros . . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
       1.10.4 base_view Macros (2) . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
       1.10.5 Another base_view-based Skin . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
       1.10.6 Consistency of KSS/Field Appearance             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
       1.10.7 base_view Example . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
  1.11 Usability Testing . . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20




                                                      2
1 BUILDING A HUMANE CMS WITH PLONE


          1.11.1   Usability Testing . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
          1.11.2   Testing on the Cheap    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
          1.11.3   Sample Lessons . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
          1.11.4   Thanks! . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21




1 Building a Humane CMS with Plone


1.1     Introduction


1.1.1   Welcome
   • Handouts at:

            http://plonebootcamps.com/resources/humane.pdf

   • Sample product at:

            http://plonebootcamps.com/resources/humane.zip



1.1.2   Who Am I?
   • Plone developer & consultant

   • Developer & Trainer of “Plone Bootcamp”

          – 5-day, hands-on integrator-focused class

   • Work mostly with large public sites

          – Many unsophisticated content editors



1.1.3   Our Inspiration
        I could count twenty such
        Who strive
        To paint a little thing like that you smeared
           ...
        Yet do much less--so much less!
        Well, less is more

          -- Andrea del Sarto (1486-1531)




                                                                       3
1.2 Adding the Right Type                                 1 BUILDING A HUMANE CMS WITH PLONE


1.1.4   Background
   • Consulting engagement to test Plone usability

         – Classic videocamera & tasks setup
         – Data compiled by external UI consultant

   • Formal study done for a 2.5 site

         – 3.0 information is less formal (so far!)



1.1.5   Profile
   • Incidental to semi-regular content contributor

         – Won’t learn much about Plone
         – Won’t do often enough to remember everything
         – Ease of use over “bells and whistles”



1.1.6   Goals
   • Fewer options for content placement

   • Correct choices about content types

   • Power user options just for power users

   • Less geekish complexity

   • Sane workflow/security
   • Consistency in UI & methods




1.2     Adding the Right Type


1.2.1   Specialized Factory Forms
   • “Make more like me”

         – On a piece of content have a link to “Make New ___ Item”
   • You can create content-creation links:

           /folder/createObject?type_name=My+Type




                                                      4
1.2 Adding the Right Type                               1 BUILDING A HUMANE CMS WITH PLONE


1.2.2   Specialized Factory Forms
   • newsitem_additional portlet

           <dl class=quot;portletquot; metal:define-macro=quot;portletquot;
               tal:define=quot;newsfolder nocall: portal/newsquot;
               tal:condition=quot;python:
                   checkPermission(’Add portal content’, newsfolder)
                   and checkPermission(’ATContentTypes: Add News Item’, newsfolder)quot;>
             <dt class=quot;portletHeaderquot;>News Item</dt>
             <dd class=quot;portletItemquot;>
               <form tal:attributes=quot;action string:$portal_url/newsquot;>
                 <input class=quot;standalonequot; type=quot;submitquot; value=quot;Add News Itemquot; />
                 <input type=quot;hiddenquot; name=quot;type_namequot; value=quot;News Itemquot; />
               </form>
             </dd>
           </dl>



1.2.3   Obvious Choice for Content Types
   • Give things the “right” title

         – Can rename title of type without problem
           Once you re-title a content type, you should reindex the catalog.
           It is possible for this not work well; add-on products can make hard-wired assumptions
           about the title of the content type, but this is bad behavior.
           As developers, you should only write queries/code that deal with portal_type, not with
           Type.
         – Can re-use title of type; don’t have to be unique across site

   • Don’t forget to update description

         – Used in mouseovers and factory forms



1.2.4   Same Thing; Different Name
   • Users find “File” confusing

         – Make separate types:
             ∗ Word Document
             ∗ Powerpoint Document
             ∗ PDF Document

   • This “fits peoples brains”

         – Plus, allows separate searching




                                                    5
1.3 Content Creation                                 1 BUILDING A HUMANE CMS WITH PLONE


1.2.5   What Users Guessed
   • For Powerpoint file:
         – Event (it’s a presentation)
         – News Item (it’s newsworthy)
         – Image (there are graphics in it)
         – Folder (it has lots of slides)
         – Page (are slides pages?)
         – File (phew!)



1.3     Content Creation


1.3.1   How to Structure Site
   • Member’s folder:
           http://site.org/Members/joel/project-a

         – “My Documents” feeling
         – Bad URLs
             ∗ What happens when ownership moves?
                · Wrong location or broken URL
         – Useful for community sites



1.3.2   How to Structure Site (2)
   • Folder of like content:
           http://site.org/events/party

         – Requires users to have permissions here
         – Useful when one person/department manages items of that type



1.3.3   How To Structure Site (3)
   • By project / authority:
           http://college.edu/chemistry
           http://college.edu/biology

         – Location should follow security
         – Generally, the most useful
         – Type-specific folders within:
                http://college.edu/chemistry/events/party




                                                 6
1.3 Content Creation                                    1 BUILDING A HUMANE CMS WITH PLONE


1.3.4   Content in the Right Place
   • Restrict what’s addable in folders using “restrict...”
         – Use the preferred/not-preferred
              ∗ Also gives help via factory form



1.3.5   Content in the Right Place (2)
   • Restricting what’s addable techniques
         – In the ZMI
         – In Install.py
         – In GS (using setupVarious technique)
              ∗ Cannot be done now in .xml files



1.3.6   Content in the Right Place (3)
   • Create specialized folder types
         – Cloning type in portal_types
              ∗ Fast and easy
              ∗ Can be done in GS with types.xml
         – Creating new Archetype based on other
              ∗ More flexible for future
   • “Staff Directory” is clone of “Folder”



1.3.7   Content in the Right Place (4)
   • Specialized folder types techniques
         – Cloning
              ∗ In ZMI portal_types
              ∗ GenericSetup



1.3.8   Composition
   • Bookstores hold only books
   • Books are held only in libraries

        Bookstore                 Book




                                                    7
1.4 Editing Content                                      1 BUILDING A HUMANE CMS WITH PLONE


1.3.9    Composition Details
   • Creates folder/contained setup

          – Ensures folder is folder
          – Folder holds just child
          – Child only addable in folder

   • “Composition”

          – Black diamond points to parent



1.3.10    Only Folderish Things At Top
   • Nothing but folders (& smart folders) at root

          – Well-organized
          – Models good behavior

   • Can change in portal_types/Portal

          – Can be done in GS with types.xml



1.3.11    Removing “My Folder”
   • Few sites really want user folders

          – Confusing to leave them around
          – Become a magnet for junk

   • Just delete “Members” folder

          – In Plone 3, controlled by “Enable User Folders” in Security control panel




1.4      Editing Content


1.4.1    Edit Forms: General
   • Avoid multiselect boxes

          – Many people don’t know how to select multiple
          – List of checkbox is much better
          – If multiselects are required, explain how to select multiple




                                                     8
1.4 Editing Content                                   1 BUILDING A HUMANE CMS WITH PLONE


1.4.2   Getting Checkboxes
   • In your Archetype UML, for multiselect field:

           widget:format = checkbox         # default is quot;selectquot;



1.4.3   Explaining Multiselect
   • In your Archetype UML:

           widget:description =
             Hold control CONTROL (Mac users: COMMAND) to select
             multiple items



1.4.4   Edit Forms: Dates
   • People hate the drop-down menus

         – Slower, limited range of dates
         – Replace with add-on product, DateBox
             ∗ Allows textual entry in any form
             ∗ Plus ideas like “yesterday”
             ∗ Immediately turns into canonical format



1.4.5   Edit Forms: Keywords
   • Most useful organizational tool

         – But underused

   • Move keywords onto edit form

         – Call “tags”
           I’ve found that the term “keyword” seems scary to people, but calling this “tags” seems
           more friendly.
         – Use AddRemoveWidget



1.4.6   Keywords vs Categories
   • Early to tell for sure, but ...

         – People find “categories” confusing
             ∗ Suggests a structured taxonomy
             ∗ With a single place
         – “Tags” is probably still best




                                                  9
1.4 Editing Content                                       1 BUILDING A HUMANE CMS WITH PLONE


1.4.7    Renaming “Categories”
   • Patch AT’s “subject” field

          – See AAAStuff product

   • Or handle using i18n tools
          – msgid is “label_categories”



1.4.8    Customizing Kupu
   • Can customize with XML
   • But easier to do in CSS, and easier for upgrading:

            #kupu-subscript-button { display: none; }

   • In Plone 3, tool allows customization



1.4.9    Remove Buttons from Kupu
   • You probably don’t want

          – superscript, subscript
          – definition lists
          – full-screen button
   • You might not want

          – tables
          – left, center, right justify



1.4.10   Kupu Style Menu
   • Add classes to kupu menu
          – Single best thing you can do for users

   • Can add classes per type-of-content:

            TextField(’text’,
                widget=RichWidget(
                    parastyles=(
                     (’div|contactInformation’,’Contact Information’),
                     (’div|notesToEditors’,’Notes to editors’), ),
                ),
            ),




                                                     10
1.4 Editing Content                                      1 BUILDING A HUMANE CMS WITH PLONE


1.4.11   Kupu Drawers and Your Types
   • Add new content types to kupu “resource types”

         – Otherwise, can’t link to/browse in Kupu
         – Folderish things: add to “collection”
         – Images/movies with tag(): add to “mediaobjects”
         – Everything: add to “linkable”

   • In Plone 3, can happen automatically



1.4.12   Click to Edit
   • View screens for content allow click-to-edit

         – Excellent for power-users doing fast edits
         – Sometimes confusing for novice users
             ∗ Easy to trigger unexpected errors
         – Powered by KSS and async JavaScript (AJAX)



1.4.13   Click to Edit Caveats
   • Only works with

         – Uncustomized Archetype views
         – “Plone 3-ified” view templates
             ∗ Since practically no one did things to anticipate this
   • Not (yet) supported for all AT field types

         – Missing for float, lines, and others
         – Not supported for add-on field types



1.4.14   Oh, the Humanity!
   • Early research shows confusing for end-users

         – May get better as it gets refined
         – Can turn off by turning off at.kss in portal_kss
             ∗ This loses live validation on edit form, though
             ∗ Refactoring may allow this to be easier in future




                                                    11
1.5 Simplifying Interface                                 1 BUILDING A HUMANE CMS WITH PLONE


1.4.15    Dependent Items
   • Confusing to users that image isn’t “in” document
          – Different workflow, separate title, etc.
   • RichDocument keeps images/files inside document



1.4.16    Dependent Items
   • Can also use kupu’s ReffieldText sets references for images, links
          – Can caption images automatically
          – With references, can move workflow together, etc.




1.5      Simplifying Interface


1.5.1    Power Users
   • The people who everyone turns to
   • The people who think they are
   • Make a role for it!
          – In GS, using rolemap.xml



1.5.2    Undo
   • Can be complex to understand
          – Seeing all objects listed
          – Dependencies of undoing
   • Too complex for most users
          – And most turn to power users anyway
   • Control with “List undoable changes” permission



1.5.3    “Undo” for Other Users
   • May find it helpful to keep “undo” in user bar
          – People are used to it
          – Could point to History tab of item
                ∗ Or a template pointing toward Power Users




                                                     12
1.5 Simplifying Interface                               1 BUILDING A HUMANE CMS WITH PLONE


1.5.4   Properties Tab
   • “Metadata” versus “data” is weak distinction

   • Often entirely ignored

   • Move useful things onto edit tab
         – Leave esoteric stuff for power users

   • Handled in Plone 3



1.5.5   Effective/Expiration Date
   • Called “Publishing Date” in Plone 3

         – Confuses people that it’s related to “publish” transition
         – Suggest changing back to “effective date”

   • In general, these confuse most people

         – And are not commonly needed

   • Recommend: protect with write_permission tied to PowerUser



1.5.6   Display Menu
   • Remove skins that won’t be used

         – In many cases, only one makes sense
         – Change in portal_types for your type

   • Control with “Modify view template” permission



1.5.7   Default Page
   • Tricky concept for many users

         – Often, having a body field for folderish item is easier

   • Can turn off with:

           def canSetDefaultPage(self):
               quot;quot;quot;Disallow setting default page.quot;quot;quot;
               return False




                                                   13
1.5 Simplifying Interface                                   1 BUILDING A HUMANE CMS WITH PLONE


1.5.8    Add Menu
   • “Restrict” may be not useful
          – Especially for a specialized folder type
   • Control with “Modify constrain types” permission
   • Can turn off with:
            def canSetConstrainTypes(self):
                quot;quot;quot;Disallow ’restrict’ choicequot;quot;quot;
                return False



1.5.9    Actions Menu
   • Rename allows people to break links
          – Which they often don’t understand
          – Make for power users only
             ∗ Don’t change permission--some products assume rename capabilities
             ∗ Change in portal_actions.



1.5.10   Cut/Copy/Paste
   • People can find confusing
          – Allows them to move content
          – Non-obvious why you can’t paste into certain places
   • Make for power users only



1.5.11   Duplicate
   • People often expect “copy” to make a copy
          – Not copy to clipboard
   • “Duplicate” action is very helpful
          – Implemented in humane product



1.5.12   Sharing Tab
   • Useful feature, but complex form
          – Simplified in Plone 3
   • Consider making for power users
   • Or, offering simplified sharing tab
          – Can only share Owner role
              ∗ Or, Editor/Contributor/Reader, etc.




                                                       14
1.6 Features                                                1 BUILDING A HUMANE CMS WITH PLONE


1.6     Features


1.6.1   Smart Folders
   • Too tricky for ordinary users to make

         – Good use for “Power User” role
         – Create sample smart folders, users can duplicate & modify
   • Smart folders to find forgotten content (ie, never submitted/published)



1.6.2   Smart Folder Criteria
   • and / or criteria always confuses people

         – Assume this is and/or across predicates
             ∗ It’s any/all of choices for predicate
   • Suggest: change to any / all

         – Can change CompareOperators in ATContentType/criteria/selection
             ∗ Or handle via i18n



1.6.3   Smart Folder Criteria
   • Some changes make no sense with all choice
         – A single piece of content cannot have multiple
             ∗ portal_type, workflow, etc.

   • Fixing would require adding logic to Smart Folders for this

         – Best handled now with training



1.6.4   Smart Folder Dates
   • Relative dates have 3-set choices

         – “More than” “1 week” “in the past”
             ∗ Is that older than one week? Or newer?
                  · Many people get wrong!

   • Change to “ago” in ATContentTypes/criteria/dates/RangeOperator

         – Or handle in i18n




                                                       15
1.6 Features                                          1 BUILDING A HUMANE CMS WITH PLONE


1.6.5   Show All or Published?
   • Show all? Or just published?
   • Either confuses people
         – “Ack! My private stuff is showing!”
         – “Ack! Where’s my personal stuff?”
   • Pick your poision
         – Showing non-published is usually easier
             ∗ Especially with color-coded workflow hints



1.6.6   RSS
   • Underused by normal users
         – Few have dedicated RSS readers
   • In-browser RSS readers can simplify
         – “Sage” for Firefox
   • Dashboards in Plone 3 help, too



1.6.7   Keywords
   • Stock sample keywords
         – Make private document with starter keywords
   • Use PloneKeywordManager to clean up keyword space



1.6.8   Workflow
   • Simpler is usually better
         – The more steps, the less attention



1.6.9   Simple Workflow
   • Simple and trusting

        Hide
                      Pending
          Submit                   Publish



                       Publish
        Draft                        Published
                        Hide



   • Review portal content given out freely




                                                 16
1.7 CMFEditions                                           1 BUILDING A HUMANE CMS WITH PLONE


1.6.10    Easy to Use Workflows
   • Transitions for all stages
          – Can publish from hidden, hide from published, etc.
          – Fixed in recent Plone



1.6.11    Obvious Workflow Security
   • Visible things in private folders are visible
          – Our worst security/UI choice
          – 90% of my students don’t expect
   • Fix or document thoroughly!



1.6.12    Use Workflow At All?
   • For intranet/planning sites, may be superfluous
   • Can change workflow to single state
          – But still shows up in UI
          – Can hide menu with:
                #statusMenu {display: none; }
          – Or can modify template



1.7      CMFEditions


1.7.1    CMFEditions
   • Initial studying shows good usability
          – “Revision 0” has confused some people
              ∗ “Revision 1” might be better
   • Ensure people understand it’s not time travel



1.8      Iterate


1.8.1    Iterate
   • Initial studying shows good usability
          – But staging itself is more than most sites need




                                                     17
1.9 Consistency of Solutions                             1 BUILDING A HUMANE CMS WITH PLONE


1.9      Consistency of Solutions


1.9.1    Smart Folder Where Possible
   • Much integration can be done with Smart Folder
          – “Collections” in 3.0
   • Provides consistent way to express queries
          – People can learn once and re-use



1.9.2    Example: EZPortlet
   • Proof-of-concept portlet
          – Show results of any smart folder



1.9.3    Example: Filtered Smart Folders
   • Smart folders with trimming or extending



1.10      Consistency of Appearance


1.10.1    Document Actions
   • Print this page, email to friend, etc.
          – Moved from top -> bottom in 2.5 -> 3.0
          – Switch from icons to text
   • 2.5 products/existing skins will still be at top
          – Consistency is very important



1.10.2    base_view-based Skin
   • movie_view Page Template:
            <div metal:define-macro=quot;bodyquot;>
              <p>Director:
                <i tal:content=quot;context/directorquot;>[Dir]</i>
              </p>
              <p>Rating:
                <b tal:content=quot;context/ratingquot;>[Rating]</b>
              </p>
            </div>




                                                    18
1.10 Consistency of Appearance                          1 BUILDING A HUMANE CMS WITH PLONE


1.10.3    base_view Macros




1.10.4    base_view Macros (2)
   • header
   • body
   • footer
           – Normally empty
   • folderlisting
           – Listing of child objects in folders
           – Override with empty to prevent this



1.10.5    Another base_view-based Skin
   • movie_view Page Template:
             <div metal:define-macro=quot;headerquot;>
               <h1 tal:content=quot;string:
                 Movie Info: ${context/Title}quot;>[Title]</h1>
             </div>

             <div metal:define-macro=quot;footerquot;>
               <p>Movie data is from IMDB.</p>
             </div>

   This example is too simplified: our header macro replaces the entire header, which should contain
the styles to show the print-this-page button and send-to-friend button.
   A realistic header replacement should contain:
         <h1 tal:content=quot;context/title_or_idquot;
             class=quot;documentFirstHeadingquot;>
           Title or id
         </h1>




                                                   19
1.11 Usability Testing                                    1 BUILDING A HUMANE CMS WITH PLONE


         <div metal:use-macro=quot;
           context/document_actions/macros/document_actionsquot;>
             Document actions (print, sendto etc)
         </div>



1.10.6    Consistency of KSS/Field Appearance
   • Can output view widget for field

           – As opposed to using accessor directly

   • Will allow inline editing in Plone 3

           – And other advantages of widget
               ∗ LinkField might show URL as link



1.10.7    base_view Example
   • yourtype_view.pt :

             <div metal:define-macro=quot;bodyquot;>
               <div metal:use-macro=quot;python:
                    context.widget(’myfield’)quot; />
             </div>




1.11      Usability Testing


1.11.1    Usability Testing
   • Science of observation

           – Not of personal theory :)

   • No sustitute for observing unprompted users



1.11.2    Testing on the Cheap
   • Don’t need a camera / mirrors / consultant

   • Do need a script of tasks

           – Keep them the same for all testers

   • Do need testers unfamiliar with Plone

   • Ask users to explain what they’re thinking




                                                     20
1.11 Usability Testing                                1 BUILDING A HUMANE CMS WITH PLONE


1.11.3   Sample Lessons
   • User being asked to add a Powerpoint file to a 2.5 portal:

           Well, I guess I should go into my folder. [Clicks]
           I’ll look in contents so I can add it
           [Missing quicker add menu]. Powerpoint are
           presentations, so I’ll add it as an Event ...



1.11.4   Thanks!
   • I’d love your ideas and feedback:

           joel@joelburton.com

   • Handouts online at:
           http://plonebootcamps.com/resources




                                                 21

Más contenido relacionado

La actualidad más candente

Plesk Sitebuilder 4.5 for Linux/Unix Wizard User's Guide
Plesk Sitebuilder 4.5 for Linux/Unix Wizard User's GuidePlesk Sitebuilder 4.5 for Linux/Unix Wizard User's Guide
Plesk Sitebuilder 4.5 for Linux/Unix Wizard User's Guidewebhostingguy
 
Ppdg Robust File Replication
Ppdg Robust File ReplicationPpdg Robust File Replication
Ppdg Robust File Replicationguest0dc8a2
 
Parallels Plesk Panel 9 Client's Guide
Parallels Plesk Panel 9 Client's GuideParallels Plesk Panel 9 Client's Guide
Parallels Plesk Panel 9 Client's Guidewebhostingguy
 
Creating andrCreating-Android-Applicationsoid-applications
Creating andrCreating-Android-Applicationsoid-applicationsCreating andrCreating-Android-Applicationsoid-applications
Creating andrCreating-Android-Applicationsoid-applicationsMarwoutta Dh
 
Information extraction systems aspects and characteristics
Information extraction systems  aspects and characteristicsInformation extraction systems  aspects and characteristics
Information extraction systems aspects and characteristicsGeorge Ang
 
KSS Techniques - Joel Burton
KSS Techniques - Joel BurtonKSS Techniques - Joel Burton
KSS Techniques - Joel BurtonJeffrey Clark
 
SchoolAdmin - School Fees Collection & Accounting Software
SchoolAdmin - School Fees Collection & Accounting SoftwareSchoolAdmin - School Fees Collection & Accounting Software
SchoolAdmin - School Fees Collection & Accounting SoftwareRanganath Shivaram
 
Data Export 2010 for MySQL
Data Export 2010 for MySQLData Export 2010 for MySQL
Data Export 2010 for MySQLwebhostingguy
 
The MySQL Cluster API Developer Guide
The MySQL Cluster API Developer GuideThe MySQL Cluster API Developer Guide
The MySQL Cluster API Developer Guidewebhostingguy
 
Peachpit mastering xcode 4 develop and design sep 2011
Peachpit mastering xcode 4 develop and design sep 2011Peachpit mastering xcode 4 develop and design sep 2011
Peachpit mastering xcode 4 develop and design sep 2011Jose Erickson
 
Code Conventions
Code ConventionsCode Conventions
Code Conventions51 lecture
 
Hello, android introducing google’s mobile development platform, 2nd editio...
Hello, android   introducing google’s mobile development platform, 2nd editio...Hello, android   introducing google’s mobile development platform, 2nd editio...
Hello, android introducing google’s mobile development platform, 2nd editio...Kwanzoo Dev
 

La actualidad más candente (19)

Plesk Sitebuilder 4.5 for Linux/Unix Wizard User's Guide
Plesk Sitebuilder 4.5 for Linux/Unix Wizard User's GuidePlesk Sitebuilder 4.5 for Linux/Unix Wizard User's Guide
Plesk Sitebuilder 4.5 for Linux/Unix Wizard User's Guide
 
Ppdg Robust File Replication
Ppdg Robust File ReplicationPpdg Robust File Replication
Ppdg Robust File Replication
 
Parallels Plesk Panel 9 Client's Guide
Parallels Plesk Panel 9 Client's GuideParallels Plesk Panel 9 Client's Guide
Parallels Plesk Panel 9 Client's Guide
 
Flask docs
Flask docsFlask docs
Flask docs
 
R Lang
R LangR Lang
R Lang
 
Creating andrCreating-Android-Applicationsoid-applications
Creating andrCreating-Android-Applicationsoid-applicationsCreating andrCreating-Android-Applicationsoid-applications
Creating andrCreating-Android-Applicationsoid-applications
 
Csharp
CsharpCsharp
Csharp
 
Information extraction systems aspects and characteristics
Information extraction systems  aspects and characteristicsInformation extraction systems  aspects and characteristics
Information extraction systems aspects and characteristics
 
Red hat enterprise_linux-7-system_administrators_guide-en-us
Red hat enterprise_linux-7-system_administrators_guide-en-usRed hat enterprise_linux-7-system_administrators_guide-en-us
Red hat enterprise_linux-7-system_administrators_guide-en-us
 
Tommy Marker
Tommy MarkerTommy Marker
Tommy Marker
 
KSS Techniques - Joel Burton
KSS Techniques - Joel BurtonKSS Techniques - Joel Burton
KSS Techniques - Joel Burton
 
SchoolAdmin - School Fees Collection & Accounting Software
SchoolAdmin - School Fees Collection & Accounting SoftwareSchoolAdmin - School Fees Collection & Accounting Software
SchoolAdmin - School Fees Collection & Accounting Software
 
Data Export 2010 for MySQL
Data Export 2010 for MySQLData Export 2010 for MySQL
Data Export 2010 for MySQL
 
The MySQL Cluster API Developer Guide
The MySQL Cluster API Developer GuideThe MySQL Cluster API Developer Guide
The MySQL Cluster API Developer Guide
 
Peachpit mastering xcode 4 develop and design sep 2011
Peachpit mastering xcode 4 develop and design sep 2011Peachpit mastering xcode 4 develop and design sep 2011
Peachpit mastering xcode 4 develop and design sep 2011
 
Java web programming
Java web programmingJava web programming
Java web programming
 
Multiboot
MultibootMultiboot
Multiboot
 
Code Conventions
Code ConventionsCode Conventions
Code Conventions
 
Hello, android introducing google’s mobile development platform, 2nd editio...
Hello, android   introducing google’s mobile development platform, 2nd editio...Hello, android   introducing google’s mobile development platform, 2nd editio...
Hello, android introducing google’s mobile development platform, 2nd editio...
 

Similar a Building a humane CMS for Plone: updated tutorial

Similar a Building a humane CMS for Plone: updated tutorial (20)

School software
School softwareSchool software
School software
 
Winning noble
Winning nobleWinning noble
Winning noble
 
By d ui_styleguide_2012_fp35
By d ui_styleguide_2012_fp35By d ui_styleguide_2012_fp35
By d ui_styleguide_2012_fp35
 
Tortoise hg
Tortoise hgTortoise hg
Tortoise hg
 
Tortoise hg
Tortoise hgTortoise hg
Tortoise hg
 
R Ints
R IntsR Ints
R Ints
 
Analysis Of The Modern Methods For Web Positioning
Analysis Of The Modern Methods For Web PositioningAnalysis Of The Modern Methods For Web Positioning
Analysis Of The Modern Methods For Web Positioning
 
Mi ps
Mi psMi ps
Mi ps
 
The C Preprocessor
The C PreprocessorThe C Preprocessor
The C Preprocessor
 
Kernel
KernelKernel
Kernel
 
Ibm info sphere datastage data flow and job design
Ibm info sphere datastage data flow and job designIbm info sphere datastage data flow and job design
Ibm info sphere datastage data flow and job design
 
LSI_SAS2008_Manual_v100.pdf
LSI_SAS2008_Manual_v100.pdfLSI_SAS2008_Manual_v100.pdf
LSI_SAS2008_Manual_v100.pdf
 
MarvelSoft Library Management Software Guide
MarvelSoft Library Management Software GuideMarvelSoft Library Management Software Guide
MarvelSoft Library Management Software Guide
 
Oscom23 old
Oscom23 oldOscom23 old
Oscom23 old
 
Dsa
DsaDsa
Dsa
 
cs-2002-01
cs-2002-01cs-2002-01
cs-2002-01
 
Red book Blueworks Live
Red book Blueworks LiveRed book Blueworks Live
Red book Blueworks Live
 
Bwl red book
Bwl red bookBwl red book
Bwl red book
 
Code Conventions
Code ConventionsCode Conventions
Code Conventions
 
Creating Scientific Posters
Creating Scientific PostersCreating Scientific Posters
Creating Scientific Posters
 

Más de Vincenzo Barone

Sally Kleinfeldt - Plone Application Development Patterns
Sally Kleinfeldt - Plone Application Development PatternsSally Kleinfeldt - Plone Application Development Patterns
Sally Kleinfeldt - Plone Application Development PatternsVincenzo Barone
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneVincenzo Barone
 
ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...Vincenzo Barone
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 wayVincenzo Barone
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)Vincenzo Barone
 
Wichert Akkerman Plone Deployment Practices The Plone.Org Setup
Wichert Akkerman   Plone Deployment Practices   The Plone.Org SetupWichert Akkerman   Plone Deployment Practices   The Plone.Org Setup
Wichert Akkerman Plone Deployment Practices The Plone.Org SetupVincenzo Barone
 
Philipp Von Weitershausen Untested Code Is Broken Code
Philipp Von Weitershausen   Untested Code Is Broken CodePhilipp Von Weitershausen   Untested Code Is Broken Code
Philipp Von Weitershausen Untested Code Is Broken CodeVincenzo Barone
 
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...Vincenzo Barone
 
Rocky Burt Subtyping Unleashed
Rocky Burt   Subtyping UnleashedRocky Burt   Subtyping Unleashed
Rocky Burt Subtyping UnleashedVincenzo Barone
 
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...Vincenzo Barone
 
Wageindicator Foundation: a Case Study
Wageindicator Foundation: a Case StudyWageindicator Foundation: a Case Study
Wageindicator Foundation: a Case StudyVincenzo Barone
 
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product DevelopmentTom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product DevelopmentVincenzo Barone
 
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...
Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...Vincenzo Barone
 
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...Vincenzo Barone
 
Wichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org InfrastructureWichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org InfrastructureVincenzo Barone
 
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...Vincenzo Barone
 
Denis Mishunov Making Plone Theme 10 Most Wanted Tips
Denis Mishunov   Making Plone Theme   10 Most Wanted Tips Denis Mishunov   Making Plone Theme   10 Most Wanted Tips
Denis Mishunov Making Plone Theme 10 Most Wanted Tips Vincenzo Barone
 
Duncan Booth Kupu, Past Present And Future
Duncan Booth   Kupu, Past Present And FutureDuncan Booth   Kupu, Past Present And Future
Duncan Booth Kupu, Past Present And FutureVincenzo Barone
 
Jeroen Vloothuis Bend Kss To Your Will
Jeroen Vloothuis   Bend Kss To Your WillJeroen Vloothuis   Bend Kss To Your Will
Jeroen Vloothuis Bend Kss To Your WillVincenzo Barone
 
Jared Whitlock Open Source In The Enterprise Plone @ Novell
Jared Whitlock   Open Source In The Enterprise    Plone @ NovellJared Whitlock   Open Source In The Enterprise    Plone @ Novell
Jared Whitlock Open Source In The Enterprise Plone @ NovellVincenzo Barone
 

Más de Vincenzo Barone (20)

Sally Kleinfeldt - Plone Application Development Patterns
Sally Kleinfeldt - Plone Application Development PatternsSally Kleinfeldt - Plone Application Development Patterns
Sally Kleinfeldt - Plone Application Development Patterns
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind Plone
 
ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 way
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
 
Wichert Akkerman Plone Deployment Practices The Plone.Org Setup
Wichert Akkerman   Plone Deployment Practices   The Plone.Org SetupWichert Akkerman   Plone Deployment Practices   The Plone.Org Setup
Wichert Akkerman Plone Deployment Practices The Plone.Org Setup
 
Philipp Von Weitershausen Untested Code Is Broken Code
Philipp Von Weitershausen   Untested Code Is Broken CodePhilipp Von Weitershausen   Untested Code Is Broken Code
Philipp Von Weitershausen Untested Code Is Broken Code
 
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
 
Rocky Burt Subtyping Unleashed
Rocky Burt   Subtyping UnleashedRocky Burt   Subtyping Unleashed
Rocky Burt Subtyping Unleashed
 
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
 
Wageindicator Foundation: a Case Study
Wageindicator Foundation: a Case StudyWageindicator Foundation: a Case Study
Wageindicator Foundation: a Case Study
 
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product DevelopmentTom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
 
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...
Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...
 
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
 
Wichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org InfrastructureWichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org Infrastructure
 
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
 
Denis Mishunov Making Plone Theme 10 Most Wanted Tips
Denis Mishunov   Making Plone Theme   10 Most Wanted Tips Denis Mishunov   Making Plone Theme   10 Most Wanted Tips
Denis Mishunov Making Plone Theme 10 Most Wanted Tips
 
Duncan Booth Kupu, Past Present And Future
Duncan Booth   Kupu, Past Present And FutureDuncan Booth   Kupu, Past Present And Future
Duncan Booth Kupu, Past Present And Future
 
Jeroen Vloothuis Bend Kss To Your Will
Jeroen Vloothuis   Bend Kss To Your WillJeroen Vloothuis   Bend Kss To Your Will
Jeroen Vloothuis Bend Kss To Your Will
 
Jared Whitlock Open Source In The Enterprise Plone @ Novell
Jared Whitlock   Open Source In The Enterprise    Plone @ NovellJared Whitlock   Open Source In The Enterprise    Plone @ Novell
Jared Whitlock Open Source In The Enterprise Plone @ Novell
 

Último

Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Servicecallgirls2057
 
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCRashishs7044
 
Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Anamaria Contreras
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCRashishs7044
 
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCRashishs7044
 
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!Doge Mining Website
 
Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMintel Group
 
Kenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby AfricaKenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby Africaictsugar
 
Chapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditChapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditNhtLNguyn9
 
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
8447779800, Low rate Call girls in Uttam Nagar Delhi NCRashishs7044
 
Buy gmail accounts.pdf Buy Old Gmail Accounts
Buy gmail accounts.pdf Buy Old Gmail AccountsBuy gmail accounts.pdf Buy Old Gmail Accounts
Buy gmail accounts.pdf Buy Old Gmail AccountsBuy Verified Accounts
 
Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Seta Wicaksana
 
Digital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfDigital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfJos Voskuil
 
Guide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFGuide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFChandresh Chudasama
 
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City GurgaonCall Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaoncallgirls2057
 
Financial-Statement-Analysis-of-Coca-cola-Company.pptx
Financial-Statement-Analysis-of-Coca-cola-Company.pptxFinancial-Statement-Analysis-of-Coca-cola-Company.pptx
Financial-Statement-Analysis-of-Coca-cola-Company.pptxsaniyaimamuddin
 
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deckPitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deckHajeJanKamps
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607dollysharma2066
 

Último (20)

Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
 
Corporate Profile 47Billion Information Technology
Corporate Profile 47Billion Information TechnologyCorporate Profile 47Billion Information Technology
Corporate Profile 47Billion Information Technology
 
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
 
Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
 
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCREnjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
 
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR8447779800, Low rate Call girls in Tughlakabad Delhi NCR
8447779800, Low rate Call girls in Tughlakabad Delhi NCR
 
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
Unlocking the Future: Explore Web 3.0 Workshop to Start Earning Today!
 
Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 Edition
 
Kenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby AfricaKenya’s Coconut Value Chain by Gatsby Africa
Kenya’s Coconut Value Chain by Gatsby Africa
 
Chapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal auditChapter 9 PPT 4th edition.pdf internal audit
Chapter 9 PPT 4th edition.pdf internal audit
 
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
8447779800, Low rate Call girls in Uttam Nagar Delhi NCR
 
Buy gmail accounts.pdf Buy Old Gmail Accounts
Buy gmail accounts.pdf Buy Old Gmail AccountsBuy gmail accounts.pdf Buy Old Gmail Accounts
Buy gmail accounts.pdf Buy Old Gmail Accounts
 
Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...
 
Digital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdfDigital Transformation in the PLM domain - distrib.pdf
Digital Transformation in the PLM domain - distrib.pdf
 
Guide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFGuide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDF
 
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City GurgaonCall Us 📲8800102216📞 Call Girls In DLF City Gurgaon
Call Us 📲8800102216📞 Call Girls In DLF City Gurgaon
 
Financial-Statement-Analysis-of-Coca-cola-Company.pptx
Financial-Statement-Analysis-of-Coca-cola-Company.pptxFinancial-Statement-Analysis-of-Coca-cola-Company.pptx
Financial-Statement-Analysis-of-Coca-cola-Company.pptx
 
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deckPitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
 

Building a humane CMS for Plone: updated tutorial

  • 1. Building a Humane CMS with Plone Naples Conference 2007 Joel Burton <joel@joelburton.com> Author: Copyright 2007 Joel Burton. All rights reserved. Copyright: Plone 2.5 or newer Covering: Distribution outside of presentation prohibited. Notice: PloneBootcamps: www.plonebootcamps.com Company: Contents 1 Building a Humane CMS with Plone 3 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 Welcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2 Who Am I? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.3 Our Inspiration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.4 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.5 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.6 Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Adding the Right Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.1 Specialized Factory Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.2 Specialized Factory Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.3 Obvious Choice for Content Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.4 Same Thing; Different Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.5 What Users Guessed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 Content Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3.1 How to Structure Site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3.2 How to Structure Site (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3.3 How To Structure Site (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3.4 Content in the Right Place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.5 Content in the Right Place (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.6 Content in the Right Place (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.7 Content in the Right Place (4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.8 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.9 Composition Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3.10 Only Folderish Things At Top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3.11 Removing “My Folder” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 Editing Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.1 Edit Forms: General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.2 Getting Checkboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4.3 Explaining Multiselect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4.4 Edit Forms: Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4.5 Edit Forms: Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4.6 Keywords vs Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1
  • 2. CONTENTS CONTENTS 1.4.7 Renaming “Categories” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4.8 Customizing Kupu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4.9 Remove Buttons from Kupu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4.10 Kupu Style Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4.11 Kupu Drawers and Your Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4.12 Click to Edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4.13 Click to Edit Caveats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4.14 Oh, the Humanity! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4.15 Dependent Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.4.16 Dependent Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5 Simplifying Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5.1 Power Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5.2 Undo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5.3 “Undo” for Other Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5.4 Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5.5 Effective/Expiration Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5.6 Display Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5.7 Default Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5.8 Add Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5.9 Actions Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5.10 Cut/Copy/Paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5.11 Duplicate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5.12 Sharing Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.1 Smart Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.2 Smart Folder Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.3 Smart Folder Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.4 Smart Folder Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.5 Show All or Published? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.6 RSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.7 Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.8 Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.9 Simple Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6.10 Easy to Use Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.6.11 Obvious Workflow Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.6.12 Use Workflow At All? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.7 CMFEditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.7.1 CMFEditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.8 Iterate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.8.1 Iterate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.9 Consistency of Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.9.1 Smart Folder Where Possible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.9.2 Example: EZPortlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.9.3 Example: Filtered Smart Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.10 Consistency of Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.10.1 Document Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.10.2 base_view-based Skin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.10.3 base_view Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.10.4 base_view Macros (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.10.5 Another base_view-based Skin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.10.6 Consistency of KSS/Field Appearance . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.10.7 base_view Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.11 Usability Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2
  • 3. 1 BUILDING A HUMANE CMS WITH PLONE 1.11.1 Usability Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.11.2 Testing on the Cheap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.11.3 Sample Lessons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.11.4 Thanks! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1 Building a Humane CMS with Plone 1.1 Introduction 1.1.1 Welcome • Handouts at: http://plonebootcamps.com/resources/humane.pdf • Sample product at: http://plonebootcamps.com/resources/humane.zip 1.1.2 Who Am I? • Plone developer & consultant • Developer & Trainer of “Plone Bootcamp” – 5-day, hands-on integrator-focused class • Work mostly with large public sites – Many unsophisticated content editors 1.1.3 Our Inspiration I could count twenty such Who strive To paint a little thing like that you smeared ... Yet do much less--so much less! Well, less is more -- Andrea del Sarto (1486-1531) 3
  • 4. 1.2 Adding the Right Type 1 BUILDING A HUMANE CMS WITH PLONE 1.1.4 Background • Consulting engagement to test Plone usability – Classic videocamera & tasks setup – Data compiled by external UI consultant • Formal study done for a 2.5 site – 3.0 information is less formal (so far!) 1.1.5 Profile • Incidental to semi-regular content contributor – Won’t learn much about Plone – Won’t do often enough to remember everything – Ease of use over “bells and whistles” 1.1.6 Goals • Fewer options for content placement • Correct choices about content types • Power user options just for power users • Less geekish complexity • Sane workflow/security • Consistency in UI & methods 1.2 Adding the Right Type 1.2.1 Specialized Factory Forms • “Make more like me” – On a piece of content have a link to “Make New ___ Item” • You can create content-creation links: /folder/createObject?type_name=My+Type 4
  • 5. 1.2 Adding the Right Type 1 BUILDING A HUMANE CMS WITH PLONE 1.2.2 Specialized Factory Forms • newsitem_additional portlet <dl class=quot;portletquot; metal:define-macro=quot;portletquot; tal:define=quot;newsfolder nocall: portal/newsquot; tal:condition=quot;python: checkPermission(’Add portal content’, newsfolder) and checkPermission(’ATContentTypes: Add News Item’, newsfolder)quot;> <dt class=quot;portletHeaderquot;>News Item</dt> <dd class=quot;portletItemquot;> <form tal:attributes=quot;action string:$portal_url/newsquot;> <input class=quot;standalonequot; type=quot;submitquot; value=quot;Add News Itemquot; /> <input type=quot;hiddenquot; name=quot;type_namequot; value=quot;News Itemquot; /> </form> </dd> </dl> 1.2.3 Obvious Choice for Content Types • Give things the “right” title – Can rename title of type without problem Once you re-title a content type, you should reindex the catalog. It is possible for this not work well; add-on products can make hard-wired assumptions about the title of the content type, but this is bad behavior. As developers, you should only write queries/code that deal with portal_type, not with Type. – Can re-use title of type; don’t have to be unique across site • Don’t forget to update description – Used in mouseovers and factory forms 1.2.4 Same Thing; Different Name • Users find “File” confusing – Make separate types: ∗ Word Document ∗ Powerpoint Document ∗ PDF Document • This “fits peoples brains” – Plus, allows separate searching 5
  • 6. 1.3 Content Creation 1 BUILDING A HUMANE CMS WITH PLONE 1.2.5 What Users Guessed • For Powerpoint file: – Event (it’s a presentation) – News Item (it’s newsworthy) – Image (there are graphics in it) – Folder (it has lots of slides) – Page (are slides pages?) – File (phew!) 1.3 Content Creation 1.3.1 How to Structure Site • Member’s folder: http://site.org/Members/joel/project-a – “My Documents” feeling – Bad URLs ∗ What happens when ownership moves? · Wrong location or broken URL – Useful for community sites 1.3.2 How to Structure Site (2) • Folder of like content: http://site.org/events/party – Requires users to have permissions here – Useful when one person/department manages items of that type 1.3.3 How To Structure Site (3) • By project / authority: http://college.edu/chemistry http://college.edu/biology – Location should follow security – Generally, the most useful – Type-specific folders within: http://college.edu/chemistry/events/party 6
  • 7. 1.3 Content Creation 1 BUILDING A HUMANE CMS WITH PLONE 1.3.4 Content in the Right Place • Restrict what’s addable in folders using “restrict...” – Use the preferred/not-preferred ∗ Also gives help via factory form 1.3.5 Content in the Right Place (2) • Restricting what’s addable techniques – In the ZMI – In Install.py – In GS (using setupVarious technique) ∗ Cannot be done now in .xml files 1.3.6 Content in the Right Place (3) • Create specialized folder types – Cloning type in portal_types ∗ Fast and easy ∗ Can be done in GS with types.xml – Creating new Archetype based on other ∗ More flexible for future • “Staff Directory” is clone of “Folder” 1.3.7 Content in the Right Place (4) • Specialized folder types techniques – Cloning ∗ In ZMI portal_types ∗ GenericSetup 1.3.8 Composition • Bookstores hold only books • Books are held only in libraries Bookstore Book 7
  • 8. 1.4 Editing Content 1 BUILDING A HUMANE CMS WITH PLONE 1.3.9 Composition Details • Creates folder/contained setup – Ensures folder is folder – Folder holds just child – Child only addable in folder • “Composition” – Black diamond points to parent 1.3.10 Only Folderish Things At Top • Nothing but folders (& smart folders) at root – Well-organized – Models good behavior • Can change in portal_types/Portal – Can be done in GS with types.xml 1.3.11 Removing “My Folder” • Few sites really want user folders – Confusing to leave them around – Become a magnet for junk • Just delete “Members” folder – In Plone 3, controlled by “Enable User Folders” in Security control panel 1.4 Editing Content 1.4.1 Edit Forms: General • Avoid multiselect boxes – Many people don’t know how to select multiple – List of checkbox is much better – If multiselects are required, explain how to select multiple 8
  • 9. 1.4 Editing Content 1 BUILDING A HUMANE CMS WITH PLONE 1.4.2 Getting Checkboxes • In your Archetype UML, for multiselect field: widget:format = checkbox # default is quot;selectquot; 1.4.3 Explaining Multiselect • In your Archetype UML: widget:description = Hold control CONTROL (Mac users: COMMAND) to select multiple items 1.4.4 Edit Forms: Dates • People hate the drop-down menus – Slower, limited range of dates – Replace with add-on product, DateBox ∗ Allows textual entry in any form ∗ Plus ideas like “yesterday” ∗ Immediately turns into canonical format 1.4.5 Edit Forms: Keywords • Most useful organizational tool – But underused • Move keywords onto edit form – Call “tags” I’ve found that the term “keyword” seems scary to people, but calling this “tags” seems more friendly. – Use AddRemoveWidget 1.4.6 Keywords vs Categories • Early to tell for sure, but ... – People find “categories” confusing ∗ Suggests a structured taxonomy ∗ With a single place – “Tags” is probably still best 9
  • 10. 1.4 Editing Content 1 BUILDING A HUMANE CMS WITH PLONE 1.4.7 Renaming “Categories” • Patch AT’s “subject” field – See AAAStuff product • Or handle using i18n tools – msgid is “label_categories” 1.4.8 Customizing Kupu • Can customize with XML • But easier to do in CSS, and easier for upgrading: #kupu-subscript-button { display: none; } • In Plone 3, tool allows customization 1.4.9 Remove Buttons from Kupu • You probably don’t want – superscript, subscript – definition lists – full-screen button • You might not want – tables – left, center, right justify 1.4.10 Kupu Style Menu • Add classes to kupu menu – Single best thing you can do for users • Can add classes per type-of-content: TextField(’text’, widget=RichWidget( parastyles=( (’div|contactInformation’,’Contact Information’), (’div|notesToEditors’,’Notes to editors’), ), ), ), 10
  • 11. 1.4 Editing Content 1 BUILDING A HUMANE CMS WITH PLONE 1.4.11 Kupu Drawers and Your Types • Add new content types to kupu “resource types” – Otherwise, can’t link to/browse in Kupu – Folderish things: add to “collection” – Images/movies with tag(): add to “mediaobjects” – Everything: add to “linkable” • In Plone 3, can happen automatically 1.4.12 Click to Edit • View screens for content allow click-to-edit – Excellent for power-users doing fast edits – Sometimes confusing for novice users ∗ Easy to trigger unexpected errors – Powered by KSS and async JavaScript (AJAX) 1.4.13 Click to Edit Caveats • Only works with – Uncustomized Archetype views – “Plone 3-ified” view templates ∗ Since practically no one did things to anticipate this • Not (yet) supported for all AT field types – Missing for float, lines, and others – Not supported for add-on field types 1.4.14 Oh, the Humanity! • Early research shows confusing for end-users – May get better as it gets refined – Can turn off by turning off at.kss in portal_kss ∗ This loses live validation on edit form, though ∗ Refactoring may allow this to be easier in future 11
  • 12. 1.5 Simplifying Interface 1 BUILDING A HUMANE CMS WITH PLONE 1.4.15 Dependent Items • Confusing to users that image isn’t “in” document – Different workflow, separate title, etc. • RichDocument keeps images/files inside document 1.4.16 Dependent Items • Can also use kupu’s ReffieldText sets references for images, links – Can caption images automatically – With references, can move workflow together, etc. 1.5 Simplifying Interface 1.5.1 Power Users • The people who everyone turns to • The people who think they are • Make a role for it! – In GS, using rolemap.xml 1.5.2 Undo • Can be complex to understand – Seeing all objects listed – Dependencies of undoing • Too complex for most users – And most turn to power users anyway • Control with “List undoable changes” permission 1.5.3 “Undo” for Other Users • May find it helpful to keep “undo” in user bar – People are used to it – Could point to History tab of item ∗ Or a template pointing toward Power Users 12
  • 13. 1.5 Simplifying Interface 1 BUILDING A HUMANE CMS WITH PLONE 1.5.4 Properties Tab • “Metadata” versus “data” is weak distinction • Often entirely ignored • Move useful things onto edit tab – Leave esoteric stuff for power users • Handled in Plone 3 1.5.5 Effective/Expiration Date • Called “Publishing Date” in Plone 3 – Confuses people that it’s related to “publish” transition – Suggest changing back to “effective date” • In general, these confuse most people – And are not commonly needed • Recommend: protect with write_permission tied to PowerUser 1.5.6 Display Menu • Remove skins that won’t be used – In many cases, only one makes sense – Change in portal_types for your type • Control with “Modify view template” permission 1.5.7 Default Page • Tricky concept for many users – Often, having a body field for folderish item is easier • Can turn off with: def canSetDefaultPage(self): quot;quot;quot;Disallow setting default page.quot;quot;quot; return False 13
  • 14. 1.5 Simplifying Interface 1 BUILDING A HUMANE CMS WITH PLONE 1.5.8 Add Menu • “Restrict” may be not useful – Especially for a specialized folder type • Control with “Modify constrain types” permission • Can turn off with: def canSetConstrainTypes(self): quot;quot;quot;Disallow ’restrict’ choicequot;quot;quot; return False 1.5.9 Actions Menu • Rename allows people to break links – Which they often don’t understand – Make for power users only ∗ Don’t change permission--some products assume rename capabilities ∗ Change in portal_actions. 1.5.10 Cut/Copy/Paste • People can find confusing – Allows them to move content – Non-obvious why you can’t paste into certain places • Make for power users only 1.5.11 Duplicate • People often expect “copy” to make a copy – Not copy to clipboard • “Duplicate” action is very helpful – Implemented in humane product 1.5.12 Sharing Tab • Useful feature, but complex form – Simplified in Plone 3 • Consider making for power users • Or, offering simplified sharing tab – Can only share Owner role ∗ Or, Editor/Contributor/Reader, etc. 14
  • 15. 1.6 Features 1 BUILDING A HUMANE CMS WITH PLONE 1.6 Features 1.6.1 Smart Folders • Too tricky for ordinary users to make – Good use for “Power User” role – Create sample smart folders, users can duplicate & modify • Smart folders to find forgotten content (ie, never submitted/published) 1.6.2 Smart Folder Criteria • and / or criteria always confuses people – Assume this is and/or across predicates ∗ It’s any/all of choices for predicate • Suggest: change to any / all – Can change CompareOperators in ATContentType/criteria/selection ∗ Or handle via i18n 1.6.3 Smart Folder Criteria • Some changes make no sense with all choice – A single piece of content cannot have multiple ∗ portal_type, workflow, etc. • Fixing would require adding logic to Smart Folders for this – Best handled now with training 1.6.4 Smart Folder Dates • Relative dates have 3-set choices – “More than” “1 week” “in the past” ∗ Is that older than one week? Or newer? · Many people get wrong! • Change to “ago” in ATContentTypes/criteria/dates/RangeOperator – Or handle in i18n 15
  • 16. 1.6 Features 1 BUILDING A HUMANE CMS WITH PLONE 1.6.5 Show All or Published? • Show all? Or just published? • Either confuses people – “Ack! My private stuff is showing!” – “Ack! Where’s my personal stuff?” • Pick your poision – Showing non-published is usually easier ∗ Especially with color-coded workflow hints 1.6.6 RSS • Underused by normal users – Few have dedicated RSS readers • In-browser RSS readers can simplify – “Sage” for Firefox • Dashboards in Plone 3 help, too 1.6.7 Keywords • Stock sample keywords – Make private document with starter keywords • Use PloneKeywordManager to clean up keyword space 1.6.8 Workflow • Simpler is usually better – The more steps, the less attention 1.6.9 Simple Workflow • Simple and trusting Hide Pending Submit Publish Publish Draft Published Hide • Review portal content given out freely 16
  • 17. 1.7 CMFEditions 1 BUILDING A HUMANE CMS WITH PLONE 1.6.10 Easy to Use Workflows • Transitions for all stages – Can publish from hidden, hide from published, etc. – Fixed in recent Plone 1.6.11 Obvious Workflow Security • Visible things in private folders are visible – Our worst security/UI choice – 90% of my students don’t expect • Fix or document thoroughly! 1.6.12 Use Workflow At All? • For intranet/planning sites, may be superfluous • Can change workflow to single state – But still shows up in UI – Can hide menu with: #statusMenu {display: none; } – Or can modify template 1.7 CMFEditions 1.7.1 CMFEditions • Initial studying shows good usability – “Revision 0” has confused some people ∗ “Revision 1” might be better • Ensure people understand it’s not time travel 1.8 Iterate 1.8.1 Iterate • Initial studying shows good usability – But staging itself is more than most sites need 17
  • 18. 1.9 Consistency of Solutions 1 BUILDING A HUMANE CMS WITH PLONE 1.9 Consistency of Solutions 1.9.1 Smart Folder Where Possible • Much integration can be done with Smart Folder – “Collections” in 3.0 • Provides consistent way to express queries – People can learn once and re-use 1.9.2 Example: EZPortlet • Proof-of-concept portlet – Show results of any smart folder 1.9.3 Example: Filtered Smart Folders • Smart folders with trimming or extending 1.10 Consistency of Appearance 1.10.1 Document Actions • Print this page, email to friend, etc. – Moved from top -> bottom in 2.5 -> 3.0 – Switch from icons to text • 2.5 products/existing skins will still be at top – Consistency is very important 1.10.2 base_view-based Skin • movie_view Page Template: <div metal:define-macro=quot;bodyquot;> <p>Director: <i tal:content=quot;context/directorquot;>[Dir]</i> </p> <p>Rating: <b tal:content=quot;context/ratingquot;>[Rating]</b> </p> </div> 18
  • 19. 1.10 Consistency of Appearance 1 BUILDING A HUMANE CMS WITH PLONE 1.10.3 base_view Macros 1.10.4 base_view Macros (2) • header • body • footer – Normally empty • folderlisting – Listing of child objects in folders – Override with empty to prevent this 1.10.5 Another base_view-based Skin • movie_view Page Template: <div metal:define-macro=quot;headerquot;> <h1 tal:content=quot;string: Movie Info: ${context/Title}quot;>[Title]</h1> </div> <div metal:define-macro=quot;footerquot;> <p>Movie data is from IMDB.</p> </div> This example is too simplified: our header macro replaces the entire header, which should contain the styles to show the print-this-page button and send-to-friend button. A realistic header replacement should contain: <h1 tal:content=quot;context/title_or_idquot; class=quot;documentFirstHeadingquot;> Title or id </h1> 19
  • 20. 1.11 Usability Testing 1 BUILDING A HUMANE CMS WITH PLONE <div metal:use-macro=quot; context/document_actions/macros/document_actionsquot;> Document actions (print, sendto etc) </div> 1.10.6 Consistency of KSS/Field Appearance • Can output view widget for field – As opposed to using accessor directly • Will allow inline editing in Plone 3 – And other advantages of widget ∗ LinkField might show URL as link 1.10.7 base_view Example • yourtype_view.pt : <div metal:define-macro=quot;bodyquot;> <div metal:use-macro=quot;python: context.widget(’myfield’)quot; /> </div> 1.11 Usability Testing 1.11.1 Usability Testing • Science of observation – Not of personal theory :) • No sustitute for observing unprompted users 1.11.2 Testing on the Cheap • Don’t need a camera / mirrors / consultant • Do need a script of tasks – Keep them the same for all testers • Do need testers unfamiliar with Plone • Ask users to explain what they’re thinking 20
  • 21. 1.11 Usability Testing 1 BUILDING A HUMANE CMS WITH PLONE 1.11.3 Sample Lessons • User being asked to add a Powerpoint file to a 2.5 portal: Well, I guess I should go into my folder. [Clicks] I’ll look in contents so I can add it [Missing quicker add menu]. Powerpoint are presentations, so I’ll add it as an Event ... 1.11.4 Thanks! • I’d love your ideas and feedback: joel@joelburton.com • Handouts online at: http://plonebootcamps.com/resources 21