Diff for /loncom/interface/courseprefs.pm between versions 1.49.2.21 and 1.49.2.30

version 1.49.2.21, 2016/10/24 18:10:08 version 1.49.2.30, 2024/07/03 16:20:50
Line 375  sub handler { Line 375  sub handler {
                      help => 'Course_Prefs_General',                       help => 'Course_Prefs_General',
                      ordered => ['owner','co-owners','loncaparev','description',                       ordered => ['owner','co-owners','loncaparev','description',
                                  'clonedfrom','courseid','uniquecode','categories',                                   'clonedfrom','courseid','uniquecode','categories',
                                  'hidefromcat','externalsyllabus','cloners','url',                                   'hidefromcat','syllabus','cloners','url',
                                  'rolenames'],                                   'rolenames'],
                      itemtext => {                       itemtext => {
                                    'owner'            => $lt{'ownr'},                                     'owner'            => $lt{'ownr'},
Line 386  sub handler { Line 386  sub handler {
                                    'categories'       => $lt{'catg'},                                     'categories'       => $lt{'catg'},
                                    'hidefromcat'      => $lt{'excc'},                                     'hidefromcat'      => $lt{'excc'},
                                    'cloners'          => $lt{'clon'},                                      'cloners'          => $lt{'clon'}, 
                                    'externalsyllabus' => 'Syllabus status',                                     'syllabus'         => 'Syllabus status',
                                    'url'              => 'Top Level Map',                                     'url'              => 'Top Level Map',
                                    'rolenames'        => $lt{'rept'},                                     'rolenames'        => $lt{'rept'},
                                    'loncaparev'       => $lt{'lcrv'},                                     'loncaparev'       => $lt{'lcrv'},
Line 464  sub handler { Line 464  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','uselcmath','usejsme'],                                   'tthoptions','uselcmath','usejsme','inline_chem'],
                       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',
Line 473  sub handler { Line 473  sub handler {
                           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',                            uselcmath               => 'Student formula entry uses inline preview, not DragMath pop-up',
                           usejsme                 => 'Molecule editor uses JSME (HTML5) in place of JME (Java)',                            usejsme                 => 'Molecule editor uses JSME (HTML5) in place of JME (Java)',
                             inline_chem             => 'Chemical reaction response uses inline preview, not pop-up',
                                   },                                    },
                   },                    },
         'grading' =>          'grading' =>
Line 542  sub handler { Line 543  sub handler {
                                                   $cnum,undef,\@allitems,                                                    $cnum,undef,\@allitems,
                                                   'coursepref',$parm_permission);                                                    'coursepref',$parm_permission);
     } elsif (($phase eq 'display') && ($parm_permission->{'display'})) {      } elsif (($phase eq 'display') && ($parm_permission->{'display'})) {
         my $jscript = &get_jscript($cid,$cdom,$phase,$crstype,\%values);          my $noedit;
           if (ref($parm_permission) eq 'HASH') {
               unless ($parm_permission->{'process'}) {
                   $noedit = 1;
               }
           }
           my $jscript = &get_jscript($cid,$cdom,$phase,$crstype,\%values,$noedit);
         my @allitems = &get_allitems(%prefs);          my @allitems = &get_allitems(%prefs);
         &Apache::lonconfigsettings::display_settings($r,$cdom,$phase,$context,          &Apache::lonconfigsettings::display_settings($r,$cdom,$phase,$context,
             \@prefs_order,\%prefs,\%values,undef,$jscript,\@allitems,$crstype,              \@prefs_order,\%prefs,\%values,undef,$jscript,\@allitems,$crstype,
Line 715  sub print_config_box { Line 722  sub print_config_box {
     } elsif ($action eq 'appearance') {      } elsif ($action eq 'appearance') {
         $output .= &print_appearance($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit);          $output .= &print_appearance($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit);
     } elsif ($action eq 'grading') {      } elsif ($action eq 'grading') {
         $output .= &print_grading($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit);          $output .= &print_grading($cdom,$cnum,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit);
     } elsif ($action eq 'printouts') {      } elsif ($action eq 'printouts') {
         $output .= &print_printouts($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit);          $output .= &print_printouts($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit);
     } elsif ($action eq 'spreadsheet') {      } elsif ($action eq 'spreadsheet') {
Line 763  sub process_changes { Line 770  sub process_changes {
                                  (!$can_categorize));                                   (!$can_categorize));
                         next if (($entry eq 'loncaparev') ||                           next if (($entry eq 'loncaparev') || 
                                 ($entry eq 'owner') ||                                  ($entry eq 'owner') ||
                                 ($entry eq 'clonedfrom'));                                  ($entry eq 'clonedfrom') ||
                                   ($entry eq 'syllabus'));
                         push(@ordered,$entry);                          push(@ordered,$entry);
                     }                      }
                 } elsif ($action eq 'classlists') {                  } elsif ($action eq 'classlists') {
Line 942  sub process_changes { Line 950  sub process_changes {
                                         $autocoowner = $domconf{'autoenroll'}{'co-owners'};                                          $autocoowner = $domconf{'autoenroll'}{'co-owners'};
                                     }                                      }
                                 }                                  }
                                 unless ($autocoowner) {                                  if ($autocoowner) {
                                       $newvalues{'co-owners'} = $values->{'internal.co-owners'}; 
                                   } else {
                                     my @keepcoowners = &Apache::loncommon::get_env_multiple('form.coowners');                                      my @keepcoowners = &Apache::loncommon::get_env_multiple('form.coowners');
                                     my @pendingcoowners = &Apache::loncommon::get_env_multiple('form.pendingcoowners');                                      my @pendingcoowners = &Apache::loncommon::get_env_multiple('form.pendingcoowners');
                                     my @invitecoowners =  &Apache::loncommon::get_env_multiple('form.invitecoowners');                                      my @invitecoowners =  &Apache::loncommon::get_env_multiple('form.invitecoowners');
Line 966  sub process_changes { Line 976  sub process_changes {
                                 my $udom = $env{'user.domain'};                                  my $udom = $env{'user.domain'};
                                 my $pendingcoowners = $values->{'internal.pendingco-owners'};                                  my $pendingcoowners = $values->{'internal.pendingco-owners'};
                                 my @pendingcoown = split(',',$pendingcoowners);                                  my @pendingcoown = split(',',$pendingcoowners);
                                 if ($env{'form.pending_coowoner'}) {                                  if ($env{'form.pending_coowner'}) {
                                     foreach my $item (@pendingcoown) {                                      foreach my $item (@pendingcoown) {
                                         unless ($item eq $uname.':'.$udom) {                                          unless ($item eq $uname.':'.$udom) {
                                             push(@newpending,$item);                                              push(@newpending,$item);
                                         }                                          }
                                     }                                      }
                                     @newcoown = @currcoown;                                      @newcoown = @currcoown;
                                     if ($env{'form.pending_coowoner'} eq 'accept') {                                      if ($env{'form.pending_coowner'} eq 'accept') {
                                         unless (grep(/^\Q$uname\E:\Q$udom\E$/,@currcoown)) {                                          unless (grep(/^\Q$uname\E:\Q$udom\E$/,@currcoown)) {
                                             push(@newcoown,$uname.':'.$udom);                                              push(@newcoown,$uname.':'.$udom);
                                         }                                          }
                                     }                                      }
                                 } elsif ($env{'form.remove_coowoner'}) {                                  } elsif ($env{'form.remove_coowner'}) {
                                     foreach my $item (@currcoown) {                                      foreach my $item (@currcoown) {
                                         unless ($item eq $uname.':'.$udom) {                                          unless ($item eq $uname.':'.$udom) {
                                             push(@newcoown,$item);                                              push(@newcoown,$item);
Line 987  sub process_changes { Line 997  sub process_changes {
                                     if ($pendingcoowners ne '') {                                      if ($pendingcoowners ne '') {
                                         @newpending = @pendingcoown;                                          @newpending = @pendingcoown;
                                     }                                      }
                                   } else {
                                       @newcoown = @currcoown;
                                 }                                  }
                                 $newvalues{'pendingco-owners'} = join(',',sort(@newpending));                                  $newvalues{'pendingco-owners'} = join(',',sort(@newpending));
                                 $newvalues{'co-owners'} = join(',',sort(@newcoown));                                  $newvalues{'co-owners'} = join(',',sort(@newcoown));
Line 1252  sub process_changes { Line 1264  sub process_changes {
                                 $settings =~ s/,$//;                                  $settings =~ s/,$//;
                             }                              }
                             $newvalues{$entry} = $settings;                              $newvalues{$entry} = $settings;
                           } elsif ($entry eq 'grading') {
                               if ($env{'form.'.$entry} eq 'standard') {
                                   if ($env{'form.hidetotals'}) {
                                       my %sections = &Apache::loncommon::get_sections($cdom,$cnum);
                                       if (keys(%sections)) {
                                           my @secs = &Apache::loncommon::get_env_multiple('form.hidetotals_sections');
                                           if (grep(/^all$/,@secs)) {
                                               $newvalues{'hidetotals'} = 'all';
                                           } elsif (@secs) {
                                               $newvalues{'hidetotals'} = '';
                                               foreach my $sec (sort {$a <=> $b} @secs) {
                                                   if (exists($sections{$sec})) {
                                                       $newvalues{'hidetotals'} .= $sec.','
                                                   }
                                               }
                                               $newvalues{'hidetotals'} =~ s/,$//;
                                           }
                                       } else {
                                           $newvalues{'hidetotals'} = 'all';
                                       }
                                   }
                               }
                               if ($newvalues{'hidetotals'} ne $values->{'hidetotals'}) {
                                   $changes->{'hidetotals'} = $newvalues{'hidetotals'};
                                   $changes->{'grading'} = $env{'form.'.$entry};
                               }
                               $newvalues{$entry} = $env{'form.'.$entry};
                         } else {                          } else {
                             $newvalues{$entry} = $env{'form.'.$entry};                              $newvalues{$entry} = $env{'form.'.$entry};
                         }                          }
Line 1385  sub store_changes { Line 1424  sub store_changes {
                                     unless (($key eq 'co-owners') || ($key eq 'discussion_post_fonts')) {                                      unless (($key eq 'co-owners') || ($key eq 'discussion_post_fonts')) {
                                         $displayval = $changes->{$item}{$key};                                          $displayval = $changes->{$item}{$key};
                                     }                                      }
                                       if (($item eq 'grading') && ($key eq 'grading')) {
                                           if ($displayval eq 'standard') {
                                               my $hidetotals;
                                               if (exists($changes->{$item}{'hidetotals'})) {
                                                   if ($changes->{$item}{'hidetotals'} eq '') {
                                                       if (exists($values->{'hidetotals'})) {
                                                           push(@delkeys,'hidetotals');
                                                       }
                                                   } else {
                                                       $hidetotals = $changes->{$item}{'hidetotals'};
                                                   }
                                               } elsif (exists($values->{'hidetotals'})) {
                                                   $hidetotals = $values->{'hidetotals'};
                                               }
                                               if ($hidetotals eq '') {
                                                   $displayval = &mt('standard with "hide course totals" set to "No"');
                                                   if (exists($values->{'hidetotals'})) {
                                                       push(@delkeys,'hidetotals');
                                                   }
                                               } elsif ($hidetotals =~ /^([\w,]+)$/) {
                                                   my $secstr = $1;
                                                   my @secs = split(/,/,$secstr);
                                                   if (grep(/^all$/,@secs)) {
                                                       $displayval = &mt('standard with "hide course totals" set to "Yes" for all users');
                                                       $hidetotals = 'all';
                                                   } else {
                                                       $displayval = &mt('standard with "hide course totals" set to "Yes" for users in section(s): [_1]',join(', ',@secs));
                                                   }
                                                   $storehash{'hidetotals'} = $hidetotals;
                                               }
                                           } elsif (exists($values->{'hidetotals'})) {
                                               push(@delkeys,'hidetotals');
                                           }
                                       }
                                     if ($item eq 'feedback') {                                      if ($item eq 'feedback') {
                                         if ($key =~ /^(question|policy|comment)(\.email)\.text$/) {                                          if ($key =~ /^(question|policy|comment)(\.email)\.text$/) {
                                             $text = $prefs->{$item}->{'itemtext'}{$1.$2};                                              $text = $prefs->{$item}->{'itemtext'}{$1.$2};
Line 1474  sub store_changes { Line 1547  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') || ($key eq 'usejsme') || ($key eq 'uselcmath')) {                                      } elsif (($key eq 'canuse_pdfforms') || ($key eq 'usejsme') ||
                                                ($key eq 'uselcmath') || ($key eq 'inline_chem')) {
                                         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 1506  sub store_changes { Line 1580  sub store_changes {
                                                 }                                                  }
                                             }                                              }
                                             unless (&Apache::lonnet::is_course_owner($cdom,$cnum)) {                                              unless (&Apache::lonnet::is_course_owner($cdom,$cnum)) {
                                                 if ($env{'form.pending_coowoner'} eq 'accept') {                                                  if ($env{'form.pending_coowner'} eq 'accept') {
                                                         $displayval = &mt('on');                                                          $displayval = &mt('on');
                                                 } elsif ($env{'form.pending_coowoner'} eq 'decline') {                                                  } elsif ($env{'form.pending_coowner'} eq 'decline') {
                                                         $displayval = '';                                                          $displayval = '';
                                                         $output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('Invitation to be co-owner declined')).'</li>';                                                          $output .= '<li>'.&Apache::lonhtmlcommon::confirm_success(&mt('Invitation to be co-owner declined')).'</li>';
                                                 } elsif ($env{'form.remove_coowoner'}) {                                                  } elsif ($env{'form.remove_coowner'}) {
                                                     $displayval = &mt('off');                                                      $displayval = &mt('off');
                                                 }                                                  }
                                                 if ($displayval) {                                                  if ($displayval) {
Line 1751  sub get_course { Line 1825  sub get_course {
 }  }
   
 sub get_jscript {  sub get_jscript {
     my ($cid,$cdom,$phase,$crstype,$settings) = @_;      my ($cid,$cdom,$phase,$crstype,$settings,$noedit) = @_;
     my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom,$crstype);      my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom,$crstype);
     my ($jscript,$categorize_js,$loncaparev_js,$instcode_js);      my ($jscript,$categorize_js,$loncaparev_js,$instcode_js);
     my $stubrowse_js = &Apache::loncommon::studentbrowser_javascript();      my $stubrowse_js = &Apache::loncommon::studentbrowser_javascript();
Line 1877  function syllabusinfo() { Line 1951  function syllabusinfo() {
     }      }
 }  }
 ENDSCRIPT  ENDSCRIPT
       my $grading_js;
       unless ($noedit) {
           $grading_js = <<"ENDSCRIPT";
   function toggleGrading(form) {
       if (document.getElementById('hidetotalsdiv')) {
           var totalsdivid = document.getElementById('hidetotalsdiv');
           var selname = form.elements['grading'];
           if (selname) {
               var current = selname.options[selname.selectedIndex].value
               if (current == 'standard') {
                   totalsdivid.style.display = 'inline-block';
               } else {
                   totalsdivid.style.display = 'none';
               }
           }
       }
       return;
   }
   
   function toggleHiddenTotalsSec(form) {
       if (document.getElementById('sectotalsdiv')) {
           var sectotalsdivid = document.getElementById('sectotalsdiv');
           var radioname = form.elements['hidetotals'];
           if (radioname) {
               if (radioname.length > 0) {
                   var setvis;
                   for (var i=0; i<radioname.length; i++) {
                       if (radioname[i].checked == true) {
                           if (radioname[i].value == 1) {
                               sectotalsdivid.style.display = 'inline-block';
                               setvis = 1;
                           }
                           break;
                       }
                   }
                   if (!setvis) {
                       sectotalsdivid.style.display = 'none';
                   }
               }
           }
       }
       return;
   }
   ENDSCRIPT
       }
     $jscript = '<script type="text/javascript" language="Javascript">'."\n".      $jscript = '<script type="text/javascript" language="Javascript">'."\n".
                '// <![CDATA['."\n".                 '// <![CDATA['."\n".
                $browse_js."\n".$categorize_js."\n".$loncaparev_js."\n".                 $browse_js."\n".$categorize_js."\n".$loncaparev_js."\n".
                $cloners_js."\n".$instcode_js.                 $cloners_js."\n".$instcode_js.
                $syllabus_js."\n".'//]]>'."\n".                 $syllabus_js."\n".$grading_js."\n".'//]]>'."\n".
                '</script>'."\n".$stubrowse_js."\n";                 '</script>'."\n".$stubrowse_js."\n";
     return $jscript;      return $jscript;
 }  }
Line 1973  sub print_courseinfo { Line 2092  sub print_courseinfo {
     unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {      unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
         return;          return;
     }      }
     my ($cathash,$categoriesform,$autocoowner,$clonedefaults);      my ($cathash,$categoriesform,$autocoowner,$clonedefaults,$disabled);
       if ($noedit) {
           $disabled = ' disabled="disabled"';
       }
     my %domconf =       my %domconf = 
         &Apache::lonnet::get_dom('configuration',          &Apache::lonnet::get_dom('configuration',
                                  ['coursecategories','autoenroll','coursedefaults'],$cdom);                                   ['coursecategories','autoenroll','coursedefaults'],$cdom);
Line 1982  sub print_courseinfo { Line 2104  sub print_courseinfo {
         if (ref($cathash) eq 'HASH') {          if (ref($cathash) eq 'HASH') {
             $categoriesform =               $categoriesform = 
                 &Apache::loncommon::assign_categories_table($cathash,                  &Apache::loncommon::assign_categories_table($cathash,
                                                 $settings->{'categories'},$crstype)."\n";                                                  $settings->{'categories'},$crstype,$disabled)."\n";
         }          }
     }      }
     if (ref($domconf{'autoenroll'}) eq 'HASH') {      if (ref($domconf{'autoenroll'}) eq 'HASH') {
Line 2049  sub print_courseinfo { Line 2171  sub print_courseinfo {
     } else {      } else {
         $replace = &mt('To replace the standard title for a course role, enter a title, otherwise leave blank');          $replace = &mt('To replace the standard title for a course role, enter a title, otherwise leave blank');
     }      }
       my ($editmap,$editsyllabus);
       unless ($noedit) {
           $editmap = ('&nbsp;'x2).
                      '<a href="javascript:openbrowser'.
                      "('display','url','sequence')\">".
                      &mt('Select Map').'</a><br /><span class="LC_warning"> '.
                      &mt('Modification may make assessment data inaccessible!').
                      '</span>';
           $editsyllabus = &mt('[_1]Edit[_2]','<a href="/public/'.$cdom.'/'.$cnum.'/syllabus?forceedit=1">',
                               '</a>');
       }
     my %items = (      my %items = (
         'url' => {          'url' => {
                    text => '<b>'.&mt($itemtext->{'url'}).'</b>'.('&nbsp;'x2).                     text => '<b>'.&mt($itemtext->{'url'}).'</b>'.$editmap,
                            '<a href="javascript:openbrowser'.  
                            "('display','url','sequence')\">".  
                            &mt('Select Map').'</a><br /><span class="LC_warning"> '.  
                            &mt('Modification may make assessment data inaccessible!').  
                            '</span>',  
                    input => 'textbox',                     input => 'textbox',
                    size  => '55',                     size  => '55',
                    advanced => 1                     advanced => 1
Line 2098  sub print_courseinfo { Line 2226  sub print_courseinfo {
                    size  => '20',                     size  => '20',
                    advanced => 1                     advanced => 1
                         },                          },
         'externalsyllabus' => {          'syllabus' => {
                    text => '<b>'.&mt($itemtext->{'externalsyllabus'}).'</b><br />'.                     text => '<b>'.&mt($itemtext->{'syllabus'}).'</b><br />'.
                            &mt('(Syllabus type in use)').('&nbsp;' x2).                             &mt('(Syllabus type in use)').('&nbsp;' x2).
                            &mt('[_1]Edit[_2]','<a href="/public/'.$cdom.'/'.$cnum.'/syllabus?forceedit=1">',                             $editsyllabus,
                                '</a>'),  
                         },                          },
         'hidefromcat' => {          'hidefromcat' => {
                    text => '<b>'.&mt($itemtext->{'hidefromcat'}).'</b><br />'.                     text => '<b>'.&mt($itemtext->{'hidefromcat'}).'</b><br />'.
Line 2124  sub print_courseinfo { Line 2251  sub print_courseinfo {
     );      );
     my $datatable;      my $datatable;
     my $count = 0;      my $count = 0;
     my $disabled;  
     if ($noedit) {  
         $disabled = ' disabled="disabled"';  
     }  
     foreach my $item (@{$ordered}) {      foreach my $item (@{$ordered}) {
         my $colspan;          my $colspan;
         if ($item eq 'hidefromcat') {          if ($item eq 'hidefromcat') {
Line 2349  sub print_courseinfo { Line 2472  sub print_courseinfo {
                     $datatable .= &manage_coownership($cnum,$cdom,\@currcoown,$noedit);                      $datatable .= &manage_coownership($cnum,$cdom,\@currcoown,$noedit);
                 }                  }
             }              }
         } elsif ($item eq 'externalsyllabus') {          } elsif ($item eq 'syllabus') {
             my $external = $env{'course.'.$env{'request.course.id'}.'.externalsyllabus'};              my $external = $env{'course.'.$env{'request.course.id'}.'.externalsyllabus'};
             my $uploaded = $env{'course.'.$env{'request.course.id'}.'.uploadedsyllabus'};              my $uploaded = $env{'course.'.$env{'request.course.id'}.'.uploadedsyllabus'};
             my $minimal =  $env{'course.'.$env{'request.course.id'}.'.minimalsyllabus'};              my $minimal =  $env{'course.'.$env{'request.course.id'}.'.minimalsyllabus'};
Line 3166  sub coowner_invitations { Line 3289  sub coowner_invitations {
         @pendingcoown = split(',',$pendingcoowners);          @pendingcoown = split(',',$pendingcoowners);
     }      }
     if (ref($currcoownref) eq 'ARRAY') {      if (ref($currcoownref) eq 'ARRAY') {
         @currcoown == @{$currcoownref};          @currcoown = @{$currcoownref};
     }      }
     my $disabled;      my $disabled;
     if ($noedit) {      if ($noedit) {
Line 3230  sub manage_coownership  { Line 3353  sub manage_coownership  {
         @pendingcoown = split(',',$pendingcoowners);          @pendingcoown = split(',',$pendingcoowners);
     }      }
     if (ref($currcoownref) eq 'ARRAY') {      if (ref($currcoownref) eq 'ARRAY') {
         @currcoown == @{$currcoownref};          @currcoown = @{$currcoownref};
     }      }
     my $disabled;      my $disabled;
     if ($noedit) {      if ($noedit) {
Line 3265  sub manage_coownership  { Line 3388  sub manage_coownership  {
         }          }
         $output .= '<span class="LC_nobreak">';          $output .= '<span class="LC_nobreak">';
         if ($is_coowner) {          if ($is_coowner) {
             $output .= &mt('You are currently a co-owner:').'&nbsp;<label><input type="checkbox" name="remove_coowoner" value="'.$uname.':'.$udom.'" />'.&mt('Discontinue?').'</label>';              $output .= &mt('You are currently a co-owner:').'&nbsp;<label><input type="checkbox" name="remove_coowner" value="'.$uname.':'.$udom.'" />'.&mt('Discontinue?').'</label>';
         } else {          } else {
             $output .= &mt('The course owner has invited you to become a co-owner:').'&nbsp;<label><input type="radio" name="pending_coowoner" value="accept"'.$disabled.' />'.&mt('Accept?').'</label>'.('&nbsp;'x2).              $output .= &mt('The course owner has invited you to become a co-owner:').'&nbsp;<label><input type="radio" name="pending_coowner" value="accept"'.$disabled.' />'.&mt('Accept?').'</label>'.('&nbsp;'x2).
                        '<label><input type="radio" name=pending_coowoner" value="decline"'.$disabled.' />'.&mt('Decline?').'</label>';                         '<label><input type="radio" name=pending_coowner" value="decline"'.$disabled.' />'.&mt('Decline?').'</label>';
         }          }
         $output .= '</span>';          $output .= '</span>';
         if (@currcoown) {          if (@currcoown) {
Line 3526  sub select_recipient { Line 3649  sub select_recipient {
     my $domform = &Apache::loncommon::select_dom_form($cdom,$item.'_udom_'.$num,$includeempty);      my $domform = &Apache::loncommon::select_dom_form($cdom,$item.'_udom_'.$num,$includeempty);
     my $selectlink =      my $selectlink =
         &Apache::loncommon::selectstudent_link('display',$item.'_uname_'.$num,          &Apache::loncommon::selectstudent_link('display',$item.'_uname_'.$num,
                                                $item.'_udom_'.$num,1);                                                 $item.'_udom_'.$num,'only');
     my $output =       my $output = 
         '<table><tr><td align="center">'.&mt('Username').'<br />'.          '<table><tr><td align="center">'.&mt('Username').'<br />'.
         '<input type="text" name="'.$item.'_uname_'.$num.'" value="" /></td>'.          '<input type="text" name="'.$item.'_uname_'.$num.'" value="" /></td>'.
Line 3543  sub select_recipient { Line 3666  sub select_recipient {
 }  }
   
 sub select_sections {  sub select_sections {
     my ($item,$num,$sections,$selected,$noedit) = @_;      my ($item,$num,$sections,$selected,$noedit,$allval) = @_;
     my ($output,@currsecs,$allsec,$disabled);      my ($output,@currsecs,$allsec,$disabled);
     if (ref($selected) eq 'ARRAY') {      if (ref($selected) eq 'ARRAY') {
         @currsecs = @{$selected};          @currsecs = @{$selected};
Line 3559  sub select_sections { Line 3682  sub select_sections {
             my $mult;              my $mult;
             if (@{$sections} > 1) {              if (@{$sections} > 1) {
                 $mult = ' multiple="multiple"';                  $mult = ' multiple="multiple"';
                   my $size;
                 if (@{$sections} > 3) {                  if (@{$sections} > 3) {
                     $mult .= ' size="4"';                      $size = 4;
                   } else {
                       $size = 1 + scalar(@{$sections});
                 }                  }
                   $mult .= ' size="'.$size.'"';
             }              }
             $output = '<select name="'.$item.'_sections_'.$num.'"'.$mult.$disabled.'>'.              my $name = $item.'_sections';
                       ' <option value=""'.$allsec.'>'.&mt('All').'</option>';              unless ($item eq 'hidetotals') {
                   $name .= '_'.$num;
               }
               $output = '<select name="'.$name.'"'.$mult.$disabled.'>'.
                         ' <option value="'.$allval.'"'.$allsec.'>'.&mt('All').'</option>';
             foreach my $sec (@{$sections}) {              foreach my $sec (@{$sections}) {
                 my $is_sel;                  my $is_sel;
                 if ((@currsecs) && (grep(/^\Q$sec\E$/,@currsecs))) {                  if ((@currsecs) && (grep(/^\Q$sec\E$/,@currsecs))) {
                     $is_sel = 'selected="selected"';                      $is_sel = ' selected="selected"';
                 }                  }
                 $output .= '<option value="'.$sec.'"'.$is_sel.'>'.$sec.'</option>';                  $output .= '<option value="'.$sec.'"'.$is_sel.'>'.$sec.'</option>';
             }              }
Line 4011  sub print_appearance { Line 4142  sub print_appearance {
                    text => '<b>'.&mt($itemtext->{'usejsme'}).'</b>',                     text => '<b>'.&mt($itemtext->{'usejsme'}).'</b>',
                    input => 'radio',                     input => 'radio',
                  },                   },
            'inline_chem' => {
                      text => '<b>'.&mt($itemtext->{'inline_chem'}).'</b>',
                      input => 'radio',
                    },
     );      );
     return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype,'appearance',$noedit);      return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype,'appearance',$noedit);
 }  }
   
 sub print_grading {  sub print_grading {
     my ($cdom,$settings,$ordered,$itemtext,$rowtotal,$crstype,$noedit) = @_;      my ($cdom,$cnum,$settings,$ordered,$itemtext,$rowtotal,$crstype,$noedit) = @_;
     unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {      unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
         return;          return;
     }      }
Line 4035  sub print_grading { Line 4170  sub print_grading {
                  },                   },
         'rndseed' => {          'rndseed' => {
                    text => '<b>'.&mt($itemtext->{'rndseed'}).'</b>'.                     text => '<b>'.&mt($itemtext->{'rndseed'}).'</b>'.
                            '<span class="LC_warning">'.'<br />'.                             '<br /><span class="LC_warning LC_nobreak">'.
                            &mt('Modifying this will make problems have different numbers and answers!').                             &mt('Modifying this will make problems have different numbers and answers!').
                            '</span>',                             '</span>',
                    input => 'selectbox',                     input => 'selectbox',
Line 4067  sub print_grading { Line 4202  sub print_grading {
                    input => 'radio',                     input => 'radio',
                  },                   },
     );      );
     return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype,'grading',$noedit);      return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype,'grading',$noedit,$cnum);
 }  }
   
 sub print_printouts {  sub print_printouts {
Line 4223  sub print_other { Line 4358  sub print_other {
                             input => 'textbox',                              input => 'textbox',
                             size  => '30',                              size  => '30',
                            };                             };
     my $output = &make_item_rows($cdom,\%items,\@ordered,$settings,$rowtotal,$crstype,'other',$noedit);      return &make_item_rows($cdom,\%items,\@ordered,$settings,$rowtotal,$crstype,'other',$noedit);
 }  }
   
 sub get_other_items {  sub get_other_items {
Line 4272  sub item_table_row_end { Line 4407  sub item_table_row_end {
 }  }
   
 sub yesno_radio {  sub yesno_radio {
     my ($item,$settings,$unsetdefault,$valueyes,$valueno,$noedit) = @_;      my ($item,$settings,$unsetdefault,$valueyes,$valueno,$noedit,$onclick,$reverse) = @_;
     my $itemon = ' ';      my $itemon = ' ';
     my $itemoff = ' checked="checked" ';      my $itemoff = ' checked="checked" ';
     if (($valueyes eq '') && ($valueno eq '')) {      if (($valueyes eq '') && ($valueno eq '')) {
Line 4294  sub yesno_radio { Line 4429  sub yesno_radio {
     my $disabled;      my $disabled;
     if ($noedit) {      if ($noedit) {
         $disabled = ' disabled="disabled"';          $disabled = ' disabled="disabled"';
       } elsif ($onclick) {
           $onclick = ' onclick="'.$onclick.'"';
       }
       if ($reverse) {
           return '<span class="LC_nobreak"><label>'.
                  '<input type="radio" name="'.$item.'"'.
                  $itemoff.' value="'.$valueno.'"'.$disabled.$onclick.' />'.&mt('No').'</label>&nbsp;'.
                  '<label><input type="radio" name="'.$item.'"'.
                  $itemon.' value="'.$valueyes.'"'.$disabled.$onclick.' />'.&mt('Yes').'</label></span>';
       } else {
           return '<span class="LC_nobreak"><label>'.
                  '<input type="radio" name="'.$item.'"'.
                  $itemon.' value="'.$valueyes.'"'.$disabled.$onclick.' />'.&mt('Yes').'</label>&nbsp;'.
                  '<label><input type="radio" name="'.$item.'"'.
                  $itemoff.' value="'.$valueno.'"'.$disabled.$onclick.' />'.&mt('No').'</label></span>';
     }      }
     return '<span class="LC_nobreak"><label>'.  
            '<input type="radio" name="'.$item.'"'.  
            $itemon.' value="'.$valueyes.'"'.$disabled.' />'.&mt('Yes').'</label>&nbsp;'.  
            '<label><input type="radio" name="'.$item.'"'.  
            $itemoff.' value="'.$valueno.'"'.$disabled.' />'.&mt('No').'</label></span>';  
 }  }
   
 sub select_from_options {  sub select_from_options {
     my ($item,$order,$options,$curr,$nullval,$multiple,$maxsize,$onchange,$noedit) = @_;      my ($item,$order,$options,$curr,$nullval,$multiple,$maxsize,$onchange,$noedit,$id) = @_;
     my $output;      my $output;
     my $disabled;      my $disabled;
     if ($noedit) {      if ($noedit) {
Line 4319  sub select_from_options { Line 4464  sub select_from_options {
                 $output .= ' size="'.$maxsize.'"';                  $output .= ' size="'.$maxsize.'"';
             }              }
         }          }
           if ($id ne '') {
               $output .= ' id="'.$id.'"';
           }
         $output .= $disabled.'>'."\n";          $output .= $disabled.'>'."\n";
         if ($nullval ne '') {          if ($nullval ne '') {
             $output .= '<option value=""';              $output .= '<option value=""';
Line 4352  sub select_from_options { Line 4500  sub select_from_options {
 }  }
   
 sub make_item_rows {  sub make_item_rows {
     my ($cdom,$items,$ordered,$settings,$rowtotal,$crstype,$caller,$noedit) = @_;      my ($cdom,$items,$ordered,$settings,$rowtotal,$crstype,$caller,$noedit,$cnum) = @_;
     my $datatable;      my $datatable;
     if ((ref($items) eq 'HASH') && (ref($ordered) eq 'ARRAY')) {      if ((ref($items) eq 'HASH') && (ref($ordered) eq 'ARRAY')) {
         my $count = 0;          my $count = 0;
Line 4393  sub make_item_rows { Line 4541  sub make_item_rows {
                                                        $settings->{$item},$disabled);                                                         $settings->{$item},$disabled);
             } elsif ($items->{$item}{input} eq 'radio') {              } elsif ($items->{$item}{input} eq 'radio') {
                 my ($unsetdefault,$valueyes,$valueno);                  my ($unsetdefault,$valueyes,$valueno);
                 if (($item eq 'usejsme') || ($item eq 'uselcmath')) {                  if (($item eq 'usejsme') || ($item eq 'uselcmath') || ($item eq 'inline_chem')) {
                      my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);                       my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
                      unless ($domdefs{$item} eq '0') {                       unless ($domdefs{$item} eq '0') {
                          $unsetdefault = 1;                           $unsetdefault = 1;
Line 4403  sub make_item_rows { Line 4551  sub make_item_rows {
                 }                  }
                 $datatable .= &yesno_radio($item,$settings,$unsetdefault,$valueyes,$valueno,$noedit);                  $datatable .= &yesno_radio($item,$settings,$unsetdefault,$valueyes,$valueno,$noedit);
             } elsif ($items->{$item}{input} eq 'selectbox') {              } elsif ($items->{$item}{input} eq 'selectbox') {
                   my ($id,$onchange);
                   if ($caller eq 'grading') {
                       if ($item eq 'grading') {
                           $onchange = ' onchange="javascript:toggleGrading(this.form);"';
                           $id = $item;
                       }
                   }
                 my $curr = $settings->{$item};                  my $curr = $settings->{$item};
                 $datatable .=                  $datatable .=
                     &select_from_options($item,$items->{$item}{'order'},                      &select_from_options($item,$items->{$item}{'order'},
                                          $items->{$item}{'options'},$curr,                                           $items->{$item}{'options'},$curr,
                                          $items->{$item}{'nullval'},                                           $items->{$item}{'nullval'},
                                          undef,undef,undef,$noedit);                                           undef,undef,$onchange,$noedit,$id);
                   if ($item eq 'grading') {
                       my ($unsetdefault,$valueyes,$valueno,$sectionbox);
                       my $gradingsty = 'none';
                       my $gradingsecsty = 'none';
                       $unsetdefault = 0;
                       my (@selsec,@sections,%current);
                       if ($curr eq 'standard') {
                           $gradingsty = 'inline-block';
                           if (ref($settings) eq 'HASH') {
                               $current{'hidetotals'} = $settings->{'hidetotals'};
                               if ($settings->{'hidetotals'} =~ /^([\w,]+)$/) {
                                   my $secstr = $1;
                                   unless ($secstr eq 'all') {
                                       @selsec = split(/,/,$secstr);
                                   }
                                   $current{'hidetotals'} = 1;
                               }
                           }
                       }
                       $valueyes = "1";
                       $valueno = "0";
                       my %sections = &Apache::loncommon::get_sections($cdom,$cnum);
                       if (keys(%sections)) {
                           @sections = sort( { $a <=> $b } keys(%sections));
                       }
                       my $onclick = 'javascript:toggleHiddenTotalsSec(this.form);';
                       my $sectionbox = '<div id="sectotalsdiv" style="display:'.$gradingsecsty.'; float:right">';
                       my $reverse = 1;
                       if (@sections) {
                           $sectionbox .= '&nbsp;...&nbsp;'.&mt('hidden in sections').':&nbsp;'.
                                          '<div style="position: relative; top: 0%;">'.
                                          &select_sections('hidetotals','',\@sections,\@selsec,$noedit,'all').
                                          '</div>';
                       }
                       $sectionbox .= '</div>';
                       $datatable .= '<fieldset id="hidetotalsdiv" style="display:'.$gradingsty.';">'.
                                     '<legend style="font-weight: normal;">'.
                                     &mt('Hide Course Points Totals').'</legend>'.
                                     '<div style="position: relative; top: 0%; float:left">'.
                                     &yesno_radio('hidetotals',\%current,$unsetdefault,$valueyes,$valueno,$noedit,
                                                  $onclick,$reverse).'</div>'.
                                     $sectionbox.
                                     '</fieldset><div style="padding:0;clear:both;margin:0;border:0"></div>';
                   }
             } elsif ($items->{$item}{input} eq 'textbox') {              } elsif ($items->{$item}{input} eq 'textbox') {
                 my $disabled;                  my $disabled;
                 if ($noedit) {                  if ($noedit) {

Removed from v.1.49.2.21  
changed lines
  Added in v.1.49.2.30


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