Getting web links going
[koha.git] / request.pl
index 675625c..dd49478 100755 (executable)
 # Suite 330, Boston, MA  02111-1307 USA
 
 use strict;
-#use DBI;
 use C4::Search;
 use C4::Output;
+use C4::Auth;
 use C4::Reserves2;
-use C4::Acquisitions;
+use C4::Biblio;
 use C4::Koha;
 use C4::Circulation::Circ2;
-
+use HTML::Template;
+use C4::Catalogue;
 use CGI;
+use C4::Date;
+
 my $input = new CGI;
 
 # get biblio information....
@@ -50,256 +53,139 @@ foreach my $res (@$reserves) {
 
 # make priorities options
 my $num = $count + 1;
-my $priorityoptions = priorityoptions($num, $num);
-
-
-# get branch information
-my $branch = $input->cookie('branch');
-($branch) || ($branch = 'L');
-my $branches = getbranches();
-my $branchoptions = branchoptions($branch);
 
+#priorityoptions building
+my @optionloop;
+for (my $i=1; $i<=$num; $i++){
+       my %option;
+       $option{num}=$i;
+       $option{selected}=($i==$num);
+       push(@optionloop, \%option);
+}
 
 # todays date
 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime(time);
 $year=$year+1900;
 $mon++;
-my $date="$mday/$mon/$year";
-
-
+my $date=format_date("$year-$mon-$mday");
 
 
 # get biblioitem information and build rows for form
 my ($count2,@data) = bibitems($bib);
-my $bibitemrows = "";
-
 
+my @bibitemloop;
 foreach my $dat (sort {$b->{'dateaccessioned'} cmp $a->{'dateaccessioned'}} @data) {
-    my @barcodes = barcodes($dat->{'biblioitemnumber'});
-    my $barcodestext = "";
-    foreach my $num (@barcodes) {
-       my $message = $num->{'itemlost'} == 1 ? "(lost)" :
-           $num->{'itemlost'} == 2 ? "(long overdue)" : "";
-       $barcodestext .= "$num->{'barcode'} $message <br>";
-    }
-    $barcodestext = substr($barcodestext, 0, -4);
-
     $dat->{'dewey'}="" if ($dat->{'dewey'} == 0);
-
     $dat->{'volumeddesc'} = "&nbsp;" unless $dat->{'volumeddesc'};
     $dat->{'dewey'}=~ s/\.0000$//;
     $dat->{'dewey'}=~ s/00$//;
-    my $class="$dat->{'classification'}$dat->{'dewey'}$dat->{'subclass'}";
-    my $select;
-    if (($dat->{'notforloan'})
-       || ($dat->{'itemlost'} == 1))  {
-       $select = "Cannot be reserved.";
-    } else {
-       $select = " <input type=checkbox name=reqbib value=$dat->{'biblioitemnumber'}><input type=hidden name=biblioitem value=$dat->{'biblioitemnumber'}>";
+
+       my %abibitem;
+       my @barcodeloop;
+    my @barcodes = barcodes($dat->{'biblioitemnumber'});
+    foreach my $num (@barcodes) {
+               my %barcode;
+               $barcode{'barcode'}=$num->{'barcode'};
+               $barcode{'message'}=$num->{'itemlost'} == 1 ? "(lost)" :
+           $num->{'itemlost'} == 2 ? "(long overdue)" : "";
+               push(@barcodeloop, \%barcode);
     }
-    $bibitemrows .= <<"EOF";
-<tr VALIGN=TOP>
-<TD>$select</td>
-<TD>$dat->{'description'}</td>
-<TD>$class</td>
-<td>$dat->{'volumeddesc'}</td>
-<td>$dat->{'publicationyear'}</td>
-<td>$barcodestext</td>
-</tr>
-EOF
+       $abibitem{'barcodeloop'}=\@barcodeloop;
+    $abibitem{'class'}="$dat->{'classification'}$dat->{'dewey'}$dat->{'subclass'}";
+    my $select;
+    $abibitem{'itemlost'}=(($dat->{'notforloan'})|| ($dat->{'itemlost'} == 1)) ;
+       $abibitem{'biblioitemnumber'}=$dat->{'biblioitemnumber'};
+       $abibitem{'description'}=$dat->{'description'};
+       $abibitem{'volumeddesc'}=$dat->{'volumeddesc'};
+       $abibitem{'publicationyear'}=$dat->{'publicationyear'};
+       push(@bibitemloop,\%abibitem);
 }
 
 
 
-
-my $existingreserves = "";
+#existingreserves building
+my @reserveloop;
+my $branches = getbranches();
 foreach my $res (sort {$a->{'found'} cmp $b->{'found'}} @$reserves){
-    my $prioropt = priorityoptions($totalcount, $res->{'priority'});
-    my $bropt = branchoptions($res->{'branchcode'});
-    my $bor=$res->{'borrowernumber'};
-    $date = slashifyDate($res->{'reservedate'});
-
-    my $type=$res->{'constrainttype'};
-    if ($type eq 'a'){
-       $type='Next Available';
-    } elsif ($type eq 'o'){
-       $type="This type only $res->{'volumeddesc'} $res->{'itemtype'}";
-    }
+       my %reserve;
+#    my $prioropt = priorityoptions($totalcount, $res->{'priority'});
+       my @optionloop;
+       for (my $i=1; $i<=$totalcount; $i++){
+               my %option;
+               $option{num}=$i;
+               $option{selected}=($i==$res->{'priority'});
+               push(@optionloop, \%option);
+       }
+       my @branchloop;
+       foreach my $br (keys %$branches) {
+#              (next) unless $branches->{$br}->{'IS'};
+                               # Only branches with the 'IS' branchrelation
+                               # can issue books
+               my %abranch;
+               $abranch{'selected'}=($br eq $res->{'branchcode'});
+               $abranch{'branch'}=$br;
+               $abranch{'branchname'}=$branches->{$br}->{'branchname'};
+               push(@branchloop,\%abranch);
+       }
 
-    my $notes = $res->{'reservenotes'}." ";
-    my $rank;
-    my $pickup;
     if ($res->{'found'} eq 'W') {
-       my %env;
-       my $item = $res->{'itemnumber'};
-       $item = getiteminformation(\%env,$item);
-       $item = "<a href=/cgi-bin/koha/detail.pl?bib=$item->{'biblionumber'} &type=intra onClick=\"openWindow(this, 'Item', 480, 640)\">$item->{'barcode'}</a>";
-       my $wbrcd = $res->{'branchcode'};
-       my $wbra = $branches->{$wbrcd}->{'branchname'};
-       $type = $item;
-       $rank = "<select name=rank-request><option value=W selected>Waiting</option>$prioropt<option value=del>Del</option></select>";
-       $pickup = "Item waiting at <b>".$wbra."</b> <input type=hidden name=pickup value=$wbrcd>";
-    } else {
-       $rank = "<select name=rank-request>$prioropt<option value=del>Del</option></select>";
-       $pickup = "<select name=pickup>$bropt</select>";
+               my %env;
+               my $item = $res->{'itemnumber'};
+               $item = getiteminformation(\%env,$item);
+               $reserve{'barcode'}=$item->{'barcode'};
+               $reserve{'biblionumber'}=$item->{'biblionumber'};
+               $reserve{'wbrcode'} = $res->{'branchcode'};
+               $reserve{'wbrname'} = $branches->{$res->{'branchcode'}}->{'branchname'};
     }
-    $existingreserves .= <<"EOF";
-<tr VALIGN=TOP>
-<TD>
-<input type=hidden name=borrower value=$res->{'borrowernumber'}>
-<input type=hidden name=biblio value=$res->{'biblionumber'}>
-$rank</td>
-<TD>
-<a href=/cgi-bin/koha/moremember.pl?bornum=$bor>$res->{'firstname'} $res->{'surname'}</a>
-</td>
-<td>$notes</td>
-<TD>$date</td>
-<TD>$pickup</td>
-<TD>$type</td>
-</tr>
-EOF
+    $reserve{'date'} = format_date($res->{'reservedate'});
+       $reserve{'borrowernumber'}=$res->{'borrowernumber'};
+       $reserve{'biblionumber'}=$res->{'biblionumber'};
+       $reserve{'bornum'}=$res->{'borrowernumber'};
+       $reserve{'firstname'}=$res->{'firstname'};
+       $reserve{'bornum'}=$res->{'borrowernumber'};
+       $reserve{'notes'}=$res->{'reservenotes'};
+       $reserve{'wait'}=($res->{'found'} eq 'W');
+       $reserve{'constrainttypea'}=($res->{'constrainttype'} eq 'a');
+       $reserve{'constrainttypeo'}=($res->{'constrainttype'} eq 'o');
+       $reserve{'voldesc'}=$res->{'volumeddesc'};
+       $reserve{'itemtype'}=$res->{'itemtype'};
+       $reserve{'branchloop'}=\@branchloop;
+       $reserve{'optionloop'}=\@optionloop;
+       push(@reserveloop,\%reserve);
 }
 
-
-
-sub priorityoptions {
-    my ($count, $sel) = @_;
-    my $out = "";
-    for (my $i=1; $i<=$count; $i++){
-       $out .= "<option value=$i";
-       if ($sel == $i){
-           $out .= " selected";
-       }
-       $out .= ">$i</option>\n";
-    }
-    return $out;
+my @branches;
+my @select_branch;
+my %select_branches;
+my ($count2,@branches)=branches();
+for (my $i=0;$i<$count2;$i++){
+       push @select_branch, $branches[$i]->{'branchcode'};#
+       $select_branches{$branches[$i]->{'branchcode'}} = $branches[$i]->{'branchname'};
 }
-
-# make branch selection options...
-sub branchoptions {
-    my ($selbr) = @_;
-    my $out = "";
-    foreach my $br (keys %$branches) {
-       (next) unless $branches->{$br}->{'IS'};
-       my $selected = "";
-       if ($br eq $selbr) {
-           $selected = "selected";
-       }
-       $out .= "<option value=$br $selected>$branches->{$br}->{'branchname'}</option>\n";
-    }
-    return $out;
-}
-
+my $CGIbranch=CGI::scrolling_list( -name     => 'pickup',
+                       -values   => \@select_branch,
+                       -labels   => \%select_branches,
+                       -size     => 1,
+                       -multiple => 0 );
 
 #get the time for the form name...
 my $time = time();
 
-
-# printout the page
-
-
-
-
-print $input->header(-expires=>'now');
-
-
 #setup colours
-print startmenu('catalogue');
-
-
-
-
-print <<printend
-
-<form action="placerequest.pl" method=post>
-<INPUT TYPE="image" name="submit"  VALUE="request" height=42  WIDTH=187 BORDER=0 src="/images/place-request.gif" align=right >
-<input type=hidden name=biblio value=$bib>
-<input type=hidden name=type value=str8>
-<input type=hidden name=title value="$dat->{'title'}">
-<FONT SIZE=6><em>Requesting: <br>
-<a href=/cgi-bin/koha/detail.pl?bib=$bib>$dat->{'title'}</a>
-($dat->{'author'})</em></FONT><P>
-<p>
-
-
-
-
-
-<TABLE  CELLSPACING=0  CELLPADDING=5 border=1 >
-<TR VALIGN=TOP>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Rank</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Member Number</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Notes</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Date</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Pickup</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Request</b></TD>
-</TR>
-<tr VALIGN=TOP  >
-<td><select name=rank-request>
-$priorityoptions
-</select></td>
-<td><input type=text size=10 name=member></td>
-<td><input type=text size=20 name=notes></td>
-<td>$date</td>
-<td><select name=pickup>
-$branchoptions
-</select></td>
-<td><input type=checkbox name=request value=any>Next Available,
-<br>(or choose from list below)</td>
-</tr></table>
-
-
-
-<TABLE  CELLSPACING=0  CELLPADDING=5 border=1 >
-<TR VALIGN=TOP>
-
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Request</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Item Type</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Classification</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Volume</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Pubdate</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Copies</b></TD>
-</TR>
-$bibitemrows
-</table>
-
-</form>
-<p>&nbsp;</p>
-
-
-
-
-
-<form name=T$time action=modrequest.pl method=post>
-
-<TABLE  CELLSPACING=0  CELLPADDING=5 border=1 >
-
-<TR VALIGN=TOP>
-
-<td  bgcolor="99cc33" background="/images/background-mem.gif" colspan=7><B>MODIFY EXISTING REQUESTS </b></TD>
-</TR>
-<TR VALIGN=TOP>
-
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Rank</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Member</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Notes</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Date</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Pickup</b></TD>
-<td  bgcolor="99cc33" background="/images/background-mem.gif"><B>Request</b></TD>
-</TR>
-$existingreserves
-<tr VALIGN=TOP>
-<TD colspan=6 align=right>
-Delete a request by selecting "del" from the rank list.
-<INPUT TYPE="image" name="submit"  VALUE="request" height=42  WIDTH=64 BORDER=0 src="/images/ok.gif"></td>
-</tr>
-</table>
-<P>
-<br>
-</form>
-
-printend
-;
-
-print endmenu();
-print endpage();
+my ($template, $borrowernumber, $cookie)
+    = get_template_and_user({template_name => "request.tmpl",
+                                                       query => $input,
+                            type => "intranet",
+                            authnotrequired => 0,
+                            flagsrequired => {parameters => 1},
+                         });
+$template->param(      optionloop =>\@optionloop,
+                                                               CGIbranch => $CGIbranch,
+                                                               reserveloop => \@reserveloop,
+                                                               'time' => $time,
+                                                               bibitemloop => \@bibitemloop,
+                                                               date => $date,
+                                                               bib => $bib,
+                                                               title =>$dat->{title});
+# printout the page
+print $input->header(-expires=>'now'), $template->output;