Diff for /loncom/interface/lonparmset.pm between versions 1.552 and 1.554

version 1.552, 2015/08/16 20:45:41 version 1.554, 2015/09/13 21:48:05
Line 777  sub storeparm_by_symb_inner { Line 777  sub storeparm_by_symb_inner {
   
   
 sub valout {  sub valout {
     my ($value,$type,$editable)=@_;      my ($value,$type,$name,$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 791  sub valout { Line 791  sub valout {
         }          }
     } else {      } else {
         if ($type eq 'date_interval') {          if ($type eq 'date_interval') {
             my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value);              my ($totalsecs,$donebutton) = split(/_/,$value);
               my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($totalsecs);
             my @timer;              my @timer;
             $year=$year-70;              $year=$year-70;
             $mday--;              $mday--;
Line 824  sub valout { Line 825  sub valout {
                 push(@timer,&mt('[quant,_1,sec]',0));                  push(@timer,&mt('[quant,_1,sec]',0));
             }              }
             $result.=join(", ",@timer);              $result.=join(", ",@timer);
               if ($donebutton eq 'done') {
                   $result .= ' '.&mt('+ "done"');
               }
         } 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 850  sub plink { Line 854  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,1);      my $valout = &valout($value,$type,$parmname,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 1138  ENDHEAD Line 1142  ENDHEAD
   
 sub print_row {  sub print_row {
     my ($r,$which,$part,$name,$symbp,$rid,$default,$defaulttype,$display,$defbgone,      my ($r,$which,$part,$name,$symbp,$rid,$default,$defaulttype,$display,$defbgone,
     $defbgtwo,$defbgthree,$parmlev,$uname,$udom,$csec,$cgroup,$usersgroups)=@_;      $defbgtwo,$defbgthree,$parmlev,$uname,$udom,$csec,$cgroup,$usersgroups,$noeditgrp)=@_;
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);      my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
   
 # get the values for the parameter in cascading order  # get the values for the parameter in cascading order
 # empty levels will remain empty  # empty levels will remain empty
     my ($result,@outpar)=&parmval($$part{$which}.'.'.$$name{$which},      my ($result,@outpar)=&parmval($$part{$which}.'.'.$$name{$which},
Line 1177  sub print_row { Line 1182  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]);      my $effective_parm = &valout($outpar[$result],$typeoutpar[$result],$thismarker);
     my ($othergrp,$grp_parm,$controlgrp);      my ($othergrp,$grp_parm,$controlgrp);
   
     if ($parmlev eq 'general') {      if ($parmlev eq 'general') {
         if ($uname) {          if ($uname) {
             &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);
         } elsif ($cgroup) {          } elsif ($cgroup) {
             &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp);
         } elsif ($csec) {          } elsif ($csec) {
             &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);
         } else {          } else {
Line 1195  sub print_row { Line 1200  sub print_row {
         if ($uname) {          if ($uname) {
             &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);
         } elsif ($cgroup) {          } elsif ($cgroup) {
             &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp);
         } elsif ($csec) {          } elsif ($csec) {
             &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);
         } else {          } else {
Line 1232  sub print_row { Line 1237  sub print_row {
         }          }
   
         if ($cgroup) {          if ($cgroup) {
             &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp);
             &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp);
             &print_td($r,4,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display);              &print_td($r,4,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp);
         }          }
   
         if ($uname) {          if ($uname) {
Line 1255  sub print_row { Line 1260  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).'&nbsp;'.                    &valout($sessionval,$sessionvaltype,$$name{$which}).'&nbsp;'.
                   '</font></td>');                    '</font></td>');
     }      }
     $r->print('</tr>');      $r->print('</tr>');
Line 1263  sub print_row { Line 1268  sub print_row {
 }  }
   
 sub print_td {  sub print_td {
     my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$display)=@_;      my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$display,$noeditgrp)=@_;
     $r->print('<td style="background-color:'.(($result==$which)?'#AAFFAA':$defbg).      $r->print('<td style="background-color:'.(($result==$which)?'#AAFFAA':$defbg).
               ';" align="center">');                ';" align="center">');
     my $nolink = 0;      my $nolink = 0;
Line 1271  sub print_td { Line 1276  sub print_td {
         $nolink = 1;          $nolink = 1;
     } elsif (($env{'request.course.sec'} ne '') && ($which > 9)) {      } elsif (($env{'request.course.sec'} ne '') && ($which > 9)) {
         $nolink = 1;          $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 1281  sub print_td { Line 1290  sub print_td {
         }          }
     }      }
     if ($nolink) {      if ($nolink) {
         $r->print(&valout($$outpar[$which],$$typeoutpar[$which]));          $r->print(&valout($$outpar[$which],$$typeoutpar[$which],$mprefix));
     } else {      } else {
         $r->print(&plink($$typeoutpar[$which],          $r->print(&plink($$typeoutpar[$which],
                          $$display{$value},$$outpar[$which],                           $$display{$value},$$outpar[$which],
Line 1306  sub print_usergroups { Line 1315  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);              $grp_parm = &valout($coursereply,$resulttype,$what);
         }          }
         $grp_parm = &valout($coursereply,$resulttype);          $grp_parm = &valout($coursereply,$resulttype,$what);
         $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 1756  sub partmenu { Line 1765  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 1765  sub usermenu { Line 1774  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='';
Line 1809  function group_or_section(caller) { Line 1823  function group_or_section(caller) {
 // ]]>  // ]]>
 </script>  </script>
 |;  |;
     } elsif ($currsec eq '') {      } else {
         $sections .= qq|          $sections .= qq|
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
Line 1849  function group_or_section(caller) { Line 1863  function group_or_section(caller) {
         $r->print(&Apache::lonhtmlcommon::row_title(&mt('Group/Section')));          $r->print(&Apache::lonhtmlcommon::row_title(&mt('Group/Section')));
         $r->print($sections.$groups);          $r->print($sections.$groups);
         $r->print(&Apache::lonhtmlcommon::row_closure());          $r->print(&Apache::lonhtmlcommon::row_closure());
       } else {
           $r->print($sections); 
     }      }
   
     $r->print(&Apache::lonhtmlcommon::row_title(&mt('User')));      $r->print(&Apache::lonhtmlcommon::row_title(&mt('User')));
Line 2048  sub levelmenu { Line 2064  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);
   
     my (@possibles,$disabled);      my (@possibles,$disabled);
     if ($env{'request.course.sec'} ne '') {      if ($env{'request.course.sec'} ne '') {
Line 2060  sub sectionmenu { Line 2076  sub sectionmenu {
     } else {      } else {
         @possibles = ('all',sort(keys(%sectionhash)));          @possibles = ('all',sort(keys(%sectionhash)));
     }      }
     $r->print('<select name="Section" multiple="multiple" size="8"'.$disabled.'>');      my $output = '<select name="Section" multiple="multiple" size="8"'.$disabled.'>';
     foreach my $s (@possibles) {      foreach my $s (@possibles) {
         $r->print('    <option value="'.$s.'"');          $output .= '    <option value="'.$s.'"';
         foreach my $sec (@{$selectedsections}) {          if ((@{$selectedsections}) && (grep(/^\Q$s\E$/,@{$selectedsections}))) {  
             if ($s eq $sec) {              $output .= ' selected="selected"';
                 $r->print(' selected="selected"');  
                 last;  
             }  
         }          }
         $r->print('>'.$s."</option>\n");          $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 my $grp (@{$selectedgroups}) {          if ((@{$selectedgroups}) && (grep(/^\Q$group\E$/,\@{$selectedgroups}))) {
             if ($group eq $grp) {              $output .=  ' selected="selected"';
                 $r->print(' selected="selected"');  
                 last;  
             }  
         }          }
         $r->print('>'.$group."</option>\n");          $output .= '>'."$group</option>\n";
     }      }
     $r->print("</select>\n");      $output .= "</select>\n";
       return $output;
 }  }
   
   
 sub keysplit {  sub keysplit {
     my $keyp=shift;      my $keyp=shift;
     return (split(/\,/,$keyp));      return (split(/\,/,$keyp));
Line 2217  sub assessparms { Line 2233  sub assessparms {
         $csec = $env{'request.course.sec'};              $csec = $env{'request.course.sec'};    
     }      }
   
   # Check group privs.
     $cgroup=$env{'form.cgroup'};      $cgroup=$env{'form.cgroup'};
       my $noeditgrp; 
       if ($cgroup ne '') {
           unless (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
               if (($env{'request.course.groups'} eq '') || 
                   (!grep(/^\Q$cgroup\E$/,split(/,/,$env{'request.course.groups'})))) {
                   $noeditgrp = 1;
               }
           }
       }
   
     if      ($udom=$env{'form.udom'}) {      if      ($udom=$env{'form.udom'}) {
     } elsif ($udom=$env{'request.role.domain'}) {      } elsif ($udom=$env{'request.role.domain'}) {
Line 2346  sub assessparms { Line 2372  sub assessparms {
             if (($env{'request.course.sec'} ne '') && ($markers[$i] =~ /\&(7|8|9)$/)) {              if (($env{'request.course.sec'} ne '') && ($markers[$i] =~ /\&(7|8|9)$/)) {
                 next if ($csec ne $env{'request.course.sec'});                  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 2376  sub assessparms { Line 2405  sub assessparms {
                         }                          }
                     }                      }
                 }                  }
             } elsif ($markers[$i] =~ /_(type|lenient|retrypartial|discussvote|examcode|printstartdate|printenddate|acc)\&\d+$/) {              } elsif ($markers[$i] =~ /_(type|lenient|retrypartial|discussvote|examcode|printstartdate|printenddate|acc|interval)\&\d+$/) {
                 $name = $1;                  $name = $1;
                 my $val = $values[$i];                  my $val = $values[$i];
                 my $valmatch = '';                  my $valmatch = '';
Line 2413  sub assessparms { Line 2442  sub assessparms {
                             }                              }
                         }                          }
                     }                      }
                   } elsif ($name eq 'interval') {
                       my $intervaltype = &get_intervaltype($name);
                       my $intervalmatch = &standard_interval_matches($intervaltype);
                       if (ref($intervalmatch) eq 'ARRAY') {
                           foreach my $item (@{$intervalmatch}) {
                               if (ref($item) eq 'ARRAY') {
                                   my ($regexpname,$pattern) = @{$item};
                                   if ($pattern ne '') {
                                       if ($val =~ /$pattern/) {
                                           $valmatch = $regexpname;
                                           $val = '';
                                           last;
                                       }
                                   }
                               }
                           }
                       }
                 }                  }
                 $needsrelease =                  $needsrelease =
                     $Apache::lonnet::needsrelease{"parameter:$name:$val:$valmatch"};                      $Apache::lonnet::needsrelease{"parameter:$name:$val:$valmatch"};
Line 2509  ENDPARMSELSCRIPT Line 2555  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 2541  ENDPARMSELSCRIPT Line 2587  ENDPARMSELSCRIPT
                   '<br />');                    '<br />');
         $r->print(&Apache::lonhtmlcommon::topic_bar('',&mt('Additional Display Specification (optional)')));          $r->print(&Apache::lonhtmlcommon::topic_bar('',&mt('Additional Display Specification (optional)')));
         $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());
         $r->print('<p>'          $r->print('<p>'
Line 2753  ENDTABLEHEADFOUR Line 2799  ENDTABLEHEADFOUR
                             &print_row($r,$item,\%part,\%name,\%symbp,$rid,\%default,                              &print_row($r,$item,\%part,\%name,\%symbp,$rid,\%default,
                                        \%type,\%display,$defbgone,$defbgtwo,                                         \%type,\%display,$defbgone,$defbgtwo,
                                        $defbgthree,$parmlev,$uname,$udom,$csec,                                         $defbgthree,$parmlev,$uname,$udom,$csec,
                                                             $cgroup,\@usersgroups);                                         $cgroup,\@usersgroups,$noeditgrp);
                         }                          }
                     }                      }
                 }                  }
Line 2875  ENDTABLEHEADFOUR Line 2921  ENDTABLEHEADFOUR
                     $r->print(&Apache::loncommon::start_data_table_row());                      $r->print(&Apache::loncommon::start_data_table_row());
                     &print_row($r,$item,\%part,\%name,\%symbp,$mapid,\%default,                      &print_row($r,$item,\%part,\%name,\%symbp,$mapid,\%default,
                            \%type,\%display,$defbgone,$defbgtwo,$defbgthree,                             \%type,\%display,$defbgone,$defbgtwo,$defbgthree,
                            $parmlev,$uname,$udom,$csec,$cgroup);                             $parmlev,$uname,$udom,$csec,$cgroup,'',$noeditgrp);
                 }                  }
                 $r->print(&Apache::loncommon::end_data_table().'</p>'                  $r->print(&Apache::loncommon::end_data_table().'</p>'
                          .'</div>'                           .'</div>'
Line 2965  ENDMAPONE Line 3011  ENDMAPONE
                 $r->print(&Apache::loncommon::start_data_table_row());                  $r->print(&Apache::loncommon::start_data_table_row());
                 &print_row($r,$item,\%part,\%name,\%symbp,$mapid,\%default,                  &print_row($r,$item,\%part,\%name,\%symbp,$mapid,\%default,
                        \%type,\%display,$defbgone,$defbgtwo,$defbgthree,                         \%type,\%display,$defbgone,$defbgtwo,$defbgthree,
                                    $parmlev,$uname,$udom,$csec,$cgroup);                                     $parmlev,$uname,$udom,$csec,$cgroup,'',$noeditgrp);
             }              }
             $r->print(&Apache::loncommon::end_data_table()              $r->print(&Apache::loncommon::end_data_table()
                      .'</p>'                       .'</p>'
Line 3120  sub storedata { Line 3166  sub storedata {
             }              }
         } elsif ($cmd eq 'dateinterval') {          } elsif ($cmd eq 'dateinterval') {
             $data=&get_date_interval_from_form($thiskey);              $data=&get_date_interval_from_form($thiskey);
               if ($thiskey =~ /\.interval$/) {
                   $name = 'interval';
                   my $intervaltype = &get_intervaltype($name);
                   my $intervalmatch = &standard_interval_matches($intervaltype);
                   if (ref($intervalmatch) eq 'ARRAY') {
                       foreach my $item (@{$intervalmatch}) {
                           if (ref($item) eq 'ARRAY') {
                               my ($regexpname,$pattern) = @{$item};
                               if ($pattern ne '') {
                                   if ($data =~ /$pattern/) {
                                       $valmatch = $regexpname;
                                       $valchk = '';
                                       last;
                                   }
                               }
                           }
                       }
                   }
               }
             $typeof=$env{'form.typeof_'.$thiskey};              $typeof=$env{'form.typeof_'.$thiskey};
             $text = &mt('Saved modified date for');              $text = &mt('Saved modified date for');
         }          }
Line 3244  sub listdata { Line 3309  sub listdata {
     my ($secidx,%grouphash);      my ($secidx,%grouphash);
     if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {      if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
         $secidx = &Apache::loncoursedata::CL_SECTION();          $secidx = &Apache::loncoursedata::CL_SECTION();
         %grouphash = &Apache::longroup::coursegroups();          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 {
Line 3398  sub listdata { Line 3467  sub listdata {
                 );                  );
             }              }
         } elsif ($thistype eq 'date_interval') {          } elsif ($thistype eq 'date_interval') {
             $r->print(&date_interval_selector($thiskey,              $r->print(&date_interval_selector($thiskey,$name,
                       $$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 3416  sub listdata { Line 3485  sub listdata {
     return $foundkeys;      return $foundkeys;
 }  }
   
   
 sub date_interval_selector {  
     my ($thiskey, $showval, $readonly) = @_;  
     my $result;  
     foreach my $which (['days', 86400, 31],  
                ['hours', 3600, 23],  
                ['minutes', 60, 59],  
                ['seconds',  1, 59]) {  
     my ($name, $factor, $max) = @{ $which };  
     my $amount = int($showval/$factor);  
     $showval  %= $factor;  
     my %select = ((map {$_ => $_} (0..$max)),  
               'select_form_order' => [0..$max]);  
     $result .= &Apache::loncommon::select_form($amount,$name.'_'.$thiskey,  
                            \%select,'',$readonly);  
     $result .= ' '.&mt($name);  
     }  
     unless ($readonly) {  
         $result .= '<input type="hidden" name="dateinterval_'.$thiskey.'" />';  
     }  
     return $result;  
   
 }  
   
 sub get_date_interval_from_form {  sub get_date_interval_from_form {
     my ($key) = @_;      my ($key) = @_;
     my $seconds = 0;      my $seconds = 0;
Line 3452  sub get_date_interval_from_form { Line 3497  sub get_date_interval_from_form {
         $seconds += $env{'form.'.$name.'_'.$key} * $factor;          $seconds += $env{'form.'.$name.'_'.$key} * $factor;
     }      }
     }      }
       if (($key =~ /\.interval$/) && ($env{'form.done_'.$key} eq '_done')) {
           $seconds .= $env{'form.done_'.$key};
       }
     return $seconds;      return $seconds;
 }  }
   
Line 3747  sub string_selector { Line 3795  sub string_selector {
     return $result;      return $result;
 }  }
   
   my %intervals =
       (
        'date_interval'
                => [[ 'done', 'Yes' ],
                    [ '', 'No' ]],
       );
   
   my %intervalmatches = (
            'date_interval'
                 => [['done','\d+_done$'],],
       );
   
   my %intervaltypes = (
                         interval => 'date_interval',
       );
   
   sub standard_interval_matches {
       my ($interval_type) = @_;
       if (ref($intervalmatches{$interval_type}) eq 'ARRAY') {
           return $intervalmatches{$interval_type};
       }
       return;
   }
   
   sub get_intervaltype {
       my ($name) = @_;
       if (exists($intervaltypes{$name})) {
           return $intervaltypes{$name};
       }
       return;
   }
   
   sub standard_interval_options {
       my ($interval_type) = @_;
       if (ref($intervals{$interval_type}) eq 'ARRAY') {
           return $intervals{$interval_type};
       }
       return;
   }
   
   sub date_interval_selector {
       my ($thiskey, $name, $showval, $readonly) = @_;
       my ($result,%skipval);
       if ($name eq 'interval') {
           my $intervaltype = &get_intervaltype($name);
           my ($got_chostname,$chostname,$cmajor,$cminor);
           foreach my $possibilities (@{ $intervals{$intervaltype} }) {
               next unless (ref($possibilities) eq 'ARRAY');
               my ($parmval, $description) = @{ $possibilities };
               my $parmmatch;
               if (ref($intervalmatches{$intervaltype}) eq 'ARRAY') {
                   foreach my $item (@{$intervalmatches{$intervaltype}}) {
                       if (ref($item) eq 'ARRAY') {
                           if ($parmval eq $item->[0]) {
                               $parmmatch = $parmval;
                               $parmval = '';
                               last;
                           }
                       }
                   }
               }
               my $needsrelease=$Apache::lonnet::needsrelease{"parameter:$name:$parmval:$parmmatch"};
               if ($needsrelease) {
                   unless ($got_chostname) {
                       ($chostname,$cmajor,$cminor)=&parameter_release_vars();
                       $got_chostname = 1;
                   }
                   my $needsnewer=&parameter_releasecheck($name,$parmval,$parmmatch,
                                                          $needsrelease,$cmajor,$cminor);
                   if ($needsnewer) {
                       if ($parmmatch ne '') {
                           $skipval{$parmmatch} = 1;
                       } elsif ($parmval ne '') {
                           $skipval{$parmval} = 1;
                       }
                   }
               }
           }
       }
   
       my $currval = $showval;
       foreach my $which (['days', 86400, 31],
                  ['hours', 3600, 23],
                  ['minutes', 60, 59],
                  ['seconds',  1, 59]) {
       my ($name, $factor, $max) = @{ $which };
       my $amount = int($showval/$factor);
       $showval  %= $factor;
       my %select = ((map {$_ => $_} (0..$max)),
                 'select_form_order' => [0..$max]);
       $result .= &Apache::loncommon::select_form($amount,$name.'_'.$thiskey,
                              \%select,'',$readonly);
       $result .= ' '.&mt($name);
       }
       if ($name eq 'interval') {
           unless ($skipval{'done'}) {
               my $checkedon = '';
               my $checkedoff = ' checked="checked"';
               if ($currval =~ /^(\d+)_done$/) {
                   $checkedon = ' checked="checked"';
                   $checkedoff = '';
               }
               $result .= '<span class="LC_nobreak">'.('&nbsp;' x 3).'('.&mt('Include "done" button').
                          '<label><input type="radio" value="_done" name="done_'.$thiskey.'"'.$checkedon.' />'.
                          &mt('Yes').'</label>'.
                          '<label><input type="radio" value="" name="done_'.$thiskey.'"'.$checkedoff.' />'.
                          &mt('No').'</label>)</span>';
           }
       }
       unless ($readonly) {
           $result .= '<input type="hidden" name="dateinterval_'.$thiskey.'" />';
       }
       return $result;
   }
   
 sub oldversion_warning {  sub oldversion_warning {
     my ($name,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;      my ($name,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;
     my $desc;      my $desc;
Line 3950  ENDOVER Line 4113  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>');

Removed from v.1.552  
changed lines
  Added in v.1.554


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