Some already know about MOO CMS and what the cvs sources are all about. It is dynamic fast and full of libraries.
However, after extending and integrating in some websites I also found its limitations and lack of dynamics. So, with my 10 years of PHP webdevelopment experience i've decided to stop this project in its beta stage (of 5 years) and start over (without abandoning all sources).
The new project name is POODLE WCMS (PHP5 Object Oriented Dynamic Libraries Extended Web Content Management System).
What a WCMS is all about can be read at Wikipedia.
After reading and learning about the WebDAV principles i found out that MOO CMS is almost identical and that WebDAV would be the conform way to design a system instead of keeping a similar system.
By using WebDAV it can extend in any way someone wants and be better organized then currently is available in MOO.
The difference is that MOO had "pages" while WebDAV talks about "Resources" where a resource can be anything (graphic, document, html page, iCAL calendar object, etc.).
POODLE will have a table with "Resource Types" to identify each resource. A resource type can be anything from a comment to a html document and either a visible or hidden type.
Yes, there is. It's based on Zope's TAL (Template Attribute Language) and parts of XSLT.
It is not PHPTAL. Instead, it uses the PHP XML parser and some code to handle the TAL attributes.
By using the XML parser the markup language code is checked to make sure that it is valid.
You may even load a DTD list to report deprecated tags and deprecated/unknown/missing attributes.
Some XSLT tags are supported, currently they are: choose, for-each, if, otherwise, value-of and when.
Why? Well, some people are familiar with TAL and others with XSLT.
No other scheme is supported untill they are properly found by the XML parser.
For example, phpBB won't work as it uses <!-- COMMAND --> which is dropped at parsing.
KISS: If you know PHP you know POODLE!
With that said i will explain it a bit...Base parts of system are getting there. I use the "setup" system for testing the library base components.
Here's a screenshot including a JavaScript based PHP debug tool!
It shows (in order): peak memory usage, parse time, template parse time, warnings/notices/deprecated, included files, declared classes and declared interfaces
Output and Resource handling are finally getting some structure and i really like the outcome so far!
The structure is actually pretty simple when you get the hang of it.
Every URI is a 'resource' which has a resource_type_id.
When the resource_type_id=0 then it's a simple Poodle_Resource_Default object, else it's the object as specified by resource_type_class.
Then you output the body with: $POODLE->OUT->display(REQUEST_URI, 0, $resource->body)
Now the system automagically ends the output with $POODLE->OUT->finish()
I'm going to structure a login/register system with authorization provider schemes.
In short: just 1 login field (no password) that will detect what kind of user you are.
For example:
| id | provider | regex |
|---|---|---|
| 1 | database | |
| 2 | imap | (.*)@example\.org |
| 3 | OpenID | (.*)@gmail\.com |
| 4 | OpenID | (xri:/*)?[@=](.*) |
| 5 | OpenID | www\.myspace\.com/(.*) |
Finally the authentication/login system is ready.
Currently it supports Cookie, Database, OpenID and XRI.
Below is a preview of a bar with login form. Simple, isn't it?
Figuring out how to manage resources through the Administration interface.
One way is like other CMS's, by using a list of posts/pages.
This doesn't feel right as it doesn't show you the path structure.
Instead, i wrote a "tree" using unordered lists with a bit of XHR (XMLHttpRequest/AJAX).



Of course this tree becomes very big when the site grows, so a "default" like the other CMS's should also be made with filters and ordering.
(c) 2009-2010 DJ Maze