[cgiapp] Adding a div of fixed content to evey page. Possible?
Gurunandan R. Bhat
guru at informationmatters.in
Fri Oct 30 15:36:57 EDT 2009
Now I get it! Thanks for staying with me.
However my point is that I cannot do this:
> # Fill in template parameters
> $template->param(
> WIDGET1 => $widget1,
> WIDGET2 => $widget2,
> RUNMODE_CONTENT => $$output_ref,
> );
for any layout - specifically where the design (HTML) of the page is such that it does not allow cleanly separating the widgets from the surrounding content.
Unfortunately I have a layout where the business output from the runmodes cannot be cleanly separated from the fixed content (in my case a login form).
However in situations where such a separation in possible, yours is an excellent and preferred solution, So Thanks
On Fri, 2009-10-30 at 15:25 -0400, Brad Van Sickle wrote:
> My postrun sits in a superclass, so I have one "postrun" that serves the
> entire application.
>
> From within that postrun I do something similar to the following:
>
> postrun
> {
> #load page framework template
> my $template = $self->load_tmpl(
> $TemplateFile,
> cache => 1,
> die_on_bad_params =>0,
> );
>
> #get "widget" content
> my $widget1=&Get_Widget1; #return html to insert into widget1
> my $widget2=$Get_Widget2; #return html to insert into widget2
>
> # Fill in template parameters
> $template->param(
> WIDGET1 => $widget1,
> WIDGET2 => $widget2,
> RUNMODE_CONTENT => $$output_ref,
> );
>
> #overwrite the output with the output of the template
> $$output_ref= $template->output;
> }
>
> Then in my runmode:
>
> runmode
> {
> ################
> #get output
> ################
>
> #load rumode template that has only the html for this section, not
> the full page
> my $template = $self->load_tmpl(
> $RMTemplateFile,
> cache => 1,
> die_on_bad_params =>0,
> );
>
> # Fill in template parameters
> $template->param(
> WHATEVER1 => $var1
> WHATEVER2 => $var2
> );
>
> #return formatted runmode content content to postrun
> return $template->output;
> }
>
> This allows me to control the format of my runmode output, and then
> stick that formatted content into an overall page template. Since I
> have postrun in a superclass, and it services my entire application, I
> only have one piece of code to track.
>
> I'm sure this isn't the only option, (in fact the other responses seem
> like they would work as well) but for the projects I've used this method
> on I've been really pleased with the combination of flexibility and
> centralized code management it provides.
>
>
>
> Gurunandan R. Bhat wrote:
> > First, Thanks for responding.
> >
> > Are you suggesting that I populate a template variable with another
> > HTML::Template-tagged piece and then populate that piece in postrun? If
> > yes, wouldn't I have to do that in every runmode - something that I
> > wanted to avoid?
> >
> > Would it not be better if I called $app->param(LOGINFORM => 'Content of
> > Form') (as opposed to $tpl->param()) in prerun and have it set for every
> > runmode without doing so explicitly in each runmode?
> >
> > I am not getting it. My bad, obviously
> >
> >
> > On Fri, 2009-10-30 at 14:55 -0400, Brad Van Sickle wrote:
> >
> >> You can initialize and populate your template in postrun as well.
> >>
> >> The way I do it is I typically load the framework of the page using
> >> HTML::Template in postrun, and then insert the output of my runmode into
> >> the template where required.
> >>
> >> If your runmode output is complex enough to require being templated
> >> itself, there isn't anything stopping you from using HTML::Template
> >> within the runmode to format the output and then inserting the output of
> >> that template into the overall template in postrun.
> >>
> >> You can even move postrun up into a superclass to centralize all of this
> >> content and keep a coherent look on your site.
> >>
> >> At least that's the easiest and most flexible solution I found when I
> >> was faced with a similar problem...
> >>
> >>
> >>
> >>>
> >>> Gurunandan R. Bhat wrote:
> >>>
> >>>> Yes thats what I want to do. To be specific, I want to insert a login
> >>>> form on every page or a logged-in status depending on whether
> >>>> $app->authen->username is defined or not (I am using
> >>>> CAP-Authentication).
> >>>>
> >>>> But when I am in post-run, HTML::Template has done its job and no
> >>>> template variables are available any more - unless I use another
> >>>> templating system that will process the plain text available in postrun.
> >>>> In the light of this I am not sure how your suggestion will work.
> >>>>
> >>>> Unless I haven't really understood what is available to postrun.
> >>>>
> >>>> REgards
> >>>> Gurunandan
> >>>>
> >>>>
> >>>> On Fri, 2009-10-30 at 14:40 -0400, Brad Van Sickle wrote:
> >>>>
> >>>>
> >>>>
> >>>>> In postrun you can populate a variable with a subroutine call and then
> >>>>> substitute that variable anywhere in your template, or even insert it
> >>>>> into your runmode output if desired.
> >>>>>
> >>>>> Is that what you are looking for, or am I way off base?
> >>>>>
> >>>>>
> >>>>>
> >>>>> Gurunandan R. Bhat wrote:
> >>>>>
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> Is it possible to add the output of a template to every page/run-mode
> >>>>>> without going through assigning it to a template->param in each
> >>>>>> run-mode?
> >>>>>>
> >>>>>> I am aware of using cgi-postrun to wrap the output of a run-mode, but it
> >>>>>> seems not possible to *insert* a div of content in an arbitraty (but
> >>>>>> fixed position) using this trick. Or is it?
> >>>>>>
> >>>>>> I would also like to avoid another template processor (like HTML::Mason
> >>>>>> or Text::Template) to do this if there is an easier way.
> >>>>>>
> >>>>>> Thanks for your attention
> >>>>>> Gurunandan
> >>>>>>
> >>>>>>
> >>>>>> ##### CGI::Application community mailing list ################
> >>>>>> ## ##
> >>>>>> ## To unsubscribe, or change your message delivery options, ##
> >>>>>> ## visit: http://lists.openlib.org/mailman/listinfo/cgiapp ##
> >>>>>> ## ##
> >>>>>> ## Web archive: http://lists.openlib.org/pipermail/cgiapp/ ##
> >>>>>> ## Wiki: http://cgiapp.erlbaum.net/ ##
> >>>>>> ## ##
> >>>>>> ################################################################
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>> ##### CGI::Application community mailing list ################
> >>>>> ## ##
> >>>>> ## To unsubscribe, or change your message delivery options, ##
> >>>>> ## visit: http://lists.openlib.org/mailman/listinfo/cgiapp ##
> >>>>> ## ##
> >>>>> ## Web archive: http://lists.openlib.org/pipermail/cgiapp/ ##
> >>>>> ## Wiki: http://cgiapp.erlbaum.net/ ##
> >>>>> ## ##
> >>>>> ################################################################
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> ##### CGI::Application community mailing list ################
> >>>> ## ##
> >>>> ## To unsubscribe, or change your message delivery options, ##
> >>>> ## visit: http://lists.openlib.org/mailman/listinfo/cgiapp ##
> >>>> ## ##
> >>>> ## Web archive: http://lists.openlib.org/pipermail/cgiapp/ ##
> >>>> ## Wiki: http://cgiapp.erlbaum.net/ ##
> >>>> ## ##
> >>>> ################################################################
> >>>>
> >>>>
> >>>>
> >> ##### CGI::Application community mailing list ################
> >> ## ##
> >> ## To unsubscribe, or change your message delivery options, ##
> >> ## visit: http://lists.openlib.org/mailman/listinfo/cgiapp ##
> >> ## ##
> >> ## Web archive: http://lists.openlib.org/pipermail/cgiapp/ ##
> >> ## Wiki: http://cgiapp.erlbaum.net/ ##
> >> ## ##
> >> ################################################################
> >>
> >>
> >
> >
> >
> > ##### CGI::Application community mailing list ################
> > ## ##
> > ## To unsubscribe, or change your message delivery options, ##
> > ## visit: http://lists.openlib.org/mailman/listinfo/cgiapp ##
> > ## ##
> > ## Web archive: http://lists.openlib.org/pipermail/cgiapp/ ##
> > ## Wiki: http://cgiapp.erlbaum.net/ ##
> > ## ##
> > ################################################################
> >
> >
>
> ##### CGI::Application community mailing list ################
> ## ##
> ## To unsubscribe, or change your message delivery options, ##
> ## visit: http://lists.openlib.org/mailman/listinfo/cgiapp ##
> ## ##
> ## Web archive: http://lists.openlib.org/pipermail/cgiapp/ ##
> ## Wiki: http://cgiapp.erlbaum.net/ ##
> ## ##
> ################################################################
>
More information about the cgiapp
mailing list