Skip to content

Commit

Permalink
[17/30] Patron Card Creator member search interface and code
Browse files Browse the repository at this point in the history
  • Loading branch information
cnighswonger committed Jan 11, 2010
1 parent 7a6a1ac commit 4914858
Show file tree
Hide file tree
Showing 2 changed files with 266 additions and 0 deletions.
@@ -0,0 +1,136 @@
<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
<title>Koha &rsaquo; Patrons <!-- TMPL_IF NAME="searching" -->&rsaquo; Search Results<!-- /TMPL_IF --></title>
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
<style type="text/css">
#custom-doc { width:47.23em;*width:46.04em;min-width:600px; margin:auto; text-align:left; }
</style>
<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
$("#CheckAll").click(function(){
$(".checkboxed").checkCheckboxes();
return false;
});
$("#CheckNone").click(function(){
$(".checkboxed").unCheckCheckboxes();
return false;
});
});
function add_item(borrowernum,batch_id,type_id){
var getstr='';
if (borrowernum == 'checked') {
itms= new Array;
if(document.resultform.borrowernumber.length > 0) {
for (var i=0; i < document.resultform.borrowernumber.length; i++) {
if (document.resultform.borrowernumber[i].checked) {
itms.push("borrower_number=" + document.resultform.borrowernumber[i].value);
}
}
getstr = itms.join("&");
} else {
getstr = "borrower_number="+document.resultform.borrowernumber.value;
}
} else {
getstr = "borrower_number="+borrowernum;
}
var myurl = "edit-batch.pl?op=add&batch_id="+batch_id+"&"+getstr;
window.opener.location.href = myurl;
}
//]]>
</script>
</head>
<body>

<div id="custom-doc" class="yui-t7">
<div id="bd">
<div class="yui-g">
<h3>Patron Search</h3>

<div class="browse">
Browse by last name:
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=a&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">A</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=b&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">B</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=c&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">C</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=d&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">D</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=e&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">E</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=f&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">F</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=g&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">G</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=h&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">H</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=i&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">I</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=j&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">J</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=k&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">K</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=l&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">L</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=m&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">M</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=n&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">N</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=o&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">O</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=p&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">P</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=q&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">Q</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=r&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">R</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=s&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">S</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=t&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">T</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=u&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">U</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=v&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">V</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=w&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">W</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=x&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">X</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=y&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">Y</a>
<a href="/cgi-bin/koha/patroncards/members-search.pl?member=z&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->">Z</a>
</div>

<form method="get" action="/cgi-bin/koha/patroncards/members-search.pl"><p>
<input type="hidden" name="batch_id" value="<!-- TMPL_VAR NAME="batch_id" -->" />
<input type="hidden" name="type" value="<!-- TMPL_VAR NAME="type" -->" />
<label for="member">Name</label>
<input id="member" name="member" />
<label for="category">Category code</label>
<input id="category" name="category" />
<input type="submit" value="Search" /></p>
</form>

<!-- TMPL_IF NAME="resultsloop" -->
<div id="searchheader"> <h3>Results <!-- TMPL_VAR Name ="from" --> to <!-- TMPL_VAR Name ="to" --> of <!-- TMPL_VAR Name ="numresults" --> found for <!-- TMPL_IF NAME="member" -->name: '<span class="ex"><!-- TMPL_VAR NAME="member" --><!-- TMPL_ELSIF NAME="category_type" -->category code: '<span class="ex"><!-- TMPL_VAR NAME="category_type" --><!-- /TMPL_IF --></span>'</h3></div>
<!-- TMPL_IF NAME="paginationbar" --><div id="pagination_top"><!-- TMPL_VAR Name ="paginationbar" --></div><!-- /TMPL_IF -->
<form name="resultform" action="/cgi-bin/koha/patroncards/members-search.pl" method="get" class="checkboxed"><div style="float: right; margin-top: .5em;"><input type="submit" class="icon addchecked" value="Add checked" onclick="add_item('checked',<!-- TMPL_VAR NAME="batch_id" -->); return false" /> <input type="button" class="close" value="Done" /></div>
<div style="line-height: 2em; margin-left: .7em;"><a id="CheckAll" href="/cgi-bin/koha/patroncards/members-search.pl">Select All</a><a id="CheckNone" href="/cgi-bin/koha/patroncards/members-search.pl">Clear All</a></div>
<div class="searchresults">

<table style="float: left; margin: .5em 0;">
<tr>
<th><label style="font-weight:bold;">Select</label></th>
<th><a href="members-search.pl?member=<!--TMPL_VAR Name="member" -->&amp;category=<!--TMPL_VAR Name="category_type" -->&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->&amp;orderby=cardnumber">Card</a></th>
<th><a href="members-search.pl?member=<!--TMPL_VAR Name="member" -->&amp;category=<!--TMPL_VAR Name="category_type" -->&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->&amp;orderby=surname">Name</a></th>
<th><a href="members-search.pl?member=<!--TMPL_VAR Name="member" -->&amp;category=<!--TMPL_VAR Name="category_type" -->&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->&amp;orderby=borrowers.categorycode">Category</a></th>
<th><a href="members-search.pl?member=<!--TMPL_VAR Name="member" -->&amp;category=<!--TMPL_VAR Name="category_type" -->&amp;batch_id=<!-- TMPL_VAR NAME="batch_id" -->&amp;orderby=branchcode">Library</a></th>
<th>Expires on</th>
<th>Notes</th>
<th></th>
</tr>
<!-- TMPL_LOOP NAME="resultsloop" -->
<!-- TMPL_UNLESS NAME="__odd__" -->
<tr class="highlight">
<!-- TMPL_ELSE -->
<tr>
<!-- /TMPL_UNLESS -->
<td> <input type="checkbox" name="borrowernumber" id="patron<!-- TMPL_VAR NAME="borrowernumber" -->" value="<!-- TMPL_VAR NAME="borrowernumber" -->" /> </td>
<td><!-- TMPL_VAR NAME="cardnumber" --></td>
<td style="white-space: nowrap;"><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->"><!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR NAME="firstname" --></a> <br /> <!-- TMPL_VAR NAME="address" --><!-- TMPL_IF NAME="address2" --><br /><!-- TMPL_VAR NAME="address2" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="city" --><br /><!-- TMPL_VAR NAME=city --><!-- /TMPL_IF --></td>
<td><!-- TMPL_VAR NAME="category_description" --> (<!-- TMPL_VAR name="category_type" -->)</td>
<td><!-- TMPL_VAR NAME="branchcode" --></td>
<td><!-- TMPL_VAR NAME="dateexpiry" --></td>
<td><!-- TMPL_VAR NAME="borrowernotes" --></td>
<td><a onclick="add_item('<!-- TMPL_VAR NAME="borrowernumber" -->',<!-- TMPL_VAR NAME="batch_id" -->); return false" href="/cgi-bin/koha/patroncards/edit-batch.pl?borrower_number=<!-- TMPL_VAR NAME="borrowernumber" -->&amp;batch_id=<!-- TMPL_VAR name="batch_id" -->&amp;op=add">Add</a></td>
</tr>
<!-- /TMPL_LOOP -->
</table>
</div>
</form>

<!-- TMPL_ELSE -->
<!-- TMPL_IF NAME="searching" -->
No results found
<!-- /TMPL_IF -->
<!-- /TMPL_IF -->

</div>
</div>
<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->
130 changes: 130 additions & 0 deletions patroncards/members-search.pl
@@ -0,0 +1,130 @@
#!/usr/bin/perl

# Copyright 2000-2002 Katipo Communications
#
# 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., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA

use strict;
use warnings;

use CGI;

use C4::Auth;
use C4::Output;
use C4::Members;
use C4::Debug;

my $cgi = CGI->new;

my $batch_id = $cgi->param('batch_id') || 0;
my $startfrom = $cgi->param('startfrom')||1;
my $resultsperpage = $cgi->param('resultsperpage')||C4::Context->preference("PatronsPerPage")||20;
my $category = $cgi->param('category') || undef;
my $member = $cgi->param('member') || undef;
my $orderby = $cgi->param('orderby') || undef;

my ($template, $loggedinuser, $cookie) = get_template_and_user({
template_name => "patroncards/members-search.tmpl",
query => $cgi,
type => "intranet",
authnotrequired => 0,
flagsrequired => {borrowers => 1},
debug => 1,});

$orderby = "surname,firstname" unless $orderby;
$member =~ s/,//g; #remove any commas from search string
$member =~ s/\*/%/g;

if ($member || $category) {
my ($count,$results) = 0,0;

if(length($member) == 1)
{
($count,$results) = SearchMember($member,$orderby,"simple");
}
else
{
($count,$results) = SearchMember($member,$orderby,"advanced",$category);
}


my @resultsdata = ();
my $to = ($count>($startfrom * $resultsperpage)?$startfrom * $resultsperpage:$count);
for (my $i = ($startfrom-1) * $resultsperpage; $i < $to; $i++){
#find out stats
my ($od,$issue,$fines) = GetMemberIssuesAndFines($results->[$i]{'borrowernumber'});
my %row = (
count => $i + 1,
borrowernumber => $results->[$i]{'borrowernumber'},
cardnumber => $results->[$i]{'cardnumber'},
surname => $results->[$i]{'surname'},
firstname => $results->[$i]{'firstname'},
categorycode => $results->[$i]{'categorycode'},
category_type => $results->[$i]{'category_type'},
category_description => $results->[$i]{'description'},
address => $results->[$i]{'address'},
address2 => $results->[$i]{'address2'},
city => $results->[$i]{'city'},
zipcode => $results->[$i]{'zipcode'},
country => $results->[$i]{'country'},
branchcode => $results->[$i]{'branchcode'},
overdues => $od,
issues => $issue,
odissue => "$od/$issue",
fines => ($fines ? sprintf("%.2f",$fines) : ''),
borrowernotes => $results->[$i]{'borrowernotes'},
sort1 => $results->[$i]{'sort1'},
sort2 => $results->[$i]{'sort2'},
dateexpiry => C4::Dates->new($results->[$i]{'dateexpiry'},'iso')->output('syspref'),
);
push(@resultsdata, \%row);
}
my $base_url = __FILE__ . '?' . join('&amp;', map { $_->{term} . ' = ' . $_->{val} } (
{ term => 'member', val => $member },
{ term => 'category', val => $category },
{ term => 'orderby', val => $orderby },
{ term => 'resultsperpage', val => $resultsperpage },
{ term => 'batch_id', val => $batch_id },)
);
$template->param(
paginationbar => pagination_bar(
$base_url, int( $count / $resultsperpage ) + 1,
$startfrom, 'startfrom'
),
startfrom => $startfrom,
from => ($startfrom-1) * $resultsperpage + 1,
to => $to,
multipage => ($count != $to || $startfrom != 1),
searching => "1",
member => $member,
category_type => $category,
numresults => $count,
resultsloop => \@resultsdata,
batch_id => $batch_id,
);
}
else {
$template->param( batch_id => $batch_id);
}

output_html_with_http_headers $cgi, $cookie, $template->output;

__END__
#script to do a borrower enquiry/bring up borrower details etc
#written 20/12/99 by chris@katipo.co.nz

0 comments on commit 4914858

Please sign in to comment.