Diff for /loncom/interface/lonparmset.pm between versions 1.209 and 1.227

version 1.209, 2005/06/05 01:37:26 version 1.227, 2005/06/17 20:56:06
Line 70  my $parmhashid; Line 70  my $parmhashid;
 my %parmhash;  my %parmhash;
 my $symbsid;  my $symbsid;
 my %symbs;  my %symbs;
   my $rulesid;
   my %rules;
   
 # --- end local caches  # --- end local caches
   
Line 240  sub symbcache { Line 242  sub symbcache {
     return $symbs{$id};      return $symbs{$id};
 }  }
   
   sub resetrulescache {
       $rulesid='';
   }
   
   sub rulescache {
       my $id=shift;
       if ($rulesid ne $env{'request.course.id'}) {
    %rules=();
       }
       unless (defined($rules{$id})) {
    my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
    my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
    %rules=&Apache::lonnet::dump('parmdefactions',$dom,$crs);
    $rulesid=$env{'request.course.id'};
       }
       return $rules{$id};
   }
   
 ##################################################  ##################################################
 ##################################################  ##################################################
 #  #
Line 271  sub storeparm { Line 291  sub storeparm {
 # - username  # - username
 # - userdomain  # - userdomain
   
   my %recstack;
 sub storeparm_by_symb {  sub storeparm_by_symb {
       my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$recflag)=@_;
       unless ($recflag) {
   # first time call
    %recstack=();
    $recflag=1;
       }
   # store parameter
       &storeparm_by_symb_inner
    ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec);
       my ($prefix,$parm)=($spnam=~/^(.*[\_\.])([^\_\.]+)$/);
   # remember that this was set
       $recstack{$parm}=1;
   # what does this trigger?
       foreach my $triggered (split(/\:/,&rulescache($parm.'_triggers'))) {
   # don't backfire
          unless ((!$triggered) || ($recstack{$triggered})) {
      my $action=&rulescache($triggered.'_action');
      my ($whichaction,$whichparm)=($action=~/^(.*\_)([^\_]+)$/);
   # set triggered parameter on same level
      my $newspnam=$prefix.$triggered;
      my $newvalue='';
      if ($action eq 'when_setting_') {
      } else {
          my $totalsecs=((&rulescache($triggered.'_days')*24+&rulescache($triggered.'_hours'))*60+&rulescache($triggered.'_min'))*60+&rulescache($triggered.'_sec');
      }
      &Apache::lonnet::logthis('About to set '.$newspnam.' using action '.$whichaction.' with '.$parm.' ('.$whichparm.')');
          }
       }
       return '';
   }
   
   sub storeparm_by_symb_inner {
 # ---------------------------------------------------------- Get symb, map, etc  # ---------------------------------------------------------- Get symb, map, etc
     my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec)=@_;      my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec)=@_;
 # ---------------------------------------------------------- Construct prefixes  # ---------------------------------------------------------- Construct prefixes
Line 403  sub valout { Line 456  sub valout {
  $result.=$sec.' secs ';   $result.=$sec.' secs ';
             }              }
             $result=~s/\s+$//;              $result=~s/\s+$//;
         } elsif ($type=~/^date/) {          } elsif (&isdateparm($type)) {
             $result = localtime($value);              $result = localtime($value);
         } else {          } else {
             $result = $value;              $result = $value;
Line 434  sub plink { Line 487  sub plink {
     my ($type,$dis,$value,$marker,$return,$call)=@_;      my ($type,$dis,$value,$marker,$return,$call)=@_;
     my $winvalue=$value;      my $winvalue=$value;
     unless ($winvalue) {      unless ($winvalue) {
  if ($type=~/^date/) {   if (&isdateparm($type)) {
             $winvalue=$env{'form.recent_'.$type};              $winvalue=$env{'form.recent_'.$type};
         } else {          } else {
             $winvalue=$env{'form.recent_'.(split(/\_/,$type))[0]};              $winvalue=$env{'form.recent_'.(split(/\_/,$type))[0]};
Line 667  sub extractResourceInformation { Line 720  sub extractResourceInformation {
     my $symbp = shift;      my $symbp = shift;
     my $maptitles=shift;      my $maptitles=shift;
     my $uris=shift;      my $uris=shift;
       my $keyorder=shift;
       my $defkeytype=shift;
   
       my $keyordercnt=100;
   
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
     my @allres=$navmap->retrieveResources(undef,undef,1,undef,1);      my @allres=$navmap->retrieveResources(undef,undef,1,undef,1);
Line 697  sub extractResourceInformation { Line 753  sub extractResourceInformation {
  my $parmdis = $display;   my $parmdis = $display;
  $parmdis =~ s/\[Part.*$//g;   $parmdis =~ s/\[Part.*$//g;
                 $$allparms{$name}=$parmdis;                  $$allparms{$name}=$parmdis;
    $$defkeytype{$name}=&Apache::lonnet::metadata($srcf,$key.'.type');
 #  #
 # allparts is a hash of all parts  # allparts is a hash of all parts
 #  #
Line 709  sub extractResourceInformation { Line 766  sub extractResourceInformation {
  } else {   } else {
     $$keyp{$id}=$key;      $$keyp{$id}=$key;
  }   }
   #
   # Put in order
   # 
                   unless ($$keyorder{$key}) {
                       $$keyorder{$key}=$keyordercnt;
                       $keyordercnt++;
    }
   
     }      }
  }   }
  $$mapp{$id}=   $$mapp{$id}=
Line 730  sub extractResourceInformation { Line 795  sub extractResourceInformation {
 ##################################################  ##################################################
 ##################################################  ##################################################
   
   sub isdateparm {
       my $type=shift;
       return (($type=~/^date/) && (!($type eq 'date_interval')));
   }
   
 sub parmmenu {  sub parmmenu {
     my ($r,$allparms,$pscat)=@_;      my ($r,$allparms,$pscat,$keyorder)=@_;
     my $tempkey;      my $tempkey;
     $r->print(<<ENDSCRIPT);      $r->print(<<ENDSCRIPT);
 <script type="text/javascript">  <script type="text/javascript">
Line 743  sub parmmenu { Line 813  sub parmmenu {
             }              }
         }          }
     }      }
   
       function checkthis(thisvalue, checkName) {
    for (i=0; i<document.forms.parmform.elements.length; i++) {
               ele = document.forms.parmform.elements[i];
               if (ele.name == checkName) {
    if (ele.value == thisvalue) {
       document.forms.parmform.elements[i].checked=true;
    }
               }
           }
       }
   
       function checkdates() {
    checkthis('duedate','pscat');
     checkthis('opendate','pscat');
    checkthis('answerdate','pscat');
       }
   
       function checkdisset() {
    checkthis('discussend','pscat');
     checkthis('discusshide','pscat');
       }
   
       function checkcontdates() {
    checkthis('contentopen','pscat');
     checkthis('contentclose','pscat');
       }
    
   
       function checkvisi() {
    checkthis('hiddenresource','pscat');
     checkthis('encrypturl','pscat');
    checkthis('problemstatus','pscat');
    checkthis('contentopen','pscat');
    checkthis('opendate','pscat');
       }
   
       function checkparts() {
    checkthis('hiddenparts','pscat');
    checkthis('display','pscat');
    checkthis('ordered','pscat');
       }
   
       function checkstandard() {
           checkall(false,'pscat');
    checkdates();
    checkthis('weight','pscat');
    checkthis('maxtries','pscat');
       }
   
 </script>  </script>
 ENDSCRIPT  ENDSCRIPT
     $r->print();      $r->print();
     $r->print("\n<table><tr>");      $r->print("\n<table><tr>");
     my $cnt=0;      my $cnt=0;
     foreach $tempkey (sort { $$allparms{$a} cmp $$allparms{$b} }      foreach $tempkey (&keysindisplayorder($allparms,$keyorder)) {
                       keys %{$allparms} ) {  
  $r->print("\n<td><font size='-1'><input type='checkbox' name='pscat' ");   $r->print("\n<td><font size='-1'><input type='checkbox' name='pscat' ");
  $r->print('value="'.$tempkey.'"');   $r->print('value="'.$tempkey.'"');
  if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {   if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {
Line 764  ENDSCRIPT Line 883  ENDSCRIPT
     }      }
     $r->print('      $r->print('
 </tr><tr><td>  </tr><tr><td>
 <input type="button" onclick="checkall(true, \'pscat\')" value="Select All" />  <a href="javascript:checkall(true, \'pscat\')">Select All</a><br />
 </td><td></td><td>  <a href="javascript:checkstandard()">Select Common Only</a>
 <input type="button" onclick="checkall(false, \'pscat\')" value="Unselect All" />  </td><td>
   <a href="javascript:checkdates()">Add Problem Dates</a>
   <a href="javascript:checkcontdates()">Add Content Dates</a><br />
   <a href="javascript:checkdisset()">Add Discussion Settings</a>
   <a href="javascript:checkvisi()">Add Visibilities</a><br />
   <a href="javascript:checkparts()">Add Part Parameters</a>
   </td><td>
   <a href="javascript:checkall(false, \'pscat\')">Unselect All</a>
 </td>  </td>
 ');  ');
     $r->print('</tr></table>');      $r->print('</tr></table>');
Line 774  ENDSCRIPT Line 900  ENDSCRIPT
   
 sub partmenu {  sub partmenu {
     my ($r,$allparts,$psprt)=@_;      my ($r,$allparts,$psprt)=@_;
     $r->print('<select multiple name="psprt" size="5">');      $r->print('<select multiple name="psprt" size="8">');
     $r->print('<option value="all"');      $r->print('<option value="all"');
     $r->print(' selected') unless (@{$psprt});      $r->print(' selected') unless (@{$psprt});
     $r->print('>'.&mt('All Parts').'</option>');      $r->print('>'.&mt('All Parts').'</option>');
Line 831  ENDMENU Line 957  ENDMENU
 }  }
   
 sub displaymenu {  sub displaymenu {
     my ($r,$allparms,$allparts,$pscat,$psprt)=@_;      my ($r,$allparms,$allparts,$pscat,$psprt,$keyorder)=@_;
     $r->print('<table border="1"><tr><th>'.&mt('Select Parameters to View').'</th><th>'.      $r->print('<table border="1"><tr><th>'.&mt('Select Parameters to View').'</th><th>'.
      &mt('Select Parts to View').'</th></tr><tr><td>');         &mt('Select Parts to View').'</th></tr><tr><td>');  
     &parmmenu($r,$allparms,$pscat);      &parmmenu($r,$allparms,$pscat,$keyorder);
     $r->print('</td><td>');      $r->print('</td><td>');
     &partmenu($r,$allparts,$psprt);      &partmenu($r,$allparts,$psprt);
     $r->print('</td></tr></table>');      $r->print('</td></tr></table>');
Line 868  sub levelmenu { Line 994  sub levelmenu {
     $r->print("</select>");      $r->print("</select>");
 }  }
   
   
   sub sectionmenu {
       my ($r,$selectedsections)=@_;
       my %sectionhash=();
   
       if (&Apache::loncommon::get_sections(
                    $env{'course.'.$env{'request.course.id'}.'.domain'},
                    $env{'course.'.$env{'request.course.id'}.'.num'},
    \%sectionhash)) {
    $r->print('<select name="Section" multiple="true" size="8" >');
    foreach my $s ('all',sort keys %sectionhash) {
       $r->print('    <option value="'.$s.'"');
       foreach (@{$selectedsections}) {
    if ($s eq $_) {
       $r->print(' selected');
       last;
    }
       }
       $r->print('>'.$s."</option>\n");
    }
    $r->print("</select>\n");
       }
   }
   
   sub keysplit {
       my $keyp=shift;
       return (split(/\,/,$keyp));
   }
   
   sub keysinorder {
       my ($name,$keyorder)=@_;
       return sort {
    $$keyorder{$a} <=> $$keyorder{$b};
       } (keys %{$name});
   }
   
   sub keysindisplayorder {
       my ($name,$keyorder)=@_;
       return sort {
    $$keyorder{'parameter_0_'.$a} <=> $$keyorder{'parameter_0_'.$b};
       } (keys %{$name});
   }
   
   sub sortmenu {
       my ($r,$sortorder)=@_;
       $r->print('<br /><input type="radio" name="sortorder" value="realmstudent"');
       if ($sortorder eq 'realmstudent') {
          $r->print(' checked="on"');
       }
       $r->print(' />'.&mt('Sort by realm first, then student (group/section)'));
       $r->print('<br /><input type="radio" name="sortorder" value="studentrealm"');
       if ($sortorder eq 'studentrealm') {
          $r->print(' checked="on"');
       }
       $r->print(' />'.&mt('Sort by student (group/section) first, then realm'));
   }
   
   sub standardkeyorder {
       return ('parameter_0_opendate' => 1,
       'parameter_0_duedate' => 2,
       'parameter_0_answerdate' => 3,
       'parameter_0_interval' => 4,
       'parameter_0_weight' => 5,
       'parameter_0_maxtries' => 6,
       'parameter_0_hinttries' => 7,
       'parameter_0_contentopen' => 8,
       'parameter_0_contentclose' => 9,
       'parameter_0_type' => 10,
       'parameter_0_problemstatus' => 11,
       'parameter_0_hiddenresource' => 12,
       'parameter_0_hiddenparts' => 13,
       'parameter_0_display' => 14,
       'parameter_0_ordered' => 15,
       'parameter_0_tol' => 16,
       'parameter_0_sig' => 17,
       'parameter_0_turnoffunit' => 18,
               'parameter_0_discussend' => 19,
               'parameter_0_discusshide' => 20);
   }
   
 ##################################################  ##################################################
 ##################################################  ##################################################
   
Line 923  sub assessparms { Line 1129  sub assessparms {
     my $coursename=$env{'course.'.$env{'request.course.id'}.'.description'};      my $coursename=$env{'course.'.$env{'request.course.id'}.'.description'};
   
     $alllevs{'Resource Level'}='full';      $alllevs{'Resource Level'}='full';
     $alllevs{'Map Level'}='map';      $alllevs{'Map/Folder Level'}='map';
     $alllevs{'Course Level'}='general';      $alllevs{'Course Level'}='general';
   
     my %allparms;      my %allparms;
     my %allparts;      my %allparts;
   #
   # Order in which these parameters will be displayed
   #
       my %keyorder=&standardkeyorder();
   
     @ids=();      @ids=();
     %symbp=();      %symbp=();
Line 1022  sub assessparms { Line 1232  sub assessparms {
     unless ($csec) { $csec=''; }      unless ($csec) { $csec=''; }
   
 # --------------------------------------------------------- Get all assessments  # --------------------------------------------------------- Get all assessments
     &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps, \%mapp, \%symbp,\%maptitles,\%uris);      &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps, 
    \%mapp, \%symbp,\%maptitles,\%uris,
    \%keyorder);
   
     $mapp{'0.0'} = '';      $mapp{'0.0'} = '';
     $symbp{'0.0'} = '';      $symbp{'0.0'} = '';
Line 1054  sub assessparms { Line 1266  sub assessparms {
  $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>');  
                                                   
     if (!$pssymb) {      if (!$pssymb) {
         $r->print('<table border="1"><tr><td>');          $r->print('<table border="1"><tr><td>');
Line 1066  sub assessparms { Line 1276  sub assessparms {
     $r->print('</td>');      $r->print('</td>');
  }   }
         $r->print('</td></tr></table>');          $r->print('</td></tr></table>');
  &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt);   &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt,\%keyorder);
     } else {      } else {
         my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb);          my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb);
         $r->print(&mt('Specific Resource').": ".$resource.          $r->print(&mt('Specific Resource').": ".$resource.
                   '<input type="hidden" value="'.$pssymb.'" name="symb">');                    '<input type="hidden" value="'.$pssymb.'" name="symb"><br />');
     }      }
     &usermenu($r,$uname,$id,$udom,$csec);          &usermenu($r,$uname,$id,$udom,$csec);    
   
       $r->print('<p>'.$message.'</p>');
   
     $r->print('<br /><input type="submit" name="dis" value="'.&mt("Update Parameter Display").'" />');      $r->print('<br /><input type="submit" name="dis" value="'.&mt("Update Parameter Display").'" />');
   
     my @temp_pscat;      my @temp_pscat;
Line 1176  ENDTABLEHEADFOUR Line 1388  ENDTABLEHEADFOUR
                     my %default=();                      my %default=();
                     my $uri=&Apache::lonnet::declutter($uris{$rid});                      my $uri=&Apache::lonnet::declutter($uris{$rid});
   
                     foreach (split(/\,/,$keyp{$rid})) {                      foreach (&keysplit($keyp{$rid})) {
                         my $tempkeyp = $_;                          my $tempkeyp = $_;
                         if (grep $_ eq $tempkeyp, @catmarker) {                          if (grep $_ eq $tempkeyp, @catmarker) {
                           $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');                            $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');
Line 1220  ENDTABLEHEADFOUR Line 1432  ENDTABLEHEADFOUR
   
                         $r->print('</font></tt></td>');                          $r->print('</font></tt></td>');
   
                         foreach (sort keys %name) {                          foreach (&keysinorder(\%name,\%keyorder)) {
                             unless ($firstrow) {                              unless ($firstrow) {
                                 $r->print('<tr>');                                  $r->print('<tr>');
                             } else {                              } else {
Line 1283  ENDTABLEHEADFOUR Line 1495  ENDTABLEHEADFOUR
 # When storing information, store as part 0  # When storing information, store as part 0
 # When requesting information, request from full part  # When requesting information, request from full part
 #-------------------------------------------------------------------  #-------------------------------------------------------------------
                     foreach (split(/\,/,$keyp{$rid})) {                      foreach (&keysplit($keyp{$rid})) {
                       my $tempkeyp = $_;                        my $tempkeyp = $_;
                       my $fullkeyp = $tempkeyp;                        my $fullkeyp = $tempkeyp;
                       $tempkeyp =~ s/_\w+_/_0_/;                        $tempkeyp =~ s/_\w+_/_0_/;
Line 1333  ENDMAPONE Line 1545  ENDMAPONE
                 $r->print('<th>'.&mt('Default Value').'</th>');                  $r->print('<th>'.&mt('Default Value').'</th>');
                 $r->print('<th>'.&mt('Parameter in Effect').'</th></tr>');                  $r->print('<th>'.&mt('Parameter in Effect').'</th></tr>');
   
         foreach (sort keys %name) {          foreach (&keysinorder(\%name,\%keyorder)) {
                     $r->print('<tr>');                      $r->print('<tr>');
                     &print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,                      &print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,
                            \%type,\%display,$defbgone,$defbgtwo,                             \%type,\%display,$defbgone,$defbgtwo,
                            $parmlev,$uname,$udom,$csec);                             $parmlev,$uname,$udom,$csec);
 #                    $r->print("<tr><td>resource.$part{$_}.$name{$_},$symbp{$mapid}</td></tr>\n");  
                 }                  }
                 $r->print("</table></center>");                  $r->print("</table></center>");
             } # end each map              } # end each map
Line 1370  ENDMAPONE Line 1581  ENDMAPONE
 # When storing information, store as part 0  # When storing information, store as part 0
 # When requesting information, request from full part  # When requesting information, request from full part
 #-------------------------------------------------------------------  #-------------------------------------------------------------------
                 foreach (split(/\,/,$keyp{$rid})) {                  foreach (&keysplit($keyp{$rid})) {
                   my $tempkeyp = $_;                    my $tempkeyp = $_;
                   my $fullkeyp = $tempkeyp;                    my $fullkeyp = $tempkeyp;
                   $tempkeyp =~ s/_\w+_/_0_/;                    $tempkeyp =~ s/_\w+_/_0_/;
Line 1411  ENDMAPONE Line 1622  ENDMAPONE
             $r->print('<th>'.&mt('Default Value').'</th>');              $r->print('<th>'.&mt('Default Value').'</th>');
             $r->print('<th>'.&mt('Parameter in Effect').'</th></tr>');              $r->print('<th>'.&mt('Parameter in Effect').'</th></tr>');
   
     foreach (sort keys %name) {      foreach (&keysinorder(\%name,\%keyorder)) {
                 $r->print('<tr>');                  $r->print('<tr>');
                 &print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,                  &print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,
                        \%type,\%display,$defbgone,$defbgtwo,$parmlev,$uname,$udom,$csec);                         \%type,\%display,$defbgone,$defbgtwo,$parmlev,$uname,$udom,$csec);
 #                    $r->print("<tr><td>resource.$part{$_}.$name{$_},$symbp{$mapid}</td></tr>\n");  
             }              }
             $r->print("</table></center>");              $r->print("</table></center>");
         } # end of $parmlev eq general          } # end of $parmlev eq general
Line 1637  sub crsenv { Line 1847  sub crsenv {
              'anonymous_quiz'               'anonymous_quiz'
                  => '<b>'.&mt('Anonymous quiz/exam').'</b><br />'.                   => '<b>'.&mt('Anonymous quiz/exam').'</b><br />'.
                     ' (<tt><b>'.&mt('yes').'</b> '.&mt('to avoid print students names').' </tt>)',                      ' (<tt><b>'.&mt('yes').'</b> '.&mt('to avoid print students names').' </tt>)',
              'default_enrollment_start_date' => '<b>'.&mt('Default beginning date when enrolling students').'</b>',               'default_enrollment_start_date' => '<b>'.&mt('Default beginning date for student access.').'</b>',
              'default_enrollment_end_date'   => '<b>'.&mt('Default ending date when enrolling students').'</b>',               'default_enrollment_end_date'   => '<b>'.&mt('Default ending date for student access.').'</b>',
              'nothideprivileged'   => '<b>'.&mt('Privileged users that should not be hidden on staff listings').'</b>'.               'nothideprivileged'   => '<b>'.&mt('Privileged users that should not be hidden on staff listings').'</b>'.
                                  '<br />(<tt>user:domain,user:domain,...</tt>)',                                   '<br />(<tt>user:domain,user:domain,...</tt>)',
              'languages' => '<b>'.&mt('Languages used').'</b>',               'languages' => '<b>'.&mt('Languages used').'</b>',
Line 1825  sub storedata { Line 2035  sub storedata {
     }      }
     if ($cmd eq 'set') {      if ($cmd eq 'set') {
  my $data=$env{$_};   my $data=$env{$_};
  if ($$olddata{$thiskey} ne $data) {                   my $typeof=$env{'form.typeof_'.$thiskey};
     if ($$olddata{$thiskey} ne $data) { 
     if ($tuname) {      if ($tuname) {
  if (&Apache::lonnet::put('resourcedata',{$tkey=>$data},$tudom,$tuname) eq 'ok') {   if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
    $tkey.'.type' => $typeof},
    $tudom,$tuname) eq 'ok') {
     $r->print('<br />'.&mt('Stored modified parameter for').' '.      $r->print('<br />'.&mt('Stored modified parameter for').' '.
       &Apache::loncommon::plainname($tuname,$tudom));        &Apache::loncommon::plainname($tuname,$tudom));
  } else {   } else {
Line 1837  sub storedata { Line 2050  sub storedata {
  &Apache::lonnet::devalidateuserresdata($tuname,$tudom);   &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
     } else {      } else {
  $newdata{$thiskey}=$data;   $newdata{$thiskey}=$data;
                     }     $newdata{$thiskey.'.type'}=$typeof; 
                      } 
  }   }
     } elsif ($cmd eq 'del') {      } elsif ($cmd eq 'del') {
  if ($tuname) {   if ($tuname) {
Line 1853  sub storedata { Line 2067  sub storedata {
  }   }
     } elsif ($cmd eq 'datepointer') {      } elsif ($cmd eq 'datepointer') {
  my $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});   my $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});
                   my $typeof=$env{'form.typeof_'.$thiskey};
  if (defined($data) and $$olddata{$thiskey} ne $data) {    if (defined($data) and $$olddata{$thiskey} ne $data) { 
     if ($tuname) {      if ($tuname) {
  if (&Apache::lonnet::put('resourcedata',{$tkey=>$data},$tudom,$tuname) eq 'ok') {   if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
    $tkey.'.type' => $typeof},
    $tudom,$tuname) eq 'ok') {
     $r->print('<br />'.&mt('Stored modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom));      $r->print('<br />'.&mt('Stored modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom));
  } else {   } else {
     $r->print('<h2><font color="red">'.      $r->print('<h2><font color="red">'.
Line 1863  sub storedata { Line 2080  sub storedata {
  }   }
  &Apache::lonnet::devalidateuserresdata($tuname,$tudom);   &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
     } else {      } else {
  $newdata{$thiskey}=$data;    $newdata{$thiskey}=$data;
    $newdata{$thiskey.'.type'}=$typeof; 
     }      }
  }   }
     }      }
Line 1884  sub storedata { Line 2102  sub storedata {
     }      }
     if ($putentries) {      if ($putentries) {
  if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {   if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {
     $r->print('<h2>'.&mt('Stored [_1] parameter(s)</h2>',$putentries));      $r->print('<h3>'.&mt('Stored [_1] parameter(s)',$putentries/2).'</h3>');
  } else {   } else {
     $r->print('<h2><font color="red">'.      $r->print('<h2><font color="red">'.
       &mt('Error storing parameters').'</font></h2>');        &mt('Error storing parameters').'</font></h2>');
Line 1899  sub extractuser { Line 2117  sub extractuser {
 }  }
   
 sub listdata {  sub listdata {
     my ($r,$resourcedata,$listdata)=@_;      my ($r,$resourcedata,$listdata,$sortorder)=@_;
 # Start list output  # Start list output
   
     my $oldsection='';      my $oldsection='';
Line 1908  sub listdata { Line 2126  sub listdata {
     my $pointer=0;      my $pointer=0;
     $tableopen=0;      $tableopen=0;
     my $foundkeys=0;      my $foundkeys=0;
     foreach my $thiskey (sort keys %{$listdata}) {      foreach my $thiskey (sort {
  if ($$resourcedata{$thiskey.'.type'}) {   if ($sortorder eq 'realmstudent') {
       my ($astudent,$arealm)=($a=~/^$env{'request.course.id'}\.([^\.]+)\.(.+)\.[^\.]+$/);
       my ($bstudent,$brealm)=($b=~/^$env{'request.course.id'}\.([^\.]+)\.(.+)\.[^\.]+$/);
               ($arealm cmp $brealm) || ($astudent cmp $bstudent);
    } else {
       $a cmp $b;
    }
       } keys %{$listdata}) {
    if ($$listdata{$thiskey.'.type'}) {
               my $thistype=$$listdata{$thiskey.'.type'};
               if ($$resourcedata{$thiskey.'.type'}) {
    $thistype=$$resourcedata{$thiskey.'.type'};
       }
     my ($middle,$part,$name)=      my ($middle,$part,$name)=
  ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);   ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
     my $section=&mt('All Students');      my $section=&mt('All Students');
Line 1931  sub listdata { Line 2161  sub listdata {
  my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);   my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);
  $realm='<font color="orange">'.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' <br /><font color="#aaaaaa" size="-2">('.$url.' in '.$map.' id: '.$id.')</font></font>';   $realm='<font color="orange">'.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' <br /><font color="#aaaaaa" size="-2">('.$url.' in '.$map.' id: '.$id.')</font></font>';
     }      }
     if ($section ne $oldsection) {      if ($sortorder eq 'realmstudent') {
  $r->print(&tableend()."\n<hr /><h1>$section</h1>");   if ($realm ne $oldrealm) {
  $oldsection=$section;      $r->print(&tableend()."\n<hr /><h1>$realm</h1>");
  $oldrealm='';      $oldrealm=$realm;
     }      $oldsection='';
     if ($realm ne $oldrealm) {   }
  $r->print(&tableend()."\n<h2>$realm</h2>");   if ($section ne $oldsection) {
  $oldrealm=$realm;      $r->print(&tableend()."\n<h2>$section</h2>");
  $oldpart='';      $oldsection=$section;
       $oldpart='';
    }
       } else {
    if ($section ne $oldsection) {
       $r->print(&tableend()."\n<hr /><h1>$section</h1>");
       $oldsection=$section;
       $oldrealm='';
    }
    if ($realm ne $oldrealm) {
       $r->print(&tableend()."\n<h2>$realm</h2>");
       $oldrealm=$realm;
       $oldpart='';
    }
     }      }
     if ($part ne $oldpart) {      if ($part ne $oldpart) {
  $r->print(&tableend().   $r->print(&tableend().
   "\n<h3><font color='blue'>".&mt('Part').": $part</font></h3>");    "\n<font color='blue'>".&mt('Part').": $part</font>");
  $oldpart=$part;   $oldpart=$part;
     }      }
 #  #
Line 1953  sub listdata { Line 2196  sub listdata {
       ':</b></td><td><input type="checkbox" name="del_'.        ':</b></td><td><input type="checkbox" name="del_'.
       $thiskey.'" /></td><td>');        $thiskey.'" /></td><td>');
     $foundkeys++;      $foundkeys++;
     if ($$resourcedata{$thiskey.'.type'}=~/^date/) {      if (&isdateparm($thistype)) {
  my $jskey='key_'.$pointer;   my $jskey='key_'.$pointer;
  $pointer++;   $pointer++;
  $r->print(   $r->print(
   &Apache::lonhtmlcommon::date_setter('overviewform',    &Apache::lonhtmlcommon::date_setter('overviewform',
       $jskey,        $jskey,
       $$resourcedata{$thiskey}).        $$resourcedata{$thiskey},
         '',1).
 '<input type="hidden" name="datepointer_'.$thiskey.'" value="'.$jskey.'" />'  '<input type="hidden" name="datepointer_'.$thiskey.'" value="'.$jskey.'" />'
   );    );
       } elsif ($thistype eq 'string_yesno') {
    $r->print('<label><input type="radio" name="set_'.$thiskey.
     '" value="yes"');
    if ($$resourcedata{$thiskey} eq 'yes') {
       $r->print(' checked="checked"');
    }
                   $r->print(' />'.&mt('Yes').'</label> ');
    $r->print('<label><input type="radio" name="set_'.$thiskey.
     '" value="no"');
    if ($$resourcedata{$thiskey} eq 'no') {
       $r->print(' checked="checked"');
    }
                   $r->print(' />'.&mt('No').'</label>');
     } else {      } else {
  $r->print(   $r->print('<input type="text" name="set_'.$thiskey.'" value="'.
   '<input type="text" name="set_'.$thiskey.'" value="'.  
   $$resourcedata{$thiskey}.'">');    $$resourcedata{$thiskey}.'">');
     }      }
       $r->print('<input type="hidden" name="typeof_'.$thiskey.'" value="'.
         $thistype.'">');
     $r->print('</td></tr>');      $r->print('</td></tr>');
  }   }
     }      }
Line 1975  sub listdata { Line 2233  sub listdata {
   
 sub newoverview {  sub newoverview {
     my $r=shift;      my $r=shift;
     my $bodytag=&Apache::loncommon::bodytag(      my $bodytag=&Apache::loncommon::bodytag('Set Parameters');
                              'Set Course Assessment Parameters');  
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview');
Line 1988  $html Line 2245  $html
 </head>  </head>
 $bodytag  $bodytag
 $breadcrumbs  $breadcrumbs
 <form method="post" action="/adm/parmset?action=newoverview" name="overviewform">  <form method="post" action="/adm/parmset?action=newoverview" name="parmform">
 ENDOVER  ENDOVER
    $r->print(&tableend().      my @ids=();
      '<p><input type="submit" value="'.&mt('Submit').'" /></p></form></body></html>');      my %typep=();
       my %keyp=();
       my %allparms=();
       my %allparts=();
       my %allmaps=();
       my %mapp=();
       my %symbp=();
       my %maptitles=();
       my %uris=();
       my %keyorder=&standardkeyorder();
       my %defkeytype=();
   
       my %alllevs=();
       $alllevs{'Resource Level'}='full';
       $alllevs{'Map/Folder Level'}='map';
       $alllevs{'Course Level'}='general';
   
       my $csec=$env{'form.csec'};
   
       my @pscat=&Apache::loncommon::get_env_multiple('form.pscat');
       my $pschp=$env{'form.pschp'};
       my @psprt=&Apache::loncommon::get_env_multiple('form.psprt');
       if (!@psprt) { $psprt[0]='0'; }
   
       my @selected_sections = 
    &Apache::loncommon::get_env_multiple('form.Section');
       @selected_sections = ('all') if (! @selected_sections);
       foreach (@selected_sections) {
           if ($_ eq 'all') {
               @selected_sections = ('all');
           }
       }
   
       my $pssymb='';
       my $parmlev='';
    
       unless ($env{'form.parmlev'}) {
           $parmlev = 'map';
       } else {
           $parmlev = $env{'form.parmlev'};
       }
   
       &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps, 
    \%mapp, \%symbp,\%maptitles,\%uris,
    \%keyorder,\%defkeytype);
   
   # Menu to select levels, etc
   
       $r->print('<table border="1"><tr><td>');
       &levelmenu($r,\%alllevs,$parmlev);
       if ($parmlev ne 'general') {
    $r->print('<td>');
    &mapmenu($r,\%allmaps,$pschp,\%maptitles);
    $r->print('</td>');
       }
       $r->print('</td></tr></table>');
   
       $r->print('<table border="1"><tr><td>');  
       &parmmenu($r,\%allparms,\@pscat,\%keyorder);
       $r->print('</td><td>');
       &partmenu($r,\%allparts,\@psprt);
       $r->print('</td><td>');
       &sectionmenu($r,\@selected_sections);
   
       $r->print('</td></tr></table>');
    
       my $sortorder=$env{'form.sortorder'};
       unless ($sortorder) { $sortorder='realmstudent'; }
       &sortmenu($r,$sortorder);
   
       $r->print('<p><input type="submit" name="dis" value="'.&mt('Display').'" /></p>');
   
   # Build the list data hash from the specified parms
   
       my $listdata;
       %{$listdata}=();
   
       foreach my $cat (@pscat) {
    foreach my $section (@selected_sections) {
       foreach my $part (@psprt) {
                   my $rootparmkey=$env{'request.course.id'};
                   if (($section ne 'all') && ($section ne 'none') && ($section)) {
       $rootparmkey.='.['.$section.']';
    }
    if ($parmlev eq 'general') {
   # course-level parameter
       my $newparmkey=$rootparmkey.'.'.$part.'.'.$cat;
       $$listdata{$newparmkey}=1;
       $$listdata{$newparmkey.'.type'}=$defkeytype{$cat};
    } elsif ($parmlev eq 'map') {
   # map-level parameter
       foreach my $mapid (keys %allmaps) {
    if (($pschp ne 'all') && ($pschp ne $mapid)) { next; }
    my $newparmkey=$rootparmkey.'.'.$allmaps{$mapid}.'___(all).'.$part.'.'.$cat;
                           $$listdata{$newparmkey}=1;
                           $$listdata{$newparmkey.'.type'}=$defkeytype{$cat};
       }
    } else {
   # resource-level parameter
       foreach my $rid (@ids) {
    my ($map,$resid,$url)=&Apache::lonnet::decode_symb($symbp{$rid});
    if (($pschp ne 'all') && ($allmaps{$pschp} ne $map)) { next; }
    my $newparmkey=$rootparmkey.'.'.$symbp{$rid}.'.'.$part.'.'.$cat;
                           $$listdata{$newparmkey}=1;
                           $$listdata{$newparmkey.'.type'}=$defkeytype{$cat};
       }
    }
       }
    }
       }
   
       if (($env{'form.store'}) || ($env{'form.dis'})) {
   
    if ($env{'form.store'}) { &storedata($r,$crs,$dom); }
   
   # Read modified data
   
    my $resourcedata=&readdata($crs,$dom);
   
   # List data
   
    &listdata($r,$resourcedata,$listdata,$sortorder);
       }
       $r->print(&tableend().
        ((($env{'form.store'}) || ($env{'form.dis'}))?'<p><input type="submit" name="store" value="'.&mt('Store').'" /></p>':'').
         '</form></body></html>');
 }  }
   
 sub overview {  sub overview {
     my $r=shift;      my $r=shift;
     my $bodytag=&Apache::loncommon::bodytag(      my $bodytag=&Apache::loncommon::bodytag('Modify Parameters');
                              'Modify Course Assessment Parameters');  
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview');
Line 2019  ENDOVER Line 2400  ENDOVER
   
     my $resourcedata=&readdata($crs,$dom);      my $resourcedata=&readdata($crs,$dom);
   
   
       my $sortorder=$env{'form.sortorder'};
       unless ($sortorder) { $sortorder='realmstudent'; }
       &sortmenu($r,$sortorder);
   
 # List data  # List data
   
     my $foundkeys=&listdata($r,$resourcedata,$resourcedata);      my $foundkeys=&listdata($r,$resourcedata,$resourcedata,$sortorder);
   
     $r->print(&tableend().'<p>'.      $r->print(&tableend().'<p>'.
  ($foundkeys?'<input type="submit" value="'.&mt('Modify Parameters').'" />':&mt('There are no parameters.')).'</p></form></body></html>');   ($foundkeys?'<input type="submit" value="'.&mt('Modify Parameters').'" />':&mt('There are no parameters.')).'</p></form></body></html>');
Line 2155  ENDMAINFORMHEAD Line 2541  ENDMAINFORMHEAD
     action => 'crsenv',      action => 'crsenv',
             permission => $parm_permission,              permission => $parm_permission,
             },              },
           { text => 'Set/Modify Course Assessment Parameters - Helper Mode',            { text => 'Set/Modify Resource Parameters - Helper Mode',
             url => '/adm/helper/parameter.helper',              url => '/adm/helper/parameter.helper',
             permission => $parm_permission,              permission => $parm_permission,
             },              },
           { text => 'Modify Course Assessment Parameters - Overview Mode',            { text => 'Modify Resource Parameters - Overview Mode',
             action => 'setoverview',              action => 'setoverview',
             permission => $parm_permission,              permission => $parm_permission,
             },                        },          
   { text => 'Set Course Assessment Parameters - Overview Mode',    { text => 'Set Resource Parameters - Overview Mode',
             action => 'newoverview',              action => 'newoverview',
             permission => $parm_permission,              permission => $parm_permission,
             },              },
           { text => 'Set/Modify Course Assessment Parameters - Table Mode',            { text => 'Set/Modify Resource Parameters - Table Mode',
             action => 'settable',              action => 'settable',
             permission => $parm_permission,              permission => $parm_permission,
             help => 'Cascading_Parameters',              help => 'Cascading_Parameters',
             },              },
 #          { text => 'Set Parameter Default Preferences',            { text => 'Set Parameter Setting Default Actions',
 #            help => 'Course_View_Class_List',              action => 'setdefaults',
 #            action => 'setdefaults',              permission => $parm_permission,
 #            permission => $parm_permission,              },
 #            },  
           );            );
     my $menu_html = '';      my $menu_html = '';
     foreach my $menu_item (@menu) {      foreach my $menu_item (@menu) {
Line 2201  ENDMAINFORMHEAD Line 2586  ENDMAINFORMHEAD
 }  }
   
   
   ##################################################
   
   sub defaultsetter {
       my $r=shift;
       my $bodytag=&Apache::loncommon::bodytag('Parameter Setting Default Actions');
       my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
       my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Defaults');
       my $html=&Apache::lonxml::xmlbegin();
       $r->print(<<ENDDEFHEAD);
   $html
   <head>
   <title>LON-CAPA Parameters</title>
   </head>
   $bodytag
   $breadcrumbs
   <form method="post" action="/adm/parmset?action=setdefaults" name="defaultform">
   ENDDEFHEAD
       my @ids=();
       my %typep=();
       my %keyp=();
       my %allparms=();
       my %allparts=();
       my %allmaps=();
       my %mapp=();
       my %symbp=();
       my %maptitles=();
       my %uris=();
       my %keyorder=&standardkeyorder();
       my %defkeytype=();
   
       &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps, 
    \%mapp, \%symbp,\%maptitles,\%uris,
    \%keyorder,\%defkeytype);
       if ($env{'form.storerules'}) {
    my %newrules=();
    my @delrules=();
    my %triggers=();
    foreach my $key (keys(%env)) {
               if ($key=~/^form\.(\w+)\_action$/) {
    my $tempkey=$1;
    my $action=$env{$key};
                   if ($action) {
       $newrules{$tempkey.'_action'}=$action;
       if ($action ne 'default') {
    my ($whichaction,$whichparm)=($action=~/^(.*\_)([^\_]+)$/);
    $triggers{$whichparm}.=$tempkey.':';
       }
       $newrules{$tempkey.'_type'}=$defkeytype{$tempkey};
       if (&isdateparm($defkeytype{$tempkey})) {
    $newrules{$tempkey.'_days'}=$env{'form.'.$tempkey.'_days'};
    $newrules{$tempkey.'_hours'}=$env{'form.'.$tempkey.'_hours'};
    $newrules{$tempkey.'_min'}=$env{'form.'.$tempkey.'_min'};
    $newrules{$tempkey.'_sec'}=$env{'form.'.$tempkey.'_sec'};
       } else {
    $newrules{$tempkey.'_value'}=$env{'form.'.$tempkey.'_value'};
    $newrules{$tempkey.'_triggervalue'}=$env{'form.'.$tempkey.'_triggervalue'};
       }
    } else {
       push(@delrules,$tempkey.'_action');
       push(@delrules,$tempkey.'_type');
       push(@delrules,$tempkey.'_hours');
       push(@delrules,$tempkey.'_min');
       push(@delrules,$tempkey.'_sec');
       push(@delrules,$tempkey.'_value');
    }
       }
    }
    foreach my $key (keys %allparms) {
       $newrules{$key.'_triggers'}=$triggers{$key};
    }
    &Apache::lonnet::put('parmdefactions',\%newrules,$dom,$crs);
    &Apache::lonnet::del('parmdefactions',\@delrules,$dom,$crs);
    &resetrulescache();
       }
       my %lt=&Apache::lonlocal::texthash('days' => 'Days',
          'hours' => 'Hours',
          'min' => 'Minutes',
          'sec' => 'Seconds',
          'yes' => 'Yes',
          'no' => 'No');
       my @standardoptions=('','default');
       my @standarddisplay=('',&mt('Default value when manually setting'));
       my @dateoptions=('','default');
       my @datedisplay=('',&mt('Default value when manually setting'));
       foreach my $tempkey (&keysindisplayorder(\%allparms,\%keyorder)) {
    unless ($tempkey) { next; }
    push @standardoptions,'when_setting_'.$tempkey;
    push @standarddisplay,&mt('Automatically set when setting ').$tempkey;
    if (&isdateparm($defkeytype{$tempkey})) {
       push @dateoptions,'later_than_'.$tempkey;
       push @datedisplay,&mt('Automatically set later than ').$tempkey;
       push @dateoptions,'earlier_than_'.$tempkey;
       push @datedisplay,&mt('Automatically set earlier than ').$tempkey;
    } 
       }
       $r->print("\n<table border='1'><tr><th>".&mt('Rule for parameter').'</th><th>'.
         &mt('Action').'</th><th>'.&mt('Value').'</th></tr>');
       foreach my $tempkey (&keysindisplayorder(\%allparms,\%keyorder)) {
    unless ($tempkey) { next; }
    $r->print("\n<tr><td>".$allparms{$tempkey}."\n<br />(".$tempkey.')</td><td>');
    my $action=&rulescache($tempkey.'_action');
    $r->print('<select name="'.$tempkey.'_action">');
    if (&isdateparm($defkeytype{$tempkey})) {
       for (my $i=0;$i<=$#dateoptions;$i++) {
    if ($dateoptions[$i]=~/\_$tempkey$/) { next; }
    $r->print("\n<option value='$dateoptions[$i]'".
     ($dateoptions[$i] eq $action?' selected="selected"':'').
     ">$datedisplay[$i]</option>");
       }
    } else {
       for (my $i=0;$i<=$#standardoptions;$i++) {
    if ($standardoptions[$i]=~/\_$tempkey$/) { next; }
    $r->print("\n<option value='$standardoptions[$i]'".
     ($standardoptions[$i] eq $action?' selected="selected"':'').
     ">$standarddisplay[$i]</option>");
       }
    }
    $r->print('</select>');
    unless (&isdateparm($defkeytype{$tempkey})) {
       $r->print("\n<br />".&mt('Triggering value(s) of other parameter (optional, comma-separated):').
         '<input type="text" size="20" name="'.$tempkey.'_triggervalue" value="'.&rulescache($tempkey.'_triggervalue').'" />');
    }
    $r->print("\n</td><td>\n");
   
           if (&isdateparm($defkeytype{$tempkey})) {
       my $days=&rulescache($tempkey.'_days');
       my $hours=&rulescache($tempkey.'_hours');
       my $min=&rulescache($tempkey.'_min');
       my $sec=&rulescache($tempkey.'_sec');
       $r->print(<<ENDINPUTDATE);
   <input name="$tempkey\_days" type="text" size="4" value="$days" />$lt{'days'}<br />
   <input name="$tempkey\_hours" type="text" size="4" value="$hours" />$lt{'hours'}<br />
   <input name="$tempkey\_min" type="text" size="4" value="$min" />$lt{'min'}<br />
   <input name="$tempkey\_sec" type="text" size="4" value="$sec" />$lt{'sec'}
   ENDINPUTDATE
    } elsif ($defkeytype{$tempkey} eq 'string_yesno') {
               my $yeschecked='';
               my $nochecked='';
               if (&rulescache($tempkey.'_value') eq 'yes') { $yeschecked='checked="checked"'; }
               if (&rulescache($tempkey.'_value') eq 'no') { $nochecked='checked="checked"'; }
   
       $r->print(<<ENDYESNO);
   <label><input type="radio" name="$tempkey\_value" value="yes" $yeschecked /> $lt{'yes'}</label><br />
   <label><input type="radio" name="$tempkey\_value" value="no" $nochecked /> $lt{'no'}</label>
   ENDYESNO
           } else {
       $r->print('<input type="text" size="20" name="'.$tempkey.'_value" value="'.&rulescache($tempkey.'_value').'" />');
    }
           $r->print('</td></tr>');
       }
       $r->print("</table>\n<input type='submit' name='storerules' value='".
         &mt('Store Rules')."' /></form>\n</body>\n</html>");
       return;
   }
   
 ##################################################  ##################################################
 ##################################################  ##################################################
Line 2215  Main handler.  Calls &assessparms and &c Line 2754  Main handler.  Calls &assessparms and &c
 =cut  =cut
 ##################################################  ##################################################
 ##################################################  ##################################################
     use Data::Dumper;  #    use Data::Dumper;
   
 sub handler {  sub handler {
     my $r=shift;      my $r=shift;
   
Line 2229  sub handler { Line 2769  sub handler {
                                              'pres_marker',                                               'pres_marker',
                                              'pres_value',                                               'pres_value',
                                              'pres_type',                                               'pres_type',
                                              'udom','uname']);                                               'udom','uname','symb']);
   
   
     &Apache::lonhtmlcommon::clear_breadcrumbs();      &Apache::lonhtmlcommon::clear_breadcrumbs();
Line 2271  sub handler { Line 2811  sub handler {
         } elsif ($env{'form.action'} eq 'crsenv' && $parm_permission) {          } elsif ($env{'form.action'} eq 'crsenv' && $parm_permission) {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv',              &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv',
     text=>"Course Environment"});      text=>"Course Environment"});
             $r->print(&Apache::lonhtmlcommon::breadcrumbs(undef,  
    'Edit Course Environment'));  
             &crsenv($r);               &crsenv($r); 
         } elsif ($env{'form.action'} eq 'setoverview' && $parm_permission) {          } elsif ($env{'form.action'} eq 'setoverview' && $parm_permission) {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',              &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
Line 2282  sub handler { Line 2820  sub handler {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',              &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
     text=>"Overview Mode"});      text=>"Overview Mode"});
     &newoverview($r);      &newoverview($r);
         } elsif ($env{'form.action'} eq 'settable' && $parm_permission) {          }  elsif ($env{'form.action'} eq 'setdefaults' && $parm_permission) {
               &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setdefaults',
       text=>"Set Defaults"});
       &defaultsetter($r);
    } elsif ($env{'form.action'} eq 'settable' && $parm_permission) {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',              &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
     text=>"Table Mode",      text=>"Table Mode",
     help => 'Course_Setting_Parameters'});      help => 'Course_Setting_Parameters'});

Removed from v.1.209  
changed lines
  Added in v.1.227


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