# 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;
my $form = $main::form;
- $main::auth->assert('config');
+ $main::auth->assert('admin');
$form->{edit} = 0;
display_template_form();
my $form = $main::form;
- $main::auth->assert('config');
+ $main::auth->assert('admin');
$form->{edit} = 1;
display_template_form();
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})) {
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 @hidden = qw(type format);
- if (($form->{"type"} ne "stylesheet") && !$form->{"edit"}) {
+ if (!$form->{"edit"}) {
$options{"SHOW_EDIT_OPTIONS"} = 1;
#
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'),
- "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'),
- "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);
@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 ];
#
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"})
$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;