Diff for /loncom/interface/lonparmset.pm between versions 1.105 and 1.130

version 1.105, 2003/06/20 14:34:04 version 1.130, 2003/10/09 01:40:05
Line 61  use Apache::loncommon; Line 61  use Apache::loncommon;
 use GDBM_File;  use GDBM_File;
 use Apache::lonhomework;  use Apache::lonhomework;
 use Apache::lonxml;  use Apache::lonxml;
   use Apache::lonlocal;
   
 my %courseopt;  my %courseopt;
 my %useropt;  my %useropt;
Line 287  sub plink { Line 287  sub plink {
 sub startpage {  sub startpage {
     my ($r,$id,$udom,$csec,$uname,$have_assesments)=@_;      my ($r,$id,$udom,$csec,$uname,$have_assesments)=@_;
   
     my $bodytag=&Apache::loncommon::bodytag('Set Course Parameters','',      my $bodytag=&Apache::loncommon::bodytag('Set/Modify Course Parameters','',
                                             'onUnload="pclose()"');                                              'onUnload="pclose()"');
     my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '.      my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '.
         &Apache::loncommon::selectstudent_link('parmform','uname','udom');          &Apache::loncommon::selectstudent_link('parmform','uname','udom');
Line 343  $selscript Line 343  $selscript
 $bodytag  $bodytag
   
 <form method="post" action="/adm/parmset" name="envform">  <form method="post" action="/adm/parmset" name="envform">
 <h3>Course Environment</h3>  <h4>Course Environment Parameters</h4>
 <input type="submit" name="crsenv" value="Set Course Environment">  <input type="submit" name="crsenv" value="Set Course Environment Parameters" />
   </form>
   <hr />
   <form method="post" action="/adm/helper/parameter.helper" name="helpform">
   <h4>Course Assessment Parameter - Helper Mode</h4>
   <input type="submit" value="Set/Modify Course Assessment Parameter" />
   </form>
   <hr />
   <form method="post" action="/adm/parmset" name="overview">
   <h4>Course Assessment Parameters - Overview Mode</h4>
   <input type="submit" name="overview" value="Modify Course Assessment Parameters" />
 </form>  </form>
 <hr />  <hr />
 <form method="post" action="/adm/parmset" name="parmform">  <form method="post" action="/adm/parmset" name="parmform">
 <h3>Course Assessments</h3>  <h4>Course Assessments Parameters - Table Mode</h4>
   
 <a href="/adm/helper/parameter.helper">Use Assignment Parameter Helper</a>, a  
 simpler interface to set open, due, or answer open dates for problems or  
 sequences.<br />&nbsp;<br />  
 ENDHEAD  ENDHEAD
   
     if (!$have_assesments) {      if (!$have_assesments) {
Line 488  sub print_row { Line 494  sub print_row {
 sub print_td {  sub print_td {
     my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$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($$typeoutpar[$which],$$display{$value},$$outpar[$which],      if ($which<10) {
                      $mprefix."$which",'parmform.pres','psub').'</td>'."\n");   $r->print(&plink($$typeoutpar[$which],
    $$display{$value},$$outpar[$which],
    $mprefix."$which",'parmform.pres','psub'));
       } else {
    $r->print(&valout($$outpar[$which],$$typeoutpar[$which]));
       }
       $r->print('</td>'."\n");
 }  }
   
 sub get_env_multiple {  sub get_env_multiple {
Line 641  sub assessparms { Line 653  sub assessparms {
   
     my $r=shift;      my $r=shift;
 # -------------------------------------------------------- Variable declaration  # -------------------------------------------------------- Variable declaration
     my %allkeys;      my %allkeys=();
     my %allmaps;      my %allmaps=();
     my %alllevs;      my %alllevs=();
   
     $alllevs{'Resource Level'}='full';      $alllevs{'Resource Level'}='full';
 #    $alllevs{'Resource Level [BRIEF]'}='brief';  #    $alllevs{'Resource Level [BRIEF]'}='brief';
Line 852  sub assessparms { Line 864  sub assessparms {
     $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>';   $message.='<h3>'.&mt('Changes can take up to 10 minutes before being active for all students.').&Apache::loncommon::help_open_topic('Caching').'</h3>';
     }      }
 # --------------------------------------------- Devalidate cache for this child  # --------------------------------------------- Devalidate cache for this child
         &Apache::lonnet::devalidatecourseresdata(      &Apache::lonnet::devalidatecourseresdata(
                  $ENV{'course.'.$ENV{'request.course.id'}.'.num'},                   $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
                  $ENV{'course.'.$ENV{'request.course.id'}.'.domain'});                   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'});
       &Apache::lonnet::clear_EXT_cache_status();
 # -------------------------------------------------------------- Get coursedata  # -------------------------------------------------------------- Get coursedata
     %courseopt = &Apache::lonnet::dump      %courseopt = &Apache::lonnet::dump
         ('resourcedata',          ('resourcedata',
Line 891  sub assessparms { Line 904  sub assessparms {
   
     &startpage($r,$id,$udom,$csec,$uname,$have_assesments);      &startpage($r,$id,$udom,$csec,$uname,$have_assesments);
   
     if (!$have_assesments) { return ''; }      if (!$have_assesments) {
    untie(%bighash);
    untie(%parmhash);
    return '';
       }
 #    if ($ENV{'form.url'}) {  #    if ($ENV{'form.url'}) {
 # $r->print('<input type="hidden" value="'.$ENV{'form.url'}.  # $r->print('<input type="hidden" value="'.$ENV{'form.url'}.
 #  '" name="url"><input type="hidden" name="command" value="set">');  #  '" name="url"><input type="hidden" name="command" value="set">');
Line 906  sub assessparms { Line 923  sub assessparms {
   
     $r->print('<h2>'.$message.'</h2><table>');      $r->print('<h2>'.$message.'</h2><table>');
                                                   
     my $submitmessage;      my $submitmessage = &mt('Update Section or Specific User');
     if (!$pssymb) {      if (!$pssymb) {
         $r->print('<tr><td>Select Parameter Level</td><td colspan="2">');          $r->print('<tr><td>'.&mt('Select Parameter Level').'</td><td colspan="2">');
         $r->print('<select name="parmlev">');          $r->print('<select name="parmlev">');
         foreach (reverse sort keys %alllevs) {          foreach (reverse sort keys %alllevs) {
             $r->print('<option value="'.$alllevs{$_}.'"');              $r->print('<option value="'.$alllevs{$_}.'"');
Line 920  sub assessparms { Line 937  sub assessparms {
         $r->print("</select></td>\n");          $r->print("</select></td>\n");
   
         $r->print('</tr>');          $r->print('</tr>');
    if ($parmlev ne 'general') {
         $r->print('<tr><td>Select Enclosing Map or Folder</td>');      $r->print('<tr><td>'.&mt('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 or Folders</option>');      $r->print('<option value="all">'.&mt('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('>'.$maptitles{$_}.($allmaps{$_}!~/^uploaded/?'  ['.$allmaps{$_}.']':'').'</option>');   $r->print('>'.$maptitles{$_}.($allmaps{$_}!~/^uploaded/?'  ['.$allmaps{$_}.']':'').'</option>');
         }      }
         $r->print("</select></td></tr>\n");      $r->print("</select></td></tr>\n");
    }
     } else {      } else {
         my ($map,$id,$resource)=split(/___/,$pssymb);          my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb);
         $r->print("<tr><td>Specific Resource</td><td>$resource</td>");          $r->print("<tr><td>".&mt('Specific Resource')."</td><td>$resource</td>");
         $r->print('<td><input type="submit" name="dis" value="'.$submitmessage.'"></td>');          $r->print('<td><input type="submit" name="dis" value="'.$submitmessage.'"></td>');
         $r->print('</tr>');          $r->print('</tr>');
         $r->print('<input type="hidden" value="'.$pssymb.'" name="symb">');          $r->print('<input type="hidden" value="'.$pssymb.'" name="symb">');
Line 940  sub assessparms { Line 958  sub assessparms {
   
     $r->print('<tr><td colspan="3"><hr /><input type="checkbox"');      $r->print('<tr><td colspan="3"><hr /><input type="checkbox"');
     if ($showoptions eq 'show') {$r->print(" checked ");}      if ($showoptions eq 'show') {$r->print(" checked ");}
     $r->print(' name="showoptions" value="show">Show More Options<hr /></td></tr>');      $r->print(' name="showoptions" value="show">'.&mt('Show More Options').'<hr /></td></tr>');
 #    $r->print("<tr><td>Show: $showoptions</td></tr>");  #    $r->print("<tr><td>Show: $showoptions</td></tr>");
 #    $r->print("<tr><td>pscat: @pscat</td></tr>");  #    $r->print("<tr><td>pscat: @pscat</td></tr>");
 #    $r->print("<tr><td>psprt: @psprt</td></tr>");  #    $r->print("<tr><td>psprt: @psprt</td></tr>");
Line 949  sub assessparms { Line 967  sub assessparms {
     if ($showoptions eq 'show') {      if ($showoptions eq 'show') {
         my $tempkey;          my $tempkey;
   
         $r->print('<tr><td colspan="3" align="center">Select Parameters to View</td></tr>');          $r->print('<tr><td colspan="3" align="center">'.&mt('Select Parameters to View').'</td></tr>');
   
         $r->print('<tr><td colspan="2"><table>');          $r->print('<tr><td colspan="2"><table>');
         $r->print('<tr><td><input type="checkbox" name="pscat" value="all"');          $r->print('<tr><td><input type="checkbox" name="pscat" value="all"');
         $r->print(' checked') unless (@pscat);          $r->print(' checked') unless (@pscat);
         $r->print('>All Parameters</td>');          $r->print('>'.&mt('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} }
Line 974  sub assessparms { Line 992  sub assessparms {
         $r->print('<td><select multiple name="psprt" size="5">');          $r->print('<td><select multiple name="psprt" size="5">');
         $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('>'.&mt('All Parts').'</option>');
         my %temphash=();          my %temphash=();
         foreach (@psprt) { $temphash{$_}=1; }          foreach (@psprt) { $temphash{$_}=1; }
         foreach $tempkey (sort keys %allparts) {          foreach $tempkey (sort keys %allparts) {
Line 988  sub assessparms { Line 1006  sub assessparms {
         }          }
         $r->print('</select></td></tr><tr><td colspan="3"><hr /></td></tr>');          $r->print('</select></td></tr><tr><td colspan="3"><hr /></td></tr>');
   
         $r->print('<tr><td>Sort list by</td><td>');          $r->print('<tr><td>'.&mt('Sort list by').'</td><td>');
         $r->print('<select name="fcat">');          $r->print('<select name="fcat">');
         $r->print('<option value="">Enclosing Map or Folder</option>');          $r->print('<option value="">'.&mt('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 1027  sub assessparms { Line 1045  sub assessparms {
     }      }
     $r->print('</table><br />');      $r->print('</table><br />');
     if (($prevvisit) || ($pschp) || ($pssymb)) {      if (($prevvisit) || ($pschp) || ($pssymb)) {
         $submitmessage = "Update Course Assessment Parameter Display";          $submitmessage = &mt("Update Course Assessment Parameter Display");
     } else {      } else {
         $submitmessage = "Set Course Assessment Parameters";          $submitmessage = &mt("Set/Modify Course Assessment Parameters");
     }      }
     $r->print('<input type="submit" name="dis" value="'.$submitmessage.'">');      $r->print('<input type="submit" name="dis" value="'.$submitmessage.'">');
   
Line 1058  sub assessparms { Line 1076  sub assessparms {
            my $coursespan=$csec?8:5;             my $coursespan=$csec?8:5;
            $r->print('<p><table border=2>');             $r->print('<p><table border=2>');
            $r->print('<tr><td colspan=5></td>');             $r->print('<tr><td colspan=5></td>');
            $r->print('<th colspan='.($coursespan).'>Any User</th>');             $r->print('<th colspan='.($coursespan).'>'.&mt('Any User').'</th>');
            if ($uname) {             if ($uname) {
                $r->print("<th colspan=3 rowspan=2>");                 $r->print("<th colspan=3 rowspan=2>");
                $r->print("User $uname at Domain $udom</th>");                 $r->print(&mt("User")." $uname ".&mt('at Domain')." $udom</th>");
            }             }
            $r->print(<<ENDTABLETWO);             $r->print(<<ENDTABLETWO);
 <th rowspan=3>Parameter in Effect</th>  <th rowspan=3>Parameter in Effect</th>
Line 1080  ENDTABLETWO Line 1098  ENDTABLETWO
 ENDTABLEHEADFOUR  ENDTABLEHEADFOUR
   
            if ($csec) {             if ($csec) {
                $r->print('<th>general</th><th>for Enclosing Map or Folder</th><th>for Resource</th>');                 $r->print('<th>'.&mt('general').'</th><th>'.&mt('for Enclosing Map or Folder').'</th><th>'.&mt('for Resource').'</th>');
            }             }
   
            if ($uname) {             if ($uname) {
                $r->print('<th>general</th><th>for Enclosing Map or Folder</th><th>for Resource</th>');                 $r->print('<th>'.&mt('general').'</th><th>'.&mt('for Enclosing Map or Folder').'</th><th>'.&mt('for Resource').'</th>');
            }             }
   
            $r->print('</tr>');             $r->print('</tr>');
Line 1135  ENDTABLEHEADFOUR Line 1153  ENDTABLEHEADFOUR
                     my $totalparms=scalar keys %name;                      my $totalparms=scalar keys %name;
                     if ($totalparms>0) {                      if ($totalparms>0) {
                         my $firstrow=1;                          my $firstrow=1;
    my $title=$bighash{'title_'.$rid};
    $title=~s/\&colon;/:/g;
                         $r->print('<tr><td bgcolor='.$defbgone.                          $r->print('<tr><td bgcolor='.$defbgone.
                              ' rowspan='.$totalparms.                               ' rowspan='.$totalparms.
                              '><tt><font size=-1>'.                               '><tt><font size=-1>'.
Line 1143  ENDTABLEHEADFOUR Line 1162  ENDTABLEHEADFOUR
                              '</font></tt><p><b>'.                               '</font></tt><p><b>'.
                              "<a href=\"javascript:openWindow('/res/".$uri.                               "<a href=\"javascript:openWindow('/res/".$uri.
                              "', 'metadatafile', '450', '500', 'no', 'yes')\";".                               "', 'metadatafile', '450', '500', 'no', 'yes')\";".
                              " TARGET=_self>$bighash{'title_'.$rid}");                               " TARGET=_self>$title");
   
                         if ($thistitle) {                          if ($thistitle) {
                             $r->print(' ('.$thistitle.')');                              $r->print(' ('.$thistitle.')');
Line 1258  ENDMAPONE Line 1277  ENDMAPONE
                       ('firstname','middlename','lastname','generation', 'id'));                        ('firstname','middlename','lastname','generation', 'id'));
                     my $person=$name{'firstname'}.' '.$name{'middlename'}.' '                      my $person=$name{'firstname'}.' '.$name{'middlename'}.' '
                            .$name{'lastname'}.' '.$name{'generation'};                             .$name{'lastname'}.' '.$name{'generation'};
                     $r->print("User <i>$uname \($person\) </i> in \n");                      $r->print(&mt("User")." <i>$uname \($person\) </i> ".
                           &mt('in')." \n");
                 } else {                  } else {
                     $r->print("<i>all</i> users in \n");                      $r->print("<i>".&mt('all').'</i> '.&mt('users in')." \n");
                 }                  }
                           
                 if ($csec) {$r->print("Section <i>$csec</i> of \n")};                  if ($csec) {$r->print(&mt("Section")." <i>$csec</i> ".
         &mt('of')." \n")};
   
                 $r->print("<i>$coursename</i><br />");                  $r->print("<i>$coursename</i><br />");
                 $r->print("</font></h4>\n");                  $r->print("</font></h4>\n");
 #---------------------------------------------------------------- print table  #---------------------------------------------------------------- print table
                 $r->print('<p><table border="2">');                  $r->print('<p><table border="2">');
                 $r->print('<tr><th>Parameter Name</th>');                  $r->print('<tr><th>'.&mt('Parameter Name').'</th>');
                 $r->print('<th>Default Value</th>');                  $r->print('<th>'.&mt('Default Value').'</th>');
                 $r->print('<th>Parameter in Effect</th></tr>');                  $r->print('<th>'.&mt('Parameter in Effect').'</th></tr>');
   
         foreach (sort keys %name) {          foreach (sort keys %name) {
                     &print_row($r,$_,\%part,\%name,$mapid,\%default,                      &print_row($r,$_,\%part,\%name,$mapid,\%default,
Line 1337  ENDMAPONE Line 1358  ENDMAPONE
                   ('firstname','middlename','lastname','generation', 'id'));                    ('firstname','middlename','lastname','generation', 'id'));
                 my $person=$name{'firstname'}.' '.$name{'middlename'}.' '                  my $person=$name{'firstname'}.' '.$name{'middlename'}.' '
                        .$name{'lastname'}.' '.$name{'generation'};                         .$name{'lastname'}.' '.$name{'generation'};
                 $r->print(" User <i>$uname \($person\) </i> \n");                  $r->print(" ".&mt("User")." <i>$uname \($person\) </i> \n");
             } else {              } else {
                 $r->print("<i>ALL</i> USERS \n");                  $r->print("<i>".&mt("ALL")."</i> ".&mt("USERS")." \n");
             }              }
                           
             if ($csec) {$r->print("Section <i>$csec</i>\n")};              if ($csec) {$r->print(&mt("Section")." <i>$csec</i>\n")};
             $r->print("</font></h4>\n");              $r->print("</font></h4>\n");
 #---------------------------------------------------------------- print table  #---------------------------------------------------------------- print table
             $r->print('<p><table border="2">');              $r->print('<p><table border="2">');
             $r->print('<tr><th>Parameter Name</th>');              $r->print('<tr><th>'.&mt('Parameter Name').'</th>');
             $r->print('<th>Default Value</th>');              $r->print('<th>'.&mt('Default Value').'</th>');
             $r->print('<th>Parameter in Effect</th></tr>');              $r->print('<th>'.&mt('Parameter in Effect').'</th></tr>');
   
     foreach (sort keys %name) {      foreach (sort keys %name) {
                 &print_row($r,$_,\%part,\%name,$mapid,\%default,                  &print_row($r,$_,\%part,\%name,$mapid,\%default,
Line 1404  sub crsenv { Line 1425  sub crsenv {
             my $bkuptime=time;              my $bkuptime=time;
             my @tmp = &Apache::lonnet::get              my @tmp = &Apache::lonnet::get
                 ('environment',['url'],$dom,$crs);                  ('environment',['url'],$dom,$crs);
             $setoutput.='Backing up previous URL: '.              $setoutput.=&mt('Backing up previous URL').': '.
                 &Apache::lonnet::put                  &Apache::lonnet::put
                 ('environment',                  ('environment',
                  {'top level map backup '.$bkuptime => $tmp[1] },                   {'top level map backup '.$bkuptime => $tmp[1] },
Line 1433  sub crsenv { Line 1454  sub crsenv {
             }              }
         }          }
         #          #
           # Deal with the enrollment dates
           if ($name =~ /^default_enrollment_(start|end)_date$/) {
               $value=&Apache::lonhtmlcommon::get_date_from_form($name.'_value');
           }
           #
         # Let the user know we made the changes          # Let the user know we made the changes
         if ($name) {          if ($name) {
             my $put_result = &Apache::lonnet::put('environment',              my $put_result = &Apache::lonnet::put('environment',
                                                   {$name=>$value},$dom,$crs);                                                    {$name=>$value},$dom,$crs);
             if ($put_result eq 'ok') {              if ($put_result eq 'ok') {
                 $setoutput.='Set <b>'.$name.'</b> to <b>'.$value.'</b>.<br />';                  $setoutput.=&mt('Set').' <b>'.$name.'</b> '.&mt('to').' <b>'.$value.'</b>.<br />';
             } else {              } else {
                 $setoutput.='Unable to set <b>'.$name.'</b> to '.                  $setoutput.=&mt('Unable to set').' <b>'.$name.'</b> '.&mt('to').
                     '<b>'.$value.'</b> due to '.$put_result.'.<br />';      ' <b>'.$value.'</b> '.&mt('due to').' '.$put_result.'.<br />';
             }              }
         }          }
     }      }
   # ------------------------- Re-init course environment entries for this session
   
       &Apache::lonnet::coursedescription($ENV{'request.course.id'});
   
 # -------------------------------------------------------- Get parameters again  # -------------------------------------------------------- Get parameters again
   
Line 1461  sub crsenv { Line 1490  sub crsenv {
              '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)',
                'grading'        => '<b>Grading</b>'.
                                    '"standard" or any other value.  '.
                                    'Default for new courses is "standard".',
   
              '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'".
Line 1477  sub crsenv { Line 1510  sub crsenv {
              '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, '.
                                  'changes will not show until next login)',                                   'changes will not show until next login)',
   
                'plc.roles.denied'=> '<b>Disallow live chatroom use for '.
                                     'Roles</b><br />"<tt>st</tt>": '.
                                     'student, "<tt>ta</tt>": '.
                                     'TA, "<tt>in</tt>": '.
                                     'instructor;<br /><tt>role,role,...</tt>) '.
          Apache::loncommon::help_open_topic("Course_Disable_Discussion"),
                'plc.users.denied' => 
                             '<b>Disallow live chatroom use for Users</b><br />'.
                                    '(<tt>user:domain,user:domain,...</tt>)',
   
              '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>": '.
Line 1503  sub crsenv { Line 1547  sub crsenv {
                     ",'spreadsheet')\">Select Spreadsheet File</a><br />",                      ",'spreadsheet')\">Select Spreadsheet File</a><br />",
      'allow_limited_html_in_feedback'       'allow_limited_html_in_feedback'
          => '<b>Allow limited HTML in discussion posts</b><br />'.           => '<b>Allow limited HTML in discussion posts</b><br />'.
             '(Set value to yes to allow)',              '(Set value to "<tt>yes</tt>" to allow)',
      'rndseed'       'rndseed'
          => '<b>Randomization algorithm used</b> <br />'.           => '<b>Randomization algorithm used</b> <br />'.
                     '<font color="red">Modifying this will make problems '.                      '<font color="red">Modifying this will make problems '.
                     'have different numbers and answers</font>',                      'have different numbers and answers</font>',
              'problem_stream_switch'               'problem_stream_switch'
                  => '<b>Allow problems to be split over pages</b><br />'.                   => '<b>Allow problems to be split over pages</b><br />'.
                     ' (<tt><b>yes</b> if allow anything else if not</tt>)'                      ' ("<tt>yes</tt>" if allowed, anything else if not)',
              );               'anonymous_quiz'
  foreach (keys(%values)) {                   => '<b>Anonimous quiz/exam</b><br />'.
     unless ($descriptions{$_}) {                      ' (<tt><b>yes</b> to avoid print students names </tt>)',
  $descriptions{$_}=$_;               'default_enrollment_start_date' => '<b>Default beginning date '.
                                                   'when enrolling students</b>',
                'default_enrollment_end_date'   => '<b>Default ending date '.
                                                   'when enrolling students</b>',
                'languages' => '<b>Languages used</b>',
                'disable_receipt_display'
                    => '<b>Disable display of problem receipts</b><br />'.
                       ' ("<tt>yes</tt>" to disable, anything else if not)'
                ); 
           my @Display_Order = ('url','description','courseid','grading',
                                'default_xml_style','pageseparators',
                                'question.email','comment.email','policy.email',
                                'plc.roles.denied','plc.users.denied',
                                'pch.roles.denied','pch.users.denied',
                                'allow_limited_html_in_feedback',
                                'languages',
                                'rndseed',
                                'problem_stream_switch',
                                'disable_receipt_display',
                                'spreadsheet_default_classcalc',
                                'spreadsheet_default_studentcalc',
                                'spreadsheet_default_assesscalc', 
                                'hideemptyrows',
                                'default_enrollment_start_date',
                                'default_enrollment_end_date',
                                );
    foreach my $parameter (sort(keys(%values))) {
       if (! $descriptions{$parameter}) {
                   $descriptions{$parameter}=$parameter;
                   push(@Display_Order,$parameter);
     }      }
  }   }
  foreach (sort keys %descriptions) {          foreach my $parameter (@Display_Order) {
               my $description = $descriptions{$parameter};
             # onchange is javascript to automatically check the 'Set' button.              # onchange is javascript to automatically check the 'Set' button.
             my $onchange = 'onFocus="javascript:window.document.forms'.              my $onchange = 'onFocus="javascript:window.document.forms'.
                 '[\'envform\'].elements[\''.$_.'_setparmval\']'.                  "['envform'].elements['".$parameter."_setparmval']".
                 '.checked=true;"';                  '.checked=true;"';
     $output.='<tr><td>'.$descriptions{$_}.'</td>'.              $output .= '<tr><td>'.$description.'</td>';
                 '<td><input name="'.$_.'_value" size=40 '.              if ($parameter =~ /^default_enrollment_(start|end)_date$/) {
                 'value="'.$values{$_}.'" '.$onchange.' /></td>'.                  $output .= '<td>'.
                 '<td><input type=checkbox name="'.$_.'_setparmval"></td>'.                      &Apache::lonhtmlcommon::date_setter('envform',
                 '</tr>'."\n";                                                          $parameter.'_value',
                                                           $values{$parameter},
                                                           $onchange).
                                                           '</td>';
               } else {
                   $output .= '<td>'.
                       &Apache::lonhtmlcommon::textbox($parameter.'_value',
                                                       $values{$parameter},
                                                       40,$onchange).'</td>';
               }
               $output .= '<td>'.
                   &Apache::lonhtmlcommon::checkbox($parameter.'_setparmval').
                   '</td>';
               $output .= "</tr>\n";
  }   }
         my $onchange = 'onFocus="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>'.&mt('Create New Environment Variable').'</i><br />'.
     '<input type="text" size=40 name="newp_name" '.      '<input type="text" size=40 name="newp_name" '.
                 $onchange.' /></td><td>'.                  $onchange.' /></td><td>'.
             '<input type="text" size=40 name="newp_value" '.              '<input type="text" size=40 name="newp_value" '.
Line 1581  $output Line 1668  $output
 </html>      </html>    
 ENDENV  ENDENV
 }  }
   ##################################################
   
   my $tableopen;
   
   sub tablestart {
       if ($tableopen) {
    return '';
       } else {
    $tableopen=1;
    return '<table border="2"><tr><th>'.&mt('Parameter').'</th><th>'.
       &mt('Delete').'</th><th>'.&mt('Set to ...').'</th></tr>';
       }
   }
   
   sub tableend {
       if ($tableopen) {
    $tableopen=0;
    return '</table>';
       } else {
    return'';
       }
   }
   
   sub overview {
       my $r=shift;
       my $bodytag=&Apache::loncommon::bodytag(
                                'Set/Modify Course Assessment Parameters');
       my $dom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
       my $crs = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};
       $r->print(<<ENDOVER);
   <html>
   <head>
   <title>LON-CAPA Course Environment</title>
   </head>
   $bodytag
   <form method="post" action="/adm/parmset" name="overviewform">
   <input type="hidden" name="overview" value="1" />
   ENDOVER
   # Setting
       my %olddata=&Apache::lonnet::dump('resourcedata',$dom,$crs);
       my %newdata=();
       undef %newdata;
       my @deldata=();
       undef @deldata;
       foreach (keys %ENV) {
    if ($_=~/^form\.([a-z]+)\_(.+)$/) {
       my $cmd=$1;
       my $thiskey=$2;
       if ($cmd eq 'set') {
    my $data=$ENV{$_};
    if ($olddata{$thiskey} ne $data) { $newdata{$thiskey}=$data; }
       } elsif ($cmd eq 'del') {
    push (@deldata,$thiskey);
       } elsif ($cmd eq 'datepointer') {
    my $data=&Apache::lonhtmlcommon::get_date_from_form($ENV{$_});
    if ($olddata{$thiskey} ne $data) { $newdata{$thiskey}=$data; }
       }
    }
       }
   # Store
       &Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs);
       &Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs);
   # Read and display
       my %resourcedata=&Apache::lonnet::dump('resourcedata',$dom,$crs);
       my $oldsection='';
       my $oldrealm='';
       my $oldpart='';
       my $pointer=0;
       $tableopen=0;
       foreach my $thiskey (sort keys %resourcedata) {
    if ($resourcedata{$thiskey.'.type'}) {
       my ($course,$middle,$part,$name)=
    ($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
       my $section=&mt('All Students');
       if ($middle=~/^\[(.*)\]\./) {
    $section=&mt('Group/Section').': '.$1;
    $middle=~s/^\[(.*)\]\.//;
       }
       $middle=~s/\.$//;
       my $realm='<font color="red">'.&mt('All Resources').'</font>';
       if ($middle=~/^(.+)\_\_\_\(all\)$/) {
    $realm='<font color="green">'.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).'</font>';
       } elsif ($middle) {
    $realm='<font color="orange">'.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).'</font>';
       }
       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) {
    $r->print(&tableend().
     "\n<h3><font color='blue'>".&mt('Part').": $part</font></h3>");
    $oldpart=$part;
       }
   #
   # Ready to print
   #
       $r->print(&tablestart().'<tr><td><b>'.$name.
         ':</b></td><td><input type="checkbox" name="del_'.
         $thiskey.'" /></td><td>');
       if ($resourcedata{$thiskey.'.type'}=~/^date/) {
    my $jskey='key_'.$pointer;
    $pointer++;
    $r->print(
     &Apache::lonhtmlcommon::date_setter('overviewform',
         $jskey,
         $resourcedata{$thiskey}).
   '<input type="hidden" name="datepointer_'.$thiskey.'" value="'.$jskey.'" />'
     );
       } else {
    $r->print(
     '<input type="text" name="set_'.$thiskey.'" value="'.
     $resourcedata{$thiskey}.'">');
       }
       $r->print('</td></tr>');
    }
       }
       
       $r->print(&tableend().
         '<p><input type="submit" value="'.&mt('Modify Parameters').'" /></p></form></body></html>');
   }
   
 ##################################################  ##################################################
 ##################################################  ##################################################
Line 1600  sub handler { Line 1814  sub handler {
     my $r=shift;      my $r=shift;
   
     if ($r->header_only) {      if ($r->header_only) {
  $r->content_type('text/html');   &Apache::loncommon::content_type($r,'text/html');
  $r->send_http_header;   $r->send_http_header;
  return OK;   return OK;
     }      }
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
   
     $r->content_type('text/html');  
     $r->send_http_header;  
 # ----------------------------------------------------- Needs to be in a course  # ----------------------------------------------------- Needs to be in a course
   
     if (($ENV{'request.course.id'}) &&       if (($ENV{'request.course.id'}) && 
  (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) {   (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) {
   
           &Apache::loncommon::content_type($r,'text/html');
           $r->send_http_header;
     
         $coursename=$ENV{'course.'.$ENV{'request.course.id'}.'.description'};          $coursename=$ENV{'course.'.$ENV{'request.course.id'}.'.description'};
   
  unless (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) {   if (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) {
 # --------------------------------------------------------- Bring up assessment  
     &assessparms($r);  
 # ---------------------------------------------- This is for course environment  # ---------------------------------------------- This is for course environment
  } else {  # -------------------------- also call if toplevel map coudl not be initialized
     &crsenv($r);      &crsenv($r);
    } elsif ($ENV{'form.overview'}) {
   # --------------------------------------------------------------- Overview mode
       &overview($r);
    } else {
   # --------------------------------------------------------- Bring up assessment
       &assessparms($r);
  }   }
     } else {      } else {
 # ----------------------------- Not in a course, or not allowed to modify parms  # ----------------------------- Not in a course, or not allowed to modify parms

Removed from v.1.105  
changed lines
  Added in v.1.130


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