Diff for /loncom/interface/groupsort.pm between versions 1.5 and 1.60

version 1.5, 2001/12/11 03:37:11 version 1.60, 2007/07/25 23:10:23
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  
 #  
 ###  ###
   
 package Apache::groupsort;  package Apache::groupsort;
Line 37  use strict; Line 34  use strict;
   
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use GDBM_File;  use GDBM_File;
   use Apache::loncommon;
   use Apache::lonlocal;
   use Apache::lonnet;
   use LONCAPA();
   
 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 update_actions_hash {
       my ($hash) = @_;
       # be careful in here, there is also a global %hash
       my $acts=$env{'form.acts'};
       my @Acts=split(/b/,$acts);
       my %ahash;
       my %achash;
       # some initial hashes for working with data
       my $ac=0;
       foreach (@Acts) {
     my ($state,$ref)=split(/a/);
    $ahash{$ref}=$state;
    $achash{$ref}=$ac;
    $ac++;
       }
       # sorting through the actions and changing the global database hash
       foreach my $key (sort {$achash{$a}<=>$achash{$b}} (keys %ahash)) {
    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'}});
    delete($hash->{'storectr_'.$hash->{'pre_'.$key.'_link'}});
       }
    }
       }
       # deleting the previously cached listing
       foreach my $key (keys(%{ $hash })) {
    next if ($key !~ /^pre_(\d+)_link/);
    my $which = $1;
    delete($hash->{'pre_'.$which.'_title'});
    delete($hash->{'pre_'.$which.'_link'});
       }
   }
   
   sub readfromdb {
       my ($r,$resources)=@_;
   
       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)) {
    &update_actions_hash(\%hash);
   
    my %temp_resources;
    foreach my $key (keys(%hash)) {
       next if ($key !~ /^store_/);
       my ($url) = ($key =~ /^store_(.*)/);
       $temp_resources{$hash{'storectr_'.$url}}{'url'}=$url;
       $temp_resources{$hash{'storectr_'.$url}}{'title'}=
    &Apache::lonnet::gettitle($url);
    }
   
    # use the temp, since there might be gaps in the counting
    foreach my $item (sort {$a <=> $b} (keys(%temp_resources))) {
       push(@{ $resources },$temp_resources{$item});
    }
   
    if ($env{'form.oldval'}) {
       my $res = splice(@{$resources},$env{'form.oldval'}-1,1);
       if ($env{'form.newval'} == 0) {
    # picked 'discard'
    my $url =  $res->{'url'};
    delete($hash{'storectr_'.$url});
    delete($hash{'store_'.$url});
       } else {
    splice(@{$resources},$env{'form.newval'}-1,0,$res);
       }
    }
    # store out new order
    foreach my $which (0..$#$resources) {
       my $url =  $resources->[$which]{'url'};
       $hash{'storectr_'.$url} = $which;
    }
       } else {
    $r->print('Unable to tie hash to db file');
       }
       untie(%hash);
   }
   
   
   
   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,$resources)=@_;
       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;
           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 $name=$token->[2]->{'title'};
       $name=~s/ \[\((\d+)\,($LONCAPA::username_re)\,($LONCAPA::domain_re)\)\]$//;
       my $note;
       if ($1) {
    $note = '<br />'.&mt('Removed by ').
       &Apache::loncommon::plainname($2,$3).', '.
       &Apache::lonlocal::locallocaltime($1);
       }
       $name=~s/\&colon\;/\:/g;
       push(@{$resources}, {'url'   => $token->[2]->{'src'},
    'title' => $name,
    'note'  => $note,
            'id'    => $token->[2]->{'id'},});
    }
       }
    }
       }
   }
   
   # --------------------------------------------------------- Read from bookmarks
   
   sub readfrombookmarks {
       my ($r,$resources)=@_;
       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);
       for (my $index=0;$index<($#bookmarks+1)/2;$index++) {
           if ($bookmarks[$index*2+1]) {
       my $url  = $bookmarks[$index*2+1];
       my $name = $bookmarks[$index*2];
       $name =~ s/^LON\-CAPA\s+//;
   
       push(@{$resources},{'url' => $url, 'title' => $name});
    }
       }
   }
   
 # ---------------------------------------------------------------- Main Handler  # ---------------------------------------------------------------- Main Handler
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
    
      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
        ['acts','mode','readfile','recover','bookmarks']);
     # color scheme      # color scheme
     my $fileclr = '#ffffe6';      my $fileclr = '#ffffe6';
     my $titleclr = '#ddffff';      my $titleclr = '#ddffff';
   
     $r->content_type('text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
     # output start of web page  # finish_import looks different for graphical or "simple" RAT
     $r->print(<<END);      my $finishimport='';
 <html>      my $begincondition='';
 <head>      my $endcondition='';
 <title>The LearningOnline Network With CAPA Group Sorter</title>      if (($env{'form.readfile'}) || ($env{'form.bookmarks'}))  {
 <script language='javascript'>          $begincondition='if (eval("document.forms.groupsort.include"+num+".checked")) {';
 function insertRowInLastRow() {   $endcondition='}';
     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;      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"))+'='+
         escape(eval("document.forms.groupsort.id"+num+".value"));
    $endcondition
       }
       opener.document.forms.simpleedit.submit();
       self.close();
 }  }
   ENDSMP
       } else {
           $finishimport=(<<ENDADV);
 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"),
         eval("document.forms.groupsort.filelink"+num+".value"),          eval("document.forms.groupsort.filelink"+num+".value"),
           eval("document.forms.groupsort.id"+num+".value"),
        linkflag         linkflag
  );   );
         linkflag=true;          linkflag=true;
    $endcondition
     }      }
     opener.editmode=0;      opener.editmode=0;
     opener.notclear=0;      opener.notclear=0;
     opener.linkmode=0;      opener.linkmode=0;
     opener.infoclear();  
     opener.draw();      opener.draw();
     self.close();      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,id,linkflag) {
       opener.mostrecent=opener.newresource(opener.maxrow,2,opener.escape(title),
          opener.escape(url),'false','normal',id);
       opener.save();
       if (linkflag) {
    opener.joinres(opener.linkmode,opener.mostrecent,0);
       }
       opener.linkmode=opener.mostrecent;
   }
   $finishimport
 function selectchange(val) {  function selectchange(val) {
     var newval=0+eval("document.forms.groupsort.alt"+val+".selectedIndex");      var newval=0+eval("document.forms.groupsort.alt"+val+".selectedIndex");
     orderchange(val,newval);      orderchange(val,newval);
Line 104  function orderchange(val,newval) { Line 293  function orderchange(val,newval) {
     document.forms.groupsort.submit();      document.forms.groupsort.submit();
 }  }
 </script>  </script>
 </head>  
 <body bgcolor="#FFFFFF">  
 END  END
   
     # read pertinent machine configuration      # read pertinent machine configuration
     my $domain  = $r->dir_config('lonDefDomain');      my $domain  = $r->dir_config('lonDefDomain');
     $iconpath = $r->dir_config('lonIconsURL') . "/";      $iconpath = $r->dir_config('lonIconsURL') . "/";
   
     my %shash; # sort order (key is resource location, value is sort order)      my @resources;
     my %thash; # title (key is resource location, value is title)  
     foreach (split(/&/,$ENV{'QUERY_STRING'})) {      if ($env{'form.readfile'}) {
        my ($name, $value) = split(/=/,$_);   &readfromfile($r,\@resources);
        $value =~ tr/+/ /;      } elsif ($env{'form.bookmarks'}) {
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;   &readfrombookmarks($r,\@resources);
        if ($name eq 'acts') {  
            $ENV{'form.'.$name}=$value;  
        }  
        if ($name eq 'catalogmode') {  
            $ENV{'form.'.$name}=$value;  
        }  
     }  
     my $diropendb;  
     if ($ENV{'form.catalogmode'} eq 'groupsearch') {  
  $diropendb =   
     "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db";  
     }  
     elsif ($ENV{'form.catalogmode'} eq 'groupimport') {  
  $diropendb =   
     "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db";  
     }  
     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};  
  $thash{$key} = $hash{'store_'.$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,\@resources);
  return OK;  
     }      }
     untie %hash;  
     my $ctr = 0;      my $ctr = 0;
     my $clen = scalar(keys %shash);      my $clen = scalar(@resources);
     $r->print('<h2><font color="#888888">The LearningOnline With CAPA '.      if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
       'Group Sorter</font></h2>'."\n");   my %lt=&Apache::lonlocal::texthash(
     $r->print('<b><font color="#888888">Finalize order of resources</font>'.   'fin'=> 'Finalize order of resources',
       '</b>'."\n");   'ci' => 'Continue Import',
     $r->print("<form method='post' action='/adm/groupsort' name='groupsort' ".   'cs' => 'Continue Search',
       "enctype='application/x-www-form-urlencoded'>");   'fi' => 'Finish Import',
     $r->print(<<END);   're' => 'Recover Checked',
    'ca' => 'Cancel',
    'co' => 'Change Order',
    'ti' => 'Title',
    'pa' => 'Path',
                   'in' => 'Include'
    );
    my $title = ($env{'form.recover'}) ? 'Recover Removed Resources'
                                              : 'Sort Imported Resources';
    $r->print(&Apache::loncommon::start_page($title, $js));
   
    $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="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="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
     if ($ENV{'form.catalogmode'} eq 'groupimport') {  
  $r->print(<<END);          $r->print(&Apache::loncommon::inhibit_menu_check('input'));
 <input type="button" name="alter" value="GO BACK"          # ---
  onClick="window.location='/res/?catalogmode=groupimport'" />&nbsp;      
 END          if ($env{'form.recover'}) {
     }      $r->print(<<END);
     if ($ENV{'form.catalogmode'} eq 'groupsearch') {  <input type="button" name="alter" value="$lt{'re'}"
  $r->print(<<END);   onClick="finish_import()" />&nbsp;
 <input type="button" name="alter" value="GO BACK"  <input type="button" name="alter" value="$lt{'ca'}" onClick="self.close()" />
  onClick="window.location='/adm/searchcat?catalogmode=groupsearch'" />&nbsp;  
 END  END
 }   } else {
     $r->print(<<END);          # --- Continue Buttons
 <input type="button" name="alter" value="FINISH IMPORT"      my $resurl = 
    &Apache::loncommon::escape_single(&Apache::loncommon::lastresurl());
       $r->print(<<END);
   <b><font color="#888888">$lt{'fin'}</font></b>
   <input type="button" name="alter" value="$lt{'ci'}"
    onClick="window.location='$resurl?inhibitmenu=yes&amp;catalogmode=import'" />&nbsp;
   <input type="button" name="altersearch" value="$lt{'cs'}"
    onClick="window.location='/adm/searchcat?inhibitmenu=yes&amp;catalogmode=import'" />&nbsp;
   <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'}) || ($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 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(&Apache::loncommon::inhibit_menu_check('input'));
     $r->print("<table border=0><tr>\n");  
     $r->print("<td colspan='2' bgcolor='$titleclr'><b>Change order</b></td>".      }
       "\n");      foreach my $resource (@resources) {
     $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)) {  
  my $key=$_;  
  $ctr++;   $ctr++;
  my @file_ext = split(/\./,$key);   my $iconname=&Apache::loncommon::icon($resource->{'url'});
  my $curfext = $file_ext[scalar(@file_ext)-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(&hidden($ctr-1,$thash{$key},$key));   $r->print(&checkbox($ctr-1));
  $r->print("</td><td bgcolor='$fileclr'>");      } else {
  $r->print(&select_box($clen,$ctr));   $r->print(&movers($clen,$ctr));
  $r->print("</td><td bgcolor='$fileclr'>");      }
  $r->print("<img src='$iconpath$curfext.gif'>");   }
  $r->print("</td><td bgcolor='$fileclr'>");   $r->print(&hidden($ctr-1,$resource->{'title'},$resource->{'url'},
  $r->print("$thash{$key}</td><td bgcolor='$fileclr'>\n");    $resource->{'id'}));
  $r->print("$key</td></tr>\n");   if (($clen > 1)  || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
     }       $r->print("</td>");
     $r->print("</table></td></tr></table></form>");              unless (($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
     $r->print(<<END);   $r->print("<td bgcolor='$fileclr'>".
 </body>    &select_box($clen,$ctr).
 </html>    "</td>");
       }
       $r->print("<td bgcolor='$fileclr'>");
       $r->print("<img src='$iconname' />");
       $r->print("</td><td bgcolor='$fileclr'>");
       $r->print($resource->{'title'}.$resource->{'notes'}."</td><td bgcolor='$fileclr'>\n");
       $r->print($resource->{'url'}."</td></tr>\n");
    } 
       }
       if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
    $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;
 }  }
   
 # --------------------------------------- Hidden values (returns scalar string)  # --------------------------------------- Hidden values (returns scalar string)
 sub hidden {  sub hidden {
     my ($sel,$title,$filelink) = @_;      my ($sel,$title,$filelink,$id) = @_;
     my $string = '<input type="hidden" name="title'.$sel.'" value="'.$title.      my $string = '<input type="hidden" name="title'.$sel.'" value="'.$title.
  '" />';   '" />';
       $filelink=~s|^/ext/|http://|;
     $string .= '<input type="hidden" name="filelink'.$sel.'" value="'.      $string .= '<input type="hidden" name="filelink'.$sel.'" value="'.
  $filelink.'" />';   $filelink.'" />';
       $string .= '<input type="hidden" name="id'.$sel.'" value="'.$id.'" />';
     return $string;      return $string;
 }  }
   
Line 317  sub select_box { Line 465  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 329  sub select_box { Line 477  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.5  
changed lines
  Added in v.1.60


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.