Diff for /loncom/interface/lonparmset.pm between versions 1.25 and 1.36

version 1.25, 2001/03/21 01:45:01 version 1.36, 2001/10/05 21:50:25
Line 11 Line 11
 #  #
 # 11/20,11/21,11/22,11/23,11/24,11/25,11/27,11/28,  # 11/20,11/21,11/22,11/23,11/24,11/25,11/27,11/28,
 # 12/08,12/12,  # 12/08,12/12,
 # 16/01/01,02/08,03/20 Gerd Kortemeyer  # 16/01/01,02/08,03/20,03/23,03/24,03/26,05/09,
   # 07/05,07/06,08/08,08/09,09/01,09/21 Gerd Kortemeyer
   
 package Apache::lonparmset;  package Apache::lonparmset;
   
 use strict;  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::Constants qw(:common :http REDIRECT);  use Apache::Constants qw(:common :http REDIRECT);
   use Apache::loncommon;
 use GDBM_File;  use GDBM_File;
   
   
Line 36  my %keyp; Line 38  my %keyp;
 my %defp;  my %defp;
   
 my %allkeys;  my %allkeys;
   my %allmaps;
   
 my $uname;  my $uname;
 my $udom;  my $udom;
Line 152  sub plink { Line 155  sub plink {
       &valout($value,$type).'</a><a name="'.$marker.'"></a>';        &valout($value,$type).'</a><a name="'.$marker.'"></a>';
 }  }
   
 # ================================================================ Main Handler  sub assessparms {
   
 sub handler {  
    my $r=shift;  
   
    if ($r->header_only) {  
       $r->content_type('text/html');  
       $r->send_http_header;  
       return OK;  
    }  
   
 # ----------------------------------------------------- Needs to be in a course  
   
    if (($ENV{'request.course.fn'}) &&         my $r=shift;
        (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) {  
 # -------------------------------------------------------- Variable declaration  # -------------------------------------------------------- Variable declaration
   
       %courseopt=();        %courseopt=();
Line 183  sub handler { Line 174  sub handler {
       $udom=$ENV{'form.udom'};        $udom=$ENV{'form.udom'};
       unless ($udom) { $udom=$r->dir_config('lonDefDomain'); }        unless ($udom) { $udom=$r->dir_config('lonDefDomain'); }
   
         my $pscat=$ENV{'form.pscat'};
         my $pschp=$ENV{'form.pschp'};
         my $pssymb='';
   
   # ----------------------------------------------- Was this started from grades?
   
         if (($ENV{'form.command'} eq 'set') && ($ENV{'form.url'})
             && (!$ENV{'form.dis'})) {
     my $url=$ENV{'form.url'};
             $url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;
             $pssymb=&Apache::lonnet::symbread($url);
             $pscat='all';
             $pschp='';
         } elsif ($ENV{'form.symb'}) {
     $pssymb=$ENV{'form.symb'};
     $pscat='all';
     $pschp='';
         } else {
             $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];
Line 216  sub handler { Line 228  sub handler {
               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>';
          }           }
Line 235  sub handler { Line 247  sub handler {
            $ENV{'request.course.fn'}.'_parms.db',&GDBM_READER,0640))) {             $ENV{'request.course.fn'}.'_parms.db',&GDBM_READER,0640))) {
   
 # --------------------------------------------------------- Get all assessments  # --------------------------------------------------------- Get all assessments
  %allkeys=();   undef %allkeys;
         %defp=();          undef %allmaps;
           undef %defp;
         map {          map {
     if ($_=~/^src\_(\d+)\.(\d+)$/) {      if ($_=~/^src\_(\d+)\.(\d+)$/) {
        my $mapid=$1;         my $mapid=$1;
Line 273  sub handler { Line 286  sub handler {
                       &Apache::lonnet::metadata($srcf,'keys'));                        &Apache::lonnet::metadata($srcf,'keys'));
                    $mapp{$id}=                     $mapp{$id}=
        &Apache::lonnet::declutter($bighash{'map_id_'.$mapid});         &Apache::lonnet::declutter($bighash{'map_id_'.$mapid});
                      $allmaps{$mapid}=$mapp{$id};
                    $symbp{$id}=$mapp{$id}.                     $symbp{$id}=$mapp{$id}.
  '___'.$resid.'___'.   '___'.$resid.'___'.
     &Apache::lonnet::declutter($srcf);      &Apache::lonnet::declutter($srcf);
Line 282  sub handler { Line 296  sub handler {
 # ---------------------------------------------------------- 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/\_/\./;         $spnam=~s/\_([^\_]+)$/\.$1/;
 # ---------------------------------------------------------- Construct prefixes  # ---------------------------------------------------------- Construct prefixes
   
        my $symbparm=$symbp{$sresid}.'.'.$spnam;         my $symbparm=$symbp{$sresid}.'.'.$spnam;
Line 395  sub handler { Line 409  sub handler {
            if ($fcat eq '') {             if ($fcat eq '') {
               $a<=>$b;                $a<=>$b;
            } else {             } else {
               $outpar[&parmval($fcat,$a,$defp{$a})]<=>                1*$outpar[&parmval($fcat,$a,$defp{$a})]<=>
               $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>
 <title>LON-CAPA Assessment Parameters</title>  <title>LON-CAPA Course Parameters</title>
 <script>  <script>
   
     function pclose() {      function pclose() {
Line 430  sub handler { Line 445  sub handler {
             document.parmform.action+='#'+document.parmform.pres_marker.value;              document.parmform.action+='#'+document.parmform.pres_marker.value;
             var typedef=new Array();              var typedef=new Array();
             typedef=document.parmform.pres_type.value.split('_');              typedef=document.parmform.pres_type.value.split('_');
              if (document.parmform.pres_type.value!='') {
             if (typedef[0]=='date') {              if (typedef[0]=='date') {
                 eval('document.parmform.recent_'+                  eval('document.parmform.recent_'+
                      document.parmform.pres_type.value+                       document.parmform.pres_type.value+
Line 438  sub handler { Line 454  sub handler {
                 eval('document.parmform.recent_'+typedef[0]+                  eval('document.parmform.recent_'+typedef[0]+
      '.value=document.parmform.pres_value.value;');       '.value=document.parmform.pres_value.value;');
             }              }
      }
             document.parmform.submit();              document.parmform.submit();
         } else {          } else {
             document.parmform.pres_value.value='';              document.parmform.pres_value.value='';
Line 448  sub handler { Line 465  sub handler {
 </script>  </script>
 </head>  </head>
 <body bgcolor="#FFFFFF" onUnload="pclose()">  <body bgcolor="#FFFFFF" onUnload="pclose()">
 <h1>Set Assessment Parameters</h1>  <h1>Set Course Parameters</h1>
 <form method="post" action="/adm/parmset" name="parmform">  <form method="post" action="/adm/parmset" name="envform">
 <h2>Course: $ENV{'course.'.$ENV{'request.course.id'}.'.description'}</h2>  <h2>Course: $ENV{'course.'.$ENV{'request.course.id'}.'.description'}</h2>
   <h3>Course Environment</h3>
   <input type="submit" name="crsenv" value="Set Course Environment">
   </form>
   <form method="post" action="/adm/parmset" name="parmform">
   <h3>Course Assessments</h3>
 <b>  <b>
 Section/Group:   Section/Group: 
 <input type="text" value="$csec" size="6" name="csec">  <input type="text" value="$csec" size="6" name="csec">
Line 462  or ID Line 484  or ID
 at Domain   at Domain 
 <input type="text" value="$udom" size="6" name="udom">  <input type="text" value="$udom" size="6" name="udom">
 </b>  </b>
 <input type="submit" value="Display">  
 <input type="hidden" value='' name="pres_value">  <input type="hidden" value='' name="pres_value">
 <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'}) {
    $r->print('<input type="hidden" value="'.$ENV{'form.url'}.
         '" name="url"><input type="hidden" name="command" value="set">');
       }
     map {      map {
       $r->print('<input type="hidden" value="'.        $r->print('<input type="hidden" value="'.
           $ENV{'form.recent_'.$_}.'" name="recent_'.$_.'">');            $ENV{'form.recent_'.$_}.'" name="recent_'.$_.'">');
     } ('tolerance','date_default','date_start','date_end','date_interval',      } ('tolerance','date_default','date_start','date_end','date_interval',
        'int','float','string');         'int','float','string');
   
         $r->print('<h2>'.$message.'</h2><p>Sort list by ');          $r->print('<h2>'.$message.'</h2><table><tr><td>Sort list by</td><td>');
  $r->print('<select name="fcat" onChange="this.form.submit();">');   $r->print('<select name="fcat">');
         $r->print('<option value="">Enclosing Map</option>');          $r->print('<option value="">Enclosing Map</option>');
         map {          map {
     $r->print('<option value="'.$_.'"');      $r->print('<option value="'.$_.'"');
             if ($fcat eq $_) { $r->print(' selected'); }              if ($fcat eq $_) { $r->print(' selected'); }
             $r->print('>'.$allkeys{$_}.'</option>');              $r->print('>'.$allkeys{$_}.'</option>');
         } keys %allkeys;          } reverse sort keys %allkeys;
         $r->print('</select>');         $r->print(
       '</select></tr><tr><td>Select Enclosing Map</td><td><select name=pschp>');
           $r->print('<option value=all>All Maps</option>');
           map {
       $r->print('<option value="'.$_.'"');
               if (($pssymb=~/^$allmaps{$_}/) || 
                   ($pschp eq $_)) { $r->print(' selected'); }
               $r->print('>'.$allmaps{$_}.'</option>');
           } keys %allmaps;
           $r->print(
    '</select></td></tr><tr><td>Select Parameter</td><td><select name=pscat>');
           $r->print('<option value=all>All Parameters</option>');
           map {
       $r->print('<option value="'.$_.'"');
               if ($pscat eq $_) { $r->print(' selected'); }
               $r->print('>'.$allkeys{$_}.'</option>');
           } reverse sort keys %allkeys;
           $r->print(
   '</select></td></tr></table><br><input name=dis type="submit" value="Display">'
                    );
         if (($pscat) || ($pschp) || ($pssymb)) {
 # ----------------------------------------------------------------- Start Table  # ----------------------------------------------------------------- Start Table
    my $catmarker='parameter_'.$pscat;
           $catmarker=~s/\./\_/g;
         my $coursespan=$csec?8:5;          my $coursespan=$csec?8:5;
           my $csuname=$ENV{'user.name'};
           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>
Line 493  ENDTABLEHEAD Line 542  ENDTABLEHEAD
  $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></tr><tr><td colspan=5></td>  <th rowspan=3>Parameter in Effect</th>
   <th rowspan=3>Current Session Value<br>($csuname at $csudom)</th>
   </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
Line 512  ENDTABLEHEADFOUR Line 563  ENDTABLEHEADFOUR
     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><tr>');   $r->print('</tr>');
          my $defbgone='';           my $defbgone='';
          my $defbgtwo='';           my $defbgtwo='';
   map {    map {
              my $rid=$_;
              my ($inmapid)=($rid=~/\.(\d+)$/);
              if (($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid}) ||
                  ($pssymb eq $mapp{$rid}.'___'.$inmapid.'___'.
                   &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"';
Line 528  ENDTABLEHEADFOUR Line 584  ENDTABLEHEADFOUR
                  $defbgtwo='"FFFF99"';                   $defbgtwo='"FFFF99"';
      }       }
     @outpar=();      @outpar=();
             my $rid=$_;  
             my $thistitle='';              my $thistitle='';
             my %name=   ();              my %name=   ();
        undef %name;
             my %part=   ();              my %part=   ();
     my %display=();      my %display=();
     my %type=   ();      my %type=   ();
Line 538  ENDTABLEHEADFOUR Line 594  ENDTABLEHEADFOUR
             my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});              my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});
   
             map {              map {
        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');
Line 546  ENDTABLEHEADFOUR Line 603  ENDTABLEHEADFOUR
                 $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');
        }
             } split(/\,/,$keyp{$rid});              } split(/\,/,$keyp{$rid});
   
     my $totalparms=scalar keys %name;      my $totalparms=scalar keys %name;
     my $isdef=1;    if ($totalparms>0) {
     unless ($totalparms) { $totalparms=1; $isdef=0; }              my $firstrow=1;
             $r->print('<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>'.
Line 565  ENDTABLEHEADFOUR Line 623  ENDTABLEHEADFOUR
             $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>');
   if ($isdef) {  
             map {              map {
        my $result=&parmval($part{$_}.'.'.$name{$_},$rid,$default{$_});         my $result=&parmval($part{$_}.'.'.$name{$_},$rid,$default{$_});
                  unless ($firstrow) { 
                     $r->print('<tr>'); 
                  } else {
      $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>");
Line 625  ENDTABLEHEADFOUR Line 686  ENDTABLEHEADFOUR
              &plink($type{$_},$display{$_},$outpar[1],$mprefix.'1',               &plink($type{$_},$display{$_},$outpar[1],$mprefix.'1',
                     'parmform.pres','psub').'</td>');                      'parmform.pres','psub').'</td>');
                }                 }
   
                $r->print(                 $r->print(
         '<td bgcolor=#CCCCFF>'.&valout($outpar[$result],$type{$_}).'</td>');   '<td bgcolor=#CCCCFF>'.&valout($outpar[$result],$type{$_}).'</td>');
                $r->print("</tr>\n<tr>");                 my $sessionval=&Apache::lonnet::EXT('resource.'.$part{$_}.
         '.'.$name{$_},$mapp{$rid}.'___'.$inmapid.'___'.$uri);
                  if (($type{$_}=~/^date/) && ($sessionval))
                       { $sessionval=localtime($sessionval); }
                  $r->print(
    '<td bgcolor=#999999><font color=#FFFFFF>'.$sessionval.'&nbsp;'.
           '</font></td>');
                  $r->print("</tr>");
    } sort keys %name;     } sort keys %name;
  } else {   }
     $r->print("</tr>\n<tr>");  
         }  
 # -------------------------------------------------- End entry for one resource  # -------------------------------------------------- End entry for one resource
    }
  } @ids;   } @ids;
          $r->print('</table></form></body></html>');           $r->print('</table>');
         }
    $r->print('</form></body></html>');
          untie(%bighash);           untie(%bighash);
  untie(%parmhash);   untie(%parmhash);
       }        }
   }
   
   sub crsenv {
       my $r=shift;
       my $setoutput='';
   # -------------------------------------------------- Go through list of changes
       map {
    if ($_=~/^form\.(.+)\_setparmval$/) {
               my $name=$1;
               my $value=$ENV{'form.'.$name.'_value'};
               if ($name eq 'newp') {
                   $name=$ENV{'form.newp_name'};
               }
               if ($name eq 'url') {
    $value=~s/^\/res\///;
                   $setoutput.='Backing up previous URL: '.
                            &Apache::lonnet::reply('put:'.
                            $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
                            ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
                            ':environment:'.
                            &Apache::lonnet::escape('top level map backup '.
                                                                       time).'='.
                    &Apache::lonnet::reply('get:'.
                            $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
                            ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
                            ':environment:url',
            $ENV{'course.'.$ENV{'request.course.id'}.'.home'}),
                            $ENV{'course.'.$ENV{'request.course.id'}.'.home'}).
                           '<br>';
   
               }
               if ($name) {
           $setoutput.='Setting <tt>'.$name.'</tt> to <tt>'.
                           $value.'</tt>: '.
                   &Apache::lonnet::reply('put:'.
                            $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
                            ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
                            ':environment:'.
                               &Apache::lonnet::escape($name).'='.
       &Apache::lonnet::escape($value),
                            $ENV{'course.'.$ENV{'request.course.id'}.'.home'}).
                           '<br>';
       }
           }
       } keys %ENV;
   # -------------------------------------------------------- Get parameters again
       my $rep=&Apache::lonnet::reply
                    ('dump:'.$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
                            ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
                            ':environment',
                            $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
       my $output='';
       if ($rep ne 'con_lost') {
    my %values;
           my %descriptions=
    ('url'            => '<b>Top Level Map</b><br><font color=red>'.
                      'Modification may make assessment data inaccessible</font>',
     'description'    => '<b>Course Description</b>',
     '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>)',
     'comment.email'  => '<b>Feedback Addresses for Comments</b><br>'.
                         '(<tt>user:domain,user:domain,...</tt>)',
     'policy.email'   => '<b>Feedback Addresses for Course Policy</b><br>'.
                         '(<tt>user:domain,user:domain,...</tt>)'
    ); 
   
          map {
              my ($name,$value)=split(/\=/,$_);
              $name=&Apache::lonnet::unescape($name);
              $values{$name}=&Apache::lonnet::unescape($value);
              unless ($descriptions{$name}) {
          $descriptions{$name}=$name;
              }
          } split(/\&/,$rep);
          map {
              $output.='<tr><td>'.$descriptions{$_}.'</td><td><input name="'.
                          $_.'_value" size=40 value="'.
                         $values{$_}.
                        '"></td><td><input type=checkbox name="'.$_.
                        '_setparmval"></td></tr>';
          } keys %descriptions;
          $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="checkbox" name="newp_setparmval"></td></tr>'; 
       }    
       $r->print(<<ENDENV);
   <html>
   <head>
   <title>LON-CAPA Course Environment</title>
   </head>
   <body bgcolor="#FFFFFF">
   <h1>Set Course Parameters</h1>
   <form method="post" action="/adm/parmset" name="envform">
   <h2>Course: $ENV{'course.'.$ENV{'request.course.id'}.'.description'}</h2>
   <h3>Course Environment</h3>
   $setoutput
   <p>
   <table border=2>
   <tr><th>Parameter</th><th>Value</th><th>Set?</th></tr>
   $output
   </table>
   <input type="submit" name="crsenv" value="Set Course Environment">
   </form>
   </body>
   </html>    
   ENDENV
   }
   
   # ================================================================ Main Handler
   
   sub handler {
      my $r=shift;
   
      if ($r->header_only) {
         $r->content_type('text/html');
         $r->send_http_header;
         return OK;
      }
      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
   # ----------------------------------------------------- Needs to be in a course
   
      if (($ENV{'request.course.id'}) && 
          (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) {
   
          unless (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) {
   # --------------------------------------------------------- Bring up assessment
     &assessparms($r);
   # ---------------------------------------------- This is for course environment
          } else {
     &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'}=

Removed from v.1.25  
changed lines
  Added in v.1.36


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