Browse Source

synch'ing 2.2 and head

3.0.x
tipaul 19 years ago
parent
commit
64cd740d2b
  1. 2
      koha-tmpl/intranet-tmpl/default/en/about.tmpl
  2. 11
      koha-tmpl/intranet-tmpl/default/en/members/memberentry.tmpl
  3. 14
      koha-tmpl/intranet-tmpl/default/en/members/moremember.tmpl
  4. 66
      koha-tmpl/intranet-tmpl/default/en/reports/reports-home.tmpl
  5. 6
      koha-tmpl/intranet-tmpl/default/en/search.marc/result.tmpl
  6. 4
      koha-tmpl/intranet-tmpl/default/en/search.marc/search.tmpl
  7. 93
      koha-tmpl/intranet-tmpl/default/en/z3950/searchresult.tmpl
  8. 10
      koha-tmpl/opac-tmpl/css/en/includes/basket.js
  9. 6
      koha-tmpl/opac-tmpl/css/en/includes/opac-basket-top.inc
  10. 8
      koha-tmpl/opac-tmpl/css/en/includes/opac-top.inc
  11. 1
      koha-tmpl/opac-tmpl/css/en/includes/opac.css
  12. 70
      koha-tmpl/opac-tmpl/css/en/opac-MARCdetail.tmpl
  13. 2
      koha-tmpl/opac-tmpl/css/en/opac-addbookbybiblionumber.tmpl
  14. 44
      koha-tmpl/opac-tmpl/css/en/opac-basket.tmpl
  15. 46
      koha-tmpl/opac-tmpl/css/en/opac-detail.tmpl
  16. 17
      koha-tmpl/opac-tmpl/css/en/opac-main.tmpl
  17. 10
      koha-tmpl/opac-tmpl/css/en/opac-search.tmpl
  18. 8
      koha-tmpl/opac-tmpl/css/en/opac-searchresults.tmpl
  19. 3
      koha-tmpl/opac-tmpl/css/en/opac-sendbasket.tmpl
  20. 6
      koha-tmpl/opac-tmpl/css/en/opac-sendbasketform.tmpl
  21. 39
      koha-tmpl/opac-tmpl/css/en/opac-user.tmpl
  22. 19
      members/memberentry.pl
  23. 97
      misc/migration_tools/buildCOUNTRY.pl
  24. 149
      misc/overduenotices.pl
  25. 432
      misc/release notes/release_notes_222.txt
  26. 6
      misc/translator/VerboseWarnings.pm
  27. 65
      misc/translator/tmpl_process3.pl
  28. 5
      opac/opac-ISBDdetail.pl
  29. 52
      opac/opac-MARCdetail.pl
  30. 16
      opac/opac-addbookbybiblionumber.pl
  31. 10
      opac/opac-basket.pl
  32. 5
      opac/opac-detail.pl
  33. 2
      opac/opac-readingrecord.pl
  34. 2
      opac/opac-reserve.pl
  35. 18
      opac/opac-search.pl
  36. 2
      opac/opac-searchresults.pl
  37. 14
      opac/opac-sendbasket.pl
  38. 20
      opac/opac-serial-issues.pl
  39. 22
      opac/opac-shelves.pl
  40. 5
      opac/opac-sidebar.pl
  41. 2
      opac/opac-suggestions.pl
  42. 2
      opac/opac-user.pl
  43. 2
      opac/opac-userdetails.pl
  44. 2
      opac/opac-userupdate.pl
  45. 6
      reports/catalogue_stats.pl
  46. 7
      reports/itemtypes.plugin
  47. 9
      search.marc/search.pl
  48. 46
      updater/updatedatabase
  49. 31
      z3950/processz3950queue
  50. 3
      z3950/search.pl

2
koha-tmpl/intranet-tmpl/default/en/about.tmpl

@ -73,7 +73,7 @@
</div>
<div id="bloc25">
<h2>Translation</h2>
<p><label>French</label>Pascale Nalon (ENSMP) and Jean Yves Lemaire (Saint Germain sur Morin)</p>
<p><label>French</label>Pascale Nalon (ENSMP) and Jean Yves Lemaire (Chatel Saint Germain)</p>
<p><label>Chinese</label>Ambrose Li</p>
<p><label>Spanish</label>Andres Tarallo</p>
<p><label>Italian</label>Giuseppe Angilella</p>

11
koha-tmpl/intranet-tmpl/default/en/members/memberentry.tmpl

@ -30,7 +30,7 @@
<!-- TMPL_IF NAME="ERROR_surname" -->
Surname<br>
<!-- /TMPL_IF -->
<!-- TMPL_IF NAME="aERROR_ddress" -->
<!-- TMPL_IF NAME="ERROR_address" -->
Postal Street Address<br>
<!-- /TMPL_IF -->
<!-- TMPL_IF NAME="ERROR_city" -->
@ -42,9 +42,10 @@
<input type="hidden" name="joining" value="<!-- TMPL_VAR NAME="dateenrolled" -->">
<input type="hidden" name="expiry" value="<!-- TMPL_VAR NAME="expiry" -->">
<input type="hidden" name="type" value="borrowers">
<input type="hidden" name="borrowernumber" value="<!-- TMPL_VAR NAME="member" -->">
<input type="hidden" name="borrowernumber" value="<!-- TMPL_VAR NAME="borrowernumber" -->">
<input type="hidden" name="updtype" value="<!-- TMPL_VAR NAME="updtype" -->">
<input type="hidden" name="actionType" value="<!-- TMPL_VAR NAME="actionType" -->">
<input type="hidden" name="destination" value="<!-- TMPL_VAR NAME="destination" -->" />
<!-- TMPL_IF NAME="addAction" -->
<input type="hidden" name="op" value="add">
<!-- TMPL_ELSE -->
@ -152,7 +153,7 @@
<td>Joining Branch</td>
</tr>
<tr>
<td colspan="2"><input type="text" name="address" size="40" value="<!-- TMPL_VAR NAME="address" -->"></td>
<td colspan="2"><input type="text" name="streetaddress" size="40" value="<!-- TMPL_VAR NAME="address" -->"></td>
<td>
<input type="text" name="zipcode" size="10" maxlength="20" value="<!-- TMPL_VAR NAME="zipcode" -->">
</td>
@ -171,7 +172,7 @@
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><input type="text" name="streetaddress" size="40" value="<!-- TMPL_VAR NAME="streetaddress" -->"></td>
<td colspan="2"><input type="text" name="physstreet" size="40" value="<!-- TMPL_VAR NAME="physstreet" -->"></td>
<td>
<input type="text" name="homezipcode" size="10" maxlength="20" value="<!-- TMPL_VAR NAME="homezipcode" -->">
</td>
@ -244,7 +245,6 @@
<td>Circulation note (appears during issue/return)</td>
<td colspan="4"><textarea name="borrowernotes" cols="70" rows="3"><!-- TMPL_VAR NAME="borrowernotes" --></textarea></td>
</tr>
<!-- TMPL_IF NAME="modify" -->
<tr><td colspan="5">FLAGS</td></tr>
<!-- TMPL_LOOP NAME="flagloop" -->
<tr>
@ -254,7 +254,6 @@
</td>
</tr>
<!-- /TMPL_LOOP -->
<!-- /TMPL_IF -->
<tr>
<td colspan="5">The 2 following fields are available for your own usage. They can be useful for stat purposes</td>

14
koha-tmpl/intranet-tmpl/default/en/members/moremember.tmpl

@ -15,7 +15,8 @@
<label class="label100">Text messaging: </label><!-- TMPL_VAR NAME="textmessaging" --><br>
<label class="label100">Membership Number: </label><!-- TMPL_VAR NAME="borrowernumber" --><br>
<label class="label100">Membership Category: </label><!-- TMPL_VAR NAME="categorycode" --><br>
<label class="label100">Joined: </label><!-- TMPL_VAR NAME="dateenrolled" -->, Expires: <!-- TMPL_VAR NAME="expiry" --><br>
<label class="label100">Joined: </label><!-- TMPL_VAR NAME="dateenrolled" -->,<br>
<label class="label100"> Expires:</label><!-- TMPL_VAR NAME="expiry" --><br>
<label class="label100">Joining branch: </label><!-- TMPL_VAR NAME="branchcode" -->
</p>
<p>
@ -25,7 +26,6 @@
<!-- TMPL_UNLESS name="I" -->
<label class="label100">DoB: </label><!-- TMPL_VAR NAME="dateofbirth" --><br>
<label class="label100">Sex: </label><!-- TMPL_VAR NAME="sex" --><br>
Alternative
<!-- /TMPL_UNLESS -->
<label class="label100">Contact: </label><!-- TMPL_VAR NAME="contactname" --><br>
<label class="label100">Phone: </label><!-- TMPL_VAR NAME="altphone" --><br>
@ -66,7 +66,7 @@
<!-- TMPL_IF NAME="I" -->
<a href="/cgi-bin/koha/members/imemberentry.pl?bornum=<!-- TMPL_VAR NAME="bornum" -->" class="button">Modify</a>
<!-- TMPL_ELSE -->
<a href="/cgi-bin/koha/members/memberentry.pl?bornum=<!-- TMPL_VAR NAME="bornum" -->" class="button">Modify</a>
<a href="/cgi-bin/koha/members/memberentry.pl?borrowernumber=<!-- TMPL_VAR NAME="bornum" -->" class="button">Modify</a>
<!-- /TMPL_IF -->
<a href="javascript:confirm_deletion()" class="button">Delete</a>
<a href="/cgi-bin/koha/circ/circulation.pl?findborrower=<!-- TMPL_VAR NAME="cardnumber" -->" class="button">Issue books</a>
@ -172,13 +172,13 @@
<!-- TMPL_LOOP NAME="issueloop" -->
<tr>
<td><!-- TMPL_IF NAME="red" --><font color="red"><!-- /TMPL_IF -->
<!-- TMPL_VAR NAME="title" --><!-- TMPL_IF NAME="red" --></font><!-- /TMPL_IF -->
<td><!-- TMPL_IF NAME="red" --><p class="problem"><!-- TMPL_ELSE --> <p><!-- /TMPL_IF -->
<!-- TMPL_VAR NAME="title" --> <!-- TMPL_IF name="itemcallnumber" --> <i>(<!-- TMPL_VAR name="itemcallnumber" -->)</i> <!-- /TMPL_IF -->
<a href="/cgi-bin/koha/moredetail.pl?item=<!-- TMPL_VAR NAME="itemnumber" -->&amp;bib=<!-- TMPL_VAR NAME="biblionumber" -->&amp;bi=<!-- TMPL_VAR NAME="biblioitemnumber" -->">
<!-- TMPL_VAR NAME="barcode" -->
</a>
</a></p>
</td>
<td><!-- TMPL_VAR NAME="date_due" --></td>
<td><!-- TMPL_IF NAME="red" --><p class="problem"><!-- TMPL_ELSE --> <p><!-- /TMPL_IF --><!-- TMPL_VAR NAME="date_due" --></p></td>
<td><!-- TMPL_VAR NAME="itemtype" --></td>
<td><!-- TMPL_VAR NAME="charge" --></td>
<td>

66
koha-tmpl/intranet-tmpl/default/en/reports/reports-home.tmpl

@ -4,31 +4,27 @@
<h1 class="reports">Reports</h1>
<table>
<tbody>
<tr>
<td>
<p>
<div id="bloc25">
<h2 class="reports">Top Lists </h2>
<p>on issues</p>
<ul>
<li><a href="/cgi-bin/koha/reports/bor_issues_top.pl">Borrowers</a></li>
<li><a href="/cgi-bin/koha/reports/cat_issues_top.pl">Items</a></li>
</ul>
</div>
</p>
<p>
<div id="bloc25">
<h2 class="reports">Stat wizard on </h2>
<p><a href="/cgi-bin/koha/reports/acquisitions_stats.pl">Acquisitions</a></p>
<p><a href="/cgi-bin/koha/reports/borrowers_stats.pl">Borrowers</a></p>
<p><a href="/cgi-bin/koha/reports/catalogue_stats.pl">Catalogue</a></p>
<p><a href="/cgi-bin/koha/reports/issues_stats.pl">Issues</a></p>
</div>
</p>
</td>
<td>
<div id="bloc25">
<h2 class="reports">Stat wizards</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/acquisitions_stats.pl">Acquisitions</a></li>
<li><a href="/cgi-bin/koha/reports/borrowers_stats.pl">Borrowers</a></li>
<li><a href="/cgi-bin/koha/reports/catalogue_stats.pl">Catalogue</a></li>
<li><a href="/cgi-bin/koha/reports/issues_stats.pl">Circulation</a></li>
</ul>
</div>
<div id="bloc25">
<h2 class="reports">Top Lists</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/bor_issues_top.pl">Most issuing Borrowers</a></li>
<li><a href="/cgi-bin/koha/reports/cat_issues_top.pl">Most issued items</a></li>
</ul>
<h2 class="reports">Outsiders</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/borrowers_out.pl">Borrowers without issues</a></li>
<li><a href="/cgi-bin/koha/reports/catalogue_out.pl">Items not issued</a></li>
</ul>
</div>
<div id="bloc25">
<h2 class="reports">Other stats</h2>
<p>on catalogue</p>
@ -45,26 +41,6 @@
<li><a href="/cgi-bin/koha/reports/issues_avg_stats.pl">Average loan time</a></li>
</ul>
</div>
</td>
<td>
<p>
<div id="bloc25">
<h2 class="reports">Outsiders</h2>
<p><a href="/cgi-bin/koha/reports/borrowers_out.pl">No issue Borrowers</a></p>
<p><a href="/cgi-bin/koha/reports/catalogue_out.pl">No issue Items</a></p>
</div>
</p>
<div id="bloc25">
<h2 class="reports">data exports</h2>
<li>Borrowers</li>
<li>Circulation</li>
<li>Acquisitions</li>
<li>Issues</li>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- TMPL_INCLUDE NAME="reports-bottom.inc" -->

6
koha-tmpl/intranet-tmpl/default/en/search.marc/result.tmpl

@ -13,6 +13,7 @@
<table>
<tr>
<th class="catalogue">Summary</th>
<th class="catalogue">Item type</th>
<th class="catalogue">Item Count</th>
<th class="catalogue">Location</th>
<th class="catalogue">&nbsp;</th>
@ -32,6 +33,9 @@
<!-- TMPL_IF NAME="size" --> ; <!-- TMPL_VAR NAME="size" --><!-- /TMPL_IF -->
</p>
</td>
<td align="center" <!-- TMPL_IF NAME="even" --> class="hilighted"<!-- /TMPL_IF -->>
<p><!-- TMPL_VAR NAME="description" --></p>
</td>
<td align="center" <!-- TMPL_IF NAME="even" --> class="hilighted"<!-- /TMPL_IF -->>
<!-- TMPL_VAR NAME="totitem" -->
</td>
@ -55,7 +59,7 @@
</td>
<td <!-- TMPL_IF NAME="even" -->class="hilighted"<!-- /TMPL_IF -->>
<!-- TMPL_UNLESS name="norequests" -->
<a class="button catalogue" href="/cgi-bin/koha/request.pl?bib=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->">Request</a>
<p><a class="button catalogue" href="/cgi-bin/koha/request.pl?bib=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->">Request</a></p>
<!-- TMPL_ELSE -->
<p>Not Reservable</p>
<!-- /TMPL_UNLESS -->

4
koha-tmpl/intranet-tmpl/default/en/search.marc/search.tmpl

@ -152,6 +152,10 @@
<option value="biblioitems.publicationyear">Publication Year</option>
<option value="biblioitems.publishercode">Publisher</option>
</select>
<select name="desc_or_asc" size="1">
<option value="ASC">Ascending</option>
<option value="DESC">Descending</option>
</select>
</p>
<p>
<input type="submit" value="Start search" class="button catalogue">

93
koha-tmpl/intranet-tmpl/default/en/z3950/searchresult.tmpl

@ -1,45 +1,58 @@
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!-- TMPL_IF NAME="refresh" -->
<meta http-equiv="refresh" content="2; url=<!-- TMPL_VAR NAME="refresh" -->">
<!-- /TMPL_IF -->
<font size="6"><em>Z3950 Search Results</em></font><br />
<table width="80%" cellpadding="3">
<tr valign="center">
<td><font size="4">Biblios found</font></td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="5" width="80%">
<tr valign="top" bgcolor="#ffcc00">
<td><b>Title</b></td>
<td><b>Author</b></td>
<td><b>ISBN</b></td>
<td><b>coming from</b></td>
<td><b>&nbsp;</b></td>
<td>&nbsp;</td>
</tr>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!-- TMPL_IF NAME="refresh" -->
<meta http-equiv="refresh" content="2; url=<!-- TMPL_VAR NAME="refresh" -->">
<!-- /TMPL_IF -->
<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/includes/common-style.css">
<style type="text/css">
.catalogue {
background-color:#ad11ad;
color:#FFFFFF;
background-image:none;
text-decoration: normal;
}
a.catalogue:hover {
background-color: #ad11ad;
color: #FFFFFF;
text-decoration: none;
}
</style>
</head>
<body>
<div id="mainbloc">
<h2 class="catalogue">Z3950 Search Results</h2>
<!-- TMPL_IF NAME="breeding_loop" -->
<!-- TMPL_LOOP NAME="breeding_loop" -->
<tr valign="top" bgcolor="<!-- TMPL_VAR NAME="toggle" -->">
<td><!-- TMPL_VAR NAME="title" --></a>
<td><!-- TMPL_VAR NAME="author" --></td>
<td><!-- TMPL_VAR NAME="isbn" --></td>
<td><!-- TMPL_VAR NAME="file" --></td>
<td><a href="javascript:Import(<!-- TMPL_VAR NAME="id" -->)">Import this biblio</a></td>
</tr>
<!-- /TMPL_LOOP -->
<table>
<tr>
<th class="catalogue">Title</th>
<th class="catalogue">Author</th>
<th class="catalogue">ISBN</th>
<th class="catalogue">coming from</th>
<th class="catalogue">&nbsp;</th>
<th class="catalogue">&nbsp;</th>
</tr>
<!-- TMPL_LOOP NAME="breeding_loop" -->
<tr bgcolor="<!-- TMPL_VAR NAME="toggle" -->">
<td><!-- TMPL_VAR NAME="title" --></td>
<td><!-- TMPL_VAR NAME="author" --></td>
<td><!-- TMPL_VAR NAME="isbn" --></td>
<td><!-- TMPL_VAR NAME="file" --></td>
<td><a href="javascript:Import(<!-- TMPL_VAR NAME="id" -->)">Import this biblio</a></td>
</tr>
<!-- /TMPL_LOOP -->
</table>
<!-- TMPL_ELSE -->
<tr><td colspan="6">Nothing found</td></tr>
<p>Nothing found</p>
<!-- /TMPL_IF -->
</table>
<!-- TMPL_IF NAME="numberpending" --><h1><center>Still <!-- TMPL_VAR NAME="numberpending" --> requests to go</center></h1><!-- /TMPL_IF -->
<br />
<script language="javascript" type="text/javascript">
function Import(GetThisOne) {
opener.document.location= "../acqui.simple/addbiblio.pl?z3950=1&oldbiblionumber=<!-- TMPL_VAR NAME="oldbiblionumber" -->&breedingid="+GetThisOne;
self.close();
return false;
}
</script>
<!-- TMPL_IF NAME="numberpending" --><h1 class="catalogue">Still <!-- TMPL_VAR NAME="numberpending" --> requests to go</h1><!-- /TMPL_IF -->
<script language="javascript" type="text/javascript">
function Import(GetThisOne) {
opener.document.location= "../acqui.simple/addbiblio.pl?z3950=1&oldbiblionumber=<!-- TMPL_VAR NAME="oldbiblionumber" -->&breedingid="+GetThisOne;
self.close();
return false;
}
</script>
</div>
<!-- TMPL_INCLUDE NAME="acquisitions-bottom.inc" -->

10
koha-tmpl/opac-tmpl/css/en/includes/basket.js

@ -295,14 +295,6 @@ function delBasket() {
function quit() {
if (document.myform.records.value) {
var rep = false;
rep = confirm(MSG_CONFIRM_DEL_RECORDS);
if (rep) {
delSelRecords();
}
}
updateBasket(arrayRecords.length-1,top.opener.document);
window.close();
}
@ -313,7 +305,7 @@ function sendBasket() {
var loc = CGIBIN + "opac-sendbasket.pl?" + strCookie;
var optWin="dependant=yes,scrollbars=no,resizable=no,height=300,width=400,top=50,left=100";
var optWin="dependant=yes,scrollbars=no,resizable=no,height=300,width=600,top=50,left=100";
var win_form = open(loc,"win_form",optWin);
}

6
koha-tmpl/opac-tmpl/css/en/includes/opac-basket-top.inc

@ -5,7 +5,11 @@
<head>
<title>OPAC Basket</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang">/includes/opac.css">
<!-- TMPL_IF name="opacstylesheet" -->
<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="opacstylesheet"-->" />
<!-- TMPL_ELSE -->
<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang"-->/includes/opac.css" />
<!-- /TMPL_IF -->
<script type="text/javascript" language="javascript" src="<!-- TMPL_VAR NAME="themelang" -->/includes/basket.js"></script>
<script language="JavaScript" type="text/javascript">
function _(s) { return s } // dummy function for gettext

8
koha-tmpl/opac-tmpl/css/en/includes/opac-top.inc

@ -38,6 +38,14 @@
<a class="menu" href="/cgi-bin/koha/opac-main.pl" title="Koha home page">Home</a>
<span class="spacer">&nbsp;</span>
<a class="menu" href="/cgi-bin/koha/opac-search.pl" title="Advanced search">Advanced search</a>
<!-- TMPL_IF NAME="loggedinusername" -->
<!-- TMPL_IF name="virtualshelves" -->
<a href="/cgi-bin/koha/opac-shelves.pl" class="menu">Virtual shelves</a>
<!-- /TMPL_IF -->
<!-- TMPL_IF name="suggestion" -->
<a href="opac-suggestions.pl" class="menu">View & manage suggestions</a>
<!-- /TMPL_IF -->
<!-- /TMPL_IF -->
<span class="spacer">&nbsp;</span>
<a class="menu" href="/cgi-bin/koha/opac-user.pl" title="Member Home page" >Personal page</a>
<span class="spacer">&nbsp;</span>

1
koha-tmpl/opac-tmpl/css/en/includes/opac.css

@ -340,6 +340,7 @@ select:hover {
/* float:left; */
margin-bottom:10px;
-moz-border-radius: 6px;
display:inline;
}
#menuline {

70
koha-tmpl/opac-tmpl/css/en/opac-MARCdetail.tmpl

@ -64,9 +64,11 @@
<div name="0XX" id="0XX" class="tab" style="visibility:visible">
<!-- TMPL_LOOP name="0XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -74,6 +76,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -81,9 +88,11 @@
<div name="1XX" id="1XX" class="tab">
<!-- TMPL_LOOP name="1XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -91,6 +100,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -98,9 +112,11 @@
<div name="2XX" id="2XX" class="tab">
<!-- TMPL_LOOP name="2XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -108,6 +124,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -115,9 +136,11 @@
<div name="3XX" id="3XX" class="tab">
<!-- TMPL_LOOP name="3XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -125,6 +148,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -132,9 +160,11 @@
<div name="4XX" id="4XX" class="tab">
<!-- TMPL_LOOP name="4XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -142,6 +172,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -149,9 +184,11 @@
<div name="5XX" id="5XX" class="tab">
<!-- TMPL_LOOP name="5XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -159,6 +196,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -166,9 +208,11 @@
<div name="6XX" id="6XX" class="tab">
<!-- TMPL_LOOP name="6XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -176,6 +220,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -183,9 +232,11 @@
<div name="7XX" id="7XX" class="tab">
<!-- TMPL_LOOP name="7XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -193,6 +244,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -200,9 +256,11 @@
<div name="8XX" id="8XX" class="tab">
<!-- TMPL_LOOP name="8XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -210,6 +268,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->
@ -217,9 +280,11 @@
<div name="9XX" id="9XX" class="tab">
<!-- TMPL_LOOP name="9XX" -->
<!-- TMPL_IF name="tag" -->
<p class="MARCtag">
<!-- TMPL_VAR name="tag" -->
</p>
<!-- /TMPL_IF -->
<!-- TMPL_LOOP name="subfield" -->
<p>
<label class="labelsubfield">
@ -227,6 +292,11 @@
<!-- TMPL_VAR name="marc_lib" -->
</label>
<!-- TMPL_VAR name="marc_value" -->
<!-- TMPL_IF name="link" -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/<!-- TMPL_VAR NAME="lang" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->">
</a>
<!-- /TMPL_IF -->
</p>
<!-- /TMPL_LOOP -->
<!-- /TMPL_LOOP -->

2
koha-tmpl/opac-tmpl/css/en/opac-addbookbybiblionumber.tmpl

@ -6,8 +6,6 @@
<h2>Select bookshelf</h2>
<form>
<p><label>Add to virtual shelf</label><!-- TMPL_VAR NAME="CGIbookshelves" --></p>
</form>
<form>
<h2>or add to a new bookshelf</h2>
<p><input type="text" name="newbookshelf" maxlength=40 size=40>
<input type="hidden" name="biblionumber" value="<!-- TMPL_VAR NAME="biblionumber" -->">

44
koha-tmpl/opac-tmpl/css/en/opac-basket.tmpl

@ -4,6 +4,7 @@
<!-- TMPL_ELSE -->
<body style="padding-bottom:20px;">
<!-- TMPL_INCLUDE NAME="opac-basket-menu.inc" -->
<form name='myform'><input type='hidden' name='records'></form>
<!-- /TMPL_IF -->
<div id="mainbloc" style="margin-top:10px;margin-bottom:20px;padding-top:10px;padding-bottom:10px;">
<!-- TMPL_IF NAME="verbose" -->
@ -109,10 +110,24 @@
<td> <!-- TMPL_VAR NAME="url" --></td>
</tr>
<!-- /TMPL_IF -->
<tr>
<th>location</th>
<th>barcode</th>
</tr>
<!-- TMPL_LOOP NAME="ITEM_RESULTS" -->
<tr>
<td>
<!-- TMPL_VAR NAME="branchname" --> <!-- TMPL_VAR NAME="location" -->
<!-- TMPL_IF name="itemcallnumber" -->
(<!-- TMPL_VAR NAME="itemcallnumber" -->)
<!-- /TMPL_IF -->
</td>
<td><!-- TMPL_VAR NAME="barcode" --></td>
</tr>
<!-- /TMPL_LOOP -->
</table>
<!-- /TMPL_LOOP -->
<!-- TMPL_ELSE -->
<!-- TMPL_LOOP NAME="BIBLIO_RESULTS" -->
<div width="100%" style="margin-top:0px;margin-bottom:0px;padding-top:10px;padding-bottom:10px;">
<table cellspacing="0" style="border:0;width:100%;">
@ -126,7 +141,7 @@
<table cellspacing="0">
<!-- BIBLIO RECORD TABLE -->
<tr>
<th>
<th colspan="2">
<a onClick="javascript:openBiblio(<!-- TMPL_VAR name="biblionumber" -->)"><!-- TMPL_VAR NAME="title" --></a>
</th>
</tr>
@ -152,17 +167,26 @@
<!-- TMPL_IF name="url" --><b>URL:</b> <!-- TMPL_VAR NAME="url" --><br><!-- /TMPL_IF -->
</td>
</tr>
<tr>
<th>location</th>
<th>barcode</th>
</tr>
<!-- TMPL_LOOP NAME="ITEM_RESULTS" -->
<tr>
<td>
<!-- TMPL_VAR NAME="branchname" --> <!-- TMPL_VAR NAME="location" -->
<!-- TMPL_IF name="itemcallnumber" -->
(<!-- TMPL_VAR NAME="itemcallnumber" -->)
<!-- /TMPL_IF -->
</td>
<td><!-- TMPL_VAR NAME="barcode" --></td>
</tr>
<!-- /TMPL_LOOP -->
</table>
</td>
</tr>
</td></tr>
</table>
</div>
</div>
<!-- /TMPL_LOOP -->
<!-- /TMPL_IF -->
</div>
<!-- TMPL_UNLESS NAME="print_basket" -->
<!-- TMPL_INCLUDE NAME="opac-basket-menu.inc" -->
<FORM name='myform'><INPUT type='hidden' name='records'></FORM>
<!-- /TMPL_UNLESS -->
<!-- TMPL_INCLUDE NAME="opac-basket-bottom.inc" -->

46
koha-tmpl/opac-tmpl/css/en/opac-detail.tmpl

@ -34,7 +34,6 @@
<!-- TMPL_LOOP NAME="BIBLIO_RESULTS" -->
<h1><!-- TMPL_VAR NAME="title" --> <!-- TMPL_VAR NAME="class" --></h1>
<p>
<div id="bibliobloc">
<table cellspacing="0">
<!-- BIBLIO RECORD TABLE -->
@ -46,37 +45,40 @@
<tr>
<td>
<!-- TMPL_IF name="subtitles" -->
<label><b>Subtitle(s):</b> </label>
<p><label><b>Subtitle(s):</b> </label>
<!-- TMPL_LOOP name="subtitles" -->
<!-- TMPL_VAR NAME="subtitle" --> ;
<!-- /TMPL_LOOP -->
<br />
</p>
<!-- /TMPL_IF -->
<!-- TMPL_IF name="author" --><label><b>Author:</b> </label><!-- TMPL_VAR NAME="author" --><br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="additional" --><label><b>Additional Author:</b></label><!-- TMPL_VAR NAME="additional" --><br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="publishercode" --><label><b>Published by :</b></label><!-- /TMPL_IF --> <!-- TMPL_VAR NAME="publishercode" --><br />
<!-- TMPL_IF name="publicationyear" --><label><b>in </b></label><!-- /TMPL_IF --><!-- TMPL_VAR NAME="publicationyear" -->
<!-- TMPL_IF name="pages" -->, <!-- /TMPL_IF --><!-- TMPL_VAR name="pages" -->
<!-- TMPL_IF name="size" -->, <!-- /TMPL_IF --><!-- TMPL_VAR name="size" --><br />
<!-- TMPL_IF name="isbn" --><label><b>ISBN:</b> </label><!-- TMPL_VAR NAME="isbn" --><br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="seriestitle" --><label><b>Collection:</b> </label><!-- TMPL_VAR NAME="seriestitle" --><br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="subjects" --><label><b>Subject(s):</b> </label>
<!-- TMPL_IF name="author" --><p><label><b>Author:</b> </label><!-- TMPL_VAR NAME="author" --></p><!-- /TMPL_IF -->
<!-- TMPL_IF name="additional" --><p><label><b>Additional Author:</b></label><!-- TMPL_VAR NAME="additional" --></p><!-- /TMPL_IF -->
<p><!-- TMPL_IF name="publishercode" --><label><b>Published by :</b></label><!-- /TMPL_IF --> <!-- TMPL_VAR NAME="publishercode" --></p>
<p>
<!-- TMPL_IF name="publicationyear" --><label><b>in </b></label><!-- /TMPL_IF --><!-- TMPL_VAR NAME="publicationyear" -->
<!-- TMPL_IF name="pages" -->, <!-- /TMPL_IF --><!-- TMPL_VAR name="pages" -->
<!-- TMPL_IF name="size" -->, <!-- /TMPL_IF --><!-- TMPL_VAR name="size" -->
</p>
<!-- TMPL_IF name="isbn" --><p><label><b>ISBN:</b> </label><!-- TMPL_VAR NAME="isbn" --></p><!-- /TMPL_IF -->
<!-- TMPL_IF name="issn" --><p><label><b>ISSN:</b> </label><!-- TMPL_VAR NAME="issn" --></p><!-- /TMPL_IF -->
<!-- TMPL_IF name="seriestitle" --><p><label><b>Collection:</b> </label><!-- TMPL_VAR NAME="seriestitle" --> <!-- TMPL_IF name="volume" -->vol. <!-- TMPL_VAR name="volume" --><!-- /TMPL_IF --></p><!-- /TMPL_IF -->
<!-- TMPL_IF name="subjects" --><p><label><b>Subject(s):</b> </label></p>
<!-- TMPL_LOOP name="subjects" -->
<a href="/cgi-bin/koha/opac-search.pl?op=do_search&marclist=bibliosubject.subject&and_or=and&operator=contains&value=<!-- TMPL_VAR NAME="subject" escape="HTML"-->"><!-- TMPL_VAR NAME="subject" --></a>, <!-- /TMPL_LOOP -->
<br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="copyrightdate" --><label><b>Year :</b> </label><!-- TMPL_VAR NAME="copyrightdate" --><br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="notes" --><label><b>Notes:</b> </label><!-- TMPL_VAR NAME="notes" --><br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="unititle" --><label><b>Unititle:</b> </label><!-- TMPL_VAR NAME="unititle" --><br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="dewey" --><label><b>Dewey:</b></label><!-- TMPL_VAR name="dewey" --><br /><!-- /TMPL_IF -->
<!-- TMPL_IF name="url" --><label><b>URL:</b> </label><a href="<!-- TMPL_VAR name="url" -->"><!-- TMPL_VAR NAME="url" --></a><br /><!-- /TMPL_IF -->
<label><b>Item type : </b></label>
<p><a href="/cgi-bin/koha/opac-search.pl?op=do_search&marclist=bibliosubject.subject&and_or=and&operator=contains&value=<!-- TMPL_VAR NAME="subject" escape="HTML"-->"><!-- TMPL_VAR NAME="subject" --></a>, </p> <!-- /TMPL_LOOP -->
<!-- /TMPL_IF -->
<!-- TMPL_IF name="copyrightdate" --><p><label><b>Year :</b> </label><!-- TMPL_VAR NAME="copyrightdate" --></p><!-- /TMPL_IF -->
<!-- TMPL_IF name="notes" --><p><label><b>Notes:</b> </label><!-- TMPL_VAR NAME="notes" --></p><!-- /TMPL_IF -->
<!-- TMPL_IF name="unititle" --><p><label><b>Unititle:</b> </label><!-- TMPL_VAR NAME="unititle" --></p><!-- /TMPL_IF -->
<!-- TMPL_IF name="dewey" --><p><label><b>Dewey:</b></label><!-- TMPL_VAR name="dewey" --></p><!-- /TMPL_IF -->
<!-- TMPL_IF name="url" --><p><label><b>URL:</b> </label><a href="<!-- TMPL_VAR name="url" -->"><!-- TMPL_VAR NAME="url" --></a></p><!-- /TMPL_IF -->
<p><label><b>Item type : </b></label>
<!-- TMPL_IF name="description" -->
<!-- TMPL_VAR name="description" -->
<!-- TMPL_ELSE -->
<!-- TMPL_VAR NAME="itemtype" -->
<!-- /TMPL_IF -->
<br/>
<b>Total Number of Items:</b> <!-- TMPL_VAR NAME="count" -->
</p>
<p><b>Total Number of Items:</b> <!-- TMPL_VAR NAME="count" --></p>
</td>
</tr>
</table>

17
koha-tmpl/opac-tmpl/css/en/opac-main.tmpl

@ -45,7 +45,8 @@
<input type="hidden" name="operator" value="=" />
<input type="hidden" name="op" value="do_search" />
<input type="hidden" name="type" value="opac" />
<input type="hidden" name="orderby" value="biblio.timestamp desc">
<input type="hidden" name="orderby" value="biblio.timestamp" />
<input type="hidden" name="desc_or_asc" value="desc" />
<input type="submit" value="OK" class="button" />
</p>
</form>
@ -72,12 +73,14 @@
<p><a href="/cgi-bin/koha/opac-user.pl">Log in to Koha</a> to have personal options.</p>
<!-- /TMPL_IF -->
<form action="/cgi-bin/koha/changelanguage.pl" method="post">
<select name="language">
<TMPL_LOOP NAME="languages">
<option value="<TMPL_VAR NAME="language">"><TMPL_VAR NAME="language"></option>
</TMPL_LOOP>
</select>
<input type="submit" value="Change Language" class="button">
<p>
<select name="language">
<TMPL_LOOP NAME="languages">
<option value="<TMPL_VAR NAME="language">"><TMPL_VAR NAME="language"></option>
</TMPL_LOOP>
</select>
<input type="submit" value="Change Language" class="button" />
</p>
</form>
<p class="copyright">
This Library is powered by <a href="http://www.koha.org">Koha</a> free software ILS, and compliant with web standards

10
koha-tmpl/opac-tmpl/css/en/opac-search.tmpl

@ -113,7 +113,8 @@
<input type="hidden" name="operator" value="<=" />
<input type="text" name="value" size="6" maxlength="4" onchange="sql_update()" />
</p>
<p>Results per page :
<p>
<label class="label20">Results per page</label>
<select name="resultsperpage" size="1">
<option value="20">20</option>
<option value="50">50</option>
@ -130,7 +131,12 @@
<option value="biblioitems.publishercode">Publisher</option>
<option value="biblio.timestamp desc">Acquisition date</option>
</select>
</p>
<select name="desc_or_asc" size="1">
<option value="ASC">Ascending</option>
<option value="DESC">Descending</option>
</select>
</p>
</div>
<p>
<input type="submit" value="Start search" class="button catalogue" />

8
koha-tmpl/opac-tmpl/css/en/opac-searchresults.tmpl

@ -42,6 +42,7 @@
<table>
<tr>
<th colspan="2">Summary</th>
<th>Item type</th>
<th>Item Count</th>
<th>Location</th>
<th>&nbsp;</th>
@ -73,6 +74,9 @@
<!-- TMPL_IF name="timestamp" --> <i>(modified on <!-- TMPL_VAR name="timestamp" -->)</i><!-- /TMPL_IF -->
</p>
</td>
<td align="center" <!-- TMPL_IF name="even" --> class="hilighted"<!-- /TMPL_IF -->>
<!-- TMPL_VAR name="description" -->
</td>
<td align="center" <!-- TMPL_IF name="even" --> class="hilighted"<!-- /TMPL_IF -->>
<!-- TMPL_VAR name="totitem" -->
</td>
@ -96,9 +100,7 @@
</td>
<td <!-- TMPL_IF name="even" -->class="hilighted"<!-- /TMPL_IF -->>
<!-- TMPL_UNLESS NAME="norequests" -->
<a class="transparent" href="/cgi-bin/koha/opac-reserve.pl?bib=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->">Request</a>
<!-- TMPL_ELSE -->
Not Reservable
<a class="button" href="/cgi-bin/koha/opac-reserve.pl?bib=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->">Request</a>
<!-- /TMPL_UNLESS -->
</td>
</tr>

3
koha-tmpl/opac-tmpl/css/en/opac-sendbasket.tmpl

@ -29,6 +29,9 @@ Dewey: <!-- TMPL_VAR name="dewey" --><!-- /TMPL_IF --><!-- TMPL_IF name="classi
Classification: <!-- TMPL_VAR name="classification" --><!-- /TMPL_IF --><!-- TMPL_IF name="lccn" -->
LCCN: <!-- TMPL_VAR name="lccn" --><!-- /TMPL_IF --><!-- TMPL_IF name="url" -->
URL : <!-- TMPL_VAR NAME="url" --><!-- /TMPL_IF -->
Items : <!-- TMPL_LOOP NAME="ITEM_RESULTS" -->
<!-- TMPL_VAR NAME="branchname" --> <!-- TMPL_VAR NAME="location" --> <!-- TMPL_IF name="itemcallnumber" -->(<!-- TMPL_VAR NAME="itemcallnumber" -->)<!-- /TMPL_IF --> <!-- TMPL_VAR NAME="barcode" -->
<!-- /TMPL_LOOP -->
---------------------------------------------
<!-- /TMPL_LOOP -->
<END_MESSAGE>

6
koha-tmpl/opac-tmpl/css/en/opac-sendbasketform.tmpl

@ -10,14 +10,14 @@
<!-- /TMPL_IF -->
<!-- TMPL_ELSE -->
<form action="<!-- TMPL_VAR NAME="url" -->" method="post">
<p><label>mail sent by</label><input name="email_sender" size="25" /></p>
<p><label>E-mail address</label><input name="email_add" size="25" /></p>
<p><label class="label100">mail sent by</label><input name="email_sender" size="25" /></p>
<p><label class="label100">E-mail address</label><input name="email_add" size="25" /></p>
<p><label>&nbsp;</label><input type="submit" value="Send" class="button" /></p>
<input type='hidden' name="bib_list" value="<!-- TMPL_VAR NAME="bib_list" -->" />
</form>
<!-- /TMPL_IF -->
</div>
<div id="bottombloc">
<p><a href="javascript:this.close()">Close</a></p>
<p><a href="javascript:this.close()" class="button">Close</a></p>
</div>
<!-- TMPL_INCLUDE NAME="opac-basket-bottom.inc" -->

39
koha-tmpl/opac-tmpl/css/en/opac-user.tmpl

@ -4,10 +4,11 @@
<div class="bloc20">
<h2>Are our records correct?</h2>
<p>Library Card: <!-- TMPL_VAR NAME="cardnumber" --> </p>
<p><!-- TMPL_VAR NAME="firstname" --> <!-- TMPL_VAR NAME="surname" --> (<!-- TMPL_VAR NAME="title" -->) </p>
<p><!-- TMPL_VAR NAME="streetaddress" -->, <!-- TMPL_VAR NAME="city" --></p>
<p><!-- TMPL_VAR NAME="phone" --> (hm)</p>
<p><!-- TMPL_VAR NAME="faxnumber" --> (wk)</p>
<p><!-- TMPL_VAR NAME="title" --> <!-- TMPL_VAR NAME="firstname" --> <!-- TMPL_VAR NAME="surname" --></p>
<p><!-- TMPL_VAR NAME="streetaddress" -->, <!-- TMPL_VAR NAME="zipcode" --> <!-- TMPL_VAR NAME="city" --></p>
<p><!-- TMPL_VAR NAME="physstreet" -->, <!-- TMPL_VAR NAME="homezipcode" --> <!-- TMPL_VAR NAME="streetcity" --></p>
<p><!-- TMPL_VAR NAME="phone" --> <!-- TMPL_IF name="phone" -->(hm)<!-- /TMPL_IF --></p>
<p><!-- TMPL_VAR NAME="faxnumber" --> <!-- TMPL_IF name="fawnumber" -->(wk)<!-- /TMPL_IF --></p>
<p><!-- TMPL_VAR NAME="emailaddress" --></p>
<p><a href="/cgi-bin/koha/opac-userupdate.pl" class="button">Update Record</a></p>
</div>
@ -59,15 +60,27 @@
<th>Renewable</th>
</tr>
<!-- TMPL_LOOP NAME="ISSUES" -->
<tr>
<td><!-- TMPL_VAR NAME="title" --></td>
<td><!-- TMPL_VAR NAME="author" --></td>
<td><!-- TMPL_VAR NAME="date_due" --></td>
<td><!-- TMPL_VAR NAME="itemtype" --></td>
<td><!-- TMPL_VAR NAME="barcode" --></td>
<td><!-- TMPL_IF NAME="charges" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td>
<td><!-- TMPL_IF NAME="status" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td>
</tr>
<!-- TMPL_IF name="overdue"-->
<tr>
<td><!-- TMPL_VAR NAME="title" --></td>
<td><!-- TMPL_VAR NAME="author" --></td>
<td><b>OVERDUE <!-- TMPL_VAR NAME="date_due" --></b></td>
<td><!-- TMPL_VAR NAME="itemtype" --></td>
<td><!-- TMPL_VAR NAME="barcode" --></td>
<td><!-- TMPL_IF NAME="charges" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td>
<td><!-- TMPL_IF NAME="status" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td>
</tr>
<!-- TMPL_ELSE -->
<tr>
<td><!-- TMPL_VAR NAME="title" --></td>
<td><!-- TMPL_VAR NAME="author" --></td>
<td><!-- TMPL_VAR NAME="date_due" --></td>
<td><!-- TMPL_VAR NAME="itemtype" --></td>
<td><!-- TMPL_VAR NAME="barcode" --></td>
<td><!-- TMPL_IF NAME="charges" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td>
<td><!-- TMPL_IF NAME="status" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td>
</tr>
<!-- /TMPL_IF -->
<!-- /TMPL_LOOP -->
</table>
<!-- TMPL_ELSE -->

19
members/memberentry.pl

@ -52,7 +52,7 @@ my ($template, $loggedinuser, $cookie)
debug => 1,
});
my $member=$input->param('bornum');
my $borrowernumber=$input->param('borrowernumber');
my $actionType=$input->param('actionType') || '';
my $modify=$input->param('modify');
my $delete=$input->param('delete');
@ -100,7 +100,7 @@ if ($op eq 'add' or $op eq 'modify') {
push @errors,"ERROR_surname";
$nok=1;
}
if ($data{'address'} eq ''){
if ($data{'streetaddress'} eq ''){
push @errors, "ERROR_address";
$nok=1;
}
@ -120,7 +120,13 @@ if ($op eq 'add' or $op eq 'modify') {
if (my $data2=$sth->fetchrow_hashref){
&modmember(%data);
}else{
$data{borrowernumber} = &newmember(%data);
$borrowernumber = &newmember(%data);
}
if($destination eq "circ"){
print $input->redirect("/cgi-bin/koha/circ/circulation.pl?findborrower=$data{'cardnumber'}");
} else {
print $input->redirect("/cgi-bin/koha/members/moremember.pl?bornum=$borrowernumber");
}
if($destination eq "circ"){
@ -131,7 +137,7 @@ if ($op eq 'add' or $op eq 'modify') {
}
}
if ($delete){
print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$member");
print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$borrowernumber");
} else { # this else goes down the whole script
if ($actionType eq 'Add'){
$template->param( addAction => 1);
@ -146,7 +152,7 @@ if ($delete){
$data->{$key}=$input->param($key);
}
} else {
$data=borrdata('',$member);
$data=borrdata('',$borrowernumber);
}
if ($actionType eq 'Add'){
$template->param( updtype => 'I');
@ -243,7 +249,8 @@ if ($delete){
initials => $data->{'initials'},
ethcatpopup => $ethcatpopup,
catcodepopup => $catcodepopup,
streetaddress => $data->{'physstreet'},
streetaddress => $data->{'streetaddress'},
physstreet => $data->{'physstreet'},
zipcode => $data->{'zipcode'},
streetcity => $data->{'streetcity'},
homezipcode => $data->{'homezipcode'},

97
misc/migration_tools/buildCOUNTRY.pl

@ -0,0 +1,97 @@
#!/usr/bin/perl
# script that rebuild thesaurus from biblio table.
# delete FROM `marc_subfield_table` WHERE tag = "606" AND subfieldcode = 9;
use strict;
# Koha modules used
# use MARC::File::USMARC;
# use MARC::Record;
# use MARC::Batch;
use C4::Context;
use C4::Biblio;
use C4::AuthoritiesMarc;
use Time::HiRes qw(gettimeofday);
use Getopt::Long;
my ( $fields, $number,$language) = ('',0);
my ($version, $verbose, $test_parameter, $field,$delete,$subfields);
GetOptions(
'h' => \$version,
'd' => \$delete,
't' => \$test_parameter,
's:s' => \$fields,
'v' => \$verbose,
'l:s' => \$language,
);
if ($version or !$fields) {
print <<EOF
Small script to recreate the COUNTRY list in authorised values from existing countries in the catalogue.
This script is useful when you migrate your datas with bulkmarcimport.pl as it populates parameters tables that are not modified by bulkmarcimport.
parameters :
\th : this version/help screen
\ts : the field or field list where the lang codes are stored.
\td : delete every entry of COUNTRY category before doing work.
\tl : the language of the language list (fr or en for instance)
The table is populated with iso codes and meaning (in french).
If the complete language name is unknown, the code is used instead and you will be warned by the script
SAMPLES :
./buildCOUNTRY.pl -d -s "('102a')"
EOF
;#
exit;
}
my %codesiso;
%codesiso = (
'eng' => 'english',
'fre' => 'french'
);
%codesiso = (
'an' => 'Antilles Néerlandaises',
'at' => 'Autriche',
'cr' => 'Costa Rica',
'er' => 'Erythrée',
'fr' => ' France',
'in' => 'Inde',
'is' => 'Islande',
'lt' => 'Lituanie',
'nd' => 'Pays Bas',
'nf' => 'Norfolk',
'ng' => 'Nigéria',
'pa' => 'Manama',
'pn' => 'Pitcairn',
're' => 'Réunion (ile)',
'sp' => 'Espagne',
'us' => 'Etats Unis',
) if $language eq 'fr';
my $dbh = C4::Context->dbh;
if ($delete) {
print "deleting country list\n";
$dbh->do("delete from authorised_values where category='COUNTRY'");
}
if ($test_parameter) {
print "TESTING MODE ONLY\n DOING NOTHING\n===============\n";
}
my $starttime = gettimeofday;
my $sth = $dbh->prepare("SELECT count(*) as tot,subfieldvalue FROM marc_subfield_table WHERE tag + subfieldcode IN $fields group by subfieldvalue");
$sth->execute;
my $i=1;
print "=========================\n";
my $sth2 = $dbh->prepare("insert into authorised_values (category, authorised_value, lib) values (?,?,?)");
while (my ($tot,$langue) = $sth->fetchrow) {
$sth2->execute('COUNTRY',$langue,$langue?$codesiso{$langue}:$langue);
print "$langue is unknown is iso list (used $tot times)\n" unless $codesiso{$langue};
}
print "=========================\n";

149
misc/overduenotices.pl

@ -38,20 +38,37 @@ use strict;
use C4::Context;
use C4::Date;
use Mail::Sendmail; # comment out if not doing e-mail notices
use Getopt::Long;
print "This script will send overdue notices by e-mail and prepare a file of\nnotices for printing if the borrower does not have e-mail.\nYou MUST edit this script for your library BEFORE you run it for the first time!\nSee the comments in the script for directions on changing the script.\n\nDo you wish to continue? (y/n) ";
chomp($_ = <STDIN>);
die unless (/^y/i); # comment these lines out once you've made the changes
my ($confirm, $nomail);
GetOptions(
'c' => \$confirm,
'n' => \$nomail,
);
unless ($confirm) {
print qq|
This script will send overdue notices by e-mail and prepare a file of\nnotices for printing if the borrower does not have e-mail.
You MUST edit this script for your library BEFORE you run it for the first time!
See the comments in the script for directions on changing the script.
This script has 2 parameters :
-c to confirm and remove this help & warning
-n to avoid sending any mail. Instead, all mail messages are printed on screen. Usefull for testing purposes.
Do you wish to continue? (y/n)
|;
chomp($_ = <STDIN>);
exit unless (/^y/i); # comment these lines out once you've made the changes
}
#
# BEGINNING OF PARAMETERS
#
my $mindays = 7 # the notice will be sent after mindays days (grace period)
my $maxdays = 30 # issues being more than maxdays late are managed somewhere else. (borrower probably suspended)
my $smtpserver = 'smtp.yourserver.com'; # your smtp server (the server who sent mails)
my $from = 'library@yourname.org';
my $mailtitle = 'Overdue library items';
my $librarymail = 'library@yourname.org'; # all notices without mail are sent (in 1 mail) to this mail address. They must then be managed manually.
my $mindays = 7; # the notice will be sent after mindays days (grace period)
my $maxdays = 30; # issues being more than maxdays late are managed somewhere else. (borrower probably suspended)
my $smtpserver = 'smtp.server.com'; # your smtp server (the server who sent mails)
my $from = 'librarianname@library.com'; # all the mails sent to the borrowers will appear coming from here.
my $mailtitle = 'Overdues'; # the title of the mails
my $librarymail = 'librarystaff@library.com'; # all notices without mail are sent (in 1 mail) to this mail address. They must then be managed manually.
# this parameter (the last) is the text of the mail that is sent.
# this text contains fields that are replaced by their value. Those fields must be written between brackets
# The following fields are available :
@ -67,97 +84,46 @@ unshift @{$Mail::Sendmail::mailcfg{'smtp'}} , $smtpserver;
# set your own mail server name here
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare ("SELECT issues.borrowernumber,firstname,surname,streetaddress,physstreet,city,zipcode,emailaddress FROM issues,borrowers,categorie WHERE returndate IS NULL AND TO_DAYS(NOW())-TO_DAYS(date_due) BETWEEN $mindays and $maxdays AND issues.borrowernumber=borrowers.borrowernumber and borrowers.categorycode=categories.categorycode and categories.overduenoticerequired=1 ORDER BY issues.borrowernumber");
my $first_borrno = $dbh->prepare ("SELECT borrowernumber FROM issues WHERE returndate IS NULL AND TO_DAYS(NOW())-TO_DAYS(date_due) BETWEEN $mindays and $maxdays ORDER BY borrowernumber");
my $get_date = $dbh->prepare ("SELECT CURDATE()");
$get_date->execute;
my $daydate = $get_date->fetchrow_arrayref;
my $rawdate = $daydate->[0];
my $date = format_date($rawdate);
$first_borrno->execute; # get first borrowernumber
my $firstborr = $first_borrno->fetchrow_arrayref;
my $borrowernumber = $firstborr->[0];
$first_borrno->finish;
my $sth = $dbh->prepare ("SELECT count(*), issues.borrowernumber,firstname,surname,streetaddress,physstreet,city,zipcode,emailaddress FROM issues,borrowers,categories WHERE returndate IS NULL AND TO_DAYS(NOW())-TO_DAYS(date_due) BETWEEN 0 and 500 AND issues.borrowernumber=borrowers.borrowernumber and borrowers.categorycode=categories.categorycode and categories.overduenoticerequired=1 group by issues.borrowernumber");
$sth->execute;
my $itemcount = 0;
my $row;
#
# my $itemcount = 0;
# my $row;
my $count = 0; # to keep track of how many notices are printed
my $e_count = 0; # and e-mailed
my ($firstname,$lastname,$address1,$address2,$city,$postcode,$email);
my ($itemcount,$borrnum,$firstname,$lastname,$address1,$address2,$city,$postcode,$email);
while ($row = $sth->fetchrow_arrayref) {
my $borrno = $row->[0];
if ($itemcount==0) { # store values for first borrower
$firstname = $row->[1];
$lastname = $row->[2];
$address1 = $row->[3];
$address2 = $row->[4];
unless ($address2) {
$address2 = '';
}
$city = $row->[5];
unless ($city) {
$city = '';
}
$postcode = $row->[6];
unless ($postcode) {
$postcode = '';
}
$email = $row->[7];
}
if ($borrno == $borrowernumber) { # next borrower yet?
$itemcount++;
next;
} else {
$borrowernumber = $borrno;
while (($itemcount,$borrnum,$firstname,$lastname,$address1,$address2,$city,$postcode,$email) = $sth->fetchrow) {
my $notice = $mailtext;
$notice =~ s/\<date\>/$date/g;
$notice =~ s/\<itemcount\>/$itemcount/g;
$notice =~ s/\<firstname\>/$firstname/g;
$notice =~ s/\<lastname\>/$lastname/g;
$notice =~ s/\<address1\>/$address1/g;
$notice =~ s/\<address2\>/$address2/g;
$notice =~ s/\<address3\>/$address3/g;
$notice =~ s/\<city\>/$city/g;
$notice =~ s/\<postcode\>/$postcode/g;
# if not using e-mail notices, comment out the following lines
if ($email) { # or you might check for borrowers.preferredcont
my %mail = ( To => $email,
From => $from,
Subject => $mailtitle,
Message => $notice,
);
sendmail(%mail);
if ($nomail) {
print "TO => $email\n";
print "FROM => $from\n";
print "SUBJECT => $mailtitle\n";
print "MESSAGE => $notice\n";
} else {
my %mail = ( To => $email,
From => $from,
Subject => $mailtitle,
Message => $notice,
);
sendmail(%mail);
}
$e_count++
} else {
# if not using e-mail notices, comment out the above lines
print $notice;
print OUTFILE $notice;
$count++;
} # and comment this one out, too, if not using e-mail
$itemcount = 1; #start the count for next notice
$firstname = $row->[1]; # and store the new values
$lastname = $row->[2];
$address1 = $row->[3];
$address2 = $row->[4];
unless ($address2) {
$address2 = '';
}
$city = $row->[5];
unless ($city) {
$city = '';
}
$postcode = $row->[6];
unless ($postcode) {
$postcode = '';
}
$email = $row->[7];
}
}
$sth->finish;
close OUTFILE;
@ -165,13 +131,20 @@ close OUTFILE;
if ($count) {
open ODUES, "overdues" or die "Cannot open file overdues: $!";
my $notice = "$e_count overdue notices e-mailed\n";
my $notice .= "$count overdue notices in file for printing\n\n";
my $notice .= <ODUES>;
my %mail = ( To => $email,
From => $from,
Subject => 'Koha overdues',
Message => $notice,
);
sendmail(%mail);
$notice .= "$count overdue notices in file for printing\n\n";
$notice .= <ODUES>;
if ($nomail) {
print "TO => $email\n";
print "FROM => $from\n";
print "SUBJECT => Koha overdue\n";
print "MESSAGE => $notice\n";
} else {
my %mail = ( To => $email,
From => $from,
Subject => 'Koha overdues',
Message => $notice,
);
sendmail(%mail);
}
}

432
misc/release notes/release_notes_222.txt

@ -0,0 +1,432 @@
RELEASE NOTES
=============
Koha is the 1st Open-Source Integrated Library System.
Released at first in New zealand, in 2000 januaray, it is maintained by a team of volunteers from around the globe, the Koha system is a full catalogue, opac, circulation and acquisitions system.
Koha 2.2 is more than 247 000 lines of code, developped by more than 30 differents developpers (excluding translators).
With the 2.2 version, Koha is now a mature product, with a lot of nice features. It's used in more than 50 libraries, from all kinds (public, schools, search, religious...), of all size (from 1 to 8 branches, from 1000 to 300 000 items).
========
WARNINGS
========
* The librarian interface is tested only with mozilla/firefox. Should work (partially) with IE. OPAC should work fine with any navigator.
=======
DIFFS
=======
Diff 2.2.1 => 2.2.2
*******************
DB MODIFS :
***********
(This new chapter in release notes will be in all new releases. It point any change in the DB. All changes are supposed to be handled by the DB updater, but here for your information)
DB structure : none
DB content :
* new systempref MIME (OPENOFFICE.ORG or EXCEL) and delimiter (;). They are used by the Reports module, when exporting a report to a spreadsheet
* new userflags *management* and *tools* to separate systempreferences in 3 differents permissions (see below)
BUGFIXES
***** Critical & Minor mixed
=== ACQUISITION ===
* 3 bugfixes in suggestions :
- major : a suggestion was not shown in acquisition except when ordered by the suggestor itself.
- major : the mail to the suggestor was not sent.
- minor : the name was not shown in accepted by column, in acquisition
* virtual sheves in OPAC :
- The user needed to have librarian rights to be able to go to the virtual shelf page.
- Adding a book to an existing virtual shelf did not work
* when a line was deleted, it was still counted in bookseller number of pending line order (in order.pl).
* a non closed basket could be modified even if the supplier was set "inactive"
=== OPAC ===
* showing marcnotes in opac-detail (bug #920)
=== CATALOGUE ===
* some fixes in authority search (worked, but could fail to return results under certain circumstances)
* libopac now works : in Koha >> parameters >> biblioframework >> modify field or subfield. If you set "opac text" to a different value than librarian text, you'll have different headers/text for MARC fields (for example : "1st responsability" for librarians, "author" for end users)
* removed a limit to 255 char in field length in MARC editor (the DB can handle much more)
* tabs in MARC editor : the active tab is now hilighted & in biblio modif, empty tabs are not shown (as in biblio add)
* bugfixes in permissions (some pages required parameters where they should require editcatalogue)
* the z3950daemon was buggy (forgotten to port a bugfix in 2.0 branch. It works again)
=== CIRCULATION ===
* renewal date was improperly calculated. Now, returndate is calculated from today, not from previous returndate
* display waiting status only if item has arrived at pickup branch. Setting 'atdestination' variable if so. Changes are required in the template to take advantage of this.
* in circulation, when clicking on member, the member page is opened twice (in main window & in a popup). The popup has been removed.
=== BORROWERS ===
* bugfixes in parameters (when modifying a borrower, with alternate address)
* members flags (card lost, debarred, gone no address) are back in default template.
=== ALL ===
* some fixes for date & currency format
IMPROVEMENTS
***** Major
=== STATS ===
* The stat module is here !!! In Reports menu, you now have 4 powerful "wizards" (for catalogue, borrowers, issues and acquisitions). You can define 3 things in a report : what you want in columns, what you want in lines, and filters you want on datas. For issues & acquisitions, you also can choose what you want in each cell (count or amount, or loan length). You can get those results in your borwser, or in your spreadsheet (MS-Excel & OpenOffice.org work fine). This module will continue to be improved to get the possibility to retrieve bulk datas in your spreadsheat. It works quite well, but has still some bugs and weaknesses. You also get some nice "top XXX" stats.
=== CATALOGUE ===
* catalogue, changed the small "search glass" behaviour. It now appears only on subfields that have a "link" value. Avoid useless glasses and removes nothing. **** WARNING **** : if you don't change you MARC parameters, glasses DISAPPEAR, because no subfields have a link value. So you MUST "reactivate" them manually. If you want to enable the search glass on field 225$a (collection in UNIMARC), just put 225a to "link" field (Koha >> parameters >> framework >> 225 field >> subfield >> modify $a >> enter 225a in link input field (without quotes or anything else)
* showing item status in result list. The book status is in items.notforloan (every non 0 value meaning "book not for loan). The item status should be mapped to an item MARC subfield & this subfield should usually be connected to an authorised_value list.
* in authorities search forms, adding a "main entry" field ($a), to limit the search. The "anywhere" field is still here. An option has been added to search "contains" or "start by".
* item status (opac & librarian interfaces) The item status has been improved : It now can be :
- on order (= item has been ordered, but not yet arrived at the library)
- not for loan : if the "notforloan" field is mapped to an authorised value list, the right value is shown. Thus, an item can be "lost" or "being repaired", or whatever you put in the authorised values list. (reminder : the "notforloan" field, when 0 means 'ok, book can be issued', and all other values means 'nok, book can't be issued' (whatever the reason, that can be in the authorised value table)
* in catalogue search, the user can now order asc or desc.
* in catalogue search, the result list now show the itemtype in a column
* in catalogue search, if there is only 1 answer, open it directly, don't show a list of results with just 1 line.
* added an option to duplicate a biblio
* in search before adding a biblio, the search uses the standard Koha API. It means the user don't have to write the title exactly as in biblio.title (empty words are now excluded)
* changed behaviour for long fields : if a field contains more than 200 chars, the field will be edited as a textarea, not as a standard input. More conveinent.
* in item MARC editor, the item list is hidden if empty.
* in item MARC editor, the user can switch easily to the biblio again
* UNIMARC plugin for 4xx fields. In UNIMARC, 4xx are related to links. This plugin works like the authority popup, but search in biblio instead of authorities. To set it up, you must :
- define a 4xx$9 that will contain the biblio number of the linked biblio. In this 4xx$9 subfield, you must fill the "link to" with the field/subfield that is connected to biblio.biblionumber (090a by default).
- define the subfield you want in the 4xx field. This plugins deals "classic link" method (one of the 2 UNIMARC possibilities for links)
- choose one subfield and set unimarc_field_4xx.pl as plugin.
=== TOOLS ===
* added a tool in misc/merge_authority.pl to merge 2 authorities (and modify biblios using them) This script can also be used to update biblios that use an authority that has been modified.
* added a tool in misc/migration_tools/check_marc_definition.pl that can be helpful when you migrate your datas. It compare the datas in the DB and the setting of MARC structure
It show all fields/subfields that are in the MARC DB but NOT in any tab (= fields used but not visible) Usually, this means you made an error in your MARC editor. Sometimes, this is something normal.
* Useful for translators only : modified tmpl_process to copy files that are not translated (like images, css... previously, they were not copied, it had to be done manually. Errors occurs because changes in english css or images were not reported to the translation directory giving a buggy translation)
=== ALL ===
* added a stylesheet for the printer (useful in acquisition basket printing. The doNotPrint style can be used anywhere to remove a part of the screen during printing)
* new permissions : management & tools. You now have 2 new permissions :
- management : means the user can manage library parameters, but NOT system parameters.
- parameters : means the user can manage all parameters (including system parameters : marc structure, authorised values, system preferences. Was the only flag previously existing)
- tools : means the user can import/export datas & edit barcodes.
note that for compatibility reasons, a user having "parameters" can access everything.
* new permission scheme. In every template new variables are available. They are written CAN_user_permission, with permission being one of the permission flag. templates can now show or hidde menu entries depending on user permissions. For example, a user with just circ permissions should have only the "circulation" button on home page. Templates are NOT updated in this version (except for system parameters, as proof of concept), they will be in the next ones. But the scheme is ready.
**** Minor
=== OPAC ===
* added ISSN to simple biblio detail
* added glasses to OPAC marc view, with same behaviour as in librarian interface.
* overdues items are more visible on opac-user page
* removed menu at bottom of basket page. They are badly shown in some browsers
* in biblio basket, showing item info (location, callnumber and barcode)
* if a search give only 1 result, the user reach it directly (without a 1 line list)
=== ACQUISITION ===
* acquisition, module, adding a button to delete a line in order (was possible by setting qty to 0, but it's more user-friendly)
=== CATALOGUE ===
* in authorities, added a "main entry" search field. Will limit the search to the main entry of the main field of the authority (the $a of the tag_to_report field)
=== BORROWERS ===
* Show the current borrower in librarian interface, normal view of a biblio (with a link to jump to borrower page)
=== CIRCULATION ===
* in circulation, adding a button to edit the borrower & go back to the circ screen directly.
=== TOOLS ===
* changes in overdue_notice.pl script :
- moving all parameters at start of script => easier to maintain
- sending overdues for borrowers without mail to a "koha admin mail".
- ignoring borrowers with "overduenoticerequired" set to 0 (= don't send overduenotice)
- removing "print" to have a silent script (ie can be put in crontab)
Diff 2.2.0 => 2.2.1
*******************
BUGFIXES
***** Critical
* fix for http://bugs.koha.org/cgi-bin/bugzilla/show_bug.cgi?id=811 : The OPAC requires uses to log in to view virtual shelves, but it does not require a user with librarian privileges
* multiple biblio subtitles are correctly stored & shown in simple (non-MARC) view, even after a biblio modif.
* multiple main authors are now correctly handled in simple (non-MARC) view
* it was possible to create a cardnumber that was already defined
***** Minor
* in serials module >> add subscription >> select biblio : The next / previous page were invalid.
* in serials module >> add subscription >> select biblio : impossible to report the biblio when there is a quote in it (' was not escaped)
* "waiting" status was often inaccurate for a reserved material (should show "in transit" while not in destination branch)
* issn were not stored correctly in non-MARC DB on biblio modification
* in catalogue, modifs were not stored properly the non-MARC item DB. Affect only libraries without barcodes.
* in thesaurus structure, deleting a tag delete the tag in each authtype, not only in the selected authtype.
* plugin unimarc_225a (seriestitle) did not show the seriestitle list, when there was no ISBN
* in authority structure, trying to delete a tag in an authority type, deleted the tag in the default authority type.
* in authority structure, trying to define the 400$0 created a "400$@" ("subfield" for fields <100)
* many bugfixes for a better mod_perl support
* bug in acquisition : the title was also stored as subtitle.
IMPROVEMENTS
***** Major
* serial subscriptions : modifs to handdle correctly more than 1 subscription of the same biblio. Enter subscription detail in subscription notes (like "for branch XX" or "for 2nd floor"). The subscription details are all shown in OPAC.
* serial subscriptions : you can now delete a subscription that is not yet active (= has only 1 issue in "waiting" state)
* adding series title and publication year limits in opac-search form.
* improvements and fixes in Nelsonville templates
* adding a brief/detailled display in biblio basket view.
**** Minor
* in biblio basket, adding the possibility to open a biblio (in the main window) by clicking on the title
* circulation >> issue : showing borrowernumber code just after the borrower name.
* the search on barcodes has been changed to "start" instead of "contains". It's more logic
* in ISBD & MARC view, codes like itemtypes, authorized values... are shown in complete form, not as code.
* do not show reserve fees if they are not applicable (0)
* show a message for libraries with no reserve possible, when the user clic on "request" button.
* adding a "un-debar" button in circulation screen, to unset "debarred" flag for a borrower (ported from nelsonville templates)
* adding a link to member page to jump to issues page directly (ported from nelsonville templates)
* Adding two print versions of the member details screen (ported from nelsonville templates)
- moremember-print.tmpl is a full-page view with information about the patron, issues, and reserves
- moremember-receipt.tmpl is a brief view with information about issues, designed to be appropriate for a slip printer.
* member detail : adding opac login in main page
* adding notforloan column in admin/itemtypes list
* in unimarc_field_225a plugin (collection chooser), ordering the list alphabetically
* in member search, adding an option to order result by name or cardnumber
* added the price in order history
Diff 2.2RC5 => 2.2.0
********************
BUGFIXES
***** Critical
* rolling back lock_tables_privs = 'Y' during install stage (too many problems) The option is shown in bulkmacimport instead.
* bugfix for the search on a MARC detail, when you clic on the magnifying glass (caused an internal server error)
***** Minor
* error in authority => biblio 'jumper' that make the jump fail (was a remaining ')
* when modifying a biblio, on a repeated field with many subfields, the test to show empty subfields in X>1 was wrong : the missing subfields of the 1st field were repeated.
Example :
606 has $a$x$z
1st is 606$a (so $x$z empty)
2nd is 606$a$x
The marc editor in the 2nd field showed before this fix :
606 $a a_value
$x another_value
$x
$z
(the 2nd $x being useless)
* Authorities : Minor changes in summary "exploding" (the 3 digits AFTER the subfield were not on the right place).
* partial support of the "linkage" MARC feature : if you enter a "link" on a MARC subfield, the magnifying glass won't search on the field, but on the linked field. I agree it's a partial support. Will be improved, but I need to investigate MARC21 & UNIMARC diffs on this topic.
IMPROVEMENTS
***** Major
* New systempref parameter : opacstylesheet If this parameter is set to a stylesheet URL, this stylesheet will be used instead of the opactheme one. With this parameter, you can have your own stylesheet for OPAC, that will be used and kept when you update your version of Koha. The systempref must be a complete URL (http://www.koha.org/stylesheet/somestylesheet.css for example)
* improvements in shelves management in OPAC (synch'ing with librarian interface) : the user can modify a bookshelf, add a book into a bookshelf from the biblio, create a bookshelf "on the fly", from the bookshelf popup.
* new directory migration_tools in $KOHA/misc Will store various migration tools. bulkmarcimport has been moved here.
**** Minor
* minor change in MARCdetail : when a field is repeated, the field header is not repeated but replaced by a nice little empty space.
Diff 2.2RC4 => 2.2RC5
*********************
BUGFIXES
***** Critical
* limiting the number of search term to 8. There was no limit before, but 8 words seems to be the upper limit mySQL can deal with (in less than a second. tested on a DB with 13 000 items) In 2.4, a new DB structure will highly speed things and this limit will be removed. FindDuplicate is activated again.
* bugfixes in french translation (that made cataloguing in french impossible)
* set lock_tables_privs = 'Y' during install stage. Note this requires a mysql version not too old.
***** Minor
* during update, if the user enter a different directory for backup than the default one, the updater does not obey and stores in default directory anyway !
* minor (spelling) fix for adding an organization
* member search (bug 851) : stripping out comma and apostrophe from search terms
* various methods to split subjects (depending on OS, a <CR> / <CR><LF> problem)
IMPROVEMENTS
***** Major
* circulation / issue : adding a button to cancel an issue when a confirmation is required (bug #858)
* circulation / issue : adding a checkbox to confirm reserve cancel when a reserved book is issued by someone else (bug #858)
* virtual shelves : adding feature to create a virtual shelf on the fly, when adding a biblio, and feature to modify a virtual shelf name/status
* catalogue : adding a systempref to define default view in OPAC (either normal, MARC or ISBD). Created automatically during install or update. Check that you have a Koha >> parameters >> systempreferences >> BiblioDefaultView, Variable type : Choice, Variable options : normal|marc|isbd
**** Minor
* an improvement has been done in DB calls that needs a new index. It's automatically added in fresh installs, but for updates, run the following SQL command :
ALTER TABLE `marc_subfield_structure` ADD INDEX ( `kohafield` )
* adding a systempref to define default view in OPAC (either normal, MARC or ISBD). Created automatically during install or update. Check that you have a Koha >> parameters >> systempreferences >> BiblioDefaultView, Variable type : Choice, Variable options : normal|marc|isbd
* the list of authorities types is now ordered by authtypetext. Thus you can use the "space trick" : if you add a space before an authtype text, it's shown first. Useful when you have an authority type that you use more often than others.
* authoritiy list shown in authtypetext order (so authtypetext with a space appear first, hint used everywhere else for lists)
* some minor html changes (like changing "images" numbers in "text" numbers for result list page numbers.
Diff 2.2RC3 => 2.2RC4
*********************
BUGFIXES
***** Critical
1 CRITICAL bug in acquisition (another one...) : when MARC=ON, and an order line is created from an existing biblio (to buy another item), the MARC biblio is lost and replaced by the non marc one (that has a lot less informations...). To solve the problem, the biblio can no more be modified after the order has been placed. Less feature, but more reliable ! (not simple solution to solve this problem. Would imply to rewrite the MARC biblio from the non marc datas, and no API is provided for this yet)
2 CRITICAL bugfix in Biblio.pm, removing &branches declaration (was due to an untested cvs rollback, opac-search.pl was crashing)
3 CRITICAL bugfix in Biblio.pm when MARC=OFF. subjects were stored and immediatly deleted. And not stored correctly in MARC part of the biblio. (thanks to Waylon Robertson)
***** Minor
1 bugfix in updatedatabase (auth_header creation table). Don't affect previous install of 2.2, only upgrades 2.0 => 2.2
2 reading rec : Fixing link to toggle between full and limited display
3 bugfix for moremember.pl that no longer outputed item type for issues
4 defaulting actual cost to estimated cost (was 0 by default)
5 bugfix : in biblio search, - and other signs where not properly managed. Leroy-Beaulieu could not be found
6 the popup of the 210c plugin closes when a collection is choosed
7 bugfix : could not select a biblio in subscription creation if the book was not for loan
8 minor fixes in spelling in subscription
9 adding acquisition in default userflags. This flag can be set for librarians that have access to acquisition
10 in subscription enddate calculation, bugfix when subscription based on number of issues (worked when based on subscription length)
11 in subscription next issue date calculation, bugfix when subscription frequency is 1/quarter.
12 datelastseen is updated when the book is returned
13 moredetail.pl shows incorrect date, incorrectly formatted (bug #689)
14 DuplicateFinder has been disabled : sometimes goes into a looonnnggg lasting loop.
15 when a query returns only one result, adding it to basket did not work.
16 deletion of a suggestion was buggy. Now fixed
17 for installation of Koha under Windows there is a bug with subject splitting. Now fixed. (thanks to Waylon Robertson)
IMPROVEMENTS
***** Major
1 a lot in book shelves
2 Submitting with no barcode in issues should clear for next patron (bug #865)
3 screen added to see late issues from a given bookseller
4 Koha should now work under mod_perl (Release Manager don't use mod_perl. fixes comes from A. Tarallo, Argentina, that ensure Koha works fine with mod_perl with the patches applied)
**** Minor
1 show also item tags into marc list of fields (in librarian search interface)
2 email sent basket : the sender can give it's name, in case the basket is sent to a friend, not to itself
3 removing useless string in isbd view
4 cataloguing, in isbnsearch, after searching a title/ISBN, the librarian can choose the framework (+ it's a cataloguing screen, not an acquisition one)
5 serials : in issues management, the waited/late issues bloc is before the collection state bloc.
6 serials : the intranet note has been removed, it's useless
7 after an authority is added/modified, go to this fresh authority (instead of authority-home)
8 search option in auth-top
9 in OPAC, the itemcallnumber search is a "start by" search (was a contains)
10 opac note is defaulted to '' (was 0, that means nothing)
11 adding blank to relshiploop (altrelationship) loop (Bug ???)
12 when deleting an itemtype, don't check issuingrules, but delete them too
13 For MARC=OFF installation, Waylon submitted a script to rebuild MARC part of the catalogue. It's in misc/updatemarc_subjects.pl (thanks to Waylon Robertson)
Diff 2.2RC2 => 2.2RC3
*********************
* CRITICAL bug in acquisition : biblio badly stored in MARC part of Koha, deleting another biblio...
* CRITICAL problem : the duplicate finder (when adding a biblio) has performances problems under certains circumstances.
* bug #862 fixed : Upgrade does not work (from 2.2RC1 to 2.2RC2)
* bugfix in acquisition, when a line is modified, aqorderbreakdown was duplicated. (Seems it was a mysql return value depending on mysql version)
* bugfix in setting user permissions (they were stored, but not shown correctly after)
* bugfix in translation error for basket sent in OPAC
* bugfix in 225a plugin (editor chooser)
* adding itemcallnumber entry in systempreferences during install
* error in biblio detail showing when MARC=ON (bug from RC2, did not exist before)
* bug in acceptorreject OPAC suggestion (bug from RC2, did not exist before)
* Not really a bug but : stopword must not be empty. If it's empty, the search fail.
* During install, the user can load french and english stopwords if he want.
* French librarian interface seems OK
* addbook (1st page when MARC=ON) is a catalogue screen, not an acquisition one
* The barcode is shown in the list of books issued by a borrower in opac-user page.
Diff 2.2RC1 => 2.2RC2
*********************
* bugfix for import in reservoir : title and isbn where not extracted.
* bugfix in OPAC : it was possible to reserve books that where "notforloan"
* bugfix in circulation : no warning when a reserve was made on a book that you try to issue to someone else.
* bugfix & improvement for catalogue management behaviour when MARC=OFF
* bugfix in bookshelves (in CVS, probably not in official tar.gz)
* bugfix in online help (in CVS, probably not in official tar.gz)
=============
INSTALLATION
=============
* Download the package
* tar xvfz koha-version.tar.gz
* cd koha-version
* ./installer.pl
* READ and FOLLOW the instructions
READING what is on screen during installation is VERY important. Some decisions you make during install stage are very hard to reproduce after.
UPGRADE from previous 2.0.0preX or RCx version
*******
* Download the package
* tar xvfz koha-version.tar.gz
* cd koha-version
* ./koha.upgrade
* Follow the instructions
UPGRADE from previous 1.2.x version :
********
UPGRADE TO A 2.0.0 version before upgrading
UPGRADE from a 2.1.x version is NOT AVAILABLE. Don't install 2.2 on a 2.1.x test database. A lot of DB changes have been done since 2.1.x & cannot be handled by the DB updater.
=============
NEW FEATURES
=============
Koha 2.2 has, of course, all the previous features from Koha (acquisition, cataloguing, circulation, members modules, OPAC, complete MARC support...) plus the following new ones :
General :
*********
* (almost) complete rewrite of librarian GUI : now Koha uses CSS, and is easier to use. However, users of Koha 2.0.0 won't be lost, as the general organisation of the product has not changed.
* Online Help : an online help is available everywhere in the librarian interface. It's complete in the parameters section of Koha and for new features. It will be completed for the rest of the product.
* Better LDAP suport : Koha 2.2 can be "connected" to a LDAP server and get all borrower informations from there (including borrower category where applicable). However, to avoid problems for libraries without LDAP server, the LDAP features have been stored in modules/C4/Auth_with_ldap.pm file. The standard Auth.pm don't use it. If you want LDAP, just perldoc Auth_with_ldap.pm and manually tune your Auth package !
* Auto installer : if you install koha with ./install -i /path/to/auto_install_file, then Koha will be installed almost without question. A very usefull feature for developpers that want to install/uninstall Koha quite often. A sample of auto_install_file is provided in misc/auto_install_file.
* Uninstaller : run misc/uninstall.pl, provide the mysql root password. that's all. Koha is completely deleted and can be reinstalled. With the previous feature, it's a very nice solution for test platform.
* mod_perl : Koha should now work under mod_perl, that gives a big performance boost (Release Manager don't use mod_perl. fixes comes from A. Tarallo, Argentina, that ensure Koha works fine with mod_perl with the patches applied)
* Nelsonville have shared their templates. They are available as NPL theme.
* Language : in this version, only english and french versions are fully functionnal. Spanish and chinese are provided, but not fully functionnal. Polish, German, Arabic, Hebrew, and many other languages have volunteers and should be here in a future 2.2.x
BE CAREFUL with uninstaller :
1- This script does not ask for confirmation after mysql root password.
2- This script uses /etc/koha.conf. If you have more than 1 koha on your server, use /etc/koha.conf for a "deletable-test" one.
Acquisition :
*************
* suggestion : borrowers can suggest items to buy in OPAC. Then, the librarian can manage (accept or refuse) and order them.
* possibility to close a basket, he can't be modified then
* order a basket by publisher or by bookfund/publisher
* search order history
Cataloguing :
*************
* Cataloguing frameworks : you can define as many frameworks as you want. A framework describes how a material is catalogued (which fields, subfields, which constraints on them...)
* MARC authorities : Koha now supports authorities in MARC. You can define the MARC structure for authorities like for biblios.
* New contraints can be set for subfields :
- subfield is hidden : appears in MARC editor, but not in OPAC.
- subfield is an URL : the field can be cliqued
- related fields : a search made on a subfield also uses other subfields automatically. Using this feature, a search on "title" can search title, but also subtitle, uniform title,...
* Item location can now be done on 3 levels : the branch, the location (room), the callnumber.
* The callnumber can now be calculated from the LC, the dewey, or be freely (and manually) entered.
* Duplicate finder : this powerful feature help your cataloguers avoiding duplicate biblios.
* ISBD view : in librarian interface as well as in OPAC biblios can be shown in standard (default) presentation, in MARC (human readable) or ISBD. The ISBD view can be tuned by the librarian team. There is also a systempref to define default view in OPAC (either normal, MARC or ISBD). Created automatically during install or update. Check that you have a Koha >> parameters >> systempreferences >> BiblioDefaultView, Variable type : Choice, Variable options : normal|marc|isbd
* UNIMARC plugin for every 1xx fields : ESNMP have developped all the plugins for UNIMARC fields 1xx. Those fields are coded fields.
Serial cataloguing :
********************
Koha 2.2 manage serial subscriptions and issuing of those subscriptions. (Only a few words to describe a very important & complete module !)
Catalogue search :
******************
* Search in OPAC and librarian interface has been improved. They now are exactly the same.
* Spelling suggestion : before sending a request, the user can ask for spelling suggestion. This shows other forms of words entered that would give results. Give poor results for instance, the Koha team is thinking to a true spellchecking.
* The user can select the order of the results and the number of results shown.
Members :
*********
* The borrowernote field is shown on issue and transfer.
* The textmessaging field appears in OPAC when the user logs in.
Circulation :
*************
* New issuing rules : Issuing can be set for branch / borrower type / item category, by number of days and number of items available.
* "joker" issuing rules : the library can set issuing rules for "any branch" or "any borrower type", or "any item category".
Both issuing rules are cumulative : a library can set issuing rules to 10 books, 5 CD, but 12 total (books or CD).
OPAC :
******
In Koha 2.2, koha has :
* baskets. A basket can be printed or sent by mail to the borrower
* virtual shelves : a virtual shelf can be created and filled by any logged borrower. A given virtual shelf can be private or public. Or even free-for-all.
* language chooser : the borrower can change the language on the fly. The default language being still choosen by the library
* complete CSS definition. With a new systempref parameter : opacstylesheet. If this parameter is set to a stylesheet URL, this stylesheet will be used instead of the opactheme one. With this parameter, you can have your own stylesheet for OPAC, that will be used and kept when you update your version of Koha. The systempref must be a complete URL (http://www.koha.org/stylesheet/somestylesheet.css for example)
Barcode printing :
******************
A new module has been added to the parameters section : barcode printing. It requires the PDF::Api2 Perl package and can print barcode on
============
Koha Future
============
The future of Koha is being discussed on mailing lists and on koha wiki : http://www.saas.nsw.edu.au/koha_wiki/index.php?page=KohaRoadmap2.2.x

6
misc/translator/VerboseWarnings.pm

@ -38,7 +38,7 @@ $VERSION = 0.01;
###############################################################################
use vars qw( $appName $input $input_abbr $pedantic_p $pedantic_tag );
use vars qw( $appName $input $input_abbr $pedantic_p $pedantic_tag $quiet);
use vars qw( $warned $erred );
sub set_application_name ($) {
@ -98,10 +98,10 @@ sub warn_pedantic ($$$) {
my($msg, $lc, $flag) = @_;
my $prefix = construct_warn_prefix("Warning$pedantic_tag", $lc);
$msg .= "\n" unless $msg =~ /\n$/s;
warn "$prefix$msg" if $pedantic_p || !$$flag;
warn "$prefix$msg" if ($pedantic_p || !$$flag) && $quiet;
if (!$pedantic_p) {
$prefix = construct_warn_prefix("Warning$pedantic_tag", undef);
warn $prefix."Further similar negligible warnings will not be reported, use --pedantic for details\n" unless $$flag;
warn $prefix."Further similar negligible warnings will not be reported, use --pedantic for details\n" unless ($$flag || !$quiet);
$$flag = 1;
}
$warned += 1;

65
misc/translator/tmpl_process3.pl

@ -20,7 +20,7 @@ use VerboseWarnings qw( :warn :die );
###############################################################################
use vars qw( @in_files $in_dir $str_file $out_dir );
use vars qw( @in_files $in_dir $str_file $out_dir $quiet );
use vars qw( @excludes $exclude_regex );
use vars qw( $recursive_p );
use vars qw( $pedantic_p );
@ -113,8 +113,8 @@ sub text_replace (**) {
}
}
sub listfiles ($$) {
my($dir, $type) = @_;
sub listfiles ($$$) {
my($dir, $type, $action) = @_;
my @it = ();
if (opendir(DIR, $dir)) {
my @dirent = readdir DIR; # because DIR is shared when recursing
@ -125,9 +125,9 @@ sub listfiles ($$) {
|| (defined $exclude_regex && $dirent =~ /^(?:$exclude_regex)$/)) {
;
} elsif (-f $path) {
push @it, $path if !defined $type || $dirent =~ /\.(?:$type)$/;
push @it, $path if (!defined $type || $dirent =~ /\.(?:$type)$/) || $action eq 'install';
} elsif (-d $path && $recursive_p) {
push @it, listfiles($path, $type);
push @it, listfiles($path, $type, $action);
}
}
} else {
@ -145,7 +145,7 @@ sub mkdir_recursive ($) {
my ($prefix, $basename) = ($dir =~ /\/([^\/]+)$/s)? ($`, $1): ('.', $dir);
mkdir_recursive($prefix) if $prefix ne '.' && !-d $prefix;
if (!-d $dir) {
print STDERR "Making directory $dir...";
print STDERR "Making directory $dir..." unless $quiet;
# creates with rwxrwxr-x permissions
mkdir($dir, 0775) || warn_normal "$dir: $!", undef;
}
@ -173,12 +173,13 @@ Create or update PO files from templates, or install translated templates.
for input (install) or output (create, update)
-x, --exclude=REGEXP Exclude files matching the given REGEXP
--help Display this help and exit
-q, --quiet no output to screen (except for errors)
The -o option is ignored for the "create" and "update" actions.
Try `perldoc $0' for perhaps more information.
Try `perldoc $0 for perhaps more information.
EOF
exit($exitcode);
}
}#`
###############################################################################
@ -186,7 +187,7 @@ sub usage_error (;$) {
for my $msg (split(/\n/, $_[0])) {
print STDERR "$msg\n";
}
print STDERR "Try `$0 --help' for more information.\n";
print STDERR "Try `$0 --help for more information.\n";
exit(-1);
}
@ -198,6 +199,7 @@ GetOptions(
'recursive|r' => \$recursive_p,
'str-file|s=s' => \$str_file,
'exclude|x=s' => \@excludes,
'quiet|q' => \$quiet,
'pedantic-warnings|pedantic' => sub { $pedantic_p = 1 },
'help' => \&usage,
) || usage_error;
@ -236,7 +238,7 @@ if (-d $in_files[0]) {
# input is a directory, generates list of files to process
$in_dir = $in_files[0];
$in_dir =~ s/\/$//; # strips the trailing / if any
@in_files = listfiles($in_dir, $type);
@in_files = listfiles($in_dir, $type, $action);
} else {
for my $input (@in_files) {
die "You cannot specify input files and directories at the same time.\n"
@ -359,30 +361,39 @@ if ($action eq 'create') {
# creates the new tmpl file using the new translation
for my $input (@in_files) {
die "Assertion failed"
unless substr($input, 0, length($in_dir) + 1) eq "$in_dir/";
my $h = TmplTokenizer->new( $input );
$h->set_allow_cformat( 1 );
VerboseWarnings::set_input_file_name $input;
my $target = $out_dir . substr($input, length($in_dir));
my $targetdir = $` if $target =~ /[^\/]+$/s;
mkdir_recursive($targetdir) unless -d $targetdir;
print STDERR "Creating $target...\n";
open( OUTPUT, ">$target" ) || die "$target: $!\n";
text_replace( $h, *OUTPUT );
close OUTPUT;
}
die "Assertion failed"
unless substr($input, 0, length($in_dir) + 1) eq "$in_dir/";
# print "$input / $type\n";
if (!defined $type || $input =~ /\.(?:$type)$/) {
my $h = TmplTokenizer->new( $input );
$h->set_allow_cformat( 1 );
VerboseWarnings::set_input_file_name $input;
my $target = $out_dir . substr($input, length($in_dir));
my $targetdir = $` if $target =~ /[^\/]+$/s;
mkdir_recursive($targetdir) unless -d $targetdir;
print STDERR "Creating $target...\n" unless $quiet;
open( OUTPUT, ">$target" ) || die "$target: $!\n";
text_replace( $h, *OUTPUT );
close OUTPUT;
} else {
# just copying the file
my $target = $out_dir . substr($input, length($in_dir));
my $targetdir = $` if $target =~ /[^\/]+$/s;
mkdir_recursive($targetdir) unless -d $targetdir;
system("cp -f $input $target");
print STDERR "Copying $input...\n" unless $quiet;
}
}
} else {
usage_error('Unknown action specified.');
}
if ($st == 0) {
printf "The %s seems to be successful.\n", $action;
printf "The %s seems to be successful.\n", $action unless $quiet;
} else {
printf "%s FAILED.\n", "\u$action";
printf "%s FAILED.\n", "\u$action" unless $quiet;
}
exit 0;

5
opac/opac-ISBDdetail.pl

@ -78,6 +78,10 @@ my ($template, $loggedinuser, $cookie)
authnotrequired => 1,
debug => 1,
});
$template->param(LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
my $ISBD = C4::Context->preference('ISBD');
# my @blocs = split /\@/,$ISBD;
@ -88,7 +92,6 @@ my $res;
my $bloc = $ISBD;
my $blocres;
foreach my $isbdfield (split /#/,$bloc) {
warn "ISBDFIELD : $isbdfield";
# $isbdfield= /(.?.?.?)/;
$isbdfield =~ /(\d\d\d)\|(.*)\|(.*)\|(.*)/;
my $fieldvalue=$1;

52
opac/opac-MARCdetail.pl

@ -67,7 +67,7 @@ my $bibid = $query->param('bibid');
$bibid = &MARCfind_MARCbibid_from_oldbiblionumber($dbh,$biblionumber) unless $bibid;
$biblionumber = &MARCfind_oldbiblionumber_from_MARCbibid($dbh,$bibid) unless $biblionumber;
my $itemtype = &MARCfind_frameworkcode($dbh,$bibid);
my $tagslib = &MARCgettagslib($dbh,1,$itemtype);
my $tagslib = &MARCgettagslib($dbh,0,$itemtype);
my $record =MARCgetbiblio($dbh,$bibid);
# open template
@ -78,6 +78,10 @@ my ($template, $loggedinuser, $cookie)
authnotrequired => 1,
debug => 1,
});
$template->param(LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
# fill arrays
my @loop_data =();
@ -87,42 +91,54 @@ for (my $tabloop = 0; $tabloop<=10;$tabloop++) {
# loop through each tag
my @fields = $record->fields();
my @loop_data =();
foreach my $field (@fields) {
my @subfields_data;
# foreach my $field (@fields) {
my @subfields_data;
for (my $x_i=0;$x_i<=$#fields;$x_i++) {
# warn "$tabloop => $x_i";
# if tag <10, there's no subfield, use the "@" trick
if ($field->tag()<10) {
next if ($tagslib->{$field->tag()}->{'@'}->{tab} ne $tabloop);
next if ($tagslib->{$field->tag()}->{'@'}->{hidden});
if ($fields[$x_i]->tag()<10) {
next if ($tagslib->{$fields[$x_i]->tag()}->{'@'}->{tab} ne $tabloop);
next if ($tagslib->{$fields[$x_i]->tag()}->{'@'}->{hidden});
my %subfield_data;
$subfield_data{marc_lib}=$tagslib->{$field->tag()}->{'@'}->{lib};
$subfield_data{marc_value}=$field->data();
$subfield_data{marc_lib}=$tagslib->{$fields[$x_i]->tag()}->{'@'}->{lib};
$subfield_data{marc_value}=$fields[$x_i]->data();
$subfield_data{marc_subfield}='@';
$subfield_data{marc_tag}=$field->tag();
$subfield_data{marc_tag}=$fields[$x_i]->tag();
push(@subfields_data, \%subfield_data);
} else {
my @subf=$field->subfields;
my @subf=$fields[$x_i]->subfields;
# loop through each subfield
for my $i (0..$#subf) {
$subf[$i][0] = "@" unless $subf[$i][0];
next if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{tab} ne $tabloop);
next if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{hidden});
next if ($tagslib->{$fields[$x_i]->tag()}->{$subf[$i][0]}->{tab} ne $tabloop);
next if ($tagslib->{$fields[$x_i]->tag()}->{$subf[$i][0]}->{hidden});
my %subfield_data;
$subfield_data{marc_lib}=$tagslib->{$field->tag()}->{$subf[$i][0]}->{lib};
if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{isurl}) {
$subfield_data{marc_lib}=$tagslib->{$fields[$x_i]->tag()}->{$subf[$i][0]}->{lib};
$subfield_data{link}=$tagslib->{$fields[$x_i]->tag()}->{$subf[$i][0]}->{link};
if ($tagslib->{$fields[$x_i]->tag()}->{$subf[$i][0]}->{isurl}) {
$subfield_data{marc_value}="<a href=\"$subf[$i][1]\">$subf[$i][1]</a>";
} else {
$subfield_data{marc_value}=get_authorised_value_desc($field->tag(), $subf[$i][0], $subf[$i][1], '', $dbh);
if ($tagslib->{$fields[$x_i]->tag()}->{$subf[$i][0]}->{authtypecode}) {
$subfield_data{authority}=$fields[$x_i]->subfield(9);
}
$subfield_data{marc_value}=get_authorised_value_desc($fields[$x_i]->tag(), $subf[$i][0], $subf[$i][1], '', $dbh);
}
$subfield_data{marc_subfield}=$subf[$i][0];
$subfield_data{marc_tag}=$field->tag();
$subfield_data{marc_tag}=$fields[$x_i]->tag();
push(@subfields_data, \%subfield_data);
}
}
if ($#subfields_data>=0) {
my %tag_data;
$tag_data{tag}=$field->tag().' -'. $tagslib->{$field->tag()}->{lib};
$tag_data{subfield} = \@subfields_data;
if ($fields[$x_i]->tag() eq $fields[$x_i-1]->tag()) {
$tag_data{tag}="";
} else {
$tag_data{tag}=$fields[$x_i]->tag().' -'. $tagslib->{$fields[$x_i]->tag()}->{lib};
}
my @tmp = @subfields_data;
$tag_data{subfield} = \@tmp;
push (@loop_data, \%tag_data);
undef @subfields_data;
}
}
$template->param($tabloop."XX" =>\@loop_data);

16
opac/opac-addbookbybiblionumber.pl

@ -43,7 +43,7 @@ my ($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "opac-addbookbybiblionumber.tmpl",
query => $query,
type => "opac",
authnotrequired => 0,
authnotrequired => 1,
});
my $x; # for trash
@ -75,11 +75,25 @@ if ($shelfnumber) {
title => $biblios[0]->{'title'},
author => $biblios[0]->{'author'},
CGIbookshelves => $CGIbookshelves,
LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $query, $cookie, $template->output;
}
# $Log$
# Revision 1.2 2005/05/04 09:02:38 tipaul
# synch'ing 2.2 and head
#
# Revision 1.1.2.2 2005/03/25 17:04:27 tipaul
# adding virtual shelves & suggestions button to the top
#
# Revision 1.1.2.1 2005/03/10 08:44:43 tipaul
# bugfix in baskets :
# * The user does not need to have to have librarian rights to use virtual shelves
# * error when adding a biblio to an existing basket
#
# Revision 1.1 2005/01/03 11:09:59 tipaul
# *** empty log message ***
#

10
opac/opac-basket.pl

@ -34,6 +34,7 @@ foreach my $biblionumber (@bibs) {
my $dat = &bibdata($biblionumber);
my ($authorcount, $addauthor) = &addauthor($biblionumber);
my @items = &ItemInfo(undef, $biblionumber, 'opac');
$dat->{'additional'}=$addauthor->[0]->{'author'};
for (my $i = 1; $i < $authorcount; $i++) {
@ -44,12 +45,17 @@ foreach my $biblionumber (@bibs) {
}
$num++;
$dat->{'biblionumber'} = $biblionumber;
$dat->{ITEM_RESULTS} = \@items;
push (@results, $dat);
}
my $resultsarray=\@results;
# my $itemsarray=\@items;
$template->param(BIBLIO_RESULTS => $resultsarray);
$template->param(BIBLIO_RESULTS => $resultsarray,
LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $query, $cookie, $template->output;

5
opac/opac-detail.pl

@ -71,6 +71,9 @@ $template->param(BIBLIO_RESULTS => $resultsarray,
WEB_RESULTS => $webarray,
SITE_RESULTS => $sitearray,
subscriptionsnumber => $subscriptionsnumber,
LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
## Amazon.com stuff
=head
@ -104,3 +107,5 @@ $template->param( REVIEWS => \@reviews );
=cut
output_html_with_http_headers $query, $cookie, $template->output;
output_html_with_http_headers $query, $cookie, $template->output;

2
opac/opac-readingrecord.pl

@ -51,6 +51,8 @@ foreach my $row (@$issues) {
$template->param(count => $count);
$template->param(READING_RECORD => $issues,
LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);

2
opac/opac-reserve.pl

@ -170,6 +170,8 @@ $template->param(TYPE_ROWS => \@typerows);
$width = 2*$width -1;
$template->param(totalwidth => 2*$width-1,
LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
if ($query->param('item_types_selected')) {

18
opac/opac-search.pl

@ -54,7 +54,6 @@ if ($op eq "do_search") {
$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;
@ -73,8 +72,17 @@ if ($op eq "do_search") {
findseealso($dbh,\@tags);
my ($results,$total) = catalogsearch($dbh, \@tags,\@and_or,
\@excluding, \@operator, \@value,
$startfrom*$resultsperpage, $resultsperpage,$orderby, $desc_or_asc);
$startfrom*$resultsperpage, $resultsperpage,$orderby,$desc_or_asc);
if ($total ==1) {
if (C4::Context->preference("BiblioDefaultView") eq "normal") {
print $query->redirect("/cgi-bin/koha/opac-detail.pl?bib=".@$results[0]->{biblionumber});
} elsif (C4::Context->preference("BiblioDefaultView") eq "MARC") {
print $query->redirect("/cgi-bin/koha/MARCdetail.pl?bib=".@$results[0]->{biblionumber});
} else {
print $query->redirect("/cgi-bin/koha/ISBDdetail.pl?bib=".@$results[0]->{biblionumber});
}
exit;
}
($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "opac-searchresults.tmpl",
query => $query,
@ -262,6 +270,8 @@ $template->param( phraseorterm => $phraseorterm );
numbers=>\@numbers,
searchdesc=> $searchdesc,
$defaultview => 1,
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
} else {
@ -311,6 +321,8 @@ $template->param( phraseorterm => $phraseorterm );
$template->param(classlist => $classlist,
CGIitemtype => $CGIitemtype,
CGIbranch => $CGIbranch,
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
}
# ADDED BY JF

2
opac/opac-searchresults.pl

@ -123,6 +123,8 @@ if ($count>$number_of_results) {
$template->param(numbers => $numbers,
LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $query, $cookie, $template->output;

14
opac/opac-sendbasket.pl

@ -41,12 +41,13 @@ if ($email_add) {
my @bibs = split(/\//, $bib_list);
my @results;
my $iso2709;
foreach my $biblionumber (@bibs) {
$template2->param(biblionumber => $biblionumber);
my $dat = &bibdata($biblionumber);
my ($authorcount, $addauthor) = &addauthor($biblionumber);
my @items = &ItemInfo(undef, $biblionumber, 'opac');
$dat->{'additional'}=$addauthor->[0]->{'author'};
for (my $i = 1; $i < $authorcount; $i++) {
@ -54,7 +55,10 @@ if ($email_add) {
}
$dat->{'biblionumber'} = $biblionumber;
$dat->{ITEM_RESULTS} = \@items;
my $record = MARCgetbiblio($dbh,$bibid);
$iso2709 .= $record->as_usmarc();
push (@results, $dat);
}
@ -97,6 +101,7 @@ $mail{'body'}
$boundary--
END_OF_BODY
$mail{PJ} = $iso2709;
# $mail{body} = <<END_OF_BODY;
#$boundary
#Content-Type: text/plain; charset="iso-8859-1"
@ -129,6 +134,9 @@ END_OF_BODY
}
else {
$template->param(bib_list => $bib_list);
$template->param(url => "/cgi-bin/koha/opac-sendbasket.pl");
$template->param(url => "/cgi-bin/koha/opac-sendbasket.pl",
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $query, $cookie, $template->output;
}

20
opac/opac-serial-issues.pl

@ -34,24 +34,8 @@ my $subscriptions = get_subscription_list_from_biblionumber($biblionumber);
$template->param(
biblionumber => $query->param('biblionumber'),
subscription_LOOP => $subscriptions
# startdate => format_date($subscription->{startdate}),
# periodicity => $subscription->{periodicity},
# dow => $subscription->{dow},
# numberlength => $subscription->{numberlength},
# weeklength => $subscription->{weeklength},
# monthlength => $subscription->{monthlength},
# opacnote => $subscription->{opacnote},
# numberingmethod => $subscription->{numberingmethod},
# arrivalplanified => $subscription->{arrivalplanified},
# status => $subscription->{status},
# biblionumber => $subscription->{biblionumber},
# bibliotitle => $subscription->{bibliotitle},
# notes => $subscription->{notes},
# subscriptionid => $subscription->{subscriptionid}
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
# $template->param(
# "periodicity$subscription->{periodicity}" => 1,
# "arrival$subscription->{dow}" => 1,
# );
output_html_with_http_headers $query, $cookie, $template->output;

22
opac/opac-shelves.pl

@ -33,6 +33,7 @@ use HTML::Template;
my $env;
my $query = new CGI;
my ($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "opac-shelves.tmpl",
query => $query,
@ -57,6 +58,8 @@ if ($query->param('modifyshelfcontents')) {
my ($shelflist) = GetShelfList($loggedinuser,2);
$template->param({ loggedinuser => $loggedinuser,
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
});
SWITCH: {
if ($query->param('op') eq 'modifsave') {
@ -169,7 +172,7 @@ sub viewshelf {
$line{'title'}=$item->{'title'};
$line{'author'}=$item->{'author'};
$line{'classification'}=$item->{'classification'};
$line{'itemtype'}=$item->{'itemtype'};
$line{'itemtype'}=$item->{'itemtype'};
$line{biblionumber} = $item->{biblionumber};
push(@itemsloop, \%line);
}
@ -183,15 +186,24 @@ sub viewshelf {
#
# $Log$
# Revision 1.6 2005/03/01 13:41:32 tipaul
# merging 2.2 branch with head. Sorry for not making it before, many many commits done here
# Revision 1.7 2005/05/04 09:02:38 tipaul
# synch'ing 2.2 and head
#
# Revision 1.3.2.4 2005/03/25 17:04:28 tipaul
# adding virtual shelves & suggestions button to the top
#
# Revision 1.5 2005/01/27 17:27:11 oleonard
# Revision 1.3.2.3 2005/01/27 17:18:28 oleonard
# Taking table cell background color information out of the script and moving it into the template (requires update to opac-shelves.tmpl)
#
# Revision 1.4 2005/01/13 20:41:07 oleonard
# Revision 1.3.2.2 2005/01/11 20:18:29 oleonard
# Adding call number and item type to list of returned variables
#
# Revision 1.3.2.1 2005/01/11 16:33:57 tipaul
# fix for http://bugs.koha.org/cgi-bin/bugzilla/show_bug.cgi?id=811 :
# The OPAC requires uses to log in to view virtual shelves, and it requires a user
# with librarian privileges. Virtual shelves should be viewable by all users,
# logged in or not, and editable by all logged-in users in good standing.
#
# Revision 1.3 2005/01/03 11:09:34 tipaul
# synch'ing virtual shelves management in opac with the librarian one, that has more features
#

5
opac/opac-sidebar.pl

@ -26,6 +26,9 @@ foreach my $name (param $query) {
$template->param(INPUTS => \@inputs);
my $self_url = $query->url(-absolute => 1);
$template->param(url => $self_url);
$template->param(url => $self_url,
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $query, $cookie, $template->output;

2
opac/opac-suggestions.pl

@ -61,5 +61,7 @@ $template->param(suggestions_loop => $suggestions_loop,
status => $status,
suggestedbyme => $suggestedbyme,
"op_$op" => 1,
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $input, $cookie, $template->output;

2
opac/opac-user.pl

@ -137,6 +137,8 @@ foreach my $res (@$reserves) {
$template->param(WAITING => \@waiting);
$template->param(waiting_count => $wcount,
LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $query, $cookie, $template->output;

2
opac/opac-userdetails.pl

@ -32,6 +32,8 @@ $borr->{'ethnicity'} = fixEthnicity($borr->{'ethnicity'});
$template->param($borr);
$template->param(LibraryName => C4::Context->preference("LibraryName")
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $query, $cookie, $template->output;

2
opac/opac-userupdate.pl

@ -89,6 +89,8 @@ $bordat[0] = $borr;
$template->param(BORROWER_INFO => \@bordat,
LibraryName => C4::Context->preference("LibraryName"),
suggestion => C4::Context->preference("suggestion"),
virtualshelves => C4::Context->preference("virtualshelves"),
);
output_html_with_http_headers $query, $cookie, $template->output;

6
reports/catalogue_stats.pl

@ -182,7 +182,7 @@ if ($do_it) {
push @select, $value;
}
my $CGIitemtype=CGI::scrolling_list( -name => 'Filter',
-id => 'Filter',
-id => 'itemtype',
-values => \@select,
-size => 1,
-multiple => 0 );
@ -210,7 +210,7 @@ if ($do_it) {
$select_branches{$branch} = $branches->{$branch}->{'branchname'};
}
my $CGIbranch=CGI::scrolling_list( -name => 'Filter',
-id => 'Filter',
-id => 'branch',
-values => \@select,
-labels => \%select_branches,
-size => 1,
@ -221,7 +221,7 @@ if ($do_it) {
undef @select;
push @select,"";
my $CGIlocation=CGI::scrolling_list( -name => 'Filter',
-id => 'Filter',
-id => 'location',
-values => \@select,
-size => 1,
-multiple => 0 );

7
reports/itemtypes.plugin

@ -73,12 +73,19 @@ sub calculate {
}
my ($description,$biblioitems,$total);
my $grantotal = 0;
my $count = 0;
while (($description,$biblioitems,$total) = $sth->fetchrow) {
my %line;
if($count % 2){
$line{toggle} = 1;
} else {
$line{toggle} = 0;
}
$line{itemtype} = $description;
$line{count} = $total;
$grantotal += $total;
push @results,\%line;
$count ++;
}
my @mainloop;
my %globalline;

9
search.marc/search.pl

@ -119,6 +119,7 @@ if ($op eq "do_search") {
$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;
@ -138,8 +139,12 @@ if ($op eq "do_search") {
findseealso($dbh,\@tags);
my ($results,$total) = catalogsearch($dbh, \@tags,\@and_or,
\@excluding, \@operator, \@value,
$startfrom*$resultsperpage, $resultsperpage,$orderby);
$startfrom*$resultsperpage, $resultsperpage,$orderby,$desc_or_asc);
if ($total == 1) {
# if only 1 answer, jump directly to the biblio
print $query->redirect("/cgi-bin/koha/MARCdetail.pl?bib=".@$results[0]->{biblionumber});
exit
}
($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "search.marc/result.tmpl",
query => $query,

46
updater/updatedatabase

@ -807,27 +807,45 @@ my %tabledata = (
type => 'Choice',
options => 'normal|marc|isbd'
},
{
uniquefieldrequired => 'variable',
variable => 'opacstylesheet',
value => '',
forceupdate => { 'explanation' => 1,
'type' => 1},
explanation => 'Enter a complete URL to use an alternate stylesheet in OPAC',
type => 'free',
},
{
uniquefieldrequired => 'variable',
variable => 'delimiter',
value => ';',
forceupdate => { 'explanation' => 1,
'type' => 1},
explanation => 'separator for reports exported to spreadsheet',
type => 'free',
},
{
uniquefieldrequired => 'variable',
variable => 'MIME',
value => 'OPENOFFICE.ORG',
forceupdate => { 'explanation' => 1,
forceupdate => { 'explanation' => 1,
'type' => 1,
'options' => 1},
explanation => 'Define the default application for report exportations into files',
type => 'Choice',
options => 'EXCEL|OPENOFFICE.ORG'
type => 'Choice',
options => 'EXCEL|OPENOFFICE.ORG'
},
{
uniquefieldrequired => 'variable',
variable => 'Delimiter',
value => ';',
forceupdate => { 'explanation' => 1,
forceupdate => { 'explanation' => 1,
'type' => 1,
'options' => 1},
explanation => 'Define the default separator character for report exportations into files',
type => 'Choice',
options => ';|tabulation|,|/|\|#'
type => 'Choice',
options => ';|tabulation|,|/|\|#'
},
],
@ -1414,11 +1432,19 @@ $sth->finish;
exit;
# $Log$
# Revision 1.102 2005/03/23 09:23:04 doxulting
# Adding 2 flags to separate the rights in the parameter section
# Revision 1.103 2005/05/04 09:04:52 tipaul
# synch'ing 2.2 and head
#
# Revision 1.100.2.2 2005/03/29 15:41:43 tipaul
# * new permissions : management & tools. You now have 2 new permissions :
# - management : means the user can manage library parameters, but NOT system parameters.
# - parameters : means the user can manage all parameters (including system parameters : marc structure, authorised values, system preferences. Was the only flag previously existing)
# - tools : means the user can import/export datas & edit barcodes.
# note that for compatibility reasons, a user having "parameters" can access everything.
# * new permission scheme. In every template new variables are available. They are written CAN_user_permission, with permission being one of the permission flag. templates can now show or hidde menu entries depending on user permissions. For example, a user with just circ permissions should have only the "circulation" button on home page. Templates are NOT updated in this version (except for system parameters, as proof of concept), they will be in the next ones. But the scheme is ready.
#
# Revision 1.101 2005/02/24 11:28:35 hdl
# Adding MIME and delimiter support to system preferences
# Revision 1.100.2.1 2005/03/17 17:15:18 tipaul
# defaulting opacstylesheet to '' instead of 'normal' (that is stupid)
#
# Revision 1.100 2004/12/10 16:11:32 tipaul
# Improvement : adding a systempref to define default view in OPAC (either normal, MARC or ISBD). Created automatically during install or update. Check that you have a Koha >> parameters >> systempreferences >> BiblioDefaultView, Variable type : Choice, Variable options : normal|marc|isbd

31
z3950/processz3950queue

@ -104,11 +104,11 @@ if ($< == 0) {
$>=$uid;
$<=$uid;
}
my $db_driver = $context->{"config"}{"db_scheme"} || "mysql";
my $db_name = $context->{"config"}{"database"};
my $db_host = $context->{"config"}{"hostname"};
my $db_user = $context->{"config"}{"user"};
my $db_passwd = $context->{"config"}{"pass"};
my $db_driver = C4::Context->config("db_scheme") || "mysql";
my $db_name = C4::Context->config("database");
my $db_host = C4::Context->config("hostname");
my $db_user = C4::Context->config("user");
my $db_passwd = C4::Context->config("pass");
my $dbh = DBI->connect("DBI:$db_driver:$db_name:$db_host",$db_user, $db_passwd);
# we begin the script, so "unactive" every pending request : they will never give anything, the script died :-(
@ -132,7 +132,6 @@ my $pid=$$;
my $lastrun=0;
while (1) {
if ((time-$lastrun)>5) {
print "starting loop\n";
$checkqueue = 1; # FIXME during testing, this line forces the loop. REMOVE it to use SIG{HUP} when "daemonized" !
# clean DB
my $now = time();
@ -183,13 +182,14 @@ while (1) {
$forkcounter++;
} else {
# and connect to z3950 server
# new connection required ($dbi) because we might have forked (thanks Harry Jackson)
my $db_driver = $context->{"config"}{"db_scheme"} || "mysql";
my $db_name = $context->{"config"}{"database"};
my $db_host = $context->{"config"}{"hostname"};
my $db_user = $context->{"config"}{"user"};
my $db_passwd = $context->{"config"}{"pass"};
#FIXME: why do we need $dbi ? can't we use $dbh ?
my $db_driver = C4::Context->config("db_scheme") || "mysql";
my $db_name = C4::Context->config("database");
my $db_host = C4::Context->config("hostname");
my $db_user = C4::Context->config("user");
my $db_passwd = C4::Context->config("pass");
my $dbi = DBI->connect("DBI:$db_driver:$db_name:$db_host",$db_user, $db_passwd);
$dbh->{"InactiveDestroy"} = "true";
my ($name, $server, $database, $user, $password,$syntax) = split(/\//, $serverinfo, 6);
$globalname=$name;
$globalsyntax = $syntax;
@ -257,7 +257,7 @@ while (1) {
#######
print "$$/$id : connected to $globalname\n";
eval {$conn->option(elementSetName => 'F')};
eval { $conn->option(preferredRecordSyntax => Net::Z3950::RecordSyntax::USMARC);} if ($globalsyntax eq "USMARC");
eval { $conn->option(preferredRecordSyntax => Net::Z3950::RecordSyntax::USMARC);} if ($globalsyntax eq "MARC21");
eval { $conn->option(preferredRecordSyntax => Net::Z3950::RecordSyntax::UNIMARC);} if ($globalsyntax eq "UNIMARC");
if ($@) {
print "$$/$id : $globalname ERROR: $@ for $resultsid\n";
@ -282,14 +282,11 @@ while (1) {
my $rec=$rs->record($i);
my $marcdata;
# use render() or rawdata() depending on the type of the returned record
my $marcrecord;
if (ref($rec) eq "Net::Z3950::Record::USMARC") {
$marcdata = $rec->rawdata();
$marcrecord = MARC::File::USMARC::decode($rec->rawdata())
}
if (ref($rec) eq "Net::Z3950::Record::UNIMARC") {
$marcdata = $rec->render();
$marcrecord = MARC::File::USMARC::decode($rec->render())
$marcdata = $rec->rawdata();
}
$globalencoding = ref($rec);
$result.=$marcdata;

3
z3950/search.pl

@ -27,6 +27,7 @@ use C4::Context;
use C4::Koha; # XXX subfield_is_koha_internal_p
use C4::Z3950;
use C4::Search;
use C4::Breeding;
use HTML::Template;
use MARC::File::USMARC;
@ -76,7 +77,7 @@ my ($template, $loggedinuser, $cookie)
});
# fill with books in breeding farm
($count, @results) = breedingsearch($title,$isbn,$random);
($count, @results) = BreedingSearch($title,$isbn,$random);
my $numberpending= &checkz3950searchdone($random);
my @breeding_loop = ();
for (my $i=0; $i <= $#results; $i++) {

Loading…
Cancel
Save