Diff for /loncom/interface/lonparmset.pm between versions 1.64 and 1.82

version 1.64, 2002/08/21 17:18:08 version 1.82, 2003/01/19 11:55:14
Line 72  my %mapp; Line 72  my %mapp;
 my %typep;  my %typep;
 my %keyp;  my %keyp;
   
   my %maptitles;
   
 my $uname;  my $uname;
 my $udom;  my $udom;
 my $uhome;  my $uhome;
Line 87  my $coursename; Line 89  my $coursename;
   
 Figure out a cascading parameter.  Figure out a cascading parameter.
   
 Inputs:  $what $id $def  Inputs:  $what - a parameter spec (incluse part info and name I.E. 0.weight)
            $id   - a bighash Id number
 Returns: I am not entirely sure.           $def  - the resource's default value   'stupid emacs
   
   Returns:  A list, the first item is the index into the remaining list of items of parm valuse that is the active one, the list consists of parm values at the 11 possible levels
   
   11- resource default
   10- map default
   9 - General Course
   8 - Map or Folder level in course
   7 - resource level in course
   6 - General for section
   5 - Map or Folder level for section
   4 - resource level in section
   3 - General for specific student
   2 - Map or Folder level for specific student
   1 - resource level for specific student
   
 =cut  =cut
   
Line 123  sub parmval { Line 139  sub parmval {
   
 # --------------------------------------------------------- third, check course  # --------------------------------------------------------- third, check course
   
     if ($courseopt{$courselevel}) {      if (defined($courseopt{$courselevel})) {
  $outpar[9]=$courseopt{$courselevel};   $outpar[9]=$courseopt{$courselevel};
  $result=9;   $result=9;
     }      }
   
     if ($courseopt{$courselevelm}) {      if (defined($courseopt{$courselevelm})) {
  $outpar[8]=$courseopt{$courselevelm};   $outpar[8]=$courseopt{$courselevelm};
  $result=8;   $result=8;
     }      }
   
     if ($courseopt{$courselevelr}) {      if (defined($courseopt{$courselevelr})) {
  $outpar[7]=$courseopt{$courselevelr};   $outpar[7]=$courseopt{$courselevelr};
  $result=7;   $result=7;
     }      }
   
     if ($csec) {      if (defined($csec)) {
         if ($courseopt{$seclevel}) {          if (defined($courseopt{$seclevel})) {
     $outpar[6]=$courseopt{$seclevel};      $outpar[6]=$courseopt{$seclevel};
     $result=6;      $result=6;
  }   }
         if ($courseopt{$seclevelm}) {          if (defined($courseopt{$seclevelm})) {
     $outpar[5]=$courseopt{$seclevelm};      $outpar[5]=$courseopt{$seclevelm};
     $result=5;      $result=5;
  }   }
   
         if ($courseopt{$seclevelr}) {          if (defined($courseopt{$seclevelr})) {
     $outpar[4]=$courseopt{$seclevelr};      $outpar[4]=$courseopt{$seclevelr};
     $result=4;      $result=4;
  }   }
Line 156  sub parmval { Line 172  sub parmval {
   
 # ---------------------------------------------------------- fourth, check user  # ---------------------------------------------------------- fourth, check user
   
     if ($uname) {      if (defined($uname)) {
  if ($useropt{$courselevel}) {   if (defined($useropt{$courselevel})) {
     $outpar[3]=$useropt{$courselevel};      $outpar[3]=$useropt{$courselevel};
     $result=3;      $result=3;
  }   }
   
  if ($useropt{$courselevelm}) {   if (defined($useropt{$courselevelm})) {
     $outpar[2]=$useropt{$courselevelm};      $outpar[2]=$useropt{$courselevelm};
     $result=2;      $result=2;
  }   }
   
  if ($useropt{$courselevelr}) {   if (defined($useropt{$courselevelr})) {
     $outpar[1]=$useropt{$courselevelr};      $outpar[1]=$useropt{$courselevelr};
     $result=1;      $result=1;
  }   }
     }      }
   
     return ($result,@outpar);      return ($result,@outpar);
 }  }
   
Line 199  sub valout { Line 214  sub valout {
     my $result = '';      my $result = '';
     # Values of zero are valid.      # Values of zero are valid.
     if (! $value && $value ne '0') {      if (! $value && $value ne '0') {
         $result = '  ';   $result = '  ';
     } else {      } else {
         if ($type=~/^date/) {          if ($type eq 'date_interval') {
               my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value);
               $year=$year-70;
               $mday--;
               if ($year) {
    $result.=$year.' yrs ';
               }
               if ($mon) {
    $result.=$mon.' mths ';
               }
               if ($mday) {
    $result.=$mday.' days ';
               }
               if ($hour) {
    $result.=$hour.' hrs ';
               }
               if ($min) {
    $result.=$min.' mins ';
               }
               if ($sec) {
    $result.=$sec.' secs ';
               }
               $result=~s/\s+$//;
           } elsif ($type=~/^date/) {
             $result = localtime($value);              $result = localtime($value);
         } else {          } else {
             $result = $value;              $result = $value;
Line 252  sub startpage { Line 290  sub startpage {
     
     my $bodytag=&Apache::loncommon::bodytag('Set Course Parameters','',      my $bodytag=&Apache::loncommon::bodytag('Set Course Parameters','',
                                             'onUnload="pclose()"');                                              'onUnload="pclose()"');
       my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '.
           &Apache::loncommon::selectstudent_link('parmform','uname','udom');
       my $selscript=&Apache::loncommon::studentbrowser_javascript();
   
     $r->print(<<ENDHEAD);      $r->print(<<ENDHEAD);
 <html>  <html>
 <head>  <head>
Line 305  sub startpage { Line 347  sub startpage {
         newWin.focus();          newWin.focus();
     }      }
 </script>  </script>
   $selscript
 </head>  </head>
 $bodytag  $bodytag
 <form method="post" action="/adm/parmset" name="envform">  <form method="post" action="/adm/parmset" name="envform">
Line 322  For User Line 365  For User
 or ID  or ID
 <input type="text" value="$id" size="12" name="id">   <input type="text" value="$id" size="12" name="id"> 
 at Domain   at Domain 
 <input type="text" value="$udom" size="6" name="udom">  $chooseopt
 </b>  </b>
 <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">
Line 332  ENDHEAD Line 375  ENDHEAD
 }  }
   
 sub print_row {  sub print_row {
     my ($r,$which,$part,$name,$rid,$default,$type,$display,$defbgone,      my ($r,$which,$part,$name,$rid,$default,$defaulttype,$display,$defbgone,
  $defbgtwo,$parmlev)=@_;   $defbgtwo,$parmlev)=@_;
   # get the values for the parameter in cascading order
   # empty levels will remain empty
     my ($result,@outpar)=&parmval($$part{$which}.'.'.$$name{$which},      my ($result,@outpar)=&parmval($$part{$which}.'.'.$$name{$which},
   $rid,$$default{$which});    $rid,$$default{$which});
   # get the type for the parameters
   # problem: these may not be set for all levels
       my ($typeresult,@typeoutpar)=&parmval($$part{$which}.'.'.
                                             $$name{$which}.'.type',
     $rid,$$defaulttype{$which});
   # cascade down manually
       my $cascadetype=$defaulttype;
       for (my $i=$#typeoutpar;$i>0;$i--) {
    if ($typeoutpar[$i]) { 
               $cascadetype=$typeoutpar[$i];
    } else {
               $typeoutpar[$i]=$cascadetype;
           }
       }
    
     my $parm=$$display{$which};      my $parm=$$display{$which};
   
     if ($parmlev eq 'full' || $parmlev eq 'brief') {      if ($parmlev eq 'full' || $parmlev eq 'brief') {
Line 354  sub print_row { Line 414  sub print_row {
     if ($parmlev eq 'general') {      if ($parmlev eq 'general') {
   
         if ($uname) {          if ($uname) {
             &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);              &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
         } elsif ($csec) {          } elsif ($csec) {
             &print_td($r,6,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);               &print_td($r,6,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); 
         } else {          } else {
             &print_td($r,9,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);               &print_td($r,9,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); 
         }          }
     } elsif ($parmlev eq 'map') {      } elsif ($parmlev eq 'map') {
   
         if ($uname) {          if ($uname) {
             &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);              &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
         } elsif ($csec) {          } elsif ($csec) {
             &print_td($r,5,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);              &print_td($r,5,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
         } else {          } else {
             &print_td($r,8,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);              &print_td($r,8,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
         }          }
     } else {      } else {
   
         &print_td($r,11,'#FFDDDD',$result,\@outpar,$mprefix,$_,$type,$display);          &print_td($r,11,'#FFDDDD',$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
   
         if ($parmlev eq 'brief') {          if ($parmlev eq 'brief') {
   
            &print_td($r,7,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);             &print_td($r,7,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
   
            if ($csec) {             if ($csec) {
                &print_td($r,4,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);                 &print_td($r,4,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
            }             }
            if ($uname) {             if ($uname) {
                &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);                 &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
            }             }
         } else {          } else {
   
            &print_td($r,10,'#FFDDDD',$result,\@outpar,$mprefix,$_,$type,$display);             &print_td($r,10,'#FFDDDD',$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
            &print_td($r,9,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);             &print_td($r,9,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
            &print_td($r,8,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);             &print_td($r,8,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
            &print_td($r,7,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);             &print_td($r,7,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
   
            if ($csec) {             if ($csec) {
                &print_td($r,6,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);                 &print_td($r,6,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
                &print_td($r,5,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);                 &print_td($r,5,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
                &print_td($r,4,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);                 &print_td($r,4,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
            }             }
            if ($uname) {             if ($uname) {
                &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);                 &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
                &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);                 &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
                &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);                 &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
            }             }
         } # end of $brief if/else          } # end of $brief if/else
     } # end of $parmlev if/else      } # end of $parmlev if/else
   
     if ($parmlev eq 'full' || $parmlev eq 'brief') {      if ($parmlev eq 'full' || $parmlev eq 'brief') {
         $r->print('<td bgcolor=#CCCCFF align="center">'.          $r->print('<td bgcolor=#CCCCFF align="center">'.
                   &valout($outpar[$result],$$type{$which}).'</td>');                    &valout($outpar[$result],$typeoutpar[$result]).'</td>');
     }      }
     my $sessionval=&Apache::lonnet::EXT('resource.'.$$part{$which}.      my $sessionval=&Apache::lonnet::EXT('resource.'.$$part{$which}.
                                         '.'.$$name{$which},$symbp{$rid});                                          '.'.$$name{$which},$symbp{$rid});
   # this doesn't seem to work, and I don't think is correct
   #    my $sessionvaltype=&Apache::lonnet::EXT('resource.'.$$part{$which}.
   #                                      '.'.$$name{$which}.'.type',$symbp{$rid});
   # this seems to work
       my $sessionvaltype=$typeoutpar[$result];
       if (!defined($sessionvaltype)) { $sessionvaltype=$$defaulttype{$which}; }
     $r->print('<td bgcolor=#999999 align="center"><font color=#FFFFFF>'.      $r->print('<td bgcolor=#999999 align="center"><font color=#FFFFFF>'.
                   &valout($sessionval,$$type{$which}).'&nbsp;'.                    &valout($sessionval,$sessionvaltype).'&nbsp;'.
                   '</font></td>');                    '</font></td>');
     $r->print('</tr>');      $r->print('</tr>');
     $r->print("\n");      $r->print("\n");
 }  }
   
 sub print_td {  sub print_td {
     my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$type,$display)=@_;      my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$display)=@_;
     $r->print('<td bgcolor='.(($result==$which)?'"#AAFFAA"':$defbg).      $r->print('<td bgcolor='.(($result==$which)?'"#AAFFAA"':$defbg).
               ' align="center">'.                ' align="center">'.
               &plink($$type{$value},$$display{$value},$$outpar[$which],                &plink($$typeoutpar[$which],$$display{$value},$$outpar[$which],
                      $mprefix."$which",'parmform.pres','psub').'</td>'."\n");                       $mprefix."$which",'parmform.pres','psub').'</td>'."\n");
 }  }
   
Line 485  sub extractResourceInformation { Line 551  sub extractResourceInformation {
     my $defp = shift;      my $defp = shift;
     my $mapp = shift;      my $mapp = shift;
     my $symbp = shift;      my $symbp = shift;
       my $maptitles=shift;
   
     foreach (keys %$bighash) {      foreach (keys %$bighash) {
  if ($_=~/^src\_(\d+)\.(\d+)$/) {   if ($_=~/^src\_(\d+)\.(\d+)$/) {
Line 496  sub extractResourceInformation { Line 563  sub extractResourceInformation {
  $$ids[$#$ids+1]=$id;   $$ids[$#$ids+1]=$id;
  $$typep{$id}=$1;   $$typep{$id}=$1;
  $$keyp{$id}='';   $$keyp{$id}='';
  foreach (split(/\,/,&Apache::lonnet::metadata($srcf,'keys'))) {   foreach (split(/\,/,&Apache::lonnet::metadata($srcf,'allpossiblekeys'))) {
   if ($_=~/^parameter\_(.*)/) {    if ($_=~/^parameter\_(.*)/) {
                     my $key=$_;                      my $key=$_;
                     my $allkey=$1;                      my $allkey=$1;
Line 525  sub extractResourceInformation { Line 592  sub extractResourceInformation {
     &Apache::lonnet::declutter($$bighash{'map_id_'.$mapid});      &Apache::lonnet::declutter($$bighash{'map_id_'.$mapid});
                 $$mapp{$mapid}=$$mapp{$id};                  $$mapp{$mapid}=$$mapp{$id};
  $$allmaps{$mapid}=$$mapp{$id};   $$allmaps{$mapid}=$$mapp{$id};
    $$maptitles{$mapid}=
    $$bighash{'title_'.$$bighash{'ids_'.&Apache::lonnet::clutter($$mapp{$id})}};
    $$maptitles{$$mapp{$id}}=$$maptitles{$mapid};
  $$symbp{$id}=$$mapp{$id}.   $$symbp{$id}=$$mapp{$id}.
  '___'.$resid.'___'.   '___'.$resid.'___'.
     &Apache::lonnet::declutter($srcf);      &Apache::lonnet::declutter($srcf);
Line 598  sub assessparms { Line 668  sub assessparms {
     my @pscat=&get_env_multiple('form.pscat');      my @pscat=&get_env_multiple('form.pscat');
     my $pschp=$ENV{'form.pschp'};      my $pschp=$ENV{'form.pschp'};
     my @psprt=&get_env_multiple('form.psprt');      my @psprt=&get_env_multiple('form.psprt');
       if (!@psprt) { $psprt[0]='0'; }
     my $showoptions=$ENV{'form.showoptions'};      my $showoptions=$ENV{'form.showoptions'};
   
     my $pssymb='';      my $pssymb='';
Line 691  sub assessparms { Line 762  sub assessparms {
     }      }
   
 # --------------------------------------------------------- Get all assessments  # --------------------------------------------------------- Get all assessments
     extractResourceInformation(\%bighash, \@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allkeys, \%allmaps, $fcat, \%defp, \%mapp, \%symbp);      extractResourceInformation(\%bighash, \@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allkeys, \%allmaps, $fcat, \%defp, \%mapp, \%symbp,\%maptitles);
   
     $mapp{'0.0'} = '';      $mapp{'0.0'} = '';
     $symbp{'0.0'} = '';      $symbp{'0.0'} = '';
Line 720  sub assessparms { Line 791  sub assessparms {
  if ($snum==5) { $storeunder=$seclevelm; }   if ($snum==5) { $storeunder=$seclevelm; }
  if ($snum==4) { $storeunder=$seclevelr; }   if ($snum==4) { $storeunder=$seclevelr; }
   
         my %storecontent = ($storeunder        => $ENV{'form.pres_value'},   my $delete;
                             $storeunder.'type' => $ENV{'form.pres_type'});   if ($ENV{'form.pres_value'} eq '') { $delete=1;}
           my %storecontent = ($storeunder         => $ENV{'form.pres_value'},
                               $storeunder.'.type' => $ENV{'form.pres_type'});
  my $reply='';   my $reply='';
  if ($snum>3) {   if ($snum>3) {
 # ---------------------------------------------------------------- Store Course  # ---------------------------------------------------------------- Store Course
Line 736  sub assessparms { Line 809  sub assessparms {
  &Apache::lonnet::expirespread('','','assesscalc');   &Apache::lonnet::expirespread('','','assesscalc');
     }      }
 # Store parameter  # Store parameter
             $reply=&Apache::lonnet::cput      if ($delete) {
                 ('resourcedata',\%storecontent,   $reply=&Apache::lonnet::del
                  $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},      ('resourcedata',[keys(%storecontent)],
                  $ENV{'course.'.$ENV{'request.course.id'}.'.num'});       $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
        $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
       } else {
    $reply=&Apache::lonnet::cput
       ('resourcedata',\%storecontent,
        $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
        $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
       }
  } else {   } else {
 # ------------------------------------------------------------------ Store User  # ------------------------------------------------------------------ Store User
 #  #
Line 755  sub assessparms { Line 835  sub assessparms {
  &Apache::lonnet::expirespread($uname,$udom,'assesscalc');   &Apache::lonnet::expirespread($uname,$udom,'assesscalc');
     }      }
 # Store parameter  # Store parameter
     $reply=&Apache::lonnet::cput      if ($delete) {
                 ('resourcedata',\%storecontent,$udom,$uname);   $reply=&Apache::lonnet::del
       ('resourcedata',[keys(%storecontent)],$udom,$uname);
       } else {
    $reply=&Apache::lonnet::cput
       ('resourcedata',\%storecontent,$udom,$uname);
       }
  }   }
   
  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
    $message.='<h3>Changes can take up to 10 minutes before being active for all students</h3>';
     }      }
   # --------------------------------------------- Devalidate cache for this child
           &Apache::lonnet::devalidatecourseresdata(
                    $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
                    $ENV{'course.'.$ENV{'request.course.id'}.'.domain'});
 # -------------------------------------------------------------- Get coursedata  # -------------------------------------------------------------- Get coursedata
     %courseopt = &Apache::lonnet::dump      %courseopt = &Apache::lonnet::dump
         ('resourcedata',          ('resourcedata',
Line 831  sub assessparms { Line 921  sub assessparms {
   
         $r->print('</tr><tr><td><hr /></td>');          $r->print('</tr><tr><td><hr /></td>');
   
         $r->print('<tr><td>Select Enclosing Map</td>');          $r->print('<tr><td>Select Enclosing Map or Folder</td>');
         $r->print('<td colspan="2"><select name="pschp">');          $r->print('<td colspan="2"><select name="pschp">');
         $r->print('<option value="all">All Maps</option>');          $r->print('<option value="all">All Maps or Folders</option>');
         foreach (sort {$allmaps{$a} cmp $allmaps{$b}} keys %allmaps) {          foreach (sort {$allmaps{$a} cmp $allmaps{$b}} keys %allmaps) {
             $r->print('<option value="'.$_.'"');              $r->print('<option value="'.$_.'"');
             if (($pschp eq $_)) { $r->print(' selected'); }              if (($pschp eq $_)) { $r->print(' selected'); }
             $r->print('>/res/'.$allmaps{$_}.'</option>');              $r->print('>'.$maptitles{$_}.($allmaps{$_}!~/^uploaded/?'  ['.$allmaps{$_}.']':'').'</option>');
         }          }
         $r->print("</select></td></tr>\n");          $r->print("</select></td></tr>\n");
     } else {      } else {
Line 867  sub assessparms { Line 957  sub assessparms {
         $r->print('>All Parameters</td>');          $r->print('>All Parameters</td>');
   
         my $cnt=0;          my $cnt=0;
   
         foreach $tempkey (sort { $allparms{$a} cmp $allparms{$b} }          foreach $tempkey (sort { $allparms{$a} cmp $allparms{$b} }
                       keys %allparms ) {                        keys %allparms ) {
             ++$cnt;              ++$cnt;
Line 886  sub assessparms { Line 975  sub assessparms {
         $r->print('<option value="all"');          $r->print('<option value="all"');
         $r->print(' selected') unless (@psprt);          $r->print(' selected') unless (@psprt);
         $r->print('>All Parts</option>');          $r->print('>All Parts</option>');
           my %temphash=();
           foreach (@psprt) { $temphash{$_}=1; }
         foreach $tempkey (sort keys %allparts) {          foreach $tempkey (sort keys %allparts) {
             unless ($tempkey =~ /\./) {              unless ($tempkey =~ /\./) {
                 $r->print('<option value="'.$tempkey.'"');                  $r->print('<option value="'.$tempkey.'"');
                 if ($psprt[0] eq "all" ||  grep $_ == $tempkey, @psprt) {                  if ($psprt[0] eq "all" ||  $temphash{$tempkey}) {
                     $r->print(' selected');                      $r->print(' selected');
                 }                  }
                 $r->print('>'.$allparts{$tempkey}.'</option>');                  $r->print('>'.$allparts{$tempkey}.'</option>');
Line 899  sub assessparms { Line 990  sub assessparms {
   
         $r->print('<tr><td>Sort list by</td><td>');          $r->print('<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 or Folder</option>');
         foreach (sort keys %allkeys) {          foreach (sort keys %allkeys) {
             $r->print('<option value="'.$_.'"');              $r->print('<option value="'.$_.'"');
             if ($fcat eq $_) { $r->print(' selected'); }              if ($fcat eq $_) { $r->print(' selected'); }
Line 936  sub assessparms { Line 1027  sub assessparms {
     }      }
     $r->print('</table>');      $r->print('</table>');
   
     my @temp_psprt;  #    my @temp_psprt;
     foreach my $t (@psprt) {  #    foreach my $t (@psprt) {
  push(@temp_psprt, grep {eval (/^$t\./ || ($_ == $t))} (keys %allparts));  # push(@temp_psprt, grep {eval (/^$t\./ || ($_ == $t))} (keys %allparts));
     }  #    }
   
     @psprt = @temp_psprt;  #    @psprt = @temp_psprt;
   
     my @temp_pscat;      my @temp_pscat;
     map {      map {
Line 979  ENDTABLETWO Line 1070  ENDTABLETWO
            }             }
            $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 or Folder</th><th>Part No.</th><th>Parameter Name</th>
 <th>default</th><th>from Enclosing Map</th>  <th>default</th><th>from Enclosing Map or Folder</th>
 <th>general</th><th>for Enclosing Map</th><th>for Resource</th>  <th>general</th><th>for Enclosing Map or Folder</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 or Folder</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 or Folder</th><th>for Resource</th>');
            }             }
   
            $r->print('</tr>');             $r->print('</tr>');
Line 1133  ENDTABLEHEADFOUR Line 1224  ENDTABLEHEADFOUR
                     foreach (split(/\,/,$keyp{$rid})) {                      foreach (split(/\,/,$keyp{$rid})) {
                       my $tempkeyp = $_;                        my $tempkeyp = $_;
                       my $fullkeyp = $tempkeyp;                        my $fullkeyp = $tempkeyp;
                       $tempkeyp =~ s/_[\d_]+_/_0_/;                        $tempkeyp =~ s/_\w+_/_0_/;
                                               
                       if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {                        if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
                         $part{$tempkeyp}="0";                          $part{$tempkeyp}="0";
Line 1141  ENDTABLEHEADFOUR Line 1232  ENDTABLEHEADFOUR
                         $display{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');                          $display{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
                         unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }                          unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
                         $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';                          $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
                         $display{$tempkeyp} =~ s/_[\d_]+_/_0_/;                          $display{$tempkeyp} =~ s/_\w+_/_0_/;
                         $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);                          $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
                         $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');                          $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
                       }                        }
Line 1150  ENDTABLEHEADFOUR Line 1241  ENDTABLEHEADFOUR
                 } # end loop through ids                  } # end loop through ids
                                                                     
 #---------------------------------------------------- print header information  #---------------------------------------------------- print header information
                   my $foldermap=($maptitle=~/^uploaded/?'Folder':'Map');
                   my $showtitle=$maptitles{$maptitle}.($maptitle!~/^uploaded/?' ['.$maptitle.']':'');
                 $r->print(<<ENDMAPONE);                  $r->print(<<ENDMAPONE);
 <center><h4>  <center><h4>
 <font color="red">Set Defaults for All Resources in map  <font color="red">Set Defaults for All Resources in $foldermap<br />
 <i>$maptitle</i><br />  <i>$showtitle</i><br />
 Specifically for  Specifically for
 ENDMAPONE  ENDMAPONE
                 if ($uname) {                  if ($uname) {
Line 1215  ENDMAPONE Line 1308  ENDMAPONE
                 foreach (split(/\,/,$keyp{$rid})) {                  foreach (split(/\,/,$keyp{$rid})) {
                   my $tempkeyp = $_;                    my $tempkeyp = $_;
                   my $fullkeyp = $tempkeyp;                    my $fullkeyp = $tempkeyp;
                   $tempkeyp =~ s/_[\d_]+_/_0_/;                    $tempkeyp =~ s/_\w+_/_0_/;
                   if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {                    if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
                     $part{$tempkeyp}="0";                      $part{$tempkeyp}="0";
                     $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');                      $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
                     $display{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');                      $display{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
                     unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }                      unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
                     $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';                      $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
                     $display{$tempkeyp} =~ s/_[\d_]+_/_0_/;                      $display{$tempkeyp} =~ s/_\w+_/_0_/;
                     $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);                      $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
                     $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');                      $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
                   }                    }
Line 1312  sub crsenv { Line 1405  sub crsenv {
                          $dom,$crs).                           $dom,$crs).
                     '<br>';                      '<br>';
             }              }
               if ($name =~ /^spreadsheet_default_(classcalc|
                                                   studentcalc|
                                                   assesscalc)$/x) {
                   my $sheettype = $1; 
                   if ($sheettype eq 'classcalc') {
                       # no need to do anything since viewing the sheet will
                       # cause it to be updated. 
                   } elsif ($sheettype eq 'studentcalc') {
                       # expire all the student spreadsheets
                       &Apache::lonnet::expirespread('','','studentcalc');
                   } else {
                       # expire all the default assessment spreadsheets
                   }
               }
   
             if ($name) {              if ($name) {
                 $setoutput.='Setting <tt>'.$name.'</tt> to <tt>'.                  $setoutput.='Setting <tt>'.$name.'</tt> to <tt>'.
                     $value.'</tt>: '.                      $value.'</tt>: '.
Line 1330  sub crsenv { Line 1438  sub crsenv {
     ('url'            => '<b>Top Level Map</b> '.      ('url'            => '<b>Top Level Map</b> '.
                                  '<a href="javascript:openbrowser'.                                   '<a href="javascript:openbrowser'.
                                  "('envform','url','sequence')\">".                                   "('envform','url','sequence')\">".
                                  'Browse</a><br><font color=red> '.                                   'Browse</a><br /><font color=red> '.
                                  'Modification may make assessment data '.                                   'Modification may make assessment data '.
                                  'inaccessible</font>',                                   'inaccessible</font>',
              'description'    => '<b>Course Description</b>',               'description'    => '<b>Course Description</b>',
              'courseid'       => '<b>Course ID or number</b><br>'.               'courseid'       => '<b>Course ID or number</b><br />'.
                                  '(internal, optional)',                                   '(internal, optional)',
              'default_xml_style' => '<b>Default XML Style File</b> '.               'default_xml_style' => '<b>Default XML Style File</b> '.
                     '<a href="javascript:openbrowser'.                      '<a href="javascript:openbrowser'.
                     "('envform','default_xml_style'".                      "('envform','default_xml_style'".
                     ",'sty')\">Browse</a><br>",                      ",'sty')\">Browse</a><br>",
              'question.email' => '<b>Feedback Addresses for Content '.               'question.email' => '<b>Feedback Addresses for Resource Content '.
                                  'Questions</b><br>(<tt>user:domain,'.                                   'Questions</b><br />(<tt>user:domain,'.
                                  'user:domain,...</tt>)',                                   'user:domain(section;section;...;*;...),...</tt>)',
              'comment.email'  => '<b>Feedback Addresses for Comments</b><br>'.               'comment.email'  => '<b>Feedback Addresses for Course Content Comments</b><br />'.
                                  '(<tt>user:domain,user:domain,...</tt>)',                                   '(<tt>user:domain,user:domain(section;section;...;*;...),...</tt>)',
              'policy.email'   => '<b>Feedback Addresses for Course Policy</b>'.               'policy.email'   => '<b>Feedback Addresses for Course Policy</b>'.
                                  '<br>(<tt>user:domain,user:domain,...</tt>)',                                   '<br />(<tt>user:domain,user:domain(section;section;...;*;...),...</tt>)',
              'hideemptyrows'  => '<b>Hide Empty Rows in Spreadsheets</b><br>'.               'hideemptyrows'  => '<b>Hide Empty Rows in Spreadsheets</b><br />'.
                                  '("<tt>yes</tt>" for default hiding)',                                   '("<tt>yes</tt>" for default hiding)',
              'pageseparators'  => '<b>Visibly Separate Items on Pages</b><br>'.               'pageseparators'  => '<b>Visibly Separate Items on Pages</b><br />'.
                                  '("<tt>yes</tt>" for visible separation)',                                   '("<tt>yes</tt>" for visible separation)',
              'pch.roles.denied'=> '<b>Disallow Resource Discussion for '.               'pch.roles.denied'=> '<b>Disallow Resource Discussion for '.
                                   'Roles</b><br>"<tt>st</tt>": '.                                    'Roles</b><br />"<tt>st</tt>": '.
                                   'student, "<tt>ta</tt>": '.                                    'student, "<tt>ta</tt>": '.
                                   'TA, "<tt>in</tt>": '.                                    'TA, "<tt>in</tt>": '.
                                   'instructor;<br><tt>role,role,...</tt>) '.                                    'instructor;<br /><tt>role,role,...</tt>) '.
        Apache::loncommon::help_open_topic("Course_Disable_Discussion"),         Apache::loncommon::help_open_topic("Course_Disable_Discussion"),
              'pch.users.denied' =>                'pch.users.denied' => 
                           '<b>Disallow Resource Discussion for Users</b><br>'.                            '<b>Disallow Resource Discussion for Users</b><br />'.
                                  '(<tt>user:domain,user:domain,...</tt>)',                                   '(<tt>user:domain,user:domain,...</tt>)',
              'spreadsheet_default_classcalc'                'spreadsheet_default_classcalc' 
                  => '<b>Default Course Spreadsheet</b> '.                   => '<b>Default Course Spreadsheet</b> '.
                     '<a href="javascript:openbrowser'.                      '<a href="javascript:openbrowser'.
                     "('envform','spreadsheet_default_classcalc'".                      "('envform','spreadsheet_default_classcalc'".
                     ",'spreadsheet')\">Browse</a><br>",                      ",'spreadsheet')\">Browse</a><br />",
              'spreadsheet_default_studentcalc'                'spreadsheet_default_studentcalc' 
                  => '<b>Default Student Spreadsheet</b> '.                   => '<b>Default Student Spreadsheet</b> '.
                     '<a href="javascript:openbrowser'.                      '<a href="javascript:openbrowser'.
                     "('envform','spreadsheet_default_calc'".                      "('envform','spreadsheet_default_calc'".
                     ",'spreadsheet')\">Browse</a><br>",                      ",'spreadsheet')\">Browse</a><br />",
              'spreadsheet_default_assesscalc'                'spreadsheet_default_assesscalc' 
                  => '<b>Default Assessment Spreadsheet</b> '.                   => '<b>Default Assessment Spreadsheet</b> '.
                     '<a href="javascript:openbrowser'.                      '<a href="javascript:openbrowser'.
                     "('envform','spreadsheet_default_assesscalc'".                      "('envform','spreadsheet_default_assesscalc'".
                     ",'spreadsheet')\">Browse</a><br>",                      ",'spreadsheet')\">Browse</a><br />",
        'allow_limited_html_in_feedback'
            => '<b>Allow limited HTML in discussion posts</b><br />'.
               '(Set value to yes to allow)'
              );               );
  foreach (keys(%values)) {   foreach (keys(%values)) {
     unless ($descriptions{$_}) {      unless ($descriptions{$_}) {
Line 1383  sub crsenv { Line 1494  sub crsenv {
  }   }
  foreach (sort keys %descriptions) {   foreach (sort keys %descriptions) {
             # onchange is javascript to automatically check the 'Set' button.              # onchange is javascript to automatically check the 'Set' button.
             my $onchange = 'onchange="javascript:window.document.forms'.              my $onchange = 'onFocus="javascript:window.document.forms'.
                 '[\'envform\'].elements[\''.$_.'_setparmval\']'.                  '[\'envform\'].elements[\''.$_.'_setparmval\']'.
                 '.checked=true;"';                  '.checked=true;"';
     $output.='<tr><td>'.$descriptions{$_}.'</td>'.      $output.='<tr><td>'.$descriptions{$_}.'</td>'.
Line 1392  sub crsenv { Line 1503  sub crsenv {
                 '<td><input type=checkbox name="'.$_.'_setparmval"></td>'.                  '<td><input type=checkbox name="'.$_.'_setparmval"></td>'.
                 '</tr>'."\n";                  '</tr>'."\n";
  }   }
         my $onchange = 'onchange="javascript:window.document.forms'.          my $onchange = 'onFocus="javascript:window.document.forms'.
             '[\'envform\'].elements[\'newp_setparmval\']'.              '[\'envform\'].elements[\'newp_setparmval\']'.
             '.checked=true;"';              '.checked=true;"';
  $output.='<tr><td><i>Create New Environment Variable</i><br />'.   $output.='<tr><td><i>Create New Environment Variable</i><br />'.

Removed from v.1.64  
changed lines
  Added in v.1.82


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