Diff for /loncom/interface/londocs.pm between versions 1.173 and 1.174

version 1.173, 2005/04/04 23:51:54 version 1.174, 2005/04/07 06:56:23
Line 86  sub authorhosts { Line 86  sub authorhosts {
     my %outhash=();      my %outhash=();
     my $home=0;      my $home=0;
     my $other=0;      my $other=0;
     foreach (keys %ENV) {      foreach (keys %env) {
  if ($_=~/^user\.role\.(au|ca)\.(.+)$/) {   if ($_=~/^user\.role\.(au|ca)\.(.+)$/) {
     my $role=$1;      my $role=$1;
     my $realm=$2;      my $realm=$2;
     my ($start,$end)=split(/\./,$ENV{$_});      my ($start,$end)=split(/\./,$env{$_});
     if (($start) && ($start>time)) { next; }      if (($start) && ($start>time)) { next; }
     if (($end) && (time>$end)) { next; }      if (($end) && (time>$end)) { next; }
     my $ca; my $cd;      my $ca; my $cd;
     if ($1 eq 'au') {      if ($1 eq 'au') {
  $ca=$ENV{'user.name'};   $ca=$env{'user.name'};
  $cd=$ENV{'user.domain'};   $cd=$env{'user.domain'};
     } else {      } else {
  ($cd,$ca)=($realm=~/^\/(\w+)\/(\w+)$/);   ($cd,$ca)=($realm=~/^\/(\w+)\/(\w+)$/);
     }      }
Line 147  sub dumpcourse { Line 147  sub dumpcourse {
       '<form name="dumpdoc" method="post">');        '<form name="dumpdoc" method="post">');
     my ($home,$other,%outhash)=&authorhosts();      my ($home,$other,%outhash)=&authorhosts();
     unless ($home) { return ''; }      unless ($home) { return ''; }
     my $origcrsid=$ENV{'request.course.id'};      my $origcrsid=$env{'request.course.id'};
     my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);      my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);
     if (($ENV{'form.authorspace'}) && ($ENV{'form.authorfolder'}=~/\w/)) {      if (($env{'form.authorspace'}) && ($env{'form.authorfolder'}=~/\w/)) {
 # Do the dumping  # Do the dumping
  unless ($outhash{'home_'.$ENV{'form.authorspace'}}) { return ''; }   unless ($outhash{'home_'.$env{'form.authorspace'}}) { return ''; }
  my ($ca,$cd)=split(/\@/,$ENV{'form.authorspace'});   my ($ca,$cd)=split(/\@/,$env{'form.authorspace'});
  $r->print('<h3>'.&mt('Copying Files').'</h3>');   $r->print('<h3>'.&mt('Copying Files').'</h3>');
  my $title=$ENV{'form.authorfolder'};   my $title=$env{'form.authorfolder'};
  $title=&clean($title);   $title=&clean($title);
  my %replacehash=();   my %replacehash=();
  foreach (keys %ENV) {   foreach (keys %env) {
     if ($_=~/^form\.namefor\_(.+)/) {      if ($_=~/^form\.namefor\_(.+)/) {
  $replacehash{$1}=$ENV{$_};   $replacehash{$1}=$env{$_};
     }      }
  }   }
  my $crs='/uploaded/'.$ENV{'request.course.id'}.'/';   my $crs='/uploaded/'.$env{'request.course.id'}.'/';
  $crs=~s/\_/\//g;   $crs=~s/\_/\//g;
  foreach (keys %replacehash) {   foreach (keys %replacehash) {
     my $newfilename=$title.'/'.$replacehash{$_};      my $newfilename=$title.'/'.$replacehash{$_};
Line 181  sub dumpcourse { Line 181  sub dumpcourse {
     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::loncreatecourse::rewritefile(
          &Apache::loncreatecourse::readfile($ENV{'request.course.id'},$_),           &Apache::loncreatecourse::readfile($env{'request.course.id'},$_),
      (%replacehash,$crs => '')       (%replacehash,$crs => '')
     );      );
  } else {   } else {
     print $fh      print $fh
          &Apache::loncreatecourse::readfile($ENV{'request.course.id'},$_);           &Apache::loncreatecourse::readfile($env{'request.course.id'},$_);
        }         }
  $fh->close();   $fh->close();
     } else {      } else {
Line 259  sub exportbutton { Line 259  sub exportbutton {
 sub exportcourse {  sub exportcourse {
     my $r=shift;      my $r=shift;
     my %discussiontime = &Apache::lonnet::dump('discussiontimes',      my %discussiontime = &Apache::lonnet::dump('discussiontimes',
                                                $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, $ENV{'course.'.$ENV{'request.course.id'}.'.num'});                                                 $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'});
     my $numdisc = keys %discussiontime;      my $numdisc = keys %discussiontime;
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
     my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef);      my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef);
Line 268  sub exportcourse { Line 268  sub exportcourse {
   
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['finishexport']);                                              ['finishexport']);
     if ($ENV{'form.finishexport'}) {      if ($env{'form.finishexport'}) {
         &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},          &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['archive','discussion']);                                              ['archive','discussion']);
   
         my @exportitems = ();          my @exportitems = ();
         if (defined($ENV{'form.archive'})) {          if (defined($env{'form.archive'})) {
             if (ref($ENV{'form.archive'}) eq 'ARRAY') {              if (ref($env{'form.archive'}) eq 'ARRAY') {
                 @exportitems = @{$ENV{'form.archive'}};                  @exportitems = @{$env{'form.archive'}};
             } else {              } else {
                 $exportitems[0] = $ENV{'form.archive'};                  $exportitems[0] = $env{'form.archive'};
             }              }
         }          }
         my @discussions = ();          my @discussions = ();
         if (defined($ENV{'form.discussion'})) {          if (defined($env{'form.discussion'})) {
             if (ref($ENV{'form.discussion'}) eq 'ARRAY') {              if (ref($env{'form.discussion'}) eq 'ARRAY') {
                 @discussions = $ENV{'form.discussion'};                  @discussions = $env{'form.discussion'};
             } else {              } else {
                 $discussions[0] = $ENV{'form.discussion'};                  $discussions[0] = $env{'form.discussion'};
             }              }
         }          }
         if (@exportitems == 0 && @discussions == 0) {          if (@exportitems == 0 && @discussions == 0) {
Line 304  sub exportcourse { Line 304  sub exportcourse {
   
 #Create zip file in prtspool  #Create zip file in prtspool
                 my $imszipfile = '/prtspool/'.                  my $imszipfile = '/prtspool/'.
                 $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'.                  $env{'user.name'}.'_'.$env{'user.domain'}.'_'.
                    time.'_'.rand(1000000000).'.zip';                     time.'_'.rand(1000000000).'.zip';
 # zip can cause an sh launch which can pass along all of %ENV  
 # which can be too large for /bin/sh to handle  
                 my %oldENV=%ENV;  
                 undef(%ENV);  
                 my $cwd = &Cwd::getcwd();                  my $cwd = &Cwd::getcwd();
                 my $imszip = '/home/httpd/'.$imszipfile;                  my $imszip = '/home/httpd/'.$imszipfile;
                 chdir $tempexport;                  chdir $tempexport;
                 open(OUTPUT, "zip -r $imszip *  2> /dev/null |");                  open(OUTPUT, "zip -r $imszip *  2> /dev/null |");
                 close(OUTPUT);                  close(OUTPUT);
                 chdir $cwd;                  chdir $cwd;
                 %ENV=%oldENV;  
                 undef(%oldENV);  
                 $outcome .= 'Download the zip file from <a href="'.$imszipfile.'">IMS course archive</a><br />';                  $outcome .= 'Download the zip file from <a href="'.$imszipfile.'">IMS course archive</a><br />';
                 if ($copyresult) {                  if ($copyresult) {
                     $outcome .= 'The following errors occurred during export - '.$copyresult;                      $outcome .= 'The following errors occurred during export - '.$copyresult;
Line 491  sub create_ims_store { Line 485  sub create_ims_store {
     if (!-e $$tempexport) {      if (!-e $$tempexport) {
         mkdir($$tempexport,0700);          mkdir($$tempexport,0700);
     }      }
     $$tempexport .= '/'.$ENV{'user.domain'}.'_'.$ENV{'user.name'};      $$tempexport .= '/'.$env{'user.domain'}.'_'.$env{'user.name'};
     if (!-e $$tempexport) {      if (!-e $$tempexport) {
         mkdir($$tempexport,0700);          mkdir($$tempexport,0700);
     }      }
Line 508  sub create_ims_store { Line 502  sub create_ims_store {
 '<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"'.  '<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"'.
 ' xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2"'.  ' xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2"'.
 ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'.  ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'.
 ' identifier="MANIFEST-'.$ENV{'request.course.id'}.'-'.$now.'"'.  ' identifier="MANIFEST-'.$env{'request.course.id'}.'-'.$now.'"'.
 '  xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1imscp_v1p1.xsd'.  '  xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1imscp_v1p1.xsd'.
 '  http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd">'."\n".  '  http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd">'."\n".
 '  <organizations default="ORG-'.$ENV{'request.course.id'}.'-'.$now.'">'."\n".  '  <organizations default="ORG-'.$env{'request.course.id'}.'-'.$now.'">'."\n".
 '    <organization identifier="ORG-'.$ENV{'request.course.id'}.'-'.$now.'"'.  '    <organization identifier="ORG-'.$env{'request.course.id'}.'-'.$now.'"'.
 ' structure="hierarchical">'."\n".  ' structure="hierarchical">'."\n".
 '      <title>'.$ENV{'request.'.$ENV{'request.course.id'}.'.description'}.'</title>'  '      <title>'.$env{'request.'.$env{'request.course.id'}.'.description'}.'</title>'
     } else {      } else {
         $$outcome .= 'An error occurred opening the IMS manifest file.<br />'          $$outcome .= 'An error occurred opening the IMS manifest file.<br />'
 ;  ;
Line 532  sub build_package { Line 526  sub build_package {
     my $lastcontainer = 0;      my $lastcontainer = 0;
     my %parent = ();      my %parent = ();
     my @dependencies = ();      my @dependencies = ();
     my $cnum = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $cdom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     while ($curRes = $it->next()) {      while ($curRes = $it->next()) {
         if (ref($curRes)) {          if (ref($curRes)) {
             $count ++;              $count ++;
Line 583  sub build_package { Line 577  sub build_package {
                     $isvisible = 'false';                      $isvisible = 'false';
                 }                  }
                 unless ($curRes->is_sequence()) {                  unless ($curRes->is_sequence()) {
                     $resourceref = 'identifierref="RES-'.$ENV{'request.course.id'}.'-'.$count.'"';                      $resourceref = 'identifierref="RES-'.$env{'request.course.id'}.'-'.$count.'"';
                 }                  }
                 if (($depth <= $prevdepth) && ($count > 1) && ($included)) {                  if (($depth <= $prevdepth) && ($count > 1) && ($included)) {
                     print $ims_manifest "\n".'  </item>'."\n";                      print $ims_manifest "\n".'  </item>'."\n";
Line 592  sub build_package { Line 586  sub build_package {
                 $prevdepth = $depth;                  $prevdepth = $depth;
   
                 my $itementry =                  my $itementry =
               '<item identifier="ITEM-'.$ENV{'request.course.id'}.'-'.$count.                '<item identifier="ITEM-'.$env{'request.course.id'}.'-'.$count.
               '" isvisible="'.$isvisible.'" '.$resourceref.'>'.                '" isvisible="'.$isvisible.'" '.$resourceref.'>'.
               '<title>'.$curRes->title().'</title>';                '<title>'.$curRes->title().'</title>';
                 print $ims_manifest "\n".$itementry;                  print $ims_manifest "\n".$itementry;
Line 603  sub build_package { Line 597  sub build_package {
                     &process_content($count,$curRes,$cdom,$cnum,$symb,\$content_file,\@hrefs,$copyresult,$tempexport);                      &process_content($count,$curRes,$cdom,$cnum,$symb,\$content_file,\@hrefs,$copyresult,$tempexport);
                     if ($content_file) {                      if ($content_file) {
                         $imsresources .= "\n".                          $imsresources .= "\n".
                      '   <resource identifier="RES-'.$ENV{'request.course.id'}.'-'.$count.                       '   <resource identifier="RES-'.$env{'request.course.id'}.'-'.$count.
                      '" type="webcontent" href="'.$content_file.'">'."\n".                       '" type="webcontent" href="'.$content_file.'">'."\n".
                      '       <file href="'.$content_file.'" />'."\n";                       '       <file href="'.$content_file.'" />'."\n";
                         foreach (@hrefs) {                          foreach (@hrefs) {
Line 717  sub process_content { Line 711  sub process_content {
         $$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'uploaded');          $$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'uploaded');
     } elsif ($symb =~ m-\.(sequence|page)___\d+___([^/]+)/([^/]+)-) {      } elsif ($symb =~ m-\.(sequence|page)___\d+___([^/]+)/([^/]+)-) {
         my $canedit = 0;          my $canedit = 0;
         if ($2 eq $ENV{'user.domain'} && $3 eq $ENV{'user.name'})  {          if ($2 eq $env{'user.domain'} && $3 eq $env{'user.name'})  {
             $canedit= 1;              $canedit= 1;
         }          }
         if ($canedit) {          if ($canedit) {
Line 859  sub group_import { Line 853  sub group_import {
                             '<link from="1" to="2" index="1"></link>'."\n".                              '<link from="1" to="2" index="1"></link>'."\n".
                             '<resource id="2" src="" type="finish"></resource>'."\n".                              '<resource id="2" src="" type="finish"></resource>'."\n".
                             '</map>';                              '</map>';
             $ENV{'form.output'}=$newmapstr;              $env{'form.output'}=$newmapstr;
             my $home=&Apache::lonnet::homeserver($coursenum,$coursedom);              my $home=&Apache::lonnet::homeserver($coursenum,$coursedom);
             my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$home,              my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$home,
                                                 'output',$1.$2);                                                  'output',$1.$2);
Line 889  sub breadcrumbs { Line 883  sub breadcrumbs {
     my ($where)=@_;      my ($where)=@_;
     &Apache::lonhtmlcommon::clear_breadcrumbs();      &Apache::lonhtmlcommon::clear_breadcrumbs();
     my (@folders);      my (@folders);
     if ($ENV{'form.pagepath'}) {      if ($env{'form.pagepath'}) {
         @folders = split('&',$ENV{'form.pagepath'});          @folders = split('&',$env{'form.pagepath'});
     } else {      } else {
         @folders=split('&',$ENV{'form.folderpath'});          @folders=split('&',$env{'form.folderpath'});
     }      }
     my $folderpath;      my $folderpath;
     my $cpinfo='';      my $cpinfo='';
     if ($ENV{'form.markedcopy_url'}) {      if ($env{'form.markedcopy_url'}) {
  &Apache::lonnet::logthis('Found '.$ENV{'form.markedcopy_url'});   &Apache::lonnet::logthis('Found '.$env{'form.markedcopy_url'});
        $cpinfo='&markedcopy_url='.         $cpinfo='&markedcopy_url='.
                &Apache::lonnet::escape($ENV{'form.markedcopy_url'}).                 &Apache::lonnet::escape($env{'form.markedcopy_url'}).
                '&markedcopy_title='.                 '&markedcopy_title='.
                &Apache::lonnet::escape($ENV{'form.markedcopy_title'});                 &Apache::lonnet::escape($env{'form.markedcopy_title'});
     }      }
     while (@folders) {      while (@folders) {
  my $folder=shift(@folders);   my $folder=shift(@folders);
Line 928  sub editor { Line 922  sub editor {
     my $errtext='';      my $errtext='';
     my $fatal=0;      my $fatal=0;
     my $container='sequence';      my $container='sequence';
     if ($ENV{'form.pagepath'}) {      if ($env{'form.pagepath'}) {
         $container='page';          $container='page';
     }      }
     ($errtext,$fatal)=      ($errtext,$fatal)=
Line 937  sub editor { Line 931  sub editor {
         $Apache::lonratedt::order[0]=1;          $Apache::lonratedt::order[0]=1;
         $Apache::lonratedt::resources[1]='';          $Apache::lonratedt::resources[1]='';
     }      }
     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(':',$Apache::lonratedt::resources[$Apache::lonratedt::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));      $r->print(&breadcrumbs($folder));
     if ($fatal) {      if ($fatal) {
Line 950  sub editor { Line 944  sub editor {
 # ------------------------------------------------------------ Process commands  # ------------------------------------------------------------ Process commands
   
 # ---------------- if they are for this folder and user allowed to make changes  # ---------------- if they are for this folder and user allowed to make changes
  if (($allowed) && ($ENV{'form.folder'} eq $folder)) {   if (($allowed) && ($env{'form.folder'} eq $folder)) {
 # set parameters and change order  # set parameters and change order
     if (defined($ENV{'form.setparms'})) {      if (defined($env{'form.setparms'})) {
  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');      &Apache::lonratedt::storeparameter($idx,'parameter_randompick',$env{'form.randpick_'.$idx},'int_pos');
  } else {   } else {
     &Apache::lonratedt::delparameter($idx,'parameter_randompick');      &Apache::lonratedt::delparameter($idx,'parameter_randompick');
  }   }
  if ($ENV{'form.hidprs_'.$idx}) {   if ($env{'form.hidprs_'.$idx}) {
     &Apache::lonratedt::storeparameter($idx,'parameter_hiddenresource','yes','string_yesno');      &Apache::lonratedt::storeparameter($idx,'parameter_hiddenresource','yes','string_yesno');
  } else {   } else {
     &Apache::lonratedt::delparameter($idx,'parameter_hiddenresource');      &Apache::lonratedt::delparameter($idx,'parameter_hiddenresource');
  }   }
  if ($ENV{'form.encprs_'.$idx}) {   if ($env{'form.encprs_'.$idx}) {
     &Apache::lonratedt::storeparameter($idx,'parameter_encrypturl','yes','string_yesno');      &Apache::lonratedt::storeparameter($idx,'parameter_encrypturl','yes','string_yesno');
  } else {   } else {
     &Apache::lonratedt::delparameter($idx,'parameter_encrypturl');      &Apache::lonratedt::delparameter($idx,'parameter_encrypturl');
  }   }
   
  if ($ENV{'form.newpos'}) {   if ($env{'form.newpos'}) {
 # change order  # change order
   
     my $newpos=$ENV{'form.newpos'}-1;      my $newpos=$env{'form.newpos'}-1;
     my $currentpos=$ENV{'form.currentpos'}-1;      my $currentpos=$env{'form.currentpos'}-1;
     my $i;      my $i;
     my @neworder=();      my @neworder=();
     if ($newpos>$currentpos) {      if ($newpos>$currentpos) {
Line 1014  sub editor { Line 1008  sub editor {
  }   }
   
     }      }
     if ($ENV{'form.pastemarked'}) {      if ($env{'form.pastemarked'}) {
 # paste resource to end of list  # paste resource to end of list
                 my $url=$ENV{'form.markedcopy_url'};                  my $url=$env{'form.markedcopy_url'};
  my $title=$ENV{'form.markedcopy_title'};   my $title=$env{'form.markedcopy_title'};
 # Maps need to be copied first  # Maps need to be copied first
  if (($url=~/\.(page|sequence)$/) || ($url=~/^\/uploaded\//)) {   if (($url=~/\.(page|sequence)$/) || ($url=~/^\/uploaded\//)) {
     $title=&mt('Copy of').' '.$title;      $title=&mt('Copy of').' '.$title;
Line 1027  sub editor { Line 1021  sub editor {
     my $storefn=$newurl;      my $storefn=$newurl;
                     $storefn=~s/^\/\w+\/\w+\/\w+\///;                      $storefn=~s/^\/\w+\/\w+\/\w+\///;
     &Apache::loncreatecourse::writefile      &Apache::loncreatecourse::writefile
  ($ENV{'request.course.id'},$storefn,   ($env{'request.course.id'},$storefn,
  &Apache::lonnet::getfile($url));   &Apache::lonnet::getfile($url));
     $url=$newurl;      $url=$newurl;
  }   }
Line 1051  sub editor { Line 1045  sub editor {
   
     }      }
 # upload a file, if present  # upload a file, if present
            if (($ENV{'form.uploaddoc.filename'}) &&             if (($env{'form.uploaddoc.filename'}) &&
                ($ENV{'form.cmd'}=~/^upload_(\w+)/)) {                 ($env{'form.cmd'}=~/^upload_(\w+)/)) {
     if ( ($folder=~/^$1/) || ($1 eq 'default') ) {      if ( ($folder=~/^$1/) || ($1 eq 'default') ) {
 # 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"
Line 1061  sub editor { Line 1055  sub editor {
               my $ext='false';                my $ext='false';
               if ($url=~/^http\:\/\//) { $ext='true'; }                if ($url=~/^http\:\/\//) { $ext='true'; }
               $url=~s/\:/\&colon;/g;                $url=~s/\:/\&colon;/g;
       my $comment=$ENV{'form.comment'};        my $comment=$env{'form.comment'};
               $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 ($folder=~/^supplemental/) {                if ($folder=~/^supplemental/) {
   $comment=time.'___&&&___'.$ENV{'user.name'}.'___&&&___'.    $comment=time.'___&&&___'.$env{'user.name'}.'___&&&___'.
       $ENV{'user.domain'}.'___&&&___'.$comment;        $env{'user.domain'}.'___&&&___'.$comment;
               }                }
               $Apache::lonratedt::resources[$newidx]=                $Apache::lonratedt::resources[$newidx]=
                   $comment.':'.$url.':'.$ext.':normal:res';                    $comment.':'.$url.':'.$ext.':normal:res';
Line 1081  sub editor { Line 1075  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(':',$Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]]);
     if ($url=~m|/+uploaded/\Q$coursedom\E/\Q$coursenum\E/|) {      if ($url=~m|/+uploaded/\Q$coursedom\E/\Q$coursenum\E/|) {
Line 1120  sub editor { Line 1114  sub editor {
                        $Apache::lonratedt::resources[                         $Apache::lonratedt::resources[
        $Apache::lonratedt::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;
Line 1139  sub editor { Line 1133  sub editor {
  }   }
             }              }
 # Group import/search  # Group import/search
     if ($ENV{'form.importdetail'}) {      if ($env{'form.importdetail'}) {
  my @imports;   my @imports;
  foreach (split(/\&/,$ENV{'form.importdetail'})) {   foreach (split(/\&/,$env{'form.importdetail'})) {
     if (defined($_)) {      if (defined($_)) {
  my ($name,$url)=split(/\=/,$_);   my ($name,$url)=split(/\=/,$_);
  $name=&Apache::lonnet::unescape($name);   $name=&Apache::lonnet::unescape($name);
Line 1158  sub editor { Line 1152  sub editor {
  }   }
             }              }
 # Loading a complete map  # Loading a complete map
    if (($ENV{'form.importmap'}) && ($ENV{'form.loadmap'})) {     if (($env{'form.importmap'}) && ($env{'form.loadmap'})) {
        foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$ENV{'form.importmap'}))) {         foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) {
                    my $idx=$#Apache::lonratedt::resources;                     my $idx=$#Apache::lonratedt::resources;
                    $idx++;                     $idx++;
                    $Apache::lonratedt::resources[$idx]=$_;                     $Apache::lonratedt::resources[$idx]=$_;
Line 1193  sub editor { Line 1187  sub editor {
     $r->print('<tr><td>'.&mt('Currently no documents.').'</td></tr>');      $r->print('<tr><td>'.&mt('Currently no documents.').'</td></tr>');
  }   }
         $r->print("\n</table>\n");          $r->print("\n</table>\n");
  if ($ENV{'form.markedcopy_url'}) {   if ($env{'form.markedcopy_url'}) {
     $r->print(<<ENDPASTE);      $r->print(<<ENDPASTE);
 <p><form name="pasteform" action="/adm/coursedocs" method="post">  <p><form name="pasteform" action="/adm/coursedocs" method="post">
 <input type="hidden" name="markedcopy_url" value="$ENV{'form.markedcopy_url'}" />  <input type="hidden" name="markedcopy_url" value="$env{'form.markedcopy_url'}" />
 <input type="hidden" name="markedcopy_title" value="$ENV{'form.markedcopy_title'}" />  <input type="hidden" name="markedcopy_title" value="$env{'form.markedcopy_title'}" />
 ENDPASTE  ENDPASTE
             $r->print(              $r->print(
    '<input type="submit" name="pastemarked" value="'.&mt('Paste').     '<input type="submit" name="pastemarked" value="'.&mt('Paste').
       '" /> '.&Apache::loncommon::filedescription(        '" /> '.&Apache::loncommon::filedescription(
  (split(/\./,$ENV{'form.markedcopy_url'}))[-1]).': '.   (split(/\./,$env{'form.markedcopy_url'}))[-1]).': '.
       $ENV{'form.markedcopy_title'});        $env{'form.markedcopy_title'});
             if ($container eq 'page') {              if ($container eq 'page') {
  $r->print(<<PAGEINFO);   $r->print(<<PAGEINFO);
 <input type="hidden" name="pagepath" value="$ENV{'form.pagepath'}" />  <input type="hidden" name="pagepath" value="$env{'form.pagepath'}" />
 <input type="hidden" name="pagesymb" value="$ENV{'form.pagesymb'}" />  <input type="hidden" name="pagesymb" value="$env{'form.pagesymb'}" />
 PAGEINFO  PAGEINFO
             } else {              } else {
  $r->print(<<FOLDERINFO);   $r->print(<<FOLDERINFO);
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 FOLDERINFO  FOLDERINFO
     }      }
     $r->print('</form></p>');      $r->print('</form></p>');
Line 1242  sub entryline { Line 1236  sub entryline {
 # Edit commands  # Edit commands
     my $container;      my $container;
     my $folderpath;      my $folderpath;
     if ($ENV{'form.folderpath'}) {      if ($env{'form.folderpath'}) {
         $container = 'sequence';          $container = 'sequence';
  $folderpath=&Apache::lonnet::escape($ENV{'form.folderpath'});   $folderpath=&Apache::lonnet::escape($env{'form.folderpath'});
  # $htmlfoldername=&HTML::Entities::encode($ENV{'form.foldername'},'<>&"');   # $htmlfoldername=&HTML::Entities::encode($env{'form.foldername'},'<>&"');
     }      }
     my ($pagepath,$pagesymb);      my ($pagepath,$pagesymb);
     if ($ENV{'form.pagepath'}) {      if ($env{'form.pagepath'}) {
         $container = 'page';          $container = 'page';
         $pagepath=&Apache::lonnet::escape($ENV{'form.pagepath'});          $pagepath=&Apache::lonnet::escape($env{'form.pagepath'});
         $pagesymb=&Apache::lonnet::escape($ENV{'form.pagesymb'});          $pagesymb=&Apache::lonnet::escape($env{'form.pagesymb'});
     }      }
     my $cpinfo='';      my $cpinfo='';
     if ($ENV{'form.markedcopy_url'}) {      if ($env{'form.markedcopy_url'}) {
        $cpinfo='&markedcopy_url='.         $cpinfo='&markedcopy_url='.
                &Apache::lonnet::escape($ENV{'form.markedcopy_url'}).                 &Apache::lonnet::escape($env{'form.markedcopy_url'}).
                '&markedcopy_title='.                 '&markedcopy_title='.
                &Apache::lonnet::escape($ENV{'form.markedcopy_title'});                 &Apache::lonnet::escape($env{'form.markedcopy_title'});
     }      }
     if ($allowed) {      if ($allowed) {
  my $incindex=$index+1;   my $incindex=$index+1;
Line 1290  sub entryline { Line 1284  sub entryline {
                 'ct' => 'Cut',                  'ct' => 'Cut',
  'rn' => 'Rename',   'rn' => 'Rename',
  'cp' => 'Copy');   'cp' => 'Copy');
         if ($ENV{'form.pagepath'}) {          if ($env{'form.pagepath'}) {
             $line.=(<<END);              $line.=(<<END);
 <form name="entry_$index" action="/adm/coursedocs" method="post">  <form name="entry_$index" action="/adm/coursedocs" method="post">
 <input type="hidden" name="pagepath" value="$ENV{'form.pagepath'}" />  <input type="hidden" name="pagepath" value="$env{'form.pagepath'}" />
 <input type="hidden" name="pagesymb" value="$ENV{'form.pagesymb'}" />  <input type="hidden" name="pagesymb" value="$env{'form.pagesymb'}" />
 <input type="hidden" name="markedcopy_url" value="$ENV{'form.markedcopy_url'}" />  <input type="hidden" name="markedcopy_url" value="$env{'form.markedcopy_url'}" />
 <input type="hidden" name="markedcopy_title" value="$ENV{'form.markedcopy_title'}" />  <input type="hidden" name="markedcopy_title" value="$env{'form.markedcopy_title'}" />
 <input type="hidden" name="setparms" value="$orderidx" />  <input type="hidden" name="setparms" value="$orderidx" />
 <td><table border='0' cellspacing='2' cellpadding='0'>  <td><table border='0' cellspacing='2' cellpadding='0'>
 <tr><td bgcolor="#DDDDDD">  <tr><td bgcolor="#DDDDDD">
Line 1320  END Line 1314  END
         } else {          } else {
             $line.=(<<END);               $line.=(<<END); 
 <form name="entry_$index" action="/adm/coursedocs" method="post">  <form name="entry_$index" action="/adm/coursedocs" method="post">
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 <input type="hidden" name="markedcopy_url" value="$ENV{'form.markedcopy_url'}" />  <input type="hidden" name="markedcopy_url" value="$env{'form.markedcopy_url'}" />
 <input type="hidden" name="markedcopy_title" value="$ENV{'form.markedcopy_title'}" />  <input type="hidden" name="markedcopy_title" value="$env{'form.markedcopy_title'}" />
 <input type="hidden" name="setparms" value="$orderidx" />  <input type="hidden" name="setparms" value="$orderidx" />
 <td><table border='0' cellspacing='2' cellpadding='0'>  <td><table border='0' cellspacing='2' cellpadding='0'>
 <tr><td bgcolor="#DDDDDD">  <tr><td bgcolor="#DDDDDD">
Line 1375  END Line 1369  END
     if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) {      if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) {
  my $symb=&Apache::lonnet::symbclean(   my $symb=&Apache::lonnet::symbclean(
           &Apache::lonnet::declutter('uploaded/'.            &Apache::lonnet::declutter('uploaded/'.
            $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.'/'.             $env{'course.'.$env{'request.course.id'}.'.domain'}.'/'.
            $ENV{'course.'.$ENV{'request.course.id'}.'.num'}.'/'.$folder.             $env{'course.'.$env{'request.course.id'}.'.num'}.'/'.$folder.
            '.sequence').             '.sequence').
            '___'.$residx.'___'.             '___'.$residx.'___'.
    &Apache::lonnet::declutter($url));     &Apache::lonnet::declutter($url));
Line 1397  END Line 1391  END
  }   }
  $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb);   $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb);
  if ($container eq 'page') {   if ($container eq 'page') {
     my $symb=$ENV{'form.pagesymb'};      my $symb=$env{'form.pagesymb'};
                   
     $url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]);      $url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]);
     $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb);      $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb);
Line 1406  END Line 1400  END
     my $parameterset='&nbsp;';      my $parameterset='&nbsp;';
     if ($isfolder) {      if ($isfolder) {
  my $foldername=&Apache::lonnet::escape($foldertitle);   my $foldername=&Apache::lonnet::escape($foldertitle);
  my $folderpath=$ENV{'form.folderpath'};   my $folderpath=$env{'form.folderpath'};
  if ($folderpath) { $folderpath.='&' };   if ($folderpath) { $folderpath.='&' };
  $folderpath.=$folderarg.'&'.$foldername;   $folderpath.=$folderarg.'&'.$foldername;
  $url.='folderpath='.&Apache::lonnet::escape($folderpath).$cpinfo;   $url.='folderpath='.&Apache::lonnet::escape($folderpath).$cpinfo;
Line 1421  END Line 1415  END
     if ($ispage) {      if ($ispage) {
         my $pagename=&Apache::lonnet::escape($pagetitle);          my $pagename=&Apache::lonnet::escape($pagetitle);
         my $pagepath;          my $pagepath;
         my $folderpath=$ENV{'form.folderpath'};          my $folderpath=$env{'form.folderpath'};
         if ($folderpath) { $pagepath = $folderpath.'&' };          if ($folderpath) { $pagepath = $folderpath.'&' };
         $pagepath.=$pagearg.'&'.$pagename;          $pagepath.=$pagearg.'&'.$pagename;
  my $symb=$ENV{'form.pagesymb'};   my $symb=$env{'form.pagesymb'};
  if (!$symb) {   if (!$symb) {
     my $path='uploaded/'.      my $path='uploaded/'.
  $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.'/'.   $env{'course.'.$env{'request.course.id'}.'.domain'}.'/'.
  $ENV{'course.'.$ENV{'request.course.id'}.'.num'}.'/';   $env{'course.'.$env{'request.course.id'}.'.num'}.'/';
     $symb=&Apache::lonnet::encode_symb($path.$folder.'.sequence',      $symb=&Apache::lonnet::encode_symb($path.$folder.'.sequence',
        $residx,         $residx,
        $path.$pagearg.'.page');         $path.$pagearg.'.page');
Line 1464  ENDPARMS Line 1458  ENDPARMS
 sub tiehash {  sub tiehash {
     my ($mode)=@_;      my ($mode)=@_;
     $hashtied=0;      $hashtied=0;
     if ($ENV{'request.course.fn'}) {      if ($env{'request.course.fn'}) {
  if ($mode eq 'write') {   if ($mode eq 'write') {
     if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.".db",      if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.".db",
     &GDBM_WRCREAT(),0640)) {      &GDBM_WRCREAT(),0640)) {
                 $hashtied=2;                  $hashtied=2;
     }      }
  } else {   } else {
     if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.".db",      if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.".db",
     &GDBM_READER(),0640)) {      &GDBM_READER(),0640)) {
                 $hashtied=1;                  $hashtied=1;
     }      }
Line 1606  sub checkversions { Line 1600  sub checkversions {
     my $starttime=0;      my $starttime=0;
     my $haschanged=0;      my $haschanged=0;
     my %setversions=&Apache::lonnet::dump('resourceversions',      my %setversions=&Apache::lonnet::dump('resourceversions',
   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},    $env{'course.'.$env{'request.course.id'}.'.domain'},
   $ENV{'course.'.$ENV{'request.course.id'}.'.num'});    $env{'course.'.$env{'request.course.id'}.'.num'});
   
     $hashtied=0;      $hashtied=0;
     &tiehash();      &tiehash();
     my %newsetversions=();      my %newsetversions=();
     if ($ENV{'form.setmostrecent'}) {      if ($env{'form.setmostrecent'}) {
  $haschanged=1;   $haschanged=1;
  foreach (keys %hash) {   foreach (keys %hash) {
     if ($_=~/^ids\_(\/res\/.+)$/) {      if ($_=~/^ids\_(\/res\/.+)$/) {
  $newsetversions{$1}='mostrecent';   $newsetversions{$1}='mostrecent';
     }      }
  }   }
     } elsif ($ENV{'form.setcurrent'}) {      } elsif ($env{'form.setcurrent'}) {
  $haschanged=1;   $haschanged=1;
  foreach (keys %hash) {   foreach (keys %hash) {
     if ($_=~/^ids\_(\/res\/.+)$/) {      if ($_=~/^ids\_(\/res\/.+)$/) {
Line 1629  sub checkversions { Line 1623  sub checkversions {
  }   }
     }      }
  }   }
     } elsif ($ENV{'form.setversions'}) {      } elsif ($env{'form.setversions'}) {
  $haschanged=1;   $haschanged=1;
  foreach (keys %ENV) {   foreach (keys %env) {
     if ($_=~/^form\.set_version_(.+)$/) {      if ($_=~/^form\.set_version_(.+)$/) {
  my $src=$1;   my $src=$1;
  if (($ENV{$_}) && ($ENV{$_} ne $setversions{$src})) {   if (($env{$_}) && ($env{$_} ne $setversions{$src})) {
     $newsetversions{$src}=$ENV{$_};      $newsetversions{$src}=$env{$_};
  }   }
     }      }
  }   }
     }      }
     if ($haschanged) {      if ($haschanged) {
         if (&Apache::lonnet::put('resourceversions',\%newsetversions,          if (&Apache::lonnet::put('resourceversions',\%newsetversions,
   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},    $env{'course.'.$env{'request.course.id'}.'.domain'},
   $ENV{'course.'.$ENV{'request.course.id'}.'.num'}) eq 'ok') {    $env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') {
     $r->print('<h1>'.&mt('Your Version Settings have been Stored').'</h1>');      $r->print('<h1>'.&mt('Your Version Settings have been Stored').'</h1>');
  } else {   } else {
     $r->print('<h1><font color="red">'.&mt('An Error Occured while Attempting to Store your Version Settings').'</font></h1>');      $r->print('<h1><font color="red">'.&mt('An Error Occured while Attempting to Store your Version Settings').'</font></h1>');
Line 1651  sub checkversions { Line 1645  sub checkversions {
  &mark_hash_old();   &mark_hash_old();
     }      }
     &changewarning($r,'');      &changewarning($r,'');
     if ($ENV{'form.timerange'} eq 'all') {      if ($env{'form.timerange'} eq 'all') {
 # show all documents  # show all documents
  $header=&mt('All Documents in Course');   $header=&mt('All Documents in Course');
  $allsel=1;   $allsel=1;
Line 1664  sub checkversions { Line 1658  sub checkversions {
     } else {      } else {
 # show documents which changed  # show documents which changed
  %changes=&Apache::lonnet::dump   %changes=&Apache::lonnet::dump
  ('versionupdate',$ENV{'course.'.$ENV{'request.course.id'}.'.domain'},   ('versionupdate',$env{'course.'.$env{'request.course.id'}.'.domain'},
                      $ENV{'course.'.$ENV{'request.course.id'}.'.num'});                       $env{'course.'.$env{'request.course.id'}.'.num'});
  my $firstkey=(keys %changes)[0];   my $firstkey=(keys %changes)[0];
  unless ($firstkey=~/^error\:/) {   unless ($firstkey=~/^error\:/) {
     unless ($ENV{'form.timerange'}) {      unless ($env{'form.timerange'}) {
  $ENV{'form.timerange'}=604800;   $env{'form.timerange'}=604800;
     }      }
     my $seltext=&mt('during the last').' '.$ENV{'form.timerange'}.' '      my $seltext=&mt('during the last').' '.$env{'form.timerange'}.' '
  .&mt('seconds');   .&mt('seconds');
     if ($ENV{'form.timerange'}==-1) {      if ($env{'form.timerange'}==-1) {
  $seltext='since start of course';   $seltext='since start of course';
  $startsel='selected';   $startsel='selected';
  $ENV{'form.timerange'}=time;   $env{'form.timerange'}=time;
     }      }
     $starttime=time-$ENV{'form.timerange'};      $starttime=time-$env{'form.timerange'};
     if ($ENV{'form.timerange'}==2592000) {      if ($env{'form.timerange'}==2592000) {
  $seltext=&mt('during the last month').' ('.&Apache::lonlocal::locallocaltime($starttime).')';   $seltext=&mt('during the last month').' ('.&Apache::lonlocal::locallocaltime($starttime).')';
  $monthsel='selected';   $monthsel='selected';
     } elsif ($ENV{'form.timerange'}==604800) {      } elsif ($env{'form.timerange'}==604800) {
  $seltext=&mt('during the last week').' ('.&Apache::lonlocal::locallocaltime($starttime).')';   $seltext=&mt('during the last week').' ('.&Apache::lonlocal::locallocaltime($starttime).')';
  $weeksel='selected';   $weeksel='selected';
     } elsif ($ENV{'form.timerange'}==86400) {      } elsif ($env{'form.timerange'}==86400) {
  $seltext=&mt('since yesterday').' ('.&Apache::lonlocal::locallocaltime($starttime).')';   $seltext=&mt('since yesterday').' ('.&Apache::lonlocal::locallocaltime($starttime).')';
  $daysel='selected';   $daysel='selected';
     }      }
Line 1695  sub checkversions { Line 1689  sub checkversions {
  }   }
     }      }
     %setversions=&Apache::lonnet::dump('resourceversions',      %setversions=&Apache::lonnet::dump('resourceversions',
   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},    $env{'course.'.$env{'request.course.id'}.'.domain'},
   $ENV{'course.'.$ENV{'request.course.id'}.'.num'});    $env{'course.'.$env{'request.course.id'}.'.num'});
     my %lt=&Apache::lonlocal::texthash      my %lt=&Apache::lonlocal::texthash
       ('st' => 'Version changes since start of Course',        ('st' => 'Version changes since start of Course',
        'lm' => 'Version changes since last Month',         'lm' => 'Version changes since last Month',
Line 1860  sub changewarning { Line 1854  sub changewarning {
     my ($r,$postexec)=@_;      my ($r,$postexec)=@_;
     if (!&is_hash_old()) { return; }      if (!&is_hash_old()) { return; }
     my $pathvar='folderpath';      my $pathvar='folderpath';
     my $path=&Apache::lonnet::escape($ENV{'form.folderpath'});      my $path=&Apache::lonnet::escape($env{'form.folderpath'});
     if (defined($ENV{'form.pagepath'})) {      if (defined($env{'form.pagepath'})) {
  $pathvar='pagepath';   $pathvar='pagepath';
  $path=&Apache::lonnet::escape($ENV{'form.pagepath'});   $path=&Apache::lonnet::escape($env{'form.pagepath'});
  $path.='&amp;symb='.&Apache::lonnet::escape($ENV{'form.pagesymb'});   $path.='&amp;symb='.&Apache::lonnet::escape($env{'form.pagesymb'});
     }      }
     $r->print(      $r->print(
 '<script>function reinit(tf) { tf.submit();'.$postexec.' }</script>'.   '<script>function reinit(tf) { tf.submit();'.$postexec.' }</script>'. 
Line 1874  $pathvar.'='.$path. Line 1868  $pathvar.'='.$path.
 '" /><input type="hidden" name="selectrole" value="1" /><h3><font color="red">'.  '" /><input type="hidden" name="selectrole" value="1" /><h3><font color="red">'.
 &mt('Changes will become active for your current session after').  &mt('Changes will become active for your current session after').
 ' <input type="hidden" name="'.  ' <input type="hidden" name="'.
 $ENV{'request.role'}.'" value="1" /><input type="button" value="'.  $env{'request.role'}.'" value="1" /><input type="button" value="'.
 &mt('re-initializing course').'" onClick="reinit(this.form)"/>'.&mt(', or the next time you log in.').  &mt('re-initializing course').'" onClick="reinit(this.form)"/>'.&mt(', or the next time you log in.').
 $help{'Caching'}.'</font></h3></form>');  $help{'Caching'}.'</font></h3></form>');
 }  }
Line 1908  sub handler { Line 1902  sub handler {
   'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages');    'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages');
     $help{'Caching'} = &Apache::loncommon::help_open_topic('Caching');      $help{'Caching'} = &Apache::loncommon::help_open_topic('Caching');
   
   if ($ENV{'form.verify'}) {    if ($env{'form.verify'}) {
       &verifycontent($r);        &verifycontent($r);
   } elsif ($ENV{'form.versions'}) {    } elsif ($env{'form.versions'}) {
       &checkversions($r);        &checkversions($r);
   } elsif ($ENV{'form.dumpcourse'}) {    } elsif ($env{'form.dumpcourse'}) {
       &dumpcourse($r);        &dumpcourse($r);
   } elsif ($ENV{'form.exportcourse'}) {    } elsif ($env{'form.exportcourse'}) {
       &exportcourse($r);        &exportcourse($r);
   } else {    } else {
 # is this a standard course?  # is this a standard course?
   
     my $standard=($ENV{'request.course.uri'}=~/^\/uploaded\//);      my $standard=($env{'request.course.uri'}=~/^\/uploaded\//);
     my $forcestandard = 0;      my $forcestandard = 0;
     my $forcesupplement;      my $forcesupplement;
     my $script='';      my $script='';
Line 1930  sub handler { Line 1924  sub handler {
     my $uploadtag;      my $uploadtag;
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
     ['folderpath','pagepath','pagesymb','markedcopy_url','markedcopy_title']);      ['folderpath','pagepath','pagesymb','markedcopy_url','markedcopy_title']);
     if ($ENV{'form.folderpath'}) {      if ($env{'form.folderpath'}) {
  my (@folderpath)=split('&',$ENV{'form.folderpath'});   my (@folderpath)=split('&',$env{'form.folderpath'});
  $ENV{'form.foldername'}=&Apache::lonnet::unescape(pop(@folderpath));   $env{'form.foldername'}=&Apache::lonnet::unescape(pop(@folderpath));
  $ENV{'form.folder'}=pop(@folderpath);   $env{'form.folder'}=pop(@folderpath);
     }      }
     if ($ENV{'form.pagepath'}) {      if ($env{'form.pagepath'}) {
         my (@pagepath)=split('&',$ENV{'form.pagepath'});          my (@pagepath)=split('&',$env{'form.pagepath'});
         $ENV{'form.pagename'}=&Apache::lonnet::unescape(pop(@pagepath));          $env{'form.pagename'}=&Apache::lonnet::unescape(pop(@pagepath));
         $ENV{'form.folder'}=pop(@pagepath);          $env{'form.folder'}=pop(@pagepath);
         $containertag = '<input type="hidden" name="pagepath" value="" />'.          $containertag = '<input type="hidden" name="pagepath" value="" />'.
     '<input type="hidden" name="pagesymb" value="" />';      '<input type="hidden" name="pagesymb" value="" />';
         $uploadtag = '<input type="hidden" name="pagepath" value="'.$ENV{'form.pagepath'}.'" />'.          $uploadtag = '<input type="hidden" name="pagepath" value="'.$env{'form.pagepath'}.'" />'.
     '<input type="hidden" name="pagesymb" value="'.$ENV{'form.pagesymb'}.'" />';      '<input type="hidden" name="pagesymb" value="'.$env{'form.pagesymb'}.'" />';
     }      }
     if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) {      if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) {
        $showdoc='/'.$1;         $showdoc='/'.$1;
     }      }
     unless ($showdoc) { # got called from remote      unless ($showdoc) { # got called from remote
        if (($ENV{'form.folder'}=~/^default_/) ||          if (($env{'form.folder'}=~/^default_/) || 
           ($ENV{'form.folder'} =~ m#^\d+/(pages|sequences)/#)) {            ($env{'form.folder'} =~ m#^\d+/(pages|sequences)/#)) {
            $forcestandard = 1;             $forcestandard = 1;
        }          } 
        $forcesupplement=($ENV{'form.folder'}=~/^supplemental_/);         $forcesupplement=($env{'form.folder'}=~/^supplemental_/);
   
 # does this user have privileges to post, etc?  # does this user have privileges to post, etc?
        $allowed=&Apache::lonnet::allowed('mdc',$ENV{'request.course.id'});         $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
        if ($allowed) {          if ($allowed) { 
          &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']);           &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']);
          $script=&Apache::lonratedt::editscript('simple');            $script=&Apache::lonratedt::editscript('simple'); 
Line 1968  sub handler { Line 1962  sub handler {
     }      }
   
 # get course data  # get course data
     my $coursenum=$ENV{'course.'.$ENV{'request.course.id'}.'.num'};      my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'};
     my $coursedom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};      my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'};
   
 # 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=&Apache::lonnet::escape(      my $plainname=&Apache::lonnet::escape(
                      &Apache::loncommon::plainname($uname,$udom));                       &Apache::loncommon::plainname($uname,$udom));
   
Line 2195  ENDNEWSCRIPT Line 2189  ENDNEWSCRIPT
  'cv' => 'Check/Set Resource Versions',   'cv' => 'Check/Set Resource Versions',
   );    );
   
        my $folderpath=$ENV{'form.folderpath'};         my $folderpath=$env{'form.folderpath'};
        if (!$folderpath) {         if (!$folderpath) {
    if ($ENV{'form.folder'} eq '' ||     if ($env{'form.folder'} eq '' ||
        $ENV{'form.folder'} eq 'supplemental') {         $env{'form.folder'} eq 'supplemental') {
        $folderpath='default&'.         $folderpath='default&'.
    &Apache::lonnet::escape(&mt('Main Course Documents'));     &Apache::lonnet::escape(&mt('Main Course Documents'));
    }     }
        }         }
        unless ($ENV{'form.pagepath'}) {         unless ($env{'form.pagepath'}) {
            $containertag = '<input type="hidden" name="folderpath" value="" />';             $containertag = '<input type="hidden" name="folderpath" value="" />';
            $uploadtag = '<input type="hidden" name="folderpath" value="'.$folderpath.'" />';             $uploadtag = '<input type="hidden" name="folderpath" value="'.$folderpath.'" />';
        }         }
Line 2239  ENDCOURSEVERIFY Line 2233  ENDCOURSEVERIFY
  $r->print('<tr><td bgcolor="#BBBBBB">');   $r->print('<tr><td bgcolor="#BBBBBB">');
 #  '<h2>'.&mt('Main Course Documents').  #  '<h2>'.&mt('Main Course Documents').
 #  ($allowed?' '.$help{'Main_Course_Documents'}:'').'</h2>');  #  ($allowed?' '.$help{'Main_Course_Documents'}:'').'</h2>');
        my $folder=$ENV{'form.folder'};         my $folder=$env{'form.folder'};
        if ($folder eq '' || $folder eq 'supplemental') {         if ($folder eq '' || $folder eq 'supplemental') {
            $folder='default';             $folder='default';
    $ENV{'form.folderpath'}='default&'.&Apache::lonnet::escape(&mt('Main Course Documents'));     $env{'form.folderpath'}='default&'.&Apache::lonnet::escape(&mt('Main Course Documents'));
        }         }
        my $postexec='';         my $postexec='';
        if ($folder eq 'default') {         if ($folder eq 'default') {
Line 2302  $help{'Load_Map'}</nobr> Line 2296  $help{'Load_Map'}</nobr>
 </p>  </p>
 </form>  </form>
 ENDFORM  ENDFORM
        unless ($ENV{'form.pagepath'}) {         unless ($env{'form.pagepath'}) {
    $r->print(<<ENDFORM);     $r->print(<<ENDFORM);
 <hr />  <hr />
 <form action="/adm/coursedocs" method="post" name="newext">  <form action="/adm/coursedocs" method="post" name="newext">
Line 2321  value="$lt{'extr'}" /> $help{'Adding_Ext Line 2315  value="$lt{'extr'}" /> $help{'Adding_Ext
 ENDFORM  ENDFORM
        }         }
        $r->print('</td><td bgcolor="#DDDDDD">');         $r->print('</td><td bgcolor="#DDDDDD">');
        unless ($ENV{'form.pagepath'}) {         unless ($env{'form.pagepath'}) {
            $r->print(<<ENDFORM);             $r->print(<<ENDFORM);
 <form action="/adm/coursedocs" method="post" name="newfolder">  <form action="/adm/coursedocs" method="post" name="newfolder">
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 <input type=hidden name="importdetail" value="">  <input type=hidden name="importdetail" value="">
 <nobr>  <nobr>
 <input name="newfolder" type="button"  <input name="newfolder" type="button"
Line 2333  value="$lt{'newf'}" />$help{'Adding_Fold Line 2327  value="$lt{'newf'}" />$help{'Adding_Fold
 </nobr>  </nobr>
 </form>  </form>
 <form action="/adm/coursedocs" method="post" name="newpage">  <form action="/adm/coursedocs" method="post" name="newpage">
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 <input type=hidden name="importdetail" value="">  <input type=hidden name="importdetail" value="">
 <nobr>  <nobr>
 <input name="newpage" type="button"  <input name="newpage" type="button"
Line 2411  onClick="javascript:makeabout();" /> Line 2405  onClick="javascript:makeabout();" />
 </nobr>  </nobr>
 ENDFORM  ENDFORM
        }         }
        if ($ENV{'form.pagepath'}) {         if ($env{'form.pagepath'}) {
            $r->print(<<ENDBLOCK);             $r->print(<<ENDBLOCK);
 <form action="/adm/coursedocs" method="post" name="newsmpproblem">  <form action="/adm/coursedocs" method="post" name="newsmpproblem">
 $uploadtag  $uploadtag
Line 2441  ENDBLOCK Line 2435  ENDBLOCK
        $r->print('<tr><td bgcolor="#BBBBBB">');         $r->print('<tr><td bgcolor="#BBBBBB">');
 # '<h2>'.&mt('Supplemental Course Documents').  # '<h2>'.&mt('Supplemental Course Documents').
 #  ($allowed?' '.$help{'Supplemental'}:'').'</h2>');  #  ($allowed?' '.$help{'Supplemental'}:'').'</h2>');
        my $folder=$ENV{'form.folder'};         my $folder=$env{'form.folder'};
        unless ($folder=~/^supplemental/) {         unless ($folder=~/^supplemental/) {
    $folder='supplemental';     $folder='supplemental';
        }         }
        if ($folder =~ /^supplemental$/ &&         if ($folder =~ /^supplemental$/ &&
    $ENV{'form.folderpath'} =~ /^default\&/) {     $env{'form.folderpath'} =~ /^default\&/) {
    $ENV{'form.folderpath'}='supplemental&'.     $env{'form.folderpath'}='supplemental&'.
        &Apache::lonnet::escape(&mt('Supplemental Course Documents'));         &Apache::lonnet::escape(&mt('Supplemental Course Documents'));
        }         }
        &editor($r,$coursenum,$coursedom,$folder,$allowed);         &editor($r,$coursenum,$coursedom,$folder,$allowed);
Line 2468  ENDBLOCK Line 2462  ENDBLOCK
 <textarea cols=50 rows=4 name='comment'>  <textarea cols=50 rows=4 name='comment'>
 </textarea>  </textarea>
 <br />  <br />
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 <input type="hidden" name="cmd" value="upload_supplemental">  <input type="hidden" name="cmd" value="upload_supplemental">
 <nobr>  <nobr>
 <input type="submit" value="$lt{'upld'}">  <input type="submit" value="$lt{'upld'}">
Line 2478  ENDBLOCK Line 2472  ENDBLOCK
 </td>  </td>
 <td bgcolor="#DDDDDD">  <td bgcolor="#DDDDDD">
 <form action="/adm/coursedocs" method="post" name="supnewfolder">  <form action="/adm/coursedocs" method="post" name="supnewfolder">
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 <input type=hidden name="importdetail" value="">  <input type=hidden name="importdetail" value="">
 <nobr>  <nobr>
 <input name="newfolder" type="button"  <input name="newfolder" type="button"
Line 2487  value="$lt{'newf'}" /> $help{'Adding_Fol Line 2481  value="$lt{'newf'}" /> $help{'Adding_Fol
 </nobr>  </nobr>
 </form>  </form>
 <form action="/adm/coursedocs" method="post" name="supnewext">  <form action="/adm/coursedocs" method="post" name="supnewext">
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 <input type=hidden name="importdetail" value="">  <input type=hidden name="importdetail" value="">
 <nobr>  <nobr>
 <input name="newext" type="button"   <input name="newext" type="button" 
Line 2496  value="$lt{'extr'}" /> $help{'Adding_Ext Line 2490  value="$lt{'extr'}" /> $help{'Adding_Ext
 </nobr>  </nobr>
 </form>  </form>
 <form action="/adm/coursedocs" method="post" name="supnewsyl">  <form action="/adm/coursedocs" method="post" name="supnewsyl">
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 <input type=hidden name="importdetail"   <input type=hidden name="importdetail" 
 value="Syllabus=/public/$coursedom/$coursenum/syllabus">  value="Syllabus=/public/$coursedom/$coursenum/syllabus">
 <nobr>  <nobr>
Line 2505  $help{'Syllabus'} Line 2499  $help{'Syllabus'}
 </nobr>  </nobr>
 </form>  </form>
 <form action="/adm/coursedocs" method="post" name="subnewaboutme">  <form action="/adm/coursedocs" method="post" name="subnewaboutme">
 <input type="hidden" name="folderpath" value="$ENV{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
 <input type=hidden name="importdetail"   <input type=hidden name="importdetail" 
 value="$plainname=/adm/$udom/$uname/aboutme">  value="$plainname=/adm/$udom/$uname/aboutme">
 <nobr>  <nobr>

Removed from v.1.173  
changed lines
  Added in v.1.174


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