Diff for /loncom/interface/lonparmset.pm between versions 1.522.2.23.4.2 and 1.522.2.24

version 1.522.2.23.4.2, 2017/11/16 23:48:30 version 1.522.2.24, 2018/09/03 20:23:37
Line 752  sub storeparm_by_symb_inner { Line 752  sub storeparm_by_symb_inner {
   
   
 sub valout {  sub valout {
     my ($value,$type,$name,$editable)=@_;      my ($value,$type,$editable)=@_;
     my $result = '';      my $result = '';
     # Values of zero are valid.      # Values of zero are valid.
     if (! $value && $value ne '0') {      if (! $value && $value ne '0') {
Line 766  sub valout { Line 766  sub valout {
         }          }
     } else {      } else {
         if ($type eq 'date_interval') {          if ($type eq 'date_interval') {
             my ($totalsecs,$donesuffix) = split(/_/,$value,2);              my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value);
             my ($usesdone,$donebuttontext,$proctor,$secretkey);  
             if ($donesuffix =~ /^done\:([^\:]+)\:(.*)$/) {  
                 $donebuttontext = $1;  
                 (undef,$proctor,$secretkey) = split(/_/,$2);  
                 $usesdone = 'done';  
             } elsif ($donesuffix =~ /^done(|_.+)$/) {  
                 $donebuttontext = &mt('Done');  
                 ($usesdone,$proctor,$secretkey) = split(/_/,$donesuffix);  
             }  
             my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($totalsecs);  
             my @timer;              my @timer;
             $year=$year-70;              $year=$year-70;
             $mday--;              $mday--;
Line 809  sub valout { Line 799  sub valout {
                 push(@timer,&mt('[quant,_1,sec]',0));                  push(@timer,&mt('[quant,_1,sec]',0));
             }              }
             $result.=join(", ",@timer);              $result.=join(", ",@timer);
             if ($usesdone eq 'done') {  
                 if ($secretkey) {  
                     $result .= ' '.&mt('+ "[_1]" with proctor key: [_2]',$donebuttontext,$secretkey);  
                 } else {  
                     $result .= ' + "'.$donebuttontext.'"';  
                 }  
             }  
         } elsif (&isdateparm($type)) {          } elsif (&isdateparm($type)) {
             $result = &Apache::lonlocal::locallocaltime($value).              $result = &Apache::lonlocal::locallocaltime($value).
         &date_sanity_info($value);          &date_sanity_info($value);
Line 842  sub plink { Line 825  sub plink {
     my ($parmname)=((split(/\&/,$marker))[1]=~/\_([^\_]+)$/);      my ($parmname)=((split(/\&/,$marker))[1]=~/\_([^\_]+)$/);
     my ($hour,$min,$sec,$val)=&preset_defaults($parmname);      my ($hour,$min,$sec,$val)=&preset_defaults($parmname);
     unless (defined($winvalue)) { $winvalue=$val; }      unless (defined($winvalue)) { $winvalue=$val; }
     my $valout = &valout($value,$type,$parmname,1);      my $valout = &valout($value,$type,1);
     my $unencmarker = $marker;      my $unencmarker = $marker;
     foreach my $item (\$type, \$dis, \$winvalue, \$marker, \$return, \$call,      foreach my $item (\$type, \$dis, \$winvalue, \$marker, \$return, \$call,
               \$hour, \$min, \$sec) {                \$hour, \$min, \$sec) {
Line 922  function showHide_courseContent() { Line 905  function showHide_courseContent() {
 COURSECONTENTSCRIPT  COURSECONTENTSCRIPT
 }  }
   
 sub done_proctor_js {  
     return <<"END";  
 function toggleSecret(form,radio,key) {  
     var radios = form[radio+key];  
     if (radios.length) {  
         for (var i=0; i<radios.length; i++) {  
             if (radios[i].checked) {  
                 if (radios[i].value == '_done_proctor') {  
                     if (document.getElementById('done_'+key+'_proctorkey')) {  
                         document.getElementById('done_'+key+'_proctorkey').type='text';  
                     }  
                 } else {  
                     if (document.getElementById('done_'+key+'_proctorkey')) {  
                         document.getElementById('done_'+key+'_proctorkey').type='hidden';  
                         document.getElementById('done_'+key+'_proctorkey').value='';  
                     }  
                 }  
             }  
         }  
     }  
 }  
 END  
   
 }  
   
 sub startpage {  sub startpage {
     my ($r,$psymb) = @_;      my ($r,$psymb) = @_;
   
Line 1036  sub print_row { Line 994  sub print_row {
     my $thismarker=$which;      my $thismarker=$which;
     $thismarker=~s/^parameter\_//;      $thismarker=~s/^parameter\_//;
     my $mprefix=$rid.'&'.$thismarker.'&';      my $mprefix=$rid.'&'.$thismarker.'&';
     my $effective_parm = &valout($outpar[$result],$typeoutpar[$result],$thismarker);      my $effective_parm = &valout($outpar[$result],$typeoutpar[$result]);
     my ($othergrp,$grp_parm,$controlgrp);      my ($othergrp,$grp_parm,$controlgrp);
   
     if ($parmlev eq 'general') {      if ($parmlev eq 'general') {
Line 1116  sub print_row { Line 1074  sub print_row {
         my $sessionvaltype=$typeoutpar[$result];          my $sessionvaltype=$typeoutpar[$result];
         if (!defined($sessionvaltype)) { $sessionvaltype=$$defaulttype{$which}; }          if (!defined($sessionvaltype)) { $sessionvaltype=$$defaulttype{$which}; }
         $r->print('<td style="background-color:#999999;" align="center"><font color="#FFFFFF">'.          $r->print('<td style="background-color:#999999;" align="center"><font color="#FFFFFF">'.
                   &valout($sessionval,$sessionvaltype,$$name{$which}).'&nbsp;'.                    &valout($sessionval,$sessionvaltype).'&nbsp;'.
                   '</font></td>');                    '</font></td>');
     }      }
     $r->print('</tr>');      $r->print('</tr>');
Line 1133  sub print_td { Line 1091  sub print_td {
     } else {      } else {
         if ($which == 11 || $which == 12) {          if ($which == 11 || $which == 12) {
             $nolink = 1;              $nolink = 1;
           } elsif (($env{'request.course.sec'} ne '') && ($which > 9)) {
               $nolink = 1;
           } elsif ($which == 4 || $which ==  5 || $which == 6) {
               if ($noeditgrp) {
                   $nolink = 1;
               }
         } elsif ($mprefix =~ /availablestudent\&$/) {          } elsif ($mprefix =~ /availablestudent\&$/) {
             if ($which > 3) {              if ($which > 3) {
                 $nolink = 1;                  $nolink = 1;
Line 1144  sub print_td { Line 1108  sub print_td {
         }          }
     }      }
     if ($nolink) {      if ($nolink) {
         $r->print(&valout($$outpar[$which],$$typeoutpar[$which],$mprefix));          $r->print(&valout($$outpar[$which],$$typeoutpar[$which]));
     } else {      } else {
         $r->print(&plink($$typeoutpar[$which],          $r->print(&plink($$typeoutpar[$which],
                          $$display{$value},$$outpar[$which],                           $$display{$value},$$outpar[$which],
Line 1169  sub print_usergroups { Line 1133  sub print_usergroups {
     if (($coursereply) && ($cgroup ne $resultgroup)) {      if (($coursereply) && ($cgroup ne $resultgroup)) {
         if ($result > 3) {          if ($result > 3) {
             $bgcolor = '#AAFFAA';              $bgcolor = '#AAFFAA';
             $grp_parm = &valout($coursereply,$resulttype,$what);              $grp_parm = &valout($coursereply,$resulttype);
         }          }
         $grp_parm = &valout($coursereply,$resulttype,$what);          $grp_parm = &valout($coursereply,$resulttype);
         $output = '<td style="background-color:'.$bgcolor.';" align="center">';          $output = '<td style="background-color:'.$bgcolor.';" align="center">';
         if ($resultgroup && $resultlevel) {          if ($resultgroup && $resultlevel) {
             $output .= '<small><b>'.$resultgroup.'</b> ('.$resultlevel.'): </small>'.$grp_parm;              $output .= '<small><b>'.$resultgroup.'</b> ('.$resultlevel.'): </small>'.$grp_parm;
Line 1626  sub partmenu { Line 1590  sub partmenu {
 }  }
   
 sub usermenu {  sub usermenu {
     my ($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,$usersgroups)=@_;      my ($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,$usersgroups,$pssymb)=@_;
     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');
     my $selscript=&Apache::loncommon::studentbrowser_javascript();      my $selscript=&Apache::loncommon::studentbrowser_javascript();
Line 1635  sub usermenu { Line 1599  sub usermenu {
     my %sectionhash = &Apache::loncommon::get_sections();      my %sectionhash = &Apache::loncommon::get_sections();
   
     my $groups;      my $groups;
     my %grouphash = &Apache::longroup::coursegroups();      my %grouphash;
       if (($pssymb) || &Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
           %grouphash = &Apache::longroup::coursegroups();
       } elsif ($env{'request.course.groups'} ne '') {
           map { $grouphash{$_} = 1; } split(/:/,$env{'request.course.groups'});
       }
   
     my $g_s_header='';      my $g_s_header='';
     my $g_s_footer='';      my $g_s_footer='';
   
     if (%sectionhash) {      my $currsec = $env{'request.course.sec'};
       if ($currsec) {
           $sections=&mt('Section:').' '.$currsec;
           if (%grouphash) {
               $sections .= ';'.('&nbsp;' x2);
           }
       } elsif (%sectionhash && $currsec eq '') {
         $sections=&mt('Section:').' <select name="csec"';          $sections=&mt('Section:').' <select name="csec"';
         if (%grouphash && $parmlev ne 'full') {          if (%grouphash && $parmlev ne 'full') {
             $sections .= qq| onchange="group_or_section('csec')" |;              $sections .= qq| onchange="group_or_section('csec')" |;
Line 1654  sub usermenu { Line 1629  sub usermenu {
         $sections.='</select>';          $sections.='</select>';
     }      }
   
     if (%sectionhash && %grouphash && $parmlev ne 'full') {      if (%sectionhash && %grouphash && $parmlev ne 'full' && $currsec eq '') {
         $sections .= '&nbsp;'.&mt('or').'&nbsp;';          $sections .= '&nbsp;'.&mt('or').'&nbsp;';
         $sections .= qq|          $sections .= qq|
 <script type="text/javascript">  <script type="text/javascript">
Line 1673  function group_or_section(caller) { Line 1648  function group_or_section(caller) {
 // ]]>  // ]]>
 </script>  </script>
 |;  |;
     } else {      } elsif ($currsec eq '') {
         $sections .= qq|          $sections .= qq|
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
Line 1687  function group_or_section(caller) { Line 1662  function group_or_section(caller) {
   
     if (%grouphash) {      if (%grouphash) {
         $groups=&mt('Group:').' <select name="cgroup"';          $groups=&mt('Group:').' <select name="cgroup"';
         if (%sectionhash && $env{'form.action'} eq 'settable') {          if (%sectionhash && $env{'form.action'} eq 'settable' && $currsec eq '') {
             $groups .= qq| onchange="group_or_section('cgroup')" |;              $groups .= qq| onchange="group_or_section('cgroup')" |;
         }          }
         $groups .= '>';          $groups .= '>';
Line 1911  sub levelmenu { Line 1886  sub levelmenu {
   
   
 sub sectionmenu {  sub sectionmenu {
     my ($r,$selectedsections)=@_;      my ($selectedsections)=@_;
     my %sectionhash = &Apache::loncommon::get_sections();      my %sectionhash = &Apache::loncommon::get_sections();
     return if (!%sectionhash);      return '' if (!%sectionhash);
   
     $r->print('<select name="Section" multiple="multiple" size="8">');      my (@possibles,$disabled);
     foreach my $s ('all',sort keys %sectionhash) {      if ($env{'request.course.sec'} ne '') {
     $r->print('    <option value="'.$s.'"');          @possibles = ($env{'request.course.sec'});
     foreach (@{$selectedsections}) {          $selectedsections = [$env{'request.course.sec'}];
         if ($s eq $_) {          $disabled = ' disabled="disabled"';
         $r->print(' selected="selected"');      } else {
         last;          @possibles = ('all',sort(keys(%sectionhash)));
         }  
     }      }
     $r->print('>'.$s."</option>\n");      my $output = '<select name="Section" multiple="multiple" size="8"'.$disabled.'>';
       foreach my $s (@possibles) {
           $output .= '    <option value="'.$s.'"';
           if ((@{$selectedsections}) && (grep(/^\Q$s\E$/,@{$selectedsections}))) {
               $output .= ' selected="selected"';
           }
           $output .= '>'."$s</option>\n";
     }      }
     $r->print("</select>\n");      $output .= "</select>\n");
       return $output;
 }  }
   
 sub groupmenu {  sub groupmenu {
     my ($r,$selectedgroups)=@_;      my ($selectedgroups)=@_;
     my %grouphash = &Apache::longroup::coursegroups();      my %grouphash;
     return if (!%grouphash);      if (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
           %grouphash = &Apache::longroup::coursegroups();
       } elsif ($env{'request.course.groups'} ne '') {
           map { $grouphash{$_} = 1; } split(/:/,$env{'request.course.groups'});
       }
       return '' if (!%grouphash);
   
     $r->print('<select name="Group" multiple="multiple" size="8">');      my $output = '<select name="Group" multiple="multiple" size="8">';
     foreach my $group (sort(keys(%grouphash))) {      foreach my $group (sort(keys(%grouphash))) {
     $r->print('    <option value="'.$group.'"');          $output .= '    <option value="'.$group.'"';
     foreach (@{$selectedgroups}) {          if ((@{$selectedgroups}) && (grep(/^\Q$group\E$/,\@{$selectedgroups}))) {
         if ($group eq $_) {              $output .= ' selected="selected"';
         $r->print(' selected="selected"');  
         last;  
         }          }
           $output .= '>'.$group."</option>\n";
     }      }
     $r->print('>'.$group."</option>\n");      $output .= "</select>\n";
     }      return $output;
     $r->print("</select>\n");  
 }  }
   
   
 sub keysplit {  sub keysplit {
     my $keyp=shift;      my $keyp=shift;
     return (split(/\,/,$keyp));      return (split(/\,/,$keyp));
Line 2067  sub assessparms { Line 2050  sub assessparms {
     my $message='';      my $message='';
   
     $csec=$env{'form.csec'};      $csec=$env{'form.csec'};
       if ($env{'request.course.sec'} ne '') {
           $csec = $env{'request.course.sec'};    
       }
   
   # Check group privs.
     $cgroup=$env{'form.cgroup'};      $cgroup=$env{'form.cgroup'};
     my $noeditgrp;      my $noeditgrp;
     if ($cgroup ne '') {      if ($cgroup ne '') {
         unless (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {          unless (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
             if (($env{'request.course.groups'} eq '') ||              if (($env{'request.course.groups'} eq '') ||
                 (!grep(/^\Q$cgroup\E$/,split(/,/,$env{'request.course.groups'})))) {                  (!grep(/^\Q$cgroup\E$/,split(/:/,$env{'request.course.groups'})))) {
                 $noeditgrp = 1;                  $noeditgrp = 1;
             }              }
         }          }
Line 2194  sub assessparms { Line 2182  sub assessparms {
         my ($got_chostname,$chostname,$cmajor,$cminor);          my ($got_chostname,$chostname,$cmajor,$cminor);
         my $totalstored = 0;          my $totalstored = 0;
         my $now = time;          my $now = time;
   
         for (my $i=0;$i<=$#markers;$i++) {          for (my $i=0;$i<=$#markers;$i++) {
             my ($needsrelease,$needsnewer,$name);              my ($needsrelease,$needsnewer,$name);
               if (($env{'request.course.sec'} ne '') && ($markers[$i] =~ /\&(7|8|9)$/)) {
                   next if ($csec ne $env{'request.course.sec'});
               }
               if ($markers[$i] =~ /\&(6|5|4)$/) {
                   next if ($noeditgrp);
               }
             if ($markers[$i] =~ /^[\d.]+\&0_availablestudent\&(1|2|3)$/) {              if ($markers[$i] =~ /^[\d.]+\&0_availablestudent\&(1|2|3)$/) {
                 my (@ok_slots,@fail_slots,@del_slots);                  my (@ok_slots,@fail_slots,@del_slots);
                 my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);                  my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
Line 2341  ENDPARMSELSCRIPT Line 2334  ENDPARMSELSCRIPT
         # Step 3          # Step 3
         $r->print(&Apache::lonhtmlcommon::topic_bar(3,&mt('User Specification (optional)'),'parmstep3'));          $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,$pssymb);
         $r->print(&Apache::lonhtmlcommon::row_closure(1));          $r->print(&Apache::lonhtmlcommon::row_closure(1));
         $r->print(&Apache::lonhtmlcommon::end_pick_box());          $r->print(&Apache::lonhtmlcommon::end_pick_box());
   
Line 2380  ENDPARMSELSCRIPT Line 2373  ENDPARMSELSCRIPT
                   ($env{'form.psprt'}?' checked="checked"':'').' />'.                    ($env{'form.psprt'}?' checked="checked"':'').' />'.
                   &mt('Show all parts').                    &mt('Show all parts').
                   '</label></td></tr>');                    '</label></td></tr>');
         &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups);          &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups,$pssymb);
         $r->print(&Apache::lonhtmlcommon::row_closure(1));          $r->print(&Apache::lonhtmlcommon::row_closure(1));
         $r->print(&Apache::lonhtmlcommon::end_pick_box());          $r->print(&Apache::lonhtmlcommon::end_pick_box());
         $r->print('<p>'          $r->print('<p>'
Line 3071  sub listdata { Line 3064  sub listdata {
     my $foundkeys=0;      my $foundkeys=0;
     my %keyorder=&standardkeyorder();      my %keyorder=&standardkeyorder();
   
       my ($secidx,%grouphash);
       if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
           $secidx = &Apache::loncoursedata::CL_SECTION();
           if (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
               %grouphash = &Apache::longroup::coursegroups();
           } elsif ($env{'request.course.groups'} ne '') {
               map { $grouphash{$_} = 1; } split(/:/,$env{'request.course.groups'});
           }
       }
   
     foreach my $thiskey (sort {      foreach my $thiskey (sort {
     my ($astudent,$ares,$apart,$aparm) = &parse_listdata_key($a,$listdata);      my ($astudent,$ares,$apart,$aparm) = &parse_listdata_key($a,$listdata);
     my ($bstudent,$bres,$bpart,$bparm) = &parse_listdata_key($b,$listdata);      my ($bstudent,$bres,$bpart,$bparm) = &parse_listdata_key($b,$listdata);
Line 3113  sub listdata { Line 3116  sub listdata {
     } keys %{$listdata}) {      } keys %{$listdata}) {
   
     if ($$listdata{$thiskey.'.type'}) {      if ($$listdata{$thiskey.'.type'}) {
             my $thistype=$$listdata{$thiskey.'.type'};          my $thistype=$$listdata{$thiskey.'.type'};
             if ($$resourcedata{$thiskey.'.type'}) {          if ($$resourcedata{$thiskey.'.type'}) {
         $thistype=$$resourcedata{$thiskey.'.type'};              $thistype=$$resourcedata{$thiskey.'.type'};
         }          }
         my ($middle,$part,$name)=          my ($middle,$part,$name)=
         ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);          ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
         my $section=&mt('All Students');          my $section=&mt('All Students');
         if ($middle=~/^\[(.*)\]/) {          if ($middle=~/^\[(.*)\]/) {
         my $issection=$1;              my $issection=$1;
         if ($issection=~/^useropt\:($match_username)\:($match_domain)/) {              if ($issection=~/^useropt\:($match_username)\:($match_domain)/) {
             $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);                  my ($stuname,$studom) = ($1,$2);
         } else {                  if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
             $section=&mt('Group/Section').': '.$issection;                      if (ref($classlist) eq 'HASH') {
         }                          if (ref($classlist->{$stuname.':'.$studom}) eq 'ARRAY') {
         $middle=~s/^\[(.*)\]//;                              next unless ($classlist->{$stuname.':'.$studom}->[$secidx] eq $env{'request.course.sec'});
                           }
                       }
                   }
                   $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);
               } else {
                   if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
                       if (exists($grouphash{$issection})) {
                           $section=&mt('Group').': '.$issection;
                       } elsif ($issection eq $env{'request.course.sec'}) {
                           $section = &mt('Section').': '.$issection;
                       } else {
                           next;
                       }
                   } else {
                       $section=&mt('Group/Section').': '.$issection;
                   }
               }
               $middle=~s/^\[(.*)\]//;
           } elsif (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
               $readonly = 1;
         }          }
         $middle=~s/\.+$//;          $middle=~s/\.+$//;
         $middle=~s/^\.+//;          $middle=~s/^\.+//;
         my $realm='<span class="LC_parm_scope_all">'.&mt('All Resources').'</span>';          my $realm='<span class="LC_parm_scope_all">'.&mt('All Resources').'</span>';
   
         if ($middle=~/^(.+)\_\_\_\(all\)$/) {          if ($middle=~/^(.+)\_\_\_\(all\)$/) {
         $realm='<span class="LC_parm_scope_folder">'.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' <br /><span class="LC_parm_folder">('.$1.')</span></span>';          $realm='<span class="LC_parm_scope_folder">'.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' <br /><span class="LC_parm_folder">('.$1.')</span></span>';
         } elsif ($middle) {          } elsif ($middle) {
Line 3201  sub listdata { Line 3225  sub listdata {
               );                );
             }              }
         } elsif ($thistype eq 'date_interval') {          } elsif ($thistype eq 'date_interval') {
             $r->print(&date_interval_selector($thiskey,$name,              $r->print(&date_interval_selector($thiskey,
                       $$resourcedata{$thiskey},$readonly));                        $$resourcedata{$thiskey},$readonly));
         } elsif ($thistype =~ m/^string/) {          } elsif ($thistype =~ m/^string/) {
             $r->print(&string_selector($thistype,$thiskey,              $r->print(&string_selector($thistype,$thiskey,
Line 3221  sub listdata { Line 3245  sub listdata {
   
   
 sub date_interval_selector {  sub date_interval_selector {
     my ($thiskey, $pname, $showval, $readonly) = @_;      my ($thiskey, $showval, $readonly) = @_;
     my ($result,%skipval);      my $result;
     my $currval = $showval;  
     foreach my $which (['days', 86400, 31],      foreach my $which (['days', 86400, 31],
                ['hours', 3600, 23],                 ['hours', 3600, 23],
                ['minutes', 60, 59],                 ['minutes', 60, 59],
Line 3237  sub date_interval_selector { Line 3260  sub date_interval_selector {
                            \%select,'',$readonly);                             \%select,'',$readonly);
     $result .= ' '.&mt($name);      $result .= ' '.&mt($name);
     }      }
     if ($pname eq 'interval') {  
         unless ($skipval{'done'}) {  
             my $checkedon = '';  
             my $checkedproc = '';  
             my $currproctorkey = '';  
             my $currprocdisplay = 'hidden';  
             my $currdonetext = &mt('Done');  
             my $checkedoff = ' checked="checked"';  
             if ($currval =~ /^(?:\d+)_done$/) {  
                 $checkedon = ' checked="checked"';  
                 $checkedoff = '';  
             } elsif ($currval =~ /^(?:\d+)_done\:([^\:]+)\:$/) {  
                 $currdonetext = $1;  
                 $checkedon = ' checked="checked"';  
                 $checkedoff = '';  
             } elsif ($currval =~ /^(?:\d+)_done_proctor_(.+)$/) {  
                 $currproctorkey = $1;  
                 $checkedproc = ' checked="checked"';  
                 $checkedoff = '';  
                 $currprocdisplay = 'text';  
             } elsif ($currval =~ /^(?:\d+)_done\:([^\:]+)\:_proctor_(.+)$/) {  
                 $currdonetext = $1;  
                 $currproctorkey = $2;  
                 $checkedproc = ' checked="checked"';  
                 $checkedoff = '';  
                 $currprocdisplay = 'text';  
             }  
             my $onclick = ' onclick="toggleSecret(this.form,'."'done_','$thiskey'".');"';  
             my $disabled;  
             if ($readonly) {  
                 $disabled = ' disabled="disabled"';  
             }  
             $result .= '<br /><span class="LC_nobreak">'.&mt('Include "done" button').  
                        '<label><input type="radio" value="" name="done_'.$thiskey.'"'.$checkedoff.$onclick.$disabled.' />'.  
                        &mt('No').'</label>'.('&nbsp;'x2).  
                        '<label><input type="radio" value="_done" name="done_'.$thiskey.'"'.$checkedon.$onclick.$disabled.' />'.  
                        &mt('Yes').'</label>'.('&nbsp;'x2).  
                        '<label><input type="radio" value="_done_proctor" name="done_'.$thiskey.'"'.$checkedproc.$onclick.$disabled.' />'.  
                        &mt('Yes, with proctor key').'</label>'.  
                        '<input type="'.$currprocdisplay.'" id="done_'.$thiskey.'_proctorkey" '.  
                        'name="done_'.$thiskey.'_proctorkey" value="'.&HTML::Entities::encode($currproctorkey,'"<>&').'"'.$disabled.' /></span><br />'.  
                        '<span class="LC_nobreak">'.&mt('Button text').': '.  
                        '<input type="text" name="done_'.$thiskey.'_buttontext" value="'.&HTML::Entities::encode($currdonetext,'"<>&').'"'.$disabled.' /></span>';  
         }  
     }  
     unless ($readonly) {      unless ($readonly) {
         $result .= '<input type="hidden" name="dateinterval_'.$thiskey.'" />';          $result .= '<input type="hidden" name="dateinterval_'.$thiskey.'" />';
     }      }
Line 3491  sub newoverview { Line 3469  sub newoverview {
 '.  '.
             &Apache::lonhtmlcommon::resize_scrollbox_js('params')."\n".              &Apache::lonhtmlcommon::resize_scrollbox_js('params')."\n".
             &showhide_js()."\n".              &showhide_js()."\n".
             &done_proctor_js()."\n".  
 '// ]]>  '// ]]>
 </script>  </script>
 ';  ';
Line 3537  ENDOVER Line 3514  ENDOVER
             @selected_sections = ('all');              @selected_sections = ('all');
         }          }
     }      }
       if ($env{'request.course.sec'} ne '') {
           @selected_sections = ($env{'request.course.sec'});
       }
     my @selected_groups =      my @selected_groups =
         &Apache::loncommon::get_env_multiple('form.Group');          &Apache::loncommon::get_env_multiple('form.Group');
   
Line 3576  ENDOVER Line 3556  ENDOVER
     &displaymenu($r,\%allparms,\@pscat,\%keyorder);      &displaymenu($r,\%allparms,\@pscat,\%keyorder);
     $r->print(&Apache::lonhtmlcommon::start_pick_box());      $r->print(&Apache::lonhtmlcommon::start_pick_box());
     $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View')));      $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View')));
       my $sectionselector = &sectionmenu(\@selected_sections);
       my $groupselector = &groupmenu(\@selected_groups);
     $r->print('<table>'.      $r->print('<table>'.
               '<tr><th>'.&mt('Parts').'</th><th>'.&mt('Section(s)').                '<tr><th>'.&mt('Parts').'</th>');
               '</th><th>'.&mt('Group(s)').'</th></tr><tr><td>');      if ($sectionselector) {
           $r->print('<th>'.&mt('Section(s)').'</th>');
       }
       if ($groupselector) {
           $r->print('<th>'.&mt('Group(s)').'</th>');
       }
       $r->print('</tr><tr><td>');
     &partmenu($r,\%allparts,\@psprt);      &partmenu($r,\%allparts,\@psprt);
     $r->print('</td><td>');      $r->print('</td>');
     &sectionmenu($r,\@selected_sections);      if ($sectionselector) {
     $r->print('</td><td>');          $r->print('<td>'.$sectionselector.'</td>');
     &groupmenu($r,\@selected_groups);      }
     $r->print('</td></tr></table>');      if ($groupselector) {
     #$r->print('</td></tr></table>');          $r->print('<td>'.$groupselector.'</td>');
       }
       $r->print('</tr></table>');
     $r->print(&Apache::lonhtmlcommon::row_closure(1));      $r->print(&Apache::lonhtmlcommon::row_closure(1));
     $r->print(&Apache::lonhtmlcommon::end_pick_box());      $r->print(&Apache::lonhtmlcommon::end_pick_box());
     $r->print('</div></div>');      $r->print('</div></div>');
Line 3668  sub overview { Line 3658  sub overview {
     my ($r,$parm_permission) = @_;      my ($r,$parm_permission) = @_;
     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'};  
     my $js = '<script type="text/javascript">'."\n".  
              '// <![CDATA['."\n".  
              &done_proctor_js()."\n".  
              '// ]]>'."\n".  
              '</script>'."\n";  
     my $readonly = 1;      my $readonly = 1;
     if ($parm_permission->{'edit'}) {      if ($parm_permission->{'edit'}) {
         undef($readonly);          undef($readonly);
     }      }
     &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',$js);      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);
     $r->print('<form method="post" action="/adm/parmset?action=setoverview" name="parmform">');      $r->print('<form method="post" action="/adm/parmset?action=setoverview" name="parmform">');
Line 4558  my %standard_parms; Line 4542  my %standard_parms;
 my %standard_parms_types;  my %standard_parms_types;
   
 sub load_parameter_names {  sub load_parameter_names {
     open(my $config,"<","$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");      open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");
     while (my $configline=<$config>) {      while (my $configline=<$config>) {
     if ($configline !~ /\S/ || $configline=~/^\#/) { next; }      if ($configline !~ /\S/ || $configline=~/^\#/) { next; }
     chomp($configline);      chomp($configline);
Line 4691  sub parm_change_log { Line 4675  sub parm_change_log {
                 !exists($parmlog{$id}{'logentry'}{$changed.'.type'}));                  !exists($parmlog{$id}{'logentry'}{$changed.'.type'}));
             my ($realm,$section,$parmname,$part,$what,$middle,$uname,$udom,$issection,$realmdescription)=              my ($realm,$section,$parmname,$part,$what,$middle,$uname,$udom,$issection,$realmdescription)=
         &components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'},undef,undef,$typeflag);          &components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'},undef,undef,$typeflag);
           if ($env{'request.course.sec'} ne '') {
               next if (($issection ne '') && ($issection ne $env{'request.course.sec'}));
               if ($uname ne '') {
                   my $stusection = &Apache::lonnet::getsection($uname,$udom,$env{'request.course.id'});
                   next if (($stusection ne '-1') && ($stusection ne $env{'request.course.sec'}));
               }
           }
         if ($env{'form.displayfilter'} eq 'currentfolder') {          if ($env{'form.displayfilter'} eq 'currentfolder') {
         if ($folder) {          if ($folder) {
             if ($middle!~/^\Q$folder\E/) { next; }              if ($middle!~/^\Q$folder\E/) { next; }

Removed from v.1.522.2.23.4.2  
changed lines
  Added in v.1.522.2.24


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