Professional Plone Development
Formats:
save 25%!
save 37%!
Free Shipping!
| Also available on: |
|
- Plone development fundamentals
- Customizing Plone
- Developing new functionality
- Real-world deployments
Book Details
Language : EnglishPaperback : 420 pages [ 235mm x 191mm ]
Release Date : September 2007
ISBN : 1847191983
ISBN 13 : 9781847191984
Author(s) : Martin Aspeli
Topics and Technologies : All Books, Content Management (CMS), Open Source, Plone, Python
Table of Contents
Preface
Chapter 1: Plone in Context
Chapter 2: The Case Study
Chapter 3: The Development Environment
Chapter 4: Customization Basics
Chapter 5: Developing a Site Strategy
Chapter 6: Security and Workflow
Chapter 7: Using Add-on Products
Chapter 8: Creating a Custom Theme
Chapter 9: Nine Core Concepts of Zope Programming
Chapter 10: Custom Content Types
Chapter 11: Standalone Views and Forms
Chapter 12: Relational Databases
Chapter 13: Users and Their Permissions
Chapter 14: Rich User Interfaces with KSS
Chapter 15: Next Steps
Chapter 16: Server Management
Chapter 17: Setting Up a Production Server
Chapter 18: Authenticating with LDAP
Chapter 19: Looking to the Future
Index
Martin Aspeli
Professional Plone Development is a worthy addition to the library of any Plone administrator interested in making the most of their Plone installation Michael J. Ross, Web Developer
Code Downloads
Download the code and support files for this book.
Submit Errata
Please let us know if you have found any errors not listed on this list by completing our errata submission form. Our editors will check them and add them to this list. Thank you.
Errata
- 40 submitted: last submission 09 Jan 2012Errata type: Typo | Page number: 130
However, like the login-related templates alrealdy mentioned,.... 'alrealdy' is wrongly spelled. It should be 'already'
Errata type: Code bundle | Page number: Code bundle
Filename optilux-tetstdata.sql is misspelled. It should be optilux-testdata.sql.
Errata type: Code | Page number: 17
Missing apostrophe (') on line 3 at the end of the define procedure.
Errata type: Typo | Page number: 23
Multiplicity between Staff-Cinema should be *->*, not 1->n
Errata type: Code | Page number: 28
# python ez_setup.py
$ easy_install ZopeSkel
should read:
# python ez_setup.py
# easy_install ZopeSkel
Errata type: Typo | Page number: 58
Third paragraph:
"An install.py script may contain[...]"
should read
"An Install.py script may contain[...]"
Errata type: Typo | Page number: 63
In the second paragraph a URL is cited (/some-folder/some-content/@@list-contents), but the following text has a typo: If the some-context object... The correct text would be: If the some-content object...
Errata type: Typo | Page number: 63
First line of second paragraph the URL should read like </br>/some-folder/some-context/[...] </br>as opposed to </br>/some-folder/some-content/[...] as some-context is referred to later on
Errata type: Broken Code | Page number: 66
In code example in class declaration TestDocuments in method definition testSetTitle in line:
self.assertEquals("New title", self.folder.d1.Title() assertEquals method called without close parenthesis.
The correct code is:
self.assertEquals("New title", self.folder.d1.Title())
Errata type: Code Format| Page number: 71
In "Creating an Extension Profile" the 4th line of code should be bold since it is a change (addition) to the boilerplate code. The code will not run without this addition. xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
Errata type: Code| Page number:72
In addition to making the "tests" directory, creating the "tests/__init__.py" file to make it a module, the existing "tests.py" file should be removed.
Full sequence:
$ cd src/optilux.policy/optilux/policy
$ mkdir tests
$ touch tests/__init__.py
$ rm tests.py
Errata type: Typo | Page number: 85
2nd bullet point: In the line "Quite a few permissions that normally apply to logged in uses are given to this role, ....", "uses" should be "users".
Errata type: Code| Page number: 98
The code snippet
def test_role_added(self):
self.failUnless("StaffMember", self.portal.validRoles())
should be:
def test_role_added(self):
self.failUnless("StaffMember" in self.portal.validRoles())
Errata type: Code | Page number: 98
The test condition:
self.failUnless('StaffMember', self.portal.validRoles())
should instead be written:
self.failUnless('StaffMember' in self.portal.validRoles())
The same error is in the sample code for chapter 6, and is located on line 20 of optilux.policy.tests.test_setup.py
Errata type: Typo | Page number: 99
In the first line: test_view_permisison...
should be
test_view_permission...
Errata type: Code | Page number: 99
In first line, letters are transposed.
def test_view_permisison_for_staffmember(self):
should be
def test_view_permission_for_staffmember(self):
Errata type: Technical | Page number: 106
Lines in TestSetup class code should be boldfaces, since they are insertion by the user.
Errata type: Technical | Page number: 107
Lines 7, 9, 11 of base.py code should be commented.
Right lines will be:
# normally # Explicitly. This # enough
Errata type: Code | Page number:110
Code formatting:
renameRichDocument(portal)
disableDocument(portal)
should be bold faced.
Errata type: Code | Page number: 113
Code for base.py should use the same functions as in previos listings: ztc.installPackage instead of ztc.installProduct with package option
Errata type: Code | Page number: 113
ztc.installProduct('optilux.policy', package=True)
ztc.installProduct('optilux.theme', package=True)
should read:
ztc.installPackage('optilux.policy')
ztc.installPackage('optilux.theme')
Errata type: Typo | Page number: 114
In the first bullet, 'profile.zcml' should be 'profiles.zcml' (plural).
Errata type: Typo | Page number: 128
In the second bullet '/@manage-viewlets' should be '/@@manage-viewlets'
Errata type: Typo | Page number: 128
In the last paragraph, first parenthetical statement, there is an "@" missing. Should read: ...URL as/@@manage-viewlets).
Errata type: Typo | Page number: 144
In second paragraph AFTER the NOTES block, the attribute isPrinicipiaFolderis should be isPrincipiaFolderish.
Errata type: Typo | Page number: 176
Second sentence in first paragraph in 8 section (Views and Other Presentation Components) contains word 'outlned' instead of outlined.
Errata type: Code| Page number: 184
middle of page, last sentence of paragraph under last code example: ".. event.event will be the same." should be ".. event.object will be the same."
Errata type: Typo | Page number: 188
Last sentence on the page should read: When we connect cinemas and films to the external database system that manages film showings and custom bookings, these will act as keys in its tables. "that" is missing in this sentence
Errata type: Technical | Page number: 194
the url for the archetypes reference manual should be: http://plone.org/documentation/manual/archetypes-developer-manual
Errata type: Typo | Page number: 195
first paragraph, first sentence: "..all importable form..." should be "... all importable from..."
Errata type: Broken Code | Page number: 202
For this errata, please refer to the Free Online Edition page of this book here: http://professional-plone-book.packtpub.com/latest-updates.htm
Errata type: Broken Code | Page number: 204
In 'Field and Object Validation' section third paragraph's second sentence: 'It is not very hard to register your own generic validators - see Products.ATContentTypes.validators for several examples ...' path to 'validators' module is good for importing but actually validators code lives in 'Products.ATContentTypes.lib.validators'. The correct line should be: - see Products.ATContentTypes.lib.validators
Errata type: Typo | Page number: 224
At the end of the first paragraph, the file is not "workflow.xml" but "workflows.xml".
Errata type: Broken Code | Page number: 229
Third piece of code first line: >>> from Products.PloneTestCase.setup import portal_owner from word 'from' should begin second line of session.
Errata type: Typo | Page number: 242
Typo in third paragraph first sentence: 'The code in activityreport.py is similar to thaat of the other views in the browser sub-package:...'. Mistake in word 'thaat', double 'a'.
Errata type: Typo | Page number: 258
In the last paragraph, it's written: plone_form_scipts instead of plone_form_scripts. 'r' is missing.
Errata type: Typo | Page number: 350
First, notice that that this buildout configuration extends the default configuration, which means that buildout will treat values in that file.... "notice that that this" should be "notice that this"
Errata type: Typo | Page number: 10
Currently he works is an independent consultant, specializing in Zope and Plone. 'is' should be replaced by 'as' as follows:
Currently he works as an independent consultant, specializing in Zope and Plone.
Errata type: Technical | Page number: 28
You should not be root when running paster if you don't intend to be root when running Zope, and if you are running Zope as root, you need to set an effective-user.
Errata type: Code | Page number: 67
value = getattr(self, '_val', None)
should be:
old_val = getattr(self, '_val', None)
Sample chapters
You can view our sample chapters and prefaces of this title on PacktLib or download sample chapters in PDF format.
You will gain an in-depth understanding of the concepts that underpin successful Plone development, including:
- How to set up a suitable development environment
- The importance of automated testing of any code you write
- How to perform Plone customizations in a manageable, re-usable fashion
- Techniques for branding Plone and changing its look and feel
- How to safely install and manage third-party add-on components
- How to create your own content types
- How to create new forms and templates
- Ways of interacting with external relational databases
- Techniques for managing users and custom user metadata
- Using Plone’s new AJAX framework to build dynamic user interfaces
- How to set up Zope and Plone in a production environment
- How to connect to an LDAP/Active Directory repository for authentication
- How to configure a caching proxy to improve Plone's performance
Throughout the chapters, there is an emphasis on demonstrating key concepts with practical examples. The reader should be able to borrow from the examples to get up and running quickly, but refer to the explanations provided to fully appreciate what is going on under the hood.
Plone is an open-source content management framework, built on the top of the Zope application server and written in Python. As a ready-to-use Content Management System with a focus on usability, Plone makes it easy for content authors to create and edit web content.
Plone is also used by developers, as a framework for building content-centric web applications such as dynamic websites and intranets. This book focuses primarily on the developer-oriented aspect of Plone.
This book aims to teach best practices of Plone development, focusing on Plone 3.0. It covers setting up a suitable development environment, customizing Plone’s look and feel, creating new content types and forms, connecting to external databases, and managing users and groups intelligently. It also shows how to configure a production-ready server, with LDAP authentication and caching.
Book Reviews
Slashdot: "There's a great deal to like about this book. The author clearly possesses the expertise and experience needed for providing instruction on a challenging topic such as this. His explanations are not abbreviated, as seen in so many other technical monographs. Furthermore, most programmers learn best by viewing and mentally dissecting sample code. For such people, Martin Aspeli's practical approach — focusing on a substantial sample application — will prove more engaging and instructive than the made-up and oftentimes overly simplistic examples found in many computer programming books — including the increasingly popular cookbook titles." -- Michael J. Ross, Web Developer, Slashdot.org
Vitaliy Podoba: "our programmers have gained a lot of relevant information. And there is a countless number of examples that can be provided here. They will definitely get even more trying all described in the book in practice working in Plone 3.0. "
David Handy: "Aspeli is good not just for facts but recommended best practices. So far I am in complete agreement with his philosophies. And especially, I am verypleased for once to be reading relevant, up to date material!"
Visit the Free Online Edition: http://professional-plone-book.packtpub.com for a full Table of Contents and summaries from each chapter.
The book takes a pragmatic approach, building a realistic example application based on a case study. The code for this application is included with the book, and should serve as a useful starting point and source of examples for the reader.
This book is aimed at developers who want to build content-centric web applications leveraging Plone’s proven user interface and flexible infrastructure.
Some familiarity with the Python programming language and basic web technologies such as HTML and CSS is assumed. Readers would also benefit from some prior experience with Zope or Plone, for example as site administrators or “power usersâ€.

