SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
User Experiences with the
 Plone Content Management
          System
         George K. Thiruvathukal (speaker)
               with special guests:
Benjamín González, Matt Bone, and Konstantin Läufer

            Loyola University Chicago
          Computer Science Department
         Emerging Technologies Laboratory

               http://www.etl.luc.edu
                  gkt@etl.luc.edu
Overview
•                                   •
    Our Requirements                    Customizing Plone: Skins/Layers

•                                   •
    Quick Tour of Plone                 Customizing Plone: Archetypes

•                                   •
    What is Plone?                      Plugins

•                                   •
    The Open Source Definition           Hosting Plone with Apache

•                                   •
    Plone’s Default Content Types       Critique

•                                   •
    Publication States                  Conclusions

•   Content Metadata
Our Requirements
•   Maintaining content should require little/no knowledge of HTML
    and web standards. Although we are technical, we don't want to
    be bothered with these details in most cases. Content is king...or
    queen.

•   Published site should be viewable from any standards-compliant
    browser on any platform.

•   Managing content and performing administrative tasks should also
    be possible on any standards-compliant browser on any platform.

•   We want to be future-proofed inasmuch as possible. For
    example, nothing should stand in the way of supporting non-
    desktop clients, e.g. phones, PDAs, or other quot;limitedquot; devices.

•   While less interesting to typical users, good architecture matters
    a great deal to us. This includes the software design, system
    scalability, and extensibility.
A Quick Visual Tour
Published View
Edit Mode
Kupu WYSIWYG Editor
Live Search!
Content Properties/Metadata
Content “Explorer”
Plone
•   a Free/Open Source (FOSS) Content Management
    System (CMS)

•   focus on non-technical users who want create/manage
    web sites

•   minimal knowledge of HTML or web standards assumed
    in UI

•   customization on the other hand requires knowledge of
    web standards (XHTML, CSS, XML)

•   Python required to extend Plone via plugins
Open Source Licensing
•                               •
    Free Redistribution             No discrimination against
                                    fields of endeavor
•   Source code must be
                                •
    included                        Distribution of license

•                               •
    Derived works allowed           License may not be specific
                                    to a product
•   Integrity of the Author's
                                •
    Source Code                     License must not restrict
                                    other software
•   No discrimination against
                                •
    persons or groups               License must be technology-
                                    neutral
Plone Default Content
       Types
•   Folders

•   Documents
                       Everything you see
•   Link Objects
                   in Plone is (has) a content
•   Files
                        type. Everything!
•   Events

•   Images

•   News Items
Publication States

•   Private: Content not viewable by the outside world, even
    if URI to reach the item is known.

•   Visible: Content viewable by outside world, if URI is
    known.

•   Published: Visible + URI is linked on page that is already
    being viewed (often as part of a navigation portlet)
Customizing Plone

• changing the look/feel
• adding functionality via plugins
• adding user-defined content types
  (archetypes)
Customizing Look/Feel
      (Basics)
•   Plone's presentation layer is based on skins.

•   Skins in Plone are arranged in a layered scheme.

•   Each layer contributes presentation elements (templates,
    scripts, css files).

•   Elements in the upper layers override elements in lower
    layers.
Adding Skins

•   Go to the Zope Management Interface (ZMI).

•   Go to portal_skins.

•   Click properties.

•   Add your new skin at the bottom.
Adding New Layers

• Create a new folder under portal_skins.
• Add it as a layer under your skin in
  Properties.
• Create/customize your elements under
  that folder.
Hosting Plone

• Apache Web Server acts as front end
• Zope application acts as server back end
• Plone is simply a Zope product that
  provides the core CMS functionality
Apache + Plone ==
        Happiness
•   integrated support for virtual domains (e.g. cs.luc.edu,
    etl.luc.edu, math.luc.edu, reu.cs.luc.edu, citep.com, etc.)

•   use of Apache virtual host (vhost) and rewriting logic to
    map incoming requests to individual Plone sites

•   rewriting logic allows each site to appear as separate web
    server but in fact all are (or can be) hosted on the same
    box

•   Plone/Zope itself serves the actual content via Apache
    proxying

•   option to cache Plone content for performance
Archetypes
•   A framework in Plone that allows us to easily create content
    types.

•   A content type is something like a document, link, event or news
    item.

•   Archetypes is distributed as a Plone Product. (Our own custom
    content types will be distributed within a Plone Product, too.)

•   To create a new content type you write a Python class
    representing the content type and its schema.

•   The schema defines the fields contained within the type.
ETL Project: An
Example Content Type
•   Sometimes you want a page or content item that has a bit of
    structure.

•   Our research group has a number of projects with common
    elements:

    •   project hosting site

    •   repository location

    •   developer and documentation wikis

    •   version tracking

    •   developer and support mailing lists

    •   developer blog, etc.
from Products.ATContentTypes.content.base import ATCTContent
from Products.Archetypes.public import *
from Products.ETL.ETLGlobals import *

ETLProjectSchema = ATCTContent.schema.copy() + Schema((
   StringField('projectHosting',
             validators=(quot;isURLquot;),
             widget=StringWidget(label='Project Hosting (URL):'),
             ),
   StringField('versionControl',
             validators=(quot;isURLquot;),
             widget=StringWidget(label='Version Control (URL):'),
             ),
   StringField('documentationWiki',
             validators=(quot;isURLquot;),
             widget=StringWidget(label='Documentation Wiki (URL):'),
             ),
   StringField('developmentWiki',
                                                                                        Excerpt of Python code
             validators=(quot;isURLquot;),
             widget=StringWidget(label='Development Wiki (URL):'),
             ),
                                                                                          to describe an ETL
   StringField('versionTracking',
             validators=(quot;isURLquot;),

                                                                                           Project Archetype
             widget=StringWidget(label='Version Tracking (URL):'),
             ),
   StringField('developerMailingList',
             validators=(quot;isEmailquot;),
             widget=StringWidget(label='Developer Mailing List (email):'),
             ),
   StringField('supportMailingList',
             validators=(quot;isEmailquot;),
             widget=StringWidget(label='Support Mailing List(email):'),
             ),
   StringField('developersBlog',
             validators=(quot;isURLquot;),
             widget=StringWidget(label='Developers Blog (URL):'),
             ),
   TextField('projectSummary',
          searchable=1,
          default_output_type='text/html',
          default_content_type='text/html',
          allowable_content_types=('text/plain', 'text/structured', 'text/restructured', 'text/html'),
          widget = RichWidget(label='Project Summary:'),
          ),
))
<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Transitional//ENquot;
quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdquot;>
<html xmlns=quot;http://www.w3.org/1999/xhtmlquot; xml:lang=quot;en-USquot; lang=quot;en-USquot;
metal:use-macro=quot;here/main_template/macros/masterquot;>

                                                                                            XHTML+XML code to
<body>
  <div metal:fill-slot=quot;mainquot;>
   <div metal:define-macro=quot;mainquot; tal:omit-tag=quot;quot;>

                                                                                             create the “skin” for
    <h1 tal:content=quot;here/title_or_idquot;/>

    <tal:main_block

                                                                                             ETL Project Content
     tal:define=quot;fieldList python:[('Project Hosting:', here.getProjectHosting(),'url'),
                   ('Version Control:', here.getVersionControl(), 'url'),
                   ('Documentation Wiki:', here.getDocumentationWiki(), 'url'),

                                                                                                     Type
                   ('Development Wiki:', here.getDevelopmentWiki(), 'url'),
                   ('Version Tracking:', here.getVersionTracking(), 'url'),
                   ('Developers Mailing List:', here.getDeveloperMailingList(), 'email'),
                   ('Support Mailing List:', here.getSupportMailingList(), 'email'),
                   ('Developers Blog', here.getDevelopersBlog(), 'url'),]quot;>

        <tal:field_loop repeat=quot;field fieldListquot;>
         <tal:block condition=quot;python:bool(field[1])quot;>
         <h2 tal:content=quot;python:field[0]quot;>Label</h2>
         <a tal:condition=quot;python:field[2]=='url'quot; tal:attributes=quot;href python:field[1]quot; tal:content=quot;python:field[1]quot;>Link</a>
         <a tal:condition=quot;python:field[2]=='email'quot; tal:attributes=quot;href python:'mailto:%s'%field[1]quot; tal:content=quot;python:field[1]quot;>email</a>
         <!--<a tal:condition=quot;python:field[2]=='string'quot; tal:replace=quot;python:field[1]quot;/>-->
         <br/><br/>
         </tal:block>
        </tal:field_loop>

    </tal:main_block>

    <tal:block condition=quot;here/getProjectSummaryquot;>
     <h2>Project Summary:</h2>
        <tal:replace tal:content=quot;structure here/getProjectSummaryquot;/>
     <br/>
    </tal:block>

   </div>
  </div>
</body>
</html>
Generated Editor View
Generated View
Plugins
•   Live search: Allows users to search the site locally (similar to
    desktop search) by typing a few characters of the search string
    (now part of Plone >=2.5).

•   Kupu: WYSIWYG editing. Plone 2.1 and earlier used to require
    the use of structured text, which is great but sometimes lacks the
    richness and clarity of HTML.

•   JavaScript/CSS Menuing: The ability to introduce JavaScript menuing
    into a site by describing the navigation as a basic HTML table.
    (Our cs.luc.edu site uses this capability.)

•   Google Analytics for Plone: http://ingeniweb.sourceforge.net/
    Products/AnalyticsForPlone
Plugins: Zope + Plone

•   Plone is a Zope product and addition plugins (for Plone and
    Zope) are available through the extensible Zope architecture.

•   Zope is a Python-based extensible application serving platform
    (similar to J2EE and .Net).

•   In addition to full support for HTTP, Zope provides support for
    DAV, FTP, and other emerging web standards.
Critique: The Good
•   Content types are part of a sophisticated vocabulary for thinking
    about a web site.

•   Plone places a premium on ease-of-use for day-to-day content
    management (i.e. content writers).

•   Plone is a project with considerable community interest with
    hundreds of plugins available. (one of the most active as measured
    by http://cmsmatrix.org.

•   The ability to do practically everything (as user and developer)
    within the browser and no client plugins (e.g. Java or ActiveX) on
    any major platform (Linux, OS X, and Windows) is compelling.

•   End-user documentation for end users is excellent. One of the
    few CMSs with a significant number of published books.

•   Installation is a breeze on most major platforms (Windows, OS
    X, and Linux).
Critique: The Bad
•   While content writing can be done with WYSIWYG editors, the
    same is not true of layout at this time, hence the code examples
    we’ve presented.

•   Rich and powerful XML based template system requires
    significant technical (read: Python) knowledge to master.

•   Despite the Plone project's maturity, technical documentation
    remains somewhat weak (an irony, considering the user docs are
    excellent).

•   Some might take issue with the integration of content
    management and content serving within the same framework.
    Straightforward integration with Apache remedies this issue in
    part but the content still comes from the CMS itself.
Critique: The Ugly
•   Some Plone releases (e.g. 2.1) have presented great difficulty
    when migrating from the previous releases (2.0).

•   Some plugin interactions can result in an unusable setup. When in
    doubt about a plugin, we recommend testing it in a non-
    production “sandbox” first.

•   Zope uses its own database, which seems to deliver excellent
    overall performance. Not having a standard database backend
    (e.g. MySQL or other relational DB) makes it difficult to do
    proper backup, which requires a special script. While MySQL is
    allegedly supported, we have not gotten it working yet. (The ZEO
    effort appears to be a recent effort to enhance support for load
    balancing and 3rd-party databases.)
Futures
•   University has recently acquired a commercial CMS.

•   We'll continue to support and use Plone for specialized needs
    (e.g. research groups like ETL, student activities, and individual
    web sites) within our department.

•   Plone is a great solution, especially for small departments and
    groups with a need to get content up/running quickly and reliably
    with a consistent look/feel. As shown, with some work, Plone can
    be customized to give the appearance of a hand-crafted web site.

•   The ability to manage content from anywhere with a minimum
    number of browser dependencies is a key strength of Plone. Many
    CMS solutions require ActiveX or Java plugins that either do not
    work properly outside of Windows/IE or have not been tested
    sufficiently on alternate platforms, e.g. Linux and OS X.
Questions?

Mais conteúdo relacionado

Mais procurados

Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture IntroductionHaiqi Chen
 
Learn to Internationalize your Application
Learn to Internationalize your ApplicationLearn to Internationalize your Application
Learn to Internationalize your Applicationshankar_mbn
 
Pragmatic Browser Automation with Geb - GIDS 2015
Pragmatic Browser Automation with Geb - GIDS 2015Pragmatic Browser Automation with Geb - GIDS 2015
Pragmatic Browser Automation with Geb - GIDS 2015Naresha K
 
What the heck went wrong?
What the heck went wrong?What the heck went wrong?
What the heck went wrong?Andy McKay
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsManuel Carrasco Moñino
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyMark Meeker
 
TangoWithDjango - ch8
TangoWithDjango - ch8TangoWithDjango - ch8
TangoWithDjango - ch8Asika Kuo
 
HTML5 JavaScript APIs
HTML5 JavaScript APIsHTML5 JavaScript APIs
HTML5 JavaScript APIsRemy Sharp
 
Java Web Programming [9/9] : Web Application Security
Java Web Programming [9/9] : Web Application SecurityJava Web Programming [9/9] : Web Application Security
Java Web Programming [9/9] : Web Application SecurityIMC Institute
 
jQuery Mobile: For Fun and Profit
jQuery Mobile: For Fun and ProfitjQuery Mobile: For Fun and Profit
jQuery Mobile: For Fun and ProfitDaniel Cousineau
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance DjangoDjangoCon2008
 
Frameworkless Web Development in Clojure
Frameworkless Web Development in ClojureFrameworkless Web Development in Clojure
Frameworkless Web Development in ClojureKungi2342
 
GWT integration with Vaadin
GWT integration with VaadinGWT integration with Vaadin
GWT integration with VaadinPeter Lehto
 
Creating GUI Component APIs in Angular and Web Components
Creating GUI Component APIs in Angular and Web ComponentsCreating GUI Component APIs in Angular and Web Components
Creating GUI Component APIs in Angular and Web ComponentsRachael L Moore
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWAManuel Carrasco Moñino
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
 

Mais procurados (18)

Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
Learn to Internationalize your Application
Learn to Internationalize your ApplicationLearn to Internationalize your Application
Learn to Internationalize your Application
 
Pragmatic Browser Automation with Geb - GIDS 2015
Pragmatic Browser Automation with Geb - GIDS 2015Pragmatic Browser Automation with Geb - GIDS 2015
Pragmatic Browser Automation with Geb - GIDS 2015
 
What the heck went wrong?
What the heck went wrong?What the heck went wrong?
What the heck went wrong?
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin Elements
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case Study
 
TangoWithDjango - ch8
TangoWithDjango - ch8TangoWithDjango - ch8
TangoWithDjango - ch8
 
HTML5 JavaScript APIs
HTML5 JavaScript APIsHTML5 JavaScript APIs
HTML5 JavaScript APIs
 
Java Web Programming [9/9] : Web Application Security
Java Web Programming [9/9] : Web Application SecurityJava Web Programming [9/9] : Web Application Security
Java Web Programming [9/9] : Web Application Security
 
jQuery Mobile: For Fun and Profit
jQuery Mobile: For Fun and ProfitjQuery Mobile: For Fun and Profit
jQuery Mobile: For Fun and Profit
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance Django
 
Frameworkless Web Development in Clojure
Frameworkless Web Development in ClojureFrameworkless Web Development in Clojure
Frameworkless Web Development in Clojure
 
J query module1
J query module1J query module1
J query module1
 
GWT integration with Vaadin
GWT integration with VaadinGWT integration with Vaadin
GWT integration with Vaadin
 
Creating GUI Component APIs in Angular and Web Components
Creating GUI Component APIs in Angular and Web ComponentsCreating GUI Component APIs in Angular and Web Components
Creating GUI Component APIs in Angular and Web Components
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
 
Introduction to JavaScript
Introduction to JavaScriptIntroduction to JavaScript
Introduction to JavaScript
 

Destaque

Sonny Cohen, Content is Marketing. So...Market Your Content
Sonny Cohen, Content is Marketing. So...Market Your ContentSonny Cohen, Content is Marketing. So...Market Your Content
Sonny Cohen, Content is Marketing. So...Market Your Contentwebcontent2007
 
Melissa Giovagnolli, Social Networking and Community Building Tools and Techn...
Melissa Giovagnolli, Social Networking and Community Building Tools and Techn...Melissa Giovagnolli, Social Networking and Community Building Tools and Techn...
Melissa Giovagnolli, Social Networking and Community Building Tools and Techn...webcontent2007
 
Yvonne Doll, Designing Content for Usability
Yvonne Doll, Designing Content for UsabilityYvonne Doll, Designing Content for Usability
Yvonne Doll, Designing Content for Usabilitywebcontent2007
 
Jason Crea, Driving Effective Email Marketing Campaigns with Web Content Mana...
Jason Crea, Driving Effective Email Marketing Campaigns with Web Content Mana...Jason Crea, Driving Effective Email Marketing Campaigns with Web Content Mana...
Jason Crea, Driving Effective Email Marketing Campaigns with Web Content Mana...webcontent2007
 
Pay By Touch Smart Shop MRD
Pay By Touch Smart Shop MRDPay By Touch Smart Shop MRD
Pay By Touch Smart Shop MRDHutch Carpenter
 
Stale Eikeri, A Pragmatic Look at Web 2.0: Moving Beyond the Hype
Stale Eikeri, A Pragmatic Look at Web 2.0: Moving Beyond the HypeStale Eikeri, A Pragmatic Look at Web 2.0: Moving Beyond the Hype
Stale Eikeri, A Pragmatic Look at Web 2.0: Moving Beyond the Hypewebcontent2007
 

Destaque (6)

Sonny Cohen, Content is Marketing. So...Market Your Content
Sonny Cohen, Content is Marketing. So...Market Your ContentSonny Cohen, Content is Marketing. So...Market Your Content
Sonny Cohen, Content is Marketing. So...Market Your Content
 
Melissa Giovagnolli, Social Networking and Community Building Tools and Techn...
Melissa Giovagnolli, Social Networking and Community Building Tools and Techn...Melissa Giovagnolli, Social Networking and Community Building Tools and Techn...
Melissa Giovagnolli, Social Networking and Community Building Tools and Techn...
 
Yvonne Doll, Designing Content for Usability
Yvonne Doll, Designing Content for UsabilityYvonne Doll, Designing Content for Usability
Yvonne Doll, Designing Content for Usability
 
Jason Crea, Driving Effective Email Marketing Campaigns with Web Content Mana...
Jason Crea, Driving Effective Email Marketing Campaigns with Web Content Mana...Jason Crea, Driving Effective Email Marketing Campaigns with Web Content Mana...
Jason Crea, Driving Effective Email Marketing Campaigns with Web Content Mana...
 
Pay By Touch Smart Shop MRD
Pay By Touch Smart Shop MRDPay By Touch Smart Shop MRD
Pay By Touch Smart Shop MRD
 
Stale Eikeri, A Pragmatic Look at Web 2.0: Moving Beyond the Hype
Stale Eikeri, A Pragmatic Look at Web 2.0: Moving Beyond the HypeStale Eikeri, A Pragmatic Look at Web 2.0: Moving Beyond the Hype
Stale Eikeri, A Pragmatic Look at Web 2.0: Moving Beyond the Hype
 

Semelhante a User Experiences with the Plone Content Management System

Python - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguagePython - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguageTsungWei Hu
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkecker
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Anupam Ranku
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformTaylor Singletary
 
Introduction To Code Igniter
Introduction To Code IgniterIntroduction To Code Igniter
Introduction To Code IgniterAmzad Hossain
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with BackstageOpsta
 
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineGDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineYared Ayalew
 
Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009Shankar Gowda
 
Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009shankar_mbn
 
Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009Shankar Gowda
 
Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Itzik Kotler
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Bastian Feder
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialPatrick Chanezon
 
OpenStack Toronto Meetup - Keystone 101
OpenStack Toronto Meetup - Keystone 101OpenStack Toronto Meetup - Keystone 101
OpenStack Toronto Meetup - Keystone 101Steve Martinelli
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titaniumNaga Harish M
 

Semelhante a User Experiences with the Plone Content Management System (20)

Python - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguagePython - A Comprehensive Programming Language
Python - A Comprehensive Programming Language
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Framework
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application Platform
 
Introduction To Code Igniter
Introduction To Code IgniterIntroduction To Code Igniter
Introduction To Code Igniter
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineGDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App Engine
 
About Clack
About ClackAbout Clack
About Clack
 
Drupal 7 ci and testing
Drupal 7 ci and testingDrupal 7 ci and testing
Drupal 7 ci and testing
 
Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009
 
Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009
 
Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009Learn to Internationalize your Applications - Sun Tech Days 2009
Learn to Internationalize your Applications - Sun Tech Days 2009
 
Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)
 
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
Advanced Eclipse Workshop (held at IPC2010 -spring edition-)
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocial
 
FossBazaar TiddlyGuv Demo
FossBazaar TiddlyGuv DemoFossBazaar TiddlyGuv Demo
FossBazaar TiddlyGuv Demo
 
OpenStack Toronto Meetup - Keystone 101
OpenStack Toronto Meetup - Keystone 101OpenStack Toronto Meetup - Keystone 101
OpenStack Toronto Meetup - Keystone 101
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
 

Mais de webcontent2007

Marketing in a Connected World
Marketing in a Connected WorldMarketing in a Connected World
Marketing in a Connected Worldwebcontent2007
 
David Esrati, The Blogzilla Report- Fact, Fiction Fear: The Monster of the In...
David Esrati, The Blogzilla Report- Fact, Fiction Fear: The Monster of the In...David Esrati, The Blogzilla Report- Fact, Fiction Fear: The Monster of the In...
David Esrati, The Blogzilla Report- Fact, Fiction Fear: The Monster of the In...webcontent2007
 
David Terry, Website Optimization and Automation to Maximize Lead Generation ...
David Terry, Website Optimization and Automation to Maximize Lead Generation ...David Terry, Website Optimization and Automation to Maximize Lead Generation ...
David Terry, Website Optimization and Automation to Maximize Lead Generation ...webcontent2007
 
Stephen Bouikidis, Avoiding the Target Trap: Creating Accessible Section 508 ...
Stephen Bouikidis, Avoiding the Target Trap: Creating Accessible Section 508 ...Stephen Bouikidis, Avoiding the Target Trap: Creating Accessible Section 508 ...
Stephen Bouikidis, Avoiding the Target Trap: Creating Accessible Section 508 ...webcontent2007
 
Jen Consalvo, Making it Personal: Designing 'My' Web
Jen Consalvo, Making it Personal: Designing 'My' WebJen Consalvo, Making it Personal: Designing 'My' Web
Jen Consalvo, Making it Personal: Designing 'My' Webwebcontent2007
 
Bryant Shea, Building Online Communities
Bryant Shea, Building Online CommunitiesBryant Shea, Building Online Communities
Bryant Shea, Building Online Communitieswebcontent2007
 
Calvin Hendryx Parker, Enabling the Semantic Web with RDF
Calvin Hendryx Parker, Enabling the Semantic Web with RDFCalvin Hendryx Parker, Enabling the Semantic Web with RDF
Calvin Hendryx Parker, Enabling the Semantic Web with RDFwebcontent2007
 
Salim Ismail, RSS: The Publish/Subscribe Model
Salim Ismail, RSS: The Publish/Subscribe ModelSalim Ismail, RSS: The Publish/Subscribe Model
Salim Ismail, RSS: The Publish/Subscribe Modelwebcontent2007
 
Emma Hamer, Understanding the Impact of Change: How to Become a Master of You...
Emma Hamer, Understanding the Impact of Change: How to Become a Master of You...Emma Hamer, Understanding the Impact of Change: How to Become a Master of You...
Emma Hamer, Understanding the Impact of Change: How to Become a Master of You...webcontent2007
 
Rob Rose, Software as a Service: Understanding Hosted Web Content Management ...
Rob Rose, Software as a Service: Understanding Hosted Web Content Management ...Rob Rose, Software as a Service: Understanding Hosted Web Content Management ...
Rob Rose, Software as a Service: Understanding Hosted Web Content Management ...webcontent2007
 
Chris Baggot, An Integrated Strategy for Online Marketing: Email & Search
Chris Baggot, An Integrated Strategy for Online Marketing: Email & SearchChris Baggot, An Integrated Strategy for Online Marketing: Email & Search
Chris Baggot, An Integrated Strategy for Online Marketing: Email & Searchwebcontent2007
 
Brian Winters, Improve Your User's Experience; Improve Your Bottom Line
Brian Winters, Improve Your User's Experience; Improve Your Bottom LineBrian Winters, Improve Your User's Experience; Improve Your Bottom Line
Brian Winters, Improve Your User's Experience; Improve Your Bottom Linewebcontent2007
 
Adam Howitt, Using Google Tools to Optimize Content for Business Results
Adam Howitt, Using Google Tools to Optimize Content for Business ResultsAdam Howitt, Using Google Tools to Optimize Content for Business Results
Adam Howitt, Using Google Tools to Optimize Content for Business Resultswebcontent2007
 

Mais de webcontent2007 (13)

Marketing in a Connected World
Marketing in a Connected WorldMarketing in a Connected World
Marketing in a Connected World
 
David Esrati, The Blogzilla Report- Fact, Fiction Fear: The Monster of the In...
David Esrati, The Blogzilla Report- Fact, Fiction Fear: The Monster of the In...David Esrati, The Blogzilla Report- Fact, Fiction Fear: The Monster of the In...
David Esrati, The Blogzilla Report- Fact, Fiction Fear: The Monster of the In...
 
David Terry, Website Optimization and Automation to Maximize Lead Generation ...
David Terry, Website Optimization and Automation to Maximize Lead Generation ...David Terry, Website Optimization and Automation to Maximize Lead Generation ...
David Terry, Website Optimization and Automation to Maximize Lead Generation ...
 
Stephen Bouikidis, Avoiding the Target Trap: Creating Accessible Section 508 ...
Stephen Bouikidis, Avoiding the Target Trap: Creating Accessible Section 508 ...Stephen Bouikidis, Avoiding the Target Trap: Creating Accessible Section 508 ...
Stephen Bouikidis, Avoiding the Target Trap: Creating Accessible Section 508 ...
 
Jen Consalvo, Making it Personal: Designing 'My' Web
Jen Consalvo, Making it Personal: Designing 'My' WebJen Consalvo, Making it Personal: Designing 'My' Web
Jen Consalvo, Making it Personal: Designing 'My' Web
 
Bryant Shea, Building Online Communities
Bryant Shea, Building Online CommunitiesBryant Shea, Building Online Communities
Bryant Shea, Building Online Communities
 
Calvin Hendryx Parker, Enabling the Semantic Web with RDF
Calvin Hendryx Parker, Enabling the Semantic Web with RDFCalvin Hendryx Parker, Enabling the Semantic Web with RDF
Calvin Hendryx Parker, Enabling the Semantic Web with RDF
 
Salim Ismail, RSS: The Publish/Subscribe Model
Salim Ismail, RSS: The Publish/Subscribe ModelSalim Ismail, RSS: The Publish/Subscribe Model
Salim Ismail, RSS: The Publish/Subscribe Model
 
Emma Hamer, Understanding the Impact of Change: How to Become a Master of You...
Emma Hamer, Understanding the Impact of Change: How to Become a Master of You...Emma Hamer, Understanding the Impact of Change: How to Become a Master of You...
Emma Hamer, Understanding the Impact of Change: How to Become a Master of You...
 
Rob Rose, Software as a Service: Understanding Hosted Web Content Management ...
Rob Rose, Software as a Service: Understanding Hosted Web Content Management ...Rob Rose, Software as a Service: Understanding Hosted Web Content Management ...
Rob Rose, Software as a Service: Understanding Hosted Web Content Management ...
 
Chris Baggot, An Integrated Strategy for Online Marketing: Email & Search
Chris Baggot, An Integrated Strategy for Online Marketing: Email & SearchChris Baggot, An Integrated Strategy for Online Marketing: Email & Search
Chris Baggot, An Integrated Strategy for Online Marketing: Email & Search
 
Brian Winters, Improve Your User's Experience; Improve Your Bottom Line
Brian Winters, Improve Your User's Experience; Improve Your Bottom LineBrian Winters, Improve Your User's Experience; Improve Your Bottom Line
Brian Winters, Improve Your User's Experience; Improve Your Bottom Line
 
Adam Howitt, Using Google Tools to Optimize Content for Business Results
Adam Howitt, Using Google Tools to Optimize Content for Business ResultsAdam Howitt, Using Google Tools to Optimize Content for Business Results
Adam Howitt, Using Google Tools to Optimize Content for Business Results
 

Último

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Último (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

User Experiences with the Plone Content Management System

  • 1. User Experiences with the Plone Content Management System George K. Thiruvathukal (speaker) with special guests: Benjamín González, Matt Bone, and Konstantin Läufer Loyola University Chicago Computer Science Department Emerging Technologies Laboratory http://www.etl.luc.edu gkt@etl.luc.edu
  • 2. Overview • • Our Requirements Customizing Plone: Skins/Layers • • Quick Tour of Plone Customizing Plone: Archetypes • • What is Plone? Plugins • • The Open Source Definition Hosting Plone with Apache • • Plone’s Default Content Types Critique • • Publication States Conclusions • Content Metadata
  • 3. Our Requirements • Maintaining content should require little/no knowledge of HTML and web standards. Although we are technical, we don't want to be bothered with these details in most cases. Content is king...or queen. • Published site should be viewable from any standards-compliant browser on any platform. • Managing content and performing administrative tasks should also be possible on any standards-compliant browser on any platform. • We want to be future-proofed inasmuch as possible. For example, nothing should stand in the way of supporting non- desktop clients, e.g. phones, PDAs, or other quot;limitedquot; devices. • While less interesting to typical users, good architecture matters a great deal to us. This includes the software design, system scalability, and extensibility.
  • 11. Plone • a Free/Open Source (FOSS) Content Management System (CMS) • focus on non-technical users who want create/manage web sites • minimal knowledge of HTML or web standards assumed in UI • customization on the other hand requires knowledge of web standards (XHTML, CSS, XML) • Python required to extend Plone via plugins
  • 12. Open Source Licensing • • Free Redistribution No discrimination against fields of endeavor • Source code must be • included Distribution of license • • Derived works allowed License may not be specific to a product • Integrity of the Author's • Source Code License must not restrict other software • No discrimination against • persons or groups License must be technology- neutral
  • 13. Plone Default Content Types • Folders • Documents Everything you see • Link Objects in Plone is (has) a content • Files type. Everything! • Events • Images • News Items
  • 14. Publication States • Private: Content not viewable by the outside world, even if URI to reach the item is known. • Visible: Content viewable by outside world, if URI is known. • Published: Visible + URI is linked on page that is already being viewed (often as part of a navigation portlet)
  • 15. Customizing Plone • changing the look/feel • adding functionality via plugins • adding user-defined content types (archetypes)
  • 16. Customizing Look/Feel (Basics) • Plone's presentation layer is based on skins. • Skins in Plone are arranged in a layered scheme. • Each layer contributes presentation elements (templates, scripts, css files). • Elements in the upper layers override elements in lower layers.
  • 17. Adding Skins • Go to the Zope Management Interface (ZMI). • Go to portal_skins. • Click properties. • Add your new skin at the bottom.
  • 18.
  • 19. Adding New Layers • Create a new folder under portal_skins. • Add it as a layer under your skin in Properties. • Create/customize your elements under that folder.
  • 20.
  • 21. Hosting Plone • Apache Web Server acts as front end • Zope application acts as server back end • Plone is simply a Zope product that provides the core CMS functionality
  • 22. Apache + Plone == Happiness • integrated support for virtual domains (e.g. cs.luc.edu, etl.luc.edu, math.luc.edu, reu.cs.luc.edu, citep.com, etc.) • use of Apache virtual host (vhost) and rewriting logic to map incoming requests to individual Plone sites • rewriting logic allows each site to appear as separate web server but in fact all are (or can be) hosted on the same box • Plone/Zope itself serves the actual content via Apache proxying • option to cache Plone content for performance
  • 23. Archetypes • A framework in Plone that allows us to easily create content types. • A content type is something like a document, link, event or news item. • Archetypes is distributed as a Plone Product. (Our own custom content types will be distributed within a Plone Product, too.) • To create a new content type you write a Python class representing the content type and its schema. • The schema defines the fields contained within the type.
  • 24. ETL Project: An Example Content Type • Sometimes you want a page or content item that has a bit of structure. • Our research group has a number of projects with common elements: • project hosting site • repository location • developer and documentation wikis • version tracking • developer and support mailing lists • developer blog, etc.
  • 25. from Products.ATContentTypes.content.base import ATCTContent from Products.Archetypes.public import * from Products.ETL.ETLGlobals import * ETLProjectSchema = ATCTContent.schema.copy() + Schema(( StringField('projectHosting', validators=(quot;isURLquot;), widget=StringWidget(label='Project Hosting (URL):'), ), StringField('versionControl', validators=(quot;isURLquot;), widget=StringWidget(label='Version Control (URL):'), ), StringField('documentationWiki', validators=(quot;isURLquot;), widget=StringWidget(label='Documentation Wiki (URL):'), ), StringField('developmentWiki', Excerpt of Python code validators=(quot;isURLquot;), widget=StringWidget(label='Development Wiki (URL):'), ), to describe an ETL StringField('versionTracking', validators=(quot;isURLquot;), Project Archetype widget=StringWidget(label='Version Tracking (URL):'), ), StringField('developerMailingList', validators=(quot;isEmailquot;), widget=StringWidget(label='Developer Mailing List (email):'), ), StringField('supportMailingList', validators=(quot;isEmailquot;), widget=StringWidget(label='Support Mailing List(email):'), ), StringField('developersBlog', validators=(quot;isURLquot;), widget=StringWidget(label='Developers Blog (URL):'), ), TextField('projectSummary', searchable=1, default_output_type='text/html', default_content_type='text/html', allowable_content_types=('text/plain', 'text/structured', 'text/restructured', 'text/html'), widget = RichWidget(label='Project Summary:'), ), ))
  • 26. <!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Transitional//ENquot; quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdquot;> <html xmlns=quot;http://www.w3.org/1999/xhtmlquot; xml:lang=quot;en-USquot; lang=quot;en-USquot; metal:use-macro=quot;here/main_template/macros/masterquot;> XHTML+XML code to <body> <div metal:fill-slot=quot;mainquot;> <div metal:define-macro=quot;mainquot; tal:omit-tag=quot;quot;> create the “skin” for <h1 tal:content=quot;here/title_or_idquot;/> <tal:main_block ETL Project Content tal:define=quot;fieldList python:[('Project Hosting:', here.getProjectHosting(),'url'), ('Version Control:', here.getVersionControl(), 'url'), ('Documentation Wiki:', here.getDocumentationWiki(), 'url'), Type ('Development Wiki:', here.getDevelopmentWiki(), 'url'), ('Version Tracking:', here.getVersionTracking(), 'url'), ('Developers Mailing List:', here.getDeveloperMailingList(), 'email'), ('Support Mailing List:', here.getSupportMailingList(), 'email'), ('Developers Blog', here.getDevelopersBlog(), 'url'),]quot;> <tal:field_loop repeat=quot;field fieldListquot;> <tal:block condition=quot;python:bool(field[1])quot;> <h2 tal:content=quot;python:field[0]quot;>Label</h2> <a tal:condition=quot;python:field[2]=='url'quot; tal:attributes=quot;href python:field[1]quot; tal:content=quot;python:field[1]quot;>Link</a> <a tal:condition=quot;python:field[2]=='email'quot; tal:attributes=quot;href python:'mailto:%s'%field[1]quot; tal:content=quot;python:field[1]quot;>email</a> <!--<a tal:condition=quot;python:field[2]=='string'quot; tal:replace=quot;python:field[1]quot;/>--> <br/><br/> </tal:block> </tal:field_loop> </tal:main_block> <tal:block condition=quot;here/getProjectSummaryquot;> <h2>Project Summary:</h2> <tal:replace tal:content=quot;structure here/getProjectSummaryquot;/> <br/> </tal:block> </div> </div> </body> </html>
  • 29. Plugins • Live search: Allows users to search the site locally (similar to desktop search) by typing a few characters of the search string (now part of Plone >=2.5). • Kupu: WYSIWYG editing. Plone 2.1 and earlier used to require the use of structured text, which is great but sometimes lacks the richness and clarity of HTML. • JavaScript/CSS Menuing: The ability to introduce JavaScript menuing into a site by describing the navigation as a basic HTML table. (Our cs.luc.edu site uses this capability.) • Google Analytics for Plone: http://ingeniweb.sourceforge.net/ Products/AnalyticsForPlone
  • 30. Plugins: Zope + Plone • Plone is a Zope product and addition plugins (for Plone and Zope) are available through the extensible Zope architecture. • Zope is a Python-based extensible application serving platform (similar to J2EE and .Net). • In addition to full support for HTTP, Zope provides support for DAV, FTP, and other emerging web standards.
  • 31. Critique: The Good • Content types are part of a sophisticated vocabulary for thinking about a web site. • Plone places a premium on ease-of-use for day-to-day content management (i.e. content writers). • Plone is a project with considerable community interest with hundreds of plugins available. (one of the most active as measured by http://cmsmatrix.org. • The ability to do practically everything (as user and developer) within the browser and no client plugins (e.g. Java or ActiveX) on any major platform (Linux, OS X, and Windows) is compelling. • End-user documentation for end users is excellent. One of the few CMSs with a significant number of published books. • Installation is a breeze on most major platforms (Windows, OS X, and Linux).
  • 32. Critique: The Bad • While content writing can be done with WYSIWYG editors, the same is not true of layout at this time, hence the code examples we’ve presented. • Rich and powerful XML based template system requires significant technical (read: Python) knowledge to master. • Despite the Plone project's maturity, technical documentation remains somewhat weak (an irony, considering the user docs are excellent). • Some might take issue with the integration of content management and content serving within the same framework. Straightforward integration with Apache remedies this issue in part but the content still comes from the CMS itself.
  • 33. Critique: The Ugly • Some Plone releases (e.g. 2.1) have presented great difficulty when migrating from the previous releases (2.0). • Some plugin interactions can result in an unusable setup. When in doubt about a plugin, we recommend testing it in a non- production “sandbox” first. • Zope uses its own database, which seems to deliver excellent overall performance. Not having a standard database backend (e.g. MySQL or other relational DB) makes it difficult to do proper backup, which requires a special script. While MySQL is allegedly supported, we have not gotten it working yet. (The ZEO effort appears to be a recent effort to enhance support for load balancing and 3rd-party databases.)
  • 34. Futures • University has recently acquired a commercial CMS. • We'll continue to support and use Plone for specialized needs (e.g. research groups like ETL, student activities, and individual web sites) within our department. • Plone is a great solution, especially for small departments and groups with a need to get content up/running quickly and reliably with a consistent look/feel. As shown, with some work, Plone can be customized to give the appearance of a hand-crafted web site. • The ability to manage content from anywhere with a minimum number of browser dependencies is a key strength of Plone. Many CMS solutions require ActiveX or Java plugins that either do not work properly outside of Windows/IE or have not been tested sufficiently on alternate platforms, e.g. Linux and OS X.