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

Brad Van Sickle bvansickle3 at gmail.com
Fri Oct 30 15:25:22 EDT 2009


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


More information about the cgiapp mailing list