I have been using CGI::Application/HTML::Template for a while now and I
like the feeling that the code base is small enough that I can master
its internals. However I am finding that all my code needs refactoring
for various reasons and I need something more like a "content management
system". I do think I should learn "catalyst" if only for professional
reasons however I would like to continue using the Titanium framework. I
believe I can see an approach that would not require a lot of work, but
would allow me to push some of my data structures (particularly
metadata) out of perl and into a database. I have managed to extract
from my head the following manifesto:
The L<Titanium> framework does a reasonable job of the controller
part of the model-view-controller concept of web site
architecture. Various
template modules, for example L<HTML::Template> can function as
the view part and they are well
integrated with our controller. There are various candidates for a
model class, for example
L<DBIx::Class>. Another part of the Titanium framework,
L<CGI::Application::Dispatch> can be used to translate
from search engine friendly URLs to a database key - in fact the
wildcard parameter provided by the
Dispatch fall-through rule will do nicely. All that is missing is
a perl module to take the Dispatch wildcard,
pull the template file name and the various template parameters
from the database and in a standard run
mode stuff the parameters into the template. This class provides
the abstract base, that will be
derived from by classes such as
L<CGI::Application::Model::DBIx-Class>. For particular processes such
as form processing non-standard run
modes might be returned from the database. The standard run mode
for processing off the database is installed
by the class L<CGI::Application::Plugin::Model> and this module
will also instantiate the module object. Keeping a list of pages on
a database enables other finctionality provided by the classes
L<CGI::Application::Plugin::Sitemap>,
L<CGI::Application::Plugin::RSS> and
L<CGI::Application::Plugin::Search>.
I can also see only one candidate for an alternative in the existing
CPAN archive. That would be to represent "web pages" as objects using
the Class::DBI and feed them into the template using the dot notation.
However this seems to me to commit one to usage of Class::DBI (which
there should be no commitment to any database encapsulation layer) and
maybe it is entangling the view and model parts. Advice, correction or
encouragement please.
##### CGI::Application community mailing list ################
## ##
## To unsubscribe, or change your message delivery options, ##
## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ##
## ##
## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ##
## Wiki: http://cgiapp.erlbaum.net/ ##
## ##
################################################################