Diff for /loncom/interface/lonparmset.pm between versions 1.42 and 1.43

version 1.42, 2001/12/27 17:00:30 version 1.43, 2002/02/12 00:14:07
Line 66  my %symbp; Line 66  my %symbp;
 my %mapp;  my %mapp;
 my %typep;  my %typep;
 my %keyp;  my %keyp;
 my %defp;  
   
 my %allkeys;  
 my %allmaps;  
   
 my $uname;  my $uname;
 my $udom;  my $udom;
Line 87  sub parmval { Line 83  sub parmval {
     @outpar=();      @outpar=();
 # ----------------------------------------------------- Cascading lookup scheme  # ----------------------------------------------------- Cascading lookup scheme
   
        my $symbparm=$symbp{$id}.'.'.$what;      my $symbparm=$symbp{$id}.'.'.$what;
        my $mapparm=$mapp{$id}.'___(all).'.$what;      my $mapparm=$mapp{$id}.'___(all).'.$what;
   
        my $seclevel=      my $seclevel=$ENV{'request.course.id'}.'.['.$csec.'].'.$what;
             $ENV{'request.course.id'}.'.['.      my $seclevelr=$ENV{'request.course.id'}.'.['.$csec.'].'.$symbparm;
  $csec.'].'.$what;      my $seclevelm=$ENV{'request.course.id'}.'.['.$csec.'].'.$mapparm;
        my $seclevelr=  
             $ENV{'request.course.id'}.'.['.      my $courselevel=$ENV{'request.course.id'}.'.'.$what;
  $csec.'].'.$symbparm;      my $courselevelr=$ENV{'request.course.id'}.'.'.$symbparm;
        my $seclevelm=      my $courselevelm=$ENV{'request.course.id'}.'.'.$mapparm;
             $ENV{'request.course.id'}.'.['.  
  $csec.'].'.$mapparm;  
   
        my $courselevel=  
             $ENV{'request.course.id'}.'.'.$what;  
        my $courselevelr=  
             $ENV{'request.course.id'}.'.'.$symbparm;  
        my $courselevelm=  
             $ENV{'request.course.id'}.'.'.$mapparm;  
   
 # -------------------------------------------------------- first, check default  # -------------------------------------------------------- first, check default
   
        if ($def) { $outpar[11]=$def;      if ($def) { $outpar[11]=$def; $result=11; }
                    $result=11; }  
   
 # ----------------------------------------------------- second, check map parms  # ----------------------------------------------------- second, check map parms
   
        my $thisparm=$parmhash{$symbparm};      my $thisparm=$parmhash{$symbparm};
        if ($thisparm) { $outpar[10]=$thisparm;        if ($thisparm) { $outpar[10]=$thisparm; $result=10; }
                         $result=10; }  
   
 # --------------------------------------------------------- third, check course  # --------------------------------------------------------- third, check course
   
        if ($courseopt{$courselevel}) { $outpar[9]=$courseopt{$courselevel};        if ($courseopt{$courselevel}) {
                                        $result=9; }   $outpar[9]=$courseopt{$courselevel};
    $result=9;
       }
   
        if ($courseopt{$courselevelm}) { $outpar[8]=$courseopt{$courselevelm};       if ($courseopt{$courselevelm}) {
                                         $result=8; }   $outpar[8]=$courseopt{$courselevelm};
    $result=8;
       }
   
        if ($courseopt{$courselevelr}) { $outpar[7]=$courseopt{$courselevelr};       if ($courseopt{$courselevelr}) {
                                         $result=7; }   $outpar[7]=$courseopt{$courselevelr};
    $result=7;
       }
   
        if ($csec) {      if ($csec) {
           if ($courseopt{$seclevel}) {
         if ($courseopt{$seclevel}) { $outpar[6]=$courseopt{$seclevel};        $outpar[6]=$courseopt{$seclevel};
                                     $result=6; }      $result=6;
    }
         if ($courseopt{$seclevelm}) { $outpar[5]=$courseopt{$seclevelm};            if ($courseopt{$seclevelm}) {
                                      $result=5; }        $outpar[5]=$courseopt{$seclevelm};
        $result=5;
         if ($courseopt{$seclevelr}) { $outpar[4]=$courseopt{$seclevelr};     }
                                      $result=4; }  
             if ($courseopt{$seclevelr}) {
       }      $outpar[4]=$courseopt{$seclevelr};
       $result=4;
    }
       }
   
 # ---------------------------------------------------------- fourth, check user  # ---------------------------------------------------------- fourth, check user
         
       if ($uname) {   
   
        if ($useropt{$courselevel}) { $outpar[3]=$useropt{$courselevel};        if ($uname) {
                                      $result=3; }   if ($useropt{$courselevel}) {
       $outpar[3]=$useropt{$courselevel};
       $result=3;
    }
   
        if ($useropt{$courselevelm}) { $outpar[2]=$useropt{$courselevelm};    if ($useropt{$courselevelm}) {
                                       $result=2; }      $outpar[2]=$useropt{$courselevelm};
       $result=2;
    }
   
        if ($useropt{$courselevelr}) { $outpar[1]=$useropt{$courselevelr};    if ($useropt{$courselevelr}) {
                                       $result=1; }      $outpar[1]=$useropt{$courselevelr};
       $result=1;
    }
       }
   
       }  
        
     return $result;      return $result;
 }  }
   
Line 164  sub parmval { Line 162  sub parmval {
   
 sub valout {  sub valout {
     my ($value,$type)=@_;      my ($value,$type)=@_;
     return      return ($value?(($type=~/^date/)?localtime($value):$value):'  ');
  ($value?(($type=~/^date/)?localtime($value):$value):'  ');  
 }  }
   
 # -------------------------------------------------------- Produces link anchor  # -------------------------------------------------------- Produces link anchor
Line 181  sub plink { Line 178  sub plink {
         }          }
     }      }
     return       return 
       '<a href="javascript:pjump('."'".$type."','".$dis."','".$winvalue."','"   '<a href="javascript:pjump('."'".$type."','".$dis."','".$winvalue."','"
       .$marker."','".$return."','".$call."'".');">'.      .$marker."','".$return."','".$call."'".');">'.
       &valout($value,$type).'</a><a name="'.$marker.'"></a>';   &valout($value,$type).'</a><a name="'.$marker.'"></a>';
 }  }
   
 sub assessparms {  sub assessparms {
   
       my $r=shift;      my $r=shift;
 # -------------------------------------------------------- Variable declaration  # -------------------------------------------------------- Variable declaration
       my %allkeys;
       %courseopt=();      my %allmaps;
       %useropt=();      my %defp;
       %bighash=();      %courseopt=();
       %useropt=();
       @ids=();      %bighash=();
       %symbp=();  
       %typep=();      @ids=();
       %symbp=();
       my $message='';      %typep=();
   
       $csec=$ENV{'form.csec'};      my $message='';
       $udom=$ENV{'form.udom'};  
       unless ($udom) { $udom=$r->dir_config('lonDefDomain'); }      $csec=$ENV{'form.csec'};
       $udom=$ENV{'form.udom'};
       my $pscat=$ENV{'form.pscat'};      unless ($udom) { $udom=$r->dir_config('lonDefDomain'); }
       my $pschp=$ENV{'form.pschp'};  
       my $pssymb='';      my $pscat=$ENV{'form.pscat'};
       my $pschp=$ENV{'form.pschp'};
       my $pssymb='';
   
 # ----------------------------------------------- Was this started from grades?  # ----------------------------------------------- Was this started from grades?
   
       if (($ENV{'form.command'} eq 'set') && ($ENV{'form.url'})      if (($ENV{'form.command'} eq 'set') && ($ENV{'form.url'})
           && (!$ENV{'form.dis'})) {   && (!$ENV{'form.dis'})) {
   my $url=$ENV{'form.url'};   my $url=$ENV{'form.url'};
           $url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;   $url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;
           $pssymb=&Apache::lonnet::symbread($url);   $pssymb=&Apache::lonnet::symbread($url);
           $pscat='all';   $pscat='all';
           $pschp='';   $pschp='';
       } elsif ($ENV{'form.symb'}) {      } elsif ($ENV{'form.symb'}) {
   $pssymb=$ENV{'form.symb'};   $pssymb=$ENV{'form.symb'};
   $pscat='all';   $pscat='all';
   $pschp='';   $pschp='';
       } else {      } else {
           $ENV{'form.url'}='';   $ENV{'form.url'}='';
       }      }
    
       my $id=$ENV{'form.id'};      my $id=$ENV{'form.id'};
       if (($id) && ($udom)) {      if (($id) && ($udom)) {
           $uname=(&Apache::lonnet::idget($udom,$id))[1];   $uname=(&Apache::lonnet::idget($udom,$id))[1];
           if ($uname) {   if ($uname) {
       $id='';      $id='';
           } else {   } else {
               $message=      $message=
      "<font color=red>Unknown ID '$id' at domain '$udom'</font>";   "<font color=red>Unknown ID '$id' at domain '$udom'</font>";
           }   }
       } else {      } else {
           $uname=$ENV{'form.uname'};   $uname=$ENV{'form.uname'};
       }      }
       unless ($udom) { $uname=''; }      unless ($udom) { $uname=''; }
       $uhome='';      $uhome='';
       if ($uname) {      if ($uname) {
   $uhome=&Apache::lonnet::homeserver($uname,$udom);   $uhome=&Apache::lonnet::homeserver($uname,$udom);
                 if ($uhome eq 'no_host') {
         if ($uhome eq 'no_host') {       $message=
           $message=   "<font color=red>Unknown user '$uname' at domain '$udom'</font>";
      "<font color=red>Unknown user '$uname' at domain '$udom'</font>";      $uname='';
           $uname='';   
         } else {          } else {
           $csec=&Apache::lonnet::usection(      $csec=&Apache::lonnet::usection($udom,$uname,
        $udom,$uname,$ENV{'request.course.id'});      $ENV{'request.course.id'});
           if ($csec eq '-1') {      if ($csec eq '-1') {
              $message="<font color=red>".   $message="<font color=red>".
               "User '$uname' at domain '$udom' not in this course</font>";      "User '$uname' at domain '$udom' not in this course</font>";
               $uname='';   $uname='';
               $csec=$ENV{'form.csec'};   $csec=$ENV{'form.csec'};
  } else {      } else {
               my %name=&Apache::lonnet::userenvironment($udom,$uname,   my %name=&Apache::lonnet::userenvironment($udom,$uname,
  ('firstname','middlename','lastname','generation','id'));        ('firstname','middlename','lastname','generation','id'));
               $message="\n<p>\nFull Name: ".   $message="\n<p>\nFull Name: ".
                           $name{'firstname'}.' '.$name{'middlename'}.' '      $name{'firstname'}.' '.$name{'middlename'}.' '
                  .$name{'lastname'}.' '.$name{'generation'}.   .$name{'lastname'}.' '.$name{'generation'}.
                        "<br>\nID: ".$name{'id'}.'<p>';      "<br>\nID: ".$name{'id'}.'<p>';
          }      }
         }          }
       }      }
   
       unless ($csec) { $csec=''; }      unless ($csec) { $csec=''; }
   
       $fcat=$ENV{'form.fcat'};      $fcat=$ENV{'form.fcat'};
       unless ($fcat) { $fcat=''; }      unless ($fcat) { $fcat=''; }
   
 # ------------------------------------------------------------------- Tie hashs  # ------------------------------------------------------------------- Tie hashs
       if ((tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',      if ((tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',
                        &GDBM_READER,0640)) &&       &GDBM_READER,0640)) &&
           (tie(%parmhash,'GDBM_File',   (tie(%parmhash,'GDBM_File',
            $ENV{'request.course.fn'}.'_parms.db',&GDBM_READER,0640))) {       $ENV{'request.course.fn'}.'_parms.db',&GDBM_READER,0640))) {
   
 # --------------------------------------------------------- Get all assessments  # --------------------------------------------------------- Get all assessments
  undef %allkeys;  
         undef %allmaps;  
         undef %defp;  
         foreach (keys %bighash) {          foreach (keys %bighash) {
     if ($_=~/^src\_(\d+)\.(\d+)$/) {      if ($_=~/^src\_(\d+)\.(\d+)$/) {
        my $mapid=$1;   my $mapid=$1;
                my $resid=$2;   my $resid=$2;
                my $id=$mapid.'.'.$resid;   my $id=$mapid.'.'.$resid;
                my $srcf=$bighash{$_};   my $srcf=$bighash{$_};
                if ($srcf=~/\.(problem|exam|quiz|assess|survey|form)$/) {   if ($srcf=~/\.(problem|exam|quiz|assess|survey|form)$/) {
    $ids[$#ids+1]=$id;      $ids[$#ids+1]=$id;
                    $typep{$id}=$1;      $typep{$id}=$1;
                    $keyp{$id}='';      $keyp{$id}='';
                    foreach (split(/\,/,      foreach (split(/\,/,
                             &Apache::lonnet::metadata($srcf,'keys'))) {     &Apache::lonnet::metadata($srcf,'keys'))) {
                        if ($_=~/^parameter\_(.*)/) {   if ($_=~/^parameter\_(.*)/) {
   my $key=$_;      my $key=$_;
                           my $allkey=$1;      my $allkey=$1;
                           $allkey=~s/\_/\./;      $allkey=~s/\_/\./;
                           my $display=      my $display=
       &Apache::lonnet::metadata($srcf,$key.'.display');   &Apache::lonnet::metadata($srcf,$key.'.display');
                           unless ($display) {      unless ($display) {
                               $display=   $display=
          &Apache::lonnet::metadata($srcf,$key.'.name');      &Apache::lonnet::metadata($srcf,$key.'.name');
                           }      }
                           $allkeys{$allkey}=$display;      $allkeys{$allkey}=$display;
                           if ($allkey eq $fcat) {      if ($allkey eq $fcat) {
                              $defp{$id}=   $defp{$id}=
                               &Apache::lonnet::metadata($srcf,$key);      &Apache::lonnet::metadata($srcf,$key);
   }      }
                           if ($keyp{$id}) {      if ($keyp{$id}) {
       $keyp{$id}.=','.$key;   $keyp{$id}.=','.$key;
                           } else {      } else {
                               $keyp{$id}=$key;   $keyp{$id}=$key;
           }      }
        }   }
                    }      }
                    $mapp{$id}=      $mapp{$id}=
        &Apache::lonnet::declutter($bighash{'map_id_'.$mapid});   &Apache::lonnet::declutter($bighash{'map_id_'.$mapid});
                    $allmaps{$mapid}=$mapp{$id};      $allmaps{$mapid}=$mapp{$id};
                    $symbp{$id}=$mapp{$id}.      $symbp{$id}=$mapp{$id}.
  '___'.$resid.'___'.   '___'.$resid.'___'.
     &Apache::lonnet::declutter($srcf);      &Apache::lonnet::declutter($srcf);
        }   }
             }              }
         }          }
 # ---------------------------------------------------------- Anything to store?  # ---------------------------------------------------------- Anything to store?
         if ($ENV{'form.pres_marker'}) {          if ($ENV{'form.pres_marker'}) {
        my ($sresid,$spnam,$snum)=split(/\&/,$ENV{'form.pres_marker'});      my ($sresid,$spnam,$snum)=split(/\&/,$ENV{'form.pres_marker'});
        $spnam=~s/\_([^\_]+)$/\.$1/;      $spnam=~s/\_([^\_]+)$/\.$1/;
 # ---------------------------------------------------------- Construct prefixes  # ---------------------------------------------------------- Construct prefixes
   
        my $symbparm=$symbp{$sresid}.'.'.$spnam;      my $symbparm=$symbp{$sresid}.'.'.$spnam;
        my $mapparm=$mapp{$sresid}.'___(all).'.$spnam;      my $mapparm=$mapp{$sresid}.'___(all).'.$spnam;
   
        my $seclevel=      my $seclevel=$ENV{'request.course.id'}.'.['.$csec.'].'.$spnam;
             $ENV{'request.course.id'}.'.['.      my $seclevelr=$ENV{'request.course.id'}.'.['.$csec.'].'.$symbparm;
  $csec.'].'.$spnam;      my $seclevelm=$ENV{'request.course.id'}.'.['.$csec.'].'.$mapparm;
        my $seclevelr=  
             $ENV{'request.course.id'}.'.['.      my $courselevel=$ENV{'request.course.id'}.'.'.$spnam;
  $csec.'].'.$symbparm;      my $courselevelr=$ENV{'request.course.id'}.'.'.$symbparm;
        my $seclevelm=      my $courselevelm=$ENV{'request.course.id'}.'.'.$mapparm;
             $ENV{'request.course.id'}.'.['.  
  $csec.'].'.$mapparm;      my $storeunder='';
       if (($snum==9) || ($snum==3)) { $storeunder=$courselevel; }
        my $courselevel=      if (($snum==8) || ($snum==2)) { $storeunder=$courselevelm; }
             $ENV{'request.course.id'}.'.'.$spnam;      if (($snum==7) || ($snum==1)) { $storeunder=$courselevelr; }
        my $courselevelr=      if ($snum==6) { $storeunder=$seclevel; }
             $ENV{'request.course.id'}.'.'.$symbparm;      if ($snum==5) { $storeunder=$seclevelm; }
        my $courselevelm=      if ($snum==4) { $storeunder=$seclevelr; }
             $ENV{'request.course.id'}.'.'.$mapparm;      $storeunder=&Apache::lonnet::escape($storeunder);
   
        my $storeunder='';      my $storecontent=
        if (($snum==9) || ($snum==3)) { $storeunder=$courselevel; }   $storeunder.'='.
        if (($snum==8) || ($snum==2)) { $storeunder=$courselevelm; }      &Apache::lonnet::escape($ENV{'form.pres_value'}).'&'.
        if (($snum==7) || ($snum==1)) { $storeunder=$courselevelr; }   $storeunder.'.type='.
        if ($snum==6) { $storeunder=$seclevel; }      &Apache::lonnet::escape($ENV{'form.pres_type'});
        if ($snum==5) { $storeunder=$seclevelm; }  
        if ($snum==4) { $storeunder=$seclevelr; }  
        $storeunder=&Apache::lonnet::escape($storeunder);  
    
        my $storecontent=  
     $storeunder.'='.&Apache::lonnet::escape($ENV{'form.pres_value'}).'&'.  
     $storeunder.'.type='.&Apache::lonnet::escape($ENV{'form.pres_type'});  
   
        my $reply='';      my $reply='';
            if ($snum>3) {      if ($snum>3) {
 # ---------------------------------------------------------------- Store Course  # ---------------------------------------------------------------- Store Course
 #  #
 # Expire sheets  # Expire sheets
     &Apache::lonnet::expirespread('','','studentcalc');   &Apache::lonnet::expirespread('','','studentcalc');
             if (($snum==7) || ($snum==4)) {   if (($snum==7) || ($snum==4)) {
      &Apache::lonnet::expirespread('','','assesscalc',$symbp{$sresid});      &Apache::lonnet::expirespread('','','assesscalc',$symbp{$sresid});
             } elsif (($snum==8) || ($snum==5)) {   } elsif (($snum==8) || ($snum==5)) {
      &Apache::lonnet::expirespread('','','assesscalc',$mapp{$sresid});      &Apache::lonnet::expirespread('','','assesscalc',$mapp{$sresid});
             } else {   } else {
      &Apache::lonnet::expirespread('','','assesscalc');      &Apache::lonnet::expirespread('','','assesscalc');
             }   }
   
 # Store parameter  # Store parameter
             $reply=&Apache::lonnet::critical('put:'.   $reply=&Apache::lonnet::critical('put:'.
              $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'.   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'.
              $ENV{'course.'.$ENV{'request.course.id'}.'.num'}.':resourcedata:'.   $ENV{'course.'.$ENV{'request.course.id'}.'.num'}.':resourcedata:'.
              $storecontent,   $storecontent,
              $ENV{'course.'.$ENV{'request.course.id'}.'.home'});   $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
            } else {      } else {
 # ------------------------------------------------------------------ Store User  # ------------------------------------------------------------------ Store User
 #  #
 # Expire sheets  # Expire sheets
     &Apache::lonnet::expirespread($uname,$udom,'studentcalc');   &Apache::lonnet::expirespread($uname,$udom,'studentcalc');
             if ($snum==1) {   if ($snum==1) {
  &Apache::lonnet::expirespread      &Apache::lonnet::expirespread
                     ($uname,$udom,'assesscalc',$symbp{$sresid});   ($uname,$udom,'assesscalc',$symbp{$sresid});
             } elsif ($snum==2) {   } elsif ($snum==2) {
  &Apache::lonnet::expirespread      &Apache::lonnet::expirespread
                     ($uname,$udom,'assesscalc',$mapp{$sresid});   ($uname,$udom,'assesscalc',$mapp{$sresid});
             } else {   } else {
  &Apache::lonnet::expirespread($uname,$udom,'assesscalc');      &Apache::lonnet::expirespread($uname,$udom,'assesscalc');
             }   }
                   
 # Store parameter  # Store parameter
             $reply=   $reply=
             &Apache::lonnet::critical('put:'.$udom.':'.$uname.':resourcedata:'.      &Apache::lonnet::critical('put:'.$udom.':'.$uname.':resourcedata:'.
              $storecontent,$uhome);        $storecontent,$uhome);
            }             }
   
          if ($reply=~/^error\:(.*)/) {      if ($reply=~/^error\:(.*)/) {
      $message.="<font color=red>Write Error: $1</font>";   $message.="<font color=red>Write Error: $1</font>";
  }      }
 # ---------------------------------------------------------------- Done storing  # ---------------------------------------------------------------- Done storing
    }     }
 # -------------------------------------------------------------- Get coursedata  # -------------------------------------------------------------- Get coursedata
         my $reply=&Apache::lonnet::reply('dump:'.          my $reply=&Apache::lonnet::reply('dump:'.
               $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'.   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'.
               $ENV{'course.'.$ENV{'request.course.id'}.'.num'}.':resourcedata',   $ENV{'course.'.$ENV{'request.course.id'}.'.num'}.':resourcedata',
               $ENV{'course.'.$ENV{'request.course.id'}.'.home'});   $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
         if ($reply!~/^error\:/) {          if ($reply!~/^error\:/) {
            foreach (split(/\&/,$reply)) {      foreach (split(/\&/,$reply)) {
              my ($name,$value)=split(/\=/,$_);   my ($name,$value)=split(/\=/,$_);
              $courseopt{&Apache::lonnet::unescape($name)}=   $courseopt{&Apache::lonnet::unescape($name)}=
                         &Apache::lonnet::unescape($value);        &Apache::lonnet::unescape($value);
            }      }
         }          }
 # --------------------------------------------------- Get userdata (if present)  # --------------------------------------------------- Get userdata (if present)
         if ($uname) {          if ($uname) {
            my $reply=      my $reply=
        &Apache::lonnet::reply('dump:'.$udom.':'.$uname.':resourcedata',$uhome);   &Apache::lonnet::reply('dump:'.$udom.':'.$uname.':resourcedata',$uhome);
            if ($reply!~/^error\:/) {      if ($reply!~/^error\:/) {
               foreach (split(/\&/,$reply)) {   foreach (split(/\&/,$reply)) {
                 my ($name,$value)=split(/\=/,$_);      my ($name,$value)=split(/\=/,$_);
                 $useropt{&Apache::lonnet::unescape($name)}=      $useropt{&Apache::lonnet::unescape($name)}=
                          &Apache::lonnet::unescape($value);   &Apache::lonnet::unescape($value);
               }   }
            }      }
         }          }
   
 # ------------------------------------------------------------------- Sort this  # ------------------------------------------------------------------- Sort this
   
         @ids=sort  {            @ids=sort  {
            if ($fcat eq '') {      if ($fcat eq '') {
               $a<=>$b;   $a<=>$b;
            } else {      } else {
               1*$outpar[&parmval($fcat,$a,$defp{$a})]<=>   1*$outpar[&parmval($fcat,$a,$defp{$a})]<=>
               1*$outpar[&parmval($fcat,$b,$defp{$b})];      1*$outpar[&parmval($fcat,$b,$defp{$b})];
            }       }
        } @ids;   } @ids;
   
 # ------------------------------------------------------------------ Start page  # ------------------------------------------------------------------ Start page
          $r->content_type('text/html');   $r->content_type('text/html');
          $r->send_http_header;   $r->send_http_header;
  $r->print(<<ENDHEAD);   $r->print(<<ENDHEAD);
 <html>  <html>
 <head>  <head>
Line 519  at Domain Line 507  at Domain
 <input type="hidden" value='' name="pres_type">  <input type="hidden" value='' name="pres_type">
 <input type="hidden" value='' name="pres_marker">   <input type="hidden" value='' name="pres_marker"> 
 ENDHEAD  ENDHEAD
     if ($ENV{'form.url'}) {   if ($ENV{'form.url'}) {
  $r->print('<input type="hidden" value="'.$ENV{'form.url'}.      $r->print('<input type="hidden" value="'.$ENV{'form.url'}.
       '" name="url"><input type="hidden" name="command" value="set">');        '" name="url"><input type="hidden" name="command" value="set">');
     }   }
     foreach ('tolerance','date_default','date_start','date_end',   foreach ('tolerance','date_default','date_start','date_end',
              'date_interval','int','float','string') {   'date_interval','int','float','string') {
       $r->print('<input type="hidden" value="'.      $r->print('<input type="hidden" value="'.
           $ENV{'form.recent_'.$_}.'" name="recent_'.$_.'">');        $ENV{'form.recent_'.$_}.'" name="recent_'.$_.'">');
     }   }
   
         $r->print('<h2>'.$message.'</h2><table><tr><td>Sort list by</td><td>');          $r->print('<h2>'.$message.'</h2><table><tr><td>Sort list by</td><td>');
  $r->print('<select name="fcat">');   $r->print('<select name="fcat">');
         $r->print('<option value="">Enclosing Map</option>');          $r->print('<option value="">Enclosing Map</option>');
Line 537  ENDHEAD Line 525  ENDHEAD
             if ($fcat eq $_) { $r->print(' selected'); }              if ($fcat eq $_) { $r->print(' selected'); }
             $r->print('>'.$allkeys{$_}.'</option>');              $r->print('>'.$allkeys{$_}.'</option>');
         }          }
        $r->print(   $r->print('</select></tr><tr><td>Select Enclosing Map</td><td><select name=pschp>');
     '</select></tr><tr><td>Select Enclosing Map</td><td><select name=pschp>');  
         $r->print('<option value=all>All Maps</option>');          $r->print('<option value=all>All Maps</option>');
         foreach (keys %allmaps) {          foreach (keys %allmaps) {
     $r->print('<option value="'.$_.'"');      $r->print('<option value="'.$_.'"');
Line 546  ENDHEAD Line 533  ENDHEAD
                 ($pschp eq $_)) { $r->print(' selected'); }                  ($pschp eq $_)) { $r->print(' selected'); }
             $r->print('>'.$allmaps{$_}.'</option>');              $r->print('>'.$allmaps{$_}.'</option>');
         }          }
         $r->print(          $r->print('</select></td></tr><tr><td>Select Parameter</td><td><select name=pscat>');
  '</select></td></tr><tr><td>Select Parameter</td><td><select name=pscat>');  
         $r->print('<option value=all>All Parameters</option>');          $r->print('<option value=all>All Parameters</option>');
         foreach (reverse sort keys %allkeys) {          foreach (reverse sort keys %allkeys) {
     $r->print('<option value="'.$_.'"');      $r->print('<option value="'.$_.'"');
             if ($pscat eq $_) { $r->print(' selected'); }              if ($pscat eq $_) { $r->print(' selected'); }
             $r->print('>'.$allkeys{$_}.'</option>');              $r->print('>'.$allkeys{$_}.'</option>');
         }          }
         $r->print(          $r->print('</select></td></tr></table><br><input name=dis type="submit" value="Display">');
 '</select></td></tr></table><br><input name=dis type="submit" value="Display">'   if (($pscat) || ($pschp) || ($pssymb)) {
                  );  
       if (($pscat) || ($pschp) || ($pssymb)) {  
 # ----------------------------------------------------------------- Start Table  # ----------------------------------------------------------------- Start Table
  my $catmarker='parameter_'.$pscat;      my $catmarker='parameter_'.$pscat;
         $catmarker=~s/\./\_/g;      $catmarker=~s/\./\_/g;
         my $coursespan=$csec?8:5;      my $coursespan=$csec?8:5;
         my $csuname=$ENV{'user.name'};      my $csuname=$ENV{'user.name'};
         my $csudom=$ENV{'user.domain'};      my $csudom=$ENV{'user.domain'};
  $r->print(<<ENDTABLEHEAD);      $r->print(<<ENDTABLEHEAD);
 <p><table border=2>  <p><table border=2>
 <tr><td colspan=5></td>  <tr><td colspan=5></td>
 <th colspan=$coursespan>Any User</th>  <th colspan=$coursespan>Any User</th>
 ENDTABLEHEAD  ENDTABLEHEAD
     if ($uname) {      if ($uname) {
  $r->print("<th colspan=3 rowspan=2>User $uname at Domain $udom</th>");   $r->print("<th colspan=3 rowspan=2>User $uname at Domain $udom</th>");
     }      }
     $r->print(<<ENDTABLETWO);      $r->print(<<ENDTABLETWO);
 <th rowspan=3>Parameter in Effect</th>  <th rowspan=3>Parameter in Effect</th>
 <th rowspan=3>Current Session Value<br>($csuname at $csudom)</th>  <th rowspan=3>Current Session Value<br>($csuname at $csudom)</th>
 </tr><tr><td colspan=5></td>  </tr><tr><td colspan=5></td>
 <th colspan=2>Resource Level</th>  <th colspan=2>Resource Level</th>
 <th colspan=3>in Course</th>  <th colspan=3>in Course</th>
 ENDTABLETWO  ENDTABLETWO
     if ($csec) {      if ($csec) {
  $r->print("<th colspan=3>in Section/Group $csec</th>");   $r->print("<th colspan=3>in Section/Group $csec</th>");
     }      }
     $r->print(<<ENDTABLEHEADFOUR);      $r->print(<<ENDTABLEHEADFOUR);
 </tr><tr><th>Assessment URL and Title</th><th>Type</th>  </tr><tr><th>Assessment URL and Title</th><th>Type</th>
 <th>Enclosing Map</th><th>Part No.</th><th>Parameter Name</th>  <th>Enclosing Map</th><th>Part No.</th><th>Parameter Name</th>
 <th>default</th><th>from Enclosing Map</th>  <th>default</th><th>from Enclosing Map</th>
 <th>general</th><th>for Enclosing Map</th><th>for Resource</th>  <th>general</th><th>for Enclosing Map</th><th>for Resource</th>
 ENDTABLEHEADFOUR  ENDTABLEHEADFOUR
     if ($csec) {      if ($csec) {
   $r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>');   $r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>');
     }      }
     if ($uname) {      if ($uname) {
   $r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>');   $r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>');
     }      }
  $r->print('</tr>');      $r->print('</tr>');
          my $defbgone='';      my $defbgone='';
          my $defbgtwo='';      my $defbgtwo='';
   foreach (@ids) {      foreach (@ids) {
            my $rid=$_;   my $rid=$_;
            my ($inmapid)=($rid=~/\.(\d+)$/);   my ($inmapid)=($rid=~/\.(\d+)$/);
            if (($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid}) ||   if (($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid}) ||
                ($pssymb eq $mapp{$rid}.'___'.$inmapid.'___'.      ($pssymb eq $mapp{$rid}.'___'.$inmapid.'___'.
                 &Apache::lonnet::declutter($bighash{'src_'.$rid}))) {       &Apache::lonnet::declutter($bighash{'src_'.$rid}))) {
 # ------------------------------------------------------ Entry for one resource  # ------------------------------------------------------ Entry for one resource
      if ($defbgone eq '"E0E099"') {      if ($defbgone eq '"E0E099"') {
  $defbgone='"E0E0DD"';   $defbgone='"E0E0DD"';
              } else {      } else {
                  $defbgone='"E0E099"';   $defbgone='"E0E099"';
      }      }
      if ($defbgtwo eq '"FFFF99"') {      if ($defbgtwo eq '"FFFF99"') {
  $defbgtwo='"FFFFDD"';   $defbgtwo='"FFFFDD"';
              } else {      } else {
                  $defbgtwo='"FFFF99"';   $defbgtwo='"FFFF99"';
      }      }
     @outpar=();      @outpar=();
             my $thistitle='';      my $thistitle='';
             my %name=   ();      my %name=   ();
      undef %name;      undef %name;
             my %part=   ();      my %part=   ();
     my %display=();      my %display=();
     my %type=   ();      my %type=   ();
             my %default=();      my %default=();
             my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});      my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});
   
             foreach (split(/\,/,$keyp{$rid})) {      foreach (split(/\,/,$keyp{$rid})) {
      if (($_ eq $catmarker) || ($pscat eq 'all')) {   if (($_ eq $catmarker) || ($pscat eq 'all')) {
  $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');      $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');
                 $name{$_}=&Apache::lonnet::metadata($uri,$_.'.name');      $name{$_}=&Apache::lonnet::metadata($uri,$_.'.name');
                 $display{$_}=&Apache::lonnet::metadata($uri,$_.'.display');      $display{$_}=&Apache::lonnet::metadata($uri,$_.'.display');
                 unless ($display{$_}) { $display{$_}=''; }      unless ($display{$_}) { $display{$_}=''; }
                 $display{$_}.=' ('.$name{$_}.')';      $display{$_}.=' ('.$name{$_}.')';
                 $default{$_}=&Apache::lonnet::metadata($uri,$_);      $default{$_}=&Apache::lonnet::metadata($uri,$_);
                 $type{$_}=&Apache::lonnet::metadata($uri,$_.'.type');      $type{$_}=&Apache::lonnet::metadata($uri,$_.'.type');
                 $thistitle=&Apache::lonnet::metadata($uri,$_.'.title');      $thistitle=&Apache::lonnet::metadata($uri,$_.'.title');
      }   }
             }      }
       my $totalparms=scalar keys %name;
     my $totalparms=scalar keys %name;      if ($totalparms>0) {
   if ($totalparms>0) {   my $firstrow=1;
             my $firstrow=1;   $r->print('<tr><td bgcolor='.$defbgone.
             $r->print('<tr><td bgcolor='.$defbgone.    ' rowspan='.$totalparms.'><tt><font size=-1>'.
                 ' rowspan='.$totalparms.'><tt><font size=-1>'.    join(' / ',split(/\//,$uri)).
                 join(' / ',split(/\//,$uri)).    '</font></tt><p><b>'.
                 '</font></tt><p><b>'.    $bighash{'title_'.$rid});
                       $bighash{'title_'.$rid});   if ($thistitle) {
             if ($thistitle) {      $r->print(' ('.$thistitle.')');
  $r->print(' ('.$thistitle.')');   }
             }   $r->print('</b></td>');
             $r->print('</b></td>');   $r->print('<td bgcolor='.$defbgtwo.
             $r->print('<td bgcolor='.$defbgtwo.    ' rowspan='.$totalparms.'>'.$typep{$rid}.'</td>');
                     ' rowspan='.$totalparms.'>'.$typep{$rid}.'</td>');   $r->print('<td bgcolor='.$defbgone.
             $r->print('<td bgcolor='.$defbgone.    ' rowspan='.$totalparms.'><tt><font size=-1>'.
                     ' rowspan='.$totalparms.'><tt><font size=-1>'.    join(' / ',split(/\//,$mapp{$rid})).'</font></tt></td>');
       join(' / ',split(/\//,$mapp{$rid})).'</font></tt></td>');   foreach (sort keys %name) {
             foreach (sort keys %name) {      my $result=&parmval($part{$_}.'.'.$name{$_},$rid,$default{$_});
        my $result=&parmval($part{$_}.'.'.$name{$_},$rid,$default{$_});      unless ($firstrow) { 
                unless ($firstrow) {    $r->print('<tr>'); 
                   $r->print('<tr>');       } else {
                } else {   $firstrow=0;
    $firstrow=0;      }
                }      $r->print("<td bgcolor=".$defbgtwo.
                $r->print("<td bgcolor=".$defbgtwo.        ">$part{$_}</td><td bgcolor=".$defbgone.
                   ">$part{$_}</td><td bgcolor=".$defbgone.        ">$display{$_}</td>");
                   ">$display{$_}</td>");      my $thismarker=$_;
                my $thismarker=$_;      $thismarker=~s/^parameter\_//; 
                $thismarker=~s/^parameter\_//;       my $mprefix=$rid.'&'.$thismarker.'&';
                my $mprefix=$rid.'&'.$thismarker.'&';  
       $r->print('<td bgcolor='.
                $r->print('<td bgcolor='.        (($result==11)?'"#AAFFAA"':'#FFDDDD').'>'.
                 (($result==11)?'"#AAFFAA"':'#FFDDDD').'>'.        &valout($outpar[11],$type{$_}).'</td>');
              &valout($outpar[11],$type{$_}).'</td>');      $r->print('<td bgcolor='.
                $r->print('<td bgcolor='.        (($result==10)?'"#AAFFAA"':'#FFDDDD').'>'.
                 (($result==10)?'"#AAFFAA"':'#FFDDDD').'>'.        &valout($outpar[10],$type{$_}).'</td>');
              &valout($outpar[10],$type{$_}).'</td>');  
       $r->print('<td bgcolor='.
                $r->print('<td bgcolor='.        (($result==9)?'"#AAFFAA"':$defbgone).'>'.
                 (($result==9)?'"#AAFFAA"':$defbgone).'>'.        &plink($type{$_},$display{$_},$outpar[9],$mprefix.'9',
              &plink($type{$_},$display{$_},$outpar[9],$mprefix.'9',       'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');      $r->print('<td bgcolor='.
                $r->print('<td bgcolor='.        (($result==8)?'"#AAFFAA"':$defbgone).'>'.
                 (($result==8)?'"#AAFFAA"':$defbgone).'>'.        &plink($type{$_},$display{$_},$outpar[8],$mprefix.'8',
              &plink($type{$_},$display{$_},$outpar[8],$mprefix.'8',       'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');      $r->print('<td bgcolor='.
                $r->print('<td bgcolor='.        (($result==7)?'"#AAFFAA"':$defbgone).'>'.
                 (($result==7)?'"#AAFFAA"':$defbgone).'>'.        &plink($type{$_},$display{$_},$outpar[7],$mprefix.'7',
              &plink($type{$_},$display{$_},$outpar[7],$mprefix.'7',       'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');  
       if ($csec) {
                if ($csec) {   $r->print('<td bgcolor='.
                  $r->print('<td bgcolor='.    (($result==6)?'"#AAFFAA"':$defbgtwo).'>'.
                    (($result==6)?'"#AAFFAA"':$defbgtwo).'>'.    &plink($type{$_},$display{$_},$outpar[6],$mprefix.'6',
              &plink($type{$_},$display{$_},$outpar[6],$mprefix.'6',   'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');   $r->print('<td bgcolor='.
                  $r->print('<td bgcolor='.    (($result==5)?'"#AAFFAA"':$defbgtwo).'>'.
                    (($result==5)?'"#AAFFAA"':$defbgtwo).'>'.    &plink($type{$_},$display{$_},$outpar[5],$mprefix.'5',
              &plink($type{$_},$display{$_},$outpar[5],$mprefix.'5',   'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');   $r->print('<td bgcolor='.
                  $r->print('<td bgcolor='.    (($result==4)?'"#AAFFAA"':$defbgtwo).'>'.
                     (($result==4)?'"#AAFFAA"':$defbgtwo).'>'.    &plink($type{$_},$display{$_},$outpar[4],$mprefix.'4',
              &plink($type{$_},$display{$_},$outpar[4],$mprefix.'4',   'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');      }
                }  
       if ($uname) {
                if ($uname) {   $r->print('<td bgcolor='.
                  $r->print('<td bgcolor='.    (($result==3)?'"#AAFFAA"':$defbgone).'>'.
                     (($result==3)?'"#AAFFAA"':$defbgone).'>'.    &plink($type{$_},$display{$_},$outpar[3],$mprefix.'3',
              &plink($type{$_},$display{$_},$outpar[3],$mprefix.'3',   'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');   $r->print('<td bgcolor='.
                  $r->print('<td bgcolor='.    (($result==2)?'"#AAFFAA"':$defbgone).'>'.
                     (($result==2)?'"#AAFFAA"':$defbgone).'>'.    &plink($type{$_},$display{$_},$outpar[2],$mprefix.'2',
              &plink($type{$_},$display{$_},$outpar[2],$mprefix.'2',   'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');   $r->print('<td bgcolor='.
                  $r->print('<td bgcolor='.    (($result==1)?'"#AAFFAA"':$defbgone).'>'.
                    (($result==1)?'"#AAFFAA"':$defbgone).'>'.    &plink($type{$_},$display{$_},$outpar[1],$mprefix.'1',
              &plink($type{$_},$display{$_},$outpar[1],$mprefix.'1',   'parmform.pres','psub').'</td>');
                     'parmform.pres','psub').'</td>');      }
                }      $r->print('<td bgcolor=#CCCCFF>'.&valout($outpar[$result],$type{$_}).'</td>');
                $r->print(      my $sessionval=&Apache::lonnet::EXT('resource.'.$part{$_}.
  '<td bgcolor=#CCCCFF>'.&valout($outpar[$result],$type{$_}).'</td>');   '.'.$name{$_},$mapp{$rid}.'___'.$inmapid.'___'.$uri);
                my $sessionval=&Apache::lonnet::EXT('resource.'.$part{$_}.      if (($type{$_}=~/^date/) && ($sessionval))
       '.'.$name{$_},$mapp{$rid}.'___'.$inmapid.'___'.$uri);   { $sessionval=localtime($sessionval); }
                if (($type{$_}=~/^date/) && ($sessionval))      $r->print('<td bgcolor=#999999><font color=#FFFFFF>'.$sessionval.'&nbsp;'.
                     { $sessionval=localtime($sessionval); }        '</font></td>');
                $r->print(      $r->print("</tr>");
  '<td bgcolor=#999999><font color=#FFFFFF>'.$sessionval.'&nbsp;'.   }
         '</font></td>');      }
                $r->print("</tr>");  
    }  
  }  
 # -------------------------------------------------- End entry for one resource  # -------------------------------------------------- End entry for one resource
  }   }
  }      }
          $r->print('</table>');      $r->print('</table>');
       }   }
  $r->print('</form></body></html>');   $r->print('</form></body></html>');
          untie(%bighash);   untie(%bighash);
  untie(%parmhash);   untie(%parmhash);
       }      }
 }  }
   
 sub crsenv {  sub crsenv {
Line 754  sub crsenv { Line 735  sub crsenv {
             if ($name eq 'url') {              if ($name eq 'url') {
  $value=~s/^\/res\///;   $value=~s/^\/res\///;
                 $setoutput.='Backing up previous URL: '.                  $setoutput.='Backing up previous URL: '.
                          &Apache::lonnet::reply('put:'.      &Apache::lonnet::reply('put:'.
                          $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'}.
                          ':environment:'.     ':environment:'.
                          &Apache::lonnet::escape('top level map backup '.     &Apache::lonnet::escape('top level map backup '.
                                                                     time).'='.     time).'='.
                  &Apache::lonnet::reply('get:'.     &Apache::lonnet::reply('get:'.
                          $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'}.
                          ':environment:url',    ':environment:url',
          $ENV{'course.'.$ENV{'request.course.id'}.'.home'}),    $ENV{'course.'.$ENV{'request.course.id'}.'.home'}),
                          $ENV{'course.'.$ENV{'request.course.id'}.'.home'}).     $ENV{'course.'.$ENV{'request.course.id'}.'.home'}).
                         '<br>';         '<br>';
   
             }              }
             if ($name) {              if ($name) {
         $setoutput.='Setting <tt>'.$name.'</tt> to <tt>'.          $setoutput.='Setting <tt>'.$name.'</tt> to <tt>'.
                         $value.'</tt>: '.      $value.'</tt>: '.
                 &Apache::lonnet::reply('put:'.   &Apache::lonnet::reply('put:'.
                          $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'}.
                          ':environment:'.         ':environment:'.
                             &Apache::lonnet::escape($name).'='.         &Apache::lonnet::escape($name).'='.
     &Apache::lonnet::escape($value),         &Apache::lonnet::escape($value),
                          $ENV{'course.'.$ENV{'request.course.id'}.'.home'}).         $ENV{'course.'.$ENV{'request.course.id'}.'.home'}).
                         '<br>';     '<br>';
     }      }
         }          }
     }      }
 # -------------------------------------------------------- Get parameters again  # -------------------------------------------------------- Get parameters again
     my $rep=&Apache::lonnet::reply      my $rep=&Apache::lonnet::reply
                  ('dump:'.$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.   ('dump:'.$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
                          ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.   ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
                          ':environment',   ':environment',
                          $ENV{'course.'.$ENV{'request.course.id'}.'.home'});   $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
     my $output='';      my $output='';
     if ($rep ne 'con_lost') {      if ($rep ne 'con_lost') {
  my %values;   my %values;
         my %descriptions=          my %descriptions=
  ('url'            => '<b>Top Level Map</b><br><font color=red>'.      ('url'            => '<b>Top Level Map</b><br><font color=red> Modification may make assessment data inaccessible</font>',
                    'Modification may make assessment data inaccessible</font>',       'description'    => '<b>Course Description</b>',
   'description'    => '<b>Course Description</b>',       'courseid'       => '<b>Course ID or number</b><br>(internal, optional)',
   'courseid'       => '<b>Course ID or number</b><br>(internal, optional)',       'question.email' => '<b>Feedback Addresses for Content Questions</b><br>(<tt>user:domain,user:domain,...</tt>)',
   'question.email' => '<b>Feedback Addresses for Content Questions</b><br>'.       'comment.email'  => '<b>Feedback Addresses for Comments</b><br>(<tt>user:domain,user:domain,...</tt>)',
                       '(<tt>user:domain,user:domain,...</tt>)',       'policy.email'   => '<b>Feedback Addresses for Course Policy</b><br>(<tt>user:domain,user:domain,...</tt>)',
   'comment.email'  => '<b>Feedback Addresses for Comments</b><br>'.       'hideemptyrows'  => '<b>Hide Empty Rows in Spreadsheets</b><br>("<tt>yes</tt>" for default hiding)',
                       '(<tt>user:domain,user:domain,...</tt>)',       'pch.roles.denied'=> '<b>Disallow Resource Discussion for Students</b><br>"<tt>st</tt>": student, "<tt>ta</tt>": TA, "<tt>in</tt>": instructor;<br><tt>role,role,...</tt>)'
   'policy.email'   => '<b>Feedback Addresses for Course Policy</b><br>'.      );
                       '(<tt>user:domain,user:domain,...</tt>)',  
   'hideemptyrows'  => '<b>Hide Empty Rows in Spreadsheets</b><br>'.   foreach (split(/\&/,$rep)) {
                       '("<tt>yes</tt>" for default hiding)',      my ($name,$value)=split(/\=/,$_);
  'pch.roles.denied'=> '<b>Disallow Resource Discussion for Students</b><br>'.      $name=&Apache::lonnet::unescape($name);
  '("<tt>st</tt>": student, "<tt>ta</tt>": TA, "<tt>in</tt>": instructor;<br>'.      $values{$name}=&Apache::lonnet::unescape($value);
  '<tt>role,role,...</tt>)'      unless ($descriptions{$name}) {
  );    $descriptions{$name}=$name;
       }
        foreach (split(/\&/,$rep)) {   }
            my ($name,$value)=split(/\=/,$_);   foreach (sort keys %descriptions) {
            $name=&Apache::lonnet::unescape($name);      $output.='<tr><td>'.$descriptions{$_}.'</td><td><input name="'.
            $values{$name}=&Apache::lonnet::unescape($value);   $_.'_value" size=40 value="'.
            unless ($descriptions{$name}) {      $values{$_}.
        $descriptions{$name}=$name;   '"></td><td><input type=checkbox name="'.$_.
            }      '_setparmval"></td></tr>';
        }   }
        foreach (sort keys %descriptions) {   $output.='<tr><td><i>Create New Environment Variable</i><br>'.
            $output.='<tr><td>'.$descriptions{$_}.'</td><td><input name="'.      '<input type="text" size=40 name="newp_name"></td><td>'.
                        $_.'_value" size=40 value="'.  
                       $values{$_}.  
                      '"></td><td><input type=checkbox name="'.$_.  
                      '_setparmval"></td></tr>';  
        }  
        $output.='<tr><td><i>Create New Environment Variable</i><br>'.  
                 '<input type="text" size=40 name="newp_name"></td><td>'.  
                 '<input type="text" size=40 name="newp_value"></td><td>'.                  '<input type="text" size=40 name="newp_value"></td><td>'.
                 '<input type="checkbox" name="newp_setparmval"></td></tr>';       '<input type="checkbox" name="newp_setparmval"></td></tr>';
     }          }
     $r->print(<<ENDENV);      $r->print(<<ENDENV);
 <html>  <html>
 <head>  <head>
Line 856  ENDENV Line 830  ENDENV
 # ================================================================ Main Handler  # ================================================================ Main Handler
   
 sub handler {  sub handler {
    my $r=shift;      my $r=shift;
   
    if ($r->header_only) {      if ($r->header_only) {
       $r->content_type('text/html');   $r->content_type('text/html');
       $r->send_http_header;   $r->send_http_header;
       return OK;   return OK;
    }      }
    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
 # ----------------------------------------------------- Needs to be in a course  # ----------------------------------------------------- Needs to be in a course
   
    if (($ENV{'request.course.id'}) &&       if (($ENV{'request.course.id'}) && 
        (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) {   (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) {
   
        unless (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) {   unless (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) {
 # --------------------------------------------------------- Bring up assessment  # --------------------------------------------------------- Bring up assessment
   &assessparms($r);      &assessparms($r);
 # ---------------------------------------------- This is for course environment  # ---------------------------------------------- This is for course environment
        } else {   } else {
   &crsenv($r);      &crsenv($r);
        }   }
    } else {      } else {
 # ----------------------------- Not in a course, or not allowed to modify parms  # ----------------------------- Not in a course, or not allowed to modify parms
       $ENV{'user.error.msg'}=   $ENV{'user.error.msg'}=
         "/adm/parmset:opa:0:0:Cannot modify assessment parameters";      "/adm/parmset:opa:0:0:Cannot modify assessment parameters";
       return HTTP_NOT_ACCEPTABLE;    return HTTP_NOT_ACCEPTABLE;
    }      }
    return OK;      return OK;
 }  }
   
 1;  1;

Removed from v.1.42  
changed lines
  Added in v.1.43


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