Diff for /loncom/interface/courseprefs.pm between versions 1.66 and 1.70

version 1.66, 2014/06/07 19:13:41 version 1.70, 2015/04/28 13:20:41
Line 463  sub handler { Line 463  sub handler {
                      help => 'Course_Prefs_Display',                       help => 'Course_Prefs_Display',
                      ordered => ['default_xml_style','pageseparators',                       ordered => ['default_xml_style','pageseparators',
                                  'disable_receipt_display','texengine',                                   'disable_receipt_display','texengine',
                                  'tthoptions'],                                   'tthoptions','uselcmath','usejsme'],
                       itemtext => {                        itemtext => {
                           default_xml_style       => 'Default XML style file',                            default_xml_style       => 'Default XML style file',
                           pageseparators          => 'Visibly Separate Items on Pages',                            pageseparators          => 'Visibly Separate Items on Pages',
                           disable_receipt_display => 'Disable display of problem receipts',                            disable_receipt_display => 'Disable display of problem receipts',
                           texengine               => 'Force use of a specific math rendering engine',                            texengine               => 'Force use of a specific math rendering engine',
                           tthoptions              => 'Default set of options to pass to tth/m when converting TeX',                            tthoptions              => 'Default set of options to pass to tth/m when converting TeX',
                             uselcmath               => 'Student formula entry uses inline preview, not DragMath pop-up',
                             usejsme                 => 'Molecule editor uses JSME (HTML5) in place of JME (Java)',
                                   },                                    },
                   },                    },
         'grading' =>          'grading' =>
Line 1405  sub store_changes { Line 1407  sub store_changes {
                                         $displayval = &Apache::lonlocal::locallocaltime($displayval);                                          $displayval = &Apache::lonlocal::locallocaltime($displayval);
                                     } elsif ($key eq 'categories') {                                      } elsif ($key eq 'categories') {
                                         $displayval = $env{'form.categories_display'};                                          $displayval = $env{'form.categories_display'};
                                     } elsif ($key eq 'canuse_pdfforms') {                                      } elsif (($key eq 'canuse_pdfforms') || ($key eq 'usejsme') || ($key eq 'uselcmath')) {
                                         if ($changes->{$item}{$key} eq '1') {                                          if ($changes->{$item}{$key} eq '1') {
                                             $displayval = &mt('Yes');                                              $displayval = &mt('Yes');
                                         } elsif ($changes->{$item}{$key} eq '0') {                                          } elsif ($changes->{$item}{$key} eq '0') {
Line 2319  sub display_loncaparev_constraints { Line 2321  sub display_loncaparev_constraints {
     my (%fromparam,%rowspan,%bymap,%byresource,@scopeorder,%toshow,%allmaps,      my (%fromparam,%rowspan,%bymap,%byresource,@scopeorder,%toshow,%allmaps,
         %byresponsetype,%bysubmission,%fromblocks);          %byresponsetype,%bysubmission,%fromblocks);
     @scopeorder = ('all','section/group','user');      @scopeorder = ('all','section/group','user');
       my $now = time;
     my $resourcedata = &Apache::lonparmset::readdata($cnum,$cdom);      my $resourcedata = &Apache::lonparmset::readdata($cnum,$cdom);
     if (ref($resourcedata) eq 'HASH') {      if (ref($resourcedata) eq 'HASH') {
         foreach my $key (keys(%{$resourcedata})) {          foreach my $key (keys(%{$resourcedata})) {
               my %found;
             foreach my $item (keys(%Apache::lonrelrequtils::checkparms)) {              foreach my $item (keys(%Apache::lonrelrequtils::checkparms)) {
                 if ($key =~ /(\Q$item\E)$/) {                  if ($key =~ /(\Q$item\E)$/) {
                      if (ref($Apache::lonrelrequtils::checkparms{$item}) eq 'ARRAY') {                      if (ref($Apache::lonrelrequtils::checkparms{$item}) eq 'ARRAY') {
                          my $value = $resourcedata->{$key};                          my $value = $resourcedata->{$key};
                          if ($item eq 'examcode') {                          if ($item eq 'examcode') {
                              if (&Apache::lonnet::validCODE($value)) {                              if (&Apache::lonnet::validCODE($value)) {
                                  $value = 'valid';                                  $value = 'valid';
                              } else {                              } else {
                                  $value = '';                                  $value = '';
                              }                              }
                          }                          } elsif ($item eq 'printstartdate') {
                          my ($middle,$scope,$which,$level,$map,$resource);                              if ($value =~ /^\d+$/) {
                          if (grep(/^\Q$value\E$/,@{$Apache::lonrelrequtils::checkparms{$item}})) {                                  if ($value > $now) {
                              my $stdtype = &Apache::lonparmset::standard_parameter_types($item);                                      $value = 'future';
                              my $stdname = &Apache::lonparmset::standard_parameter_names($item);                                  }
                              my $valname = &get_param_description($stdtype,$value);                              }
                              my $rev = $Apache::lonnet::needsrelease{'parameter:'.$item.':'.$value};                          } elsif ($item eq 'printenddate') {
                              my $start = $cid.'.';                              if ($value =~ /^\d+$/) {
                              if ($key =~ /^\Q$start\E(\[useropt\:($match_username\:$match_domain)\]\.)/) {                                  if ($value < $now) {
                                  $middle = $1;                                      $value = 'past';
                                  $which = $2;                                  }
                                  $scope = 'user';                               }
                              } elsif ($key =~ /^\Q$start\E(\[(\w+)\]\.)/) {                          }
                                  $middle = $1;                          if (grep(/^\Q$value\E$/,@{$Apache::lonrelrequtils::checkparms{$item}})) {
                                  $which = $2;                              my $stdtype = &Apache::lonparmset::standard_parameter_types($item);
                                  $scope = 'section/group';                              $found{$item}{'valname'} = &get_param_description($stdtype,$value);
                              } else {                              $found{$item}{'rev'} = $Apache::lonnet::needsrelease{'parameter:'.$item.':'.$value.':'};
                                  $scope = 'all';                          }
                              }                      }
                              my $what="$stdname=$valname";                  }
                              if ($key =~ /^\Q$start$middle\E\w+\.\Q$item\E$/) {              }
                                  $level = 'general';              foreach my $item (keys(%Apache::lonrelrequtils::checkparmsmatch)) {
                                  if ($scope eq 'all') {                  if (ref($Apache::lonrelrequtils::checkparmsmatch{$item}) eq 'ARRAY') {
                                      if (ref($fromparam{$rev}{$scope}) eq 'ARRAY') {                      my $value = $resourcedata->{$key};
                                          unless(grep(/^\Q$what\E$/,@{$fromparam{$rev}{$scope}})) {                      foreach my $valuematch (@{$Apache::lonrelrequtils::checkparmsmatch{$item}}) {
                                              push(@{$fromparam{$rev}{$scope}},$what);                          if ($value =~ /$valuematch/) {
                                          }                              my $stdtype = &Apache::lonparmset::standard_parameter_types($item);
                                      } else {                              $found{$item}{'valname'} = &get_param_description($stdtype,$value,1); 
                                          push(@{$fromparam{$rev}{$scope}},$what);                              $found{$item}{'rev'} = 
                                      }                                  $Apache::lonnet::needsrelease{'parameter:'.$item.'::'.$valuematch};
                                  } else {                              last;
                                      if (ref($fromparam{$rev}{$scope}{$which}) eq 'ARRAY') {                          }
                                          unless (grep(/^\Q$what\E$/,@{$fromparam{$rev}{$scope}{$which}})) {                      }
                                              push(@{$fromparam{$rev}{$scope}{$which}},$what);                  }
                                          }              }
                                      } else {              foreach my $item (keys(%found)) {
                                          push(@{$fromparam{$rev}{$scope}{$which}},$what);                  my $stdname = &Apache::lonparmset::standard_parameter_names($item);
                                      }                  my $rev = $found{$item}{'rev'};
                                  }                  my $valname = $found{$item}{'valname'};
                                  $rowspan{$rev} ++;                  my ($middle,$scope,$which,$level,$map,$resource);  
                              } elsif ($key =~ /^\Q$start$middle\E(.+)___\(all\).\w+\.\Q$item\E$/) {                  my $start = $cid.'.';
                                  $level = 'folder';                  if ($key =~ /^\Q$start\E(\[useropt\:($match_username\:$match_domain)\]\.)/) {
                                  $map = $1;                      $middle = $1;
                                  if ($scope eq 'all') {                      $which = $2;
                                      if (ref($bymap{$map}{$rev}{$scope}) eq 'ARRAY') {                      $scope = 'user'; 
                                          unless(grep(/^\Q$what\E$/,@{$bymap{$map}{$rev}{$scope}})) {                  } elsif ($key =~ /^\Q$start\E(\[(\w+)\]\.)/) {
                                              push(@{$bymap{$map}{$rev}{$scope}},$what);                      $middle = $1;
                                          }                      $which = $2;
                                      } else {                      $scope = 'section/group';
                                          push(@{$bymap{$map}{$rev}{$scope}},$what);                  } else {
                                      }                      $scope = 'all';
                                  } else {                  }
                                      if (ref($bymap{$map}{$rev}{$scope}{$which}) eq 'ARRAY') {                  my $what="$stdname=$valname";
                                          unless(grep(/^\Q$what\E$/,@{$bymap{$map}{$rev}{$scope}{$which}})) {                  if ($key =~ /^\Q$start$middle\E\w+\.\Q$item\E$/) {
                                              push(@{$bymap{$map}{$rev}{$scope}{$which}},$what);                      $level = 'general';
                                          }                      if ($scope eq 'all') {
                                      } else {                          if (ref($fromparam{$rev}{$scope}) eq 'ARRAY') {
                                          push(@{$bymap{$map}{$rev}{$scope}{$which}},$what);                              unless(grep(/^\Q$what\E$/,@{$fromparam{$rev}{$scope}})) {
                                      }                                  push(@{$fromparam{$rev}{$scope}},$what);
                                  }                              }
                              } elsif ($key =~ /^\Q$start$middle\E(.+)\.\w+\.\Q$item\E$/) {                          } else {
                                  $level = 'resource';                              push(@{$fromparam{$rev}{$scope}},$what);
                                  $resource = $1;                          }
                                  if ($scope eq 'all') {                      } else {
                                      if (ref($byresource{$resource}{$rev}{$scope}) eq 'ARRAY') {                          if (ref($fromparam{$rev}{$scope}{$which}) eq 'ARRAY') {
                                          unless(grep(/^\Q$what\E$/,@{$byresource{$resource}{$rev}{$scope}})) {                              unless (grep(/^\Q$what\E$/,@{$fromparam{$rev}{$scope}{$which}})) {
                                              push(@{$byresource{$resource}{$rev}{$scope}},$what);                                  push(@{$fromparam{$rev}{$scope}{$which}},$what);
                                          }                              }
                                      } else {                          } else {
                                          push(@{$byresource{$resource}{$rev}{$scope}},$what);                              push(@{$fromparam{$rev}{$scope}{$which}},$what);
                                      }                          }
                                  } else {                      }
                                      if (ref($byresource{$resource}{$rev}{$scope}{$which}) eq 'ARRAY') {                      $rowspan{$rev} ++;
                                          unless (grep(/^\Q$what\E$/,@{$byresource{$resource}{$rev}{$scope}{$which}})) {                  } elsif ($key =~ /^\Q$start$middle\E(.+)___\(all\).\w+\.\Q$item\E$/) {
                                              push(@{$byresource{$resource}{$rev}{$scope}{$which}},$what);                      $level = 'folder';
                                          }                      $map = $1;
                                      } else {                      if ($scope eq 'all') {
                                          push(@{$byresource{$resource}{$rev}{$scope}{$which}},$what);                          if (ref($bymap{$map}{$rev}{$scope}) eq 'ARRAY') {
                                      }                              unless(grep(/^\Q$what\E$/,@{$bymap{$map}{$rev}{$scope}})) {
                                  }                                  push(@{$bymap{$map}{$rev}{$scope}},$what);
                              }                              }
                           } else {
                               push(@{$bymap{$map}{$rev}{$scope}},$what);
                           }
                       } else {
                           if (ref($bymap{$map}{$rev}{$scope}{$which}) eq 'ARRAY') {
                               unless(grep(/^\Q$what\E$/,@{$bymap{$map}{$rev}{$scope}{$which}})) {
                                   push(@{$bymap{$map}{$rev}{$scope}{$which}},$what);
                               }
                           } else {
                               push(@{$bymap{$map}{$rev}{$scope}{$which}},$what);
                           }
                       }
                   } elsif ($key =~ /^\Q$start$middle\E(.+)\.\w+\.\Q$item\E$/) {
                       $level = 'resource';
                       $resource = $1;
                       if ($scope eq 'all') {
                           if (ref($byresource{$resource}{$rev}{$scope}) eq 'ARRAY') {
                               unless(grep(/^\Q$what\E$/,@{$byresource{$resource}{$rev}{$scope}})) {
                                   push(@{$byresource{$resource}{$rev}{$scope}},$what);
                               }
                           } else {
                               push(@{$byresource{$resource}{$rev}{$scope}},$what);
                           }
                       } else {
                           if (ref($byresource{$resource}{$rev}{$scope}{$which}) eq 'ARRAY') {
                               unless (grep(/^\Q$what\E$/,@{$byresource{$resource}{$rev}{$scope}{$which}})) {
                                   push(@{$byresource{$resource}{$rev}{$scope}{$which}},$what);
                               }
                           } else {
                               push(@{$byresource{$resource}{$rev}{$scope}{$which}},$what);
                         }                          }
                     }                      }
                 }                  }
Line 2611  sub display_loncaparev_constraints { Line 2645  sub display_loncaparev_constraints {
         }          }
         foreach my $map (keys(%allmaps)) {          foreach my $map (keys(%allmaps)) {
             my $mapres = $navmap->getResourceByUrl($map);              my $mapres = $navmap->getResourceByUrl($map);
             my $mapsymb = $mapres->symb();  
             $toshow{$mapsymb} = 1;  
             if (ref($mapres)) {              if (ref($mapres)) {
                   my $mapsymb = $mapres->symb();
                   $toshow{$mapsymb} = 1;
                 my $pcslist = $mapres->map_hierarchy();                  my $pcslist = $mapres->map_hierarchy();
                 if ($pcslist ne '') {                  if ($pcslist ne '') {
                     foreach my $pc (split(/,/,$pcslist)) {                      foreach my $pc (split(/,/,$pcslist)) {
Line 2836  sub releases_by_map { Line 2870  sub releases_by_map {
 }  }
   
 sub get_param_description {  sub get_param_description {
     my ($stdtype,$value) = @_;      my ($stdtype,$value,$regexp) = @_;
     my $name = $value;      my ($name,$parammatches,$paramstrings,@possibles);
     my $paramstrings = &Apache::lonparmset::standard_string_options($stdtype);      $paramstrings = &Apache::lonparmset::standard_string_options($stdtype);
     unless (ref($paramstrings) eq 'ARRAY') {      if ($regexp) {
         return $name;          $parammatches = &Apache::lonparmset::standard_string_matches($stdtype);
           if (ref($parammatches) eq 'ARRAY') {
               @possibles = @{$parammatches};
           } else {
               undef($regexp);
               $name = $value;
           }
       }
       unless ($regexp) {
           $name = $value;
           if (ref($paramstrings) eq 'ARRAY') {
               @possibles = @{$paramstrings};
           } else {
               return $name;
           }
     }      }
     foreach my $possibilities (@{$paramstrings}) {      foreach my $possibilities (@possibles) {
         next unless (ref($possibilities) eq 'ARRAY');          next unless (ref($possibilities) eq 'ARRAY');
         my ($thing, $description) = @{ $possibilities };          my $gotregexmatch = '';
         if ($thing eq $value) {          if ($regexp) {
             $name = $description;              last if ($gotregexmatch);
             last;              my ($item,$pattern) = @{ $possibilities };
               if ($value =~ /$pattern/) {
                   if (ref($paramstrings) eq 'ARRAY') {
                       foreach my $possibles (@{$paramstrings}) {
                           next unless (ref($possibles) eq 'ARRAY');
                           my ($thing,$description) = @{$possibles};
                           if ($thing eq $item) {
                               $name = $description;
                               $gotregexmatch = 1;
                               last;
                           }
                       }
                       last if ($gotregexmatch);
                   }
               }
           } else {
               my ($thing,$description) = @{ $possibilities };
               if ($thing eq $value) {
                   $name = $description;
                   last;
               }
         }          }
     }      }
     return $name;      return $name;
Line 3684  sub print_appearance { Line 3752  sub print_appearance {
                    input => 'textbox',                     input => 'textbox',
                    size => 40,                     size => 40,
                  },                   },
            'uselcmath' => {
                      text => '<b>'.&mt($itemtext->{'uselcmath'}).'</b>',
                      input => 'radio',
                    },
            'usejsme'  => {
                      text => '<b>'.&mt($itemtext->{'usejsme'}).'</b>',
                      input => 'radio',
                    },
     );      );
     return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype,'appearance');      return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype,'appearance');
 }  }
Line 3946  sub item_table_row_end { Line 4022  sub item_table_row_end {
 }  }
   
 sub yesno_radio {  sub yesno_radio {
     my ($item,$settings) = @_;      my ($item,$settings,$unsetdefault,$valueyes,$valueno) = @_;
     my $itemon = ' ';      my $itemon = ' ';
     my $itemoff = ' checked="checked" ';      my $itemoff = ' checked="checked" ';
       if (($valueyes eq '') && ($valueno eq '')) {
           $valueyes = 'yes';
           $valueno = '';
       }
     if (ref($settings) eq 'HASH') {      if (ref($settings) eq 'HASH') {
         if ($settings->{$item} eq 'yes') {          if ($settings->{$item} eq $valueyes) {
             $itemon = $itemoff;              $itemon = $itemoff;
             $itemoff = ' ';              $itemoff = ' ';
         }          }
           unless (exists($settings->{$item})) {
               if ($unsetdefault eq $valueyes) {
                   $itemon = $itemoff;
                   $itemoff = ' ';
               }
           }
     }      }
     return '<span class="LC_nobreak"><label>'.      return '<span class="LC_nobreak"><label>'.
            '<input type="radio" name="'.$item.'"'.             '<input type="radio" name="'.$item.'"'.
            $itemon.' value="yes" />'.&mt('Yes').'</label>&nbsp;'.             $itemon.' value="'.$valueyes.'" />'.&mt('Yes').'</label>&nbsp;'.
            '<label><input type="radio" name="'.$item.'"'.             '<label><input type="radio" name="'.$item.'"'.
            $itemoff.' value="" />'.&mt('No').'</label></span>';             $itemoff.' value="'.$valueno.'" />'.&mt('No').'</label></span>';
 }  }
   
 sub select_from_options {  sub select_from_options {
Line 4044  sub make_item_rows { Line 4130  sub make_item_rows {
                    &Apache::lonhtmlcommon::date_setter('display',$item,                     &Apache::lonhtmlcommon::date_setter('display',$item,
                                                        $settings->{$item});                                                         $settings->{$item});
             } elsif ($items->{$item}{input} eq 'radio') {              } elsif ($items->{$item}{input} eq 'radio') {
                 $datatable .= &yesno_radio($item,$settings);                  my ($unsetdefault,$valueyes,$valueno);
                   if (($item eq 'usejsme') || ($item eq 'uselcmath')) {
                        my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
                        unless ($domdefs{$item} eq '0') {
                            $unsetdefault = 1;
                        }
                        $valueyes = "1";
                        $valueno = "0";
                   }
                   $datatable .= &yesno_radio($item,$settings,$unsetdefault,$valueyes,$valueno);
             } elsif ($items->{$item}{input} eq 'selectbox') {              } elsif ($items->{$item}{input} eq 'selectbox') {
                 my $curr = $settings->{$item};                  my $curr = $settings->{$item};
                 $datatable .=                  $datatable .=
Line 4120  sub nothidepriv_row { Line 4215  sub nothidepriv_row {
                           '<span class="LC_nobreak"><label>'.                            '<span class="LC_nobreak"><label>'.
                           '<input type="radio" name="'.$item.'_'.$user.'"'.                            '<input type="radio" name="'.$item.'_'.$user.'"'.
                           $hideon.' value="" />'.&mt('Hidden').'</label>&nbsp;'.                            $hideon.' value="" />'.&mt('Hidden').'</label>&nbsp;'.
                           '<label><input type="radio" name="'.$item.'_'.$user.'"'.                          $hideoff.' value="yes" />'.&mt('Shown').'</label></span></td>'.                            '<label><input type="radio" name="'.$item.'_'.$user.'"'.
                             $hideoff.' value="yes" />'.&mt('Shown').'</label></span></td>'.
                           '</tr>';                            '</tr>';
         }          }
         $datatable .= '</table>';          $datatable .= '</table>';

Removed from v.1.66  
changed lines
  Added in v.1.70


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