William,
Thank you for your efforts and sorry for your trouble. I hope the below explanation shows you what's going on and allows you to fix your installation. See attached file for three versions of C::A::load_tmpl() referred to below. Please let me know either way!
Everything looks correct. I did a bit more digging and dumped the value of tmpl_path which looks like this:
$VAR1 = '/home/flexmart/local/flexmart/fmdemo/tmpl:/home/flexmart/local/flexmart/flexmart/pgman/tmpl';
I assume that contains a correct path...
My reading of the docs[1] indicates that this is not standard usage to concatenate pathnames by colons; multiple paths should be given in an array ref. I tried changing the return value to an array ref using the following code in line 213 of HTMLTemplate.pm:
return [split(/:/,$tmpl_path)];
Unfortunately, this still is not working which makes me think there is a problem with how the templates are being told to be found. I don't use HTML::Template so may be completely off-base. You don't perhaps have HTML_TEMPLATE_ROOT set in your environment do you? Any further ideas? BTW, I'm running this code on Debian Linux. What OS are you using?
What version of CGI::Application are you using? Version 3.22 C::A contains a bug in handling the array ref with multiple paths, so your fix won't work even though the docs say it should. This is the second and final place I broke encapsulation to get my framework working because I figured this was a bug that would be quickly fixed and I wanted to support multiple paths for templates (one fo system templates and one for site-specific templates). I think your fix should work with version 3.31 of C::A, however. Upon my own testing and confirmation, that will be the solution going forward as well, as it complies with C::A docs.
Or, if need be, you can override C::A::load_tmpl() in FlexMart::AppBase with load_tmpl() as given by the code snippet following "3.22 modified" in the attached file. Notice the change / addition in the last two lines of the if clause. This is a hack which may break other functionality of C::A. I think 3.31 fixes the problem of sending an array ref for multiple paths, as documented.
Ah, I think I've found it. You don't use tmpl_load from C::A so tmpl_path is superfluous.
This is not correct; please see line 74 of FlexMart::PageManager::HTMLTemplate.
Bill
--------------------------------------------------------------------- Web Archive: http://www.mail-archive.com/[email protected]/ http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2 To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
