From ef888d16b710a8b084c64c7758413f7bfd0bb487 Mon Sep 17 00:00:00 2001 From: Bernd Blessmann Date: Tue, 22 Nov 2011 12:39:55 +0100 Subject: [PATCH] beliebige tex-Dateien im Vorlagenverzeichnis und Unterverzeichnissen anzeig- ... ... und editierbar gemacht. --- SL/AM.pm | 4 +++- bin/mozilla/amtemplates.pl | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/SL/AM.pm b/SL/AM.pm index 70f56f925..b2730ce50 100644 --- a/SL/AM.pm +++ b/SL/AM.pm @@ -965,7 +965,9 @@ sub prepare_template_filename { } $filename .= "." . ($form->{format} eq "html" ? "html" : "tex"); - $filename =~ s|.*/||; + if ($form->{"formname"} =~ m|\.\.| || $form->{"formname"} =~ m|^/|) { + $filename =~ s|.*/||; + } $display_filename = $filename; $filename = "$myconfig->{templates}/$filename"; } diff --git a/bin/mozilla/amtemplates.pl b/bin/mozilla/amtemplates.pl index 1dc734470..1545f656e 100644 --- a/bin/mozilla/amtemplates.pl +++ b/bin/mozilla/amtemplates.pl @@ -31,6 +31,8 @@ # #====================================================================== +use File::Find; + use SL::AM; use SL::Form; @@ -113,7 +115,10 @@ sub display_template_form { $main::auth->assert('config'); - $form->{"formname"} =~ s|.*/||; + if ($form->{"formname"} =~ m|\.\.| || $form->{"formname"} =~ m|^/|) { + $form->{"formname"} =~ s|.*/||; + } + my $format = $form->{"format"} eq "html" ? "html" : "tex"; $form->{"title"} = $form->{"type"} eq "stylesheet" ? $locale->text("Edit the stylesheet") : $locale->text("Edit templates"); @@ -187,6 +192,36 @@ sub display_template_form { @values = sort({ $a->{"label"} cmp $b->{"label"} } @values); + # + # at the end: others/includes for tex + # + if ($format eq "tex") { + # search all .tex-files in template dir (recursively) + my @all_files; + find( + sub { + next if (-l $_ || -d $_); + next unless (-f $_ && $_ =~ m/.*?\.tex$/); + + my $fname = $File::Find::name; + # remove template dir from name + $fname =~ s|^$myconfig{templates}/||; + # remove .tex from name + $fname =~ s|.tex$||; + + push(@all_files, $fname); + + }, $myconfig{templates}); + + # filter all files already set up (i.e. not already in @values) + my @other_files = grep { my $a=$_; not grep {$a eq $_->{value}} @values } @all_files; + + # add other tex files + foreach my $o (@other_files) { + push(@values, { "value" => $o, "label" => $locale->text("Others")." ($o)" }); + } + } + $options{FORMNAME} = [ @values ]; # -- 2.20.1