Experimentation Notes: ContentBuilder

I spent a weekend evaluating an often-overlooked CCK extension for Joomla, ultimately building a one-form-fits-all video publishing tool.

ContentBuilder, where had you been all my life? You might swoon, too, once you grow accustomed to this worthy content creation kit (CCK) for Joomla. In short:

  1. You create a custom Data Store (database table)
  2. Create a view; let ContentBuilder create a sample Viewer and Editor
  3. You refine the Editor and Viewer
  4. Use your custom Editor to data-enter content for that type of article
  5. The Viewer creates articles, putting data entry into your template
  6. Joomla manages the articles in the standard ways, including SEF URLs
  7. Standard Joomla features need not be disabled

If you're tired of being forced to choose between standard Joomla behavior, and custom data entry forms or automatic article templates, this is one learning curve you might need to climb.

In my time as a developer, I chose symfony as my solution to the boring ritual of re-doing nearly-identical work to start every project. No matter how simple a web development project should be, there are basics to be done. It's the same time, spent writing the same code you wrote to prepare for the last project. It's work for hire - you'd like to reuse something, but there are licenses to obey - so you get busy attaching styles to form elements, connecting form elements to snippets of database commands, and laying out other scaffolds. Symfony, and other systems like it, automate the basics, letting a developer jump right to the meat of a large project.

My third ContentBuilder experiment: a code snippets repository. This is the viewer. Syntax highlighting via CodeMirror in read-only mode.

That phrase right there - large project - is why frameworks such as symfony are useless for so many small business website projects. They're great for large projects, but for small projects, it's like trying to fix the hinge of your eyeglasses using robots from an automotive factory.

Enter ContentBuilder.

I've never seen the draw of K2. I avoid systems which duplicate a lot in order to innovate a little, especially in the open source world. With Joomla being as modular as it is, I see no reason why K2 even needs to exist. Its inability to keep up with Joomla's new features, reveals the extent to which it fails to harness Joomla's strength as a software platform, opting instead to only exploit it as a sales platform.

The code snippets editor I build with ContentBuilder. The calendar widget is an automatic feature in ContentBuilder; just set the field type to Calendar, within the view. If you needed a separate form without that calendar widget, you can do that, too.

Because K2 is the dominant CCK add-on for Joomla, and because I think K2 is a useless pile of bloatware, I didn't give CCKs much thought until recently. I installed ContentBuilder specifically because of this enigma - I wanted to know why CCKs were so popular, that people were willing to introduce error-prone bloat and disable perfectly good Joomla features, to have it.

ContentBuilder's approach to CCK is one I can only liken to symfony and similar scaffolding frameworks like it. In programming, a scaffold is the bare-bones required code - there can be days, weeks of programming required in a project before even one actual thought or decision is required. That code is a scaffold.

ContentBuilder allows you to build a similar scaffold for types of content on your website. In other words: ContentBuilder makes it dead-easy to create a custom database for your website. The records you create with ContentBuilder, generate standard Joomla articles; the articles are updated with each save of the ContentBuilder record.

Once you understand the fundamentals of its Data Stores and Views, and the start-up procedure for quick-starting a new View, you'll be rolling out simple, functional web apps - yes, you - in just a few minutes. With that level of effort, I can't recommend putting those apps in front of customers - but I can absolutely recommend using them for in-house purposes, and ContentBuilder is ideal for simple user forms when deployed by an expert. If you happen to be comfortable with PHP, CSS, and Javascript, then the web apps you build with ContentBuilder can be made secure and fully-functional, beautiful, and richly interactive, within a day or two.

It's almost like offhandedly writing a new Joomla extension, minus the packaging, half the learning, and 4/5ths of the work.

I've quite a list of items on my ContentBuilder to-learn list, none of them high priority right now. I'd like to use Joomla's native form element for entering tags, via the record editor; and I'll eventually need to test inclusion of heavier code, and embedding of views within views, in order to get ridiculous omnipotence out of this extension.

Easiest video solution for Joomla, ever, and the true gem of the weekend's experimentation; I created a single form which accepts Vimeo, Blip.tv, and YouTube video URLs, creates the appropriate viewer for each, puts the viewer and metadata into a customer-facing article, and chucks them all together into a Videos category.

That's my verdict of ContentBuilder in a nutshell: experimented with it for three days; using it to achieve ridiculous levels of omnipotence via my desktop Joomla site, is immediately on the table.