[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