From 8dd9e34b2526ed091d875fe5395920ee7604e8dc Mon Sep 17 00:00:00 2001 From: Matthias Meusburger Date: Fri, 11 Sep 2009 17:03:01 +0200 Subject: [PATCH] 1110 : Balance carts and lists, follow-up : Added Opac lists features to admin lists Signed-off-by: Henri-Damien LAURENT --- koha-tmpl/intranet-tmpl/prog/en/css/print.css | 4 + .../modules/virtualshelves/downloadshelf.tmpl | 33 ++++ .../en/modules/virtualshelves/sendshelf.tmpl | 43 +++++ .../modules/virtualshelves/sendshelfform.tmpl | 38 ++++ .../en/modules/virtualshelves/shelves.tmpl | 14 +- virtualshelves/downloadshelf.pl | 90 +++++++++ virtualshelves/sendshelf.pl | 173 ++++++++++++++++++ 7 files changed, 390 insertions(+), 5 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/downloadshelf.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelf.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelfform.tmpl create mode 100755 virtualshelves/downloadshelf.pl create mode 100755 virtualshelves/sendshelf.pl diff --git a/koha-tmpl/intranet-tmpl/prog/en/css/print.css b/koha-tmpl/intranet-tmpl/prog/en/css/print.css index 724687b548..16996611f5 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/css/print.css +++ b/koha-tmpl/intranet-tmpl/prog/en/css/print.css @@ -202,6 +202,10 @@ tr.highlight { display : none; } +input, fieldset.action, .list-actions { + display: none; +} + tr.overdue { font-weight : bold; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/downloadshelf.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/downloadshelf.tmpl new file mode 100644 index 0000000000..52ae03d2bc --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/downloadshelf.tmpl @@ -0,0 +1,33 @@ + +Download shelf + + + + + Your Download should automatically start + +
+
+ Download Shelf + + + " /> + +
+
+ +

Close this window

+
+ + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelf.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelf.tmpl new file mode 100644 index 0000000000..3f8502e795 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelf.tmpl @@ -0,0 +1,43 @@ + +Your List : + + +
+Hi, + +Here is your list called , sent from our online catalog. + +Please note that the attached file is a MARC biblographic records file +which can be imported into a Personal Bibliographic Software like EndNote, +Reference Manager or ProCite. + + + +--------------------------------------------- + + + + +Author(s): ; + +ISBN: +Published by: in , , +Collection: +Subject: +Copyright year: +Notes : +Unified title: +Serial: +Dewey: +Classification: +LCCN: +URL : +In the online catalog: +/cgi-bin/koha/opac-detail.pl?biblionumber= +Items : + () + +--------------------------------------------- + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelfform.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelfform.tmpl new file mode 100644 index 0000000000..41f7d32b36 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelfform.tmpl @@ -0,0 +1,38 @@ +Koha Online Catalog › Sending Your List + + + +
+ + +

Message Sent

+

The list was sent to:

+

Close window

+ + +

Problem sending the list...

+ + + + +
" method="post"> + +
+Sending your list +
  1. + + +
  2. +
  3. + + +
  4. +
  5. + " /> +
+
Cancel
+
+ +
+ + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tmpl index d4699e3975..8e5b4bc9d2 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tmpl @@ -125,12 +125,16 @@ function placeHold () {
Contents of + @@ -195,7 +199,7 @@ function placeHold () {
-
+
Add an item to
  1. diff --git a/virtualshelves/downloadshelf.pl b/virtualshelves/downloadshelf.pl new file mode 100755 index 0000000000..03f3a5ce8d --- /dev/null +++ b/virtualshelves/downloadshelf.pl @@ -0,0 +1,90 @@ +#!/usr/bin/perl + +# Copyright 2009 BibLibre +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use warnings; + +use CGI; +use Encode qw(encode); +use Switch; + +use C4::Auth; +use C4::Biblio; +use C4::Items; +use C4::Output; +use C4::VirtualShelves; +use C4::Record; +use C4::Ris; +use C4::Csv; +use utf8; +use open qw( :std :utf8); +my $query = new CGI; + +my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( + { + template_name => "virtualshelves/downloadshelf.tmpl", + query => $query, + type => "intranet", + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + } +); + +my $shelfid = $query->param('shelfid'); +my $format = $query->param('format'); +my $dbh = C4::Context->dbh; + +if ($shelfid && $format) { + + my @shelf = GetShelf($shelfid); + my ($items, $totitems) = GetShelfContents($shelfid); + my $marcflavour = C4::Context->preference('marcflavour'); + my $output; + + # retrieve biblios from shelf + my $firstpass = 1; + foreach my $biblio (@$items) { + my $biblionumber = $biblio->{biblionumber}; + + my $record = GetMarcBiblio($biblionumber); + + switch ($format) { + case "iso2709" { $output .= $record->as_usmarc(); } + case "ris" { $output .= marc2ris($record); } + case "bibtex" { $output .= marc2bibtex($record, $biblionumber); } + # We're in the case of a csv profile (firstpass is used for headers printing) : + case /^\d+$/ { $output .= marc2csv($record, $format, $firstpass); } + } + $firstpass = 0; + } + + # If it was a CSV export we change the format after the export so the file extension is fine + $format = "csv" if ($format =~ m/^\d+$/); + + print $query->header( + -type => 'application/octet-stream', + -'Content-Transfer-Encoding' => 'binary', + -attachment=>"shelf.$format"); + print $output; + +} else { + $template->param(csv_profiles => GetCsvProfilesLoop()); + $template->param(shelfid => $shelfid); + output_html_with_http_headers $query, $cookie, $template->output; +} diff --git a/virtualshelves/sendshelf.pl b/virtualshelves/sendshelf.pl new file mode 100755 index 0000000000..f7cafda960 --- /dev/null +++ b/virtualshelves/sendshelf.pl @@ -0,0 +1,173 @@ +#!/usr/bin/perl + +# Copyright 2009 BibLibre +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use warnings; + +use CGI; +use Encode qw(encode); + +use Mail::Sendmail; +use MIME::QuotedPrint; +use MIME::Base64; +use C4::Auth; +use C4::Biblio; +use C4::Items; +use C4::Output; +use C4::VirtualShelves; + +my $query = new CGI; + +my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( + { + template_name => "virtualshelves/sendshelfform.tmpl", + query => $query, + type => "intranet", + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + } +); + +my $shelfid = $query->param('shelfid'); +my $email = $query->param('email'); + +my $dbh = C4::Context->dbh; + +if ( $email ) { + my $email_from = C4::Context->preference('KohaAdminEmailAddress'); + my $comment = $query->param('comment'); + + my %mail = ( + To => $email, + From => $email_from + ); + + my ( $template2, $borrowernumber, $cookie ) = get_template_and_user( + { + template_name => "virtualshelves/sendshelf.tmpl", + query => $query, + type => "intranet", + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + } + ); + + my @shelf = GetShelf($shelfid); + my ($items, $totitems) = GetShelfContents($shelfid); + my $marcflavour = C4::Context->preference('marcflavour'); + my $iso2709; + my @results; + + # retrieve biblios from shelf + foreach my $biblio (@$items) { + my $biblionumber = $biblio->{biblionumber}; + + my $dat = GetBiblioData($biblionumber); + my $record = GetMarcBiblio($biblionumber); + my $marcnotesarray = GetMarcNotes( $record, $marcflavour ); + my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour ); + my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour ); + + my @items = &GetItemsInfo( $biblionumber, 'opac' ); + + $dat->{MARCNOTES} = $marcnotesarray; + $dat->{MARCSUBJCTS} = $marcsubjctsarray; + $dat->{MARCAUTHORS} = $marcauthorsarray; + $dat->{'biblionumber'} = $biblionumber; + $dat->{ITEM_RESULTS} = \@items; + + $iso2709 .= $record->as_usmarc(); + + push( @results, $dat ); + } + + $template2->param( + BIBLIO_RESULTS => \@results, + email_sender => $email_from, + comment => $comment, + shelfname => $shelf[1], + ); + + # Getting template result + my $template_res = $template2->output(); + my $body; + + # Analysing information and getting mail properties + if ( $template_res =~ /\n(.*)\n/s ) { + $mail{'subject'} = $1; + } + else { $mail{'subject'} = "no subject"; } + + my $email_header = ""; + if ( $template_res =~ /
    \n(.*)\n/s ) { + $email_header = $1; + } + + my $email_file = "basket.txt"; + if ( $template_res =~ /\n(.*)\n/s ) { + $email_file = $1; + } + + if ( $template_res =~ /\n(.*)\n/s ) { $body = encode_qp($1); } + + my $boundary = "====" . time() . "===="; + + # We set and put the multipart content + $mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\""; + + my $isofile = encode_base64(encode("UTF-8", $iso2709)); + $boundary = '--' . $boundary; + + $mail{body} = <param( SENT => "1" ); + } + else { + # do something if it doesnt work.... + warn "Error sending mail: $Mail::Sendmail::error \n"; + $template->param( error => 1 ); + } + + $template->param( email => $email ); + output_html_with_http_headers $query, $cookie, $template->output; + + +}else{ + $template->param( shelfid => $shelfid, + url => "/cgi-bin/koha/virtualshelves/sendshelf.pl", + ); + output_html_with_http_headers $query, $cookie, $template->output; +} -- 2.20.1