[Koha-patches] [PATCH] Bug 10135 : Add the ability to define customised basketgroups pdf layouts

Mathieu Saby mathieu.saby at univ-rennes2.fr
Sat Apr 27 19:42:47 CEST 2013


This patch create a sub in Koha.pm which get the list of .pm files in 
acqui/pdfformat.
The list is used to build an option list for OrderPdfFormat syspref, 
instead of a free input.
In a standard Koha, only the design of OrderPdfFormat should be altered.
If you put a new .pm file in acqui/pdfformat (and if needed a new pdf 
file in koha-tmpl/intranet/prog/pdf), you will see the name of the file 
as a new option in OrderPdfFormat.

To test :
A. in a standard Koha, check everything is working like before:
- 1. you have 2 options in OrderPdfFormat (pdfformat::layout2pages ; 
pdfformat::layout3pages)
- 2. select one layout, and try to print a basketgroup
- 3. select the 2d layout, and try to print a basketgroup

B. check you can add a new layout
- 1. Either create your own layout if you know how to do
      Or dowload and apply the 2d attachment to this bug. It contains an 
example : a layout named "pdfformat::msaby"
- 2. Check the new layout is visible in OrderPdfFormat
- 3. Select it, and try to print a basketgroup
- 4. Select one of the "old" layouts, and try to print a basketgroup.
---
  C4/Koha.pm                                         |   28 
++++++++++++++++++++
  acqui/basketgroup.pl                               |   11 --------
  admin/preferences.pl                               |    2 ++
  .../en/modules/admin/preferences/acquisitions.pref |    1 +
  4 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/C4/Koha.pm b/C4/Koha.pm
index 3648dcc..383ff8a 100644
--- a/C4/Koha.pm
+++ b/C4/Koha.pm
@@ -47,6 +47,7 @@ BEGIN {
          &getframeworks &getframeworkinfo
          &getauthtypes &getauthtype
          &getallthemes
+        getallbasketgroupslayouts
          &getFacets
          &displayServers
          &getnbpages
@@ -684,6 +685,33 @@ sub getallthemes {
      return @themes;
  }

+=head2 getallbasketgroupslayouts
+
+  (@pdflayouts) = &getallbasketgroupslayouts();
+
+Returns an array of all available basketgroup layouts
+based on *. pm files in acqui/pdfformat
+
+=cut
+
+sub getallbasketgroupslayouts {
+    my $type = shift;
+    my $pdfdir;
+    my @pdflayouts;
+    $pdfdir = C4::Context->config('intranetdir');
+    $pdfdir .= "/acqui/pdfformat";
+    opendir DIR, $pdfdir;
+    my @filelist = readdir DIR;
+    foreach my $myfile (@filelist) {
+        next unless (-f "$pdfdir/$myfile");
+        next unless ($myfile =~ m/\.pm$/);
+#keeping only *.pm files
+        $myfile =~s/\.pm$//;
+        push @pdflayouts,"pdfformat::".$myfile;
+    }
+    return @pdflayouts;
+}
+
  sub getFacets {
      my $facets;
      if ( C4::Context->preference("marcflavour") eq "UNIMARC" ) {
diff --git a/acqui/basketgroup.pl b/acqui/basketgroup.pl
index d6bd5d1..8cc2c41 100755
--- a/acqui/basketgroup.pl
+++ b/acqui/basketgroup.pl
@@ -184,24 +184,13 @@ sub displaybasketgroups {

  sub printbasketgrouppdf{
      my ($basketgroupid) = @_;
-
      my $pdfformat = C4::Context->preference("OrderPdfFormat");
-    if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 
'pdfformat::layout2pages'){
      eval {
          eval "require $pdfformat";
          import $pdfformat;
      };
      if ($@){
      }
-    }
-    else {
-    print $input->header;
-    print $input->start_html;  # FIXME Should do a nicer page
-    print "<h1>Invalid PDF Format set</h1>";
-    print "Please go to the systempreferences and set a valid pdfformat";
-    exit;
-    }
-
      my $basketgroup = GetBasketgroup($basketgroupid);
      my $bookseller = GetBookSellerFromId($basketgroup->{'booksellerid'});
      my $baskets = GetBasketsByBasketgroup($basketgroupid);
diff --git a/admin/preferences.pl b/admin/preferences.pl
index 2182591..dcfe4a0 100755
--- a/admin/preferences.pl
+++ b/admin/preferences.pl
@@ -93,6 +93,8 @@ sub _get_chunk {
                  $options{'choices'} = { map { $_ => $_ } getallthemes( 
'opac' ) }
              } elsif ( $options{'choices'} eq 'staff-templates' ) {
                  $options{'choices'} = { map { $_ => $_ } getallthemes( 
'intranet' ) }
+            } elsif ( $options{'choices'} eq 'basketgroupspdflayouts' ) {
+                $options{'choices'} = { map { $_ => $_ } 
getallbasketgroupslayouts ()}
              } else {
                  die 'Unrecognized source of preference values: ' . 
$options{'choices'};
              }
diff --git 
a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref 
b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref
index 1ec49ff..e16e1bc 100644
--- 
a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref
+++ 
b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref
@@ -40,4 +40,5 @@ Acquisitions:
          -
              - Use
              - pref: OrderPdfFormat
+              choices: basketgroupspdflayouts
              - when printing basket groups.
-- 
1.7.9.5


-- 
Mathieu Saby
Service d'Informatique Documentaire
Service Commun de Documentation
Université Rennes 2
Téléphone : 02 99 14 12 65
Courriel : mathieu.saby at univ-rennes2.fr



More information about the Koha-patches mailing list