Diff for /loncom/interface/londocs.pm between versions 1.238 and 1.246

version 1.238, 2006/07/20 01:18:26 version 1.246, 2006/11/11 18:36:43
Line 33  use Apache::Constants qw(:common :http); Line 33  use Apache::Constants qw(:common :http);
 use Apache::imsexport;  use Apache::imsexport;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonratedt;  use LONCAPA::map();
 use Apache::lonratsrv;  use Apache::lonratedt();
 use Apache::lonxml;  use Apache::lonxml;
 use Apache::loncreatecourse;  use Apache::lonclonecourse;
 use Apache::lonnavmaps;  use Apache::lonnavmaps;
 use HTML::Entities;  use HTML::Entities;
 use GDBM_File;  use GDBM_File;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Cwd;  use Cwd;
 use lib '/home/httpd/lib/perl/';  
 use LONCAPA;  use LONCAPA;
   
 my $iconpath;  my $iconpath;
Line 58  my $hadchanges; Line 57  my $hadchanges;
   
 my %help=();  my %help=();
   
 # Mapread read maps into lonratedt::global arrays   # Mapread read maps into LONCAPA::map:: global arrays 
 # @order and @resources, determines status  # @order and @resources, determines status
 # sets @order - pointer to resources in right order  # sets @order - pointer to resources in right order
 # sets @resources - array with the resources with correct idx  # sets @resources - array with the resources with correct idx
Line 67  my %help=(); Line 66  my %help=();
 sub mapread {  sub mapread {
     my ($coursenum,$coursedom,$map)=@_;      my ($coursenum,$coursedom,$map)=@_;
     return      return
       &Apache::lonratedt::mapread('/uploaded/'.$coursedom.'/'.$coursenum.'/'.        &LONCAPA::map::mapread('/uploaded/'.$coursedom.'/'.$coursenum.'/'.
                                 $map);       $map);
 }  }
   
 sub storemap {  sub storemap {
     my ($coursenum,$coursedom,$map)=@_;      my ($coursenum,$coursedom,$map)=@_;
     my ($outtext,$errtext)=      my ($outtext,$errtext)=
       &Apache::lonratedt::storemap('/uploaded/'.$coursedom.'/'.$coursenum.'/'.        &LONCAPA::map::storemap('/uploaded/'.$coursedom.'/'.$coursenum.'/'.
                                 $map,1);        $map,1);
     if ($errtext) { return ($errtext,2); }      if ($errtext) { return ($errtext,2); }
           
     $hadchanges=1;      $hadchanges=1;
Line 186  sub dumpcourse { Line 185  sub dumpcourse {
     $r->print('<br /><tt>'.$_.'</tt> => <tt>'.$newfilename.'</tt>: ');      $r->print('<br /><tt>'.$_.'</tt> => <tt>'.$newfilename.'</tt>: ');
     if (my $fh=Apache::File->new('>'.$path.'/'.$newfilename)) {      if (my $fh=Apache::File->new('>'.$path.'/'.$newfilename)) {
  if ($_=~/\.(sequence|page|html|htm|xml|xhtml)$/) {   if ($_=~/\.(sequence|page|html|htm|xml|xhtml)$/) {
     print $fh &Apache::loncreatecourse::rewritefile(      print $fh &Apache::lonclonecourse::rewritefile(
          &Apache::loncreatecourse::readfile($env{'request.course.id'},$_),           &Apache::lonclonecourse::readfile($env{'request.course.id'},$_),
      (%replacehash,$crs => '')       (%replacehash,$crs => '')
     );      );
  } else {   } else {
     print $fh      print $fh
          &Apache::loncreatecourse::readfile($env{'request.course.id'},$_);           &Apache::lonclonecourse::readfile($env{'request.course.id'},$_);
        }         }
  $fh->close();   $fh->close();
     } else {      } else {
Line 230  sub dumpcourse { Line 229  sub dumpcourse {
  $r->print('<h3>'.&mt('Folder in Construction Space').'</h3><input type="text" size="50" name="authorfolder" value="'.$title.'" /><br />');   $r->print('<h3>'.&mt('Folder in Construction Space').'</h3><input type="text" size="50" name="authorfolder" value="'.$title.'" /><br />');
  &tiehash();   &tiehash();
  $r->print('<h3>'.&mt('Filenames in Construction Space').'</h3><table border="2"><tr><th>'.&mt('Internal Filename').'</th><th>'.&mt('Title').'</th><th>'.&mt('Save as ...').'</th></tr>');   $r->print('<h3>'.&mt('Filenames in Construction Space').'</h3><table border="2"><tr><th>'.&mt('Internal Filename').'</th><th>'.&mt('Title').'</th><th>'.&mt('Save as ...').'</th></tr>');
  foreach (&Apache::loncreatecourse::crsdirlist($origcrsid,'userfiles')) {   foreach (&Apache::lonclonecourse::crsdirlist($origcrsid,'userfiles')) {
     $r->print('<tr><td>'.$_.'</td>');      $r->print('<tr><td>'.$_.'</td>');
     my ($ext)=($_=~/\.(\w+)$/);      my ($ext)=($_=~/\.(\w+)$/);
     my $title=$hash{'title_'.$hash{      my $title=$hash{'title_'.$hash{
Line 931  sub group_import { Line 930  sub group_import {
             }              }
         }          }
  if ($url) {   if ($url) {
     my $idx = &Apache::lonratedt::getresidx($url);      my $idx = &LONCAPA::map::getresidx($url);
     $Apache::lonratedt::order[$#Apache::lonratedt::order+1]=$idx;      $LONCAPA::map::order[$#LONCAPA::map::order+1]=$idx;
     my $ext = 'false';      my $ext = 'false';
     if ($url=~/^http:\/\//) { $ext = 'true'; }      if ($url=~/^http:\/\//) { $ext = 'true'; }
     $url =~ s/:/\&colon;/g;      $url =~ s/:/\&colon;/g;
     $name =~ s/:/\&colon;/g;      $name =~ s/:/\&colon;/g;
     $Apache::lonratedt::resources[$idx] =       $LONCAPA::map::resources[$idx] = 
  join ':', ($name, $url, $ext, 'normal', 'res');   join ':', ($name, $url, $ext, 'normal', 'res');
  }   }
     }      }
Line 961  sub breadcrumbs { Line 960  sub breadcrumbs {
                '&markedcopy_title='.                 '&markedcopy_title='.
                &escape($env{'form.markedcopy_title'});                 &escape($env{'form.markedcopy_title'});
     }      }
       my $randompick=-1;
       my $isencrypted=0;
       my $ishidden=0;
     while (@folders) {      while (@folders) {
  my $folder=shift(@folders);   my $folder=shift(@folders);
  my $foldername=shift(@folders);   my $foldername=shift(@folders);
Line 968  sub breadcrumbs { Line 970  sub breadcrumbs {
  $folderpath.=$folder.'&'.$foldername;   $folderpath.=$folder.'&'.$foldername;
  my $url='/adm/coursedocs?folderpath='.   my $url='/adm/coursedocs?folderpath='.
     &escape($folderpath);      &escape($folderpath);
               my $name=&unescape($foldername);
   # randompick number, hidden, encrypted is appended with ":"s to the foldername
               $name=~s/\:(\d*)\:(\w*)\:(\w*)$//;
               if ($1 ne '') { 
                  $randompick=$1;
               } else {
                  $randompick=-1;
               }
               if ($2) { $ishidden=1; }
               if ($3) { $isencrypted=1; }
     &Apache::lonhtmlcommon::add_breadcrumb(      &Apache::lonhtmlcommon::add_breadcrumb(
       {'href'=>$url.$cpinfo,        {'href'=>$url.$cpinfo,
        'title'=>&unescape($foldername),         'title'=>$name,
        'text'=>'<font size="+1">'.         'text'=>'<font size="+1">'.
    &unescape($foldername).'</font>'     $name.'</font>'
        });         });
          
     
     }      }
     return &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp',      return (&Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp',
        'LC_docs_path');         'LC_docs_path'),$randompick,$ishidden,$isencrypted);
 }  }
   
 sub editor {  sub editor {
Line 991  sub editor { Line 1001  sub editor {
     }      }
     ($errtext,$fatal)=      ($errtext,$fatal)=
               &mapread($coursenum,$coursedom,$folder.'.'.$container);                &mapread($coursenum,$coursedom,$folder.'.'.$container);
     if ($#Apache::lonratedt::order<1) {      if ($#LONCAPA::map::order<1) {
  my $idx=&Apache::lonratedt::getresidx();   my $idx=&LONCAPA::map::getresidx();
  if ($idx<=0) { $idx=1; }   if ($idx<=0) { $idx=1; }
         $Apache::lonratedt::order[0]=$idx;          $LONCAPA::map::order[0]=$idx;
         $Apache::lonratedt::resources[$idx]='';          $LONCAPA::map::resources[$idx]='';
     }      }
     if (defined($env{'form.markcopy'})) {      if (defined($env{'form.markcopy'})) {
 # Mark for copying  # Mark for copying
  my ($title,$url)=split(':',$Apache::lonratedt::resources[$Apache::lonratedt::order[$env{'form.markcopy'}]]);   my ($title,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$env{'form.markcopy'}]]);
  $env{'form.markedcopy_title'}=$title;   $env{'form.markedcopy_title'}=$title;
  $env{'form.markedcopy_url'}=$url;   $env{'form.markedcopy_url'}=$url;
     }      }
     $r->print(&breadcrumbs($folder));      my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted)=&breadcrumbs($folder);
       $r->print($breadcrumbtrail);
     if ($fatal) {      if ($fatal) {
    $r->print('<p><font color="red">'.$errtext.'</font></p>');     $r->print('<p><font color="red">'.$errtext.'</font></p>');
     } else {      } else {
Line 1016  sub editor { Line 1027  sub editor {
  my $idx=$env{'form.setparms'};   my $idx=$env{'form.setparms'};
 # set parameters  # set parameters
  if ($env{'form.randpick_'.$idx}) {   if ($env{'form.randpick_'.$idx}) {
     &Apache::lonratedt::storeparameter($idx,'parameter_randompick',$env{'form.randpick_'.$idx},'int_pos');      &LONCAPA::map::storeparameter($idx,'parameter_randompick',$env{'form.randpick_'.$idx},'int_pos');
  } else {   } else {
     &Apache::lonratedt::delparameter($idx,'parameter_randompick');      &LONCAPA::map::delparameter($idx,'parameter_randompick');
  }   }
  if ($env{'form.hidprs_'.$idx}) {   if ($env{'form.hidprs_'.$idx}) {
     &Apache::lonratedt::storeparameter($idx,'parameter_hiddenresource','yes','string_yesno');      &LONCAPA::map::storeparameter($idx,'parameter_hiddenresource','yes','string_yesno');
  } else {   } else {
     &Apache::lonratedt::delparameter($idx,'parameter_hiddenresource');      &LONCAPA::map::delparameter($idx,'parameter_hiddenresource');
  }   }
  if ($env{'form.encprs_'.$idx}) {   if ($env{'form.encprs_'.$idx}) {
     &Apache::lonratedt::storeparameter($idx,'parameter_encrypturl','yes','string_yesno');      &LONCAPA::map::storeparameter($idx,'parameter_encrypturl','yes','string_yesno');
  } else {   } else {
     &Apache::lonratedt::delparameter($idx,'parameter_encrypturl');      &LONCAPA::map::delparameter($idx,'parameter_encrypturl');
  }   }
   
  if ($env{'form.newpos'}) {   if ($env{'form.newpos'}) {
Line 1041  sub editor { Line 1052  sub editor {
     if ($newpos>$currentpos) {      if ($newpos>$currentpos) {
 # moving stuff up  # moving stuff up
  for ($i=0;$i<$currentpos;$i++) {   for ($i=0;$i<$currentpos;$i++) {
     $neworder[$i]=$Apache::lonratedt::order[$i];      $neworder[$i]=$LONCAPA::map::order[$i];
  }   }
  for ($i=$currentpos;$i<$newpos;$i++) {   for ($i=$currentpos;$i<$newpos;$i++) {
     $neworder[$i]=$Apache::lonratedt::order[$i+1];      $neworder[$i]=$LONCAPA::map::order[$i+1];
  }   }
                         $neworder[$newpos]=$Apache::lonratedt::order[$currentpos];                          $neworder[$newpos]=$LONCAPA::map::order[$currentpos];
  for ($i=$newpos+1;$i<=$#Apache::lonratedt::order;$i++) {   for ($i=$newpos+1;$i<=$#LONCAPA::map::order;$i++) {
     $neworder[$i]=$Apache::lonratedt::order[$i];      $neworder[$i]=$LONCAPA::map::order[$i];
  }   }
     } else {      } else {
 # moving stuff down  # moving stuff down
  for ($i=0;$i<$newpos;$i++) {   for ($i=0;$i<$newpos;$i++) {
     $neworder[$i]=$Apache::lonratedt::order[$i];      $neworder[$i]=$LONCAPA::map::order[$i];
  }   }
  $neworder[$newpos]=$Apache::lonratedt::order[$currentpos];   $neworder[$newpos]=$LONCAPA::map::order[$currentpos];
  for ($i=$newpos+1;$i<$currentpos+1;$i++) {   for ($i=$newpos+1;$i<$currentpos+1;$i++) {
     $neworder[$i]=$Apache::lonratedt::order[$i-1];      $neworder[$i]=$LONCAPA::map::order[$i-1];
  }   }
  for ($i=$currentpos+1;$i<=$#Apache::lonratedt::order;$i++) {   for ($i=$currentpos+1;$i<=$#LONCAPA::map::order;$i++) {
     $neworder[$i]=$Apache::lonratedt::order[$i];      $neworder[$i]=$LONCAPA::map::order[$i];
  }   }
     }      }
     @Apache::lonratedt::order=@neworder;      @LONCAPA::map::order=@neworder;
  }   }
 # store the changed version  # store the changed version
   
Line 1086  sub editor { Line 1097  sub editor {
     my $newurl=$1.$newid.'.'.$2;      my $newurl=$1.$newid.'.'.$2;
     my $storefn=$newurl;      my $storefn=$newurl;
                     $storefn=~s/^\/\w+\/\w+\/\w+\///;                      $storefn=~s/^\/\w+\/\w+\/\w+\///;
     &Apache::loncreatecourse::writefile      &Apache::lonclonecourse::writefile
  ($env{'request.course.id'},$storefn,   ($env{'request.course.id'},$storefn,
  &Apache::lonnet::getfile($url));   &Apache::lonnet::getfile($url));
     $url=$newurl;      $url=$newurl;
Line 1098  sub editor { Line 1109  sub editor {
  if ($url=~/^http\:\/\//) { $ext='true'; }   if ($url=~/^http\:\/\//) { $ext='true'; }
  $url=~s/\:/\&colon;/g;   $url=~s/\:/\&colon;/g;
 # Now insert the URL at the bottom  # Now insert the URL at the bottom
                 my $newidx=&Apache::lonratedt::getresidx($url);                  my $newidx=&LONCAPA::map::getresidx($url);
  $Apache::lonratedt::resources[$newidx]=   $LONCAPA::map::resources[$newidx]=
     $title.':'.$url.':'.$ext.':normal:res';      $title.':'.$url.':'.$ext.':normal:res';
  $Apache::lonratedt::order[1+$#Apache::lonratedt::order]=$newidx;   $LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx;
 # Store the result  # Store the result
  ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);   ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);
  if ($fatal) {   if ($fatal) {
Line 1114  sub editor { Line 1125  sub editor {
     if ($env{'form.cmd'}) {      if ($env{'form.cmd'}) {
                 my ($cmd,$idx)=split(/\_/,$env{'form.cmd'});                  my ($cmd,$idx)=split(/\_/,$env{'form.cmd'});
                 if ($cmd eq 'del') {                  if ($cmd eq 'del') {
     my (undef,$url)=split(':',$Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]]);      my (undef,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$idx]]);
     if (($url=~m|/+uploaded/\Q$coursedom\E/\Q$coursenum\E/|) &&      if (($url=~m|/+uploaded/\Q$coursedom\E/\Q$coursenum\E/|) &&
  ($url!~/\.(page|sequence|problem|exam|quiz|assess|survey|form|library|task)$/)) {   ($url!~/\.(page|sequence|problem|exam|quiz|assess|survey|form|library|task)$/)) {
  &Apache::lonnet::removeuploadedurl($url);   &Apache::lonnet::removeuploadedurl($url);
     } else {      } else {
  &Apache::lonratedt::makezombie($Apache::lonratedt::order[$idx]);   &LONCAPA::map::makezombie($LONCAPA::map::order[$idx]);
     }      }
     for (my $i=$idx;$i<$#Apache::lonratedt::order;$i++) {      for (my $i=$idx;$i<$#LONCAPA::map::order;$i++) {
                         $Apache::lonratedt::order[$i]=                          $LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1];
                           $Apache::lonratedt::order[$i+1];  
                     }                      }
                     $#Apache::lonratedt::order--;                      $#LONCAPA::map::order--;
                 } elsif ($cmd eq 'cut') {                  } elsif ($cmd eq 'cut') {
     my (undef,$url)=split(':',$Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]]);      my (undef,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$idx]]);
     &Apache::lonratedt::makezombie($Apache::lonratedt::order[$idx]);      &LONCAPA::map::makezombie($LONCAPA::map::order[$idx]);
     for (my $i=$idx;$i<$#Apache::lonratedt::order;$i++) {      for (my $i=$idx;$i<$#LONCAPA::map::order;$i++) {
                         $Apache::lonratedt::order[$i]=                          $LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1];
                           $Apache::lonratedt::order[$i+1];  
                     }                      }
                     $#Apache::lonratedt::order--;                      $#LONCAPA::map::order--;
                 } elsif ($cmd eq 'up') {                  } elsif ($cmd eq 'up') {
   if (($idx) && (defined($Apache::lonratedt::order[$idx-1]))) {    if (($idx) && (defined($LONCAPA::map::order[$idx-1]))) {
                     my $i=$Apache::lonratedt::order[$idx-1];                      my $i=$LONCAPA::map::order[$idx-1];
                     $Apache::lonratedt::order[$idx-1]=                      $LONCAPA::map::order[$idx-1] = $LONCAPA::map::order[$idx];
  $Apache::lonratedt::order[$idx];                      $LONCAPA::map::order[$idx] = $i;
                     $Apache::lonratedt::order[$idx]=$i;  
    }     }
                 } elsif ($cmd eq 'down') {                  } elsif ($cmd eq 'down') {
    if (defined($Apache::lonratedt::order[$idx+1])) {     if (defined($LONCAPA::map::order[$idx+1])) {
                     my $i=$Apache::lonratedt::order[$idx+1];                      my $i=$LONCAPA::map::order[$idx+1];
                     $Apache::lonratedt::order[$idx+1]=                      $LONCAPA::map::order[$idx+1] = $LONCAPA::map::order[$idx];
  $Apache::lonratedt::order[$idx];                      $LONCAPA::map::order[$idx] = $i;
                     $Apache::lonratedt::order[$idx]=$i;  
    }     }
                 } elsif ($cmd eq 'rename') {                  } elsif ($cmd eq 'rename') {
                     my $ratstr = $Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]];                      my $ratstr = $LONCAPA::map::resources[$LONCAPA::map::order[$idx]];
                     my ($rtitle,@rrest)=split(/\:/,                      my ($rtitle,@rrest)=split(/\:/,
                        $Apache::lonratedt::resources[                         $LONCAPA::map::resources[$LONCAPA::map::order[$idx]]);
        $Apache::lonratedt::order[$idx]]);  
                     my $comment=                      my $comment=
                      &HTML::Entities::decode($env{'form.title'});                       &HTML::Entities::decode($env{'form.title'});
                     $comment=~s/\</\&lt\;/g;                      $comment=~s/\</\&lt\;/g;
                     $comment=~s/\>/\&gt\;/g;                      $comment=~s/\>/\&gt\;/g;
                     $comment=~s/\:/\&colon;/g;                      $comment=~s/\:/\&colon;/g;
     if ($comment=~/\S/) {      if ($comment=~/\S/) {
  $Apache::lonratedt::resources[   $LONCAPA::map::resources[$LONCAPA::map::order[$idx]]=
        $Apache::lonratedt::order[$idx]]=      $comment.':'.join(':',@rrest);
             $comment.':'.join(':',@rrest);  
     }      }
 # Devalidate title cache  # Devalidate title cache
     &Apache::lonnet::devalidate_title_cache(&Apache::lonnet::unescape($rrest[0]));                      my $renamed_url=$rrest[0];
   # Has the &colon;-escaping
                       $renamed_url=~s/\&colon\;/\:/g;
       &Apache::lonnet::devalidate_title_cache($renamed_url);
                 }                  }
 # Store the changed version  # Store the changed version
  ($errtext,$fatal)=&storemap($coursenum,$coursedom,   ($errtext,$fatal)=&storemap($coursenum,$coursedom,
Line 1177  sub editor { Line 1185  sub editor {
 # Group import/search  # Group import/search
     if ($env{'form.importdetail'}) {      if ($env{'form.importdetail'}) {
  my @imports;   my @imports;
  &Apache::lonnet::logthis("imp detail ".$env{'form.importdetail'});  # &Apache::lonnet::logthis("imp detail ".$env{'form.importdetail'});
  foreach (split(/\&/,$env{'form.importdetail'})) {   foreach (split(/\&/,$env{'form.importdetail'})) {
     if (defined($_)) {      if (defined($_)) {
  my ($name,$url)=split(/\=/,$_);   my ($name,$url)=split(/\=/,$_);
Line 1199  sub editor { Line 1207  sub editor {
                if ($env{'form.importmap'}=~/\w/) {                 if ($env{'form.importmap'}=~/\w/) {
           foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) {            foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) {
       my ($title,$url,$ext,$type)=split(/\:/,$_);        my ($title,$url,$ext,$type)=split(/\:/,$_);
                       my $idx=&Apache::lonratedt::getresidx($url);                        my $idx=&LONCAPA::map::getresidx($url);
                       $Apache::lonratedt::resources[$idx]=$_;                        $LONCAPA::map::resources[$idx]=$_;
                       $Apache::lonratedt::order                        $LONCAPA::map::order[$#LONCAPA::map::order+1]=$idx;
           [$#Apache::lonratedt::order+1]=$idx;  
           }            }
 # Store the changed version  # Store the changed version
            ($errtext,$fatal)=&storemap($coursenum,$coursedom,             ($errtext,$fatal)=&storemap($coursenum,$coursedom,
Line 1220  sub editor { Line 1227  sub editor {
 # ---------------------------------------------------------------- Print screen  # ---------------------------------------------------------------- Print screen
         my $idx=0;          my $idx=0;
  my $shown=0;   my $shown=0;
           if (($ishidden) || ($isencrypted) || ($randompick>=0)) {
              $r->print('<p>'.&mt('Parameters').':<ul>'.
                        ($randompick>=0?'<li>'.&mt('randomly pick [_1] resources',$randompick).'</li>':'').
                        ($ishidden?'<li>'.&mt('contents hidden').'</li>':'').
                        ($isencrypted?'<li>'.&mt('URLs hidden').'</li>':'').
                        '</ul></p>');
           }                                                                                                     
           if ($randompick>=0) {
              $r->print('<p>'.&mt('Caution: this folder is set to randomly pick a subset of resources. Adding or removing resources from this folder will change the set of resources that the students see, resulting in spurious or missing credit for completed problems, not limited to ones you modify. Do not modify the contents of this folder if it is in active student use.').'</p>');
           }
         $r->print('<table>');          $r->print('<table>');
         foreach (@Apache::lonratedt::order) {          foreach (@LONCAPA::map::order) {
            my ($name,$url)=split(/\:/,$Apache::lonratedt::resources[$_]);             my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$_]);
    $name=&Apache::lonratsrv::qtescape($name);     $name=&LONCAPA::map::qtescape($name);
    $url=&Apache::lonratsrv::qtescape($url);     $url=&LONCAPA::map::qtescape($url);
            unless ($name) {  $name=(split(/\//,$url))[-1]; }             unless ($name) {  $name=(split(/\//,$url))[-1]; }
            unless ($name) { $idx++; next; }             unless ($name) { $idx++; next; }
            $r->print(&entryline($idx,$name,$url,$folder,$allowed,$_,$coursenum));             $r->print(&entryline($idx,$name,$url,$folder,$allowed,$_,$coursenum));
Line 1282  sub process_file_upload { Line 1299  sub process_file_upload {
         }          }
         ($errtext,$fatal)=          ($errtext,$fatal)=
               &mapread($coursenum,$coursedom,$folder.'.'.$container);                &mapread($coursenum,$coursedom,$folder.'.'.$container);
         if ($#Apache::lonratedt::order<1) {          if ($#LONCAPA::map::order<1) {
             $Apache::lonratedt::order[0]=1;              $LONCAPA::map::order[0]=1;
             $Apache::lonratedt::resources[1]='';              $LONCAPA::map::resources[1]='';
         }          }
         if ($fatal) {          if ($fatal) {
             return 'failed';              return 'failed';
Line 1300  sub process_file_upload { Line 1317  sub process_file_upload {
         }          }
 # this is for a course, not a user, so set coursedoc flag  # this is for a course, not a user, so set coursedoc flag
 # probably the only place in the system where this should be "1"  # probably the only place in the system where this should be "1"
         my $newidx=&Apache::lonratedt::getresidx();          my $newidx=&LONCAPA::map::getresidx();
         $destination .= $newidx;          $destination .= $newidx;
         my $url=&Apache::lonnet::userfileupload('uploaddoc',1,$destination,          my $url=&Apache::lonnet::userfileupload('uploaddoc',1,$destination,
  $parseaction,$allfiles,   $parseaction,$allfiles,
Line 1317  sub process_file_upload { Line 1334  sub process_file_upload {
                   $env{'user.domain'}.'___&&&___'.$comment;                    $env{'user.domain'}.'___&&&___'.$comment;
         }          }
   
         $Apache::lonratedt::resources[$newidx]=          $LONCAPA::map::resources[$newidx]=
                   $comment.':'.$url.':'.$ext.':normal:res';      $comment.':'.$url.':'.$ext.':normal:res';
         $Apache::lonratedt::order[$#Apache::lonratedt::order+1]= $newidx;          $LONCAPA::map::order[$#LONCAPA::map::order+1]= $newidx;
         ($errtext,$fatal)=&storemap($coursenum,$coursedom,          ($errtext,$fatal)=&storemap($coursenum,$coursedom,
     $folder.'.'.$container);      $folder.'.'.$container);
         if ($fatal) {          if ($fatal) {
Line 1400  sub entryline { Line 1417  sub entryline {
     my $renametitle=$title;      my $renametitle=$title;
     my $foldertitle=$title;      my $foldertitle=$title;
     my $pagetitle=$title;      my $pagetitle=$title;
     my $orderidx=$Apache::lonratedt::order[$index];      my $orderidx=$LONCAPA::map::order[$index];
     if ($title=~ /^(\d+)___&amp;&amp;&amp;___(\w+)___&amp;&amp;&amp;___(\w+)___&amp;&amp;&amp;___(.*)$/ ) {       if ($title=~ /^(\d+)___&amp;&amp;&amp;___(\w+)___&amp;&amp;&amp;___(\w+)___&amp;&amp;&amp;___(.*)$/ ) { 
  $foldertitle=&Apache::lontexconvert::msgtexconverted($4);   $foldertitle=&Apache::lontexconvert::msgtexconverted($4);
  $renametitle=$4;   $renametitle=$4;
Line 1436  sub entryline { Line 1453  sub entryline {
  my $incindex=$index+1;   my $incindex=$index+1;
  my $selectbox='';   my $selectbox='';
  if (($folder!~/^supplemental/) &&   if (($folder!~/^supplemental/) &&
     ($#Apache::lonratedt::order>0) &&       ($#LONCAPA::map::order>0) && 
     ((split(/\:/,      ((split(/\:/,
      $Apache::lonratedt::resources[$Apache::lonratedt::order[0]]))[1]        $LONCAPA::map::resources[$LONCAPA::map::order[0]]))[1] 
      ne '') &&        ne '') && 
     ((split(/\:/,      ((split(/\:/,
      $Apache::lonratedt::resources[$Apache::lonratedt::order[1]]))[1]        $LONCAPA::map::resources[$LONCAPA::map::order[1]]))[1] 
      ne '')) {       ne '')) {
     $selectbox=      $selectbox=
  '<input type="hidden" name="currentpos" value="'.$incindex.'" />'.   '<input type="hidden" name="currentpos" value="'.$incindex.'" />'.
  '<select name="newpos" onChange="this.form.submit()">';   '<select name="newpos" onChange="this.form.submit()">';
     for (my $i=1;$i<=$#Apache::lonratedt::order+1;$i++) {      for (my $i=1;$i<=$#LONCAPA::map::order+1;$i++) {
  if ($i==$incindex) {   if ($i==$incindex) {
     $selectbox.='<option value="" selected="1">('.$i.')</option>';      $selectbox.='<option value="" selected="1">('.$i.')</option>';
  } else {   } else {
Line 1588  END Line 1605  END
  } elsif ($url=~m|^/ext/|) {    } elsif ($url=~m|^/ext/|) { 
     $url='/adm/wrapper'.$url;      $url='/adm/wrapper'.$url;
  }   }
  $url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb);          if (&Apache::lonnet::symbverify($symb,$url)) {
       $url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb);
           } else {
               $url='';
           }
  if ($container eq 'page') {   if ($container eq 'page') {
     my $symb=$env{'form.pagesymb'};      my $symb=$env{'form.pagesymb'};
                   
Line 1601  END Line 1622  END
  my $foldername=&escape($foldertitle);   my $foldername=&escape($foldertitle);
  my $folderpath=$env{'form.folderpath'};   my $folderpath=$env{'form.folderpath'};
  if ($folderpath) { $folderpath.='&' };   if ($folderpath) { $folderpath.='&' };
  $folderpath.=$folderarg.'&'.$foldername;  # Append randompick number, hidden, and encrypted with ":" to foldername, 
   # so it gets transferred between levels
    $folderpath.=$folderarg.'&'.$foldername.':'.(&LONCAPA::map::getparameter($orderidx,
                                                 'parameter_randompick'))[0]
                                                  .':'.((&LONCAPA::map::getparameter($orderidx,
                                                 'parameter_hiddenresource'))[0]=~/^yes$/i)
                                                  .':'.((&LONCAPA::map::getparameter($orderidx,
                                                 'parameter_encrypturl'))[0]=~/^yes$/i);
  $url.='folderpath='.&escape($folderpath).$cpinfo;   $url.='folderpath='.&escape($folderpath).$cpinfo;
  $parameterset='<label>'.&mt('Randomly Pick: ').   $parameterset='<label>'.&mt('Randomly Pick: ').
     '<input type="text" size="4" onChange="this.form.submit()" name="randpick_'.$orderidx.'" value="'.      '<input type="text" size="4" onChange="this.form.submit()" name="randpick_'.$orderidx.'" value="'.
     (&Apache::lonratedt::getparameter($orderidx,      (&LONCAPA::map::getparameter($orderidx,
                                               'parameter_randompick'))[0].                                                'parameter_randompick'))[0].
                                               '" />'.                                                '" />'.
 '<font size="-2"><a href="javascript:void(0)">'.&mt('Store').'</a></font></label>';  '<font size="-2"><a href="javascript:void(0)">'.&mt('Store').'</a></font></label>';
Line 1631  END Line 1659  END
     }      }
     $line.='<td bgcolor="#FFFFBB"><a href="'.$url.'"><img src="'.$icon.      $line.='<td bgcolor="#FFFFBB"><a href="'.$url.'"><img src="'.$icon.
  '" border="0"></a></td>'.   '" border="0"></a></td>'.
         "<td bgcolor='#FFFFBB'><a href=\"$url\">$title</a></td>";          "<td bgcolor='#FFFFBB'>".($url?"<a href=\"$url\">":'').$title.
           ($url?'</a>':' <font size="-2">'.&mt('(re-initialize course to access)').'</font>')."</td>";
     if (($allowed) && ($folder!~/^supplemental/)) {      if (($allowed) && ($folder!~/^supplemental/)) {
   my %lt=&Apache::lonlocal::texthash(    my %lt=&Apache::lonlocal::texthash(
        'hd' => 'Hidden',         'hd' => 'Hidden',
        'ec' => 'URL hidden');         'ec' => 'URL hidden');
  my $enctext=   my $enctext=
     ((&Apache::lonratedt::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="1"':'');      ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="1"':'');
  my $hidtext=   my $hidtext=
     ((&Apache::lonratedt::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':'');      ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':'');
  $line.=(<<ENDPARMS);   $line.=(<<ENDPARMS);
 <td bgcolor="#BBBBFF"><font size='-2'>  <td bgcolor="#BBBBFF"><font size='-2'>
 <nobr><label><input type="checkbox" name="hidprs_$orderidx" onClick="this.form.submit()" $hidtext /> $lt{'hd'}</label></nobr></td>  <nobr><label><input type="checkbox" name="hidprs_$orderidx" onClick="this.form.submit()" $hidtext /> $lt{'hd'}</label></nobr></td>
Line 2199  sub handler { Line 2228  sub handler {
 # get personal data   # get personal data 
     my $uname=$env{'user.name'};      my $uname=$env{'user.name'};
     my $udom=$env{'user.domain'};      my $udom=$env{'user.domain'};
     my $plainname=&escape(      my $plainname=&escape(&Apache::loncommon::plainname($uname,$udom));
                      &Apache::loncommon::plainname($uname,$udom));  
   
 # graphics settings  # graphics settings
   

Removed from v.1.238  
changed lines
  Added in v.1.246


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>