[Koha-cvs] koha cataloguing/value_builder/unimarc_field_4X... [rel_3_0]

Henri-Damien LAURENT laurenthdl at alinto.com
Fri Nov 24 22:45:34 CET 2006


CVSROOT:	/cvsroot/koha
Module name:	koha
Branch:		rel_3_0
Changes by:	Henri-Damien LAURENT <hdl>	06/11/24 21:45:34

Modified files:
	cataloguing/value_builder: unimarc_field_4XX.pl 
	koha-tmpl/intranet-tmpl/prog/en/cataloguing/value_builder: 
	                                                           unimarc_field_4XX.tmpl 

Log message:
	BUG Fixing : 
	Now use SimpleSearch for bibliosearch.
	Was obliged to count items through a trick using MARCmarc2koha results (May help for other results.)
	
	I find Javascript VEEERRRRYYYY SLOW on Koha.
	Why is this so slow ?

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/cataloguing/value_builder/unimarc_field_4XX.pl?cvsroot=koha&only_with_tag=rel_3_0&r1=1.1.2.4&r2=1.1.2.5
http://cvs.savannah.gnu.org/viewcvs/koha/koha-tmpl/intranet-tmpl/prog/en/cataloguing/value_builder/unimarc_field_4XX.tmpl?cvsroot=koha&only_with_tag=rel_3_0&r1=1.1.2.3&r2=1.1.2.4

Patches:
Index: cataloguing/value_builder/unimarc_field_4XX.pl
===================================================================
RCS file: /cvsroot/koha/koha/cataloguing/value_builder/Attic/unimarc_field_4XX.pl,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -b -r1.1.2.4 -r1.1.2.5
--- cataloguing/value_builder/unimarc_field_4XX.pl	17 Nov 2006 13:18:59 -0000	1.1.2.4
+++ cataloguing/value_builder/unimarc_field_4XX.pl	24 Nov 2006 21:45:34 -0000	1.1.2.5
@@ -20,7 +20,6 @@
 use strict;
 require Exporter;
 use CGI;
-use HTML::Template;
 use C4::Interface::CGI::Output;
 use C4::Context;
 use C4::Search;
@@ -28,7 +27,6 @@
 use C4::Output;
 use C4::Database;
 use C4::Biblio;
-use C4::Acquisition;
 use C4::Koha;
 use MARC::Record;
 
@@ -90,16 +88,16 @@
 			     debug => 1,
 			    });
 		#get biblionumber
-		my $biblionumber;
-		my $req= $dbh->prepare("SELECT distinctrow $biblionumber,biblionumber FROM `marc_biblio` WHERE biblionumber= ?");
-		$req->execute($bibnum);
-		($biblionumber,$bibnum) = $req->fetchrow;
+# 		my $biblionumber;
+# 		my $req= $dbh->prepare("SELECT distinctrow $biblionumber,biblionumber FROM `marc_biblio` WHERE biblionumber= ?");
+# 		$req->execute($bibnum);
+# 		($biblionumber,$bibnum) = $req->fetchrow;
 		#warn "$biblionumber :".$biblionumber;
 		#get marc record
-		$marcrecord = MARCgetbiblio($dbh,$biblionumber);
+		$marcrecord = MARCgetbiblio($dbh,$bibnum);
 # 		warn "record : ".$marcrecord->as_formatted;
 		
-		my $subfield_value_9=$biblionumber;
+		my $subfield_value_9=$bibnum;
 		my $subfield_value_0;
 		$subfield_value_0=$marcrecord->field('001')->data if $marcrecord->field('001');
 		my $subfield_value_a;
@@ -195,7 +193,7 @@
 		}
 		$template->param(fillinput => 1,
 						index => $query->param('index')."",
-						$biblionumber=>$biblionumber?$biblionumber:"",
+						biblionumber=>$bibnum?$bibnum:"",
 						subfield_value_9=>$subfield_value_9,
 						subfield_value_0=>$subfield_value_0,
 						subfield_value_a=>$subfield_value_a,
@@ -213,42 +211,12 @@
 						);
 ###############################################################	
 	}elsif ($op eq "do_search") {
-		my @marclist = $query->param('marclist');
-		my @and_or = $query->param('and_or');
-		my @excluding = $query->param('excluding');
-		my @operator = $query->param('operator');
-		my @value = $query->param('value');
-	
-		for (my $i=0;$i<=$#marclist;$i++) {
-			if ($searchdesc) { # don't put the and_or on the 1st search term
-				$searchdesc .= $and_or[$i]." ".$excluding[$i]." ".($marclist[$i]?$marclist[$i]:"*")." ".$operator[$i]." ".$value[$i]." " if ($value[$i]);
-			} else {
-				$searchdesc = $excluding[$i]." ".($marclist[$i]?$marclist[$i]:"*")." ".$operator[$i]." ".$value[$i]." " if ($value[$i]);
-			}
-		}
-		$resultsperpage= $query->param('resultsperpage');
-		$resultsperpage = 19 if(!defined $resultsperpage);
-		my $orderby = $query->param('orderby');
-		my $desc_or_asc = $query->param('desc_or_asc');
-	
-		# builds tag and subfield arrays
-		my @tags;
-		foreach my $marc (@marclist) {
-			if ($marc) {
-				my ($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,$marc,'');
-				if ($tag) {
-					push @tags,$dbh->quote("$tag$subfield");
-				} else {
-					push @tags, $dbh->quote(substr($marc,0,4));
-				}
-			} else {
-				push @tags, "";
-			}
-		}
-		
-		my ($results,$total) = catalogsearch($dbh, \@tags,\@and_or,
-											\@excluding, \@operator, \@value,
-											$startfrom*$resultsperpage, $resultsperpage,$orderby, $desc_or_asc);
+		my $search = $query->param('search');
+		my $startfrom = $query->param('startfrom');
+		my $resultsperpage = $query->param('resultsperpage');
+		my $orderby;
+		my ($total,$results) = SimpleSearch($search);
+        $resultsperpage=20 unless $resultsperpage;
 #		warn " biblio count : ".$total;
 		
 		($template, $loggedinuser, $cookie)
@@ -265,18 +233,39 @@
 		if(($total - (($startfrom+1)*($resultsperpage))) > 0 ){
 			$displaynext = 1;
 		}
-	
-		my @field_data = ();
-	
-	
-		for(my $i = 0 ; $i <= $#marclist ; $i++)
-		{
-			push @field_data, { term => "marclist", val=>$marclist[$i] };
-			push @field_data, { term => "and_or", val=>$and_or[$i] };
-			push @field_data, { term => "excluding", val=>$excluding[$i] };
-			push @field_data, { term => "operator", val=>$operator[$i] };
-			push @field_data, { term => "value", val=>$value[$i] };
-		}
+	    my @arrayresults;
+		my @field_data = ($search);
+        for (my $i=$startfrom; $i<=(($startfrom+$resultsperpage)<scalar(@$results)?($startfrom+$resultsperpage):scalar(@$results));$i++){
+            my $record=MARC::Record::new_from_usmarc( $results->[$i] );
+            my $rechash=MARCmarc2koha($dbh,$record);
+            my $pos;
+            my $countitems=1 if ($rechash->{itemnumber});
+            while (index($rechash->{itemnumber},'|',$pos)>0){
+              $countitems+=1;
+              $pos=index($rechash->{itemnumber},'|',$pos)+1;
+            }
+            $rechash->{totitem}=$countitems;
+            my @holdingbranches=split /\|/,$rechash->{holdingbranch};
+            my @itemcallnumbers=split /\|/,$rechash->{itemcallnumber};
+            my $CN;
+            for (my $i=0;$i<@holdingbranches;$i++){
+              $CN.= $holdingbranches[$i]." ( ".$itemcallnumbers[$i]." ) |"
+            }
+            $CN=~s/ \|$//;
+            $rechash->{CN}=$CN;
+            push @arrayresults,$rechash;
+        }
+        use Data::Dumper;warn Dumper(@arrayresults);
+	     
+	
+# 		for(my $i = 0 ; $i <= $#marclist ; $i++)
+# 		{
+# 			push @field_data, { term => "marclist", val=>$marclist[$i] };
+# 			push @field_data, { term => "and_or", val=>$and_or[$i] };
+# 			push @field_data, { term => "excluding", val=>$excluding[$i] };
+# 			push @field_data, { term => "operator", val=>$operator[$i] };
+# 			push @field_data, { term => "value", val=>$value[$i] };
+# 		}
 	
 		my @numbers = ();
 	
@@ -306,7 +295,7 @@
 			$to = (($startfrom+1)*$resultsperpage);
 		}
 		my $defaultview = 'BiblioDefaultView'.C4::Context->preference('BiblioDefaultView');
-		$template->param(result => $results,
+		$template->param(result => \@arrayresults,
 						index => $query->param('index')."",
 								startfrom=> $startfrom,
 								displaynext=> $displaynext,

Index: koha-tmpl/intranet-tmpl/prog/en/cataloguing/value_builder/unimarc_field_4XX.tmpl
===================================================================
RCS file: /cvsroot/koha/koha/koha-tmpl/intranet-tmpl/prog/en/cataloguing/value_builder/Attic/unimarc_field_4XX.tmpl,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -b -r1.1.2.3 -r1.1.2.4
--- koha-tmpl/intranet-tmpl/prog/en/cataloguing/value_builder/unimarc_field_4XX.tmpl	21 Nov 2006 10:29:21 -0000	1.1.2.3
+++ koha-tmpl/intranet-tmpl/prog/en/cataloguing/value_builder/unimarc_field_4XX.tmpl	24 Nov 2006 21:45:34 -0000	1.1.2.4
@@ -3,8 +3,10 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
+<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <!-- TMPL_IF Name="fillinput"-->
+</head>
 	<body>
 		<script language="JavaScript" type="text/javascript">
 		
@@ -145,9 +147,7 @@
 		</script>
 	</body>
 <!-- TMPL_ELSE -->
-	<head>
-		<title>KOHA:INTRANET_: Biblio Search</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+		<title>KOHA:INTRANET_:_Biblio_Search</title>
 	
 	<script language="JavaScript" type="text/javascript">
 	function Help() {
@@ -196,7 +196,8 @@
 		<p align="left">Logged in as: <!-- TMPL_VAR NAME="loggedinusername" --> [<a href="/cgi-bin/koha/mainpage.pl?logout.x=1">Log Out</a>]</p>
 	<!-- TMPL_ELSE -->
 		<p align="left"><a href="/cgi-bin/koha/opac-user.pl">Log In</a> to Koha</p>
-	<!-- /TMPL_IF --></head>
+	<!-- /TMPL_IF -->
+    </head>
 	<div id="mainbloc">
 	<h1 class="catalogue" >KOHA : INTRANET : Catalogue </h1>
 	<!--TMPL_IF Name = "Search"-->
@@ -208,111 +209,15 @@
 				<input type="hidden" name="plugin_name" value="unimarc_field_4XX.pl">
 				<input type="hidden" name="index" value="<!--TMPL_VAR Name="index" -->">
 				<input type="hidden" name="result" value="unimarc field 4 <!--TMPL_VAR Name="index" -->">
-				<input type="hidden" name="plugin_name" value="unimarc_field_4XX.pl">
 				<input type="hidden" name="op" value="do_search">
 				<label class="label100" for="keyword">Any word</label>
-				<input type="hidden" name="marclist" value="">
-				<input type="hidden" name="and_or" value="and">
-				<input type="hidden" name="excluding" value="">
-				<input type="hidden" name="operator" value="contains">
-				<input type="text" name="value" id="keyword" onchange="sql_update()" size="35">
-			</p>
-			<p>
-				<label_class="label100" for="title">Title</label>
-				<input_type="hidden" name="marclist" value="biblio.title">
-				<input type="hidden" name="and_or" value="and">
-				<input type="hidden" name="excluding" value="">
-				<input type="hidden" name="operator" value="contains">
-				<input_type="text" name="value" id="title" onchange="sql_update()" size="35">
-			</p>
-			<p>
-				<label class="label100" for="author">Author</label> <input type="hidden" name="marclist" value="biblio.author">
-				<input type="hidden" name="and_or" value="and">
-				<input type="hidden" name="excluding" value="">
-				<input type="hidden" name="operator" value="contains">
-				<input type="text" name="value" id="author" onchange="sql_update()" size="35">
-			</p>
-			<p>
-				<label class="label100" for="itemtype">Item Type</label>
-				<input type="hidden" name="marclist" value="biblioitems.itemtype">
-				<input type="hidden" name="and_or" value="and">
-				<input type="hidden" name="excluding" value="">
-				<input type="hidden" name="operator" value="=">
-				<!-- TMPL_VAR name="CGIitemtype" -->
-			</p>
-			<p>
-					<label class="label100" for="branch">Branch</label>
-					<input type="hidden" name="marclist" value="items.holdingbranch">
-					<input type="hidden" name="and_or" value="and">
-					<input type="hidden" name="excluding" value="">
-					<input type="hidden" name="operator" value="=">  
-					<!-- TMPL_VAR name="CGIbranch" -->
-			</p>
-			<h2 class="catalogue">Other options</h2>
-			<p>
-				<label class="label100" for="callno">Call Number</label>
-				<input type="hidden" name="marclist" value="items.itemcallnumber">
-				<input type="hidden" name="and_or" value="and">
-				<input type="hidden" name="excluding" value="">
-				<input type="hidden" name="operator" value="start">
-				<input type="text" name="value" id="callno" onchange="sql_update()">
-			</p>
-			<p>
-				<label class="label100" for="isbn">ISBN</label>
-				<input type="hidden" name="marclist" value="biblioitems.isbn">
-				<input type="hidden" name="and_or" value="and">
-				<input type="hidden" name="excluding" value="">
-				<input type="hidden" name="operator" value="=">
-				<input type="text" name="value" id="isbn" onchange="sql_update()">
-			</p>
-			<p>
-				<label class="label100" for="publisher">Publisher</label>
-				<input type="hidden" name="marclist" value="biblioitems.publishercode">
-				<input type="hidden" name="and_or" value="and">
-				<input type="hidden" name="excluding" value="">
-				<input type="hidden" name="operator" value="contains">
-				<input type="text" name="value" id="publisher" onchange="sql_update()">
-	
+				<input type="text" name="search" id="keyword" size="35">
 			</p>
-		</div>
-		<div class="bloc25">
-			<p><textarea name="sql" rows="3" cols="70" disabled readonly></textarea></p>
-			<p>Results per page :
-				<select name="resultsperpage" size="1">
-					<option value="20">20</option>
-					<option value="50">50</option>
-					<option value="100">100</option>
-				</select>
-			Ordered by
-				<select name="orderby" size="1">
-					<option_value="biblio.title">Title</option>
-					<option value="biblio.author">Author</option>
-					<option value="biblioitems.dewey">Dewey</option>
-					<option value="biblioitems.publicationyear">Publication Year</option>
-					<option value="biblioitems.publishercode">Publisher</option>
-				</select>
-			<p>
-			<p><input type="hidden" name="index" value="<!--TMPL_VAR Name="index" -->"></p>
 			<p>
 				<input type="submit" value="Start search" class="button catalogue">
 				<input type="reset"  value="Clear All Fields" class="button catalogue">
 			</p>
 	
-			<script language="javascript" type="text/javascript">
-			function sql_update() {
-			document.f.sql.value="";
-				for (i=0 ; i<document.f.marclist.length ; i++) {
-					if (document.f.value[i].value.length>0) {
-						document.f.sql.value = document.f.sql.value+
-													document.f.and_or[i].value + ' (' +
-													document.f.excluding[i].value + ' ' +
-													document.f.marclist[i].value + ' ' +
-													document.f.operator[i].value + ' ' +
-													'\''+document.f.value[i].value + '\') ';
-					}
-				}
-			}
-			</script>
 		</div>
 	</form>
 	
@@ -336,9 +241,9 @@
 				<tr>
 					<td<!-- TMPL_IF NAME="even" --> class="hilighted"<!-- /TMPL_IF -->>
 								<!-- TMPL_IF name="MARC_ON" -->
-									<a_class="transparent resultlist" href="/cgi-bin/koha/MARCdetail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->"><!-- TMPL_VAR NAME="title" --></a>
+									<a_class="transparent resultlist" href="/cgi-bin/koha/MARCdetail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->"><!-- TMPL_VAR NAME="title" ESCAPE="HTML"--></a>
 								<!-- TMPL_ELSE -->
-									<a_class="transparent resultlist" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->"><!-- TMPL_VAR NAME="title" --></a>				<!-- /TMPL_IF -->
+									<a_class="transparent resultlist" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->"><!-- TMPL_VAR NAME="title" ESCAPE="HTML" --></a>				<!-- /TMPL_IF -->
 							<p><!-- TMPL_VAR NAME="author" -->
 							<!-- TMPL_IF NAME="publishercode" -->- <!-- TMPL_VAR NAME="publishercode" --><!-- /TMPL_IF -->
 							<!-- TMPL_IF NAME="place" --> ; <!-- TMPL_VAR NAME="place" --><!-- /TMPL_IF -->
@@ -351,25 +256,10 @@
 						<!-- TMPL_VAR NAME="totitem" -->
 					</td>
 					<td <!-- TMPL_IF NAME="even" -->class="hilighted"<!-- /TMPL_IF -->>
-						<!-- TMPL_LOOP NAME="CN" -->
-							<p>
-								<!-- TMPL_VAR NAME="holdingbranch" -->
-								<!-- TMPL_IF name="date_due" -->
-									On Loan until <!-- TMPL_VAR NAME="date_due" -->
-								<!-- TMPL_ELSE -->
-									<!-- TMPL_IF NAME="itemcallnumber" -->
-										(<!-- TMPL_VAR NAME="itemcallnumber" -->)
-									<!-- /TMPL_IF -->
-								<!-- /TMPL_IF -->
-								<!-- TMPL_IF name="notforloan" -->
-									<i>(<!-- TMPL_VAR name="notforloan" -->)</i>
-								<!-- /TMPL_IF -->
-							</p>
-						<!-- /TMPL_LOOP -->
-						<!-- TMPL_IF name="onorder" --><p>On order</p><!-- /TMPL_IF -->
+						<!-- TMPL_VAR NAME="CN" -->
 					</td>
 					<td>
-						<a href="javascript:jumpfull('/cgi-bin/koha/cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_4XX.pl&index=<!--TMPL_VAR Name="index"-->&bibnum=<!--TMPL_VAR Name="biblionumber"-->&type=intranet&op=fillinput')"><img src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/arrow.gif" width="32" hspace="0" vspace="0" border="0"></a>
+						<a href="javascript:jumpfull('/cgi-bin/koha/cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_4XX.pl&index=<!--TMPL_VAR Name="index"-->&bibnum=<!--TMPL_VAR Name="biblionumber"-->&type=intranet&op=fillinput')"><img src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/arrow.gif" alt="choose" width="32" hspace="0" vspace="0" border="0"></a>
 					</td>
 	
 				</tr>





More information about the Koha-cvs mailing list