Diff for /loncom/interface/groupsort.pm between versions 1.16 and 1.40

version 1.16, 2002/09/16 20:57:28 version 1.40, 2006/03/19 22:26:31
Line 26 Line 26
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
 # YEAR=2001  
 # 8/7,8/8,10/14,10/15,12/10 Scott Harrison  
 # YEAR=2002  
 # 1/17 Scott Harrison  
 #  
 ###  ###
   
 package Apache::groupsort;  package Apache::groupsort;
Line 40  use strict; Line 35  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use GDBM_File;  use GDBM_File;
 use Apache::loncommon;  use Apache::loncommon;
   use Apache::lonlocal;
   use Apache::lonnet;
   
 my %hash; # variable to tie to user specific database  
 my $iconpath; # variable to be accessible to multiple subroutines  my $iconpath; # variable to be accessible to multiple subroutines
   my %hash; # variable to tie to user specific database
   
 # ---------------------------------------------------------------- Main Handler  
 sub handler {  
     my $r = shift;  
    
    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},  
                                            ['acts','catalogmode','mode']);  
     # color scheme  
     my $fileclr = '#ffffe6';  
     my $titleclr = '#ddffff';  
   
     $r->content_type('text/html');  
     $r->send_http_header;  
     return OK if $r->header_only;  
   
 # finish_import looks different for graphical or "simple" RAT  
     my $finishimport='';  
     if ($ENV{'form.mode'} eq 'simple') {  
         $finishimport=(<<ENDSMP);  
 function finish_import() {  
     opener.document.forms.simpleedit.importdetail.value='';  
     for (var num=0; num<document.forms.groupsort.fnum.value; num++) {  
  opener.document.forms.simpleedit.importdetail.value+='&'+  
               escape(eval("document.forms.groupsort.title"+num+".value"))+'='+  
       escape(eval("document.forms.groupsort.filelink"+num+".value"));  
     }  
     opener.document.forms.simpleedit.submit();  
     self.close();  
 }  
 ENDSMP  
     } else {  
         $finishimport=(<<ENDADV);  
 function finish_import() {  
     var linkflag=false;  
     for (var num=0; num<document.forms.groupsort.fnum.value; num++) {  
  insertRowInLastRow();  
  placeResourceInLastRow(  
        eval("document.forms.groupsort.title"+num+".value"),  
         eval("document.forms.groupsort.filelink"+num+".value"),  
        linkflag  
  );  
         linkflag=true;  
     }  
     opener.editmode=0;  
     opener.notclear=0;  
     opener.linkmode=0;  
     opener.draw();  
     self.close();  
 }  
 ENDADV  
     }  
   
 # output start of web page  
   
     $r->print(<<END);  
 <html>  
 <head>  
 <title>The LearningOnline Network With CAPA Group Sorter</title>  
 <script language='javascript'>  
 function insertRowInLastRow() {  
     opener.insertrow(opener.maxrow);  
     opener.addobj(opener.maxrow,'e&2');  
 }  
 function placeResourceInLastRow (title,url,linkflag) {  
     opener.newresource(opener.maxrow,2,opener.escape(title),  
        opener.escape(url),'false','normal');  
     opener.save();  
     opener.mostrecent=opener.obj.length-1;  
     if (linkflag) {  
  opener.joinres(opener.linkmode,opener.mostrecent,0);  
     }  
     opener.linkmode=opener.mostrecent;  
 }  
 $finishimport  
 function selectchange(val) {  
     var newval=0+eval("document.forms.groupsort.alt"+val+".selectedIndex");  
     orderchange(val,newval);  
 }  
 function move(val,newval) {  
     orderchange(val,newval);  
 }  
 function orderchange(val,newval) {  
     document.forms.groupsort.oldval.value=val;  
     document.forms.groupsort.newval.value=newval;  
     document.forms.groupsort.submit();  
 }  
 </script>  
 </head>  
 END  
     $r->print(&Apache::loncommon::bodytag('Sort Imported Resources'));  
     # read pertinent machine configuration  
     my $domain  = $r->dir_config('lonDefDomain');  
     $iconpath = $r->dir_config('lonIconsURL') . "/";  
   
     my %shash; # sort order (key is resource location, value is sort order)  sub readfromdb {
     my %thash; # title (key is resource location, value is title)      my ($r,$shash,$thash)=@_;
   
     my $diropendb;      my $diropendb;
 # ------------------------------ which file do we open? Easy if explictly given  # ------------------------------ which file do we open? Easy if explictly given
     if ($ENV{'form.catalogmode'} eq 'groupsearch') {      if ($env{'form.catalogmode'} eq 'groupsearch') {
  $diropendb =    $diropendb = 
     "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db";      "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_searchcat.db";
     }      } elsif ($env{'form.catalogmode'} eq 'groupimport') {
     elsif ($ENV{'form.catalogmode'} eq 'groupimport') {  
  $diropendb =    $diropendb = 
     "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db";      "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_indexer.db";
     }      } elsif ($env{'form.catalogmode'} eq 'groupsec') {
     elsif ($ENV{'form.catalogmode'} eq 'groupsec') {  
  $diropendb =    $diropendb = 
     "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_groupsec.db";      "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_groupsec.db";
     }      } else {
 # --------------------- not explicitly given, choose the one most recently used  # --------------------- not explicitly given, choose the one most recently used
     else { # choose last accessed  
         my @dbfn;          my @dbfn;
         my @dbst;          my @dbst;
   
  $dbfn[0] =   $dbfn[0] =
     "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db";      "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_searchcat.db";
         $dbst[0]=-1;          $dbst[0]=-1;
  if (-e $dbfn[0]) {   if (-e $dbfn[0]) {
     $dbst[0]=(stat($dbfn[0]))[9];      $dbst[0]=(stat($dbfn[0]))[9];
  }   }
  $dbfn[1] =   $dbfn[1] =
             "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db";              "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_indexer.db";
         $dbst[1]=-1;          $dbst[1]=-1;
  if (-e $dbfn[1]) {   if (-e $dbfn[1]) {
             $dbst[1]=(stat($dbfn[1]))[9];              $dbst[1]=(stat($dbfn[1]))[9];
         }          }
  $dbfn[2] =   $dbfn[2] =
             "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_groupsec.db";              "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_groupsec.db";
         $dbst[2]=-1;          $dbst[2]=-1;
  if (-e $dbfn[2]) {   if (-e $dbfn[2]) {
             $dbst[2]=(stat($dbfn[2]))[9];              $dbst[2]=(stat($dbfn[2]))[9];
Line 194  END Line 96  END
     }      }
 # ----------------------------- diropendb is now the filename of the db to open  # ----------------------------- diropendb is now the filename of the db to open
     if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) {      if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) {
  my $acts = $ENV{'form.acts'};   my $acts = $env{'form.acts'};
  my @Acts = split(/b/,$acts);   my @Acts = split(/b/,$acts);
  my %ahash;   my %ahash;
  my %achash;   my %achash;
Line 226  END Line 128  END
     if ($_ =~ /^store_/) {      if ($_ =~ /^store_/) {
  my $key = $_;   my $key = $_;
  $key =~ s/^store_//;   $key =~ s/^store_//;
  $shash{$key} = $hash{'storectr_'.$key};   $$shash{$key} = $hash{'storectr_'.$key};
  $thash{$key} = $hash{'store_'.$key};   if (&Apache::lonnet::gettitle($key) eq '') {
       $$thash{$key} = $hash{'store_'.$key};
    } else {
       $$thash{$key} = &Apache::lonnet::gettitle($key);
    }
     }      }
  }   }
  if ($ENV{'form.oldval'}) {   if ($env{'form.oldval'}) {
     my $newctr = 0;      my $newctr = 0;
     my %chash;      my %chash;
     foreach (sort {$shash{$a} <=> $shash{$b}} (keys %shash)) {      foreach (sort {$$shash{$a} <=> $$shash{$b}} (keys %{$shash})) {
  my $key = $_;   my $key = $_;
  $newctr++;   $newctr++;
  $shash{$key} = $newctr;   $$shash{$key} = $newctr;
  $hash{'storectr_'.$key} = $newctr;   $hash{'storectr_'.$key} = $newctr;
  $chash{$newctr} = $key;   $chash{$newctr} = $key;
     }      }
     my $oldval = $ENV{'form.oldval'};      my $oldval = $env{'form.oldval'};
     my $newval = $ENV{'form.newval'};      my $newval = $env{'form.newval'};
     if ($oldval != $newval) {      if ($oldval != $newval) {
  # when newval==0, then push down and delete   # when newval==0, then push down and delete
  if ($newval!=0) {   if ($newval!=0) {
     $shash{$chash{$oldval}} = $newval;      $$shash{$chash{$oldval}} = $newval;
     $hash{'storectr_'.$chash{$oldval}} = $newval;      $hash{'storectr_'.$chash{$oldval}} = $newval;
  }   } else {
  else {      $$shash{$chash{$oldval}} = $newctr;
     $shash{$chash{$oldval}} = $newctr;  
     $hash{'storectr_'.$chash{$oldval}} = $newctr;      $hash{'storectr_'.$chash{$oldval}} = $newctr;
  }   }
  if ($newval==0) { # push down   if ($newval==0) { # push down
     my $newval2=$newctr;      my $newval2=$newctr;
     for my $idx ($oldval..($newval2-1)) {      for my $idx ($oldval..($newval2-1)) {
  $shash{$chash{$idx+1}} = $idx;   $$shash{$chash{$idx+1}} = $idx;
  $hash{'storectr_'.$chash{$idx+1}} = $idx;   $hash{'storectr_'.$chash{$idx+1}} = $idx;
     }      }
     delete $shash{$chash{$oldval}};      delete $$shash{$chash{$oldval}};
     delete $hash{'storectr_'.$chash{$oldval}};      delete $hash{'storectr_'.$chash{$oldval}};
     delete $hash{'store_'.$chash{$oldval}};      delete $hash{'store_'.$chash{$oldval}};
  }   } elsif ($oldval < $newval) { # push down
  elsif ($oldval < $newval) { # push down  
     for my $idx ($oldval..($newval-1)) {      for my $idx ($oldval..($newval-1)) {
  $shash{$chash{$idx+1}} = $idx;   $$shash{$chash{$idx+1}} = $idx;
  $hash{'storectr_'.$chash{$idx+1}} = $idx;   $hash{'storectr_'.$chash{$idx+1}} = $idx;
     }      }
  }   } elsif ($oldval > $newval) { # push up
  elsif ($oldval > $newval) { # push up  
     for my $idx (reverse($newval..($oldval-1))) {      for my $idx (reverse($newval..($oldval-1))) {
  $shash{$chash{$idx}} = $idx+1;   $$shash{$chash{$idx}} = $idx+1;
  $hash{'storectr_'.$chash{$idx}} = $idx+1;   $hash{'storectr_'.$chash{$idx}} = $idx+1;
     }      }
  }   }
     }      }
  }   }
     } else {      } else {
  $r->print('Unable to tie hash to db file</body></html>');   $r->print('Unable to tie hash to db file');
  return OK;  
     }      }
     untie %hash;      untie %hash;
       return ($shash,$thash);
   }
   
   
   
   sub cleanup {
       if (tied(%hash)){
    &Apache::lonnet::logthis('Cleanup groupsort: hash');
           unless (untie(%hash)) {
       &Apache::lonnet::logthis('Failed cleanup groupsort: hash');
           }
       }
       return OK;
   }
   
   # -------------------------------------------------------------- Read from file
   
   sub readfromfile {
       my ($r,$shash,$thash,$nhash)=@_;
       my $cont=&Apache::lonnet::getfile
    (&Apache::lonnet::filelocation('',$env{'form.readfile'}));
       if ($cont==-1) {
    $r->print('Unable to read file: '.
     &Apache::lonnet::filelocation('',$env{'form.readfile'}));
       } else {
           my $parser = HTML::TokeParser->new(\$cont);
           my $token;
    my $n=1;
           while ($token = $parser->get_token) {
       if ($token->[0] eq 'S') {
                   if ($token->[1] eq 'resource') {
       if ($env{'form.recover'}) {
    if ($token->[2]->{'type'} ne 'zombie') { next; }
       } else {
    if ($token->[2]->{'type'} eq 'zombie') { next; }
       }
   
       my $url=$token->[2]->{'src'};
                       my $name=$token->[2]->{'title'};
       $name=~s/ \[\((\d+)\,(\w+)\,(\w+)\)\]$//;
       if ($1) {
    $$nhash{$url}='<br />'.&mt('Removed by ').
       &Apache::loncommon::plainname($2,$3).', '.
       &Apache::lonlocal::locallocaltime($1);
       }
       $name=~s/\&colon\;/\:/g;
       $$thash{$url}=$name;
                       $$shash{$url}=$n;
                       $n++;
    }
       }
    }
       }
       return ($shash,$thash);
   }
   
   # ---------------------------------------------------------------- Main Handler
   sub handler {
       my $r = shift;
    
      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                         ['acts','catalogmode','mode','readfile','recover']);
       # color scheme
       my $fileclr = '#ffffe6';
       my $titleclr = '#ddffff';
   
       &Apache::loncommon::content_type($r,'text/html');
       $r->send_http_header;
       return OK if $r->header_only;
   
   # finish_import looks different for graphical or "simple" RAT
       my $finishimport='';
       my $begincondition='';
       my $endcondition='';
       if ($env{'form.readfile'}) {
           $begincondition='if (eval("document.forms.groupsort.include"+num+".checked")) {';
    $endcondition='}';
       }
       if ($env{'form.mode'} eq 'simple' || $env{'form.mode'} eq '') {
           $finishimport=(<<ENDSMP);
   function finish_import() {
       opener.document.forms.simpleedit.importdetail.value='';
       for (var num=0; num<document.forms.groupsort.fnum.value; num++) {
    $begincondition
    opener.document.forms.simpleedit.importdetail.value+='&'+
                 escape(eval("document.forms.groupsort.title"+num+".value"))+'='+
         escape(eval("document.forms.groupsort.filelink"+num+".value"));
    $endcondition
       }
       opener.document.forms.simpleedit.submit();
       self.close();
   }
   ENDSMP
       } else {
           $finishimport=(<<ENDADV);
   function finish_import() {
       var linkflag=false;
       for (var num=0; num<document.forms.groupsort.fnum.value; num++) {
    $begincondition
    insertRowInLastRow();
    placeResourceInLastRow(
          eval("document.forms.groupsort.title"+num+".value"),
           eval("document.forms.groupsort.filelink"+num+".value"),
          linkflag
    );
           linkflag=true;
    $endcondition
       }
       opener.editmode=0;
       opener.notclear=0;
       opener.linkmode=0;
       opener.draw();
       self.close();
   }
   ENDADV
       }
   
   # output start of web page
       my $js = <<END;
   <script type="text/javascript">
   function insertRowInLastRow() {
       opener.insertrow(opener.maxrow);
       opener.addobj(opener.maxrow,'e&2');
   }
   function placeResourceInLastRow (title,url,linkflag) {
       opener.mostrecent=opener.newresource(opener.maxrow,2,opener.escape(title),
          opener.escape(url),'false','normal');
       opener.save();
       if (linkflag) {
    opener.joinres(opener.linkmode,opener.mostrecent,0);
       }
       opener.linkmode=opener.mostrecent;
   }
   $finishimport
   function selectchange(val) {
       var newval=0+eval("document.forms.groupsort.alt"+val+".selectedIndex");
       orderchange(val,newval);
   }
   function move(val,newval) {
       orderchange(val,newval);
   }
   function orderchange(val,newval) {
       document.forms.groupsort.oldval.value=val;
       document.forms.groupsort.newval.value=newval;
       document.forms.groupsort.submit();
   }
   </script>
   END
       # read pertinent machine configuration
       my $domain  = $r->dir_config('lonDefDomain');
       $iconpath = $r->dir_config('lonIconsURL') . "/";
   
       my %shash; # sort order (key is resource location, value is sort order)
       my %thash; # title (key is resource location, value is title)
       my %nhash; # notes (key is resource location);
   
       if ($env{'form.readfile'}) {
    &readfromfile($r,\%shash,\%thash,\%nhash);
       } else {
    &readfromdb($r,\%shash,\%thash);
       }
   
     my $ctr = 0;      my $ctr = 0;
     my $clen = scalar(keys %shash);      my $clen = scalar(keys %shash);
    $r->print(<<END);      if (($clen > 1) || ($env{'form.readfile'})) {
 <b><font color="#888888">Finalize order of resources</font></b>   my %lt=&Apache::lonlocal::texthash(
    'fin'=> 'Finalize order of resources',
    'gb' => 'Go Back',
    'ns' => 'New Search',
    'fi' => 'Finish Import',
    'ca' => 'Cancel',
    'co' => 'Change Order',
    'ti' => 'Title',
    'pa' => 'Path',
                   'in' => 'Include'
    );
    $r->print(&Apache::loncommon::start_page('Sort Imported Resources',
    $js));
    $r->print(<<END);
   <b><font color="#888888">$lt{'fin'}</font></b>
 <form method='post' action='/adm/groupsort' name='groupsort'  <form method='post' action='/adm/groupsort' name='groupsort'
       enctype='application/x-www-form-urlencoded'>        enctype='application/x-www-form-urlencoded'>
 <input type="hidden" name="fnum" value="$clen" />  <input type="hidden" name="fnum" value="$clen" />
 <input type="hidden" name="oldval" value="" />  <input type="hidden" name="oldval" value="" />
 <input type="hidden" name="newval" value="" />  <input type="hidden" name="newval" value="" />
 <input type="hidden" name="mode" value="$ENV{'form.mode'}" />  <input type="hidden" name="mode" value="$env{'form.mode'}" />
   <input type="hidden" name="readfile" value="$env{'form.readfile'}" />
   <input type="hidden" name="recover" value="$env{'form.recover'}" />
 END  END
   
 # --- Expand here if "GO BACK" button desired          # --- Expand here if "GO BACK" button desired
     if ($ENV{'form.catalogmode'} eq 'groupimport') {          if ($env{'form.catalogmode'} eq 'groupimport') {
  $r->print(<<END);              my $resurl = &Apache::loncommon::lastresurl();
 <input type="button" name="alter" value="GO BACK"      $r->print(<<END);
  onClick="window.location='/res/?catalogmode=groupimport'" />&nbsp;  <input type="button" name="alter" value="$lt{'gb'}"
    onClick="window.location='$resurl?catalogmode=groupimport'" />&nbsp;
 END  END
     }          }
     if ($ENV{'form.catalogmode'} eq 'groupsearch') {   if ($env{'form.catalogmode'} eq 'groupsearch') {
  $r->print(<<END);      $r->print(<<END);
 <input type="button" name="alter" value="New Search"  <input type="button" name="alter" value="$lt{'ns'}"
  onClick="window.location='/adm/searchcat?catalogmode=groupsearch&cleargroupsort=1'" />&nbsp;   onClick="window.location='/adm/searchcat?catalogmode=groupsearch&cleargroupsort=1'" />&nbsp;
 END  END
     }          }
 # ---          # ---
   
     $r->print(<<END);   $r->print(<<END);
 <input type="button" name="alter" value="FINISH IMPORT"  <input type="button" name="alter" value="$lt{'fi'}"
  onClick="finish_import()" />&nbsp;   onClick="finish_import()" />&nbsp;
 <input type="button" name="alter" value="CANCEL" onClick="self.close()" />  <input type="button" name="alter" value="$lt{'ca'}" onClick="self.close()" />
   END
           $r->print("<table border='0'><tr><td bgcolor='#eeeeee'>");
    $r->print("<table border=0><tr>\n");
    if ($env{'form.readfile'}) { 
       $r->print("<td bgcolor='$titleclr'><b>$lt{'in'}</b></td>\n");
    } else { 
       $r->print("<td colspan='2' bgcolor='$titleclr'><b>$lt{'co'}</b></td>\n"); 
    }
    $r->print("<td colspan='2' bgcolor='$titleclr'><b>$lt{'ti'}</b></td>\n");
    $r->print("<td bgcolor='$titleclr'><b>$lt{'pa'}</b></td></tr>\n");
       } else {
    $r->print(&Apache::loncommon::start_page(undef,$js,
    {'only_body' => 1});
    $r->print(<<END);
   <form method='post' action='/adm/groupsort' name='groupsort'
         enctype='application/x-www-form-urlencoded'>
   <input type="hidden" name="fnum" value="$clen" />
   <input type="hidden" name="oldval" value="" />
   <input type="hidden" name="newval" value="" />
   <input type="hidden" name="mode" value="$env{'form.mode'}" />
 END  END
     $r->print("<table border='0'><tr><td bgcolor='#eeeeee'>");      }
     $r->print("<table border=0><tr>\n");  
     $r->print("<td colspan='2' bgcolor='$titleclr'><b>Change order</b></td>".  
       "\n");  
     $r->print("<td colspan='2' bgcolor='$titleclr'><b>Title</b></td>\n");  
     $r->print("<td bgcolor='$titleclr'><b>Path</b></td></tr>\n");  
     foreach (sort {$shash{$a}<=>$shash{$b}} (keys %shash)) {      foreach (sort {$shash{$a}<=>$shash{$b}} (keys %shash)) {
  my $key=$_;   my $key=$_;
  $ctr++;   $ctr++;
  my @file_ext = split(/\./,$key);   my $iconname=&Apache::loncommon::icon($key);
  my $curfext = $file_ext[scalar(@file_ext)-1];   if (($clen > 1) || ($env{'form.readfile'})) {
  $r->print("<tr><td bgcolor='$fileclr'>");      $r->print("<tr><td bgcolor='$fileclr'>");
  $r->print(&movers($clen,$ctr));              if ($env{'form.readfile'}) {
    $r->print(&checkbox($ctr-1));
       } else {
    $r->print(&movers($clen,$ctr));
       }
    }
  $r->print(&hidden($ctr-1,$thash{$key},$key));   $r->print(&hidden($ctr-1,$thash{$key},$key));
  $r->print("</td><td bgcolor='$fileclr'>");   if (($clen > 1)  || ($env{'form.readfile'})) {
  $r->print(&select_box($clen,$ctr));      $r->print("</td>");
  $r->print("</td><td bgcolor='$fileclr'>");              unless ($env{'form.readfile'}) {
  $r->print("<img src='$iconpath$curfext.gif'>");   $r->print("<td bgcolor='$fileclr'>".
  $r->print("</td><td bgcolor='$fileclr'>");    &select_box($clen,$ctr).
  $r->print("$thash{$key}</td><td bgcolor='$fileclr'>\n");    "</td>");
  $r->print("$key</td></tr>\n");      }
     }       $r->print("<td bgcolor='$fileclr'>");
     $r->print("</table></td></tr></table></form>");      $r->print("<img src='$iconname' />");
     $r->print(<<END);      $r->print("</td><td bgcolor='$fileclr'>");
 </body>      $r->print("$thash{$key}$nhash{$key}</td><td bgcolor='$fileclr'>\n");
 </html>      $r->print("$key</td></tr>\n");
    } 
       }
       if (($clen > 1) || ($env{'form.readfile'})) {
    $r->print("</table></td></tr></table></form>");
       } else {
    $r->print(<<END);
   <script type="text/javascript">
       finish_import();
   </script>
 END  END
       }
   
       $r->print(&Apache::loncommon::end_page());
   
     return OK;      return OK;
 }  }
   
Line 378  sub select_box { Line 492  sub select_box {
     my $string;      my $string;
     $string = '<select name="alt'.$sel.'"';      $string = '<select name="alt'.$sel.'"';
     $string .= " onChange='selectchange($sel)'>";      $string .= " onChange='selectchange($sel)'>";
     $string .= "<option name='o0' value='0'>remove</option>";      $string .= "<option name='o0' value='0'>".&mt('discard')."</option>";
     for my $cur (1..$total) {      for my $cur (1..$total) {
  $string .= "<option name='o$cur' value='$cur'";   $string .= "<option name='o$cur' value='$cur'";
  if ($cur == $sel) {   if ($cur == $sel) {
Line 390  sub select_box { Line 504  sub select_box {
     return $string;      return $string;
 }  }
   
   # ------------------------------------------------------------------- Checkbox
   
   sub checkbox {
       my $sel=shift;
       return "<label><input type='checkbox' name='include$sel'".
          ($env{"form.include$sel"}?' checked="checked"':'').
          ' />'.&mt('Include').'</label>';
   }
   
 1;  1;
   
 __END__  __END__

Removed from v.1.16  
changed lines
  Added in v.1.40


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.