Diff for /loncom/interface/groupsort.pm between versions 1.10 and 1.68.6.4

version 1.10, 2002/05/13 16:00:53 version 1.68.6.4, 2013/01/08 03:51:06
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 39  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 qw(:DEFAULT :match);
   
 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 = LONCAPA::tempdir() .
          "$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,$donechk,%allmaps);
           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; }
                           if ($token->[2]->{'src'} =~ /\.(page|sequence)$/) {
                               unless ($donechk) {
                                   $donechk = &get_allmaps(\%allmaps);
                               }
                               if ($allmaps{$token->[2]->{'src'}}) { 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'},});
    }
       }
    }
       }
   }
   
   sub get_allmaps {
       my ($allmaps) = @_;
       return unless (ref($allmaps) eq 'HASH');
       if (($env{'form.recover'}) &&
           ($env{'request.course.id'}) &&
           ($env{'form.readfile'} =~ m{/default(|_\d+)\.(page|sequence)$})) {
           my $cid = $env{'request.course.id'};
           my $cdom = $env{'course.'.$cid.'.domain'};
           my $cnum = $env{'course.'.$cid.'.num'};
           my $chome = $env{'course.'.$cid.'.home'};
           my $lastchange =
               &Apache::lonnet::get_coursechange($cdom,$cnum);
           if ($lastchange > $env{'request.course.tied'}) {
               my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");
               unless ($ferr) {
                   &Apache::loncommon::update_content_constraints($cdom,$cnum,
                                                                  $chome,$cid);
               }
           }
           my $navmap = Apache::lonnavmaps::navmap->new();
           if (defined($navmap)) {
               foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_map() },1,0,1)) {
                   $allmaps->{$res->src()} = 1;
               }
           }
       }
       return 1;
   }
   
 # ---------------------------------------------------------------- Main Handler  # ---------------------------------------------------------------- Main Handler
 sub handler {  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']);
   
     # color scheme      &Apache::loncommon::content_type($r,'text/html');
     my $fileclr = '#ffffe6';  
     my $titleclr = '#ddffff';  
   
     $r->content_type('text/html');  
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
 # finish_import looks different for graphical or "simple" RAT  # finish_import looks different for graphical or "simple" RAT
     my $finishimport='';      my $finishimport='';
     if ($ENV{'form.mode'} eq 'simple') {      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);          $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"))+'='+                eval("document.forms.groupsort.title"+num+".value")+'='+
       escape(eval("document.forms.groupsort.filelink"+num+".value"));        eval("document.forms.groupsort.filelink"+num+".value")+'='+
         eval("document.forms.groupsort.id"+num+".value");
    $endcondition
     }      }
     opener.document.forms.simpleedit.submit();      opener.document.forms.simpleedit.submit();
     self.close();      self.close();
Line 78  ENDSMP Line 256  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"),
         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;
Line 96  ENDADV Line 277  ENDADV
     }      }
   
 # output start of web page  # output start of web page
       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');
 }  }
 function placeResourceInLastRow (title,url,linkflag) {  function placeResourceInLastRow (title,url,id,linkflag) {
     opener.newresource(opener.maxrow,2,opener.escape(title),      opener.mostrecent=opener.newresource(opener.maxrow,2,opener.escape(title),
        opener.escape(url),'false','normal');         opener.escape(url),'false','normal',id);
     opener.save();      opener.save();
     opener.mostrecent=opener.obj.length-1;  
     if (linkflag) {      if (linkflag) {
  opener.joinres(opener.linkmode,opener.mostrecent,0);   opener.joinres(opener.linkmode,opener.mostrecent,0);
     }      }
Line 130  function orderchange(val,newval) { Line 306  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)  
   
     my $diropendb;      if ($env{'form.readfile'}) {
     if ($ENV{'form.catalogmode'} eq 'groupsearch') {   &readfromfile($r,\@resources);
  $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";  
     }  
     else { # choose last accessed  
  my $dsearch; my $dindex;  
  my $dsearcht; my $dindext;  
  $dsearch =  
     "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db";  
  if (-e $dsearch) {  
     $dsearcht=(stat($dsearch))[9];  
  }  
  $dindex =  
             "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db";  
  if (-e $dindex) {  
             $dindext=(stat($dindex))[9];  
         }  
  if (!$dsearcht and !$dindext) {  
     $diropendb='';  
  }  
         elsif ($dsearcht>$dindext) {  
             $diropendb=$dsearch;  
         }  
  else {  
             $diropendb=$dindex;  
  }  
     }  
     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 '.      my $title = '';
       'Group Sorter</font></h2>'."\n");      if ($env{'form.recover'}) {
     $r->print('<b><font color="#888888">Finalize order of resources</font>'.          $title = 'Recover Removed Resources';
       '</b>'."\n");      } else {
     $r->print("<form method='post' action='/adm/groupsort' name='groupsort' ".          $title = 'Sort Imported Resources';
       "enctype='application/x-www-form-urlencoded'>");      }
     $r->print(<<END);      if (($clen > 1) || ($env{'form.readfile'})) {
    my %lt=&Apache::lonlocal::texthash(
    'fin'=> 'Finalize order of resources',
    'ci' => 'Continue Import',
    'cs' => 'Continue Search',
    'fi' => 'Finish Import',
    're' => 'Recover Checked',
    'ip' => 'Import Checked',
    'ca' => 'Cancel',
    'co' => 'Change Order',
    'ti' => 'Title',
    'pa' => 'Path',
                   'in' => 'Include'
    );
   
    $r->print(&Apache::loncommon::start_page($title, $js));
    $r->print('<h1>'.&mt($title).'</h1>');
   
    $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="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          my $buttontext = $lt{'re'};
     }          if ($env{'form.recover'}) {
     if ($ENV{'form.catalogmode'} eq 'groupsearch') {      $r->print(<<END);
  $r->print(<<END);  <input type="button" name="alter" value="$buttontext"
 <input type="button" name="alter" value="GO BACK"   onClick="finish_import()" />&nbsp;
  onClick="window.location='/adm/searchcat?catalogmode=groupsearch'" />&nbsp;  <input type="button" name="alter" value="$lt{'ca'}" onClick="self.close()" />
 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);
   <h2>$lt{'fin'}</h2>
   <div>
   <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()" />
   </div>
   <br />
   END
           }
   
           # Only display header if content exists
           if ($clen > 0) {
               $r->print(&Apache::loncommon::start_data_table()
                        .&Apache::loncommon::start_data_table_header_row());
               if (($env{'form.readfile'})) { 
                   $r->print("<th>$lt{'in'}</th>\n");
               } else { 
                   $r->print('<th colspan="2">'.$lt{'co'}.'</th>'."\n"); 
               }
               $r->print('<th colspan="2">'.$lt{'ti'}.'</th>'."\n");
               $r->print("<th>$lt{'pa'}</th>");
               $r->print(&Apache::loncommon::end_data_table_header_row()."\n");
           } else {
               my $errtxt = '';
               if ($env{'form.recover'}) {
                   $errtxt = 'There are no resources to recover.';
               } else {
                   $errtxt = 'There are no resources to import.';
               }
               $r->print('<p class="LC_info">'.&mt($errtxt).'</p>');
           }
       } else {
    $r->print(&Apache::loncommon::start_page(undef,$js,
    {'only_body' => 1}));
   #       $r->print('<h1>'.&mt($title).'</h1>');
    $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'})) {
  $r->print("<tr><td bgcolor='$fileclr'>");      $r->print(&Apache::loncommon::start_data_table_row()
  $r->print(&movers($clen,$ctr));                       ."<td>");
  $r->print(&hidden($ctr-1,$thash{$key},$key));              if (($env{'form.readfile'})) {
  $r->print("</td><td bgcolor='$fileclr'>");   $r->print(&checkbox($ctr-1));
  $r->print(&select_box($clen,$ctr));      } else {
  $r->print("</td><td bgcolor='$fileclr'>");   $r->print(&movers($clen,$ctr));
  $r->print("<img src='$iconpath$curfext.gif'>");      }
  $r->print("</td><td bgcolor='$fileclr'>");   }
  $r->print("$thash{$key}</td><td bgcolor='$fileclr'>\n");   $r->print(&hidden($ctr-1,$resource->{'title'},$resource->{'url'},
  $r->print("$key</td></tr>\n");    $resource->{'id'}));
     }    if (($clen > 1)  || ($env{'form.readfile'})) {
     $r->print("</table></td></tr></table></form>");      $r->print("</td>");
     $r->print(<<END);              unless (($env{'form.readfile'})) {
 </body>   $r->print("<td>".
 </html>    &select_box($clen,$ctr).
     "</td>");
       }
       $r->print("<td>");
       $r->print("<img src='$iconname' />");
       $r->print("</td><td>");
               if (($env{'form.recover'}) &&
                   ($resource->{'url'} =~ m{/uploaded/$match_domain/$match_courseid/supplemental/})) {
                   my $title = &Apache::loncommon::parse_supplemental_title($resource->{'title'});
                   $r->print($title);
               } else {
                   $r->print($resource->{'title'});
               }
       $r->print($resource->{'notes'}."</td><td>\n");
       $r->print($resource->{'url'}."</td>"
                        .&Apache::loncommon::end_data_table_row()
                        ."\n");
    } 
       }
       if (($clen > 1) || ($env{'form.readfile'})) {
           if ($clen > 0) {
               $r->print(&Apache::loncommon::end_data_table());
           }
           $r->print('</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="'.
  '" />';   &escape($title).'" />';
       $filelink=~s|^/ext/|http://|;
     $string .= '<input type="hidden" name="filelink'.$sel.'" value="'.      $string .= '<input type="hidden" name="filelink'.$sel.'" value="'.
  $filelink.'" />';   &escape($filelink).'" />';
       $string .= '<input type="hidden" name="id'.$sel.'" value="'.&escape($id).'" />';
     return $string;      return $string;
 }  }
   
Line 356  sub select_box { Line 513  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 368  sub select_box { Line 525  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__
   
   =pod
   
   =head1 NAME
   
   Apache::groupsort.pm
   
   =head1 SYNOPSIS
   
   Implements a second phase of importing
   multiple resources into the RAT. Allows for
   reordering the sequence of resources
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   
   =head1 NOTABLE SUBROUTINES
   
   =over
   
   =item 
   
   =back
   
   =cut
   

Removed from v.1.10  
changed lines
  Added in v.1.68.6.4


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.