I had attempted to make a full-service CMS at one time, but I got caught up on how theming and templating would work. I never did figure it out completely, but I did learn a few things:
- I used a bare minimum layout. This basically contained the doctag, <html>, and <body>. Everything else was generated by options or user-created blocks. - Each block had an AJAX editor that manipulated the CSS of the block. - The user-created blocks became the overall template, with the ability to add more on a page-by-page basis. - I had also created several widgets that were based on blocks that did things like provide tag clouds, show RSS feeds from other sites, handle comments, ratings, etc. One of those widgets was also a "text" widget that called plugin_ckeditor's inline edit ability. Then there was the menu widget, then the posts and pages widgets, which were responsible for showing the requested post/page content. With that system, themes were just a list of block/widget configurations. These things provided the basis for a completely drag & drop CMS. No coding required from the user's perspective. I had a big vision for how all of this would work and it would have put Wordpress, Drupal, and everything else to shame, but it was too big for just one person to do in their spare time.

