Bugzilla – Attachment 22162 Details for
Bug 5670
Housebound Readers Module
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Housebound module for v3.6
Housebound-module-for-v36.patch (text/plain), 43.58 KB, created by
Martin Renvoize (ashimema)
on 2013-10-21 16:10:19 UTC
(
hide
)
Description:
Housebound module for v3.6
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2013-10-21 16:10:19 UTC
Size:
43.58 KB
patch
obsolete
>From 967ec51497ae81c47e46edfb3ed2ed470dc2907d Mon Sep 17 00:00:00 2001 >From: Mark Gavillet <mark.gavillet@ptfs-europe.com> >Date: Tue, 14 Feb 2012 16:38:09 +0000 >Subject: [PATCH] Housebound module for v3.6 > >Conflicts: > admin/systempreferences.pl > >http://bugs.koha-community.org/show_bug.cgi?id=5670 >--- > C4/Auth.pm | 2 + > C4/Housebound.pm | 245 ++++++++++++++++++++ > .../data/mysql/atomicupdate/housebound_tables.sql | 34 +++ > .../intranet-tmpl/prog/en/includes/circ-menu.inc | 3 + > .../prog/en/modules/members/housebound.tt | 52 +++++ > .../prog/en/modules/members/houseboundedit.tt | 78 +++++++ > .../prog/en/modules/members/houseboundinstances.tt | 109 +++++++++ > members/housebound.pl | 101 ++++++++ > members/houseboundedit.pl | 142 ++++++++++++ > members/houseboundinstances.pl | 169 ++++++++++++++ > 10 files changed, 935 insertions(+) > create mode 100644 C4/Housebound.pm > create mode 100644 installer/data/mysql/atomicupdate/housebound_tables.sql > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundedit.tt > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundinstances.tt > create mode 100755 members/housebound.pl > create mode 100755 members/houseboundedit.pl > create mode 100755 members/houseboundinstances.pl > >diff --git a/C4/Auth.pm b/C4/Auth.pm >index d73edaf..da6b41e 100644 >--- a/C4/Auth.pm >+++ b/C4/Auth.pm >@@ -333,6 +333,8 @@ sub get_template_and_user { > ); > if ( $in->{'type'} eq "intranet" ) { > $template->param( >+ useHouseboundModule => C4::Context->preference("useHouseboundModule"), >+ AmazonContent => C4::Context->preference("AmazonContent"), > AmazonCoverImages => C4::Context->preference("AmazonCoverImages"), > AutoLocation => C4::Context->preference("AutoLocation"), > "BiblioDefaultView".C4::Context->preference("IntranetBiblioDefaultView") => 1, >diff --git a/C4/Housebound.pm b/C4/Housebound.pm >new file mode 100644 >index 0000000..0734b91 >--- /dev/null >+++ b/C4/Housebound.pm >@@ -0,0 +1,245 @@ >+package C4::Housebound; >+ >+# Copyright 2011 Mark Gavillet >+# >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it under the >+# terms of the GNU General Public License as published by the Free Software >+# Foundation; either version 2 of the License, or (at your option) any later >+# version. >+# >+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY >+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR >+# A PARTICULAR PURPOSE. See the GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License along >+# with Koha; if not, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use strict; >+use warnings; >+use C4::Context; >+use parent qw(Exporter); >+ >+our $VERSION = 3.02; >+our $debug = $ENV{DEBUG} || 0; >+our @EXPORT = qw( >+ GetHouseboundDetails >+ CreateHouseboundDetails >+ UpdateHouseboundDetails >+ GetCurrentHouseboundInstanceList >+ GetHouseboundInstanceDetails >+ UpdateHouseboundInstanceDetails >+ CreateHouseboundInstanceDetails >+ DeleteHouseboundInstanceDetails >+ GetVolunteerNameAndID >+ GetVolunteerList >+); >+ >+=head1 NAME >+ >+C4::Housebound - Perl Module containing functions for housebound patrons >+ >+=head1 SYNOPSIS >+ >+use C4::Housebound; >+ >+=head1 DESCRIPTION >+ >+This module contains routines for adding, modifying and deleting housebound details for patrons, and instances of item delivery by volunteers >+ >+=head1 FUNCTIONS >+ >+=over 2 >+ >+=item GetHouseboundDetails >+ >+ ($hbnumber, $day, $frequency, $borrowernumber, $Itype_quant, $Item_subject, $Item_authors, $referral, $notes) = &SearchMember($borrowernumber); >+ >+=back >+ >+Values returned >+$hbnumber - the id of the database record in table housebound >+$day - preferred day of the week for delivery >+$frequency - pattern of delivery (e.g. weeks 1/3, week 4, etc.) >+$borrowernumber - borrowernumber that is fed into the function, returned for convenience >+$Itype_quant - one or more values from the list of loanable Itypes (e.g. 2 BKS, 1 DVD, etc.) >+$Item_subject - one or more values defining subjects the borrower is interested in >+$Item_authors - one or more values defining authors the borrower is interested in >+$referral - person or organisation that referred this borrower >+$notes - freetext notes containing useful information about the patron (e.g. beware of the dog!) >+ >+=cut >+ >+sub GetHouseboundDetails { >+ my ($borrowernumber) = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($borrowernumber) { >+ $sth = $dbh->prepare("select * from housebound where borrowernumber=?"); >+ $sth->execute($borrowernumber); >+ my $housebound = $sth->fetchrow_hashref; >+ return $housebound; >+ } >+ return; >+} >+ >+sub CreateHouseboundDetails { >+ my ( $borrowernumber, $day, $frequency, $Itype_quant, $Item_subject, >+ $Item_authors, $referral, $notes ) >+ = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($borrowernumber) { >+ $sth = $dbh->prepare( >+"insert into housebound (day, frequency, borrowernumber, Itype_quant, Item_subject, Item_authors, referral, notes) values (?,?,?,?,?,?,?,?)" >+ ); >+ $sth->execute( $day, $frequency, $borrowernumber, $Itype_quant, >+ $Item_subject, $Item_authors, $referral, $notes ); >+ } >+ return; >+} >+ >+sub UpdateHouseboundDetails { >+ my ($hbnumber, $borrowernumber, $day, >+ $frequency, $Itype_quant, $Item_subject, >+ $Item_authors, $referral, $notes >+ ) = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($hbnumber) { >+ $sth = $dbh->prepare( >+"update housebound set day=?,frequency=?,borrowernumber=?,Itype_quant=?,Item_subject=?,Item_authors=?,referral=?,notes=? where hbnumber=?" >+ ); >+ $sth->execute( >+ $day, $frequency, $borrowernumber, >+ $Itype_quant, $Item_subject, $Item_authors, >+ $referral, $notes, $hbnumber >+ ); >+ } >+ return; >+} >+ >+sub GetCurrentHouseboundInstanceList { >+ my ($borrowernumber) = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($borrowernumber) { >+ >+#$sth = $dbh->prepare("select * from housebound_instance where borrowernumber=?"); >+ $sth = $dbh->prepare( >+"SELECT housebound_instance . * , concat( volunteer.firstname, ' ', volunteer.surname ) AS vol, concat(chooser.firstname, ' ', chooser.surname) as cho, concat(deliverer.firstname, ' ', deliverer.surname) as del FROM housebound_instance left JOIN borrowers volunteer ON volunteer.borrowernumber = housebound_instance.volunteer left join borrowers chooser on chooser.borrowernumber = housebound_instance.chooser left join borrowers deliverer on deliverer.borrowernumber = housebound_instance.deliverer where housebound_instance.borrowernumber=? order by housebound_instance.dmy desc" >+ ); >+ $sth->execute($borrowernumber); >+ my $housebound_instances = $sth->fetchall_arrayref( {} ); >+ return $housebound_instances; >+ } >+ return; >+} >+ >+sub GetVolunteerNameAndID { >+ my ($borrowernumber) = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($borrowernumber) { >+ $sth = $dbh->prepare( >+"select borrowernumber,title,firstname,surname from borrowers where borrowernumber=?" >+ ); >+ $sth->execute($borrowernumber); >+ my $volunteer = $sth->fetchrow_hashref; >+ return $volunteer; >+ } >+ return; >+} >+ >+sub GetVolunteerList { >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ $sth = $dbh->prepare( >+"SELECT borrowernumber as volbornumber, concat(title, ' ', firstname, ' ', surname) as fullname from borrowers where categorycode='VOL' order by surname, firstname asc" >+ ); >+ $sth->execute(); >+ my $volunteers = $sth->fetchall_arrayref( {} ); >+ return $volunteers; >+} >+ >+sub GetHouseboundInstanceDetails { >+ my ($instanceid) = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($instanceid) { >+ $sth = >+ $dbh->prepare("SELECT * from housebound_instance where instanceid=?"); >+ $sth->execute($instanceid); >+ my $instancedetails = $sth->fetchrow_hashref; >+ return $instancedetails; >+ } >+ >+ # return undef if no instanceid >+ return; >+} >+ >+sub UpdateHouseboundInstanceDetails { >+ my ( $instanceid, $hbnumber, $dmy, $time, $borrowernumber, $volunteer, >+ $chooser, $deliverer ) >+ = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($hbnumber) { >+ $sth = $dbh->prepare( >+"update housebound_instance set hbnumber=?, dmy=?, time=?, borrowernumber=?, volunteer=?, chooser=?, deliverer=? where instanceid=?" >+ ); >+ $sth->execute( $hbnumber, $dmy, $time, $borrowernumber, $volunteer, >+ $chooser, $deliverer, $instanceid ); >+ } >+ return; >+} >+ >+sub CreateHouseboundInstanceDetails { >+ my ( $hbnumber, $dmy, $time, $borrowernumber, $volunteer, $chooser, >+ $deliverer ) >+ = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($borrowernumber) { >+ $sth = $dbh->prepare( >+"insert into housebound_instance (hbnumber, dmy, time, borrowernumber, volunteer, chooser, deliverer) values (?,?,?,?,?,?,?)" >+ ); >+ $sth->execute( $hbnumber, $dmy, $time, $borrowernumber, $volunteer, >+ $chooser, $deliverer ); >+ } >+ return; >+} >+ >+sub DeleteHouseboundInstanceDetails { >+ my ($instanceid) = @_; >+ my $dbh = C4::Context->dbh; >+ my $query; >+ my $sth; >+ if ($instanceid) { >+ $sth = >+ $dbh->prepare("delete from housebound_instance where instanceid=?"); >+ $sth->execute($instanceid); >+ } >+ return; >+} >+ >+1; >+ >+__END__ >+ >+=head1 AUTHOR >+ >+Mark Gavillet >+ >+=cut >diff --git a/installer/data/mysql/atomicupdate/housebound_tables.sql b/installer/data/mysql/atomicupdate/housebound_tables.sql >new file mode 100644 >index 0000000..9dfeb0a >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/housebound_tables.sql >@@ -0,0 +1,34 @@ >+CREATE TABLE IF NOT EXISTS `housebound` ( >+ `hbnumber` int(11) NOT NULL auto_increment, >+ `day` text NOT NULL, >+ `frequency` text, >+ `borrowernumber` int(11) default NULL, >+ `Itype_quant` varchar(10) default NULL, >+ `Item_subject` text, >+ `Item_authors` text, >+ `referral` text, >+ `notes` text, >+ PRIMARY KEY (`hbnumber`), >+ KEY `borrowernumber` (`borrowernumber`) >+) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; >+ >+ >+ >+CREATE TABLE IF NOT EXISTS `housebound_instance` ( >+ `instanceid` int(11) NOT NULL auto_increment, >+ `hbnumber` int(11) NOT NULL, >+ `dmy` date default NULL, >+ `time` text, >+ `borrowernumber` int(11) NOT NULL, >+ `volunteer` int(11) default NULL, >+ `chooser` int(11) default NULL, >+ `deliverer` int(11) default NULL, >+ PRIMARY KEY (`instanceid`), >+ KEY `hbnumber` (`hbnumber`,`borrowernumber`,`volunteer`,`chooser`,`deliverer`) >+) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; >+ >+insert into systempreferences (variable,value,options,explanation,type) values >+('useHouseboundModule',1,'','If ON, use the Housebound module','YesNo'); >+ >+insert into categories (categorycode, description, enrolmentperiod, upperagelimit, dateofbirthrequired, category_type) >+values ('VOL','Housebound volunteer','99','999','1','A'); >\ No newline at end of file >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc >index 62db1c5..02f5e06 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc >@@ -76,6 +76,9 @@ > [% IF ( CAN_user_parameters ) %] > [% IF ( logview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/tools/viewlog.pl?do_it=1&modules=MEMBERS&modules=circulation&object=[% borrowernumber %]&src=circ">Modification log</a></li> > [% END %] >+ [% IF useHouseboundModule %] >+ [% IF houseboundview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% borrowernumber %]">Housebound</a></li> >+ [% END %] > [% IF ( EnhancedMessagingPreferences ) %] > [% IF ( sentnotices ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/notices.pl?borrowernumber=[% borrowernumber %]">Notices</a></li> > [% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt >new file mode 100644 >index 0000000..30c09aa >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt >@@ -0,0 +1,52 @@ >+[% INCLUDE 'doc-head-open.inc' %] >+<title>Koha Housebound - [% surname %], [% firstname %]</title> >+[% INCLUDE 'doc-head-close.inc' %] >+ >+</head> >+<body> >+[% INCLUDE 'header.inc' %] >+[% INCLUDE 'patron-search.inc' %] >+ >+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a> › Housebound details for [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %]</div> >+ >+<div id="doc3" class="yui-t2"> >+ <div id="bd"> >+ <div id="yui-main"> >+ <div class="yui-b" >+ <h1>Housebound details for [% title %] [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %]</h1> >+ [% IF ( hbnumber ) %] >+ <!--<div><p><a href="/cgi-bin/koha/members/houseboundedit.pl?hbnumber=[% hbnumber %]&borrowernumber=[% borrowernumber %]">Edit</a> housebound details for this patron.</p></div>--> >+ <div><ul class="toolbar"><li><span class="yui-button yui-link-button"><span class="first-child"><a href="/cgi-bin/koha/members/houseboundedit.pl?hbnumber=[% hbnumber %]&borrowernumber=[% borrowernumber %]&op=edit">Edit</a></span></span></li></ul></div> >+ <div id="houseboundinfo" class="rows"> >+ <ol> >+ <li><span class="label">Delivery day:</span>[% day %]</li> >+ <li><span class="label">Frequency:</span>[% frequency %]</li> >+ <li><span class="label">Material:</span>[% Itype_quant %]</li> >+ <li><span class="label">Subjects:</span>[% Item_subject %]</li> >+ <li><span class="label">Authors:</span>[% Item_authors %]</li> >+ <li><span class="label">Referral:</span>[% referral %]</li> >+ <li><span class="label">Notes:</span>[% notes %]</li> >+ </ol> >+ <br> >+ <div style="height:10px;clear:both;"></div><h1>Deliveries</h1> >+ <div><ul class="toolbar"><li><span class="yui-button yui-link-button"><span class="first-child"><a href="/cgi-bin/koha/members/houseboundinstances.pl?op=add&hbnumber=[% hbnumber %]&borrowernumber=[% borrowernumber %]">Add a new delivery</a></span></span></li></ul></div> >+ <table border="0" width="100%" cellpadding="3" cellspacing="0"> >+ <th><strong>ID</strong></th><th><strong>Date</strong></th><th><strong>Volunteer</strong></th><th><strong>Chooser</strong></th><th><strong>Deliverer</strong></th><th><strong>Actions</strong></th></tr> >+ [% FOREACH instance IN instanceloop %] >+ <tr><td>[% instance.instanceid %]</td><td>[% instance.dmy %] ([% instance.time %])</td><td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% instance.volunteer %]">[% instance.vol %]</a></td><td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% instance.chooser %]">[% instance.cho %]</a></td><td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% instance.deliverer %]">[% instance.del %]</a></td><td align="center"><a href="/cgi-bin/koha/members/houseboundinstances.pl?op=edit&instanceid=[% instance.instanceid %]&borrowernumber=[% instance.borrowernumber %]&hbnumber=[% instance.hbnumber %]">Edit</a> | <a href="/cgi-bin/koha/members/houseboundinstances.pl?op=del&instanceid=[% instance.instanceid %]&borrowernumber=[% instance.borrowernumber %]&hbnumber=[% instance.hbnumber %]">Delete</a></td></tr> >+ [% END %] >+ </table> >+ </div> >+ <!--<div><br><p><a href="/cgi-bin/koha/members/housebound.pl?op=edit&hbnumber=[% hbnumber %]&borrowernumber=[% borrowernumber %]">Edit</a> housebound details for this patron.</p></div>--> >+ >+ [% ELSE %] >+ <p>This patron does not currently have registered housebound details. To add these details <a href="/cgi-bin/koha/members/houseboundedit.pl?hnbnumber=[% hbnumber %]&borrowernumber=[% borrowernumber %]&op=add">click here</a>.</p> >+ [% END %] >+ </div> >+ </div> >+ <div class="yui-b"> >+ [% INCLUDE 'circ-menu.inc' %] >+ </div> >+ </div> >+</div> >+[% INCLUDE 'intranet-bottom.inc' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundedit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundedit.tt >new file mode 100644 >index 0000000..ce98204 >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundedit.tt >@@ -0,0 +1,78 @@ >+[% INCLUDE 'doc-head-open.inc' %] >+<title>Koha Housebound - [% surname %], [% firstname %]</title> >+[% INCLUDE 'doc-head-close.inc' %] >+<script type="text/javascript" language="javascript"> >+function check_form_housebound() >+{ >+ document.form.submit(); >+} >+</script> >+</head> >+<body> >+[% INCLUDE 'header.inc' %] >+[% INCLUDE 'patron-search.inc' %] >+ >+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a> › Edit housebound details for [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %]</div> >+ >+<div id="doc3" class="yui-t2"> >+ <div id="bd"> >+ <div id="yui-main"> >+ <div class="yui-b"> >+ <h1>Edit housebound details for [% title %] [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %]</h1> >+ >+ <!--<div><ul class="toolbar"><li><span class="yui-button yui-link-button"><span class="first-child"><a href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% borrowernumber %]">Cancel changes</a></span></span></li></ul></div>--> >+ <form id="editform" method="post" action="/cgi-bin/koha/members/houseboundedit.pl" name="form"> >+ <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" /> >+ <input type="hidden" name="hbnumber" value="[% hbnumber %]" /> >+ <input type="hidden" name="op" value="[% opeditsubmit %][% opaddsubmit %]" /> >+ <fieldset id="houseboundentry" class="rows"> >+ <legend>Housebound details</legend> >+ <ol> >+ <li> >+ <label for="day">Delivery day:</label> >+ <select id="day" name="day"> >+ <option value="">Select a day</option> >+ <option value="Sunday"[% IF ( dsun ) %] selected="selected"[% END %]>Sunday</option> >+ <option value="Monday"[% IF ( dmon ) %] selected="selected"[% END %]>Monday</option> >+ <option value="Tuesday"[% IF ( dtue ) %] selected="selected"[% END %]>Tuesday</option> >+ <option value="Wednesday"[% IF ( dwed ) %] selected="selected"[% END %]>Wednesday</option> >+ <option value="Thursday"[% IF ( dthu ) %] selected="selected"[% END %]>Thursday</option> >+ <option value="Friday"[% IF ( dfri ) %] selected="selected"[% END %]>Friday</option> >+ <option value="Saturday"[% IF ( dsat ) %] selected="selected"[% END %]>Saturday</option> >+ </select> >+ </li> >+ <li> >+ <label for="frequency">Frequency:</label> >+ <select id="frequency" name="frequency"> >+ <option value="">Select a frequency</option> >+ <option value="Week 1/3"[% IF ( wk1 ) %] selected="selected"[% END %]>Week 1/3</option> >+ <option value="Week 2/4"[% IF ( wk2 ) %] selected="selected"[% END %]>Week 2/4</option> >+ </select> >+ </li> >+ <li><label for="Itype_quant">Material:</label><input id="Itype_quant" type="text" value="[% Itype_quant %]" size="50" name="Itype_quant"></li> >+ <li><label for="Item_subject">Subjects:</label><input id="Item_subject" type="text" value="[% Item_subject %]" size="50" name="Item_subject"></li> >+ <li><label for="Item_authors">Authors:</label><input id="Item_authors" type="text" value="[% Item_authors %]" size="50" name="Item_authors"></li> >+ <li><label for="referral">Referral:</label><input id="referral" type="text" value="[% referral %]" size="50" name="referral"></li> >+ <li><label for="notes">Notes:</label><input id="notes" type="text" value="[% notes %]" size="50" name="notes"></li> >+ </fieldset> >+ <fieldset class="action"> >+ <input type="submit" value="Save changes" onclick="return check_form_housebound();" name="save"> >+ <a class="cancel" href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% borrowernumber %]">Cancel</a> >+ </fieldset> >+ </form> >+ >+ >+ >+ >+ >+ >+ >+ >+ </div> >+ </div> >+ <div class="yui-b"> >+ [% INCLUDE 'circ-menu.inc' %] >+ </div> >+ </div> >+</div> >+[% INCLUDE 'intranet-bottom.inc' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundinstances.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundinstances.tt >new file mode 100644 >index 0000000..09f9a7b >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundinstances.tt >@@ -0,0 +1,109 @@ >+[% INCLUDE 'doc-head-open.inc' %] >+<title>Koha Housebound - [% surname %], [% firstname %]</title> >+[% INCLUDE 'doc-head-close.inc' %] >+<script type="text/javascript" language="javascript"> >+function check_form_housebound() >+{ >+ document.form.submit(); >+} >+function deleteInstance() >+{ >+ window.location="/cgi-bin/koha/members/houseboundinstances.pl?op=delsubmit&borrowernumber=[% borrowernumber %]&instanceid=[% delinstanceid %]&hbnumber=[% hbnumber %]"; >+} >+function cancelInstance() >+{ >+ window.location="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% borrowernumber %]"; >+} >+</script> >+[% INCLUDE 'calendar.inc' %] >+</head> >+<body> >+[% INCLUDE 'header.inc' %] >+[% INCLUDE 'patron-search.inc' %] >+ >+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a> › Housebound deliveries for [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %]</div> >+<div id="doc3" class="yui-t2"> >+ <div id="bd"> >+ <div id="yui-main"> >+ <div class="yui-b"> >+ <h1>Housebound deliveries for [% title %] [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %]</h1> >+ <form name="form" id="instance_form" method="post" action="/cgi-bin/koha/members/houseboundinstances.pl"> >+ <input type="hidden" name="op" value="[% op %]" /> >+ <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" /> >+ <input type="hidden" name="hbnumber" value="[% hbnumber %]" /> >+ <input type="hidden" name="instanceid" value="[% instanceid %]" /> >+ [% IF ( opdel ) %] >+ <p>Are you sure you want to delete this delivery?</p> >+ <p><button id="ybutton" onclick="deleteInstance(); return false;">YES</button> <button id="nbutton" onclick="cancelInstance(); return false;">NO</button></p> >+ [% ELSE %] >+ <fieldset class="rows" id="instance"> >+ <legend>Delivery details</legend> >+ <ol> >+ <li> >+ <label for="dmy">Date: </label> >+ <input type="text" id="dmy" name="dmy" size="20" value="[% dmy %]" /> >+ <img src="[% themelang %]/lib/calendar/cal.gif" id="dmy_button" alt="Show Calendar" /> >+ <script language="JavaScript" type="text/javascript"> >+ Calendar.setup( >+ { >+ inputField : "dmy", >+ ifFormat : "[% DHTMLcalendar_dateformat %]", >+ ifFormat : "%Y-%m-%d", >+ button : "dmy_button" >+ } >+ ); >+ </script> >+ </li> >+ <li> >+ <label for="time">Time:</label> >+ <select id="time" name="time"> >+ <option value="">Select a time</option> >+ <option value="am"[% IF ( timeam ) %] selected="selected"[% END %]>am</option> >+ <option value="pm"[% IF ( timepm ) %] selected="selected"[% END %]>pm</option> >+ </select> >+ </li> >+ <li> >+ <label for="volunteer">Volunteer:</label> >+ <select id="volunteer" name="volunteer"> >+ <option value="">Select a volunteer</option> >+ [% FOREACH volunteer IN volunteerlist %] >+ <option value="[% volunteer.volbornumber %]" [% volunteer.selected %]>[% volunteer.fullname %]</option> >+ [% END %] >+ </select> >+ </li> >+ <li> >+ <label for="chooser">Chooser:</label> >+ <select id="chooser" name="chooser"> >+ <option value="">Select a chooser</option> >+ [% FOREACH cho IN chooserlist %] >+ <option value="[% cho.volbornumber %]" [% cho.selected %]>[% cho.fullname %]</option> >+ [% END %] >+ </select> >+ </li> >+ <li> >+ <label for="deliverer">Deliverer:</label> >+ <select id="deliverer" name="deliverer"> >+ <option value="">Select a deliverer</option> >+ [% FOREACH del IN delivererlist %] >+ <option value="[% del.volbornumber %]" [% del.selected %]>[% del.fullname %]</option> >+ [% END %] >+ </select> >+ </li> >+ >+ </ol> >+ </fieldset> >+ <fieldset class="action"> >+ <input type="submit" value="Save" onclick="return check_form_instance();" name="save"> >+ <a class="cancel" href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% borrowernumber %]">Cancel</a> >+ </fieldset> >+ [% END %] >+ </form> >+ >+ </div> >+ </div> >+ <div class="yui-b"> >+ [% INCLUDE 'circ-menu.inc' %] >+ </div> >+ </div> >+</div> >+[% INCLUDE 'intranet-bottom.inc' %] >diff --git a/members/housebound.pl b/members/housebound.pl >new file mode 100755 >index 0000000..56a4eac >--- /dev/null >+++ b/members/housebound.pl >@@ -0,0 +1,101 @@ >+#!/usr/bin/perl >+ >+# Copyright 2011 Mark Gavillet & PTFS Europe Ltd >+# >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it under the >+# terms of the GNU General Public License as published by the Free Software >+# Foundation; either version 2 of the License, or (at your option) any later >+# version. >+# >+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY >+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR >+# A PARTICULAR PURPOSE. See the GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License along >+# with Koha; if not, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use strict; >+use warnings; >+use CGI; >+use C4::Context; >+use C4::Auth; >+use C4::Output; >+use C4::Members; >+use C4::Koha; >+use C4::Branch; >+use C4::Housebound; >+ >+use vars qw($debug); >+ >+BEGIN { >+ $debug = $ENV{DEBUG} || 0; >+} >+ >+my $input = CGI->new(); >+ >+sub nl2br { >+ my ($t) = shift or return; >+ $t =~ s/\n/\n<br>/g; >+ return ($t); >+} >+ >+my $dbh = C4::Context->dbh; >+ >+my ( $template, $loggedinuser, $cookie ) = get_template_and_user( >+ { template_name => "members/housebound.tmpl", >+ query => $input, >+ type => "intranet", >+ authnotrequired => 0, >+ flagsrequired => { borrowers => 1 }, >+ debug => ($debug) ? 1 : 0, >+ } >+); >+ >+my $borrowernumber = $input->param('borrowernumber'); >+ >+my $borrowerdetails = C4::Members::GetMemberDetails($borrowernumber); >+my $branchdetail = GetBranchDetail( $borrowerdetails->{'branchcode'} ); >+my $categorydetail = GetMember( $borrowernumber, 'borrowernumber' ); >+my $housebound = GetHouseboundDetails($borrowernumber); >+my $housebound_instances = GetCurrentHouseboundInstanceList($borrowernumber); >+ >+$template->param( >+ surname => $borrowerdetails->{'surname'}, >+ firstname => $borrowerdetails->{'firstname'}, >+ cardnumber => $borrowerdetails->{'cardnumber'}, >+ borrowernumber => $borrowerdetails->{'borrowernumber'}, >+ houseboundview => 'on', >+ address => $borrowerdetails->{'address'}, >+ address2 => $borrowerdetails->{'address2'}, >+ city => $borrowerdetails->{'city'}, >+ phone => $borrowerdetails->{'phone'}, >+ phonepro => $borrowerdetails->{'phonepro'}, >+ mobile => $borrowerdetails->{'mobile'}, >+ email => $borrowerdetails->{'email'}, >+ emailpro => $borrowerdetails->{'emailpro'}, >+ categoryname => $categorydetail->{'description'}, >+ categorycode => $borrowerdetails->{'categorycode'}, >+ branch => $borrowerdetails->{'branch'}, >+ branchname => $branchdetail->{branchname}, >+ zipcode => $borrowerdetails->{'zipcode'} >+); >+ >+$template->param( >+ hbnumber => $housebound->{'hbnumber'}, >+ day => $housebound->{'day'}, >+ frequency => $housebound->{'frequency'}, >+ Itype_quant => $housebound->{'Itype_quant'}, >+ Item_subject => $housebound->{'Item_subject'}, >+ Item_authors => $housebound->{'Item_authors'}, >+ referral => $housebound->{'referral'}, >+ notes => $housebound->{'notes'} >+); >+ >+if ($housebound_instances) { >+ $template->param( instanceloop => $housebound_instances ); >+} >+ >+output_html_with_http_headers $input, $cookie, $template->output; >diff --git a/members/houseboundedit.pl b/members/houseboundedit.pl >new file mode 100755 >index 0000000..7f76ccf >--- /dev/null >+++ b/members/houseboundedit.pl >@@ -0,0 +1,142 @@ >+#!/usr/bin/perl >+ >+# Copyright 2011 Mark Gavillet & PTFS Europe Ltd >+# >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it under the >+# terms of the GNU General Public License as published by the Free Software >+# Foundation; either version 2 of the License, or (at your option) any later >+# version. >+# >+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY >+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR >+# A PARTICULAR PURPOSE. See the GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License along >+# with Koha; if not, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use strict; >+use warnings; >+use CGI; >+use C4::Context; >+use C4::Auth; >+use C4::Output; >+use C4::Members; >+use C4::Koha; >+use C4::Branch; >+use C4::Housebound; >+ >+use vars qw($debug); >+ >+BEGIN { >+ $debug = $ENV{DEBUG} || 0; >+} >+ >+my $input = CGI->new(); >+ >+my $dbh = C4::Context->dbh; >+ >+my ( $template, $loggedinuser, $cookie ) = get_template_and_user( >+ { template_name => "members/houseboundedit.tmpl", >+ query => $input, >+ type => "intranet", >+ authnotrequired => 0, >+ flagsrequired => { borrowers => 1 }, >+ debug => ($debug) ? 1 : 0, >+ } >+); >+ >+my $borrowernumber = $input->param('borrowernumber'); >+my $op = $input->param('op'); >+if ( $op eq "editsubmit" ) { >+ UpdateHouseboundDetails( >+ $input->param('hbnumber'), $input->param('borrowernumber'), >+ $input->param('day'), $input->param('frequency'), >+ $input->param('Itype_quant'), $input->param('Item_subject'), >+ $input->param('Item_authors'), $input->param('referral'), >+ $input->param('notes') >+ ); >+ my $url = >+ "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; >+ print "Location: $url"; >+} >+if ( $op eq "addsubmit" ) { >+ CreateHouseboundDetails( >+ $input->param('borrowernumber'), $input->param('day'), >+ $input->param('frequency'), $input->param('Itype_quant'), >+ $input->param('Item_subject'), $input->param('Item_authors'), >+ $input->param('referral'), $input->param('notes') >+ ); >+ my $url = >+ "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; >+ print "Location: $url"; >+} >+if ( $op eq "edit" ) { >+ $template->param( opeditsubmit => "editsubmit" ); >+} >+if ( $op eq "add" ) { >+ $template->param( opaddsubmit => "addsubmit" ); >+} >+ >+my $borrowerdetails = C4::Members::GetMemberDetails($borrowernumber); >+my $branchdetail = GetBranchDetail( $borrowerdetails->{'branchcode'} ); >+my $categorydetail = GetMember( $borrowernumber, 'borrowernumber' ); >+my $housebound = GetHouseboundDetails($borrowernumber); >+ >+$template->param( >+ surname => $borrowerdetails->{'surname'}, >+ firstname => $borrowerdetails->{'firstname'}, >+ cardnumber => $borrowerdetails->{'cardnumber'}, >+ borrowernumber => $borrowerdetails->{'borrowernumber'}, >+ houseboundview => 'on', >+ address => $borrowerdetails->{'address'}, >+ address2 => $borrowerdetails->{'address2'}, >+ city => $borrowerdetails->{'city'}, >+ phone => $borrowerdetails->{'phone'}, >+ phonepro => $borrowerdetails->{'phonepro'}, >+ mobile => $borrowerdetails->{'mobile'}, >+ email => $borrowerdetails->{'email'}, >+ emailpro => $borrowerdetails->{'emailpro'}, >+ categoryname => $categorydetail->{'description'}, >+ categorycode => $borrowerdetails->{'categorycode'}, >+ branch => $borrowerdetails->{'branch'}, >+ branchname => $branchdetail->{branchname}, >+ zipcode => $borrowerdetails->{'zipcode'} >+); >+ >+$template->param( >+ hbnumber => $housebound->{'hbnumber'}, >+ day => $housebound->{'day'}, >+ frequency => $housebound->{'frequency'}, >+ Itype_quant => $housebound->{'Itype_quant'}, >+ Item_subject => $housebound->{'Item_subject'}, >+ Item_authors => $housebound->{'Item_authors'}, >+ referral => $housebound->{'referral'}, >+ notes => $housebound->{'notes'} >+); >+ >+if ( $housebound->{'day'} eq "Sunday" ) { >+ $template->param( dsun => 1 ); >+} elsif ( $housebound->{'day'} eq "Monday" ) { >+ $template->param( dmon => 1 ); >+} elsif ( $housebound->{'day'} eq "Tuesday" ) { >+ $template->param( dtue => 1 ); >+} elsif ( $housebound->{'day'} eq "Wednesday" ) { >+ $template->param( dwed => 1 ); >+} elsif ( $housebound->{'day'} eq "Thursday" ) { >+ $template->param( dthu => 1 ); >+} elsif ( $housebound->{'day'} eq "Friday" ) { >+ $template->param( dfri => 1 ); >+} elsif ( $housebound->{'day'} eq "Saturday" ) { >+ $template->param( dsat => 1 ); >+} >+ >+if ( $housebound->{'frequency'} eq "Week 1/3" ) { >+ $template->param( wk1 => 1 ); >+} elsif ( $housebound->{'frequency'} eq "Week 2/4" ) { >+ $template->param( wk2 => 1 ); >+} >+ >+output_html_with_http_headers $input, $cookie, $template->output; >diff --git a/members/houseboundinstances.pl b/members/houseboundinstances.pl >new file mode 100755 >index 0000000..91fec46 >--- /dev/null >+++ b/members/houseboundinstances.pl >@@ -0,0 +1,169 @@ >+#!/usr/bin/perl >+ >+# Copyright 2011 Mark Gavillet & PTFS Europe Ltd >+# >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it under the >+# terms of the GNU General Public License as published by the Free Software >+# Foundation; either version 2 of the License, or (at your option) any later >+# version. >+# >+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY >+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR >+# A PARTICULAR PURPOSE. See the GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License along >+# with Koha; if not, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use strict; >+use warnings; >+use CGI; >+use C4::Context; >+use C4::Auth; >+use C4::Output; >+use C4::Members; >+use C4::Koha; >+use C4::Branch; >+use C4::Housebound; >+use C4::Dates; >+ >+use vars qw($debug); >+ >+BEGIN { >+ $debug = $ENV{DEBUG} || 0; >+} >+ >+my $input = CGI->new(); >+ >+my $dbh = C4::Context->dbh; >+ >+my ( $template, $loggedinuser, $cookie ) = get_template_and_user( >+ { template_name => "members/houseboundinstances.tmpl", >+ query => $input, >+ type => "intranet", >+ authnotrequired => 0, >+ flagsrequired => { borrowers => 1 }, >+ debug => ($debug) ? 1 : 0, >+ } >+); >+ >+my $borrowernumber = $input->param('borrowernumber'); >+ >+my $op = $input->param('op'); >+if ( $op eq "add" ) { >+ $template->param( opadd => 1, op => "addsubmit" ); >+} >+if ( $op eq "edit" ) { >+ $template->param( opedit => 1, op => "editsubmit" ); >+} >+if ( $op eq "del" ) { >+ $template->param( opdel => 1, op => "delsubmit" ); >+} >+if ( $op eq "addsubmit" ) { >+ CreateHouseboundInstanceDetails( >+ $input->param('hbnumber'), $input->param('dmy'), >+ $input->param('time'), $input->param('borrowernumber'), >+ $input->param('volunteer'), $input->param('chooser'), >+ $input->param('deliverer') >+ ); >+ my $url = >+ "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; >+ print "Location: $url"; >+} >+if ( $op eq "delsubmit" ) { >+ DeleteHouseboundInstanceDetails( $input->param('instanceid') ); >+ my $url = >+ "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; >+ print "Location: $url"; >+} >+if ( $op eq "editsubmit" ) { >+ UpdateHouseboundInstanceDetails( >+ $input->param('instanceid'), $input->param('hbnumber'), >+ $input->param('dmy'), $input->param('time'), >+ $input->param('borrowernumber'), $input->param('volunteer'), >+ $input->param('chooser'), $input->param('deliverer') >+ ); >+ my $url = >+ "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; >+ print "Location: $url"; >+} >+ >+my $borrowerdetails = C4::Members::GetMemberDetails($borrowernumber); >+my $branchdetail = GetBranchDetail( $borrowerdetails->{'branchcode'} ); >+my $categorydetail = GetMember( $borrowernumber, 'borrowernumber' ); >+my $housebound = GetHouseboundDetails($borrowernumber); >+my $volunteerlist = GetVolunteerList(); >+my $chooserlist = GetVolunteerList(); >+my $delivererlist = GetVolunteerList(); >+my $delinstanceid = $input->param('instanceid'); >+my $instanceid = $input->param('instanceid'); >+my $instancedetails = GetHouseboundInstanceDetails($instanceid); >+my $selectedvolunteer = $instancedetails->{'volunteer'}; >+my $selectedchooser = $instancedetails->{'chooser'}; >+my $selecteddeliverer = $instancedetails->{'deliverer'}; >+ >+foreach my $ivol (@$volunteerlist) { >+ $ivol->{selected} = 'selected' >+ if $ivol->{'volbornumber'} == $selectedvolunteer; >+} >+foreach my $icho (@$chooserlist) { >+ $icho->{selected} = 'selected' >+ if $icho->{'volbornumber'} == $selectedchooser; >+} >+foreach my $idel (@$delivererlist) { >+ $idel->{selected} = 'selected' >+ if $idel->{'volbornumber'} == $selecteddeliverer; >+} >+if ( $instancedetails->{'time'} eq "am" ) { >+ $template->param( timeam => 1 ); >+} >+if ( $instancedetails->{'time'} eq "pm" ) { >+ $template->param( timepm => 1 ); >+} >+ >+$template->param( >+ surname => $borrowerdetails->{'surname'}, >+ firstname => $borrowerdetails->{'firstname'}, >+ cardnumber => $borrowerdetails->{'cardnumber'}, >+ borrowernumber => $borrowerdetails->{'borrowernumber'}, >+ houseboundview => 'on', >+ address => $borrowerdetails->{'address'}, >+ address2 => $borrowerdetails->{'address2'}, >+ city => $borrowerdetails->{'city'}, >+ phone => $borrowerdetails->{'phone'}, >+ phonepro => $borrowerdetails->{'phonepro'}, >+ mobile => $borrowerdetails->{'mobile'}, >+ email => $borrowerdetails->{'email'}, >+ emailpro => $borrowerdetails->{'emailpro'}, >+ categoryname => $categorydetail->{'description'}, >+ categorycode => $borrowerdetails->{'categorycode'}, >+ branch => $borrowerdetails->{'branch'}, >+ branchname => $branchdetail->{branchname}, >+ zipcode => $borrowerdetails->{'zipcode'} >+); >+ >+$template->param( >+ hbnumber => $housebound->{'hbnumber'}, >+ day => $housebound->{'day'}, >+ frequency => $housebound->{'frequency'}, >+ Itype_quant => $housebound->{'Itype_quant'}, >+ Item_subject => $housebound->{'Item_subject'}, >+ Item_authors => $housebound->{'Item_authors'}, >+ referral => $housebound->{'referral'}, >+ notes => $housebound->{'notes'}, >+ DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), >+ volunteerlist => $volunteerlist, >+ chooserlist => $chooserlist, >+ delivererlist => $delivererlist, >+ delinstanceid => $delinstanceid, >+ instanceid => $instanceid, >+ dmy => $instancedetails->{'dmy'}, >+ time => $instancedetails->{'time'}, >+ volunteer => $instancedetails->{'volunteer'}, >+ chooser => $instancedetails->{'chooser'}, >+ deliverer => $instancedetails->{'deliverer'} >+); >+ >+output_html_with_http_headers $input, $cookie, $template->output; >-- >1.7.10.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 5670
:
3038
|
22162
|
22163
|
22164
|
22165
|
26816
|
27288
|
50930
|
51377
|
51875
|
54384
|
54385
|
55326
|
55334
|
55335
|
55336
|
55734
|
55735
|
55736
|
55737
|
55738
|
55739
|
55865
|
55866
|
55867
|
55890
|
55891
|
56298
|
56299
|
56300
|
56301
|
56302
|
56308
|
56337
|
56341
|
56346
|
56347
|
56348
|
56349
|
56350
|
56351
|
56352
|
56353
|
56354
|
56355
|
56356
|
56357
|
56358
|
56359
|
56360
|
56361
|
56362
|
56363
|
56364
|
56365
|
56366
|
56367
|
56368
|
56369
|
56580
|
56581
|
56582
|
56583
|
56584
|
56585
|
56586
|
56587
|
56588
|
56589
|
56590
|
56591
|
56592
|
56593
|
56594
|
56595
|
56596
|
56597
|
56598
|
56599
|
56600
|
56601
|
56602
|
56603
|
56604
|
56605
|
56606