[Koha-patches] [PATCH] Bug 4222 - allow nonpublicnote to be a mapped DB column

Srdjan Jankovic srdjan at catalyst.net.nz
Wed Mar 7 08:37:30 CET 2012


This means that it's possible (and easy) to put non-public notes
(usually 952$x) on a template, same as public notes. It creates a
mapping between the 952$x field and the new database column.

Note that when this is applied, it will only work on newly saved
records.

It is possible this will need to be altered to allow for UNIMARC etc. if
they use 952 differently.
---
 catalogue/detail.pl                                |   11 ++++++++++-
 catalogue/moredetail.pl                            |    1 +
 circ/returns.pl                                    |    1 +
 installer/data/mysql/kohastructure.sql             |    2 ++
 installer/data/mysql/updatedatabase.pl             |    8 ++++++++
 .../prog/en/modules/catalogue/detail.tt            |    2 ++
 .../prog/en/modules/catalogue/moredetail.tt        |    1 +
 .../prog/en/modules/circ/circulation.tt            |    8 ++++----
 .../intranet-tmpl/prog/en/modules/circ/returns.tt  |    1 +
 9 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/catalogue/detail.pl b/catalogue/detail.pl
index db38551..9735a2e 100755
--- a/catalogue/detail.pl
+++ b/catalogue/detail.pl
@@ -243,6 +243,13 @@ foreach my $item (@items) {
         $item->{waitingdate} = format_date($wait_hashref->{waitingdate});
     }
 
+    foreach my $f (qw( itemnotes nonpublicnote )) {
+        if ($item->{$f}) {
+            $item->{$f} =~ s|\n|<br />|g;
+            $itemfields{$f} = 1;
+        }
+    }
+   
     # item has a host number if its biblio number does not match the current bib
     if ($item->{biblionumber} ne $biblionumber){
         $item->{hostbiblionumber} = $item->{biblionumber};
@@ -258,6 +265,7 @@ foreach my $item (@items) {
     if ($item->{'materials'} ne ''){
 	$materials_flag = 1;
     }
+
     push @itemloop, $item;
 }
 
@@ -276,7 +284,8 @@ $template->param(
 	itemdata_uri        => $itemfields{uri},
 	itemdata_copynumber => $itemfields{copynumber},
 	volinfo				=> $itemfields{enumchron},
-    itemdata_itemnotes  => $itemfields{itemnotes},
+	itemdata_itemnotes  => $itemfields{itemnotes},
+	itemdata_nonpublicnote  => $itemfields{nonpublicnote},
 	z3950_search_params	=> C4::Search::z3950_search_args($dat),
     holdcount           => $holdcount,
         hostrecords         => $hostrecords,
diff --git a/catalogue/moredetail.pl b/catalogue/moredetail.pl
index f5bb904..0f24732 100755
--- a/catalogue/moredetail.pl
+++ b/catalogue/moredetail.pl
@@ -168,6 +168,7 @@ foreach my $item (@items){
     } else {
         $item->{'issue'}= 0;
     }
+    $item->{nonpublicnote} =~ s|\n|<br />|g if $item->{nonpublicnote};
 }
 $template->param(count => $data->{'count'},
 	subscriptionsnumber => $subscriptionsnumber,
diff --git a/circ/returns.pl b/circ/returns.pl
index e142117..ad36878 100755
--- a/circ/returns.pl
+++ b/circ/returns.pl
@@ -586,6 +586,7 @@ foreach ( sort { $a <=> $b } keys %returneditems ) {
         $ri{itemcallnumber}   = $biblio->{'itemcallnumber'};
         $ri{itemtype}         = $biblio->{'itemtype'};
         $ri{itemnote}         = $biblio->{'itemnotes'};
+        $ri{nonpublicnote}    = $biblio->{'nonpublicnote'};
         $ri{ccode}            = $biblio->{'ccode'};
         $ri{itemnumber}       = $biblio->{'itemnumber'};
         $ri{barcode}          = $bar_code;
diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index 597a8be..995322f 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -756,6 +756,7 @@ CREATE TABLE `deleteditems` (
   `reserves` smallint(6) default NULL, -- number of times this item has been placed on hold/reserved
   `restricted` tinyint(1) default NULL, -- authorized value defining use restrictions for this item (MARC21 952$5)
   `itemnotes` mediumtext, -- public notes on this item (MARC21 952$x)
+  `nonpublicnote` mediumtext default NULL,
   `holdingbranch` varchar(10) default NULL, -- foreign key from the branches table for the library that is currently in possession item (MARC21 952$b)
   `paidfor` mediumtext,
   `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- date and time this item was last altered
@@ -1022,6 +1023,7 @@ CREATE TABLE `items` ( -- holdings/item information
   `reserves` smallint(6) default NULL, -- number of times this item has been placed on hold/reserved
   `restricted` tinyint(1) default NULL, -- authorized value defining use restrictions for this item (MARC21 952$5)
   `itemnotes` mediumtext, -- public notes on this item (MARC21 952$x)
+  `nonpublicnote` mediumtext default NULL,
   `holdingbranch` varchar(10) default NULL, -- foreign key from the branches table for the library that is currently in possession item (MARC21 952$b)
   `paidfor` mediumtext,
   `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- date and time this item was last altered
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index e540874..fdeb04b 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -4734,6 +4734,14 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
     SetVersion($DBversion);
 }
 
+$DBversion = '3.07.00.XXX';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("ALTER TABLE items ADD COLUMN nonpublicnote MEDIUMTEXT AFTER itemnotes");
+    $dbh->do("ALTER TABLE deleteditems ADD COLUMN nonpublicnote MEDIUMTEXT AFTER itemnotes");
+    $dbh->do("UPDATE marc_subfield_structure SET kohafield='items.nonpublicnote' WHERE (kohafield IS NULL OR kohafield = '') AND tagfield='952' AND tagsubfield='x'");
+    print "Upgrade to $DBversion done (Make nonpublicnote easier to use. <b>If you have mapped your items to a MARC field other than 952 (system default), please check your Koha to MARC mapping for items.nonpublicnote</b>)\n";
+}
+
 =head1 FUNCTIONS
 
 =head2 DropAllForeignKeys($table)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
index 858c2d6..c73bf74 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
@@ -281,6 +281,7 @@ function verify_images() {
                 [% IF ( itemdata_copynumber ) %]<th>Copy No.</th>[% END %]
                 [% IF materials %]<th>Materials Specified</th>[% END %]
                 [% IF ( itemdata_itemnotes ) %]<th>Public notes</th>[% END %]
+                [% IF itemdata_nonpublicnote %]<th>Non-public Note</th>[% END %]
 		[% IF ( SpineLabelShowPrintOnBibDetails ) %]<th>Spine Label</th>[% END %]
 		[% IF ( hostrecords ) %]<th>Host Records</th>[% END %]
 		[% IF ( analyze ) %]<th>Used in</th><th></th>[% END %]
@@ -409,6 +410,7 @@ function verify_images() {
 		    <td class="materials"> [% itemloo.materials %] </td>
 		[% END %]
                 [% IF ( itemdata_itemnotes ) %]<td><div class="itemnotes">[% itemloo.itemnotes %]</div></td>[% END %]
+                [% IF itemdata_nonpublicnote %]<td class="nonpublicnote">[% itemloo.nonpublicnote %]</td>[% END %]
 		[% IF ( SpineLabelShowPrintOnBibDetails ) %]
 			<td><a href="/cgi-bin/koha/labels/spinelabel-print.pl?barcode=[% itemloo.barcode %]" >Print Label</a></td>
 		[% END %]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt
index 1a9536b..56e0594 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt
@@ -176,6 +176,7 @@
 		[% IF ( ITEM_DAT.card2 ) %]<li><span class="label">Previous Borrower:</span> <a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% ITEM_DAT.borrower2 %]">[% ITEM_DAT.card2 %]</a>&nbsp;</li>[% END %]
                 <li><span class="label">Paid for?:</span> [% ITEM_DAT.paidfor %]&nbsp;</li>
             <li><span class="label">Serial enumeration:</span> [% ITEM_DAT.enumchron %]&nbsp;</li>
+            [% IF ITEM_DAT.nonpublicnote %]<li><span class="label">Non-public Note:</span> [% ITEM_DAT.nonpublicnote %]&nbsp;</li>[% END %]
             <li><span class="label">Public Note:</span>
                 [% IF ( CAN_user_editcatalogue_edit_items ) %]
               <form class="inline" action="updateitem.pl" method="post"><input type="hidden" name="biblionumber" value="[% ITEM_DAT.biblionumber %]" />
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
index 1d0e07a..4b49784 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
@@ -716,7 +716,7 @@ No patron matched <span class="ex">[% message %]</span>
         [% IF ( todayissue.od ) %]<td class="od">[% ELSE %]<td>[% END %]
         [% todayissue.dd %]
         </td>
-        <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% todayissue.biblionumber %]&amp;type=intra"><strong>[% todayissue.title |html %]</strong></a>[% IF ( todayissue.author ) %], by [% todayissue.author %][% END %][% IF ( todayissue.itemnotes ) %]- <span class="circ-hlt">[% todayissue.itemnotes %]</span>[% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% todayissue.biblionumber %]&amp;itemnumber=[% todayissue.itemnumber %]#item[% todayissue.itemnumber %]">[% todayissue.barcode %]</a></td>
+        <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% todayissue.biblionumber %]&amp;type=intra"><strong>[% todayissue.title |html %]</strong></a>[% IF ( todayissue.author ) %], by [% todayissue.author %][% END %][% IF ( todayissue.itemnotes ) %]- <span class="circ-hlt">[% todayissue.itemnotes %]</span>[% END %][% IF ( todayissue.nonpublicnote ) %]- <span class="circ-hlt">[% todayissue.nonpublicnote %]</span>[% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% todayissue.biblionumber %]&amp;itemnumber=[% todayissue.itemnumber %]#item[% todayissue.itemnumber %]">[% todayissue.barcode %]</a></td>
         <td>[% UNLESS ( noItemTypeImages ) %] [% IF ( todayissue.itemtype_image ) %]<img src="[% todayissue.itemtype_image %]" alt="" />[% END %][% END %][% todayissue.itemtype %]</td>
         <td>[% todayissue.checkoutdate %]</td>
         [% IF ( todayissue.multiple_borrowers ) %]<td>[% todayissue.firstname %] [% todayissue.surname %]</td>[% END %]
@@ -789,7 +789,7 @@ No patron matched <span class="ex">[% message %]</span>
         [% IF ( previssue.od ) %]<td class="od">[% ELSE %]<td>[% END %]
         [% previssue.dd %]
         </td>
-        <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% previssue.biblionumber %]&amp;type=intra"><strong>[% previssue.title |html %]</strong></a>[% IF ( previssue.author ) %], by [% previssue.author %][% END %] [% IF ( previssue.itemnotes ) %]- [% previssue.itemnotes %][% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% previssue.biblionumber %]&amp;itemnumber=[% previssue.itemnumber %]#item[% previssue.itemnumber %]">[% previssue.barcode %]</a></td>
+        <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% previssue.biblionumber %]&amp;type=intra"><strong>[% previssue.title |html %]</strong></a>[% IF ( previssue.author ) %], by [% previssue.author %][% END %] [% IF ( previssue.itemnotes ) %]- [% previssue.itemnotes %][% END %][% IF ( previssue.nonpublicnote ) %]- [% previssue.nonpublicnote %][% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% previssue.biblionumber %]&amp;itemnumber=[% previssue.itemnumber %]#item[% previssue.itemnumber %]">[% previssue.barcode %]</a></td>
         <td>
             [% previssue.itemtype %]
         </td>
@@ -897,7 +897,7 @@ No patron matched <span class="ex">[% message %]</span>
     [% END %]
         [% IF ( relissue.overdue ) %]<td class="od">[% ELSE %]<td>[% END %]
             [% relissue.dd %]</td>
-        <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% relissue.biblionumber %]&amp;type=intra"><strong>[% relissue.title |html %]</strong></a>[% IF ( relissue.author ) %], by [% relissue.author %][% END %][% IF ( relissue.itemnotes ) %]- <span class="circ-hlt">[% relissue.itemnotes %]</span>[% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% relissue.biblionumber %]&amp;itemnumber=[% relissue.itemnumber %]#item[% relissue.itemnumber %]">[% relissue.barcode %]</a></td>
+        <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% relissue.biblionumber %]&amp;type=intra"><strong>[% relissue.title |html %]</strong></a>[% IF ( relissue.author ) %], by [% relissue.author %][% END %][% IF ( relissue.itemnotes ) %]- <span class="circ-hlt">[% relissue.itemnotes %]</span>[% END %][% IF ( relissue.nonpublicnote ) %]- <span class="circ-hlt">[% relissue.nonpublicnote %]</span>[% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% relissue.biblionumber %]&amp;itemnumber=[% relissue.itemnumber %]#item[% relissue.itemnumber %]">[% relissue.barcode %]</a></td>
         <td>[% UNLESS ( noItemTypeImages ) %] [% IF ( relissue.itemtype_image ) %]<img src="[% relissue.itemtype_image %]" alt="" />[% END %][% END %][% relissue.itemtype %]</td>
         <td>[% relissue.displaydate %]</td>
         <td>[% relissue.issuingbranchname %]</td>
@@ -918,7 +918,7 @@ No patron matched <span class="ex">[% message %]</span>
         [% IF ( relprevissue.overdue ) %]<td class="od">[% ELSE %]<td>[% END %]
         [% relprevissue.dd %]
         </td>
-        <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% relprevissue.biblionumber %]&amp;type=intra"><strong>[% relprevissue.title |html %]</strong></a>[% IF ( relprevissue.author ) %], by [% relprevissue.author %][% END %] [% IF ( relprevissue.itemnotes ) %]- [% relprevissue.itemnotes %][% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% relprevissue.biblionumber %]&amp;itemnumber=[% relprevissue.itemnumber %]#item[% relprevissue.itemnumber %]">[% relprevissue.barcode %]</a></td>
+        <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% relprevissue.biblionumber %]&amp;type=intra"><strong>[% relprevissue.title |html %]</strong></a>[% IF ( relprevissue.author ) %], by [% relprevissue.author %][% END %] [% IF ( relprevissue.itemnotes ) %]- [% relprevissue.itemnotes %][% END %][% IF ( relprevissue.nonpublicnote ) %] - [% relprevissue.nonpublicnote %][% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% relprevissue.biblionumber %]&amp;itemnumber=[% relprevissue.itemnumber %]#item[% relprevissue.itemnumber %]">[% relprevissue.barcode %]</a></td>
         <td>[% UNLESS noItemTypeImages %][% IF relprevissue.itemtype_image %]<img src="[% relprevissue.itemtype_image %]" alt="" />[% END %][% END %][% relprevissue.itemtype %]</td>
         <td>[% relprevissue.displaydate %]</td>
         <td>[% relprevissue.issuingbranchname %]</td>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt
index 004a44e..6656d25 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt
@@ -451,6 +451,7 @@ function Dopop(link) {
             [% ELSE %]Not checked out[% END %]</td>
             <td>[% IF ( riloo.bornote ) %]<span class="circ-hlt">[% riloo.bornote %]<br /></span>[% END %]
             [% IF ( riloo.itemnote ) %]<span class="circ-hlt">[% riloo.itemnote %]</span>[% END %]
+            [% IF ( riloo.nonpublicnote ) %]<span class="circ-hlt">[% riloo.nonpublicnote %]</span>[% END %]
             </td>
            </tr>
         [% END %]
-- 
1.6.5



More information about the Koha-patches mailing list