[Koha-patches] [PATCH] kohabug 2463 & 2464 Removing unlinked fields from label-edit-layout.pl

Chris Nighswonger chris.nighswonger at liblime.com
Sat Aug 9 14:36:26 CEST 2008


This patch removes unlinked fields from the 'Choose Order Of Text Fields to Print'
option on label-edit-layout.pl

It also adds code to make the 'Itemtype' field respect the item-level_itypes syspref.
---
 C4/Labels.pm                                       |  202 +++++++++-----------
 .../prog/en/modules/labels/label-edit-layout.tmpl  |   56 +------
 2 files changed, 94 insertions(+), 164 deletions(-)

diff --git a/C4/Labels.pm b/C4/Labels.pm
index 3bed6da..1233257 100644
--- a/C4/Labels.pm
+++ b/C4/Labels.pm
@@ -29,7 +29,6 @@ use C4::Debug;
 use C4::Biblio;
 use Text::CSV_XS;
 #use Data::Dumper;
-# use Smart::Comments;
 
 BEGIN {
 	$VERSION = 0.03;
@@ -80,7 +79,6 @@ Return a pointer on a hash list containing info from labels_conf table in Koha D
 
 =cut
 
-#'
 sub get_label_options {
     my $query2 = " SELECT * FROM labels_conf where active = 1";		# FIXME: exact same as get_active_layout
     my $sth    = C4::Context->dbh->prepare($query2);
@@ -138,7 +136,7 @@ sub delete_layout {
 sub get_printingtypes {
     my ($layout_id) = @_;
     my @printtypes;
-# FIXME: hard coded print types
+# FIXME hard coded print types
     push( @printtypes, { code => 'BAR',    desc => "barcode only" } );
     push( @printtypes, { code => 'BIB',    desc => "biblio only" } );
     push( @printtypes, { code => 'BARBIB', desc => "barcode / biblio" } );
@@ -165,11 +163,7 @@ sub get_printingtypes {
 #
 sub build_text_dropbox {
     my ($order) = @_;
-
-    #  my @fields      = get_text_fields();
-    #    my $field_count = scalar @fields;
-    my $field_count = 10;    # <-----------       FIXME hard coded
-
+    my $field_count = 7;    # <-----------       FIXME hard coded
     my @lines;
     !$order
       ? push( @lines, { num => '', selected => '1' } )
@@ -179,102 +173,85 @@ sub build_text_dropbox {
         $line->{'selected'} = 1 if $i eq $order;
         push( @lines, $line );
     }
-
-    # add a blank row too
-
     return @lines;
 }
 
 sub get_text_fields {
-    my ($layout_id, $sorttype) = @_;
-	my @sorted_fields;
-	my $error;
+    my ( $layout_id, $sorttype ) = @_;
+    my @sorted_fields;
+    my $error;
     my $sortorder = get_layout($layout_id);
-	if(  $sortorder->{formatstring}) {
-		if(! $sorttype) {
-		return $sortorder->{formatstring} ;
-		} else {
-		   	my $csv = Text::CSV_XS->new( { allow_whitespace => 1 } ) ;
-			my $line= $sortorder->{formatstring}  ;
-		    my $status =  $csv->parse( $line );
-			@sorted_fields = map {{ 'code' => $_ , desc => $_ } } $csv->fields()  ;
-			$error = $csv->error_input();
-			warn $error if $error ;  # TODO - do more with this.
-		}
-	} else {
-    # These fields are hardcoded based on the template for label-edit-layout.pl
-            my @text_fields = (
-     	{
-        code  => 'itemtype',
-        desc  => "Item Type",
-        order => $sortorder->{'itemtype'}
-        },
-     	{
-        code  => 'dewey',
-        desc  => "Dewey",
-        order => $sortorder->{'dewey'}
-        },
-     	{
-        code => 'issn',
-        desc => "ISSN", 
-        order => $sortorder->{'issn'}
-        },
-     	{
-        code => 'isbn',
-        desc => "ISBN", 
-        order => $sortorder->{'isbn'}
-        },
-    	{
-        code  => 'class',
-        desc  => "Classification",
-        order => $sortorder->{'class'}
-        },
-    	{
-        code  => 'subclass',
-        desc  => "Sub-Class",
-        order => $sortorder->{'subclass'}
-        },
-    	{
-        code  => 'barcode',
-        desc  => "Barcode",
-        order => $sortorder->{'barcode'}
-        },
-    	{
-        code => 'author',
-        desc => "Author",
-        order => $sortorder->{'author'}
-        },
-    	{
-        code => 'title',
-        desc => "Title",
-        order => $sortorder->{'title'}
-        },
-    	{
-        code => 'itemcallnumber',
-        desc => "Call Number",
-        order => $sortorder->{'itemcallnumber'}
-        },
-    	{
-        code => 'subtitle',
-        desc => "Subtitle",
-        order => $sortorder->{'subtitle'}
+    if ( $sortorder->{formatstring} ) {
+        if ( !$sorttype ) {
+            return $sortorder->{formatstring};
         }
-		);
-    
+        else {
+            my $csv    = Text::CSV_XS->new( { allow_whitespace => 1 } );
+            my $line   = $sortorder->{formatstring};
+            my $status = $csv->parse($line);
+            @sorted_fields =
+              map { { 'code' => $_, desc => $_ } } $csv->fields();
+            $error = $csv->error_input();
+            warn $error if $error;    # TODO - do more with this.
+        }
+    }
+    else {
 
-    	my @new_fields;
-    	foreach my $field (@text_fields) {
-    	    push( @new_fields, $field ) if $field->{'order'} > 0;
-    	}
-	
-     @sorted_fields = sort {  $$a{order} <=> $$b{order} } @new_fields;
+     # These fields are hardcoded based on the template for label-edit-layout.pl
+        my @text_fields = (
+            {
+                code  => 'itemtype',
+                desc  => "Item Type",
+                order => $sortorder->{'itemtype'}
+            },
+            {
+                code  => 'issn',
+                desc  => "ISSN",
+                order => $sortorder->{'issn'}
+            },
+            {
+                code  => 'isbn',
+                desc  => "ISBN",
+                order => $sortorder->{'isbn'}
+            },
+            {
+                code  => 'barcode',
+                desc  => "Barcode",
+                order => $sortorder->{'barcode'}
+            },
+            {
+                code  => 'author',
+                desc  => "Author",
+                order => $sortorder->{'author'}
+            },
+            {
+                code  => 'title',
+                desc  => "Title",
+                order => $sortorder->{'title'}
+            },
+            {
+                code  => 'itemcallnumber',
+                desc  => "Call Number",
+                order => $sortorder->{'itemcallnumber'}
+            },
+        );
+
+        my @new_fields = ();
+        foreach my $field (@text_fields) {
+            push( @new_fields, $field ) if $field->{'order'} > 0;
+        }
+
+        @sorted_fields = sort { $$a{order} <=> $$b{order} } @new_fields;
     }
-	# if we have a 'formatstring', then we ignore these hardcoded fields.
+
+    # if we have a 'formatstring', then we ignore these hardcoded fields.
     my $active_fields;
 
-    if ($sorttype eq 'codes') { # FIXME: This sub should really always return the array of hashrefs and let the caller take what he wants from that -fbcit
+    if ( $sorttype eq 'codes' )
+    { # FIXME: This sub should really always return the array of hashrefs and let the caller take what he wants from that -fbcit
         return @sorted_fields;
-    } else {
+    }
+    else {
         foreach my $field (@sorted_fields) {
             $active_fields .= "$field->{'desc'} ";
         }
@@ -291,6 +268,7 @@ sub get_text_fields {
  else, return the next available batch_id.
 =return
 =cut
+
 sub add_batch ($;$) {
 	my $table = (@_ and 'patroncards' eq shift) ? 'patroncards' : 'labels';
     my $batch_list = (@_) ? shift : undef;
@@ -747,15 +725,15 @@ sub SetAssociatedProfile {
     $sth->finish;
 }
 
+
 =item GetLabelItems;
 
         $options = GetLabelItems()
 
-Returns an array of references-to-hash, whos keys are the field from the biblio, biblioitems, items and labels tables in the Koha database.
+Returns an array of references-to-hash, whos keys are the fields from the biblio, biblioitems, items and labels tables in the Koha database.
 
 =cut
 
-#'
 sub GetLabelItems {
     my ($batch_id) = @_;
     my $dbh = C4::Context->dbh;
@@ -764,15 +742,16 @@ sub GetLabelItems {
     my $count;
     my @data;
     my $sth;
-
+    
     if ($batch_id) {
-        my $query3 = "Select * from labels where batch_id = ? order by labelid ";
+        my $query3 = "SELECT *
+                        FROM labels
+                        WHERE batch_id = ?
+                        ORDER BY labelid";
         $sth = $dbh->prepare($query3);
         $sth->execute($batch_id);
-
     }
     else {
-
         my $query3 = "Select * from labels";
         $sth = $dbh->prepare($query3);
         $sth->execute();
@@ -787,15 +766,14 @@ sub GetLabelItems {
 		where itemnumber=? and  i.biblioitemnumber=bi.biblioitemnumber and                  
 		bi.biblionumber=b.biblionumber"; 
      
-	 	my $sth1 = $dbh->prepare($query1);
+	my $sth1 = $dbh->prepare($query1);
         $sth1->execute( $data->{'itemnumber'} );
 
         my $data1 = $sth1->fetchrow_hashref();
         $data1->{'labelno'}  = $i1;
         $data1->{'labelid'}  = $data->{'labelid'};
         $data1->{'batch_id'} = $batch_id;
-        $data1->{'summary'} =
-          "$data1->{'barcode'}, $data1->{'title'}, $data1->{'isbn'}";
+        $data1->{'summary'} = "$data1->{'barcode'}, $data1->{'title'}, $data1->{'isbn'}";
 
         push( @resultsloop, $data1 );
         $sth1->finish;
@@ -982,14 +960,14 @@ sub DrawSpineText {
     
     # Replaced item's itemtype with the more user-friendly description...
     my $dbh = C4::Context->dbh;
-    my %itemtypes;
     my $sth = $dbh->prepare("SELECT itemtype,description FROM itemtypes");
     $sth->execute();
     while ( my $data = $sth->fetchrow_hashref ) {
         $$item->{'itemtype'} = $data->{'description'} if ($$item->{'itemtype'} eq $data->{'itemtype'});
+        $$item->{'itype'} = $data->{'description'} if ($$item->{'itype'} eq $data->{'itemtype'});
     }
 
-    my $str;
+    my $str = '';
 
     my $top_text_margin = ( $fontsize + 3 );    #FIXME: This should be a template parameter and passed in...
     my $line_spacer = ( $fontsize * 1 );    # number of pixels between text rows (This is actually leading: baseline to baseline minus font size. Recommended starting point is 20% of font size.).
@@ -1009,7 +987,11 @@ sub DrawSpineText {
         $field->{'code'} or warn "get_text_fields($layout_id, 'codes') element missing 'code' field";
         if ($$conf_data->{'formatstring'}) {
                 $field->{'data'} =  GetBarcodeData($field->{'code'},$$item,$record) ;
-        } else {
+        }
+        elsif ($field->{'code'} eq 'itemtype') {
+            $field->{'data'} = C4::Context->preference('item-level_itypes') ? $$item->{'itype'} : $$item->{'itemtype'};
+        }
+        else {
                 $field->{data} =   $$item->{$field->{'code'}}  ;
         }
         # This allows us to print the title in italic (oblique) type... (Times Roman has a different nomenclature.)
@@ -1055,7 +1037,7 @@ sub DrawSpineText {
             }
             # loop for each string line
             foreach my $str (@strings) {
-                my $hPos;
+                my $hPos = 0;
                 if ( $printingtype eq 'BIB' ) { #FIXME: This is a hack and needs to be implimented as a text justification option in the template...
                     # some code to try and center each line on the label based on font size and string point width...
                     my $stringwidth = prStrWidth($str, $fontname, $fontsize);
@@ -1089,7 +1071,7 @@ sub DrawPatronCardText {
     my $vPos   = ( $y_pos + ( $label_height - $top_text_margin ) );
     my $font = prFont($fontname);
 
-    my $hPos;
+    my $hPos = 0;
 
     foreach my $line (keys %$text) {
         $debug and warn "Current text is \"$line\" and font size for \"$line\" is $text->{$line} points";
@@ -1120,10 +1102,10 @@ sub DrawBarcode {
     my ( $x_pos, $y_pos, $height, $width, $barcode, $barcodetype ) = @_;
     my $num_of_bars = length($barcode);
     my $bar_width   = $width * .8;        # %80 of length of label width
-    my $tot_bar_length;
-    my $bar_length;
+    my $tot_bar_length = 0;
+    my $bar_length = 0;
     my $guard_length = 10;
-    my $xsize_ratio;
+    my $xsize_ratio = 0;
 
     if ( $barcodetype eq 'CODE39' ) {
         $bar_length = '17.5';
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-edit-layout.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-edit-layout.tmpl
index 64007a3..e0bea3d 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-edit-layout.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-edit-layout.tmpl
@@ -102,23 +102,6 @@ Bibliographic Data to Print
             </select>
         <label for="tx_title">Title</label>
         </td>
-            <td>
-        <select name="tx_subtitle" id="tx_subtitle">
-                 <!-- TMPL_LOOP Name="tx_subtitle" -->
-         <!-- TMPL_IF Name="selected" -->
-				<option value="<!-- TMPL_VAR Name="num" -->" selected="selected">
-                    <!-- TMPL_VAR Name="num" -->
-                </option>
-			<!-- TMPL_ELSE -->	
-                <option value="<!-- TMPL_VAR Name="num" -->">
-                    <!-- TMPL_VAR Name="num" -->
-                </option>
-			<!-- /TMPL_IF -->	
-            <!-- /TMPL_LOOP -->
-      </select>
-        <label for="tx_subtitle">Subtitle</label>
-        </td> 
-
         <td>
         <select name="tx_author" id="tx_author">
              <!-- TMPL_LOOP Name="tx_author" -->
@@ -135,8 +118,6 @@ Bibliographic Data to Print
             </select>
        <label for="tx_author">Author</label>
         </td>
-</tr> 
- <tr>
         <td>
         <select name="tx_isbn" id="tx_isbn">
               <!-- TMPL_LOOP Name="tx_isbn" -->
@@ -153,7 +134,8 @@ Bibliographic Data to Print
             </select>
       <label for="tx_isbn">ISBN</label>
         </td>
-
+</tr>
+<tr>
         <td>
         <select name="tx_issn" id="tx_issn">
                <!-- TMPL_LOOP Name="tx_issn" -->
@@ -186,8 +168,6 @@ Bibliographic Data to Print
             </select>
    <label for="tx_itemtype">Itemtype</label>
         </td>
-  </tr>
-<tr>
         <td>
         <select name="tx_barcode">
                  <!-- TMPL_LOOP Name="tx_barcode" -->
@@ -204,38 +184,6 @@ Bibliographic Data to Print
       </select>
         <label for="tx_barcode">Barcode (as text)</label>
         </td>
-        <td>
-        <select name="tx_classif" id="tx_classif">
-                  <!-- TMPL_LOOP Name="tx_classif" -->
-		<!-- TMPL_IF Name="selected" -->		    
-                <option value="<!-- TMPL_VAR Name="num" -->" selected="selected">
-                    <!-- TMPL_VAR Name="num" -->
-                </option>
-			<!-- TMPL_ELSE -->	  
-                <option value="<!-- TMPL_VAR Name="num" -->">
-                    <!-- TMPL_VAR Name="num" -->
-                </option>
-		<!-- /TMPL_IF -->		
-            <!-- /TMPL_LOOP -->
-     </select>
-        <label for="tx_classif">Classification</label>
-        </td>
-        <td>
-        <select name="tx_subclass" id="tx_subclass">
-                  <!-- TMPL_LOOP Name="tx_subclass" -->
-		<!-- TMPL_IF Name="selected" -->		  
-                <option value="<!-- TMPL_VAR Name="num" -->" selected="selected">
-                    <!-- TMPL_VAR Name="num" -->
-                </option>
-			<!-- TMPL_ELSE -->	  
-                <option value="<!-- TMPL_VAR Name="num" -->">
-                    <!-- TMPL_VAR Name="num" -->
-                </option>
-			<!-- /TMPL_IF -->	
-            <!-- /TMPL_LOOP -->
-     </select>
-        <label for="tx_subclass">Subclass</label>
-        </td>
 </tr> 
  <tr>
             <td>
-- 
1.5.5.GIT



More information about the Koha-patches mailing list