@@ -, +, @@ --- basket/sendbasket.pl | 2 + .../bug_3150_-_add_LIST_and_CART_notices.perl | 358 +++++++++++++++++++++ .../data/mysql/en/mandatory/sample_notices.yml | 7 + opac/opac-sendshelf.pl | 86 ++--- virtualshelves/sendshelf.pl | 2 + 5 files changed, 404 insertions(+), 51 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_3150_-_add_LIST_and_CART_notices.perl --- a/basket/sendbasket.pl +++ a/basket/sendbasket.pl @@ -66,6 +66,7 @@ if ( $email_add ) { my $marcflavour = C4::Context->preference('marcflavour'); foreach my $biblionumber (@bibs) { $template2->param( biblionumber => $biblionumber ); + my $biblio = Koha::Biblios->find($biblionumber); my $dat = GetBiblioData($biblionumber); next unless $dat; @@ -88,6 +89,7 @@ if ( $email_add ) { $dat->{HASAUTHORS} = $hasauthors; $dat->{'biblionumber'} = $biblionumber; $dat->{ITEM_RESULTS} = \@items; + $dat->{biblio} = $biblio; $iso2709 .= $record->as_usmarc(); --- a/installer/data/mysql/atomicupdate/bug_3150_-_add_LIST_and_CART_notices.perl +++ a/installer/data/mysql/atomicupdate/bug_3150_-_add_LIST_and_CART_notices.perl @@ -0,0 +1,358 @@ +$DBversion = 'XXX'; +if( CheckVersion( $DBversion ) ) { + $dbh->do(q{ INSERT IGNORE INTO letter (module, code, branchcode, name, is_html, title, content, message_transport_type, lang) VALUES + ('catalogue','LIST','','Send list',1,'Your list: [% listname %]'," +

Hi,

+ +

[% borrower.firstname %] [% borrower.surname %] sent you a list from our online catalog called: [% listname %].

+ +

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.

+
+ +

<>

+
+ +
    +[% FOREACH biblio IN biblios %] +
  1. + + [% biblio.title %] + [% IF ( biblio.subtitle ) %] + [% FOREACH subtitle IN biblio.subtitle.split(' | ') %] + [% subtitle %] + [% END %] + [% END %] + [% biblio.part_number %] [% biblio.part_name | $raw %] + + +

    + [% IF ( BIBLIO_RESULT.HASAUTHORS ) %] + Author(s): [% IF ( BIBLIO_RESULT.author ) %][% BIBLIO_RESULT.author | $raw %][% 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 | $raw %][% MARCAUTHOR_SUBFIELDS_LOO.value | $raw %] + [% END %] + [% UNLESS ( loop.last ) %];[% END %] + [% END %] + [% END %] +
    + [% END %] + + [% SET record = biblio.metadata.record %] + Author(s): [% IF ( biblio.author ) %][% biblio.author | $raw %][% END %] + [% FOREACH field IN record.fields('7..') %] + [% IF ( biblio.author ) %]; [% END %] + [% UNLESS ( field.tag < 700 || field.tag > 720 ) %] + [% SET separator = Koha.Preference('AuthoritySeparator') %] + [% IF ( separator ) %][% separator | $raw %][% ELSE %] [% END %][% field.as_string | $raw %] + [% END %] + [% UNLESS ( loop.last ) %];[% END %] + [% END %] + + + [% SET biblioitem = biblio.biblioitem %] + + [% IF ( biblioitem.isbn ) %] + + ISBN: [% FOREACH isbn IN biblioitem.isbn %] + [% isbn | $raw %] + [% UNLESS ( loop.last ) %]; [% END %] + [% END %] +
    + [% END %] + + [% IF ( biblioitem.publishercode ) %] + + Published by: [% biblioitem.publishercode | $raw %] + [% IF ( biblioitem.publicationyear ) %] + in [% biblioitem.publicationyear | $raw %] + [% END %] + [% IF ( biblioitem.pages ) %] + , [% biblioitem.pages | $raw %] + [% END %] + [% IF BIBLIO_RESULT.item('size') %] + , [% BIBLIO_RESULT.item('size') | html %] + [% END %] +
    + [% END %] + + [% IF ( biblio.seriestitle ) %] + + Collection: [% biblio.seriestitle | $raw %] +
    + [% END %] + + [% IF ( BIBLIO_RESULT.subject ) %] + + Subject: [% BIBLIO_RESULT.subject | $raw %] +
    + [% END %] + + Subject: + [% IF ( Koha.Preference('marcflavour') eq 'UNIMARC' ) %] + [% SET maxtag = 611 %] + [% ELSE %] + [% SET maxtag = 699 %] + [% END %] + [% FOREACH field IN record.fields('6..') %] + [% IF ( biblio.author ) %]; [% END %] + [% UNLESS ( field.tag < 600 || field.tag >= maxtag ) %] + [% SET separator = Koha.Preference('AuthoritySeparator') %] + [% IF ( separator ) %][% separator | $raw %][% ELSE %] [% END %][% field.as_string | $raw %] + [% END %] + [% UNLESS ( loop.last ) %];[% END %] + [% END %] +
    + + [% IF ( biblio.copyrightdate ) %] + + Copyright year: [% biblio.copyrightdate | $raw %] +
    + [% END %] + + [% IF ( biblio.notes || biblioitem.notes ) %] + + Notes: [% biblio.notes | $raw %]
    [% biblioitem.notes | $raw %] +

    + [% END %] + + [% IF ( biblio.unititle ) %] + + Unified title: [% biblio.unititle | $raw %] +
    + [% END %] + + [% IF ( biblio.serial ) %] + + Serial: [% biblio.serial | $raw %] +
    + [% END %] + + [% IF ( record.field('082') ) %] + + Dewey: [% record.field('082').as_string | $raw %] +
    + [% END %] + + [% IF ( biblioitem.cn_source ) %] + + Classification: [% biblioitem.cn_source | $raw %] +
    + [% END %] + + [% IF ( biblioitem.lccn ) %] + + LCCN: [% biblioitem.lccn | $raw %] +
    + [% END %] + + [% IF ( biblioitem.url ) %] + + URL: [% biblioitem.url | html %] + + [% END %] +

    + + [% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %] + [% IF ( OPACBaseURL ) %] +

    In online catalog: [% OPACBaseURL | $raw %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %]

    + [% END %] + + [% IF ( biblio.items.size ) %] +

    Items: +

    +

    + [% END %] +
    +
  2. + +[% END %] +
", 'email','default' ), + ('catalogue','CART','','Send cart',1,'Your cart',"

Hi,

+ +

[% borrower.firstname | $raw %] [% borrower.surname | $raw %] sent you a cart from our online catalog.

+ +

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.

+
+ +

<>

+
+ +
    +[% FOREACH biblio IN biblios %] +
  1. + + [% biblio.title | $raw %] + [% IF ( biblio.subtitle ) %] + [% FOREACH subtitle IN biblio.subtitle.split(' | ') %] + [% subtitle | $raw %] + [% END %] + [% END %] + [% biblio.part_number | $raw %] [% biblio.part_name | $raw %] + + +

    + [% IF ( BIBLIO_RESULT.HASAUTHORS ) %] + Author(s): [% IF ( BIBLIO_RESULT.author ) %][% BIBLIO_RESULT.author | $raw %][% 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 | $raw %][% MARCAUTHOR_SUBFIELDS_LOO.value | $raw %] + [% END %] + [% UNLESS ( loop.last ) %];[% END %] + [% END %] + [% END %] +
    + [% END %] + + [% SET record = biblio.metadata.record %] + Author(s): [% IF ( biblio.author ) %][% biblio.author | $raw %][% END %] + [% FOREACH field IN record.fields('7..') %] + [% IF ( biblio.author ) %]; [% END %] + [% UNLESS ( field.tag < 700 || field.tag > 720 ) %] + [% SET separator = Koha.Preference('AuthoritySeparator') %] + [% IF ( separator ) %][% separator | $raw %][% ELSE %] [% END %][% field.as_string | $raw %] + [% END %] + [% UNLESS ( loop.last ) %];[% END %] + [% END %] + + + [% SET biblioitem = biblio.biblioitem %] + + [% IF ( biblioitem.isbn ) %] + + ISBN: [% FOREACH isbn IN biblioitem.isbn %] + [% isbn | $raw %] + [% UNLESS ( loop.last ) %]; [% END %] + [% END %] +
    + [% END %] + + [% IF ( biblioitem.publishercode ) %] + + Published by: [% biblioitem.publishercode | $raw %] + [% IF ( biblioitem.publicationyear ) %] + in [% biblioitem.publicationyear | $raw %] + [% END %] + [% IF ( biblioitem.pages ) %] + , [% biblioitem.pages | $raw %] + [% END %] + [% IF BIBLIO_RESULT.item('size') %] + , [% BIBLIO_RESULT.item('size') | html %] + [% END %] +
    + [% END %] + + [% IF ( biblio.seriestitle ) %] + + Collection: [% biblio.seriestitle | $raw %] +
    + [% END %] + + [% IF ( BIBLIO_RESULT.subject ) %] + + Subject: [% BIBLIO_RESULT.subject | $raw %] +
    + [% END %] + + Subject: + [% IF ( Koha.Preference('marcflavour') eq 'UNIMARC' ) %] + [% SET maxtag = 611 %] + [% ELSE %] + [% SET maxtag = 699 %] + [% END %] + [% FOREACH field IN record.fields('6..') %] + [% IF ( biblio.author ) %]; [% END %] + [% UNLESS ( field.tag < 600 || field.tag >= maxtag ) %] + [% SET separator = Koha.Preference('AuthoritySeparator') %] + [% IF ( separator ) %][% separator | $raw %][% ELSE %] [% END %][% field.as_string | $raw %] + [% END %] + [% UNLESS ( loop.last ) %];[% END %] + [% END %] +
    + + [% IF ( biblio.copyrightdate ) %] + + Copyright year: [% biblio.copyrightdate | $raw %] +
    + [% END %] + + [% IF ( biblio.notes || biblioitem.notes ) %] + + Notes: [% biblio.notes | $raw %]
    [% biblioitem.notes | $raw %] +

    + [% END %] + + [% IF ( biblio.unititle ) %] + + Unified title: [% biblio.unititle | $raw %] +
    + [% END %] + + [% IF ( biblio.serial ) %] + + Serial: [% biblio.serial | $raw %] +
    + [% END %] + + [% IF ( record.field('082') ) %] + + Dewey: [% record.field('082').as_string | $raw %] +
    + [% END %] + + [% IF ( biblioitem.cn_source ) %] + + Classification: [% biblioitem.cn_source | $raw %] +
    + [% END %] + + [% IF ( biblioitem.lccn ) %] + + LCCN: [% biblioitem.lccn | $raw %] +
    + [% END %] + + [% IF ( biblioitem.url ) %] + + URL: [% biblioitem.url | html %] + + [% END %] +

    + + [% SET OPACBaseURL = Koha.Preference('OPACBaseURL') %] + [% IF ( OPACBaseURL ) %] +

    In online catalog: [% OPACBaseURL | $raw %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblio.biblionumber | html %]

    + [% END %] + + [% IF ( biblio.items.size ) %] +

    Items: +

    +

    + [% END %] +
    +
  2. +[% END %] +
",'email','default') }); + + NewVersion( $DBversion, 3150, 'Add LIST and CART notices' ); +} --- a/installer/data/mysql/en/mandatory/sample_notices.yml +++ a/installer/data/mysql/en/mandatory/sample_notices.yml @@ -1442,3 +1442,10 @@ tables: - "[% ELSE %]" - "The following item, [% biblio.title %], has correctly been renewed and is now due on [% checkout.date_due | $KohaDates as_due_date => 1 %]" - "[% END %]" + + - module: catalogue + code: LIST + branchcode: "" + name: "Send list" + is_html: 1 + title: "Your list: [% shelfname %]" --- a/opac/opac-sendshelf.pl +++ a/opac/opac-sendshelf.pl @@ -71,7 +71,7 @@ if ( $email ) { my $patron = Koha::Patrons->find( $borrowernumber ); my $borcat = $patron ? $patron->categorycode : q{}; - +=pod my $shelf = Koha::Virtualshelves->find( $shelfid ); my $contents = $shelf->get_contents; my $marcflavour = C4::Context->preference('marcflavour'); @@ -113,60 +113,44 @@ if ( $email ) { firstname => $patron->firstname, surname => $patron->surname, ); +=cut + my $shelf = Koha::Virtualshelves->find( $shelfid ); + my $contents = $shelf->get_contents; + my @biblionumbers; - # Getting template result - my $template_res = $template2->output(); - my $body; - - my $subject; - # Analysing information and getting mail properties - if ( $template_res =~ /(?.*)/s ) { - $subject = $+{subject}; - $subject =~ s|\n?(.*)\n?|$1|; - } - else { - $subject = "no subject"; - } + while ( my $content = $contents->next ) { + push @biblionumbers, $content->biblionumber; + }; - my $email_header = ""; - if ( $template_res =~ /
(.*)/s ) { - $email_header = $1; - $email_header =~ s|\n?(.*)\n?|$1|; - } + my %loops = ( + biblio => \@biblionumbers, + ); - if ( $template_res =~ /(.*)/s ) { - $body = $1; - $body =~ s|\n?(.*)\n?|$1|; - } + my %substitute = ( + comment => $comment, + ); - my $THE_body = <create( - { - to => $email, - subject => $subject, - } - ); - $email->text_body( $THE_body ); - $email->attach( - Encode::encode( "UTF-8", $iso2709 ), - content_type => 'application/octet-stream', - name => 'list.iso2709', - disposition => 'attachment', - ); - my $library = Koha::Patrons->find( $borrowernumber )->library; - $email->transport( $library->smtp_server->transport ); - $email->send_or_die; - $template->param( SENT => "1" ); - } - catch { - carp "Error sending mail: $_"; - $template->param( error => 1 ); - }; + my $letter = C4::Letters::GetPreparedLetter ( + module => 'catalog', + letter_code => 'LIST', + branchcode => $branch, + lang => $patron->lang, + tables => { + biblio => $biblio->biblionumber, + borrowers => $borrowernumber, + }, + message_transport_type => 'email', + loops => \%loops, + substitute => \%substite, + ) + + C4::Letters::EnqueueLetter({ + letter => $letter, + message_transport_type => 'email', + borrowernumber => $patron->borrowernumber, + to_address => $email, + reply_address => $patron->first_valid_email_address, + }); $template->param( shelfid => $shelfid, --- a/virtualshelves/sendshelf.pl +++ a/virtualshelves/sendshelf.pl @@ -67,6 +67,7 @@ if ($to_address) { while ( my $content = $contents->next ) { my $biblionumber = $content->biblionumber; + my $biblio = Koha::Biblios->find($biblionumber); my $dat = GetBiblioData($biblionumber); my $record = GetMarcBiblio({ biblionumber => $biblionumber, @@ -82,6 +83,7 @@ if ($to_address) { $dat->{'biblionumber'} = $biblionumber; $dat->{ITEM_RESULTS} = \@items; $dat->{HASAUTHORS} = $dat->{'author'} || @$marcauthorsarray; + $dat->{biblio} = $biblio; $iso2709 .= $record->as_usmarc(); --