Diff for /loncom/interface/lonparmset.pm between versions 1.516 and 1.541

version 1.516, 2011/12/04 14:55:16 version 1.541, 2013/08/22 11:53:46
Line 315  use LONCAPA qw(:DEFAULT :match); Line 315  use LONCAPA qw(:DEFAULT :match);
   
   
 sub startSettingsScreen {  sub startSettingsScreen {
     my ($r,$mode)=@_;      my ($r,$mode,$crstype)=@_;
   
       my $tabtext = &mt('Course Settings');
       if ($crstype eq 'Community') {
           $tabtext = &mt('Community Settings');
       } 
     $r->print("\n".'<ul class="LC_TabContentBigger" id="main">');      $r->print("\n".'<ul class="LC_TabContentBigger" id="main">');
     $r->print("\n".'<li'.($mode eq 'coursepref'?' class="active"':'').'><a href="/adm/courseprefs"><b>&nbsp;&nbsp;&nbsp;&nbsp;'.      $r->print("\n".'<li'.($mode eq 'coursepref'?' class="active"':'').'><a href="/adm/courseprefs"><b>&nbsp;&nbsp;&nbsp;&nbsp;'.
                                           &mt('Course Settings').                                            $tabtext.
                                           '&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>');                                            '&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>');
   
     $r->print("\n".'<li'.($mode eq 'parmset'?' class="active"':'').'><a href="/adm/parmset"><b>'.      $r->print("\n".'<li'.($mode eq 'parmset'?' class="active"':'').' id="tabbededitor"><a href="/adm/parmset"><b>'.
                                                                  &mt('Content and Problem Settings').'</b></a></li>');                                                                   &mt('Content and Problem Settings').'</b></a></li>');
     $r->print("\n".'</ul>'."\n");      $r->print("\n".'</ul>'."\n");
     $r->print('<div class="LC_Box" style="clear:both;margin:0;"><div id="maincoursedoc" style="margin:0 0;padding:0 0;"><div class="LC_ContentBox" id="mainCourseDocuments" style="display: block;">');      $r->print('<div class="LC_Box" style="clear:both;margin:0;" id="parameditor"><div id="maincoursedoc" style="margin:0 0;padding:0 0;"><div class="LC_ContentBox" id="mainCourseDocuments" style="display: block;">');
 }  }
   
 sub endSettingsScreen {  sub endSettingsScreen {
Line 661  sub storeparm_by_symb { Line 665  sub storeparm_by_symb {
 }  }
   
 sub log_parmset {  sub log_parmset {
     return &Apache::lonnet::instructor_log('parameterlog',@_);      return &Apache::lonnet::write_log('course','parameterlog',@_);
 }  }
   
 sub storeparm_by_symb_inner {  sub storeparm_by_symb_inner {
Line 768  sub valout { Line 772  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') {
     if ($editable) {          if ($editable) {
         $result = '<span class="LC_clickhere">*</span>';              $result =
     } else {                  '<img src="/res/adm/pages/editmap.png"'
         $result='&nbsp;';                 .' alt="'.&mt('Change').'"'
     }                 .' title="'.&mt('Change').'" style="border:0;" />';
           } else {
               $result='&nbsp;';
           }
     } else {      } else {
         if ($type eq 'date_interval') {          if ($type eq 'date_interval') {
             my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value);              my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value);
Line 813  sub valout { Line 820  sub valout {
         &date_sanity_info($value);          &date_sanity_info($value);
         } else {          } else {
             $result = $value;              $result = $value;
               $result=~s/\,/\, /gs;
         $result = &HTML::Entities::encode($result,'"<>&');          $result = &HTML::Entities::encode($result,'"<>&');
         }          }
     }      }
Line 854  sub page_js { Line 862  sub page_js {
     return(<<ENDJS);      return(<<ENDJS);
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
     function pclose() {  
         parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",  
                  "height=350,width=350,scrollbars=no,menubar=no");  
         parmwin.close();  
     }  
   
     $pjump_def      $pjump_def
   
     function psub() {      function psub() {
         pclose();  
         if (document.parmform.pres_marker.value!='') {          if (document.parmform.pres_marker.value!='') {
             document.parmform.action+='#'+document.parmform.pres_marker.value;              document.parmform.action+='#'+document.parmform.pres_marker.value;
             var typedef=new Array();              var typedef=new Array();
Line 892  sub page_js { Line 894  sub page_js {
         var newWin = window.open(url, wdwName, options);          var newWin = window.open(url, wdwName, options);
         newWin.focus();          newWin.focus();
     }      }
   
 // ]]>  // ]]>
   
 </script>  </script>
 $selscript  $selscript
 ENDJS  ENDJS
   
 }  }
   
   sub showhide_js {
       return <<"COURSECONTENTSCRIPT";
   
   function showHide_courseContent() {
       var parmlevValue=document.getElementById("parmlev").value;
       if (parmlevValue == 'general') {
           document.getElementById('mapmenu').style.display="none";
       } else {
           if ((parmlevValue == "full") || (parmlevValue == "map")) {
               document.getElementById('mapmenu').style.display ="";
           } else {
               document.getElementById('mapmenu').style.display="none";
           }
       }
       return;
   }
   
   COURSECONTENTSCRIPT
   }
   
 sub startpage {  sub startpage {
     my ($r,$psymb) = @_;      my ($r,$psymb,$crstype) = @_;
   
     my %loaditems = (      my %loaditems = (
                       'onunload' => "pclose()",  
                       'onload'   => "group_or_section('cgroup')",                        'onload'   => "group_or_section('cgroup')",
                     );                      );
     if (!$psymb) {      if (!$psymb) {
         $loaditems{'onload'} = "showHide_courseContent(); group_or_section('cgroup')";          $loaditems{'onload'} = "showHide_courseContent(); group_or_section('cgroup'); resize_scrollbox('mapmenuscroll','1','1');";
     }      }
   
     if ((($env{'form.command'} eq 'set') && ($env{'form.url'})      if ((($env{'form.command'} eq 'set') && ($env{'form.url'})
Line 919  sub startpage { Line 942  sub startpage {
        text=>"Table Mode",         text=>"Table Mode",
        help => 'Course_Setting_Parameters'});         help => 'Course_Setting_Parameters'});
     }      }
       my $js = &page_js().'
   <script type="text/javascript">
   // <![CDATA[
   '.
               &Apache::lonhtmlcommon::resize_scrollbox_js('params').'
   // ]]>
   </script>
   ';
     my $start_page =      my $start_page =
     &Apache::loncommon::start_page('Set/Modify Course Parameters',          &Apache::loncommon::start_page('Set/Modify Course Parameters',$js,
                        &page_js(),                                         {'add_entries' => \%loaditems,});
                        {'add_entries' => \%loaditems,});  
     my $breadcrumbs =      my $breadcrumbs =
     &Apache::lonhtmlcommon::breadcrumbs('Table Mode Parameter Setting','Table_Mode');      &Apache::lonhtmlcommon::breadcrumbs('Table Mode Parameter Setting','Table_Mode');
     my $escfilter=&Apache::lonhtmlcommon::entity_encode($env{'form.filter'});      my $escfilter=&Apache::lonhtmlcommon::entity_encode($env{'form.filter'});
     my $escpart=&Apache::lonhtmlcommon::entity_encode($env{'form.part'});      my $escpart=&Apache::lonhtmlcommon::entity_encode($env{'form.part'});
     $r->print($start_page.$breadcrumbs);      $r->print($start_page.$breadcrumbs);
     &startSettingsScreen($r,'parmset');      &startSettingsScreen($r,'parmset',$crstype);
     $r->print(<<ENDHEAD);      $r->print(<<ENDHEAD);
 <form method="post" action="/adm/parmset?action=settable" name="parmform">  <form method="post" action="/adm/parmset?action=settable" name="parmform">
 <input type="hidden" value="" name="pres_value" />  <input type="hidden" value="" name="pres_value" />
Line 1080  sub print_td { Line 1110  sub print_td {
         if ($which > 3) {          if ($which > 3) {
             $nolink = 1;              $nolink = 1;
         }          }
       } elsif ($mprefix =~ /examcode\&$/) {
           unless ($which == 2) {
               $nolink = 1;
           }
     }      }
     if ($nolink) {      if ($nolink) {
         $r->print(&valout($$outpar[$which],$$typeoutpar[$which]));          $r->print(&valout($$outpar[$which],$$typeoutpar[$which]));
Line 1233  sub extractResourceInformation { Line 1267  sub extractResourceInformation {
             $$mapp{$mapid}=$$mapp{$id};              $$mapp{$mapid}=$$mapp{$id};
             $$allmaps{$mapid}=$$mapp{$id};              $$allmaps{$mapid}=$$mapp{$id};
             if ($mapid eq '1') {              if ($mapid eq '1') {
                 $$maptitles{$mapid}=&mt('Main Course Documents');                  $$maptitles{$mapid}=&mt('Main Content');
             } else {              } else {
                 $$maptitles{$mapid}=&Apache::lonnet::gettitle($$mapp{$id});                  $$maptitles{$mapid}=&Apache::lonnet::gettitle($$mapp{$id});
             }              }
Line 1301  sub parmmenu { Line 1335  sub parmmenu {
     }      }
   
     function checkdisset() {      function checkdisset() {
     checkthis('discussend','pscat');       checkthis('discussend','pscat');
      checkthis('discusshide','pscat');       checkthis('discusshide','pscat');
        checkthis('discussvote','pscat');
     }      }
   
     function checkcontdates() {      function checkcontdates() {
Line 1400  sub lookUpTableParameter { Line 1435  sub lookUpTableParameter {
         'maxcollaborators' => 'misc',          'maxcollaborators' => 'misc',
         'scoreformat' => 'misc',          'scoreformat' => 'misc',
         'lenient' => 'grading',          'lenient' => 'grading',
           'retrypartial' => 'tries',
           'discussvote'  => 'misc',
           'examcode' => 'high_level_randomization', 
     );          );    
 }  }
   
Line 1473  sub parmboxes { Line 1510  sub parmboxes {
         &whatIsMyCategory($tempparameter, \%categoryList);          &whatIsMyCategory($tempparameter, \%categoryList);
     }      }
     #part to print the parm-list      #part to print the parm-list
     $r->print('<div class="LC_columnSection">'."\n");      foreach my $key (sort { $category_order{$a} <=> $category_order{$b} } keys(%categoryList)) {
           next if (@{$categoryList{$key}} == 0);
     #Print parameters          next if ($key eq '');
     for my $key (sort { $category_order{$a} <=> $category_order{$b} } keys %categoryList) {          $r->print('<div class="LC_Box LC_400Box">'
         if(@{$categoryList{$key}} == 0) {                   .'<h4 class="LC_hcell">'.&mt($categories{$key}).'</h4>'."\n");
             next;          foreach my $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) {
         } else {               $r->print('<span class="LC_nobreak">'
             $r->print('<div class="LC_Box LC_400Box">'                       .'<label><input type="checkbox" name="pscat" '
                      .'<h4 class="LC_hcell">'                       .'value="'.$tempkey.'" ');
                      .&mt($categories{$key})              if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {
                      .'</h4>'."\n");                  $r->print( ' checked="checked"');
             foreach $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) {  
                     $r->print('<span class="LC_nobreak">'  
                              .'<label><input type="checkbox" name="pscat" ');  
                 $r->print('value="'.$tempkey.'" ');  
                 if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {  
                     $r->print(' checked="checked"');  
                 }  
                 $r->print(' />'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey}  
                                                       : $tempkey)  
                         .'</label></span><br />'."\n");  
             }              }
             $r->print("</div>\n");              $r->print(' />'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey}
                                                         : $tempkey)
                        .'</label></span><br />'."\n");
         }          }
           $r->print('</div>');
     }      }
       $r->print("\n");
     $r->print("</div>\n");  
 }  }
 #  #
 # This function offers some links on the parameter section to get with one click a group a parameters  # This function offers some links on the parameter section to get with one click a group a parameters
Line 1538  sub shortCuts { Line 1567  sub shortCuts {
   
 sub partmenu {  sub partmenu {
     my ($r,$allparts,$psprt)=@_;      my ($r,$allparts,$psprt)=@_;
       my $selsize = 1+scalar(keys(%{$allparts}));
       if ($selsize > 8) {
           $selsize = 8;
       }
   
     $r->print('<select multiple="multiple" name="psprt" size="8">');      $r->print('<select multiple="multiple" name="psprt" size="'.$selsize.'">');
     $r->print('<option value="all"');      $r->print('<option value="all"');
     $r->print(' selected="selected"') unless (@{$psprt});      $r->print(' selected="selected"') unless (@{$psprt});
     $r->print('>'.&mt('All Parts').'</option>');      $r->print('>'.&mt('All Parts').'</option>');
Line 1660  function group_or_section(caller) { Line 1693  function group_or_section(caller) {
 # This function shows on table Mode the available Parameters for the selected Resources  # This function shows on table Mode the available Parameters for the selected Resources
 #  #
 sub displaymenu {  sub displaymenu {
     my ($r,$allparms,$pscat,$psprt,$keyorder)=@_;      my ($r,$allparms,$pscat,$psprt,$keyorder,$divid)=@_;
   
     $r->print(&Apache::lonhtmlcommon::start_pick_box());      $r->print(&Apache::lonhtmlcommon::start_pick_box());
     $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parameters to View')));      $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parameters to View')));
   
     &parmmenu($r,$allparms,$pscat,$keyorder);      &parmmenu($r,$allparms,$pscat,$keyorder);
     $r->print(&Apache::loncommon::start_scrollbox());      $r->print(&Apache::loncommon::start_scrollbox('480px','440px','200px',$divid));
     &parmboxes($r,$allparms,$pscat,$keyorder);      &parmboxes($r,$allparms,$pscat,$keyorder);
     $r->print(&Apache::loncommon::end_scrollbox());      $r->print(&Apache::loncommon::end_scrollbox());
   
Line 1740  sub mapmenu { Line 1773  sub mapmenu {
            .'</div>'             .'</div>'
         );          );
   
         $r->print(&Apache::loncommon::start_scrollbox());          $r->print(&Apache::loncommon::start_scrollbox('700px','680px','400px','mapmenuscroll'));
         $r->print(&Apache::loncommon::start_data_table());          $r->print(&Apache::loncommon::start_data_table(undef,'mapmenuinner'));
   
         # Display row: "All Maps or Folders"          # Display row: "All Maps or Folders"
         $r->print(          $r->print(
             &Apache::loncommon::start_data_table_row()              &Apache::loncommon::start_data_table_row(undef,'picklevel')
            .'<td>'             .'<td>'
            .'<label>'             .'<label>'
            .'<input type="radio" name="pschp"'             .'<input type="radio" name="pschp"'
Line 1759  sub mapmenu { Line 1792  sub mapmenu {
            .&Apache::loncommon::end_data_table_row()             .&Apache::loncommon::end_data_table_row()
         );          );
   
         # Display row: "Main Course Documents"          # Display row: "Main Content"
         if (exists($$allmaps{1})) {          if (exists($$allmaps{1})) {
             $r->print(              $r->print(
                 &Apache::loncommon::start_data_table_row()                  &Apache::loncommon::start_data_table_row()
Line 1820  sub mapmenu { Line 1853  sub mapmenu {
             );              );
         }          }
   
         $r->print(&Apache::loncommon::end_data_table());          $r->print(&Apache::loncommon::end_data_table().
         $r->print(&Apache::loncommon::end_scrollbox());                    '<br style="line-height:2px;" />'.
                     &Apache::loncommon::end_scrollbox());
     }      }
 }  }
   
Line 1947  sub standardkeyorder { Line 1981  sub standardkeyorder {
         'parameter_0_tol' => 16,          'parameter_0_tol' => 16,
         'parameter_0_sig' => 17,          'parameter_0_sig' => 17,
         'parameter_0_turnoffunit' => 18,          'parameter_0_turnoffunit' => 18,
             'parameter_0_discussend' => 19,          'parameter_0_discussend' => 19,
             'parameter_0_discusshide' => 20,          'parameter_0_discusshide' => 20,
  'parameter_0_printopendate'  =>  21,          'parameter_0_discussvote' => 21,
  'parameter_0_printclosedate' =>  22);   'parameter_0_printopendate'  =>  22,
    'parameter_0_printclosedate' =>  23);
 }  }
   
   
Line 2053  sub assessparms { Line 2088  sub assessparms {
             $id='';              $id='';
         } else {          } else {
             $message=              $message=
             '<span class="LC_error">'.&mt("Unknown ID")." '$id' ".                  '<p class="LC_warning">'.
             &mt('at domain')." '$udom'</span>";                  &mt('Unknown ID [_1] at domain [_2]',
                       "'".$id."'","'".$udom."'").
                   '</p>';
         }          }
     } else {      } else {
         $uname=$env{'form.uname'};          $uname=$env{'form.uname'};
Line 2065  sub assessparms { Line 2102  sub assessparms {
         $uhome=&Apache::lonnet::homeserver($uname,$udom);          $uhome=&Apache::lonnet::homeserver($uname,$udom);
         if ($uhome eq 'no_host') {          if ($uhome eq 'no_host') {
             $message=              $message=
             '<span class="LC_error">'.&mt("Unknown user")." '$uname' ".                  '<p class="LC_warning">'.
             &mt("at domain")." '$udom'</span>";                  &mt('Unknown user [_1] at domain [_2]',
                       "'".$uname."'","'".$udom."'").
                   '</p>';
             $uname='';              $uname='';
         } else {          } else {
             $csec=&Apache::lonnet::getsection($udom,$uname,              $csec=&Apache::lonnet::getsection($udom,$uname,
                           $env{'request.course.id'});                            $env{'request.course.id'});
             if ($csec eq '-1') {              if ($csec eq '-1') {
                 $message='<span class="LC_error">'.                  $message=
                 &mt("User")." '$uname' ".&mt("at domain")." '$udom' ".                      '<p class="LC_warning">'.
                 &mt("not in this course")."</span>";                      &mt('User [_1] at domain [_2] not in this course',
                           "'".$uname."'","'".$udom."'").
                       '</p>';
                 $uname='';                  $uname='';
                 $csec=$env{'form.csec'};                  $csec=$env{'form.csec'};
                 $cgroup=$env{'form.cgroup'};                  $cgroup=$env{'form.cgroup'};
Line 2151  sub assessparms { Line 2192  sub assessparms {
                         }                          }
                     }                      }
                 }                  }
             } elsif ($markers[$i] =~ /_(type|lenient)\&\d+$/) {              } elsif ($markers[$i] =~ /_(type|lenient|retrypartial|discussvote|examcode)\&\d+$/) {
                 $name = $1;                  $name = $1;
                   my $val = $values[$i];
                   if ($name eq 'examcode') {
                      if (&Apache::lonnet::validCODE($values[$i])) {
                          $val = 'valid';    
                      }
                   }
                 $needsrelease =                  $needsrelease =
                     $Apache::lonnet::needsrelease{"parameter:$name:$values[$i]"};                      $Apache::lonnet::needsrelease{"parameter:$name:$val"};
                 if ($needsrelease) {                  if ($needsrelease) {
                     unless ($got_chostname) {                      unless ($got_chostname) {
                         ($chostname,$cmajor,$cminor) = &parameter_release_vars();                          ($chostname,$cmajor,$cminor) = &parameter_release_vars();
                         $got_chostname = 1;                          $got_chostname = 1;
                     }                      }
                     $needsnewer = &parameter_releasecheck($name,$values[$i],                      $needsnewer = &parameter_releasecheck($name,$val,
                                                           $needsrelease,                                                            $needsrelease,
                                                           $chostname,                                                            $chostname,
                                                           $cmajor,$cminor);                                                            $cmajor,$cminor);
Line 2191  sub assessparms { Line 2238  sub assessparms {
     if ($psprt[0] eq "all" || !@psprt) {@psprt = (keys %allparts);}      if ($psprt[0] eq "all" || !@psprt) {@psprt = (keys %allparts);}
 # ------------------------------------------------------------------ Start page  # ------------------------------------------------------------------ Start page
   
     &startpage($r,$pssymb);      my $crstype = &Apache::loncommon::course_type();
       &startpage($r,$pssymb,$crstype);
   
     foreach ('tolerance','date_default','date_start','date_end',      foreach ('tolerance','date_default','date_start','date_end',
         'date_interval','int','float','string') {          'date_interval','int','float','string') {
Line 2223  ENDPARMSELSCRIPT Line 2271  ENDPARMSELSCRIPT
         }          }
   
         # Step 1          # Step 1
         $r->print(&Apache::lonhtmlcommon::topic_bar(1,&mt('Resource Specification')));          $r->print(&Apache::lonhtmlcommon::topic_bar(1,&mt('Resource Specification'),'parmstep1'));
         $r->print(<<COURSECONTENTSCRIPT);          $r->print('
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA['.
 function showHide_courseContent(){                   &showhide_js().'
         var parmlevValue=document.getElementById("parmlev").value;  
         if (parmlevValue == 'general') {  
             document.getElementById('mapmenu').style.display="none";  
         } else {  
             if ((parmlevValue == "full") || (parmlevValue == "map")) {  
                 document.getElementById('mapmenu').style.display ="";  
             } else {  
                 document.getElementById('mapmenu').style.display="none";  
             }  
         }          
     }  
 // ]]>  // ]]>
 </script>  </script>
 COURSECONTENTSCRIPT  ');
           $r->print(&Apache::lonhtmlcommon::start_pick_box(undef,'parmlevel'));
         $r->print(&Apache::lonhtmlcommon::start_pick_box());  
         &levelmenu($r,\%alllevs,$parmlev);          &levelmenu($r,\%alllevs,$parmlev);
         $r->print(&Apache::lonhtmlcommon::row_closure());          $r->print(&Apache::lonhtmlcommon::row_closure());
         &mapmenu($r,\%allmaps,$pschp,\%maptitles, \%symbp);          &mapmenu($r,\%allmaps,$pschp,\%maptitles, \%symbp);
Line 2254  COURSECONTENTSCRIPT Line 2290  COURSECONTENTSCRIPT
         $r->print(&Apache::lonhtmlcommon::end_pick_box());          $r->print(&Apache::lonhtmlcommon::end_pick_box());
   
         # Step 2          # Step 2
         $r->print(&Apache::lonhtmlcommon::topic_bar(2,&mt('Parameter Specification')));          $r->print(&Apache::lonhtmlcommon::topic_bar(2,&mt('Parameter Specification'),'parmstep2'));
         &displaymenu($r,\%allparms,\@pscat,\@psprt,\%keyorder);          &displaymenu($r,\%allparms,\@pscat,\@psprt,\%keyorder,'parmmenuscroll');
   
         # Step 3          # Step 3
         $r->print(&Apache::lonhtmlcommon::topic_bar(3,&mt('User Specification (optional)')));          $r->print(&Apache::lonhtmlcommon::topic_bar(3,&mt('User Specification (optional)'),'parmstep3'));
         $r->print(&Apache::lonhtmlcommon::start_pick_box());          $r->print(&Apache::lonhtmlcommon::start_pick_box());
         &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups);          &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups);
         $r->print(&Apache::lonhtmlcommon::row_closure(1));          $r->print(&Apache::lonhtmlcommon::row_closure(1));
Line 2283  COURSECONTENTSCRIPT Line 2319  COURSECONTENTSCRIPT
              .'</a>'               .'</a>'
              .'</p>');               .'</p>');
     } else {      } else {
         $r->print();  
         # parameter screen for a single resource.           # parameter screen for a single resource. 
         my ($map,$iid,$resource)=&Apache::lonnet::decode_symb($pssymb);          my ($map,$iid,$resource)=&Apache::lonnet::decode_symb($pssymb);
         my $title = &Apache::lonnet::gettitle($pssymb);          my $title = &Apache::lonnet::gettitle($pssymb);
Line 2333  COURSECONTENTSCRIPT Line 2368  COURSECONTENTSCRIPT
                   $coursespan += 3;                    $coursespan += 3;
                }                 }
   
                $r->print('<p><table border="2">');                 $r->print(&Apache::loncommon::start_data_table());
 #  #
 # This produces the headers  # This produces the headers
 #  #
Line 2344  COURSECONTENTSCRIPT Line 2379  COURSECONTENTSCRIPT
                        $userspan ++;                         $userspan ++;
                    }                     }
                    $r->print('<th colspan="'.$userspan.'" rowspan="2">');                     $r->print('<th colspan="'.$userspan.'" rowspan="2">');
                    $r->print(&mt("User")." $uname ".&mt('at Domain')." $udom</th>");                     $r->print(&mt('User [_1] at Domain [_2]',"'".$uname."'","'".$udom."'").'</th>');
                }                 }
                my %lt=&Apache::lonlocal::texthash(                 my %lt=&Apache::lonlocal::texthash(
                 'pie'    => "Parameter in Effect",                  'pie'    => "Parameter in Effect",
Line 2407  ENDTABLEHEADFOUR Line 2442  ENDTABLEHEADFOUR
                my $defbgtwo='';                 my $defbgtwo='';
                my $defbgthree = '';                 my $defbgthree = '';
   
                foreach (@ids) {                 foreach my $rid (@ids) {
   
                 my $rid=$_;  
                 my ($inmapid)=($rid=~/\.(\d+)$/);                  my ($inmapid)=($rid=~/\.(\d+)$/);
   
                 if ((!$pssymb &&                  if ((!$pssymb &&
Line 2513  ENDTABLEHEADFOUR Line 2547  ENDTABLEHEADFOUR
                 }                  }
             } # end foreach ids              } # end foreach ids
 # -------------------------------------------------- End entry for one resource  # -------------------------------------------------- End entry for one resource
             $r->print('</table>');              $r->print(&Apache::loncommon::end_data_table);
         } # end of  full          } # end of  full
 #--------------------------------------------------- Entry for parm level map  #--------------------------------------------------- Entry for parm level map
         if ($parmlev eq 'map') {          if ($parmlev eq 'map') {
Line 2813  sub storedata { Line 2847  sub storedata {
                 $name = 'type';                  $name = 'type';
             } elsif ($typeof eq 'string_lenient') {              } elsif ($typeof eq 'string_lenient') {
                 $name = 'lenient';                  $name = 'lenient';
               } elsif ($typeof eq 'string_discussvote') {
                   $name = 'discussvote';
               } elsif ($typeof eq 'string_examcode') {
                   $name = 'examcode'; 
               } elsif ($typeof eq 'string_yesno') {
                   if ($thiskey =~ /\.retrypartial$/) {
                       $name = 'retrypartial';
                   }
             }              }
             if ($name ne '') {              if ($name ne '') {
                 my ($needsrelease,$needsnewer);                  my ($needsrelease,$needsnewer);
Line 2885  sub storedata { Line 2927  sub storedata {
     if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {      if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {
         my %loghash=map { $_ => '' } @deldata;          my %loghash=map { $_ => '' } @deldata;
         &log_parmset(\%loghash,1);          &log_parmset(\%loghash,1);
         $r->print('<h2>'.&mt('Deleted [_1] parameter(s)</h2>',$delentries));          $r->print('<h2>'.&mt('Deleted [_1] parameter(s)',$delentries).'</h2>');
     } else {      } else {
         $r->print('<div class="LC_error">'.          $r->print('<div class="LC_error">'.
               &mt('Error deleting parameters').'</div>');                &mt('Error deleting parameters').'</div>');
Line 3133  my %strings = Line 3175  my %strings =
              => [[ 'problem', 'Standard Problem'],               => [[ 'problem', 'Standard Problem'],
                  [ 'survey', 'Survey'],                   [ 'survey', 'Survey'],
                  [ 'anonsurveycred', 'Anonymous Survey (credit for submission)'],                   [ 'anonsurveycred', 'Anonymous Survey (credit for submission)'],
                  [ 'exam', 'Exam'],                   [ 'exam', 'Bubblesheet Exam'],
                  [ 'anonsurvey', 'Anonymous Survey'],                   [ 'anonsurvey', 'Anonymous Survey'],
                  [ 'randomizetry', 'New Randomization Each N Tries (default N=1)'],                   [ 'randomizetry', 'New Randomization Each N Tries (default N=1)'],
                  [ 'practice', 'Practice'],                   [ 'practice', 'Practice'],
Line 3141  my %strings = Line 3183  my %strings =
      'string_lenient'       'string_lenient'
              => [['yes', 'Yes' ],               => [['yes', 'Yes' ],
                  [ 'no', 'No' ],                   [ 'no', 'No' ],
                  [ 'default', 'Default - only bubblesheet grading is lenient' ]]                    [ 'default', 'Default - only bubblesheet grading is lenient' ]],
        'string_discussvote'
                => [['yes','Yes'],
                    ['notended','Yes, unless discussion ended'],
                    ['no','No']],
      );       );
   
 sub standard_string_options {  sub standard_string_options {
Line 3161  sub string_selector { Line 3207  sub string_selector {
   
     my %skiptype;      my %skiptype;
     if (($thistype eq 'string_questiontype') ||       if (($thistype eq 'string_questiontype') || 
         ($thistype eq 'string_lenient')) {          ($thistype eq 'string_lenient') ||
           ($thistype eq 'string_discussvote') ||
           ($name eq 'retrypartial')) {
         my ($got_chostname,$chostname,$cmajor,$cminor);           my ($got_chostname,$chostname,$cmajor,$cminor); 
         foreach my $possibilities (@{ $strings{$thistype} }) {          foreach my $possibilities (@{ $strings{$thistype} }) {
             next unless (ref($possibilities) eq 'ARRAY');              next unless (ref($possibilities) eq 'ARRAY');
Line 3272  sub newoverview { Line 3320  sub newoverview {
   
     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 $crstype =  $env{'course.'.$env{'request.course.id'}.'.type'};
     &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',      &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
         text=>"Overview Mode"});          text=>"Overview Mode"});
     my $start_page = &Apache::loncommon::start_page('Set Parameters');  
       my %loaditems = (
                         'onload'   => "showHide_courseContent(); resize_scrollbox('mapmenuscroll','1','1');",
                       );
       my $js = '
   <script type="text/javascript">
   // <![CDATA[
   '.
               &Apache::lonhtmlcommon::resize_scrollbox_js('params')."\n".
               &showhide_js()."\n".
   '// ]]>
   </script>
   ';
       my $start_page = &Apache::loncommon::start_page('Set Parameters',$js,
                                                       {'add_entries' => \%loaditems,});
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
     $r->print($start_page.$breadcrumbs);      $r->print($start_page.$breadcrumbs);
     &startSettingsScreen($r,'parmset');      &startSettingsScreen($r,'parmset',$crstype);
     $r->print(<<ENDOVER);      $r->print(<<ENDOVER);
 <form method="post" action="/adm/parmset?action=newoverview" name="parmform">  <form method="post" action="/adm/parmset?action=newoverview" name="parmform">
 ENDOVER  ENDOVER
Line 3340  ENDOVER Line 3403  ENDOVER
     $r->print('<div class="LC_Box">');      $r->print('<div class="LC_Box">');
     #$r->print('<h2 class="LC_hcell">Step 1</h2>');      #$r->print('<h2 class="LC_hcell">Step 1</h2>');
     $r->print('<div>');      $r->print('<div>');
     $r->print(&Apache::lonhtmlcommon::start_pick_box());      $r->print(&Apache::lonhtmlcommon::start_pick_box(undef,'parmlevel'));
     &levelmenu($r,\%alllevs,$parmlev);      &levelmenu($r,\%alllevs,$parmlev);
     if ($parmlev ne 'general') {      if ($parmlev ne 'general') {
         $r->print(&Apache::lonhtmlcommon::row_closure());          $r->print(&Apache::lonhtmlcommon::row_closure());
Line 3446  sub overview { Line 3509  sub overview {
     my ($r) = @_;      my ($r) = @_;
     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 $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
   
     &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',      &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
     text=>"Overview Mode"});      text=>"Overview Mode"});
     my $start_page=&Apache::loncommon::start_page('Modify Parameters');      my $start_page=&Apache::loncommon::start_page('Modify Parameters');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
     $r->print($start_page.$breadcrumbs);      $r->print($start_page.$breadcrumbs);
     &startSettingsScreen($r,'parmset');      &startSettingsScreen($r,'parmset',$crstype);
     $r->print('<form method="post" action="/adm/parmset?action=setoverview" name="parmform">');      $r->print('<form method="post" action="/adm/parmset?action=setoverview" name="parmform">');
   
 # Store modified  # Store modified
Line 3473  sub overview { Line 3537  sub overview {
     my $foundkeys=&listdata($r,$resourcedata,$resourcedata,$sortorder);      my $foundkeys=&listdata($r,$resourcedata,$resourcedata,$sortorder);
   
     $r->print(&tableend().'<p>'.      $r->print(&tableend().'<p>'.
     ($foundkeys?'<input type="submit" value="'.&mt('Save').'" />':&mt('There are no parameters.')).'</p></form>'.      ($foundkeys?'<input type="submit" value="'.&mt('Save').'" />':'<span class="LC_info">'.&mt('There are no parameters.').'</span>').'</p></form>'.
           &Apache::loncommon::end_page());            &Apache::loncommon::end_page());
 }  }
   
Line 3549  ENDOVER Line 3613  ENDOVER
         } elsif ($data{'realm_type'} eq 'symb') {          } elsif ($data{'realm_type'} eq 'symb') {
         my ($map,$resid,$url) =          my ($map,$resid,$url) =
             &Apache::lonnet::decode_symb($data{'realm'});              &Apache::lonnet::decode_symb($data{'realm'});
         $r->print(&mt('Resource: [_1] <br />&nbsp;&nbsp;&nbsp;with ID: [_2] <br />&nbsp;&nbsp;&nbsp;in folder [_3]',          $r->print(&mt('Resource: [_1]with ID: [_2]in folder [_3]',
                   $url,$resid,$map));                        $url.' <br />&nbsp;&nbsp;&nbsp;',
                         $resid.' <br />&nbsp;&nbsp;&nbsp;',$map));
         }          }
         $r->print(' <br />&nbsp;&nbsp;&nbsp;'.&mt('Part: [_1]',$data{'parameter_part'}));          $r->print(' <br />&nbsp;&nbsp;&nbsp;'.&mt('Part: [_1]',$data{'parameter_part'}));
         $r->print('</td></tr>');          $r->print('</td></tr>');
Line 3568  sub date_shift_one { Line 3633  sub date_shift_one {
     my ($r) = @_;      my ($r) = @_;
     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 $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
   
     &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},      &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
         text=>"Shifting Dates"});          text=>"Shifting Dates"});
     my $start_page=&Apache::loncommon::start_page('Shift Dates');      my $start_page=&Apache::loncommon::start_page('Shift Dates');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
     $r->print($start_page.$breadcrumbs);      $r->print($start_page.$breadcrumbs);
     &startSettingsScreen($r,'parmset');      &startSettingsScreen($r,'parmset',$crstype);
     $r->print('<form name="shiftform" method="post">'.      $r->print('<form name="shiftform" method="post" action="">'.
               '<table><tr><td>'.&mt('Currently set date:').'</td><td>'.                '<table><tr><td>'.&mt('Currently set date:').'</td><td>'.
               &Apache::lonlocal::locallocaltime($env{'form.timebase'}).'</td></tr>'.                &Apache::lonlocal::locallocaltime($env{'form.timebase'}).'</td></tr>'.
               '<tr><td>'.&mt('Shifted date:').'</td><td>'.                '<tr><td>'.&mt('Shifted date:').'</td><td>'.
                     &Apache::lonhtmlcommon::dshowerfuck.net                      &Apache::lonhtmlcommon::date_setter('shiftform',
 ate_setter('shiftform',  
                                                         'timeshifted',                                                          'timeshifted',
                                                         $env{'form.timebase'},,                                                          $env{'form.timebase'},,
                                                         '').                                                          '').
Line 3596  sub date_shift_two { Line 3661  sub date_shift_two {
     my ($r) = @_;      my ($r) = @_;
     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 $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
     &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},      &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
         text=>"Shifting Dates"});          text=>"Shifting Dates"});
     my $start_page=&Apache::loncommon::start_page('Shift Dates');      my $start_page=&Apache::loncommon::start_page('Shift Dates');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
     $r->print($start_page.$breadcrumbs);      $r->print($start_page.$breadcrumbs);
     &startSettingsScreen($r,'parmset');      &startSettingsScreen($r,'parmset',$crstype);
     my $timeshifted=&Apache::lonhtmlcommon::get_date_from_form('timeshifted');      my $timeshifted=&Apache::lonhtmlcommon::get_date_from_form('timeshifted');
     $r->print(&mt('Shifting all dates such that [_1] becomes [_2]',      $r->print(&mt('Shifting all dates such that [_1] becomes [_2]',
               &Apache::lonlocal::locallocaltime($env{'form.timebase'}),                &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
Line 3663  sub print_main_menu { Line 3729  sub print_main_menu {
     #      #
     $r->print(&header());      $r->print(&header());
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Content and Problem Settings'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Content and Problem Settings'));
     &startSettingsScreen($r,'parmset');      my $crstype = &Apache::loncommon::course_type();
       my $lc_crstype = lc($crstype);
   
       &startSettingsScreen($r,'parmset',$crstype);
     $r->print(<<ENDMAINFORMHEAD);      $r->print(<<ENDMAINFORMHEAD);
 <form method="post" enctype="multipart/form-data"  <form method="post" enctype="multipart/form-data"
       action="/adm/parmset" name="studentform">        action="/adm/parmset" name="studentform">
Line 3673  ENDMAINFORMHEAD Line 3742  ENDMAINFORMHEAD
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $vgr  = &Apache::lonnet::allowed('vgr',$env{'request.course.id'});      my $vgr  = &Apache::lonnet::allowed('vgr',$env{'request.course.id'});
     my $mgr  = &Apache::lonnet::allowed('mgr',$env{'request.course.id'});      my $mgr  = &Apache::lonnet::allowed('mgr',$env{'request.course.id'});
       my $dcm = &Apache::lonnet::allowed('dcm',$env{'request.course.id'});
     my $crstype = &Apache::loncommon::course_type();      if ((!$dcm) && ($env{'request.course.sec'} ne '')) {
     my $lc_crstype = lc($crstype);          $dcm = &Apache::lonnet::allowed('dcm',$env{'request.course.id'}.
                                           '/'.$env{'request.course.sec'});
       }
   
     my @menu =      my @menu =
         ( { categorytitle=>"Content Settings for this $crstype",          ( { categorytitle=>"Content Settings for this $crstype",
Line 3692  ENDMAINFORMHEAD Line 3763  ENDMAINFORMHEAD
             linktitle => "Reset access times for folders/maps, resources or the $lc_crstype."  ,              linktitle => "Reset access times for folders/maps, resources or the $lc_crstype."  ,
             icon => 'start-here.png'  ,              icon => 'start-here.png'  ,
             },              },
             { linktext => 'Blocking Communication/Resource Access',
               url => '/adm/setblock',
               permission => $dcm,
               linktitle => 'Configure blocking of communication/collaboration and access to resources during an exam',
               icon => 'comblock.png',
               },
           { linktext => 'Set Parameter Setting Default Actions',            { linktext => 'Set Parameter Setting Default Actions',
             url => '/adm/parmset?action=setdefaults',              url => '/adm/parmset?action=setdefaults',
             permission => $parm_permission,              permission => $parm_permission,
Line 3739  ENDMAINFORMHEAD Line 3815  ENDMAINFORMHEAD
             }]}              }]}
           );            );
     $r->print(&Apache::lonhtmlcommon::generate_menu(@menu));      $r->print(&Apache::lonhtmlcommon::generate_menu(@menu));
       $r->print('</form>');
     &endSettingsScreen($r);      &endSettingsScreen($r);
       $r->print(&Apache::loncommon::end_page());
     return;      return;
 }  }
   
Line 3807  sub order_meta_fields { Line 3885  sub order_meta_fields {
     my $idx = 1;      my $idx = 1;
     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 $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};;
     $r->print(&Apache::loncommon::start_page('Order Metadata Fields'));      $r->print(&Apache::loncommon::start_page('Order Metadata Fields'));
     &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',      &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
         text=>"Add Metadata Field"});          text=>"Add Metadata Field"});
Line 3815  sub order_meta_fields { Line 3894  sub order_meta_fields {
               text=>"Restrict Metadata"},                text=>"Restrict Metadata"},
              {text=>"Order Metadata"});               {text=>"Order Metadata"});
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Order Metadata'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Order Metadata'));
     &startSettingsScreen($r,'parmset');      &startSettingsScreen($r,'parmset',$crstype);
     if ($env{'form.storeorder'}) {      if ($env{'form.storeorder'}) {
         my $newpos = $env{'form.newpos'} - 1;          my $newpos = $env{'form.newpos'} - 1;
         my $currentpos = $env{'form.currentpos'} - 1;          my $currentpos = $env{'form.currentpos'} - 1;
Line 3869  sub order_meta_fields { Line 3948  sub order_meta_fields {
     foreach my $key (@fields_in_order) {      foreach my $key (@fields_in_order) {
         $r->print('<tr><td>');          $r->print('<tr><td>');
         $r->print('<form method="post" action="">');          $r->print('<form method="post" action="">');
         $r->print('<select name="newpos" onChange="this.form.submit()">');          $r->print('<select name="newpos" onchange="this.form.submit()">');
         for (my $i = 1;$i le $num_fields;$i ++) {          for (my $i = 1;$i le $num_fields;$i ++) {
             if ($i eq $idx) {              if ($i eq $idx) {
                 $r->print('<option value="'.$i.'"  SELECTED>('.$i.')</option>');                  $r->print('<option value="'.$i.'"  SELECTED>('.$i.')</option>');
Line 3905  sub addmetafield { Line 3984  sub addmetafield {
         text=>"Add Metadata Field"});          text=>"Add Metadata Field"});
     $r->print(&Apache::loncommon::start_page('Add Metadata Field'));      $r->print(&Apache::loncommon::start_page('Add Metadata Field'));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field'));
     &startSettingsScreen($r,'parmset');  
     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 $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
       &startSettingsScreen($r,'parmset',$crstype);
     if (exists($env{'form.undelete'})) {      if (exists($env{'form.undelete'})) {
         my @meta_fields = &Apache::loncommon::get_env_multiple('form.undeletefield');          my @meta_fields = &Apache::loncommon::get_env_multiple('form.undeletefield');
         foreach my $meta_field(@meta_fields) {          foreach my $meta_field(@meta_fields) {
Line 3962  sub setrestrictmeta { Line 4042  sub setrestrictmeta {
         text=>"Restrict Metadata"});          text=>"Restrict Metadata"});
     $r->print(&Apache::loncommon::start_page('Restrict Metadata'));      $r->print(&Apache::loncommon::start_page('Restrict Metadata'));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));
     &startSettingsScreen($r,'parmset');  
     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 $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
       &startSettingsScreen($r,'parmset',$crstype);
     my $key_base = $env{'course.'.$env{'request.course.id'}.'.'};      my $key_base = $env{'course.'.$env{'request.course.id'}.'.'};
     my $save_field = '';      my $save_field = '';
     if ($env{'form.restrictmeta'}) {      if ($env{'form.restrictmeta'}) {
Line 4076  sub defaultsetter { Line 4157  sub defaultsetter {
   
     &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setdefaults',      &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setdefaults',
         text=>"Set Defaults"});          text=>"Set Defaults"});
       my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
       my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
     my $start_page =      my $start_page =
     &Apache::loncommon::start_page('Parameter Setting Default Actions');          &Apache::loncommon::start_page('Parameter Setting Default Actions');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults');
     $r->print($start_page.$breadcrumbs);      $r->print($start_page.$breadcrumbs);
     &startSettingsScreen($r,'parmset');      &startSettingsScreen($r,'parmset',$crstype);
     $r->print('<form method="post" action="/adm/parmset?action=setdefaults" name="defaultform">');      $r->print('<form method="post" action="/adm/parmset?action=setdefaults" name="defaultform">');
   
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};  
     my @ids=();      my @ids=();
     my %typep=();      my %typep=();
     my %keyp=();      my %keyp=();
Line 4138  sub defaultsetter { Line 4220  sub defaultsetter {
     foreach my $key (keys %allparms) {      foreach my $key (keys %allparms) {
         $newrules{$key.'_triggers'}=$triggers{$key};          $newrules{$key.'_triggers'}=$triggers{$key};
     }      }
     &Apache::lonnet::put('parmdefactions',\%newrules,$dom,$crs);      &Apache::lonnet::put('parmdefactions',\%newrules,$cdom,$cnum);
     &Apache::lonnet::del('parmdefactions',\@delrules,$dom,$crs);      &Apache::lonnet::del('parmdefactions',\@delrules,$cdom,$cnum);
     &resetrulescache();      &resetrulescache();
     }      }
     my %lt=&Apache::lonlocal::texthash('days' => 'Days',      my %lt=&Apache::lonlocal::texthash('days' => 'Days',
Line 4316  sub standard_parameter_types { Line 4398  sub standard_parameter_types {
   
 sub parm_change_log {  sub parm_change_log {
     my ($r)=@_;      my ($r)=@_;
       my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
       my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'}
     &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',      &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
     text=>"Parameter Change Log"});      text=>"Parameter Change Log"});
     $r->print(&Apache::loncommon::start_page('Parameter Change Log'));      my $js = '<script type="text/javascript">'."\n".
                '// <![CDATA['."\n".
                &Apache::loncommon::display_filter_js('parmslog')."\n".
                '// ]]>'."\n".
                '</script>'."\n";
       $r->print(&Apache::loncommon::start_page('Parameter Change Log',$js));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Change Log'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Change Log'));
     &startSettingsScreen($r,'parmset');      &startSettingsScreen($r,'parmset',$crstype);
     my %parmlog=&Apache::lonnet::dump('nohist_parameterlog',      my %parmlog=&Apache::lonnet::dump('nohist_parameterlog',$cdom,$cnum);
                       $env{'course.'.$env{'request.course.id'}.'.domain'},  
                       $env{'course.'.$env{'request.course.id'}.'.num'});  
   
     if ((keys(%parmlog))[0]=~/^error\:/) { undef(%parmlog); }      if ((keys(%parmlog))[0]=~/^error\:/) { undef(%parmlog); }
   
     $r->print('<form action="/adm/parmset?action=parameterchangelog"      $r->print('<div class="LC_left_float">'.
                 '<fieldset><legend>'.&mt('Display of Changes').'</legend>'.
                 '<form action="/adm/parmset?action=parameterchangelog"
                      method="post" name="parameterlog">');                       method="post" name="parameterlog">');
   
     my %saveable_parameters = ('show' => 'scalar',);      my %saveable_parameters = ('show' => 'scalar',);
Line 4335  sub parm_change_log { Line 4425  sub parm_change_log {
                                               \%saveable_parameters);                                                \%saveable_parameters);
     &Apache::loncommon::restore_course_settings('parameter_log',      &Apache::loncommon::restore_course_settings('parameter_log',
                                                 \%saveable_parameters);                                                  \%saveable_parameters);
     $r->print(&Apache::loncommon::display_filter().      $r->print(&Apache::loncommon::display_filter('parmslog').'&nbsp;'."\n".
               '<label>'.&Apache::lonhtmlcommon::checkbox('includetypes',$env{'form.includetypes'},'1').                '<input type="submit" value="'.&mt('Display').'" />'.
           ' '.&mt('Include parameter types').'</label>'.                '</form></fieldset></div><br clear="all" />');
           '<input type="submit" value="'.&mt('Display').'" /></form>');  
   
     my $courseopt=&Apache::lonnet::get_courseresdata($env{'course.'.$env{'request.course.id'}.'.num'},      my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
                              $env{'course.'.$env{'request.course.id'}.'.domain'});  
     $r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row().      $r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row().
           '<th>'.&mt('Time').'</th><th>'.&mt('User').'</th><th>'.&mt('Extent').'</th><th>'.&mt('Users').'</th><th>'.            '<th>'.&mt('Time').'</th><th>'.&mt('User').'</th><th>'.&mt('Extent').'</th><th>'.&mt('Users').'</th><th>'.
           &mt('Parameter').'</th><th>'.&mt('Part').'</th><th>'.&mt('New Value').'</th><th>'.&mt('Announce').'</th>'.            &mt('Parameter').'</th><th>'.&mt('Part').'</th><th>'.&mt('New Value').'</th><th>'.&mt('Announce').'</th>'.
Line 4536  sub update_slots { Line 4624  sub update_slots {
                           action  => 'reserve',                            action  => 'reserve',
                           context => 'parameter',                            context => 'parameter',
                         );                          );
         &Apache::lonnet::instructor_log('slotreservationslog',\%storehash,          &Apache::lonnet::write_log('course','slotreservationslog',\%storehash,
                                         '',$uname,$udom,$cnum,$cdom);                                     '',$uname,$udom,$cnum,$cdom);
   
         &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash,          &Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash,
                                         '',$uname,$udom,$uname,$udom);                                     '',$uname,$udom,$uname,$udom);
     }      }
     return $success;      return $success;
 }  }
Line 4570  sub delete_slots { Line 4658  sub delete_slots {
                                   action  => 'release',                                    action  => 'release',
                                   context => 'parameter',                                    context => 'parameter',
                                 );                                  );
                 &Apache::lonnet::instructor_log('slotreservationslog',\%storehash,                  &Apache::lonnet::write_log('course','slotreservationslog',\%storehash,
                                                 1,$uname,$udom,$cnum,$cdom);                                             1,$uname,$udom,$cnum,$cdom);
                 &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash,                  &Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash,
                                                 1,$uname,$udom,$uname,$udom);                                             1,$uname,$udom,$uname,$udom);
             }              }
         }          }
     }      }
Line 4612  sub oldversion_warning { Line 4700  sub oldversion_warning {
     my ($name,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;      my ($name,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;
     my $desc;      my $desc;
     my %stringtypes = (      my %stringtypes = (
                         type    => 'string_questiontype',                          type         => 'string_questiontype',
                         lenient => 'string_lenient'                          lenient      => 'string_lenient',
                           retrypartial => 'string_yesno',
                           discussvote  => 'string_discussvote',
                           examcode     => 'string_examcode',
                       );                        );
     if (exists($stringtypes{$name})) {      if (exists($stringtypes{$name})) {
         if (ref($strings{$stringtypes{$name}}) eq 'ARRAY') {          if ($name eq 'examcode') {
               $desc = $value;
           } elsif (ref($strings{$stringtypes{$name}}) eq 'ARRAY') {
             foreach my $possibilities (@{ $strings{$stringtypes{$name}} }) {              foreach my $possibilities (@{ $strings{$stringtypes{$name}} }) {
                 next unless (ref($possibilities) eq 'ARRAY');                  next unless (ref($possibilities) eq 'ARRAY');
                 my ($parmval, $description) = @{ $possibilities };                  my ($parmval, $description) = @{ $possibilities };

Removed from v.1.516  
changed lines
  Added in v.1.541


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