# TODO This script drives the CRUD operations on the letter table
# The DB interaction should be handled by calls to C4/Letters.pm
-use strict;
-use warnings;
+use Modern::Perl;
use CGI qw ( -utf8 );
use C4::Auth;
use C4::Context;
my $module = $input->param('module') || '';
my $content = $input->param('content');
my $op = $input->param('op') || '';
+my $redirect = $input->param('redirect');
my $dbh = C4::Context->dbh;
our ( $template, $borrowernumber, $cookie, $staffflags ) = get_template_and_user(
if ( $op eq 'add_validate' or $op eq 'copy_validate' ) {
add_validate();
- $op = q{}; # we return to the default screen for the next operation
+ if( $redirect eq "just_save" ){
+ print $input->redirect("/cgi-bin/koha/tools/letter.pl?op=add_form&branchcode=$branchcode&module=$module&code=$code&redirect=done");
+ exit;
+ } else {
+ $op = q{}; # we return to the default screen for the next operation
+ }
}
if ($op eq 'copy_form') {
my $oldbranchcode = $input->param('oldbranchcode') || q||;
}
my $message_transport_types = GetMessageTransportTypes();
- my @letter_loop;
+ my $templates = { map { $_ => { message_transport_type => $_ } } sort @$message_transport_types };
+ my %letters = ( default => { templates => $templates } );
+
+ if ( C4::Context->preference('TranslateNotices') ) {
+ my $translated_languages =
+ C4::Languages::getTranslatedLanguages( 'opac',
+ C4::Context->preference('template') );
+ for my $language (@$translated_languages) {
+ for my $sublanguage( @{ $language->{sublanguages_loop} } ) {
+ if ( $language->{plural} ) {
+ $letters{ $sublanguage->{rfc4646_subtag} } = {
+ description => $sublanguage->{native_description}
+ . ' '
+ . $sublanguage->{region_description} . ' ('
+ . $sublanguage->{rfc4646_subtag} . ')',
+ templates => { %$templates },
+ };
+ }
+ else {
+ $letters{ $sublanguage->{rfc4646_subtag} } = {
+ description => $sublanguage->{native_description}
+ . ' ('
+ . $sublanguage->{rfc4646_subtag} . ')',
+ templates => { %$templates },
+ };
+ }
+ }
+ }
+ $template->param( languages => $translated_languages );
+ }
if ($letters) {
$template->param(
modify => 1,
code => $code,
- branchcode => $branchcode,
);
- my $first_flag = 1;
+ my $first_flag_name = 1;
+ my ( $lang, @templates );
# The letter name is contained into each mtt row.
# So we can only sent the first one to the template.
- for my $mtt ( @$message_transport_types ) {
+ for my $letter ( @$letters ) {
# The letter_name
- if ( $first_flag and $letters->{$mtt}{name} ) {
+ if ( $first_flag_name and $letter->{name} ) {
$template->param(
- letter_name=> $letters->{$mtt}{name},
+ letter_name=> $letter->{name},
);
- $first_flag = 0;
+ $first_flag_name = 0;
}
- push @letter_loop, {
- message_transport_type => $mtt,
- is_html => $letters->{$mtt}{is_html},
- title => $letters->{$mtt}{title},
- content => $letters->{$mtt}{content}//'',
+ my $lang = $letter->{lang};
+ my $mtt = $letter->{message_transport_type};
+ $letters{ $lang }{templates}{$mtt} = {
+ message_transport_type => $letter->{message_transport_type},
+ is_html => $letter->{is_html},
+ title => $letter->{title},
+ content => $letter->{content} // '',
};
}
}
- else { # initialize the new fields
- for my $mtt ( @$message_transport_types ) {
- push @letter_loop, {
- message_transport_type => $mtt,
- }
- }
- $template->param(
- branchcode => $branchcode,
- module => $module,
- );
+ else {
$template->param( adding => 1 );
}
$template->param(
- letters => \@letter_loop,
+ letters => \%letters,
);
my $field_selection;
my @mtt = $input->multi_param('message_transport_type');
my @title = $input->multi_param('title');
my @content = $input->multi_param('content');
+ my @lang = $input->multi_param('lang');
for my $mtt ( @mtt ) {
my $is_html = $input->param("is_html_$mtt");
my $title = shift @title;
my $content = shift @content;
- my $letter = C4::Letters::getletter( $oldmodule, $code, $branchcode, $mtt);
+ my $lang = shift @lang;
+ my $letter = C4::Letters::getletter( $oldmodule, $code, $branchcode, $mtt, $lang );
# getletter can return the default letter even if we pass a branchcode
# If we got the default one and we needed the specific one, we didn't get the one we needed!
}
unless ( $title and $content ) {
# Delete this mtt if no title or content given
- delete_confirmed( $branchcode, $oldmodule, $code, $mtt );
+ delete_confirmed( $branchcode, $oldmodule, $code, $mtt, $lang );
next;
}
- elsif ( $letter and $letter->{message_transport_type} eq $mtt ) {
+ elsif ( $letter and $letter->{message_transport_type} eq $mtt and $letter->{lang} eq $lang ) {
$dbh->do(
q{
UPDATE letter
- SET branchcode = ?, module = ?, name = ?, is_html = ?, title = ?, content = ?
- WHERE branchcode = ? AND module = ? AND code = ? AND message_transport_type = ?
+ SET branchcode = ?, module = ?, name = ?, is_html = ?, title = ?, content = ?, lang = ?
+ WHERE branchcode = ? AND module = ? AND code = ? AND message_transport_type = ? AND lang = ?
},
undef,
- $branchcode || '', $module, $name, $is_html || 0, $title, $content,
- $branchcode, $oldmodule, $code, $mtt
+ $branchcode || '', $module, $name, $is_html || 0, $title, $content, $lang,
+ $branchcode, $oldmodule, $code, $mtt, $lang
);
} else {
$dbh->do(
- q{INSERT INTO letter (branchcode,module,code,name,is_html,title,content,message_transport_type) VALUES (?,?,?,?,?,?,?,?)},
+ q{INSERT INTO letter (branchcode,module,code,name,is_html,title,content,message_transport_type, lang) VALUES (?,?,?,?,?,?,?,?,?)},
undef,
- $branchcode || '', $module, $code, $name, $is_html || 0, $title, $content, $mtt
+ $branchcode || '', $module, $code, $name, $is_html || 0, $title, $content, $mtt, $lang
);
}
}
}
sub delete_confirmed {
- my ($branchcode, $module, $code, $mtt) = @_;
+ my ($branchcode, $module, $code, $mtt, $lang) = @_;
C4::Letters::DelLetter(
{
branchcode => $branchcode || '',
module => $module,
code => $code,
- mtt => $mtt
+ mtt => $mtt,
+ lang => $lang,
}
);
# setup default display for screen