Changeset 24045
- Timestamp:
- 11/18/08 10:34:12 (5 years ago)
- Files:
-
- 1 modified
-
lang/perl/MENTOS/trunk/lib/MENTA.pm (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/MENTOS/trunk/lib/MENTA.pm
r24039 r24045 100 100 if ($path =~ /^[a-z0-9_]*$/) { 101 101 $path ||= 'index'; 102 my $meth = "do_$path";103 102 my $cdir = controller_dir(); 104 103 my $controller = "${cdir}/${path}.pl"; 104 my $controller_mt = ($MENTA::BUILT ? cache_dir() : controller_dir()) . "/${path}.mt"; 105 105 if (-f $controller) { 106 my $meth = "do_$path"; 106 107 package main; 107 108 do $controller; … … 120 121 die "「${path}」というモードは存在しません!${controller} の中に ${meth} が定義されていないようです"; 121 122 } 123 } elsif (-f $controller_mt) { 124 my $out = __render_partial("${path}.mt", controller_dir()); 125 utf8::encode($out); 126 print "Content-Type: text/html; charset=utf-8\r\n"; 127 print "\r\n"; 128 print $out; 122 129 } else { 123 my $tmplfname = ($MENTA::BUILT ? cache_dir() : tmpl_dir()) . "/${path}.mt"; 124 if (-f $tmplfname) { 125 render("${path}.mt"); 126 } else { 127 die "「${path}」というモードは存在しません。別コントローラファイルもありません(${controller})。テンプレートファイルもありません(${tmplfname})"; 128 } 130 die "「${path}」というモードは存在しません。コントローラファイルもありません(${controller})。テンプレートファイルもありません(${controller_mt})"; 129 131 } 130 132 } elsif ($path ne 'menta.cgi' && -f "app/$path") { … … 225 227 226 228 # TODO: ディレクトリトラバーサル対策 227 sub render_partial {228 my ($tmpl, @params) = @_;229 sub __render_partial { 230 my ($tmpl, $tmpldir, @params) = @_; 229 231 my $conf = config()->{menta}; 230 my $tmpldir = tmpl_dir();231 232 my $cachedir = cache_dir(); 232 233 mkdir $cachedir unless $MENTA::BUILT || -d $cachedir; … … 234 235 my $tmplfname = "$tmpldir/$tmpl"; 235 236 my $use_cache = $MENTA::BUILT || sub { 236 my @orig = stat $tmplfname or return 1;237 my @orig = stat $tmplfname or return; 237 238 my @cached = stat $cachefname or return; 238 239 return $orig[9] < $cached[9]; … … 259 260 $out; 260 261 } 262 sub render_partial { 263 my ($tmpl, @params) = @_; 264 __render_partial($tmpl, tmpl_dir(), @params); 265 } 261 266 262 267 sub detach() {
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)