Hi, I'm JT and these are my thoughts on community, content management, Plain Black, and WebGUI.
With this post I'm starting a new series in this blog called "Next". Next will cover features that have been completed for the next version of WebGUI. Since these things are finished, you can count on them coming in the next version.
Geek Warning: This particular post has a lot of tech talk in it.
For years developers have been after me to make operations pluggable like everything else in WebGUI. Operations are site wide functions like turning admin on and off, and managing users and groups. I've resisted, because operations aren't namespaced, and because I didn't want people messing with site-wide functions that might break their site. But the truth is that there are good reasons to want to add your own site wide functions to WebGUI.
In addition, over the years WebGUI, though it started out as an application framework, has become more and more of a CMS. That's good for people who want to use it as a CMS, but that's bad for developers who don't. Some developers just want to develop simple single purpose web apps without assets, versioning, and the like. They want to use WebGUI because they don't want to have to build their own session, user, and group management, or they want to use other parts of WebGUI's foundation. So when the asset system came around, and everything became an asset, that forced developers to create reusable application objects in the form of an asset.
Recently I committed two new plugin points for WebGUI. They are URL and content handlers, and they allow developers extreme flexibility, whether they wish to use the asset system or not.
URL handlers allow developers to attach specific code functionality to a specific URL. In this way, you could write a custom login function and attach it at /login, or you could write a sales reporting application that ties back to your Oracle Financials database at /sales-reports. You can also tie it to deeper URLs like /sales/reports/thebigreport. Technically you've been able to do this for a while now if you write Apache mod_perl handlers and know how to configure that. But this new mechanism makes it easier and faster to write these apps, and has the benefit that it's tied into WebGUI so you can use whichever WebGUI subsystems you want.
In WebGU the URL handler list is defaultly like this:
But you can now see how you could plug in new URL handlers pretty easily.
One of the URL handlers, the last one in the list, matches any URLs that aren't matched by other URL handlers. This is called the Content URL handler. It has content handler plugins These allow for processing special information based upon URL parameters, session state, or whatever else you devise.
The default list of content handlers for WebGUI looks like this: