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

Brad Van Sickle bvansickle3 at gmail.com
Fri Oct 30 16:04:40 EDT 2009


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/                 ##
>> ##                                                            ##
>> ################################################################
>>
>>   


More information about the cgiapp mailing list