1. Introducing Plone.pdf
To change the maximal image width select one of the following: medium
Up to table of contents [http://docs.neuroinf.de/PloneBook]
>> 2. Installing Plone >> [http://docs.neuroinf.de/PloneBook/ch2.rst?image_scale=medium]
1. Introducing Plone
Chapter 1
A company without a Web site is unthinkable—and most companies and organizations have more than one site. Whether it's an
external site for communicating with clients, an intranet for employees to use, or a site for direct client communication and
feedback, all Web sites have a common problem—how to manage the content on them. This is a challenge that can often cost
organizations large amounts of time and effort. Producing a powerful yet flexible system for these sites that meets ever-changing
requirements while growing to meet your company's emerging needs isn't easy.
No matter what the requirements for your Web site are or the amount of content or users, Plone is a user-friendly, powerful
solution that lets you easily add and edit any type of content through the Web, produce navigation and searches for that content,
and apply security and workflow to that content.
Plone enables you to put together almost any Web site and easily update it. This lets you build content-rich sites quickly so you
can gain a competitive advantage. Finally, probably the best things about this system are that it's free and it's open source. With its
large and impressive feature set, it's comparable, if not better than, many closed-source content management systems that cost
hundreds of thousands of dollars.
Mike Sugarbaker says the following when reporting on the Open Source Content Management Conference (OSCOM) in 2002 for
the Mindjack site (http://www.mindjack.com/events/oscom.html [http://www.mindjack.com/events/oscom.html] ):
"I won't do the complete rundown of all the 'competing' open-source content management frameworks. I'll cut to the chase: The
winner is Plone. This 'productized' take on the six-year-old web application framework Zope was the package with the most tools,
the most professionalism, the most traction, and, above all, the most buzz."
You can find the Plone Web site at http://www.plone.org [http://www.plone.org] , as shown in Figure 1-1. To try Plone easily, a
demonstration site is available at http://demo.plone.org [http://www.plone.org] . There you can quickly and easily add and edit
content through the Web. Specifically, you can add events, upload pictures, add documents, and process them all through the
framework that Plone provides.
[img/3294f0101.png/image_view_fullscreen]
Figure 1-1. The Plone Web site
What Is a Content Management System?
One simple definition for a Content Management System (CMS) is that it's a system for managing content. This is a rather
unhelpful definition, so I'll break it down into smaller parts for a fuller explanation. I'll start with a broad definition of content:
Content is a unit of data with some extra information attached to it. That piece of data could be a Web page, information about an
upcoming event, a Microsoft Word document, an image, a movie clip, or any piece of data that has meaning to the organization
deploying the system.
All these items are called content, and they all share similar attributes, such as the need to be added or edited by certain users and
be published in various ways. A system called workflow controls these attributes. Workflow is logic defined by the organization's
business rules, and it describes a system for managing the content.
Historically there has been a difference between document management systems and CMSs, but mostly these two systems have
converged. The essential difference is the items being managed; it's often considered that content is any unit of information, and a
document refers to something that's created and edited by humans using software such as Microsoft Office. Take, for example, a
book: A book contains many units of data and may require management slightly different from that required by content. However,
in most cases, this is a small difference, and products such as Plone are able to manage the small units of a larger piece of content
and reassemble them.
With the ubiquitousness of the Web, many CMSs are now classified as Web CMSs, either because they have a Web-based interface
or because they focus on a Web-based delivery system over the Internet or an intranet. Plone provides a Web management
interface and Web-based delivery system.
The following is one definition of a CMS (http://www.contentmanager.eu.com/history.htm
[http://www.contentmanager.eu.com/history.htm] ):
A CMS is a tool that enables a variety of (centralized) technical and (decentralized) nontechnical staff to create, edit,
manage and finally publish a variety of content (such as text, graphics, video, and so on) whilst being constrained by a
centralized set of rules, process, and workflows that ensure a coherent, validated Web site appearance.
Do You Want a Content Management System?
Although not the only advantage of a CMS, the most obvious benefit of a CMS is coordinating a Web site easily. Take a situation
where one person, a Webmaster, coordinates a Web site, either an intranet or an external site. Content comes from users in a
variety of formats, and the Webmaster turns these into usable Web pages by converting them to Hypertext Markup Language
(HTML). If a user has to change those pages, then the user sends the changes to the Webmaster, who changes the pages, and so
on.
This presents many problems for the organization, the biggest being that all content is flowing through one person -
an obvious bottleneck. That one person can do only so much work, and if that person is sick or leaves the company, a
great deal of productivity is lost in finding a replacement. The publishing process can be quite frustrating as e-mails fly
between the Webmaster and the user trying to get content published.
What's needed is a system that does the following:
Separates the content of a page from the presentation: If the actual content is separate from the presentation
method, then the content author doesn't need to know any HTML or how the page is delivered. In fact, one piece of
content could have many different templates applied to it, including formats other than HTML, such as Portable
Document Format (PDF), or Scalable Vector Graphics (SVG). When you want to change the look and feel of the site,
you have to change only that one template rather than all the content.
Allows certain users to add and edit content: If specified users can add and edit content easily, then there's no
need to send content to the Webmaster or Web team. Instead, the user who wants to create a page can do so and edit
it as much as necessary.
Applies rules to whom can publish what and when: Your business rules might not want just anybody
publishing content on your Web site; for example, people in marketing would be able to publish to the press release
part of the site and not to the engineering section.
Can apply business rules to content: If a person from marketing creates a press release, somebody in legal might
need to review that document. In this case, the document will be passed through a review process that ensures it won't
go live until these reviews are done.
Can search and index information intelligently: Since the CMS can keep track of structured information about
the content (such as author's name, publication date, modification dates, categories, and so on), it can produce listings
of content by author, recent content, and so on. It can also provide searching capabilities that are much smarter and
more useful than just a simple textual search.
Although this example portrays paybacks that are more significant for large organizations, organizations of all levels benefit from
this approach. In fact, typically small organizations that don't employ a full-time Webmaster can be one of the key beneficiaries of
such a system. By installing a CMS, you can resolve all these issues and more.
The key factor of any CMS is that it provides a clear separation of the key elements in it: security, workflow, templates, and so on.
For example, the templates presenting an item are separate from the content. This allows you to easily modify the presentation.
Introducing Plone's Features
Plone is open source, licensed under the General Public License (GPL), which is a common open-source license that allows anyone
to use the source for free. For more information about the GPL, go to the Free Software Foundation Web site at http://ww.gnu.org
[http://ww.gnu.org] . You can examine any aspect of Plone's code and alter it to fit your application. There are no licensing fees to
pay, there's no license that will expire, and all the code is visible. This open-source philosophy means that Plone already has a
large user base and legion of developers, usability experts, translators, technical writers, and graphic designers who are able to
work on Plone. By choosing Plone, you're not locked into one company; rather, nearly a dozen companies offer different Plone
services.
Packaging
Plone maintains easy installers for Windows, Linux, and Mac. Other third-party products and add-ons also come with the
installers. Maintaining quality releases of these products makes installation and management easy. Also, each new release
maintains migration paths and updates so that your Plone site will keep working and stay up-to-date.
Internationalization
The whole Plone user interface is translated into more than 20 languages, including Korean, Japanese, French, Spanish, and
German. Inserting your own translation is easy (see Chapter 4).
Usability
Plone offers an excellent user experience that provides high levels of usability and accessibility. This isn't just a matter of
presenting pretty HTML but instead goes to the core of Plone. Plone provides an interface that's compatible with the industry and
government standard WAI-AAA and U.S. Section 508. This allows sites built with Plone to be used by people with vision
disabilities. In addition, this provides the unexpected but related benefit that your page may index better in search engines such as
Google.
Skinnable
Plone separates the content from the actual templates used to present the content, often called skins. The skins are written in the
excellent HTML templating system, Zope Page Templates, and a large amount of Cascading Style Sheets (CSS). With little
knowledge of Plone, you can apply multiple skins, achieve multiple looks, and totally customize your Web site's appearance.
Registration and Personalization
Plone features a complete user registration system. Users register with a Plone site using their own username, password, and any
other information you might want to add about the user. You can then personalize the whole user interface for that user. In
addition, with add-ons, you can use information you already have about users, coming from many places, such as relational
databases, Lightweight Directory Access Protocol (LDAP), Active Directory, and more. Chapter 8 covers how to register and
configure users.
Workflow and Security
Workflow controls the logic of processing content through the site. You can configure this logic through the Web using graphical
tools. Site administrators can make sites as complex or as simple as they'd like; for example, you can add notification tools such
as sending e-mails or instant messages to users. Chapter 8 covers workflow in great detail.
For every item of content in a Plone site, you can set up access control lists to decide who has access to that item and how they'll
be able to interact with it. Will they be able to edit it, view it, or comment on it? All this is configurable through the Web (see
Chapter 9).
Extensible
Since Plone is open source, it can be easily altered. You can change and configure almost any aspect of Plone to suit your needs.
Countless packages and tools for Plone provide a wide array of options for smaller sites and for large-scale enterprises.
Repositories of free add-ons for Plone are available at http://www.plone.org [http://www.plone.org] . With development tools
such as Archetypes (covered in Chapter 13), you can generate and alter Plone code easily through the Web or using Unified
Modeling Language (UML) tools. Chapter 10 covers integration of Plone with enterprise solutions such as LDAP, Apache,
Microsoft Internet Information Services (IIS), Macromedia Dreamweaver, and so on.
Content Customization
Users of a Plone site can add all manner of content, but the data added isn't limited or constrained. Plone developers can create
their own content types so that almost any type of content can be managed; the only limit is your own imagination. In Chapters 11
and 12, I'll discuss how to customize the content types. Chapter 13 will introduce Archetypes, which is a very powerful system for
generating content types that don't require programming; for instance, you can generate new types of content from UML tools.
Documentation
The Plone project maintains documentation, including this book, which is published under the Creative Commons license. The
best starting place for the community documentation is at http://www.plone.org/documentation
[http://www.plone.org/documentation] .
Community
One of the best things about Plone is the community of developers and companies that supports and develops Plone. With more
than 60 developers involved to some degree in the project around the world, it's almost always possible to find a Plone developer
online who is willing and able to help you. Alan Runyan, Alexander Limi, and Vidar Andersen started Plone; however, it quickly
grew into a thriving open-source project as more developers became involved. The contributions from these developers form the
Plone product that's now available.
Example Plone Sites
Many Plone sites exist; some are obvious because of their looks, and some aren't. The following is just a small sample of the more
diverse sites:
Plone (http://www.plone.org) Plone Demo Site (http://demo.plone.org) Zope.org (http://www.zope.org)
Liquidnet (http://www.liquidnet.com) Design Science Toys (http://www.dstoys.com) Give Kids the World
(http://www.gktw.org) Propane (http://www.usepropane.com) Maestro Headquarters
(http://mars.telascience.org)
More Plone sites are available at http://www.plone.org/about/sites [http://www.plone.org/about/sites] , including sites that
provide a quite different user interface. Without knowing about the development of these sites, it would in fact be hard to tell that
these sites use Plone.
Getting Involved in Plone's Development
Although Plone has an impressive list of features, its list of 'wants' even more impressive. For this reason, the project is always on
the lookout for new people willing to contribute time for the project.
Fortunately, because Plone is focused on the end user, there's a need for a very broad spectrum of disciplines. Volunteers in a
range of areas, rather than just coders or Web developers, are welcomed. Plone needs user interface developers, usability experts,
graphic designers, translators, writers, and testers. You can find the current development status on the Plone Web site at
http://plone.org/development [http://plone.org/development] , and the best way to get involved is to join the mailing lists or join
the developers on an Internet Relay Chat (IRC) channel.
Plone is built on top of Zope and the Content Management Framework (CMF). To understand Plone, you have to understand Zope
and the CMF as the underlying architecture. For this reason, I'll explain these two items and how they integrate with Plone in this
section.
Zope is a powerful and flexible open-source Web application server developed by Zope Corporation
(http://www.zope.org [http://www.zope.org] ). Originally, Zope was developed as a stand-alone CMS, but over time it
didn't satisfy the needs of its users. Then Zope Corporation developed the CMF an open-source project. The CMF
didn't satisfy the needs of its users. Then Zope Corporation developed the CMF an open-source project. The CMF
provides developers with the tools necessary to create complex CMSs; it enables workflow, provides site skinning, and
offers other functions.
The CMF is a framework for a system; in other words, it provides the tools for developers to build a product, rather than just
providing an out-of-the-box system that users can use immediately. Plone takes this and many other features and improves upon
them to provide the user with a high-quality product. Plone is a layer on top of the CMF, which is an application running on top of
Zope. Understanding the CMF is key to understanding Plone. Most administration functions require the use of Zope's
administration interface, and developing Plone requires an understanding of Zope and its objects.
This book doesn't go into depth about Zope; rather, it gives you enough information to complete tasks in Plone. Just reading this
book will give you enough information to customize and modify almost anything you want in Plone. For more information on
Zope, I recommend The Zope Book. Originally published by New Riders, it has since been placed online and is updated by
community members. It's available free online at http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition
[http://www.zope.org/Documentation/Books/ZopeBook/2_6 Edition] .
Both Zope and the CMF are key technologies that Plone needs; without them, Plone wouldn't exist. The Plone team owes a great
deal of thanks to everyone at Zope Corporation for having the vision to create and then offer both Zope and the CMF as open
source. The list of people I'd like to thank there and in the CMF communities is long. Thank you, everyone involved.
Zope is written in Python, a powerful object-oriented, open-source programming language comparable to Perl or Tcl. Knowledge
of Python isn't required to use Plone or even to do some basic administration; however, customizing products and scripting Plone
does require some Python.
Tommy Burnette, a senior technical director at Industrial Light Magic, says this about Python
(http://www.python.org/Quotes.html [http://www.python.org/Quotes.html] ):
Python plays a key role in our production pipeline. Without it a project the size of Star Wars: Episode II
If you plan to do anything sophisticated with Plone, take a day or two to learn the basics of Python. Not only will this allow you to
customize Plone substantially, but it'll also familiarize you with objects and how they interact in the Plone environment. Teaching
you Python is outside the scope of this book; instead, I assume you have a basic knowledge of Python. That fundamental
knowledge of Python will be enough to get you through this book and allow you to customize the Plone installation easily.
Fortunately, Python is an easy programming language to learn; on average, it takes an experienced programmer a day to become
productive in it. New programmers take a little longer. If you're installing Plone using the Windows or Mac installers, then the
correct version of Python will be included. To download Python as separate product, for almost any operating system, go to
http://www.python.org [http://www.python.org] .
The best way to master Python is to try it from the command Python interpreter. If you have a Windows installation of Plone,
there's a link for the Pythonwin, a Python Integrated Development Environment (IDE) already in the Start menu; go to Start -
Programs - Plone - Pythonwin (see Figure 1-2).
[img/3294 f0102.png/image_view_fullscreen]
Figure 1-2. The Python prompt on Windows
On Linux and Mac OS X, usually typing python will start the Python interpreter:
$ python
P y y t h o n 2.3.2 (#1, Oct 6 2003, 10:07:16)
[ G C C 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
T y p e "help", "copyright", "credits" or "license" for more information.
>>>
Since Python is an interpreted language, instead of the whole Python script being compiled and run, you can just send lines of
code to the interpreter as you write them. This makes the interpreter an amazingly useful place for testing and debugging code. In
the interpreter, each line waiting for input is prefixed with >>>.
For example, the simplest 'Hello, World” program is as follows:
> > > print "Hello, world!"
H e l l o , world!
>>>
To exit the interpreter, press Ctrl+D (press the D key while holding down Ctrl) on Linux or press Ctrl+Z on Windows. (You'll also
use this later for more advanced Zope and Plone interaction.) You can execute normal Python scripts by passing them to the
interpreter; for example, given the following script called hello.py:
p r i n t "Hello, world!"
you can run this using the following command:
$ python hello.py
H e l l o , world!
The Python Web site at http://www.python.org [http://www.python.org] has excellent documentation, especially the tutorial. Also,
the following books provide a good overview of Python:
*Dive Into Python* (Apress,2004): Based on Mark Pilgrim's popular Web-based tutorial, this books treats
readers to a fast-paced introduction to the Python language. This is a great book geared toward experienced
programmers.
*Learning Python*, Second Edition (O'Reilly, 2003): This book covers version 2.3 of Python and
provides a good overview of Python and all the new features. This is good for relatively new programmers.
*Practical Python* (Apress, August 2002): This highly practical introduction to Python offers insight into
the language's array of features. The reader can immediately put this knowledge into practice, following along
with the creation of ten interesting projects, including a Web-based bulletin board and a Graphical User
Interface–based file-sharing application.
*Python Essential Reference*, Second Edition* *(Sams, 2001): A reference book that provides a great
overview of all the key libraries and functions. This is an excellent book for experienced programmers.
This book uses the following conventions:
Italics: New terms are italicized. (Appendix C contains an extensive glossary that defines all acronyms.) Also,
links that appear in the user interface are italicized.
Bold : If there are instructions within the text that include something you should type on your keyboard, these
words are in bold.
Code font: A monospaced font indicates filenames, folder paths, code, variables, and Uniform Resource
Locators (URLs).
This book contains lots of screen shots of Zope, Python, and Plone. Since Plone is a rapidly developing product, the screen shots
might vary slightly from the version of software you're using; these changes should be minor and shouldn't affect your
understanding of the system.
For this book, the following versions of software are used; although this book is specifically written with these versions in mind, all
the software should work on these and later versions for some time to come.
Plone 2.0 was the most recently released version of Plone at the time of writing. This is the second major release of the software,
and it provides many new features over 1.0, including group user management, a new interface, and an improved Zope
distribution. It's strongly suggested you start any new projects in 2.0 or later, rather than using the earlier versions of Plone.
Version 2.0 of Plone has the following dependencies: Zope 2.7, CMF 1.4.2, and Python 2.3.3. All of the code examples in this book
Version 2.0 of Plone has the following dependencies: Zope 2.7, CMF 1.4.2, and Python 2.3.3. All of the code examples in this book
have been specifically designed not to be dependent upon these versions or a particular operating system. However, there may be
situations where this isn't the case; I apologize for any inconvenience.
Originally, a group of Plone users keen to produce quality documentation came up with the idea of this book. We released the first
version of that book on the Plone Web site as an open-source documentation project. All the content added to the Plone Web site
was under the open publication license.
Growing interest in Plone made a commercial book more feasible, and in the summer of 2003, Apress and I started this book. I
used some of the material from the old book with the original owners' permissions. With the change to Plone 2, I added a large
amount of new material. This book is now published under the Creative Commons license, which allows for the reuse of this work
as long as the original author is attributed. However, you may not use this work for commercial purposes. For more information,
see the license online at http://creativecommons.org/licenses/by-nc-sa/1.0/ [http://creativecommons.org/licenses/by-nc-sa/1.0/]
.
Up to table of contents [http://docs.neuroinf.de/PloneBook]
>> 2. Installing Plone >> [http://docs.neuroinf.de/PloneBook/ch2.rst?image_scale=medium]
Up to table of contents [http://docs.neuroinf.de/PloneBook]
>> 2. Installing Plone >> [http://docs.neuroinf.de/PloneBook/ch2.rst?image_scale=medium]
1. Introducing Plone
Chapter 1
A company without a Web site is unthinkable—and most companies and organizations have more than one site. Whether it's an
external site for communicating with clients, an intranet for employees to use, or a site for direct client communication and
feedback, all Web sites have a common problem—how to manage the content on them. This is a challenge that can often cost
organizations large amounts of time and effort. Producing a powerful yet flexible system for these sites that meets ever-changing
requirements while growing to meet your company's emerging needs isn't easy.
No matter what the requirements for your Web site are or the amount of content or users, Plone is a user-friendly, powerful
solution that lets you easily add and edit any type of content through the Web, produce navigation and searches for that content,
and apply security and workflow to that content.
Plone enables you to put together almost any Web site and easily update it. This lets you build content-rich sites quickly so you
can gain a competitive advantage. Finally, probably the best things about this system are that it's free and it's open source. With its
large and impressive feature set, it's comparable, if not better than, many closed-source content management systems that cost
hundreds of thousands of dollars.
Mike Sugarbaker says the following when reporting on the Open Source Content Management Conference (OSCOM) in 2002 for
the Mindjack site (http://www.mindjack.com/events/oscom.html [http://www.mindjack.com/events/oscom.html] ):
"I won't do the complete rundown of all the 'competing' open-source content management frameworks. I'll cut to the chase: The
winner is Plone. This 'productized' take on the six-year-old web application framework Zope was the package with the most tools,
the most professionalism, the most traction, and, above all, the most buzz."
You can find the Plone Web site at http://www.plone.org [http://www.plone.org] , as shown in Figure 1-1. To try Plone easily, a
demonstration site is available at http://demo.plone.org [http://www.plone.org] . There you can quickly and easily add and edit
content through the Web. Specifically, you can add events, upload pictures, add documents, and process them all through the
framework that Plone provides.
[img/3294f0101.png/image_view_fullscreen]
Figure 1-1. The Plone Web site
What Is a Content Management System?
One simple definition for a Content Management System (CMS) is that it's a system for managing content. This is a rather
unhelpful definition, so I'll break it down into smaller parts for a fuller explanation. I'll start with a broad definition of content:
Content is a unit of data with some extra information attached to it. That piece of data could be a Web page, information about an
upcoming event, a Microsoft Word document, an image, a movie clip, or any piece of data that has meaning to the organization
deploying the system.
All these items are called content, and they all share similar attributes, such as the need to be added or edited by certain users and
be published in various ways. A system called workflow controls these attributes. Workflow is logic defined by the organization's
business rules, and it describes a system for managing the content.
Historically there has been a difference between document management systems and CMSs, but mostly these two systems have
converged. The essential difference is the items being managed; it's often considered that content is any unit of information, and a
document refers to something that's created and edited by humans using software such as Microsoft Office. Take, for example, a
book: A book contains many units of data and may require management slightly different from that required by content. However,
in most cases, this is a small difference, and products such as Plone are able to manage the small units of a larger piece of content
and reassemble them.
With the ubiquitousness of the Web, many CMSs are now classified as Web CMSs, either because they have a Web-based interface
or because they focus on a Web-based delivery system over the Internet or an intranet. Plone provides a Web management
interface and Web-based delivery system.
The following is one definition of a CMS (http://www.contentmanager.eu.com/history.htm
[http://www.contentmanager.eu.com/history.htm] ):
A CMS is a tool that enables a variety of (centralized) technical and (decentralized) nontechnical staff to create, edit,
manage and finally publish a variety of content (such as text, graphics, video, and so on) whilst being constrained by a
centralized set of rules, process, and workflows that ensure a coherent, validated Web site appearance.
Do You Want a Content Management System?
Although not the only advantage of a CMS, the most obvious benefit of a CMS is coordinating a Web site easily. Take a situation
where one person, a Webmaster, coordinates a Web site, either an intranet or an external site. Content comes from users in a
variety of formats, and the Webmaster turns these into usable Web pages by converting them to Hypertext Markup Language
(HTML). If a user has to change those pages, then the user sends the changes to the Webmaster, who changes the pages, and so
on.
This presents many problems for the organization, the biggest being that all content is flowing through one person -
an obvious bottleneck. That one person can do only so much work, and if that person is sick or leaves the company, a
great deal of productivity is lost in finding a replacement. The publishing process can be quite frustrating as e-mails fly
between the Webmaster and the user trying to get content published.
What's needed is a system that does the following:
Separates the content of a page from the presentation: If the actual content is separate from the presentation
method, then the content author doesn't need to know any HTML or how the page is delivered. In fact, one piece of
content could have many different templates applied to it, including formats other than HTML, such as Portable
Document Format (PDF), or Scalable Vector Graphics (SVG). When you want to change the look and feel of the site,
you have to change only that one template rather than all the content.
Allows certain users to add and edit content: If specified users can add and edit content easily, then there's no
need to send content to the Webmaster or Web team. Instead, the user who wants to create a page can do so and edit
it as much as necessary.
Applies rules to whom can publish what and when: Your business rules might not want just anybody
publishing content on your Web site; for example, people in marketing would be able to publish to the press release
part of the site and not to the engineering section.
Can apply business rules to content: If a person from marketing creates a press release, somebody in legal might
need to review that document. In this case, the document will be passed through a review process that ensures it won't
go live until these reviews are done.
Can search and index information intelligently: Since the CMS can keep track of structured information about
the content (such as author's name, publication date, modification dates, categories, and so on), it can produce listings
of content by author, recent content, and so on. It can also provide searching capabilities that are much smarter and
more useful than just a simple textual search.
Although this example portrays paybacks that are more significant for large organizations, organizations of all levels benefit from
this approach. In fact, typically small organizations that don't employ a full-time Webmaster can be one of the key beneficiaries of
such a system. By installing a CMS, you can resolve all these issues and more.
The key factor of any CMS is that it provides a clear separation of the key elements in it: security, workflow, templates, and so on.
For example, the templates presenting an item are separate from the content. This allows you to easily modify the presentation.
Introducing Plone's Features
Plone is open source, licensed under the General Public License (GPL), which is a common open-source license that allows anyone
to use the source for free. For more information about the GPL, go to the Free Software Foundation Web site at http://ww.gnu.org
[http://ww.gnu.org] . You can examine any aspect of Plone's code and alter it to fit your application. There are no licensing fees to
pay, there's no license that will expire, and all the code is visible. This open-source philosophy means that Plone already has a
large user base and legion of developers, usability experts, translators, technical writers, and graphic designers who are able to
work on Plone. By choosing Plone, you're not locked into one company; rather, nearly a dozen companies offer different Plone
services.
Packaging
Plone maintains easy installers for Windows, Linux, and Mac. Other third-party products and add-ons also come with the
installers. Maintaining quality releases of these products makes installation and management easy. Also, each new release
maintains migration paths and updates so that your Plone site will keep working and stay up-to-date.
Internationalization
The whole Plone user interface is translated into more than 20 languages, including Korean, Japanese, French, Spanish, and
German. Inserting your own translation is easy (see Chapter 4).
Usability
Plone offers an excellent user experience that provides high levels of usability and accessibility. This isn't just a matter of
presenting pretty HTML but instead goes to the core of Plone. Plone provides an interface that's compatible with the industry and
government standard WAI-AAA and U.S. Section 508. This allows sites built with Plone to be used by people with vision
disabilities. In addition, this provides the unexpected but related benefit that your page may index better in search engines such as
Google.
Skinnable
Plone separates the content from the actual templates used to present the content, often called skins. The skins are written in the
excellent HTML templating system, Zope Page Templates, and a large amount of Cascading Style Sheets (CSS). With little
knowledge of Plone, you can apply multiple skins, achieve multiple looks, and totally customize your Web site's appearance.
Registration and Personalization
Plone features a complete user registration system. Users register with a Plone site using their own username, password, and any
other information you might want to add about the user. You can then personalize the whole user interface for that user. In
addition, with add-ons, you can use information you already have about users, coming from many places, such as relational
databases, Lightweight Directory Access Protocol (LDAP), Active Directory, and more. Chapter 8 covers how to register and
configure users.
Workflow and Security
Workflow controls the logic of processing content through the site. You can configure this logic through the Web using graphical
tools. Site administrators can make sites as complex or as simple as they'd like; for example, you can add notification tools such
as sending e-mails or instant messages to users. Chapter 8 covers workflow in great detail.
For every item of content in a Plone site, you can set up access control lists to decide who has access to that item and how they'll
be able to interact with it. Will they be able to edit it, view it, or comment on it? All this is configurable through the Web (see
Chapter 9).
Extensible
Since Plone is open source, it can be easily altered. You can change and configure almost any aspect of Plone to suit your needs.
Countless packages and tools for Plone provide a wide array of options for smaller sites and for large-scale enterprises.
Repositories of free add-ons for Plone are available at http://www.plone.org [http://www.plone.org] . With development tools
such as Archetypes (covered in Chapter 13), you can generate and alter Plone code easily through the Web or using Unified
Modeling Language (UML) tools. Chapter 10 covers integration of Plone with enterprise solutions such as LDAP, Apache,
Microsoft Internet Information Services (IIS), Macromedia Dreamweaver, and so on.
Content Customization
Users of a Plone site can add all manner of content, but the data added isn't limited or constrained. Plone developers can create
their own content types so that almost any type of content can be managed; the only limit is your own imagination. In Chapters 11
and 12, I'll discuss how to customize the content types. Chapter 13 will introduce Archetypes, which is a very powerful system for
generating content types that don't require programming; for instance, you can generate new types of content from UML tools.
Documentation
The Plone project maintains documentation, including this book, which is published under the Creative Commons license. The
best starting place for the community documentation is at http://www.plone.org/documentation
[http://www.plone.org/documentation] .
Community
One of the best things about Plone is the community of developers and companies that supports and develops Plone. With more
than 60 developers involved to some degree in the project around the world, it's almost always possible to find a Plone developer
online who is willing and able to help you. Alan Runyan, Alexander Limi, and Vidar Andersen started Plone; however, it quickly
grew into a thriving open-source project as more developers became involved. The contributions from these developers form the
Plone product that's now available.
Example Plone Sites
Many Plone sites exist; some are obvious because of their looks, and some aren't. The following is just a small sample of the more
diverse sites:
Plone (http://www.plone.org) Plone Demo Site (http://demo.plone.org) Zope.org (http://www.zope.org)
Liquidnet (http://www.liquidnet.com) Design Science Toys (http://www.dstoys.com) Give Kids the World
(http://www.gktw.org) Propane (http://www.usepropane.com) Maestro Headquarters
(http://mars.telascience.org)
More Plone sites are available at http://www.plone.org/about/sites [http://www.plone.org/about/sites] , including sites that
provide a quite different user interface. Without knowing about the development of these sites, it would in fact be hard to tell that
these sites use Plone.
Getting Involved in Plone's Development
Although Plone has an impressive list of features, its list of 'wants' even more impressive. For this reason, the project is always on
the lookout for new people willing to contribute time for the project.
Fortunately, because Plone is focused on the end user, there's a need for a very broad spectrum of disciplines. Volunteers in a
range of areas, rather than just coders or Web developers, are welcomed. Plone needs user interface developers, usability experts,
graphic designers, translators, writers, and testers. You can find the current development status on the Plone Web site at
http://plone.org/development [http://plone.org/development] , and the best way to get involved is to join the mailing lists or join
the developers on an Internet Relay Chat (IRC) channel.
Plone is built on top of Zope and the Content Management Framework (CMF). To understand Plone, you have to understand Zope
and the CMF as the underlying architecture. For this reason, I'll explain these two items and how they integrate with Plone in this
section.
Zope is a powerful and flexible open-source Web application server developed by Zope Corporation
(http://www.zope.org [http://www.zope.org] ). Originally, Zope was developed as a stand-alone CMS, but over time it
didn't satisfy the needs of its users. Then Zope Corporation developed the CMF an open-source project. The CMF
didn't satisfy the needs of its users. Then Zope Corporation developed the CMF an open-source project. The CMF
provides developers with the tools necessary to create complex CMSs; it enables workflow, provides site skinning, and
offers other functions.
The CMF is a framework for a system; in other words, it provides the tools for developers to build a product, rather than just
providing an out-of-the-box system that users can use immediately. Plone takes this and many other features and improves upon
them to provide the user with a high-quality product. Plone is a layer on top of the CMF, which is an application running on top of
Zope. Understanding the CMF is key to understanding Plone. Most administration functions require the use of Zope's
administration interface, and developing Plone requires an understanding of Zope and its objects.
This book doesn't go into depth about Zope; rather, it gives you enough information to complete tasks in Plone. Just reading this
book will give you enough information to customize and modify almost anything you want in Plone. For more information on
Zope, I recommend The Zope Book. Originally published by New Riders, it has since been placed online and is updated by
community members. It's available free online at http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition
[http://www.zope.org/Documentation/Books/ZopeBook/2_6 Edition] .
Both Zope and the CMF are key technologies that Plone needs; without them, Plone wouldn't exist. The Plone team owes a great
deal of thanks to everyone at Zope Corporation for having the vision to create and then offer both Zope and the CMF as open
source. The list of people I'd like to thank there and in the CMF communities is long. Thank you, everyone involved.
Zope is written in Python, a powerful object-oriented, open-source programming language comparable to Perl or Tcl. Knowledge
of Python isn't required to use Plone or even to do some basic administration; however, customizing products and scripting Plone
does require some Python.
Tommy Burnette, a senior technical director at Industrial Light Magic, says this about Python
(http://www.python.org/Quotes.html [http://www.python.org/Quotes.html] ):
Python plays a key role in our production pipeline. Without it a project the size of Star Wars: Episode II
If you plan to do anything sophisticated with Plone, take a day or two to learn the basics of Python. Not only will this allow you to
customize Plone substantially, but it'll also familiarize you with objects and how they interact in the Plone environment. Teaching
you Python is outside the scope of this book; instead, I assume you have a basic knowledge of Python. That fundamental
knowledge of Python will be enough to get you through this book and allow you to customize the Plone installation easily.
Fortunately, Python is an easy programming language to learn; on average, it takes an experienced programmer a day to become
productive in it. New programmers take a little longer. If you're installing Plone using the Windows or Mac installers, then the
correct version of Python will be included. To download Python as separate product, for almost any operating system, go to
http://www.python.org [http://www.python.org] .
The best way to master Python is to try it from the command Python interpreter. If you have a Windows installation of Plone,
there's a link for the Pythonwin, a Python Integrated Development Environment (IDE) already in the Start menu; go to Start -
Programs - Plone - Pythonwin (see Figure 1-2).
[img/3294 f0102.png/image_view_fullscreen]
Figure 1-2. The Python prompt on Windows
On Linux and Mac OS X, usually typing python will start the Python interpreter:
$ python
P y y t h o n 2.3.2 (#1, Oct 6 2003, 10:07:16)
[ G C C 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
T y p e "help", "copyright", "credits" or "license" for more information.
>>>
Since Python is an interpreted language, instead of the whole Python script being compiled and run, you can just send lines of
code to the interpreter as you write them. This makes the interpreter an amazingly useful place for testing and debugging code. In
the interpreter, each line waiting for input is prefixed with >>>.
For example, the simplest 'Hello, World” program is as follows:
> > > print "Hello, world!"
H e l l o , world!
>>>
To exit the interpreter, press Ctrl+D (press the D key while holding down Ctrl) on Linux or press Ctrl+Z on Windows. (You'll also
use this later for more advanced Zope and Plone interaction.) You can execute normal Python scripts by passing them to the
interpreter; for example, given the following script called hello.py:
p r i n t "Hello, world!"
you can run this using the following command:
$ python hello.py
H e l l o , world!
The Python Web site at http://www.python.org [http://www.python.org] has excellent documentation, especially the tutorial. Also,
the following books provide a good overview of Python:
*Dive Into Python* (Apress,2004): Based on Mark Pilgrim's popular Web-based tutorial, this books treats
readers to a fast-paced introduction to the Python language. This is a great book geared toward experienced
programmers.
*Learning Python*, Second Edition (O'Reilly, 2003): This book covers version 2.3 of Python and
provides a good overview of Python and all the new features. This is good for relatively new programmers.
*Practical Python* (Apress, August 2002): This highly practical introduction to Python offers insight into
the language's array of features. The reader can immediately put this knowledge into practice, following along
with the creation of ten interesting projects, including a Web-based bulletin board and a Graphical User
Interface–based file-sharing application.
*Python Essential Reference*, Second Edition* *(Sams, 2001): A reference book that provides a great
overview of all the key libraries and functions. This is an excellent book for experienced programmers.
This book uses the following conventions:
Italics: New terms are italicized. (Appendix C contains an extensive glossary that defines all acronyms.) Also,
links that appear in the user interface are italicized.
Bold : If there are instructions within the text that include something you should type on your keyboard, these
words are in bold.
Code font: A monospaced font indicates filenames, folder paths, code, variables, and Uniform Resource
Locators (URLs).
This book contains lots of screen shots of Zope, Python, and Plone. Since Plone is a rapidly developing product, the screen shots
might vary slightly from the version of software you're using; these changes should be minor and shouldn't affect your
understanding of the system.
For this book, the following versions of software are used; although this book is specifically written with these versions in mind, all
the software should work on these and later versions for some time to come.
Plone 2.0 was the most recently released version of Plone at the time of writing. This is the second major release of the software,
and it provides many new features over 1.0, including group user management, a new interface, and an improved Zope
distribution. It's strongly suggested you start any new projects in 2.0 or later, rather than using the earlier versions of Plone.
Version 2.0 of Plone has the following dependencies: Zope 2.7, CMF 1.4.2, and Python 2.3.3. All of the code examples in this book
Version 2.0 of Plone has the following dependencies: Zope 2.7, CMF 1.4.2, and Python 2.3.3. All of the code examples in this book
have been specifically designed not to be dependent upon these versions or a particular operating system. However, there may be
situations where this isn't the case; I apologize for any inconvenience.
Originally, a group of Plone users keen to produce quality documentation came up with the idea of this book. We released the first
version of that book on the Plone Web site as an open-source documentation project. All the content added to the Plone Web site
was under the open publication license.
Growing interest in Plone made a commercial book more feasible, and in the summer of 2003, Apress and I started this book. I
used some of the material from the old book with the original owners' permissions. With the change to Plone 2, I added a large
amount of new material. This book is now published under the Creative Commons license, which allows for the reuse of this work
as long as the original author is attributed. However, you may not use this work for commercial purposes. For more information,
see the license online at http://creativecommons.org/licenses/by-nc-sa/1.0/ [http://creativecommons.org/licenses/by-nc-sa/1.0/]
.
Up to table of contents [http://docs.neuroinf.de/PloneBook]
>> 2. Installing Plone >> [http://docs.neuroinf.de/PloneBook/ch2.rst?image_scale=medium]