Michael Lackhoff wrote:
> On 30 Mar 2006 at 9:23, Prakash Inuganti -X (pinugant - Digital-X,[cgiapp] 
> How to split runmodes into different mod wrote:
> 
>> My question may sound very basic on this alias but I do need some
>> guidance here. I have seen discussion on this alias about splitting
>> runmodes into different modules. But I still could not figure out how
>> these different modules can be linked together again for the same
>> Application.
> 
> Well, this was exactly my problem ;-) and I am still very much feeling my way 
> in the dark.

>From your comments below, I'd say you're not in the dark but have seen
the light :)

>> I have an Application.pm with all the runmodes in Setup() and an
>> Instance Script that has 
>> My $app = Application->new();
>> $app->run();
>>
>> Now How do I split the runmodes into different modules and what would be
>> my instance script and how do I link all of them together. Can you
>> please point me to any examples or tutorials that can help me figure
>> this out.
> 
> I see two possibilities. Either you just create multiple instance scripts, 
> each for one sub-
> application or you can do it with one instance script if you use 
> CGI::Application::Dispatch.
> The overall structure is the same in both cases. You usually have a base 
> class with all the 
> common stuff in it, like loading plugins, setting up the templating system, 
> taking care of 
> authentication, session stuff and so on.
> Then I have several sub-applications, all inheriting from the base class, say 
> one for 
> customers, one for products. The customer class would have runmodes like 
> add_customer, 
> edit_customer, show customers and perhaps something like a special runmode 
> "all my very 
> best customers I want to invite to the football world championship final 
> Germany-Brasil" ;-)
> Each runmode usually comes in a display and a process variant.

++

Although the display/process runmode split is usually a personal
preference (one that I like as well) but some people choose to have the
same mode possibly process and then show based on the incoming query args.

> The different sub-applications are connected through links. E.g. I could have 
> some links on 
> one of the customer pages to all the products the customer bought in the 
> past. Such a like 
> might look like "/cgi-bin/products.pl?rm=show_product&id=5" or 
> '/business/product/5' if you 
> use CA::Dispatch and perhaps a little bit of mod_rewrite.

Or mod_perl.

> The only difficulty is, if you want a cross-sub-application connection not by 
> a link but through 
> a form submission. That was my problem the other day.

Form submissions should be no different than links. You just point the
form's 'action' attribute at the same url that the link would go to.

> I really don't know if this kind of layout will lead to major problems or is 
> somewhat proven and 
> recommended. My current project is the first of such a size that I didn't 
> want everything in one 
> class and in one file, it just looked very messy, so I tried to tidy it up a 
> bit.

It works just fine for our stuff, and it can get pretty big. If you want
a working example, check out Krang (http://krang.sourceforge.net). It's
one really big CGI::Application.

-- 
Michael Peters
Developer
Plus Three, LP


---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/cgiapp@lists.erlbaum.net/
              http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to