version 1.49.2.28, 2021/12/24 21:09:09
|
version 1.49.2.31, 2024/07/06 16:43:10
|
Line 543 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,$cnum,$jscript,\@allitems,$crstype, |
'coursepref',$parm_permission); |
'coursepref',$parm_permission); |
} else { |
} else { |
&Apache::lonconfigsettings::display_choices($r,$phase,$context, |
&Apache::lonconfigsettings::display_choices($r,$phase,$context, |
Line 599 sub get_allitems {
|
Line 605 sub get_allitems {
|
} |
} |
|
|
sub print_config_box { |
sub print_config_box { |
my ($r,$cdom,$phase,$action,$item,$settings,$allitems,$crstype,$parm_permission) = @_; |
my ($r,$cdom,$cnum,$phase,$action,$item,$settings,$allitems,$crstype,$parm_permission) = @_; |
my $ordered = $item->{'ordered'}; |
my $ordered = $item->{'ordered'}; |
my $itemtext = $item->{'itemtext'}; |
my $itemtext = $item->{'itemtext'}; |
my $noedit; |
my $noedit; |
Line 716 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 944 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 989 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 1254 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 1387 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 1754 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 1880 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 3173 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 3237 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 3550 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 3566 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.'"'; |
|
} |
|
my $name = $item.'_sections'; |
|
unless ($item eq 'hidetotals') { |
|
$name .= '_'.$num; |
} |
} |
$output = '<select name="'.$item.'_sections_'.$num.'"'.$mult.$disabled.'>'. |
$output = '<select name="'.$name.'"'.$mult.$disabled.'>'. |
' <option value=""'.$allsec.'>'.&mt('All').'</option>'; |
' <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 4027 sub print_appearance {
|
Line 4151 sub print_appearance {
|
} |
} |
|
|
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 4046 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 4078 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 4283 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 4305 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> '. |
|
'<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> '. |
|
'<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> '. |
|
'<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 4330 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 4363 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 4414 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 .= ' ... '.&mt('hidden in sections').': '. |
|
'<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) { |