[Koha-patches] [PATCH] Analytical records: ability to create analytical records from items, to view linked analytics, and prevent deletion of items that have linked analytics

savitra.sirohi at osslabs.biz savitra.sirohi at osslabs.biz
Thu Dec 9 15:45:28 CET 2010


From: Savitra Sirohi <savitra.sirohi at osslabs.biz>

---
 C4/Items.pm                                        |   26 ++++++++++++++++++++
 catalogue/detail.pl                                |   18 ++++++++++++-
 cataloguing/additem.pl                             |    7 +++++
 .../prog/en/includes/biblio-view-menu.inc          |    2 +
 .../intranet-tmpl/prog/en/includes/cat-toolbar.inc |    1 +
 .../prog/en/modules/cataloguing/additem.tmpl       |    2 +-
 6 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/C4/Items.pm b/C4/Items.pm
index a908356..937762f 100644
--- a/C4/Items.pm
+++ b/C4/Items.pm
@@ -74,6 +74,8 @@ BEGIN {
 		MoveItemFromBiblio 
 		GetLatestAcquisitions
         CartToShelf
+
+	GetAnalyticsCount
     );
 }
 
@@ -2357,4 +2359,28 @@ sub  _parse_unlinked_item_subfields_from_xml {
     return $unlinked_subfields;
 }
 
+=head2 GetAnalyticsCount
+
+  $count= &GetAnalyticsCount($itemnumber)
+
+counts Usage of itemnumber in Analytical bibliorecords. 
+
+=cut
+
+sub GetAnalyticsCount {
+    my ($itemnumber) = @_;
+    if (C4::Context->preference('NoZebra')) {
+        # Read the index Koha-Auth-Number for this authid and count the lines
+        my $result = C4::Search::NZanalyse("hi=$itemnumber");
+        my @tab = split /;/,$result;
+        return scalar @tab;
+    } else {
+        ### ZOOM search here
+        my $query;
+        $query= "hi=".$itemnumber;
+                my ($err,$res,$result) = C4::Search::SimpleSearch($query,0,10);
+        return ($result);
+    }
+}
+
 1;
diff --git a/catalogue/detail.pl b/catalogue/detail.pl
index 272e32e..3e84ed9 100755
--- a/catalogue/detail.pl
+++ b/catalogue/detail.pl
@@ -41,9 +41,13 @@ use C4::XSLT;
 # use Smart::Comments;
 
 my $query = CGI->new();
+
+my $analyze = $query->param('analyze');
+
 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
     {
-        template_name   => "catalogue/detail.tmpl",
+    template_name   => ($analyze? 'catalogue/analyze.tmpl':
+                      'catalogue/detail.tmpl'),
         query           => $query,
         type            => "intranet",
         authnotrequired => 0,
@@ -145,6 +149,8 @@ my (@itemloop, %itemfields);
 my $norequests = 1;
 my $authvalcode_items_itemlost = GetAuthValCode('items.itemlost',$fw);
 my $authvalcode_items_damaged  = GetAuthValCode('items.damaged', $fw);
+
+my $analytics_flag;
 foreach my $item (@items) {
 
     # can place holds defaults to yes
@@ -212,6 +218,13 @@ foreach my $item (@items) {
     if ($item->{biblionumber} ne $biblionumber){
         $item->{hostbiblionumber} = $item->{biblionumber};
     }
+	
+	#count if item is used in analytical bibliorecords
+	my $countanalytics= GetAnalyticsCount($item->{itemnumber});
+	if ($countanalytics > 0){
+		$analytics_flag=1;
+		$item->{countanalytics} = $countanalytics;
+	}
 
     push @itemloop, $item;
 }
@@ -233,6 +246,7 @@ $template->param(
     itemdata_itemnotes  => $itemfields{itemnotes},
 	z3950_search_params	=> C4::Search::z3950_search_args($dat),
         hostrecords         => $hostrecords,
+	analytics_flag	=> $analytics_flag,
 	C4::Search::enabled_staff_search_views,
 );
 
@@ -247,7 +261,7 @@ foreach ( keys %{$dat} ) {
 $template->param(
     itemloop        => \@itemloop,
     biblionumber        => $biblionumber,
-    detailview => 1,
+    ($analyze? 'analyze':'detailview') =>1,
     subscriptions       => \@subs,
     subscriptionsnumber => $subscriptionsnumber,
     subscriptiontitle   => $dat->{title},
diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl
index 816e884..13b59d1 100755
--- a/cataloguing/additem.pl
+++ b/cataloguing/additem.pl
@@ -372,6 +372,12 @@ foreach my $field (@fields) {
 			last;
 		}
 	}
+
+	my $countanalytics=GetAnalyticsCount($this_row{itemnumber});
+        if ($countanalytics > 0){
+                $this_row{countanalytics} = $countanalytics;
+        }
+
     }
     if (%this_row) {
         push(@big_array, \%this_row);
@@ -394,6 +400,7 @@ for my $row ( @big_array ) {
     $row_data{'nomod'} = $row->{'nomod'};
     $row_data{'hostitemflag'} = $row->{'hostitemflag'};
     $row_data{'hostbiblionumber'} = $row->{'hostbiblionumber'};
+	$row_data{'countanalytics'} = $row->{'countanalytics'};
     push(@item_value_loop,\%row_data);
 }
 foreach my $subfield_code (sort keys(%witness)) {
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/biblio-view-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/biblio-view-menu.inc
index 7a9ed64..4fc22db 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/biblio-view-menu.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/biblio-view-menu.inc
@@ -23,6 +23,8 @@
     <!-- TMPL_IF NAME="CAN_user_reserveforothers" -->
     <!-- TMPL_IF NAME="holdsview" --><li class="active"><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=<!-- TMPL_IF NAME="object" --><!-- TMPL_VAR NAME="object" --><!-- TMPL_ELSE --><!-- TMPL_VAR NAME="biblionumber" --><!-- /TMPL_IF -->">Holds</a></li>
     <!-- /TMPL_IF -->
+    <!-- TMPL_IF NAME="analyze" --><li class="active"><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_IF NAME="object" --><!-- TMPL_VAR NAME="object" -->&analyze=1<!-- TMPL_ELSE --><!-- TMPL_VAR NAME="biblionumber" -->&analyze=1<!-- /TMPL_IF -->">Analytics</a></li>
+    <!-- /TMPL_IF -->
 
     <!-- TMPL_IF name="subscriptionsnumber" --><li><a href="/cgi-bin/koha/serials/serials-home.pl?searched=1&amp;title_filter=<!-- TMPL_VAR NAME="subscriptiontitle" -->">Subscription(s)</a></li><!-- /TMPL_IF -->
 </ul>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc
index f3776a6..a4388c9 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc
@@ -79,6 +79,7 @@ function confirm_items_deletion() {
 			{text: _("New Record"), url: "/cgi-bin/koha/cataloguing/addbiblio.pl" },
 			{text: _("New Item"), url: "/cgi-bin/koha/cataloguing/additem.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->#additema" },
 			{text: _("New Subscription"), url: "/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=<!-- TMPL_VAR NAME="biblionumber" -->"},
+                        {text: _("Analyze items"), url: "/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&analyze=1" },
 		];
 	
 	    var editmenu = [
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tmpl
index 2145ddb..68bd084 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tmpl
@@ -207,7 +207,7 @@ function set_to_today(id, force) {
                 <!-- TMPL_LOOP NAME="item_loop" -->
                 <tr id="row<!-- TMPL_VAR NAME="itemnumber" -->">
                     <!-- TMPL_IF Name="nomod"--> <td colspan="2">&nbsp;</td><!--TMPL_ELSIF Name ="hostitemflag"--><td><a href="additem.pl?op=edititem&biblionumber=<!-- TMPL_VAR NAME="hostbiblionumber" -->&itemnumber=<!-- TMPL_VAR NAME="itemnumber" -->#edititem">Edit in Host</a></td><td><a href="additem.pl?op=delinkitem&biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&hostitemnumber=<!-- TMPL_VAR NAME="itemnumber" -->">Delink</a></td><!--TMPL_ELSE--><td><a href="additem.pl?op=edititem&amp;biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&amp;itemnumber=<!-- TMPL_VAR NAME="itemnumber" -->#edititem">Edit</a></td>
-                    <td><a class="delete" href="/cgi-bin/koha/cataloguing/additem.pl?op=delitem&amp;biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&amp;itemnumber=<!-- TMPL_VAR NAME="itemnumber" -->" onclick="confirm_deletion(<!-- TMPL_VAR NAME="biblionumber" -->,<!-- TMPL_VAR NAME="itemnumber" -->); return false;">Delete</a></td><!--/TMPL_IF-->
+                    <td><!-- TMPL_IF NAME="countanalytics" --><a href="/cgi-bin/koha/catalogue/search.pl?idx=hi&q=<!-- TMPL_VAR NAME="itemnumber"-->">view analytics</a><!-- TMPL_ELSE--><a class="delete" href="/cgi-bin/koha/cataloguing/additem.pl?op=delitem&amp;biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&amp;itemnumber=<!-- TMPL_VAR NAME="itemnumber" -->" onclick="confirm_deletion(<!-- TMPL_VAR NAME="biblionumber" -->,<!-- TMPL_VAR NAME="itemnumber" -->); return false;">Delete</a><!-- /TMPL_IF --></td><!--/TMPL_IF-->
                 <!-- TMPL_LOOP NAME="item_value" -->
                     <td><!-- TMPL_VAR ESCAPE=HTML NAME="field" --></td>
                 <!-- /TMPL_LOOP -->
-- 
1.5.4.5



More information about the Koha-patches mailing list