Diff for /loncom/interface/groupsort.pm between versions 1.32 and 1.44

version 1.32, 2005/06/08 21:13:05 version 1.44, 2006/06/19 09:40:17
Line 26 Line 26
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
 # YEAR=2001  
 # YEAR=2002  
 #  
 ###  ###
   
 package Apache::groupsort;  package Apache::groupsort;
Line 41  use Apache::loncommon; Line 38  use Apache::loncommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  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
   
   
   sub readfromdb {
       my ($r,$shash,$thash)=@_;
   
       my $diropendb = 
          "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_sel_res.db";
   
   # ----------------------------- diropendb is now the filename of the db to open
       if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) {
    my $acts = $env{'form.acts'};
    my @Acts = split(/b/,$acts);
    my %ahash;
    my %achash;
    my $ac = 0;
    foreach (@Acts) {
       my ($state,$ref) = split(/a/);
       $ahash{$ref} = $state;
       $achash{$ref} = $ac;
       $ac++;
    }
    foreach (sort {$achash{$a} <=> $achash{$b}} (keys %ahash)) {
       my $key = $_;
       if ($ahash{$key} eq '1') {
    $hash{'store_'.$hash{'pre_'.$key.'_link'}} =
       $hash{'pre_'.$key.'_title'};
    $hash{'storectr_'.$hash{'pre_'.$key.'_link'}} =
       $hash{'storectr'}+0;
    $hash{'storectr'}++;
       }
       if ($ahash{$key} eq '0') {
    if ($hash{'store_'.$hash{'pre_'.$key.'_link'}}) {
       delete $hash{'store_'.$hash{'pre_'.$key.'_link'}};
    }
       }
    }
    foreach (keys %hash) {
       if ($_ =~ /^store_/) {
    my $key = $_;
    $key =~ s/^store_//;
    $$shash{$key} = $hash{'storectr_'.$key};
    if (&Apache::lonnet::gettitle($key) eq '') {
       $$thash{$key} = $hash{'store_'.$key};
    } else {
       $$thash{$key} = &Apache::lonnet::gettitle($key);
    }
       }
    }
    if ($env{'form.oldval'}) {
       my $newctr = 0;
       my %chash;
       foreach (sort {$$shash{$a} <=> $$shash{$b}} (keys %{$shash})) {
    my $key = $_;
    $newctr++;
    $$shash{$key} = $newctr;
    $hash{'storectr_'.$key} = $newctr;
    $chash{$newctr} = $key;
       }
       my $oldval = $env{'form.oldval'};
       my $newval = $env{'form.newval'};
       if ($oldval != $newval) {
    # when newval==0, then push down and delete
    if ($newval!=0) {
       $$shash{$chash{$oldval}} = $newval;
       $hash{'storectr_'.$chash{$oldval}} = $newval;
    } else {
       $$shash{$chash{$oldval}} = $newctr;
       $hash{'storectr_'.$chash{$oldval}} = $newctr;
    }
    if ($newval==0) { # push down
       my $newval2=$newctr;
       for my $idx ($oldval..($newval2-1)) {
    $$shash{$chash{$idx+1}} = $idx;
    $hash{'storectr_'.$chash{$idx+1}} = $idx;
       }
       delete $$shash{$chash{$oldval}};
       delete $hash{'storectr_'.$chash{$oldval}};
       delete $hash{'store_'.$chash{$oldval}};
    } elsif ($oldval < $newval) { # push down
       for my $idx ($oldval..($newval-1)) {
    $$shash{$chash{$idx+1}} = $idx;
    $hash{'storectr_'.$chash{$idx+1}} = $idx;
       }
    } elsif ($oldval > $newval) { # push up
       for my $idx (reverse($newval..($oldval-1))) {
    $$shash{$chash{$idx}} = $idx+1;
    $hash{'storectr_'.$chash{$idx}} = $idx+1;
       }
    }
       }
    }
       } else {
    $r->print('Unable to tie hash to db file');
       }
       untie %hash;
       return ($shash,$thash);
   }
   
   
   
 sub cleanup {  sub cleanup {
     if (tied(%hash)){      if (tied(%hash)){
Line 51  sub cleanup { Line 147  sub cleanup {
     &Apache::lonnet::logthis('Failed cleanup groupsort: 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);
   }
   
   # --------------------------------------------------------- Read from bookmarks
   
   sub readfrombookmarks {
       my ($r,$shash,$thash)=@_;
       my %bookmarks=&Apache::lonnet::dump('bookmarks');
   # the bookmark "hash" is just one entry
   # it's a javascript program code with arguments like ('title','url');
       my @bookmarks=($bookmarks{'bookmarks'}=~/\((?:\'([^\']+)\'\,\'([^\']+)\'|\"([^\"]+)\"\,\"([^\"]+)\")\)\;/g);
       my $order=1;
       for (my $index=0;$index<($#bookmarks+1)/2;$index++) {
           if ($bookmarks[$index*2+1]) {
       $$thash{$bookmarks[$index*2+1]}=$bookmarks[$index*2];
       $$thash{$bookmarks[$index*2+1]}=~s/^LON\-CAPA\s+//;
       $$shash{$bookmarks[$index*2+1]}=$order;
       $order++;
    }
       }
       return ($shash,$thash);
 }  }
   
 # ---------------------------------------------------------------- Main Handler  # ---------------------------------------------------------------- Main Handler
Line 58  sub handler { Line 216  sub handler {
     my $r = shift;      my $r = shift;
     
    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                            ['acts','catalogmode','mode']);       ['acts','mode','readfile','recover','bookmarks']);
     # color scheme      # color scheme
     my $fileclr = '#ffffe6';      my $fileclr = '#ffffe6';
     my $titleclr = '#ddffff';      my $titleclr = '#ddffff';
Line 69  sub handler { Line 227  sub handler {
   
 # finish_import looks different for graphical or "simple" RAT  # finish_import looks different for graphical or "simple" RAT
     my $finishimport='';      my $finishimport='';
       my $begincondition='';
       my $endcondition='';
       if (($env{'form.readfile'}) || ($env{'form.bookmarks'}))  {
           $begincondition='if (eval("document.forms.groupsort.include"+num+".checked")) {';
    $endcondition='}';
       }
     if ($env{'form.mode'} eq 'simple' || $env{'form.mode'} eq '') {      if ($env{'form.mode'} eq 'simple' || $env{'form.mode'} eq '') {
         $finishimport=(<<ENDSMP);          $finishimport=(<<ENDSMP);
 function finish_import() {  function finish_import() {
     opener.document.forms.simpleedit.importdetail.value='';      opener.document.forms.simpleedit.importdetail.value='';
     for (var num=0; num<document.forms.groupsort.fnum.value; num++) {      for (var num=0; num<document.forms.groupsort.fnum.value; num++) {
    $begincondition
  opener.document.forms.simpleedit.importdetail.value+='&'+   opener.document.forms.simpleedit.importdetail.value+='&'+
               escape(eval("document.forms.groupsort.title"+num+".value"))+'='+                escape(eval("document.forms.groupsort.title"+num+".value"))+'='+
       escape(eval("document.forms.groupsort.filelink"+num+".value"));        escape(eval("document.forms.groupsort.filelink"+num+".value"));
    $endcondition
     }      }
     opener.document.forms.simpleedit.submit();      opener.document.forms.simpleedit.submit();
     self.close();      self.close();
Line 87  ENDSMP Line 253  ENDSMP
 function finish_import() {  function finish_import() {
     var linkflag=false;      var linkflag=false;
     for (var num=0; num<document.forms.groupsort.fnum.value; num++) {      for (var num=0; num<document.forms.groupsort.fnum.value; num++) {
    $begincondition
  insertRowInLastRow();   insertRowInLastRow();
  placeResourceInLastRow(   placeResourceInLastRow(
        eval("document.forms.groupsort.title"+num+".value"),         eval("document.forms.groupsort.title"+num+".value"),
Line 94  function finish_import() { Line 261  function finish_import() {
        linkflag         linkflag
  );   );
         linkflag=true;          linkflag=true;
    $endcondition
     }      }
     opener.editmode=0;      opener.editmode=0;
     opener.notclear=0;      opener.notclear=0;
Line 105  ENDADV Line 273  ENDADV
     }      }
   
 # output start of web page  # output start of web page
     my $html=&Apache::lonxml::xmlbegin();      my $js = <<END;
     $r->print(<<END);  <script type="text/javascript">
 $html  
 <head>  
 <title>The LearningOnline Network With CAPA Group Sorter</title>  
 <script language='javascript'>  
 function insertRowInLastRow() {  function insertRowInLastRow() {
     opener.insertrow(opener.maxrow);      opener.insertrow(opener.maxrow);
     opener.addobj(opener.maxrow,'e&2');      opener.addobj(opener.maxrow,'e&2');
Line 138  function orderchange(val,newval) { Line 302  function orderchange(val,newval) {
     document.forms.groupsort.submit();      document.forms.groupsort.submit();
 }  }
 </script>  </script>
 </head>  
 END  END
     # read pertinent machine configuration      # read pertinent machine configuration
     my $domain  = $r->dir_config('lonDefDomain');      my $domain  = $r->dir_config('lonDefDomain');
Line 146  END Line 309  END
   
     my %shash; # sort order (key is resource location, value is sort order)      my %shash; # sort order (key is resource location, value is sort order)
     my %thash; # title (key is resource location, value is title)      my %thash; # title (key is resource location, value is title)
       my %nhash; # notes (key is resource location);
   
     my $diropendb;      if ($env{'form.readfile'}) {
 # ------------------------------ which file do we open? Easy if explictly given   &readfromfile($r,\%shash,\%thash,\%nhash);
     if ($env{'form.catalogmode'} eq 'groupsearch') {      } elsif ($env{'form.bookmarks'}) {
  $diropendb =    &readfrombookmarks($r,\%shash,\%thash);
     "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_searchcat.db";  
     }  
     elsif ($env{'form.catalogmode'} eq 'groupimport') {  
  $diropendb =   
     "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_indexer.db";  
     }  
     elsif ($env{'form.catalogmode'} eq 'groupsec') {  
  $diropendb =   
     "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_groupsec.db";  
     }  
 # --------------------- not explicitly given, choose the one most recently used  
     else { # choose last accessed  
         my @dbfn;  
         my @dbst;  
   
  $dbfn[0] =  
     "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_searchcat.db";  
         $dbst[0]=-1;  
  if (-e $dbfn[0]) {  
     $dbst[0]=(stat($dbfn[0]))[9];  
  }  
  $dbfn[1] =  
             "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_indexer.db";  
         $dbst[1]=-1;  
  if (-e $dbfn[1]) {  
             $dbst[1]=(stat($dbfn[1]))[9];  
         }  
  $dbfn[2] =  
             "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_groupsec.db";  
         $dbst[2]=-1;  
  if (-e $dbfn[2]) {  
             $dbst[2]=(stat($dbfn[2]))[9];  
         }  
 # Expand here for more modes  
 # ....  
   
 # Okay, find most recent existing  
   
         my $newest=0;  
         $diropendb='';  
         for (my $i=0; $i<=$#dbfn; $i++) {  
     if ($dbst[$i]>$newest) {  
  $newest=$dbst[$i];  
                 $diropendb=$dbfn[$i];  
             }  
         }  
   
     }  
 # ----------------------------- diropendb is now the filename of the db to open  
     if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) {  
  my $acts = $env{'form.acts'};  
  my @Acts = split(/b/,$acts);  
  my %ahash;  
  my %achash;  
  my $ac = 0;  
  foreach (@Acts) {  
     my ($state,$ref) = split(/a/);  
     $ahash{$ref} = $state;  
     $achash{$ref} = $ac;  
     $ac++;  
  }  
  foreach (sort {$achash{$a} <=> $achash{$b}} (keys %ahash)) {  
     my $key = $_;  
     if ($ahash{$key} eq '1') {  
 # my $keyz=join("<br />",keys %hash);  
 # print "<br />$key<br />$keyz".$hash{'pre_'.$key.'_link'}."<br />\n";  
  $hash{'store_'.$hash{'pre_'.$key.'_link'}} =  
     $hash{'pre_'.$key.'_title'};  
  $hash{'storectr_'.$hash{'pre_'.$key.'_link'}} =  
     $hash{'storectr'}+0;  
  $hash{'storectr'}++;  
     }  
     if ($ahash{$key} eq '0') {  
  if ($hash{'store_'.$hash{'pre_'.$key.'_link'}}) {  
     delete $hash{'store_'.$hash{'pre_'.$key.'_link'}};  
  }  
     }  
  }  
  foreach (keys %hash) {  
     if ($_ =~ /^store_/) {  
  my $key = $_;  
  $key =~ s/^store_//;  
  $shash{$key} = $hash{'storectr_'.$key};  
  if (&Apache::lonnet::gettitle($key) eq '') {  
     $thash{$key} = $hash{'store_'.$key};  
  } else {  
     $thash{$key} = &Apache::lonnet::gettitle($key);  
  }  
     }  
  }  
  if ($env{'form.oldval'}) {  
     my $newctr = 0;  
     my %chash;  
     foreach (sort {$shash{$a} <=> $shash{$b}} (keys %shash)) {  
  my $key = $_;  
  $newctr++;  
  $shash{$key} = $newctr;  
  $hash{'storectr_'.$key} = $newctr;  
  $chash{$newctr} = $key;  
     }  
     my $oldval = $env{'form.oldval'};  
     my $newval = $env{'form.newval'};  
     if ($oldval != $newval) {  
  # when newval==0, then push down and delete  
  if ($newval!=0) {  
     $shash{$chash{$oldval}} = $newval;  
     $hash{'storectr_'.$chash{$oldval}} = $newval;  
  }  
  else {  
     $shash{$chash{$oldval}} = $newctr;  
     $hash{'storectr_'.$chash{$oldval}} = $newctr;  
  }  
  if ($newval==0) { # push down  
     my $newval2=$newctr;  
     for my $idx ($oldval..($newval2-1)) {  
  $shash{$chash{$idx+1}} = $idx;  
  $hash{'storectr_'.$chash{$idx+1}} = $idx;  
     }  
     delete $shash{$chash{$oldval}};  
     delete $hash{'storectr_'.$chash{$oldval}};  
     delete $hash{'store_'.$chash{$oldval}};  
  }  
  elsif ($oldval < $newval) { # push down  
     for my $idx ($oldval..($newval-1)) {  
  $shash{$chash{$idx+1}} = $idx;  
  $hash{'storectr_'.$chash{$idx+1}} = $idx;  
     }  
  }  
  elsif ($oldval > $newval) { # push up  
     for my $idx (reverse($newval..($oldval-1))) {  
  $shash{$chash{$idx}} = $idx+1;  
  $hash{'storectr_'.$chash{$idx}} = $idx+1;  
     }  
  }  
     }  
  }  
     } else {      } else {
  $r->print('Unable to tie hash to db file</body></html>');   &readfromdb($r,\%shash,\%thash);
  return OK;  
     }      }
     untie %hash;  
     my $ctr = 0;      my $ctr = 0;
     my $clen = scalar(keys %shash);      my $clen = scalar(keys %shash);
     if ($clen > 1) {      if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
  'fin'=> 'Finalize order of resources',   'fin'=> 'Finalize order of resources',
  'gb' => 'Go Back',   'ci' => 'Continue Import',
  'ns' => 'New Search',   'cs' => 'Continue Search',
  'fi' => 'Finish Import',   'fi' => 'Finish Import',
  'ca' => 'Cancel',   'ca' => 'Cancel',
  'co' => 'Change Order',   'co' => 'Change Order',
  'ti' => 'Title',   'ti' => 'Title',
  'pa' => 'Path'   'pa' => 'Path',
                   'in' => 'Include'
  );   );
  $r->print(&Apache::loncommon::bodytag('Sort Imported Resources'));   $r->print(&Apache::loncommon::start_page('Sort Imported Resources',
    $js));
  $r->print(<<END);   $r->print(<<END);
 <b><font color="#888888">$lt{'fin'}</font></b>  <b><font color="#888888">$lt{'fin'}</font></b>
 <form method='post' action='/adm/groupsort' name='groupsort'  <form method='post' action='/adm/groupsort' name='groupsort'
Line 314  END Line 343  END
 <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="bookmarks" value="$env{'form.bookmarks'}" />
   <input type="hidden" name="recover" value="$env{'form.recover'}" />
 END  END
   
         # --- Expand here if "GO BACK" button desired          # --- Continue Buttons
         if ($env{'form.catalogmode'} eq 'groupimport') {          my $resurl = &Apache::loncommon::lastresurl();
             my $resurl = &Apache::loncommon::lastresurl();          $r->print(<<END);
     $r->print(<<END);  <input type="button" name="alter" value="$lt{'ci'}"
 <input type="button" name="alter" value="$lt{'gb'}"   onClick="window.location='$resurl?catalogmode=import'" />&nbsp;
  onClick="window.location='$resurl?catalogmode=groupimport'" />&nbsp;  <input type="button" name="altersearch" value="$lt{'cs'}"
 END   onClick="window.location='/adm/searchcat?catalogmode=import'" />&nbsp;
         }  
  if ($env{'form.catalogmode'} eq 'groupsearch') {  
     $r->print(<<END);  
 <input type="button" name="alter" value="$lt{'ns'}"  
  onClick="window.location='/adm/searchcat?catalogmode=groupsearch&cleargroupsort=1'" />&nbsp;  
 END  END
         }  
         # ---          # ---
   
  $r->print(<<END);   $r->print(<<END);
Line 339  END Line 365  END
 END  END
         $r->print("<table border='0'><tr><td bgcolor='#eeeeee'>");          $r->print("<table border='0'><tr><td bgcolor='#eeeeee'>");
  $r->print("<table border=0><tr>\n");   $r->print("<table border=0><tr>\n");
  $r->print("<td colspan='2' bgcolor='$titleclr'><b>$lt{'co'}</b></td>\n");   if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) { 
       $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 colspan='2' bgcolor='$titleclr'><b>$lt{'ti'}</b></td>\n");
  $r->print("<td bgcolor='$titleclr'><b>$lt{'pa'}</b></td></tr>\n");   $r->print("<td bgcolor='$titleclr'><b>$lt{'pa'}</b></td></tr>\n");
     } else {      } else {
    $r->print(&Apache::loncommon::start_page(undef,$js,
    {'only_body' => 1}));
  $r->print(<<END);   $r->print(<<END);
 <body>  
 <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" />
Line 357  END Line 388  END
  my $key=$_;   my $key=$_;
  $ctr++;   $ctr++;
  my $iconname=&Apache::loncommon::icon($key);   my $iconname=&Apache::loncommon::icon($key);
  if ($clen > 1) {   if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
     $r->print("<tr><td bgcolor='$fileclr'>");      $r->print("<tr><td bgcolor='$fileclr'>");
     $r->print(&movers($clen,$ctr));              if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
    $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));
  if ($clen > 1) {   if (($clen > 1)  || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
     $r->print("</td><td bgcolor='$fileclr'>");      $r->print("</td>");
     $r->print(&select_box($clen,$ctr));              unless (($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
     $r->print("</td><td bgcolor='$fileclr'>");   $r->print("<td bgcolor='$fileclr'>".
     &select_box($clen,$ctr).
     "</td>");
       }
       $r->print("<td bgcolor='$fileclr'>");
     $r->print("<img src='$iconname' />");      $r->print("<img src='$iconname' />");
     $r->print("</td><td bgcolor='$fileclr'>");      $r->print("</td><td bgcolor='$fileclr'>");
     $r->print("$thash{$key}</td><td bgcolor='$fileclr'>\n");      $r->print("$thash{$key}$nhash{$key}</td><td bgcolor='$fileclr'>\n");
     $r->print("$key</td></tr>\n");      $r->print("$key</td></tr>\n");
  }    } 
     }      }
     if ($clen > 1) {      if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
  $r->print("</table></td></tr></table></form>");   $r->print("</table></td></tr></table></form>");
     } else {      } else {
  $r->print(<<END);   $r->print(<<END);
Line 381  END Line 420  END
 </script>  </script>
 END  END
     }      }
     $r->print(<<END);  
 </body>      $r->print(&Apache::loncommon::end_page());
 </html>  
 END  
   
     return OK;      return OK;
 }  }
Line 424  sub select_box { Line 461  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 436  sub select_box { Line 473  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.32  
changed lines
  Added in v.1.44


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.