[Koha-patches] [PATCH] Enhancement: [3.4] [1/2] Web-based checkout enhancements

Chris Nighswonger cnighswonger at foundations.edu
Thu Feb 11 20:40:31 CET 2010


Among various layout enhancements this patch adds two web-based checkout
system preferences:

1. WebBasedSelfCheckTimeout - This preference sets the time in milliseconds
beyond which the patron's session will time out and they will be required to
re-scan/re-enter their card number. The timer is reset on each page load.
Previously this was hard coded at 120000 milliseconds or 120 seconds.

2. WebBasedSelfCheckHeader - This preference allows the library to insert its
own custom header at the top of the web-based self checkout service pages.

Among the misc changes are the inclusion of opac.css in the web-based self
checkout template since it is technically part of the opac. sco.css is applied
last so that those settings override those in opac.css.

The online help is modified to pop up a window rather than requiring the user to
navigate away from the interface.

A second patch will follow with the necessary db schema updates, etc.
---
 .../en/modules/admin/preferences/circulation.pref  |   23 +-
 koha-tmpl/opac-tmpl/prog/en/css/sco.css            |  203 ++++++-----
 koha-tmpl/opac-tmpl/prog/en/modules/sco/help.tmpl  |   68 ++--
 .../opac-tmpl/prog/en/modules/sco/sco-main.tmpl    |  389 +++++++++++---------
 opac/sco/sco-main.pl                               |    6 +-
 5 files changed, 370 insertions(+), 319 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
index 90b44fc..7375c8c 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
@@ -263,18 +263,27 @@ Circulation:
             - fines (when <code>misc/cronjobs/fines.pl</code> is being run).
     Self Checkout:
         -
+            - pref: WebBasedSelfCheck
+              choices:
+                  yes: Enable
+                  no: "Don't enable"
+            - "the web-based self checkout system. (available at: http://your-opac.org/cgi-bin/koha/sco/sco-main.pl)"
+        -
+            - pref: WebBasedSelfCheckTimeout
+              class: integer
+            - milliseconds before the web-based self checkout session times out (1000 milliseconds/second).
+        -
+            - "Include the following HTML in the header of the web-based self checkout:"
+            - pref: WebBasedSelfCheckHeader
+              type: textarea
+              class: code
+        -
             - pref: ShowPatronImageInWebBasedSelfCheck
               choices:
                   yes: Show
                   no: "Don't show"
             - "the patron's picture (if one has been added) when they use the web-based self checkout."
         -
-            - pref: WebBasedSelfCheck
-              choices:
-                  yes: Enable
-                  no: "Don't enable"
-            - "the web-based self checkout system. (available at: /cgi-bin/koha/sco/sco-main.pl)"
-        -
             - pref: AutoSelfCheckAllowed
               choices:
                   yes: Allow
@@ -283,4 +292,4 @@ Circulation:
             - pref: AutoSelfCheckID
             - and this password
             - pref: AutoSelfCheckPass
-            - .
\ No newline at end of file
+            - .
diff --git a/koha-tmpl/opac-tmpl/prog/en/css/sco.css b/koha-tmpl/opac-tmpl/prog/en/css/sco.css
index 1b1b5d5..59c5957 100644
--- a/koha-tmpl/opac-tmpl/prog/en/css/sco.css
+++ b/koha-tmpl/opac-tmpl/prog/en/css/sco.css
@@ -1,168 +1,167 @@
- at import url("../../en/lib/yui/reset-fonts-grids.css");
- at import url("../../en/lib/yui/skin.css");
-
 a {
-	font-weight : bold;
+    font-weight : bold;
 }
 
 a, a:visited {
-	color : #006699;
+    color : #006699;
 }
 
 a:hover,input.editshelf:hover,a.editshelf:hover,input.deleteshelf:hover {
-	color : #990033;
+    color : #990033;
 }
 
 body {
-	background-color : white;
-	text-align : left;
-	padding : 0 0 2.5em 0;
+    background-color : white;
+    text-align : left;
+    padding : 0 0 2.5em 0;
 }
 
 caption {
-	font-size : 110%;
-	text-align : left;
-	font-weight : bold;
+    font-size : 123.1%;
+    text-align : left;
+    font-weight : bold;
 }
 
 fieldset {
-	background-color: #FFF;
-	border : 2px solid #EEEEEE;
-	margin : 1em 1em 1em 0;
-	padding : 1em;
+    background-color: #FFF;
+    border : 2px solid #EEEEEE;
+    margin : 1em 1em 1em 0;
+    padding : 1em;
 }
 
 h1,h2,h3,h4,h5,h6 {
-	font-weight : bold;
-	margin : .5em 0;
+    font-weight : bold;
+    margin : .5em 0;
 }
 
 h1 {
-	font-size : 138.5%;
+    font-size : 138.5%;
 }
 
 h2 {
-	font-size : 134%;
+    font-size : 134%;
 }
 
 h3 {
-	font-size : 123.1%;
+    font-size : 123.1%;
 }
 
 h4 {
-	font-size : 116%;
+    font-size : 116%;
 }
 
 h5 {
-	font-size : 108%;
+    font-size : 108%;
 }
 
 h6 {
-	font-size : 100%;
+    font-size : 100%;
 }
 
 input[type=submit], input[type=button], input[type=reset] {
-	background : #b8d0e6 url(../../images/submit-bg.gif) repeat-x 0 0;
-	background-color : #b8d0e6;
-	border-top: 1px solid #cccccc;
-	border-left: 1px solid #cccccc;
-	border-right: 1px solid #eeeeee;
-	border-bottom: 1px solid #eeeeee;
-	color : #333;
-	font-size : 93%;
-	font-weight : bold;
-	padding : 4px;
+    background : #b8d0e6 url(../../images/submit-bg.gif) repeat-x 0 0;
+    background-color : #b8d0e6;
+    border-top: 1px solid #cccccc;
+    border-left: 1px solid #cccccc;
+    border-right: 1px solid #eeeeee;
+    border-bottom: 1px solid #eeeeee;
+    color : #333;
+    font-size : 93%;
+    font-weight : bold;
+    padding : 4px;
 }
 
 input[type=submit]:active, input[type=button], input[type=reset] {
-	border: 1px inset #666666;
-	float : none;
+    border: 1px inset #666666;
+    float : none;
 }
+
 .dialog {
-  border: 1px solid #bcbcbc;
-	padding : .5em;
-	margin : 1em auto;
-  width: 65%;
+    border: 1px solid #bcbcbc;
+    padding : .5em;
+    margin : 1em auto;
+    width: 65%;
+    font-size: 110%;
   }
-  
+
 .dialog  h2, .dialog h3, .dialog h4 {
-  	margin : auto;
-	text-align : center;
+      margin : auto;
+    text-align : center;
   }
- 
+
 div.alert {
   background : #FFC url(../../images/alert-bg.gif) repeat-x left 0;
   text-align : center;
 }
 
 div.alert strong {
-	color : #900;
+    color : #900;
 }
 
 .dialog input {
- 	background : #FFF none;
- 	border : 1px solid #bcbcbc;
-	margin : .4em;
-	padding : .4em;
+     background : #FFF none;
+     border : 1px solid #bcbcbc;
+    margin : .4em;
+    padding : .4em;
  }
 
  
 .dialog input.back {
- 	background : #FFF url(../../famfamfam/silk/arrow_left.png) no-repeat 4px center;
-	padding : .4em .4em .4em 25px;	
+     background : #FFF url(../../famfamfam/silk/arrow_left.png) no-repeat 4px center;
+    padding : .4em .4em .4em 25px;    
  }
  
 .dialog input.return {
- 	background : #FFF url(../../famfamfam/silk/book_previous.png) no-repeat 4px center;
-	padding : .4em .4em .4em 25px;	
+     background : #FFF url(../../famfamfam/silk/book_previous.png) no-repeat 4px center;
+    padding : .4em .4em .4em 25px;    
  }
  
 .dialog input.renew {
- 	background : #FFF url(../../famfamfam/silk/arrow_refresh.png) no-repeat 4px center;
-	padding : .4em .4em .4em 25px;	
+     background : #FFF url(../../famfamfam/silk/arrow_refresh.png) no-repeat 4px center;
+    padding : .4em .4em .4em 25px;    
  }
  
 .dialog input.cancel {
- 	background : #FFF url(../../famfamfam/silk/cancel.png) no-repeat 4px center;
-	padding : .4em .4em .4em 25px;	
+     background : #FFF url(../../famfamfam/silk/cancel.png) no-repeat 4px center;
+    padding : .4em .4em .4em 25px;    
  }
 
 input.finish {
-	background : #dbe7ff url(../../famfamfam/silk/stop.png) no-repeat 4px center;
-	border : 1px outset #666;
-	padding : .2em .2em .2em 25px;
+    background : #dbe7ff url(../../famfamfam/silk/stop.png) no-repeat 4px center;
+    border : 1px outset #666;
+    padding : .2em .2em .2em 25px;
 }
  
 table {
-	background-color: #FFF;
-	border-collapse : collapse;
-	margin : 1em 0;
-	border-right : 1px solid #dddddd;
-	border-top : 1px solid #dddddd;
+    background-color: #FFF;
+    border-collapse : collapse;
+    margin : 1em 0;
+    border-right : 1px solid #dddddd;
+    border-top : 1px solid #dddddd;
 }
 
 td,th {
-	background-color: #FFF;
-	border-left : 1px solid #dddddd;
-	border-bottom : 1px solid #dddddd;
-	padding : 3px 3px;
+    background-color: #FFF;
+    border-left : 1px solid #dddddd;
+    border-bottom : 1px solid #dddddd;
+    padding : 3px 3px;
 }
 
 th {
-	background-color:#EEE;
-	font-weight : bold;
-	padding : 2px 23px;
-	text-align : center;
+    background-color:#EEE;
+    font-weight : bold;
+    padding : 2px 23px;
+    text-align : center;
 }
 
 tr.highlight td, tr.highlight th, tr.odd td {
-	background-color : #F3F3F3;
+    background-color : #F3F3F3;
    border-top : 1px solid #DDDDDD;
    border-bottom : 1px solid #DDDDDD;
 }
 
 tr.even td, tr.even.highlight td {
-	background-color: #FFF;
+    background-color: #FFF;
 }
 
 .header {
@@ -179,50 +178,60 @@ tr.even td, tr.even.highlight td {
 }
 
 p {
-	margin: .7em 0;
+    margin: .7em 0;
 }
 
 strong {
-	font-weight : bold;
+    font-weight : bold;
 }
 
 em {
-	font-style : italic;
+    font-style : italic;
 }
 #borrowerdetails {
-	margin-top : 1em;
+    margin-top : 1em;
 }
 #barcode,
 #patronid {
-	font-size : 125%;
-	padding-bottom : 3px;
+    font-size : 125%;
+    padding-bottom : 3px;
 }
 input.focus {
-	background-color : #FFC;
-	border : 2px inset #336699;
+    background-color : #FFC;
+    border : 2px inset #336699;
 }
 #checkouthelp {
-	background : #FFF url("../../famfamfam/silk/help.png") no-repeat 4px center;
-	padding : 3px 3px 3px 26px;
-	position : absolute;
-	top : 0;
-	right : 0;
+    background : #FFF url("../../famfamfam/silk/help.png") no-repeat 4px center;
+    padding : 3px 3px 3px 26px;
+    position : fixed;
+    right : 0;
 }
 div.button {
-	float : left;
-	margin-top : 2em;
-	padding : .4em 0;	
+    float : left;
+    margin-top : 2em;
+    padding : .4em 0;    
 }
 div.button a:link,
 div.button a:visited,
 div.button a:hover,
 div.button a:active {
- 	background : #FFF url(../../famfamfam/silk/book_previous.png) no-repeat 4px center;
-	border : 1px outset #666;
-	color : #000;
-	padding : .4em .4em .4em 25px;	
-	text-decoration : none;
+     background : #FFF url(../../famfamfam/silk/book_previous.png) no-repeat 4px center;
+    border : 1px outset #666;
+    color : #000;
+    padding : .4em .4em .4em 25px;    
+    text-decoration : none;
 }
 div.button a:active {
-	border : 1px inset #666;
+    border : 1px inset #666;
+}
+
+#banner {
+    margin-left: auto;
+    margin-right: auto;
+    text-align: center;
+}
+
+.tag {
+    font-size: 110%;
+    padding-right: 3px;
 }
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/sco/help.tmpl b/koha-tmpl/opac-tmpl/prog/en/modules/sco/help.tmpl
index 01abb42..0e74775 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/sco/help.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/sco/help.tmpl
@@ -1,36 +1,36 @@
-<!-- TMPL_INCLUDE NAME="doc-head-open.inc" --><!-- TMPL_VAR NAME="LibraryName" --> &rsaquo; Self Checkout</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Koha <!-- TMPL_VAR NAME="Version" -->" /> <!-- leave this for stats -->
-<link rel="shortcut icon" href="<!-- TMPL_VAR NAME="themelang" -->/includes/favicon.ico" type="image/x-icon" />
-
-<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/css/sco.css" />
-</head>
-<body>
-<div id="doc" class="yui-t7">
-  <div id="bd">
-    <div class="yui-g">
-
-<h1>Self Checkout Help</h1>
-
-<p>If this is your first time using the self checkout system, or if the system
-is not behaving as expected, you may want to refer to this guide to get
-yourself started.</p>
-
-<h3>Step One: Enter your user id</h3>
-<p>Enter your User ID, and click the submit button (or press the enter key).</p>
-
-<h3>Step Two: Scan the barcode for each item, one at a time</h3>
-<p>Scan each item and wait for the page to reload before scanning the next item.
-The checked-out item should appear in your issues list.
-The Submit button only needs to be clicked if you enter the barcode manually.</p>
-
-<h3>Step Three: Click the 'Click here if done' link when done</h3>
-
-    <div class="button">
-        <a href="javascript:history.go(-1)">Return to the Self-Checkout</a>
-    </div>
-
-</div></div></div>
-</body>
+        <!-- TMPL_INCLUDE NAME="doc-head-open.inc" --><!-- TMPL_VAR NAME="LibraryName" --> &rsaquo; Self Checkout</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <meta name="generator" content="Koha <!-- TMPL_VAR NAME="Version" -->" /> <!-- leave this for stats -->
+        <link rel="shortcut icon" href="<!-- TMPL_VAR NAME="themelang" -->/includes/favicon.ico" type="image/x-icon" />
+        <link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/css/sco.css" />
+    </head>
+    <body>
+        <div id="doc" class="yui-t7">
+            <div id="bd">
+                <div class="yui-g">
+                    <h1>Self Checkout Help</h1>
+
+                    <p>If this is your first time using the self checkout system, or if the system
+                    is not behaving as expected, you may want to refer to this guide to get
+                    yourself started.</p>
+
+                    <h3>Step One: Enter your user id</h3>
+
+                    <p>Enter your User ID, and click the submit button (or press the enter key).</p>
+
+                    <h3>Step Two: Scan the barcode for each item, one at a time</h3>
+
+                    <p>Scan each item and wait for the page to reload before scanning the next item.
+                    The checked-out item should appear in your issues list.
+                    The Submit button only needs to be clicked if you enter the barcode manually.</p>
+
+                    <h3>Step Three: Click the 'Click here if done' link when done</h3>
+                </div>
+            </div>
+        </div>
+        <form action="/cgi-bin/koha/edithelp.pl" method="post">
+            <fieldset class="action"><input type="button" class="submit" onclick="window.close(); return false;" value="Close Help Window" />
+        </form>
+    </body>
 </html>
 
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tmpl b/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tmpl
index 3bfde99..73dd9f3 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/sco/sco-main.tmpl
@@ -7,7 +7,10 @@
 <script type="text/javascript">//<![CDATA[
 function sco_init(valid_session) {
     if (valid_session == 1) {
-        setTimeout("location.href='/cgi-bin/koha/sco/sco-main.pl?op=logout';",120000); // TODO: syspref for timeout
+        setTimeout("location.href='/cgi-bin/koha/sco/sco-main.pl?op=logout';",<!-- TMPL_VAR NAME="TIMEOUT" -->);
+    }
+    else if (valid_session == 2) {
+        setTimeout("location.href='/cgi-bin/koha/sco/sco-main.pl';",<!-- TMPL_VAR NAME="TIMEOUT" -->);
     }
 }
 function dofocus() {    // named function req'd for body onload event by some FF and IE7 security models
@@ -19,7 +22,7 @@ function checkout_confirm(patronid) {
     var   barcode = $("#barcode").val();
     // alert("checkout_confirm('" + patronid + "') called for barcode '" + barcode + "'");
     if (! barcode) { dofocus(); return false; }    // no barcode
-    if (barcode == "__KOHA_NEW_CIRC__") {   // magic barcode 
+    if (barcode == "__KOHA_NEW_CIRC__") {   // magic barcode
         window.location.href='/cgi-bin/koha/sco/sco-main.pl?op=logout';
         return false;
     }
@@ -43,6 +46,7 @@ $.tablesorter.addParser({
 $(document).ready(function() {
     <!-- TMPL_IF    NAME="patronid" --> sco_init(1);
     <!-- TMPL_ELSIF NAME="timedout" --> sco_init(1);
+    <!-- TMPL_ELSIF NAME="nouser" --> sco_init(2);
     <!-- /TMPL_IF -->
     $("#loanTable").tablesorter({
         <!-- TMPL_IF NAME="dateformat_metric" -->
@@ -59,185 +63,210 @@ $(document).ready(function() {
 });
 //]]>
 </script>
-<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/css/sco.css" />
+    <link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/css/opac.css" />
+    <link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/css/sco.css" />
 </head>
 <body onload="dofocus();">
-
-<div id="doc" class="yui-t7">
-
-<div id="masthead"><h1><!-- TMPL_VAR NAME="LibraryName" --> Self Checkout System</h1></div>
-<div id="bd">
-    <div class="yui-g">
-
-<!-- TMPL_IF NAME="impossible" --><!-- We tried to issue, but failed. -->
-<div class="dialog alert"><h3>Item cannot be checked out.</h3><p>Sorry, This item cannot be checked out at this station.  </p>
-<!-- TMPL_IF NAME="title" --><p>Title: <em><!-- TMPL_VAR NAME="title" escape="html" --></em> </p><!-- /TMPL_IF -->
-<p>
-   <!-- TMPL_IF NAME="circ_error_UNKNOWN_BARCODE" -->
-    <em>MESSAGE 1:</em> The system does not recognize this barcode.
-   <!-- TMPL_ELSIF NAME="circ_error_TOO_MANY" -->
-    <em>MESSAGE 2:</em> You have borrowed too many items and can't check out any more.
-   <!-- TMPL_ELSIF NAME="circ_error_ISSUED_TO_ANOTHER" -->
-    <em>MESSAGE 3:</em> This item is checked out to someone else.
-   <!-- TMPL_ELSIF NAME="circ_error_NO_MORE_RENEWALS" -->
-    <em>MESSAGE 4:</em> You cannot renew this item again.
-   <!-- TMPL_ELSIF NAME="circ_error_NOT_FOR_LOAN" -->
-    <em>MESSAGE 5:</em> This item is not for loan.
-   <!-- TMPL_ELSIF NAME="circ_error_DEBT" -->
-    <em>MESSAGE 6:</em> You owe the library <!-- TMPL_VAR NAME="amount" --> and cannot borrow.
-   <!-- TMPL_ELSIF NAME="circ_error_WTHDRAWN" -->
-    <em>MESSAGE 7:</em> This item has been withdrawn from the collection.
-   <!-- TMPL_ELSIF NAME="circ_error_RESTRICTED" -->
-    <em>MESSAGE 8:</em>
-   <!-- TMPL_ELSIF NAME="circ_error_RESERVED" -->
-    <em>MESSAGE 9:</em> This item is reserved for another patron.
-   <!-- TMPL_ELSIF NAME="circ_error_NOTSAMEBRANCH" -->
-    <em>MESSAGE 10:</em>
-   <!-- TMPL_ELSIF NAME="circ_error_EXPIRED" -->
-    <em>MESSAGE 11:</em> Your account has expired.
-   <!-- TMPL_ELSIF NAME="circ_error_DEBARRED" -->
-    <em>MESSAGE 12:</em> Your account has been suspended.
-   <!-- TMPL_ELSIF NAME="circ_error_CARD_LOST" -->
-    <em>MESSAGE 13:</em> This card has been declared lost.
-   <!-- TMPL_ELSIF NAME="circ_error_GNA" -->
-    <em>MESSAGE 14:</em>
-   <!-- TMPL_ELSIF NAME="circ_error_INVALID_DATE" -->
-    <em>MESSAGE 15:</em>
-   <!-- /TMPL_IF -->
-   Please see a member of the library staff.
-</p>
-<form action="/cgi-bin/koha/sco/sco-main.pl" name="errorForm" method="post">
-<input type="hidden" name="op" value="login" />
-<input type="hidden" name="patronid" value="<!-- TMPL_VAR NAME="patronid" -->" />
-<!-- TMPL_IF NAME="returnitem" -->
-<input type="hidden" name="barcode" value="<!-- TMPL_VAR NAME="barcode" -->" />
-<input type="button" name="returnbook" value="Return this item" class="return" onclick="this.form.op.value='returnbook';this.form.submit();"  />
-<!-- /TMPL_IF -->
-<input type="submit" name= "confirm" value="Return to Account Summary" class="back focus" />
-</form>
-<!-- /TMPL_IF -->
-<!-- TMPL_IF NAME="confirm" --><!-- We need to confirm the issue.. -->
-<div class="dialog alert"><h3>Please confirm the checkout:</h3>
-<p><!-- TMPL_IF NAME="confirm_renew_issue" -->This item is already checked out to you.  Return it?<!-- /TMPL_IF --></p>
-
-<form action="/cgi-bin/koha/sco/sco-main.pl" name="confirmForm" method="post">
-<input type="hidden" name="op" value="checkout" />
-<input type="hidden" name="patronid" value="<!-- TMPL_VAR NAME="patronid" -->" />
-<input type="hidden" name="barcode" value="<!-- TMPL_VAR NAME="barcode" -->" />
-<input type="hidden" name="confirmed" value="" />
-<!-- TMPL_IF NAME="renew" -->
-<input type="button" value="Return Item" name="confirm" class="return" onclick="this.form.op.value='returnbook';this.form.submit();"  />
-<!-- /TMPL_IF -->
-<input type="button" value="Renew Item" <!-- TMPL_UNLESS NAME="renew" --> name="confirm"<!-- /TMPL_UNLESS --> class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" />
-<input type="button" value="Cancel" class="cancel" onclick="this.form.op.value='';this.form.submit();return true;"  />
-</form>
-</div>
-<!-- /TMPL_IF -->
-
-<!-- TMPL_IF NAME="nopermission" --><!-- This is what is displayed if user doesnt have permission --><div class="dialog alert"><h3>Access Denied</h3>
-Sorry, This Self-Checkout Station has lost authentication.  Please contact the administrator to resolve this problem. </div>
-<!-- /TMPL_IF -->
-<!-- TMPL_IF NAME="timed_out" --><!-- This is what is displayed if login has timed out -->
-<div class="dialog alert"><h3>Session timed out</h3>Sorry, your session has timed out, please log in again.</div><!-- /TMPL_IF -->
-<!-- TMPL_IF NAME="different_ip" --><!-- This is what is displayed if user doesnt have permission --><div class="dialog alert"><h3>Session Lost</h3>You are accessing Self-Checkout from a different IP address! please log in again.</div><!-- /TMPL_IF -->
-<!-- TMPL_IF NAME="invalid_username_or_password" -->
-<!-- This is what is displayed if user doesnt have permission --><div class="dialog alert"><h3>Record not found</h3><p>Your userid was not found in the database.  Please try again.</p></div><!-- /TMPL_IF -->
-
-
-<!-- TMPL_UNLESS NAME="hide_main" -->
-	<div class="sco_head">
-	<!-- TMPL_UNLESS NAME="validuser" --> 
-	<h3>Self Checkout</h3>
-	<!-- /TMPL_UNLESS -->
-
-	<div id="checkouthelp">
-		<a href="/cgi-bin/koha/sco/help.pl">HELP</a> with the self checkout system
-	</div>
-
-	<!-- TMPL_IF NAME="patronid" -->
-	<!-- TMPL_IF NAME="validuser" -->
-	<h3 class="warning">You are logged in as <!-- TMPL_VAR NAME="borrowername" -->.</h3>
-    <!-- TMPL_IF NAME="display_patron_image" -->
-        <img src="/cgi-bin/koha/sco/sco-patron-image.pl?cardnumber=<!-- TMPL_VAR NAME="cardnumber" -->" alt="" />
-    <!-- /TMPL_IF -->
-	<!-- /TMPL_IF -->
-	</div>
-	<!-- TMPL_IF NAME="nouser" -->
-	<div class="error"><h4>Sorry</h4><p>The userid <strong><!-- TMPL_VAR NAME="patronid" --></strong> was not found in the database.  Please try again.</p></div>
-	<br />
-	<!-- /TMPL_IF -->
-	<!-- /TMPL_IF -->
-
-	<!-- TMPL_IF NAME="timedout" -->
-	<div class="error"><h4>Sorry</h4><p>Your session has timed out due to inactivity.  Please sign in.</p></div>
-	<br />
-	<!-- /TMPL_IF -->
-	<!-- TMPL_IF NAME="validuser" -->
-	<div id="newcheckout" class="sco_entry">
-	<form id="scan_form" name="scan_form" method="post" action="/cgi-bin/koha/sco/sco-main.pl" onsubmit="return checkout_confirm('<!-- TMPL_VAR NAME='patronid' -->');">
-	<fieldset><legend> Check out or return an item: </legend>
-	<label for="barcode">Scan a new item or enter its barcode:</label>
-	<input id="barcode" name="barcode" size="20" class="focus" />
-	<input type="hidden" name="op" value="checkout" />
-	<input type="hidden" name="patronid" value="<!-- TMPL_VAR name="patronid" -->" />
-	<input type="hidden" name="valid_session" value="1" />
-	<input type="submit" value="Submit" class="submit" /></fieldset>
-	</form>
-	<div><form method="post" action="/cgi-bin/koha/sco/sco-main.pl?op=logout" >Scan next item, or <input type="submit" value="Click here if done." class="finish" /></form></div>
-	</div> <!-- sco_entry --> <!-- newcheckout -->
-
-	<div id="borrowerdetails">
-	<!-- TMPL_IF NAME="issues_count" -->
-	<table id="loanTable"><caption>Issues for <!-- TMPL_VAR NAME='borrowername' --> <span class="count">(<!-- TMPL_VAR NAME="issues_count" --> total)</span></caption>
-	<!-- ISSUES TABLE ROWS -->
-    <thead>
-	<tr><th>Title</th><th>Call No.</th><th>Due</th><th>Renew</th><!-- TMPL_UNLESS NAME="nofines" --><th>Fines</th><!-- /TMPL_UNLESS --></tr>
-    </thead>
-
-    <tbody>
-	<!-- TMPL_LOOP NAME="ISSUES" -->
-	<!-- TMPL_UNLESS name="__odd__" --><tr class="highlight"><!-- TMPL_ELSE --><tr><!-- /TMPL_UNLESS -->
-    <!-- FIXME: yet another jacket image breakpoint -->
-	<td><!-- TMPL_IF NAME="amazonimages" --> <!-- TMPL_IF NAME="isbn" --><a href="/cgi-bin/koha/opac-detail.pl?bib=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->"><img src="http://images.amazon.com/images/P/<!-- TMPL_VAR name="isbn" -->.01.THUMBZZZ.jpg" alt="Book Cover Image" class="thumbnail" /></a><!-- /TMPL_IF --> <!-- /TMPL_IF --><!-- TMPL_UNLESS NAME="noitemlinks" --><a href="/cgi-bin/koha/opac-detail.pl?bib=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" escape="html" --></a><!-- TMPL_ELSE --><strong><!-- TMPL_VAR NAME="title" escape="html" --></strong><!-- /TMPL_UNLESS --><span class="item-details">
-	<!-- TMPL_VAR NAME="author" --></span> (<!-- TMPL_VAR NAME="barcode" -->)</td>
-	<td><!-- TMPL_VAR NAME="itemcallnumber" DEFAULT="&nbsp;" --></td>
-	<!-- TMPL_IF NAME="overdue" --><td class="overdue"><!-- TMPL_VAR NAME="date_due_display" --></td><!-- TMPL_ELSE --><td><!-- TMPL_VAR NAME="date_due_display" --></td><!-- /TMPL_IF -->
-	<td>
-    <form action="/cgi-bin/koha/sco/sco-main.pl" method="post">
-    <input type="hidden" name="op" value="checkout" />
-    <input type="hidden" name="patronid" value="<!-- TMPL_VAR NAME="patronid" -->" />
-    <input type="hidden" name="barcode" value="<!-- TMPL_VAR NAME="barcode" -->" />
-    <input type="hidden" name="confirmed" value=""  />
-        <!-- TMPL_IF NAME="norenew" -->
-        <input type="button" value="Return Item" name="confirm" class="return" onclick="this.form.op.value='returnbook';this.form.submit();"  />
-        <!-- TMPL_ELSE  -->
-        <input type="button" value="Renew Item" <!-- TMPL_UNLESS NAME="renew" --> name="confirm"<!-- /TMPL_UNLESS --> class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" />
+<div id="doc3" class="yui-t7">
+    <div id="hd">
+        <!-- TMPL_IF NAME="HEADER" -->
+        <!-- TMPL_VAR NAME="HEADER" -->
+        <!-- TMPL_ELSE -->
+        <div class="yui-ge"><h1><!-- TMPL_VAR NAME="LibraryName" --> Self Checkout System</h1></div>
         <!-- /TMPL_IF -->
-    </form>
-	</td>
-	<!-- TMPL_UNLESS NAME="nofines" --><td><!-- TMPL_IF NAME="charges" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td><!-- /TMPL_UNLESS --></tr>
-	<!-- /TMPL_LOOP -->
-    </tbody>
-
-	</table>
-	<!-- TMPL_ELSE -->
-	<h3>You currently have nothing checked out.</h3>
-	<!-- /TMPL_IF -->
-
-	<!-- TMPL_ELSE --><!-- not validuser -->
-	<div class="sco_entry" >
-	<form id="mainform" action="/cgi-bin/koha/sco/sco-main.pl" name="mainform" method="post">
-	<fieldset class="checkout"><label for="patronid">Please enter your card number:</label> 
-	<input type="text" id="patronid" class="focus" size="20" name="patronid" />
+        <div class="sco_head">
+            <div id="checkouthelp">
+                Need <a href="/cgi-bin/koha/sco/help.pl" onclick="window.open('/cgi-bin/koha/sco/help.pl','Koha_Help','width=600,height=600,toolbar=0,scrollbars=1'); return false;">help</a>?
+            </div>
+            <!-- TMPL_UNLESS NAME="validuser" -->
+            <h3 id="banner">Self Checkout Service</h3>
+            <!-- /TMPL_UNLESS -->
+            <!-- TMPL_IF NAME="patronid" -->
+            <!-- TMPL_IF NAME="validuser" -->
+            <h3 id="banner">Checking out to <!-- TMPL_VAR NAME="borrowername" --></h3>
+            <!-- TMPL_IF NAME="display_patron_image" -->
+            <img src="/cgi-bin/koha/sco/sco-patron-image.pl?cardnumber=<!-- TMPL_VAR NAME="cardnumber" -->" alt="" />
+            <!-- /TMPL_IF -->
+            <!-- /TMPL_IF -->
+            <!-- /TMPL_IF -->
+            <!-- TMPL_IF NAME="nouser" -->
+            <div class="dialog alert">
+                <h4>Sorry</h4>
+                <p>Card number <strong><!-- TMPL_VAR NAME="nouser" --></strong> was not found in the database.  Please try again.</p>
+            </div>
+            <br />
+            <!-- /TMPL_IF -->
+            <!-- TMPL_IF NAME="impossible" --><!-- We tried to issue, but failed. -->
+            <div class="dialog alert"><h3>Item cannot be checked out.</h3><p>Sorry, This item cannot be checked out at this station.  </p>
+                <!-- TMPL_IF NAME="title" --><p>Title: <em><!-- TMPL_VAR NAME="title" escape="html" --></em> </p><!-- /TMPL_IF -->
+                <p>
+                   <!-- TMPL_IF NAME="circ_error_UNKNOWN_BARCODE" -->
+                    <em>MESSAGE 1:</em> The system does not recognize this barcode.
+                   <!-- TMPL_ELSIF NAME="circ_error_TOO_MANY" -->
+                    <em>MESSAGE 2:</em> You have borrowed too many items and can't check out any more.
+                   <!-- TMPL_ELSIF NAME="circ_error_ISSUED_TO_ANOTHER" -->
+                    <em>MESSAGE 3:</em> This item is checked out to someone else.
+                   <!-- TMPL_ELSIF NAME="circ_error_NO_MORE_RENEWALS" -->
+                    <em>MESSAGE 4:</em> You cannot renew this item again.
+                   <!-- TMPL_ELSIF NAME="circ_error_NOT_FOR_LOAN" -->
+                    <em>MESSAGE 5:</em> This item is not for loan.
+                   <!-- TMPL_ELSIF NAME="circ_error_DEBT" -->
+                    <em>MESSAGE 6:</em> You owe the library <!-- TMPL_VAR NAME="amount" --> and cannot borrow.
+                   <!-- TMPL_ELSIF NAME="circ_error_WTHDRAWN" -->
+                    <em>MESSAGE 7:</em> This item has been withdrawn from the collection.
+                   <!-- TMPL_ELSIF NAME="circ_error_RESTRICTED" -->
+                    <em>MESSAGE 8:</em>
+                   <!-- TMPL_ELSIF NAME="circ_error_RESERVED" -->
+                    <em>MESSAGE 9:</em> This item is reserved for another patron.
+                   <!-- TMPL_ELSIF NAME="circ_error_NOTSAMEBRANCH" -->
+                    <em>MESSAGE 10:</em>
+                   <!-- TMPL_ELSIF NAME="circ_error_EXPIRED" -->
+                    <em>MESSAGE 11:</em> Your account has expired.
+                   <!-- TMPL_ELSIF NAME="circ_error_DEBARRED" -->
+                    <em>MESSAGE 12:</em> Your account has been suspended.
+                   <!-- TMPL_ELSIF NAME="circ_error_CARD_LOST" -->
+                    <em>MESSAGE 13:</em> This card has been declared lost.
+                   <!-- TMPL_ELSIF NAME="circ_error_GNA" -->
+                    <em>MESSAGE 14:</em>
+                   <!-- TMPL_ELSIF NAME="circ_error_INVALID_DATE" -->
+                    <em>MESSAGE 15:</em>
+                   <!-- /TMPL_IF -->
+                   Please see a member of the library staff.
+                </p>
+                <form action="/cgi-bin/koha/sco/sco-main.pl" name="errorForm" method="post">
+                    <input type="hidden" name="op" value="login" />
+                    <input type="hidden" name="patronid" value="<!-- TMPL_VAR NAME="patronid" -->" />
+                    <!-- TMPL_IF NAME="returnitem" -->
+                    <input type="hidden" name="barcode" value="<!-- TMPL_VAR NAME="barcode" -->" />
+                    <input type="button" name="returnbook" value="Return this item" class="return" onclick="this.form.op.value='returnbook';this.form.submit();"  />
+                    <!-- /TMPL_IF -->
+                    <input type="submit" name= "confirm" value="Return to Account Summary" class="back focus" />
+                </form>
+            </div>
+            <!-- /TMPL_IF -->
+            <!-- TMPL_IF NAME="confirm" --><!-- We need to confirm the issue.. -->
+            <div class="dialog alert">
+                <h3>Please confirm the checkout:</h3>
+                <p><!-- TMPL_IF NAME="confirm_renew_issue" -->This item is already checked out to you.  Return it?<!-- /TMPL_IF --></p>
+                <form action="/cgi-bin/koha/sco/sco-main.pl" name="confirmForm" method="post">
+                    <input type="hidden" name="op" value="checkout" />
+                    <input type="hidden" name="patronid" value="<!-- TMPL_VAR NAME="patronid" -->" />
+                    <input type="hidden" name="barcode" value="<!-- TMPL_VAR NAME="barcode" -->" />
+                    <input type="hidden" name="confirmed" value="" />
+                    <!-- TMPL_IF NAME="renew" -->
+                    <input type="button" value="Return Item" name="confirm" class="return" onclick="this.form.op.value='returnbook';this.form.submit();"  />
+                    <!-- /TMPL_IF -->
+                    <input type="button" value="Renew Item" <!-- TMPL_UNLESS NAME="renew" --> name="confirm"<!-- /TMPL_UNLESS --> class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" />
+                    <input type="button" value="Cancel" class="cancel" onclick="this.form.op.value='';this.form.submit();return true;"  />
+                </form>
+            </div>
+            <!-- /TMPL_IF -->
+            <!-- TMPL_IF NAME="nopermission" --><!-- This is what is displayed if user doesnt have permission -->
+            <div class="dialog alert">
+                <h3>Access Denied</h3>
+                Sorry, This Self-Checkout Station has lost authentication.  Please contact the administrator to resolve this problem.
+            </div>
+            <!-- /TMPL_IF -->
+            <!-- TMPL_IF NAME="timed_out" --><!-- This is what is displayed if login has timed out -->
+            <div class="dialog alert">i
+                <h3>Session timed out</h3>
+                Sorry, your session has timed out, please log in again.
+            </div>
+            <!-- /TMPL_IF -->
+            <!-- TMPL_IF NAME="different_ip" --><!-- This is what is displayed if user doesnt have permission -->
+            <div class="dialog alert">
+                <h3>Session Lost</h3>
+                You are accessing Self-Checkout from a different IP address! please log in again.
+            </div>
+            <!-- /TMPL_IF -->
+            <!-- TMPL_IF NAME="invalid_username_or_password" --><!-- This is what is displayed if user doesnt have permission -->
+            <div class="dialog alert">
+                <h3>Record not found</h3>
+                <p>Your userid was not found in the database.  Please try again.</p>
+            </div><!-- /TMPL_IF -->
+            <!-- TMPL_IF NAME="timedout" -->
+            <div class="error">
+                <h4>Sorry</h4><p>Your session has timed out due to inactivity.  Please sign in.</p>
+            </div>
+            <br />
+            <!-- /TMPL_IF -->
+        </div>
+    </div>
+    <div id="bd">
+        <!-- TMPL_UNLESS NAME="hide_main" -->
+        <div class="yui-main">
+            <div class="yui-g">
+                <div class ="yui-u first">
+                    <!-- TMPL_IF NAME="validuser" -->
+                    <div id="newcheckout" class="sco_entry">
+                        <form id="scan_form" name="scan_form" method="post" action="/cgi-bin/koha/sco/sco-main.pl" onsubmit="return checkout_confirm('<!-- TMPL_VAR NAME='patronid' -->');">
+                            <fieldset><legend><b> Check out or return an item: </b></legend>
+                            <label for="barcode" class="tag">Scan a new item or enter its barcode:</label>
+                            <input id="barcode" name="barcode" size="20" class="focus" />
+                            <input type="hidden" name="op" value="checkout" />
+                            <input type="hidden" name="patronid" value="<!-- TMPL_VAR name="patronid" -->" />
+                            <input type="hidden" name="valid_session" value="1" />
+                            <input type="submit" value="Submit" class="submit" /></fieldset>
+                        </form>
+                        <div>
+                            <form method="post" action="/cgi-bin/koha/sco/sco-main.pl?op=logout" >
+                                <span class="tag">Scan next item, or </span><input type="submit" value="Click here if done." class="finish" />
+                            </form>
+                        </div>
+                    </div> <!-- sco_entry --> <!-- newcheckout -->
+                </div>
+                <div class="yui-u">
+                    <div id="borrowerdetails">
+                        <!-- TMPL_IF NAME="issues_count" -->
+                        <table id="loanTable"><caption>Items you currently have checked out <span class="count">(<!-- TMPL_VAR NAME="issues_count" --> total)</span>:</caption>
+                            <!-- ISSUES TABLE ROWS -->
+                            <thead>
+                                <tr><th>Title</th><th>Call No.</th><th>Due</th><th>Return/Renew</th><!-- TMPL_UNLESS NAME="nofines" --><th>Fines</th><!-- /TMPL_UNLESS --></tr>
+                            </thead>
+                            <tbody>
+                                <!-- TMPL_LOOP NAME="ISSUES" -->
+                                <!-- TMPL_UNLESS name="__odd__" --><tr class="highlight"><!-- TMPL_ELSE --><tr><!-- /TMPL_UNLESS -->
+                                <!-- FIXME: yet another jacket image breakpoint -->
+                                <td><!-- TMPL_IF NAME="amazonimages" --> <!-- TMPL_IF NAME="isbn" --><a href="/cgi-bin/koha/opac-detail.pl?bib=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->"><img src="http://images.amazon.com/images/P/<!-- TMPL_VAR name="isbn" -->.01.THUMBZZZ.jpg" alt="Book Cover Image" class="thumbnail" /></a><!-- /TMPL_IF --> <!-- /TMPL_IF --><!-- TMPL_UNLESS NAME="noitemlinks" --><a href="/cgi-bin/koha/opac-detail.pl?bib=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" escape="html" --></a><!-- TMPL_ELSE --><strong><!-- TMPL_VAR NAME="title" escape="html" --></strong><!-- /TMPL_UNLESS --><span class="item-details">
+                                <!-- TMPL_VAR NAME="author" --></span> (<!-- TMPL_VAR NAME="barcode" -->)</td>
+                                <td><!-- TMPL_VAR NAME="itemcallnumber" DEFAULT="&nbsp;" --></td>
+                                <!-- TMPL_IF NAME="overdue" --><td class="overdue"><!-- TMPL_VAR NAME="date_due_display" --></td><!-- TMPL_ELSE --><td><!-- TMPL_VAR NAME="date_due_display" --></td><!-- /TMPL_IF -->
+                                <td align="center">
+                                <form action="/cgi-bin/koha/sco/sco-main.pl" method="post">
+                                    <input type="hidden" name="op" value="checkout" />
+                                    <input type="hidden" name="patronid" value="<!-- TMPL_VAR NAME="patronid" -->" />
+                                    <input type="hidden" name="barcode" value="<!-- TMPL_VAR NAME="barcode" -->" />
+                                    <input type="hidden" name="confirmed" value=""  />
+                                    <!-- TMPL_IF NAME="norenew" -->
+                                    <input type="button" value="Return Item" name="confirm" class="return" onclick="this.form.op.value='returnbook';this.form.submit();"  />
+                                    <!-- TMPL_ELSE  -->
+                                    <input type="button" value="Renew Item" <!-- TMPL_UNLESS NAME="renew" --> name="confirm"<!-- /TMPL_UNLESS --> class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" />
+                                    <!-- /TMPL_IF -->
+                                </form>
+                                </td>
+                                <!-- TMPL_UNLESS NAME="nofines" --><td><!-- TMPL_IF NAME="charges" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td><!-- /TMPL_UNLESS --></tr>
+                                <!-- /TMPL_LOOP -->
+                            </tbody>
+                        </table>
+                        <!-- TMPL_ELSE -->
+                        <h3>You currently have nothing checked out.</h3>
+                        <!-- /TMPL_IF -->
+                        <!-- TMPL_ELSE --><!-- not validuser -->
+                        <div class="sco_entry" >
+                            <form id="mainform" action="/cgi-bin/koha/sco/sco-main.pl" name="mainform" method="post">
+                                <fieldset class="checkout"><label for="patronid" class="tag">Please enter your card number:</label>
+                                <input type="text" id="patronid" class="focus" size="20" name="patronid" />
 
- 	<!-- TMPL_LOOP NAME="INPUTS" --><input type="hidden" name="<!-- TMPL_VAR NAME="name" -->" value="<!-- TMPL_VAR NAME="value" -->"><!-- /TMPL_LOOP -->
-	<input type="hidden" name="op" value="login" />
- 	<input type="submit" value="Submit" class="submit" /></fieldset></form>
-	</div>
-	<!-- /TMPL_IF -->
-<!-- /TMPL_UNLESS --> <!-- ( / hide main) -->	
-	
-	</div>
-	</div>
-</div>
-<!-- TMPL_INCLUDE NAME="opac-bottom.inc" -->
+                                <!-- TMPL_LOOP NAME="INPUTS" --><input type="hidden" name="<!-- TMPL_VAR NAME="name" -->" value="<!-- TMPL_VAR NAME="value" -->"><!-- /TMPL_LOOP -->
+                                <input type="hidden" name="op" value="login" />
+                                <input type="submit" value="Submit" class="submit" />
+                                </fieldset>
+                            </form>
+                        </div>
+                        <!-- /TMPL_IF -->
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- /TMPL_UNLESS --> <!-- ( / hide main) -->
+        <!-- TMPL_INCLUDE NAME="opac-bottom.inc" -->
diff --git a/opac/sco/sco-main.pl b/opac/sco/sco-main.pl
index 9895892..d3250dd 100755
--- a/opac/sco/sco-main.pl
+++ b/opac/sco/sco-main.pl
@@ -200,9 +200,13 @@ if ($borrower->{cardnumber}) {
     }
 } else {
     $template->param(
-        patronid   => $patronid,
         nouser     => $patronid,
     );
 }
 
+$template->param(
+    TIMEOUT => C4::Context->preference('WebBasedSelfCheckTimeout'),
+    HEADER  => C4::Context->preference('WebBasedSelfCheckHeader'),
+);
+
 output_html_with_http_headers $query, $cookie, $template->output;
-- 
1.6.0.4




More information about the Koha-patches mailing list