X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=perl%2FSesse%2Fpr0n%2FTemplates.pm;h=61685c4af6816bfcdaad5fe8318fac93465bab54;hp=8aa0134650784b83c1243b9d91ee4d83db9e338c;hb=e6c0be9c884c678d048a9a9a569dc1a3f6f83f34;hpb=394c077f3c72f8e87afd8dbf8a26c9781b536440 diff --git a/perl/Sesse/pr0n/Templates.pm b/perl/Sesse/pr0n/Templates.pm index 8aa0134..61685c4 100644 --- a/perl/Sesse/pr0n/Templates.pm +++ b/perl/Sesse/pr0n/Templates.pm @@ -3,11 +3,6 @@ use strict; use warnings; use Sesse::pr0n::Common qw(error dberror); -use XML::SAX::Expat; -use XML::SAX::Writer; -use XML::TemplateSAX::Buffer; -use XML::TemplateSAX::Cleaner; -use XML::TemplateSAX::Handler; BEGIN { use Exporter (); @@ -19,12 +14,11 @@ BEGIN { %EXPORT_TAGS = qw(); @EXPORT_OK = qw(); } -our %dirs; +our %dirs = (); sub update_dirs { my $r = shift; - my $base = $r->dir_config('TemplateBase'); - %dirs = (); + my $base = $Sesse::pr0n::Config::template_base; for my $dir (<$base/*>) { next unless -d $dir; @@ -38,11 +32,11 @@ sub update_dirs { sub r_to_dir { my $r = shift; - if (!defined(%dirs)) { + if (scalar(keys %dirs) == 0) { update_dirs($r); } - my $site = $r->get_server_name(); + my $site = Sesse::pr0n::Common::get_server_name($r); if (defined($dirs{$site})) { return $site; } else { @@ -61,7 +55,7 @@ sub fetch_template { my $newcache = {}; - my $base = $r->dir_config('TemplateBase'); + my $base = $Sesse::pr0n::Config::template_base; open TEMPLATE, "<$base/$dir/$template" or ($dir ne 'default' and open TEMPLATE, "<$base/default/$template") or Sesse::pr0n::Common::error($r, "Couldn't open $dir/$template: $!"); @@ -76,7 +70,7 @@ sub fetch_template { return $newcache->{'contents'}; } -sub print_template { +sub process_template { my ($r, $template, $args) = @_; my $text = fetch_template($r, $template); @@ -86,38 +80,12 @@ sub print_template { $text =~ s/$key/$value/g; } - $r->print($text); -} - -sub output_page { - my ($r, $page, $params) = @_; - - $r->content_type('text/html; charset=utf-8'); - $params->{'version'} = $Sesse::pr0n::Common::VERSION; - - # build up the XML chain - my $consumer = ModPerlConsumer->new($r); - my $writer = XML::SAX::Writer->new(Output => $consumer); - my $cleaner = XML::TemplateSAX::Cleaner->new(Handler => $writer); - my $filter = XML::TemplateSAX::Handler->new(Handler => $cleaner, Content => $params); - my $parser = XML::SAX::Expat->new(Handler => $filter); - - # kick off the parsing - $parser->parse_string(fetch_template($r, $page)); + return $text; } -# XML consumer for Apache2::Request -package ModPerlConsumer; - -our @ISA = qw( XML::SAX::Writer::ConsumerInterface ); -sub new { - my ($base, $r) = @_; - return $base->SUPER::new($r); -} - -sub output { - my ($self, $text) = @_; - $$self->print($text); +sub print_template { + my ($r, $io, $template, $args) = @_; + $io->print(Encode::encode_utf8(process_template($r, $template, $args))); } 1;