[cgiapp] Adding a div of fixed content to evey page. Possible?

Gurunandan R. Bhat guru at informationmatters.in
Fri Oct 30 16:13:26 EDT 2009


<div>Banner</div>
<div>Left Column</div>
<div>
    Some Business Content
    <div>Login Box Here</div>
    More Business Content
</div>




On Fri, 2009-10-30 at 16:04 -0400, Brad Van Sickle wrote:
> I have a hard time imagining a scenario where you couldn't make it work 
> with some clever templating, but you certainly know your requirements 
> better than I do.  Perhaps if you could provide me an example of HTML 
> layout I might have a better idea about what you're talking about?
> 
> Hopefully this is at least useful to you in a future project.
> >
> >
> >
> > Gurunandan R. Bhat wrote:
> >> 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/                 ##
> >>> ##                                                            ##
> >>> ################################################################
> >>>
> >>>     
> >>
> >>
> >>
> >> #####  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