Author: spadkins
Date: Thu Jul 5 12:13:38 2007
New Revision: 9702
Modified:
p5ee/trunk/App-Widget/lib/App/TemplateEngine.pm
Log:
allow for multiple directories to be used in a template search path
Modified: p5ee/trunk/App-Widget/lib/App/TemplateEngine.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/TemplateEngine.pm (original)
+++ p5ee/trunk/App-Widget/lib/App/TemplateEngine.pm Thu Jul 5 12:13:38 2007
@@ -194,23 +194,32 @@
my $theme = $context->get_user_option("theme");
my $options = $context->{options};
- my ($template_dir, $template_text);
+ my ($template_dir, $template_text, $template_file);
local(*App::FILE);
$template_dir = $self->{template_dir} || $options->{template_dir} ||
"$options->{prefix}/templates";
- if ($theme && open(App::FILE,"< $template_dir/$theme/$template")) {
- local($/) = undef;
- $template_text = <App::FILE>;
- close(App::FILE);
+ # check if already an array ref, may not need to split.
+ my @template_dir = (ref($template_dir) eq "ARRAY") ? @$template_dir :
split(/[,; ]+/, $template_dir);
+
+ foreach my $dir (@template_dir) {
+ if (-e "$dir/$theme/$template") {
+ $template_file = "$dir/$theme/$template";
+ last;
+ }
+ elsif (-e "$dir/$template") {
+ $template_file = "$dir/$template";
+ last;
+ }
}
- elsif (open(App::FILE,"< $template_dir/$template")) {
+
+ if ($template_file) {
+ open(App::FILE,"< $template_file");
local($/) = undef;
$template_text = <App::FILE>;
close(App::FILE);
- }
- else {
+ } else {
# maybe we should throw an exception here
- $template_text = "Template [$template_dir/$template] not found.";
+ $template_text = "Template [$template] not found in [$template_dir].";
}
&App::sub_exit($template_text) if ($App::trace);