Bug 8062 [SIGNED-OFF] Cart email broken for non english templates

Fix basket email sent from OPAC. The email body is now generated HTML
(to be translatable), and converted into TEXT before beeing sent by
email.

To test that it works in other language than English, you have to update
your language .po file:

  perl translate update de-DE

Then, translated strings coming from opac-sendbasket.tt, and install the
translation:

  perl translate install de-DE

New dependency: Template::Plugin::HtmlToText

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This commit is contained in:
Frédéric Demians 2012-05-14 09:57:50 +02:00 committed by Chris Cormack
parent 4f6cae7589
commit 39017da1f5
2 changed files with 87 additions and 41 deletions

View File

@ -2,41 +2,91 @@
Your cart
<END_SUBJECT>
[% USE HtmlToText %]
[% myhtml FILTER html2text(leftmargin => 0, rightmargin => 50) %]
[% myhtmltext | html2text %]
<HEADER>
Hi,
[% FILTER html2text %]
<p>Hi,
</p>
<p>[% firstname %] [% surname %] sent you a cart from our online catalog.</p>
[% firstname %] [% surname %] sent you a cart from our online catalog.
Please note that the attached file is a MARC bibliographic records file
<p>Please note that the attached file is a MARC bibliographic records file
which can be imported into personal bibliographic software like EndNote,
Reference Manager or ProCite.
Reference Manager or ProCite.</p>
[% END %]
<END_HEADER>
<MESSAGE>
---------------------------------------------
[% IF ( comment ) %]
[% comment %]
[% FILTER html2text %]
<hr/>
[% IF comment %]
<p>[% comment %]</p>
<hr/>
[% END %]
[% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %][% BIBLIO_RESULT.title %][% IF ( BIBLIO_RESULT.subtitle ) %] [% BIBLIO_RESULT.subtitle %][% END %][% IF ( BIBLIO_RESULT.HASAUTHORS ) %]
Author(s): [% IF ( BIBLIO_RESULT.author ) %][% BIBLIO_RESULT.author %][% END %][% IF ( BIBLIO_RESULT.MARCAUTHORS ) %][% IF ( BIBLIO_RESULT.author ) %]; [% END %][% FOREACH MARCAUTHOR IN BIBLIO_RESULT.MARCAUTHORS %][% FOREACH MARCAUTHOR_SUBFIELDS_LOO IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %][% MARCAUTHOR_SUBFIELDS_LOO.separator %][% MARCAUTHOR_SUBFIELDS_LOO.value %][% END %][% UNLESS ( loop.last ) %]; [% ELSE %][% END %][% END %][% END %][% END %][% IF ( BIBLIO_RESULT.ISBN ) %]
ISBN: [% BIBLIO_RESULT.ISBN %][% END %]
[% IF ( BIBLIO_RESULT.publishercode ) %]Published by: [% BIBLIO_RESULT.publishercode %][% END %][% IF ( BIBLIO_RESULT.publicationyear ) %] in [% END %][% BIBLIO_RESULT.publicationyear %][% IF ( BIBLIO_RESULT.pages ) %], [% END %][% BIBLIO_RESULT.pages %][% IF ( BIBLIO_RESULT.size ) %], [% END %][% BIBLIO_RESULT.size %][% IF ( BIBLIO_RESULT.collection ) %]
Collection: [% BIBLIO_RESULT.seriestitle %][% END %][% IF ( BIBLIO_RESULT.subject ) %]
Subject: [% BIBLIO_RESULT.subject %][% END %][% IF ( BIBLIO_RESULT.copyrightdate ) %]
Copyright year: [% BIBLIO_RESULT.copyrightdate %][% END %][% IF ( BIBLIO_RESULT.notes ) %]
Notes : [% BIBLIO_RESULT.notes %][% END %][% IF ( BIBLIO_RESULT.unititle ) %]
Unified title: [% BIBLIO_RESULT.unititle %][% END %][% IF ( BIBLIO_RESULT.serial ) %]
Serial: [% BIBLIO_RESULT.serial %][% END %][% IF ( BIBLIO_RESULT.dewey ) %]
Dewey: [% BIBLIO_RESULT.dewey %][% END %][% IF ( BIBLIO_RESULT.classification ) %]
Classification: [% BIBLIO_RESULT.classification %][% END %][% IF ( BIBLIO_RESULT.lccn ) %]
LCCN: [% BIBLIO_RESULT.lccn %][% END %][% IF ( BIBLIO_RESULT.url ) %]
URL : [% BIBLIO_RESULT.url %][% END %]
In the online catalog:
[% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% BIBLIO_RESULT.biblionumber |url %]
Items : [% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]
[% ITEM_RESULT.branchname %] [% ITEM_RESULT.location %] [% IF ( ITEM_RESULT.itemcallnumber ) %]([% ITEM_RESULT.itemcallnumber %])[% END %] [% ITEM_RESULT.barcode %][% END %]
---------------------------------------------
<ol>
[% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
<li>
<a href="[% OPACBaseURL %]/cgi-bin/koha/opac-detail.pl?biblionumber= [% BIBLIO_RESULT.biblionumber %]">[% BIBLIO_RESULT.title %]</a>
[% IF ( BIBLIO_RESULT.subtitle ) %] [% BIBLIO_RESULT.subtitle %][% END %]
<ul>
[% IF ( BIBLIO_RESULT.HASAUTHORS ) %]
<li>Author(s): [% IF ( BIBLIO_RESULT.author ) %][% BIBLIO_RESULT.author %][% END %][% IF ( BIBLIO_RESULT.MARCAUTHORS ) %][% IF ( BIBLIO_RESULT.author ) %]; [% END %][% FOREACH MARCAUTHOR IN BIBLIO_RESULT.MARCAUTHORS %][% FOREACH MARCAUTHOR_SUBFIELDS_LOO IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %][% MARCAUTHOR_SUBFIELDS_LOO.separator %][% MARCAUTHOR_SUBFIELDS_LOO.value %][% END %][% UNLESS ( loop.last ) %]; [% ELSE %][% END %][% END %][% END %][% END %]</li>
[% IF ( BIBLIO_RESULT.ISBN ) %]
<li>ISBN: [% BIBLIO_RESULT.ISBN %]</li>
[% END %]
[% IF BIBLIO_RESULT.publishercode %]
<li>
Published by: [% BIBLIO_RESULT.publishercode %][% IF ( BIBLIO_RESULT.publicationyear ) %] in [% BIBLIO_RESULT.publicationyear %][% END %][% IF ( BIBLIO_RESULT.pages ) %], [% BIBLIO_RESULT.pages %][% END %][% IF BIBLIO_RESULT.size %], [% BIBLIO_RESULT.size %][% END %]
</li>
[% END %]
[% IF BIBLIO_RESULT.collection %]
<li>Collection: [% BIBLIO_RESULT.seriestitle %]</li>
[% END %]
[% IF ( BIBLIO_RESULT.subject ) %]
<li>Subject: [% BIBLIO_RESULT.subject %]<li>
[% END %]
[% IF ( BIBLIO_RESULT.copyrightdate ) %]
<li>Copyright year: [% BIBLIO_RESULT.copyrightdate %]</li>
[% END %]
[% IF ( BIBLIO_RESULT.notes ) %]
<li>Notes : [% BIBLIO_RESULT.notes %]</li>
[% END %]
[% IF ( BIBLIO_RESULT.unititle ) %]
<li>Unified title: [% BIBLIO_RESULT.unititle %]</li>
[% END %]
[% IF ( BIBLIO_RESULT.serial ) %]
<li>Serial: [% BIBLIO_RESULT.serial %]</li>
[% END %]
[% IF ( BIBLIO_RESULT.dewey ) %]
<li>Dewey: [% BIBLIO_RESULT.dewey %]</li>
[% END %]
[% IF ( BIBLIO_RESULT.classification ) %]
<li>Classification: [% BIBLIO_RESULT.classification %]</li>
[% END %]
[% IF ( BIBLIO_RESULT.lccn ) %]
<li>LCCN: [% BIBLIO_RESULT.lccn %]</li>
[% END %]
[% IF ( BIBLIO_RESULT.url ) %]
<li>URL : [% BIBLIO_RESULT.url %]</li>
[% END %]
<li>Items:
<ul>
[% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]
<li>
[% ITEM_RESULT.branchname %]
[% ITEM_RESULT.location %]
[% IF ITEM_RESULT.itemcallnumber %]([% ITEM_RESULT.itemcallnumber %])[% END %]
[% ITEM_RESULT.barcode %]
</li>
[% END %]
</ul>
</ul>
</li>
[% END %]
</ol>
[% END %]
<END_MESSAGE>

View File

@ -27,6 +27,7 @@ use Carp;
use Mail::Sendmail;
use MIME::QuotedPrint;
use MIME::Base64;
use HTML::FormatText;
use C4::Biblio;
use C4::Items;
use C4::Auth;
@ -120,39 +121,34 @@ if ( $email_add ) {
my $body;
# Analysing information and getting mail properties
if ( $template_res =~ /<SUBJECT>\n(.*)\n<END_SUBJECT>/s ) {
if ( $template_res =~ /<SUBJECT>\n(.*)\n?<END_SUBJECT>/s ) {
$mail{'subject'} = $1;
}
else { $mail{'subject'} = "no subject"; }
my $email_header = "";
if ( $template_res =~ /<HEADER>\n(.*)\n<END_HEADER>/s ) {
if ( $template_res =~ /<HEADER>\n(.*)\n?<END_HEADER>/s ) {
$email_header = $1;
}
my $email_file = "basket.txt";
if ( $template_res =~ /<FILENAME>\n(.*)\n<END_FILENAME>/s ) {
if ( $template_res =~ /<FILENAME>\n(.*)\n?<END_FILENAME>/s ) {
$email_file = $1;
}
if ( $template_res =~ /<MESSAGE>\n(.*)\n<END_MESSAGE>/s ) { $body = encode_qp($1); }
if ( $template_res =~ /<MESSAGE>\n(.*)\n?<END_MESSAGE>/s ) {
$body = $1;
}
my $boundary = "====" . time() . "====";
# $mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\"";
#
# $email_header = encode_qp($email_header);
#
# $boundary = "--".$boundary;
#
# # Writing mail
# $mail{body} =
$mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\"";
my $isofile = encode_base64(encode("UTF-8", $iso2709));
$boundary = '--' . $boundary;
$mail{body} = <<END_OF_BODY;
$boundary
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
$email_header