--- trunk/web/browse.cgi 2005/11/14 16:16:57 54 +++ trunk/web/browse.cgi 2005/11/20 21:45:09 79 @@ -18,7 +18,10 @@ $abs_path =~ s#/[^/]*$#/../#; my $db_path = $abs_path . '/db/'; -my $template = 'html_ffzg.tt'; +my $template_path = "$abs_path/conf/output/tt"; +opendir(my $dir, $template_path) || die "can't open template path $template_path: $!"; +my @templates = grep { /\.tt$/i } readdir($dir); +my $css_file = 'user.css'; my $iconv_utf8 = new Text::Iconv('ISO-8859-2', 'UTF-8'); my $iconv_loc = new Text::Iconv('UTF-8', 'ISO-8859-2'); @@ -30,7 +33,7 @@ ); my $out = new WebPAC::Output::TT( - include_path => "$abs_path/conf/output/tt", + include_path => $template_path, filters => { foo => sub { shift } }, ); @@ -38,30 +41,79 @@ my $self = $q->url( '-path_info'=>1, '-query'=>0, '-full'=>0 ); my $rec = $q->param('rec') || 1; +my $template_filename = $q->param('template') || $templates[0]; print $q->header( -charset => 'utf-8' ); +##---- some handy subs + +sub update_file($$) { + my ($path, $content) = @_; + + $content = $iconv_loc->convert( $content ) || die "no content?"; + + sub _conv_js { + my $t = shift || return; + return $iconv_loc->convert(chr(hex($t))); + } + $content =~ s/%u([a-fA-F0-9]{4})/_conv_js($1)/gex; + $content =~ s/^[\n\r]+//s; + $content =~ s/[\n\r]+$//s; + + write_file($path . '.new', $content) || die "can't save ${path}.new $!"; + rename $path . '.new', $path || die "can't rename to $path: $!"; +} + +sub get_file_in_html($) { + my ($path) = @_; + + die "no path?" unless ($path); + + my $content = read_file($path) || die "can't read $path: $!"; + $content = $q->escapeHTML($iconv_utf8->convert($content)); + + return $content; +} + +sub template_list_html($) { + my $current = shift || die; + + my $html = qq{ Template\n }; + return $html; +} + +##---- + if ($q->path_info =~ m#xml#) { - my @ds = $db->load_ds($rec); + my $ds = $db->load_ds($rec); - if (@ds && $#ds > 0) { + if ($ds) { print qq{ - }, $out->apply( - template => $template, - data => \@ds, - ), qq{ + }, $iconv_utf8->convert( $out->apply( + template => $template_filename, + data => $ds, + ) ), qq{ - - }; @@ -71,37 +123,46 @@ Record $rec not found! - - }; exit; } +} elsif ($q->path_info =~ m#template_list#) { + + print qq{ + +
} . template_list_html($template_filename) . qq{
+
+
+ }; + + exit; + } elsif ($q->path_info =~ m#template#) { - my @actions; + my $template_path = $out->{'include_path'} . '/' . $template_filename; if ($q->param('save_template')) { - my $tmpl = $q->param('tt_template') || die "no template?"; - my $tmpl_file = $out->{'include_path'} . '/' . $template; - write_file($tmpl_file . '.new', $iconv_loc->convert($tmpl)) || die "can't save $tmpl_file: $!"; - rename $tmpl_file . '.new', $tmpl_file || die "can't rename to $tmpl_file: $!"; + update_file($template_path, $q->param('tt_template')); print qq{ - -$template saved + +$template_filename saved @@ -110,16 +171,12 @@ } - my $tmpl = read_file($out->{'include_path'} . '/' . $template) || die "can't read template $template: $!"; - $tmpl = $q->escapeHTML($iconv_utf8->convert($tmpl)); + my $tmpl = get_file_in_html($template_path); print qq{ -
}, Dumper($q->Vars), qq{
-
+ + +
+ +  idle
+ + +
}; exit; } else { - print qq{ + + my $template_list_html = template_list_html($template_filename); + + print <<"_END_OF_HEAD_"; WebPAC simple browse interface + + + + + -db_path = $db_path
-template = $template
- -