JavaScript changes to make tmpl_process3 recognize translatable strings.
[koha.git] / memberentry.pl
index 3e532ae..21b0b3d 100755 (executable)
@@ -1,4 +1,6 @@
 #!/usr/bin/perl
+# NOTE: This file uses standard 8-space tabs
+#       DO NOT SET TAB SIZE TO 4
 
 # $Id$
 
@@ -30,8 +32,11 @@ use C4::Output;
 use C4::Interface::CGI::Output;
 use CGI;
 use C4::Search;
+use C4::Members;
 use C4::Koha;
 use HTML::Template;
+use Date::Manip;
+use C4::Date;
 
 my $input = new CGI;
 
@@ -45,204 +50,145 @@ my ($template, $loggedinuser, $cookie)
                             });
 
 my $member=$input->param('bornum');
-if ($member eq ''){
-  $member=NewBorrowerNumber();
-}
+if ($member eq ''){
+#      $member=NewBorrowerNumber();
+}
 my $type=$input->param('type') || '';
-my $modify=$input->param('modify.x');
-my $delete=$input->param('delete.x');
+my $modify=$input->param('modify');
+my $delete=$input->param('delete');
 if ($delete){
-  print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$member");
-
+       print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$member");
 } else {  # this else goes down the whole script
-  if ($type ne 'Add'){
-    $template->param( header => 'Update Member Details'); # bad templating style
-  } else {
-    $template->param( header => 'Add New Member');
-  }
-
-  my $data=borrdata('',$member);
-
-  if ($type eq 'Add'){
-    $template->param( updtype => 'I');
-  } else {
-    $template->param( updtype => 'M');
-  }
-
-  my $cardnumber=$data->{'cardnumber'};
-  my $autonumber_members = C4::Context->preference("autoMemberNum") || 0;
-               # Find out whether member numbers should be generated
-               # automatically. Should be either "1" or something else.
-               # Defaults to "0", which is interpreted as "no".
-  # FIXME
-  # This logic should probably be moved out of the presentation code.
-  # Not tonight though.
-  #
-  if ($cardnumber eq '' && $autonumber_members eq '1') {
-    my $dbh = C4::Context->dbh;
-    my $query="select max(substring(borrowers.cardnumber,2,7)) from borrowers";
-    my $sth=$dbh->prepare($query);
-    $sth->execute;
-    my $data=$sth->fetchrow_hashref;
-    $cardnumber=$data->{'max(substring(borrowers.cardnumber,2,7))'};
-    $sth->finish;
-    # purpose: generate checksum'd member numbers.
-    # We'll assume we just got the max value of digits 2-8 of member #'s from the database and our job is to
-    # increment that by one, determine the 1st and 9th digits and return the full string.
-    my @weightings = (8,4,6,3,5,2,1);
-    my $sum;
-    my $i = 0;
-    if (! $cardnumber) {                       # If DB has no values, start at 1000000
-      $cardnumber = 1000000;
-    } else {
-      $cardnumber = $cardnumber + 1;           # FIXME - $cardnumber++;
-    }
-
-    while ($i <8) {                    # step from char 1 to 7.
-      my $temp1 = $weightings[$i];     # read weightings, left to right, 1 char at a time
-      my $temp2 = substr($cardnumber,$i,1);    # sequence left to right, 1 char at a time
-  #print "$temp2<br>";
-      $sum += $temp1*$temp2;   # mult each char 1-7 by its corresponding weighting
-      $i++;                            # increment counter
-    }
-    my $rem = ($sum%11);                       # remainder of sum/11 (eg. 9999999/11, remainder=2)
-    if ($rem == 10) {                  # if remainder is 10, use X instead
-      $rem = "X";
-    }
-    $cardnumber="V$cardnumber$rem";
-  } else {
-    $cardnumber=$data->{'cardnumber'};
-  }
-
-  if ($data->{'sex'} eq 'F'){
-    $template->param(female => 1);
-  }
-
-  my @titles = ('Miss', 'Mrs', 'Ms', 'Mr', 'Dr', 'Sir');
-       # FIXME - Assumes English. This ought to be made part of i18n.
-  my @titledata;
-  while (@titles) {
-    my %row;
-    my $title = shift @titles;
-    $row{'title'} = $title;
-    if ($data->{'title'} eq $title) {
-      $row{'selected'}=' selected';
-    } else {
-      $row{'selected'}='';
-    }
-    push(@titledata, \%row);
-  }
-
-  my ($categories,$labels)=ethnicitycategories();
-  my $ethnicitycategoriescount=$#{$categories};
-  my $ethcatpopup;
-  if ($ethnicitycategoriescount>=0) {
-       $ethcatpopup = CGI::popup_menu(-name=>'ethnicity',
-                               -values=>$categories,
-                               -default=>$data->{'ethnicity'},
-                               -labels=>$labels);
-       $template->param(ethcatpopup => $ethcatpopup); # bad style, has to be fixed
-  }
-
-  ($categories,$labels)=borrowercategories();
-  my $catcodepopup = CGI::popup_menu(-name=>'categorycode',
-                               -values=>$categories,
-                               -default=>$data->{'categorycode'},
-                               -labels=>$labels);
-
-  my @areas = ('L','F','S','H','K','O','X','Z','V');
-  my %arealabels = ('L' => 'Levin',
-                 'F' => 'Foxton',
-                 'S' => 'Shannon',
-                 'H' => 'Horowhenua',
-                 'K' => 'Kapiti',
-                 'O' => 'Out of District',
-                 'X' => 'Temporary Visitor',
-                 'Z' => 'Interloan Libraries',
-                 'V' => 'Village');
-
-  my @areadata;
-  while (@areas) {
-    my %row;
-    my $shortcut = shift @areas;
-    $row{'shortcut'} = $shortcut;
-    if ($data->{'area'} eq $shortcut) {
-      $row{'selected'}=' selected';
-    } else {
-      $row{'selected'}='';
-    }
-    $row{'area'}=$arealabels{$shortcut};
-    push(@areadata, \%row);
-  }
-
-
-  my @relationships = ('workplace', 'relative','friend', 'neighbour');
-  my @relshipdata;
-  while (@relationships) {
-    my $relship = shift @relationships;
-    my %row = ('relationship' => $relship);
-    if ($data->{'altrelationship'} eq $relship) {
-      $row{'selected'}=' selected';
-    } else {
-      $row{'selected'}='';
-    }
-    push(@relshipdata, \%row);
-  }
-
-  # %flags: keys=$data-keys, datas=[formname, HTML-explanation]
-  my %flags = ('gonenoaddress' => ['gna', 'Gone no address'],
-               'lost'          => ['lost', 'Lost'],
-               'debarred'      => ['debarred', 'Debarred']);
-
-  my @flagdata;
-  foreach (keys(%flags)) {
-    my $key = $_;
-    my %row =  ('key'   => $key,
-               'name'  => $flags{$key}[0],
-               'html'  => $flags{$key}[1]);
-    if ($data->{$key}) {
-      $row{'yes'}=' checked';
-      $row{'no'}='';
-    } else {
-      $row{'yes'}='';
-      $row{'no'}=' checked';
-    }
-    push(@flagdata, \%row);
-  }
-
-  if ($modify){
-    $template->param( modify => 1 );
-  }
-
-  $template->param( 
-                       member          => $member,
-                       firstname       => $data->{'firstname'},
-                       surname         => $data->{'surname'},
-                       othernames      => $data->{'othernames'},
-                       initials        => $data->{'initials'},
-                       ethcatpopup     => $ethcatpopup,
-                       catcodepopup    => $catcodepopup,
-                       streetaddress   => $data->{'streetaddress'},
-                       streetcity      => $data->{'streetcity'},
-                       city            => $data->{'city'},
-                       phone           => $data->{'phone'},
-                       phoneday        => $data->{'phoneday'},
-                       faxnumber       => $data->{'faxnumber'},
-                       emailaddress    => $data->{'emailaddress'},
-                       contactname     => $data->{'contactname'},
-                       altphone        => $data->{'altphone'},
-                       altnotes        => $data->{'altnotes'},
-                       borrowernotes   => $data->{'borrowernotes'},
-                       flagloop        => \@flagdata,
-                       relshiploop     => \@relshipdata,
-                       titleloop       => \@titledata,
-                       arealoop        => \@areadata,
-                       dateenrolled    => $data->{'dateenrolled'},
-                       expiry          => $data->{'expiry'},
-                       cardnumber      => $cardnumber,
-                       dateofbirth     => $data->{'dateofbirth'});
-
-output_html_with_http_headers $input, $cookie, $template->output;
+       if ($type eq 'Add'){
+               $template->param( addAction => 1);
+       } else {
+               $template->param( addAction =>0);
+       }
+
+       my $data=borrdata('',$member);
+       if ($type eq 'Add'){
+               $template->param( updtype => 'I');
+       } else {
+               $template->param( updtype => 'M');
+       }
+       my $cardnumber=C4::Members::fixup_cardnumber($data->{'cardnumber'});
+       if ($data->{'sex'} eq 'F'){
+               $template->param(female => 1);
+       }
+       my ($categories,$labels)=ethnicitycategories();
+       my $ethnicitycategoriescount=$#{$categories};
+       my $ethcatpopup;
+       if ($ethnicitycategoriescount>=0) {
+               $ethcatpopup = CGI::popup_menu(-name=>'ethnicity',
+                                       -id => 'ethnicity',
+                                       -values=>$categories,
+                                       -default=>$data->{'ethnicity'},
+                                       -labels=>$labels);
+               $template->param(ethcatpopup => $ethcatpopup); # bad style, has to be fixed
+       }
+
+       ($categories,$labels)=borrowercategories();
+       my $catcodepopup = CGI::popup_menu(-name=>'categorycode',
+                                       -id => 'categorycode',
+                                       -values=>$categories,
+                                       -default=>$data->{'categorycode'},
+                                       -labels=>$labels);
+
+       my @relationships = ('workplace', 'relative','friend', 'neighbour');
+       my @relshipdata;
+       while (@relationships) {
+               my $relship = shift @relationships;
+               my %row = ('relationship' => $relship);
+               if ($data->{'altrelationship'} eq $relship) {
+                       $row{'selected'}=' selected';
+               } else {
+                       $row{'selected'}='';
+               }
+               push(@relshipdata, \%row);
+       }
+
+       # %flags: keys=$data-keys, datas=[formname, HTML-explanation]
+       my %flags = ('gonenoaddress' => ['gna', 'Gone no address'],
+                               'lost'          => ['lost', 'Lost'],
+                               'debarred'      => ['debarred', 'Debarred']);
+
+       my @flagdata;
+       foreach (keys(%flags)) {
+       my $key = $_;
+       my %row =  ('key'   => $key,
+                       'name'  => $flags{$key}[0],
+                       'html'  => $flags{$key}[1]);
+       if ($data->{$key}) {
+               $row{'yes'}=' checked';
+               $row{'no'}='';
+       } else {
+               $row{'yes'}='';
+               $row{'no'}=' checked';
+       }
+       push(@flagdata, \%row);
+       }
+
+       if ($modify){
+       $template->param( modify => 1 );
+       }
+
+       #Convert dateofbirth to correct format
+       $data->{'dateofbirth'} = format_date($data->{'dateofbirth'});
+
+       my @branches;
+       my @select_branch;
+       my %select_branches;
+       my $branches=getbranches();
+       foreach my $branch (keys %$branches) {
+               push @select_branch, $branch;
+               $select_branches{$branch} = $branches->{$branch}->{'branchname'};
+       }
+       my $CGIbranch=CGI::scrolling_list( -name     => 'branchcode',
+                               -id => 'branchcode',
+                               -values   => \@select_branch,
+                               -default  => $data->{'branchcode'},
+                               -labels   => \%select_branches,
+                               -size     => 1,
+                               -multiple => 0 );
+
+       $template->param(       type            => $type,
+                               member          => $member,
+                               address         => $data->{'streetaddress'},
+                               firstname       => $data->{'firstname'},
+                               surname         => $data->{'surname'},
+                               othernames      => $data->{'othernames'},
+                               initials        => $data->{'initials'},
+                               ethcatpopup     => $ethcatpopup,
+                               catcodepopup    => $catcodepopup,
+                               streetaddress   => $data->{'physstreet'},
+                               zipcode => $data->{'zipcode'},
+                               streetcity      => $data->{'streetcity'},
+                               homezipcode => $data->{'homezipcode'},
+                               city            => $data->{'city'},
+                               phone           => $data->{'phone'},
+                               phoneday        => $data->{'phoneday'},
+                               faxnumber       => $data->{'faxnumber'},
+                               emailaddress    => $data->{'emailaddress'},
+                               textmessaging   => $data->{'textmessaging'},
+                               contactname     => $data->{'contactname'},
+                               altphone        => $data->{'altphone'},
+                               altnotes        => $data->{'altnotes'},
+                               borrowernotes   => $data->{'borrowernotes'},
+                               flagloop        => \@flagdata,
+                               relshiploop     => \@relshipdata,
+                               "title_".$data->{'title'} => " SELECTED ",
+                               dateenrolled    => $data->{'dateenrolled'},
+                               expiry          => $data->{'expiry'},
+                               cardnumber      => $cardnumber,
+                               dateofbirth     => $data->{'dateofbirth'},
+                               dateformat      => display_date_format(),
+                               modify          => $modify,
+                               CGIbranch => $CGIbranch);
+       output_html_with_http_headers $input, $cookie, $template->output;
 
 
 }
+
+# Local Variables:
+# tab-width: 8
+# End: