From de8e0877c7c8f7e9991dcbf13b3c43b33cafc3e2 Mon Sep 17 00:00:00 2001 From: Chris Nighswonger Date: Thu, 11 Feb 2010 14:21:30 -0500 Subject: [PATCH] Enhancement: [3.4] [1/2] Web-based checkout enhancements 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 | 21 +- 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 | 390 +++++++++++--------- opac/sco/sco-main.pl | 6 +- 5 files changed, 369 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 ab92915..7d27e5b 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 @@ -295,18 +295,27 @@ Circulation: - fines (when misc/cronjobs/fines.pl 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 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 @@ -@import url("../../en/lib/yui/reset-fonts-grids.css"); -@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 5af86f9..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 @@ - › Self Checkout - -" /> -/includes/favicon.ico" type="image/x-icon" /> - -/css/sco.css" /> - - -
-
-
- -

Self Checkout Help

- -

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.

- -

Step One: Enter your user id

-

Enter your User ID, and click the submit button (or press the enter key).

- -

Step Two: Scan the barcode for each item, one at a time

-

Scan each item and wait for the page to reload before scanning the next item. -The checked-out item should appear in your checkouts list. -The Submit button only needs to be clicked if you enter the barcode manually.

- -

Step Three: Click the 'Finish' button

- - - -
- + › Self Checkout + + " /> + /includes/favicon.ico" type="image/x-icon" /> + /css/sco.css" /> + + +
+
+
+

Self Checkout Help

+ +

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.

+ +

Step One: Enter your user id

+ +

Enter your User ID, and click the submit button (or press the enter key).

+ +

Step Two: Scan the barcode for each item, one at a time

+ +

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.

+ +

Step Three: Click the 'Click here if done' link when done

+
+
+
+
+
+ + 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 bf5b33d..2b18c6f 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 @@ -/css/sco.css" /> + /css/opac.css" /> + /css/sco.css" /> - -
- -

Self Checkout System

-
-
- - -

Item cannot be checked out.

Sorry, This item cannot be checked out at this station.

-

Title:

-

- - MESSAGE 1: The system does not recognize this barcode. - - MESSAGE 2: You have borrowed too many items and can't check out any more. - - MESSAGE 3: This item is checked out to someone else. - - MESSAGE 4: You cannot renew this item again. - - MESSAGE 5: This item is not for loan. - - MESSAGE 6: You owe the library and cannot borrow. - - MESSAGE 7: This item has been withdrawn from the collection. - - MESSAGE 8: - - MESSAGE 9: This item is reserved for another patron. - - MESSAGE 10: - - MESSAGE 11: Your account has expired. - - MESSAGE 12: Your account has been suspended. - - MESSAGE 13: This card has been declared lost. - - MESSAGE 14: - - MESSAGE 15: - - Please see a member of the library staff. -

-
- -" /> - -" /> - - - -
- - -

Please confirm the checkout:

-

This item is already checked out to you. Return it?

- -
- -" /> -" /> - - - - - name="confirm" class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" /> - -
-
- - -

Access Denied

-Sorry, This Self-Checkout Station has lost authentication. Please contact the administrator to resolve this problem.
- - -

Session timed out

Sorry, your session has timed out, please log in again.
-

Session Lost

You are accessing Self-Checkout from a different IP address! please log in again.
- -

Record not found

Your userid was not found in the database. Please try again.

- - - -
- -

Self Checkout

- - -
- HELP with the self checkout system -
- - - -

You are logged in as .

- - " alt="" /> - - -
- -

Sorry

The userid was not found in the database. Please try again.

-
- - - - -

Sorry

Your session has timed out due to inactivity. Please sign in.

-
- - -
-
-
Check out or return an item: - - - - " /> - -
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
Checkouts for ( total)
TitleCall No.DueRenewFines
">.01.THUMBZZZ.jpg" alt="Book Cover Image" class="thumbnail" /> "> - () -
- - " /> - " /> - - - - - name="confirm" class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" /> +
+
+ + + +

Self Checkout System

- -
YesNo
- -

You currently have nothing checked out.

- - - -
-
-
- - - " value=""> - -
-
- - - -
-
-
- +
+
+ Need help? +
+ + + + + + + + " alt="" /> + + + + +
+

Sorry

+

Card number was not found in the database. Please try again.

+
+
+ + +

Item cannot be checked out.

Sorry, This item cannot be checked out at this station.

+

Title:

+

+ + MESSAGE 1: The system does not recognize this barcode. + + MESSAGE 2: You have borrowed too many items and can't check out any more. + + MESSAGE 3: This item is checked out to someone else. + + MESSAGE 4: You cannot renew this item again. + + MESSAGE 5: This item is not for loan. + + MESSAGE 6: You owe the library and cannot borrow. + + MESSAGE 7: This item has been withdrawn from the collection. + + MESSAGE 8: + + MESSAGE 9: This item is reserved for another patron. + + MESSAGE 10: + + MESSAGE 11: Your account has expired. + + MESSAGE 12: Your account has been suspended. + + MESSAGE 13: This card has been declared lost. + + MESSAGE 14: + + MESSAGE 15: + + Please see a member of the library staff. +

+
+ + " /> + + " /> + + + +
+
+ + +
+

Please confirm the checkout:

+

This item is already checked out to you. Return it?

+
+ + " /> + " /> + + + + + name="confirm" class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" /> + +
+
+ + +
+

Access Denied

+ Sorry, This Self-Checkout Station has lost authentication. Please contact the administrator to resolve this problem. +
+ + +
i +

Session timed out

+ Sorry, your session has timed out, please log in again. +
+ + +
+

Session Lost

+ You are accessing Self-Checkout from a different IP address! please log in again. +
+ + +
+

Record not found

+

Your userid was not found in the database. Please try again.

+
+ +
+

Sorry

Your session has timed out due to inactivity. Please sign in.

+
+
+ +
+
+
+ +
+
+
+ +
+
+
Check out or return an item: + + + + " /> + +
+
+
+
+ Scan next item, or +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + +
Items you currently have checked out ( total):
TitleCall No.DueReturn/RenewFines
">.01.THUMBZZZ.jpg" alt="Book Cover Image" class="thumbnail" /> "> + () +
+ + " /> + " /> + + + + + name="confirm" class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" /> + +
+
YesNo
+ +

You currently have nothing checked out.

+ + +
+
+
+ + " value=""> + + +
+
+
+ +
+
+
+
+ + 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.7.0.4