X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Famtemplates.pl;h=0917769f3b7e44c1a8a92c5c2733f637b264324a;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hp=63f20d45f609f844fe9f592b007fb08d85df761f;hpb=93c6ec51f6bb239eb52c3e0b0d1adf87f57796ee;p=kivitendo-erp.git diff --git a/bin/mozilla/amtemplates.pl b/bin/mozilla/amtemplates.pl index 63f20d45f..0917769f3 100644 --- a/bin/mozilla/amtemplates.pl +++ b/bin/mozilla/amtemplates.pl @@ -24,15 +24,20 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1335, USA. #====================================================================== # # administration # #====================================================================== +use File::Find; + +use SL::DB::Default; use SL::AM; use SL::Form; +use SL::Locale::String qw(t8); use Data::Dumper; @@ -61,7 +66,7 @@ sub display_template { my $form = $main::form; - $main::auth->assert('config'); + $main::auth->assert('admin'); $form->{edit} = 0; display_template_form(); @@ -74,7 +79,7 @@ sub edit_template { my $form = $main::form; - $main::auth->assert('config'); + $main::auth->assert('admin'); $form->{edit} = 1; display_template_form(); @@ -89,9 +94,9 @@ sub save_template { my %myconfig = %main::myconfig; my $locale = $main::locale; - $main::auth->assert('config'); + $main::auth->assert('admin'); - $form->isblank("formname", $locale->text("You're not editing a file.")) unless ($form->{type} eq "stylesheet"); + $form->isblank("formname", $locale->text("You're not editing a file.")); my ($filename) = AM->prepare_template_filename(\%myconfig, $form); if (my $error = AM->save_template($filename, $form->{content})) { @@ -111,18 +116,27 @@ sub display_template_form { my %myconfig = %main::myconfig; my $locale = $main::locale; - $main::auth->assert('config'); + $main::auth->assert('admin'); + + my $defaults = SL::DB::Default->get; + $form->error($::locale->text('No print templates have been created for this client yet. Please do so in the client configuration.')) if !$defaults->templates; + + if ($form->{"formname"} =~ m|\.\.| || $form->{"formname"} =~ m|^/|) { + $form->{"formname"} =~ s|.*/||; + } - $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"); + $form->{"title"} = $locale->text("Edit templates"); + if ($form->{"format"}) { + $form->{"title"} = uc($form->{"format"}) . " - " . $form->{"title"}; + } my %options; my @hidden = qw(type format); - if (($form->{"type"} ne "stylesheet") && !$form->{"edit"}) { + if (!$form->{"edit"}) { $options{"SHOW_EDIT_OPTIONS"} = 1; # @@ -135,29 +149,29 @@ sub display_template_form { my %formname_setup = ( -# "balance_sheet" => { "translation" => $locale->text('Balance Sheet'), "html" => 1 }, - "bin_list" => $locale->text('Bin List'), - "bwa" => { "translation" => $locale->text('BWA'), "html" => 1 }, - "check" => { "translation" => $locale->text('Check'), "html" => 1 }, - "credit_note" => $locale->text('Credit Note'), - "income_statement" => { "translation" => $locale->text('Income Statement'), "html" => 1 }, - "invoice" => $locale->text('Invoice'), - "packing_list" => $locale->text('Packing List'), - "pick_list" => $locale->text('Pick List'), - "proforma" => $locale->text('Proforma Invoice'), - "purchase_order" => $locale->text('Purchase Order'), - "receipt" => { "translation" => $locale->text('Receipt'), "tex" => 1 }, - "request_quotation" => $locale->text('RFQ'), - "sales_order" => $locale->text('Confirmation'), - "sales_quotation" => $locale->text('Quotation'), - "statement" => $locale->text('Statement'), - "storno_invoice" => $locale->text('Storno Invoice'), - "storno_packing_list" => $locale->text('Storno Packing List'), - "ustva-2004" => { "translation" => $locale->text("USTVA 2004"), "tex" => 1 }, - "ustva-2005" => { "translation" => $locale->text("USTVA 2005"), "tex" => 1 }, - "ustva-2006" => { "translation" => $locale->text("USTVA 2006"), "tex" => 1 }, - "ustva-2007" => { "translation" => $locale->text("USTVA 2007"), "tex" => 1 }, - "ustva" => $locale->text("USTVA"), + # balance_sheet => { translation => $locale->text('Balance Sheet'), html => 1 }, + bin_list => $locale->text('Bin List'), + bwa => { translation => $locale->text('BWA'), html => 1 }, + check => { translation => $locale->text('Check'), html => 1 }, + credit_note => $locale->text('Credit Note'), + income_statement => { translation => $locale->text('Income Statement'), html => 1 }, + invoice => $locale->text('Invoice'), + pick_list => $locale->text('Pick List'), + proforma => $locale->text('Proforma Invoice'), + purchase_delivery_order => { translation => $::locale->text('Purchase delivery order'), tex => 1 }, + purchase_order => $locale->text('Purchase Order'), + receipt => { translation => $locale->text('Receipt'), tex => 1 }, + request_quotation => $locale->text('RFQ'), + sales_delivery_order => { translation => $::locale->text('Sales delivery order'), tex => 1 }, + sales_order => $locale->text('Confirmation'), + sales_quotation => $locale->text('Quotation'), + statement => $locale->text('Statement'), + storno_invoice => $locale->text('Storno Invoice'), + "ustva-2004" => { translation => $locale->text("USTVA 2004"), tex => 1 }, + "ustva-2005" => { translation => $locale->text("USTVA 2005"), tex => 1 }, + "ustva-2006" => { translation => $locale->text("USTVA 2006"), tex => 1 }, + "ustva-2007" => { translation => $locale->text("USTVA 2007"), tex => 1 }, + ustva => $locale->text("USTVA"), ); my (@values, $file, $setup); @@ -184,6 +198,37 @@ 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 $template_dir = $defaults->templates; + 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|^\Q$template_dir\E/||; + # remove .tex from name + $fname =~ s|.tex$||; + + push(@all_files, $fname); + + }, $template_dir); + + # 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 ]; # @@ -222,7 +267,7 @@ sub display_template_form { push(@hidden, qw(formname language printer)); } - if ($form->{formname} || ($form->{type} eq "stylesheet")) { + if ($form->{formname}) { $options{"SHOW_CONTENT"} = 1; ($options{"filename"}, $options{"display_filename"}) @@ -233,21 +278,51 @@ sub display_template_form { $options{"CAN_EDIT"} = $form->{"edit"}; - if ($form->{edit}) { - $form->{fokus} = "Form.content"; - - } else { - $options{"content"} = "\n\n" if (!$options{"content"}); - $options{"SHOW_SECOND_EDIT_BUTTON"} = $options{"lines"} > 25; + if (!$form->{edit}) { + $options{"content"} = "\n\n" if (!$options{"content"}); } } $options{"HIDDEN"} = [ map(+{ "name" => $_, "value" => $form->{$_} }, @hidden) ]; + setup_amtemplates_display_form_action_bar( + mode => $form->{edit} ? 'edit' : 'show', + template_selected => $options{SHOW_CONTENT}, + ); + $form->header; print($form->parse_html_template("am/edit_templates", \%options)); $main::lxdebug->leave_sub(); } +sub setup_amtemplates_display_form_action_bar { + my %params = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + action => [ + t8('Edit'), + submit => [ '#form', { action => 'edit_template' } ], + accesskey => 'enter', + only_if => $params{mode} eq 'show', + disabled => !$params{template_selected} ? t8('No template has been selected yet.') : undef, + ], + + action => [ + t8('Save'), + submit => [ '#form', { action => 'save_template' } ], + accesskey => 'enter', + only_if => $params{mode} eq 'edit', + ], + + action => [ + t8('Abort'), + call => [ 'kivi.history_back' ], + only_if => $params{mode} eq 'edit', + ], + ); + } +} + 1;