auf.suno
Connector, geek, tech evangelist, business enabler, business angel, globetrotter, sportsman, agnostic, cosmopolitan, funny finch ...

This is my (Markus Gattol aka Suno Ano) website. It is composed and driven exclusively by Open Source Software. This website is
seamlessly integrating into my daily working environment (GNU Emacs + DebianGNU/Linux) which therefore means it becomes
a fully fledged and automatized publishing and communication platform. It will be under construction until 2012.

Open Source / Free Software, because freedom is in everyone's language ...
Frihed Svoboda Libertà Vrijheid เสรีภาพ Liberté Freiheit Cê̤ṳ-iù Ελευθερία Свобода פריי Bebas Libertada 自由
auf.suno
Website Sections
Home
FAQs
About me
Contact
Plone Development
Status: I will not finish this page; see Update below.
Pagecode: T->1 A->SAml H->trsa[t,a,si,di]d[t,a,si,di] C->SA[cccej]
Last changed: Monday 2010-03-01 [12:22 UTC]
Abstract:

Plone is built on top of Zope and the CMF (Content Management Framework). To understand Plone, we have to understand Zope and the CMF as the underlying architecture. Also, we need to know things like Python, CSS (Cascading Style Sheets), ZPT (Zope Page Templates), HTML (Hypertext Markup Language), TAL (Template Attribute Language), DTML (Document Template Markup Language) etc. However, it does not stop there -- in order to develop for Plone, one needs to understand all the internals of Plone e.g. the Plone templating system, Archetypes, Acquisition, etc. This page will provide information for folks interested in Plone development. It will also cover all the Plone internals one needs to know before he can start writing his first line of code.
Table of Contents
Python
Debugging
Testing
Zope
Object Hierarchy and Acquisition
Plone
Plone Templating
Buildout Recipe
Archetypes
ArchGenXML
UML Modelling

Update: I now (May 2009) stopped working with/on Plone in favor of Dolmen simply because working with Plone is no fun anymore. Plone has become way to fat and confusing to work with over the years — I need something that works with me, not against me.


Python

Since Plone and Zope are written in Python (for the preponderant part), I decided that this subject should have dedicated page.

Debugging

Testing

http://plone.org/documentation/tutorial/testing

Unit Tests

run the automated tests for your own code, as well as those for the product/egg itself if applicable.

Doctest

http://en.wikipedia.org/wiki/Doctest

Trough the Web testing

i.e. users test via web browser

Zope

Zope has a dedicated page on my website. Also, the CMF (Content Management Framework), Plone's foundation has its onw section on my website/platform.

Object Hierarchy and Acquisition

One particularly innovative feature of Zope is its widespread use of acquisition. Acquisition is a technique parallel to class inheritance, in which objects inherit behavior from their context in a composition hierarchy, as opposed to their class in a class hierarchy. This allows certain ways to structure source code that are otherwise harder to accomplish, and can encourage application decomposition. The core concept is simply that:

  • Zope objects are contained inside other objects (such as Folders).
  • Objects can acquire attributes and behavior from their containers.

The concept of acquisition works with all Zope objects, and provides an extremely powerful way to centralize common resources. A commonly used SQL (Structured Query Language) query or snippet of HTML (Hypertext Markup Language), for example, can be defined in one Folder and objects in subfolders can use it automatically through acquisition. If the query needs to be changed, we can change it in one place without worrying about all of the subobjects that use the query.

Because objects are acquired by starting at the current level in the containment hierarchy and searching upward, it is easy to specialize areas of our site with a minimum of work. If, for example, we had a Folder named Sports on our site containing sports-related content, we could create a new header and footer document in the Sports Folder that use a sports-related theme. Content in the Sports folder and its subfolders will then use the specialized sports header and footer found in the Sports folder rather than the header and footer from the top-level (root) folder on the site.

Plone

Plone Templating

As with Python, this section is located onto another page but still, we are talking about Plone development when it comes to editing templates or creating templates from scratch ... thus the subject is mentioned here.

Buildout Recipe

Archetypes

ArchGenXML

UML Modelling

I prefer to create my mockups with clean UML (Unified Modeling Language). The tool I use is called ArgoUml. Next to being a decent tool, another benefit is that it is available with Debian (apt-get install argouml).

ArgoUML needs the Java Runtime Environment to be present. In case that does not ring a bell take a look at what I wrote here. Finally starting ArgoUml might not work without having the environment variable JAVA_HOME set. I simply put export JAVA_HOME="/usr/lib/jvm/java-6-sun/jre" in my .bashrc. Into that, I also created an alias to start ArgoUml

sa@pc1:~$ alias | grep auml
alias auml='argouml >& /dev/null &'
sa@pc1:~$

Ultimately this is what it looks like

Creative Commons License
The content of this site is licensed under Creative Commons Attribution-Share Alike 3.0 License.