version 1.49.2.12, 2013/12/27 15:06:40
|
version 1.69, 2015/03/07 23:17:15
|
Line 215 use Apache::lonnet;
|
Line 215 use Apache::lonnet;
|
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonconfigsettings; |
use Apache::lonconfigsettings; |
|
use Apache::lonrelrequtils; |
use Apache::lonparmset; |
use Apache::lonparmset; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
|
|
my $registered_cleanup; |
|
my $modified_courses; |
|
|
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
if ($r->header_only) { |
if ($r->header_only) { |
Line 228 sub handler {
|
Line 232 sub handler {
|
} |
} |
my $context = 'course'; |
my $context = 'course'; |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
my ($cnum,$cdom) = &get_course($cid); |
my ($cnum,$cdom,$chome) = &get_course($cid); |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
my $parm_permission = &Apache::lonnet::allowed('opa',$cid); |
my $parm_permission = &Apache::lonnet::allowed('opa',$cid); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
Line 257 sub handler {
|
Line 261 sub handler {
|
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
|
|
|
$registered_cleanup=0; |
|
@{$modified_courses}=(); |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['phase','actions','origin']); |
['phase','actions','origin']); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
Line 302 sub handler {
|
Line 309 sub handler {
|
idnu => 'Course ID or number', |
idnu => 'Course ID or number', |
unco => 'Unique code', |
unco => 'Unique code', |
desc => 'Course Description', |
desc => 'Course Description', |
cred => 'Student credits', |
cred => 'Student credits', |
ownr => 'Course Owner', |
ownr => 'Course Owner', |
cown => 'Course Co-owners', |
cown => 'Course Co-owners', |
catg => 'Categorize course', |
catg => 'Categorize course', |
Line 344 sub handler {
|
Line 351 sub handler {
|
if ($phase eq 'releaseinfo') { |
if ($phase eq 'releaseinfo') { |
my $loncaparev = $env{'course.'.$cid.'.internal.releaserequired'}; |
my $loncaparev = $env{'course.'.$cid.'.internal.releaserequired'}; |
if ($loncaparev) { |
if ($loncaparev) { |
&display_loncaparev_constraints($r,$navmap,$loncaparev,$crstype); |
if (&display_loncaparev_constraints($r,$navmap,$loncaparev,$crstype)) { |
|
push(@{$modified_courses},[$cdom,$cnum,$chome,$crstype]); |
|
unless ($registered_cleanup) { |
|
my $handlers = $r->get_handlers('PerlCleanupHandler'); |
|
$r->set_handlers('PerlCleanupHandler' => [\&update_releasereq,@{$handlers}]); |
|
$registered_cleanup=1; |
|
} |
|
} |
return OK; |
return OK; |
} |
} |
} |
} |
Line 367 sub handler {
|
Line 381 sub handler {
|
'co-owners' => $lt{'cown'}, |
'co-owners' => $lt{'cown'}, |
'description' => $lt{'desc'}, |
'description' => $lt{'desc'}, |
'courseid' => $lt{'idnu'}, |
'courseid' => $lt{'idnu'}, |
'uniquecode' => $lt{'unco'}, |
'uniquecode' => $lt{'unco'}, |
'categories' => $lt{'catg'}, |
'categories' => $lt{'catg'}, |
'hidefromcat' => $lt{'excc'}, |
'hidefromcat' => $lt{'excc'}, |
'cloners' => $lt{'clon'}, |
'cloners' => $lt{'clon'}, |
Line 449 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 476 sub handler {
|
Line 492 sub handler {
|
help => 'Course_Prefs_Printouts', |
help => 'Course_Prefs_Printouts', |
ordered => ['problem_stream_switch','suppress_tries', |
ordered => ['problem_stream_switch','suppress_tries', |
'default_paper_size','print_header_format', |
'default_paper_size','print_header_format', |
'disableexampointprint'], |
'disableexampointprint','canuse_pdfforms'], |
itemtext => { |
itemtext => { |
problem_stream_switch => 'Allow problems to be split over pages', |
problem_stream_switch => 'Allow problems to be split over pages', |
suppress_tries => 'Suppress number of tries in printing', |
suppress_tries => 'Suppress number of tries in printing', |
Line 1033 sub process_changes {
|
Line 1049 sub process_changes {
|
my ($classorder,$classtitles) = &discussion_vote_classes(); |
my ($classorder,$classtitles) = &discussion_vote_classes(); |
my $fontchange = 0; |
my $fontchange = 0; |
foreach my $class (@{$classorder}) { |
foreach my $class (@{$classorder}) { |
my $ext_entry = $entry.'_'.$class; |
my $ext_entry = $entry.'_'.$class; |
my $size = $env{'form.'.$ext_entry.'_size'}; |
my $size = $env{'form.'.$ext_entry.'_size'}; |
my $unit = $env{'form.'.$ext_entry.'_unit'}; |
my $unit = $env{'form.'.$ext_entry.'_unit'}; |
my $weight = $env{'form.'.$ext_entry.'_weight'}; |
my $weight = $env{'form.'.$ext_entry.'_weight'}; |
my $style = $env{'form.'.$ext_entry.'_style'}; |
my $style = $env{'form.'.$ext_entry.'_style'}; |
my $other = $env{'form.'.$ext_entry.'_other'}; |
my $other = $env{'form.'.$ext_entry.'_other'}; |
$size =~ s/,//g; |
$size =~ s/,//g; |
$unit =~ s/,//g; |
$unit =~ s/,//g; |
$weight =~ s/,//g; |
$weight =~ s/,//g; |
$style =~ s/,//g; |
$style =~ s/,//g; |
$other =~ s/[^\w;:\s\-\%.]//g; |
$other =~ s/[^\w;:\s\-\%.]//g; |
Line 1048 sub process_changes {
|
Line 1064 sub process_changes {
|
$newvalues{$ext_entry} = join(',',($size.$unit,$weight,$style,$other)); |
$newvalues{$ext_entry} = join(',',($size.$unit,$weight,$style,$other)); |
my $current = $values->{$ext_entry}; |
my $current = $values->{$ext_entry}; |
if ($values->{$ext_entry} eq '') { |
if ($values->{$ext_entry} eq '') { |
$current = ',,,'; |
$current = ',,,'; |
} |
} |
if ($newvalues{$ext_entry} ne $current) { |
if ($newvalues{$ext_entry} ne $current) { |
$changes->{$ext_entry} = $newvalues{$ext_entry}; |
$changes->{$ext_entry} = $newvalues{$ext_entry}; |
Line 1057 sub process_changes {
|
Line 1073 sub process_changes {
|
} |
} |
if ($fontchange) { |
if ($fontchange) { |
$changes->{$entry} = 1; |
$changes->{$entry} = 1; |
} |
} |
} elsif ($entry eq 'nothideprivileged') { |
} elsif ($entry eq 'nothideprivileged') { |
my @curr_nothide; |
my @curr_nothide; |
my @new_nothide; |
my @new_nothide; |
Line 1132 sub process_changes {
|
Line 1148 sub process_changes {
|
my $newtext = $maxnum-1; |
my $newtext = $maxnum-1; |
$newhdr[$env{'form.printfmthdr_pos_'.$newtext}] = $env{'form.printfmthdr_text_'.$newtext}; |
$newhdr[$env{'form.printfmthdr_pos_'.$newtext}] = $env{'form.printfmthdr_text_'.$newtext}; |
$newvalues{$entry} = join('',@newhdr); |
$newvalues{$entry} = join('',@newhdr); |
} elsif (($entry eq 'languages') || |
} elsif (($entry eq 'languages') || |
($entry eq 'checkforpriv')) { |
($entry eq 'checkforpriv')) { |
my $settings; |
my $settings; |
my $total = $env{'form.'.$entry.'_total'}; |
my $total = $env{'form.'.$entry.'_total'}; |
Line 1148 sub process_changes {
|
Line 1164 sub process_changes {
|
} |
} |
if ($env{'form.'.$entry.'_'.$total} ne '') { |
if ($env{'form.'.$entry.'_'.$total} ne '') { |
my $new = $env{'form.'.$entry.'_'.$total}; |
my $new = $env{'form.'.$entry.'_'.$total}; |
if ($entry eq 'languages') { |
if ($entry eq 'languages') { |
my %langchoices = &get_lang_choices(); |
my %langchoices = &get_lang_choices(); |
if ($langchoices{$new}) { |
if ($langchoices{$new}) { |
$settings .= $new; |
$settings .= $new; |
Line 1391 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 1663 sub get_course {
|
Line 1679 sub get_course {
|
} |
} |
my $cdom=$env{'course.'.$courseid.'.domain'}; |
my $cdom=$env{'course.'.$courseid.'.domain'}; |
my $cnum=$env{'course.'.$courseid.'.num'}; |
my $cnum=$env{'course.'.$courseid.'.num'}; |
return ($cnum,$cdom); |
my $chome=$env{'course.'.$courseid.'.home'}; |
|
return ($cnum,$cdom,$chome); |
} |
} |
|
|
sub get_jscript { |
sub get_jscript { |
Line 1713 function syllabusinfo() {
|
Line 1730 function syllabusinfo() {
|
} |
} |
ENDSCRIPT |
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". |
$cloners_js."\n". |
$syllabus_js."\n".'//]]>'."\n". |
$syllabus_js."\n".'//]]>'."\n". |
Line 1919 sub print_courseinfo {
|
Line 1936 sub print_courseinfo {
|
next if (!$env{'course.'.$env{'request.course.id'}.'.internal.uniquecode'}); |
next if (!$env{'course.'.$env{'request.course.id'}.'.internal.uniquecode'}); |
} |
} |
unless (($item eq 'cloners') || ($item eq 'rolenames')) { |
unless (($item eq 'cloners') || ($item eq 'rolenames')) { |
$colspan = 2; |
$colspan = 2; |
} |
} |
$count ++; |
$count ++; |
if (exists $items{$item}{advanced} && $items{$item}{advanced} == 1) { |
if (exists $items{$item}{advanced} && $items{$item}{advanced} == 1) { |
Line 2056 sub print_courseinfo {
|
Line 2073 sub print_courseinfo {
|
my $clonesrc = $env{'course.'.$env{'request.course.id'}.'.clonedfrom'}; |
my $clonesrc = $env{'course.'.$env{'request.course.id'}.'.clonedfrom'}; |
my $clonedfrom = &mt('None'); |
my $clonedfrom = &mt('None'); |
if ($clonesrc =~ m{/$match_domain/$match_courseid}) { |
if ($clonesrc =~ m{/$match_domain/$match_courseid}) { |
my %clonesrcinfo = &Apache::lonnet::coursedescription($cdom.'/'.$cnum); |
my %clonesrcinfo = &Apache::lonnet::coursedescription($clonesrc); |
if ($clonesrcinfo{'description'}) { |
if ($clonesrcinfo{'description'}) { |
$clonedfrom = $clonesrcinfo{'description'}.' '.($clonesrc); |
$clonedfrom = $clonesrcinfo{'description'}.' '.($clonesrc); |
} |
} |
} |
} |
$datatable .= $clonedfrom; |
$datatable .= $clonedfrom; |
} elsif ($item eq 'uniquecode') { |
} elsif ($item eq 'uniquecode') { |
my $code = $env{'course.'.$env{'request.course.id'}.'.internal.uniquecode'}; |
my $code = $env{'course.'.$env{'request.course.id'}.'.internal.uniquecode'}; |
if ($code) { |
if ($code) { |
$datatable .= $code; |
$datatable .= $code; |
} |
} |
Line 2110 sub print_courseinfo {
|
Line 2127 sub print_courseinfo {
|
} elsif ($uploaded) { |
} elsif ($uploaded) { |
$datatable .= &mt('Uploaded file'); |
$datatable .= &mt('Uploaded file'); |
} else { |
} else { |
$datatable .= &mt('Standard template'); |
$datatable .= &mt('Standard template'); |
} |
} |
$datatable .= (' ' x 2). |
$datatable .= (' ' x 2). |
&mt('[_1]View[_2]', |
&mt('[_1]View[_2]', |
'<a href="javascript:syllabusinfo();">', |
'<a href="javascript:syllabusinfo();">', |
'</a>'); |
'</a>'); |
} elsif ($item eq 'loncaparev') { |
} elsif ($item eq 'loncaparev') { |
my $loncaparev = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'}; |
my $loncaparev = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'}; |
my $showreqd; |
my $showreqd; |
Line 2285 ENDSCRIPT
|
Line 2302 ENDSCRIPT
|
|
|
sub display_loncaparev_constraints { |
sub display_loncaparev_constraints { |
my ($r,$navmap,$loncaparev,$crstype) = @_; |
my ($r,$navmap,$loncaparev,$crstype) = @_; |
|
my ($reqdmajor,$reqdminor); |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
my $cdom = $env{'course.'.$cid.'.domain'}; |
my $cdom = $env{'course.'.$cid.'.domain'}; |
my $cnum = $env{'course.'.$cid.'.num'}; |
my $cnum = $env{'course.'.$cid.'.num'}; |
Line 2294 sub display_loncaparev_constraints {
|
Line 2312 sub display_loncaparev_constraints {
|
'section/group' => 'section/group', |
'section/group' => 'section/group', |
'user' => 'user', |
'user' => 'user', |
); |
); |
my (%checkparms,%checkresponsetypes,%checkcrstypes,%anonsurvey,%randomizetry); |
&Apache::lonrelrequtils::init_global_hashes(); |
&Apache::loncommon::build_release_hashes(\%checkparms,\%checkresponsetypes, |
if (defined($Apache::lonrelrequtils::checkcrstypes{$crstype})) { |
\%checkcrstypes,\%anonsurvey,\%randomizetry); |
($reqdmajor,$reqdminor) = split(/\./,$Apache::lonrelrequtils::checkcrstypes{$crstype}); |
if (defined($checkcrstypes{$crstype})) { |
|
$output .= '<h4>'.&mt('Course type: [_1] requires [_2] or newer',$crstype, |
$output .= '<h4>'.&mt('Course type: [_1] requires [_2] or newer',$crstype, |
$checkcrstypes{$crstype}).'</h4>'; |
$Apache::lonrelrequtils::checkcrstypes{$crstype}).'</h4>'; |
} |
} |
my (%fromparam,%rowspan,%bymap,%byresource,@scopeorder,%toshow,%allmaps, |
my (%fromparam,%rowspan,%bymap,%byresource,@scopeorder,%toshow,%allmaps, |
%byresponsetype,%bysubmission); |
%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})) { |
foreach my $item (keys(%checkparms)) { |
foreach my $item (keys(%Apache::lonrelrequtils::checkparms)) { |
if ($key =~ /(\Q$item\E)$/) { |
if ($key =~ /(\Q$item\E)$/) { |
if (ref($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)) { |
Line 2317 sub display_loncaparev_constraints {
|
Line 2335 sub display_loncaparev_constraints {
|
} else { |
} else { |
$value = ''; |
$value = ''; |
} |
} |
|
} elsif ($item eq 'printstartdate') { |
|
if ($value =~ /^\d+$/) { |
|
if ($value > $now) { |
|
$value = 'future'; |
|
} |
|
} |
|
} elsif ($item eq 'printenddate') { |
|
if ($value =~ /^\d+$/) { |
|
if ($value < $now) { |
|
$value = 'past'; |
|
} |
|
} |
} |
} |
my ($middle,$scope,$which,$level,$map,$resource); |
my ($middle,$scope,$which,$level,$map,$resource); |
if (grep(/^\Q$value\E$/,@{$checkparms{$item}})) { |
if (grep(/^\Q$value\E$/,@{$Apache::lonrelrequtils::checkparms{$item}})) { |
my $stdtype = &Apache::lonparmset::standard_parameter_types($item); |
my $stdtype = &Apache::lonparmset::standard_parameter_types($item); |
my $stdname = &Apache::lonparmset::standard_parameter_names($item); |
my $stdname = &Apache::lonparmset::standard_parameter_names($item); |
my $valname = &get_param_description($stdtype,$value); |
my $valname = &get_param_description($stdtype,$value); |
Line 2411 sub display_loncaparev_constraints {
|
Line 2441 sub display_loncaparev_constraints {
|
'<th>'.&mt('Extent').'</th><th>'.&mt('Setting').'</th>'. |
'<th>'.&mt('Extent').'</th><th>'.&mt('Setting').'</th>'. |
&Apache::loncommon::end_data_table_header_row(); |
&Apache::loncommon::end_data_table_header_row(); |
foreach my $rev (keys(%fromparam)) { |
foreach my $rev (keys(%fromparam)) { |
|
my ($major,$minor) = split(/\./,$rev); |
|
($reqdmajor,$reqdminor) = |
|
&Apache::lonrelrequtils::update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
$output .= &Apache::loncommon::start_data_table_row(). |
$output .= &Apache::loncommon::start_data_table_row(). |
'<td rowspan="'.$rowspan{$rev}.'">'.$rev.'</td>'; |
'<td rowspan="'.$rowspan{$rev}.'">'.$rev.'</td>'; |
my $newrow; |
my $newrow; |
Line 2441 sub display_loncaparev_constraints {
|
Line 2474 sub display_loncaparev_constraints {
|
} |
} |
} |
} |
|
|
|
my %comm_blocks = &Apache::lonnet::dump('comm_block',$cdom,$cnum); |
|
my $now = time; |
|
if (keys(%comm_blocks) > 0) { |
|
foreach my $block (keys(%comm_blocks)) { |
|
if ($block =~ /^firstaccess____(.+)$/) { |
|
my $rev = $Apache::lonnet::needsrelease{'course:commblock:timer'}; |
|
if (ref($comm_blocks{$block}) eq 'HASH') { |
|
push(@{$fromblocks{'timer'}{$rev}},&unescape($comm_blocks{$block}{'event'}). |
|
' '.&mt('set by [_1]', |
|
&Apache::loncommon::plainname(split(/:/,$comm_blocks{$block}{'setter'})))); |
|
} |
|
next; |
|
} elsif ($block =~ /^(\d+)____(\d+)$/) { |
|
my ($start,$end) = ($1,$2); |
|
next if ($end < $now); |
|
} |
|
if (ref($comm_blocks{$block}) eq 'HASH') { |
|
if (ref($comm_blocks{$block}{'blocks'}) eq 'HASH') { |
|
if (ref($comm_blocks{$block}{'blocks'}{'docs'}) eq 'HASH') { |
|
if (keys(%{$comm_blocks{$block}{'blocks'}{'docs'}}) > 0) { |
|
my $rev = $Apache::lonnet::needsrelease{'course:commblock:docs'}; |
|
push(@{$fromblocks{'docs'}{$rev}},&unescape($comm_blocks{$block}{'event'}). |
|
' '. |
|
&mt('set by [_1]', |
|
&Apache::loncommon::plainname(split(/:/,$comm_blocks{$block}{'setter'})))); |
|
} |
|
} elsif ($comm_blocks{$block}{'blocks'}{'printout'} eq 'on') { |
|
my $rev = $Apache::lonnet::needsrelease{'course:commblock:printout'}; |
|
push(@{$fromblocks{'printout'}{$rev}},&unescape($comm_blocks{$block}{'event'}). |
|
' '. |
|
&mt('set by [_1]', |
|
&Apache::loncommon::plainname(split(/:/,$comm_blocks{$block}{'setter'})))); |
|
|
|
} |
|
} |
|
} |
|
} |
|
if (keys(%fromblocks)) { |
|
my %lt = ( |
|
docs => 'Content blocking', |
|
printout => 'Printout generation', |
|
timer => 'Timed quiz trigger', |
|
); |
|
$output .= '<h4>'.&mt('Requirements from exam blocking').'</h4>'. |
|
&Apache::loncommon::start_data_table(). |
|
&Apache::loncommon::start_data_table_header_row(). |
|
'<th>'.&mt('Release').'</th><th>'.&mt('Setting').'</th>'. |
|
'<th>'.&mt('Event(s)').'</th>'. |
|
&Apache::loncommon::end_data_table_header_row(); |
|
foreach my $type ('docs','printout','timer') { |
|
if (ref($fromblocks{$type}) eq 'HASH') { |
|
foreach my $rev (keys(%{$fromblocks{$type}})) { |
|
my ($major,$minor) = split(/\./,$rev); |
|
($reqdmajor,$reqdminor) = |
|
&Apache::lonrelrequtils::update_reqd_loncaparev($major,$minor,$reqdmajor,$reqdminor); |
|
$output .= &Apache::loncommon::start_data_table_row(). |
|
'<td>'.$rev.'</td><td>'.$lt{$type}.'</td><td>'; |
|
foreach my $event (sort(@{$fromblocks{$type}{$rev}})) { |
|
$output .= $event.'<br />'; |
|
} |
|
$output =~ s{\Q<br />\E$}{}; |
|
$output .= '</td>'.&Apache::loncommon::end_data_table_row(); |
|
} |
|
} |
|
} |
|
$output .= &Apache::loncommon::end_data_table().'<br />'; |
|
} |
|
} |
|
|
if (defined($navmap)) { |
if (defined($navmap)) { |
my %anonsubms=&Apache::lonnet::dump('nohist_anonsurveys',$cdom,$cnum); |
my %anonsubms=&Apache::lonnet::dump('nohist_anonsurveys',$cdom,$cnum); |
my $rev_anonsurv=$Apache::lonnet::needsrelease{'parameter:type:anonsurvey'}; |
my $rev_anonsurv=$Apache::lonnet::needsrelease{'parameter:type:anonsurvey'}; |
Line 2450 sub display_loncaparev_constraints {
|
Line 2552 sub display_loncaparev_constraints {
|
my $stdname=&Apache::lonparmset::standard_parameter_names('type'); |
my $stdname=&Apache::lonparmset::standard_parameter_names('type'); |
my $valanon=&get_param_description($stdtype,'anonsurvey'); |
my $valanon=&get_param_description($stdtype,'anonsurvey'); |
my $valrandtry=&get_param_description($stdtype,'randomizetry'); |
my $valrandtry=&get_param_description($stdtype,'randomizetry'); |
|
my %checkedrev; |
foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_problem() },1,0)) { |
foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_problem() },1,0)) { |
my @parts = @{$res->parts()}; |
my @parts = @{$res->parts()}; |
my $symb = $res->symb(); |
my $symb = $res->symb(); |
Line 2467 sub display_loncaparev_constraints {
|
Line 2569 sub display_loncaparev_constraints {
|
push(@{$bysubmission{$symb}{$rev}},$what); |
push(@{$bysubmission{$symb}{$rev}},$what); |
} |
} |
$allmaps{$enclosing_map} = 1; |
$allmaps{$enclosing_map} = 1; |
|
unless ($checkedrev{'anonsurvey'}) { |
|
my ($major,$minor) = split(/\./,$rev); |
|
($reqdmajor,$reqdminor) = |
|
&Apache::lonrelrequtils::update_reqd_loncaparev($major,$minor, |
|
$reqdmajor,$reqdminor); |
|
$checkedrev{'anonsurvey'} = 1; |
|
} |
} |
} |
if (exists($randtrysubms{$symb."\0".$part})) { |
if (exists($randtrysubms{$symb."\0".$part})) { |
my $rev = $rev_randtry; |
my $rev = $rev_randtry; |
Line 2479 sub display_loncaparev_constraints {
|
Line 2588 sub display_loncaparev_constraints {
|
push(@{$bysubmission{$symb}{$rev}},$what); |
push(@{$bysubmission{$symb}{$rev}},$what); |
} |
} |
$allmaps{$enclosing_map} = 1; |
$allmaps{$enclosing_map} = 1; |
|
unless ($checkedrev{'randomizetry'}) { |
|
my ($major,$minor) = split(/\./,$rev); |
|
($reqdmajor,$reqdminor) = |
|
&Apache::lonrelrequtils::update_reqd_loncaparev($major,$minor, |
|
$reqdmajor,$reqdminor); |
|
$checkedrev{'randomizetry'} = 1; |
|
} |
} |
} |
} |
} |
my %responses = $res->responseTypes(); |
my %responses = $res->responseTypes(); |
foreach my $key (keys(%responses)) { |
foreach my $key (keys(%responses)) { |
if (exists($checkresponsetypes{$key})) { |
if (exists($Apache::lonrelrequtils::checkresponsetypes{$key})) { |
push(@{$byresponsetype{$symb}{$checkresponsetypes{$key}}},$key); |
my $rev = $Apache::lonrelrequtils::checkresponsetypes{$key}; |
|
unless ($checkedrev{$key}) { |
|
my ($major,$minor) = split(/\./,$rev); |
|
($reqdmajor,$reqdminor) = |
|
&Apache::lonrelrequtils::update_reqd_loncaparev($major,$minor, |
|
$reqdmajor,$reqdminor); |
|
$checkedrev{$key} = 1; |
|
} |
|
push(@{$byresponsetype{$symb}{$rev}},$key); |
$allmaps{$enclosing_map} = 1; |
$allmaps{$enclosing_map} = 1; |
} |
} |
} |
} |
Line 2502 sub display_loncaparev_constraints {
|
Line 2626 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 2545 sub display_loncaparev_constraints {
|
Line 2669 sub display_loncaparev_constraints {
|
'</p>'); |
'</p>'); |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
|
my ($currmajor,$currminor) = split(/\./,$loncaparev); |
|
if (($currmajor != $reqdmajor) || ($currminor != $reqdminor)) { |
|
return 1; |
|
} |
return; |
return; |
} |
} |
|
|
Line 2686 sub show_contents_view {
|
Line 2814 sub show_contents_view {
|
} |
} |
$r->print(&Apache::loncommon::end_data_table()); |
$r->print(&Apache::loncommon::end_data_table()); |
} |
} |
|
return; |
} |
} |
|
|
sub releases_by_map { |
sub releases_by_map { |
Line 2739 sub get_param_description {
|
Line 2868 sub get_param_description {
|
return $name; |
return $name; |
} |
} |
|
|
|
sub update_releasereq { |
|
my $readmap = 1; |
|
my $getrelreq = 1; |
|
if (ref($modified_courses) eq 'ARRAY') { |
|
foreach my $item (@{$modified_courses}) { |
|
if (ref($item) eq 'ARRAY') { |
|
my ($cdom,$cnum,$chome,$crstype) = @{$item}; |
|
&Apache::lonrelrequtils::modify_course_relreq(undef,undef,$cnum,$cdom, |
|
$chome,$crstype,$cdom.'_'.$cnum, |
|
$readmap,$getrelreq); |
|
} |
|
} |
|
$modified_courses = []; |
|
} |
|
undef($registered_cleanup); |
|
return; |
|
} |
|
|
sub show_autocoowners { |
sub show_autocoowners { |
my (@currcoown) = @_; |
my (@currcoown) = @_; |
my $output = '<i><span class="LC_nobreak">'.&mt('Co-ownership is set automatically when a Course Coordinator role[_1] is assigned to official course personnel (from institutional data).','</span><br /><span class="LC_nobreak">').'</span></i>'; |
my $output = '<i><span class="LC_nobreak">'.&mt('Co-ownership is set automatically when a Course Coordinator role[_1] is assigned to official course personnel (from institutional data).','</span><br /><span class="LC_nobreak">').'</span></i>'; |
Line 2887 sub print_localization {
|
Line 3034 sub print_localization {
|
$count ++; |
$count ++; |
my $colspan; |
my $colspan; |
unless ($item eq 'languages') { |
unless ($item eq 'languages') { |
$colspan = 2; |
$colspan = 2; |
} |
} |
$datatable .= &item_table_row_start($items{$item}{text},$count,undef,$colspan); |
$datatable .= &item_table_row_start($items{$item}{text},$count,undef,$colspan); |
if ($item eq 'timezone') { |
if ($item eq 'timezone') { |
Line 3007 sub print_feedback {
|
Line 3154 sub print_feedback {
|
} |
} |
if ($position eq 'top') { |
if ($position eq 'top') { |
my $includeempty = 0; |
my $includeempty = 0; |
$datatable .= '</td><td align="right">'. |
$datatable .= '</td><td align="right">'. |
&user_table($cdom,$item,\@sections, |
&user_table($cdom,$item,\@sections, |
$settings->{$item},\%lt); |
$settings->{$item},\%lt); |
} else { |
} else { |
$datatable .= &Apache::lonhtmlcommon::textbox($item.'.text', |
$datatable .= &Apache::lonhtmlcommon::textbox($item.'.text', |
Line 3197 sub print_discussion {
|
Line 3344 sub print_discussion {
|
my $colspan; |
my $colspan; |
if ($item eq 'allow_limited_html_in_feedback') { |
if ($item eq 'allow_limited_html_in_feedback') { |
$colspan = 2; |
$colspan = 2; |
} |
} |
$datatable .= &item_table_row_start($items{$item}{text},$count,undef,$colspan); |
$datatable .= &item_table_row_start($items{$item}{text},$count,undef,$colspan); |
if ($item eq 'plc.roles.denied') { |
if ($item eq 'plc.roles.denied') { |
$datatable .= '</td><td align="right">'. |
$datatable .= '</td><td align="right">'. |
'<table>'.&role_checkboxes($cdom,$cnum,$item,$settings). |
'<table>'.&role_checkboxes($cdom,$cnum,$item,$settings). |
'</table>'; |
'</table>'; |
} elsif ($item eq 'plc.users.denied') { |
} elsif ($item eq 'plc.users.denied') { |
$datatable .= '</td><td align="right">'. |
$datatable .= '</td><td align="right">'. |
&user_table($cdom,$item,undef, |
&user_table($cdom,$item,undef, |
$settings->{$item},\%lt); |
$settings->{$item},\%lt); |
} elsif ($item eq 'pch.roles.denied') { |
} elsif ($item eq 'pch.roles.denied') { |
$datatable .= '</td><td align="right">'. |
$datatable .= '</td><td align="right">'. |
Line 3234 sub print_discussion {
|
Line 3381 sub print_discussion {
|
'<th align="center">'.&mt('font-size').'</th>'. |
'<th align="center">'.&mt('font-size').'</th>'. |
'<th align="center">'.&mt('font-weight').'</th>'. |
'<th align="center">'.&mt('font-weight').'</th>'. |
'<th align="center">'.&mt('font-style').'</th>'. |
'<th align="center">'.&mt('font-style').'</th>'. |
'<th align="center">'.&mt('Other css').'</th>'. |
'<th align="center">'.&mt('Other css').'</th>'. |
&Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table_row(). |
&set_discussion_fonts($cdom,$cnum,$item,$settings). |
&set_discussion_fonts($cdom,$cnum,$item,$settings). |
&Apache::loncommon::end_data_table().'<br />'; |
&Apache::loncommon::end_data_table().'<br />'; |
Line 3406 sub set_discussion_fonts {
|
Line 3553 sub set_discussion_fonts {
|
|
|
sub discussion_vote_classes { |
sub discussion_vote_classes { |
my $classorder = ['twoplus','oneplus','zero','oneminus','twominus']; |
my $classorder = ['twoplus','oneplus','zero','oneminus','twominus']; |
my %classtitles = &Apache::lonlocal::texthash( |
my %classtitles = &Apache::lonlocal::texthash( |
'twoplus' => 'Two sigma above mean', |
'twoplus' => 'Two sigma above mean', |
'oneplus' => 'One sigma above mean', |
'oneplus' => 'One sigma above mean', |
'zero' => 'Within one sigma of mean', |
'zero' => 'Within one sigma of mean', |
Line 3472 sub print_classlists {
|
Line 3619 sub print_classlists {
|
'defaultcredits' => { |
'defaultcredits' => { |
text => '<b>'.&mt($itemtext->{'defaultcredits'}).'</b>', |
text => '<b>'.&mt($itemtext->{'defaultcredits'}).'</b>', |
}, |
}, |
|
|
'nothideprivileged' => { |
'nothideprivileged' => { |
text => '<b>'.&mt($itemtext->{'nothideprivileged'}).'</b>', |
text => '<b>'.&mt($itemtext->{'nothideprivileged'}).'</b>', |
input => 'checkbox', |
input => 'checkbox', |
Line 3552 sub print_appearance {
|
Line 3699 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 3568 sub print_grading {
|
Line 3723 sub print_grading {
|
input => 'selectbox', |
input => 'selectbox', |
options => { |
options => { |
standard => &mt('Standard: shows points'), |
standard => &mt('Standard: shows points'), |
|
categories => &mt('Categories: shows points according to categories'), |
external => &mt('External: shows number of completed parts and totals'), |
external => &mt('External: shows number of completed parts and totals'), |
externalnototals => &mt('External: shows only number of completed parts'), |
externalnototals => &mt('External: shows only number of completed parts'), |
spreadsheet => &mt('Spreadsheet: (with link to detailed scores)'), |
spreadsheet => &mt('Spreadsheet: (with link to detailed scores)'), |
}, |
}, |
order => ['standard','external','externalnototals','spreadsheet'], |
order => ['standard','categories','external','externalnototals','spreadsheet'], |
}, |
}, |
'rndseed' => { |
'rndseed' => { |
text => '<b>'.&mt($itemtext->{'rndseed'}).'</b>'. |
text => '<b>'.&mt($itemtext->{'rndseed'}).'</b>'. |
Line 3813 sub item_table_row_end {
|
Line 3969 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> '. |
$itemon.' value="'.$valueyes.'" />'.&mt('Yes').'</label> '. |
'<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 3911 sub make_item_rows {
|
Line 4077 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 3947 sub nothidepriv_row {
|
Line 4122 sub nothidepriv_row {
|
} |
} |
} |
} |
if ($settings->{'checkforpriv'}) { |
if ($settings->{'checkforpriv'}) { |
@checkdoms = split(/,/,$settings->{'checkforpriv'}); |
@checkdoms = split(/,/,$settings->{'checkforpriv'}); |
} |
} |
} |
} |
push(@checkdoms,$cdom); |
push(@checkdoms,$cdom); |
Line 3961 sub nothidepriv_row {
|
Line 4136 sub nothidepriv_row {
|
if ($end == -1 || $start == -1) { |
if ($end == -1 || $start == -1) { |
next; |
next; |
} |
} |
foreach my $dom (@checkdoms) { |
foreach my $dom (@checkdoms) { |
if (&Apache::lonnet::privileged($uname,$udom,\@checkdoms,['dc','su'])) { |
if (&Apache::lonnet::privileged($uname,$udom,\@checkdoms,['dc','su'])) { |
unless (grep(/^\Q$user\E$/,@privusers)) { |
unless (grep(/^\Q$user\E$/,@privusers)) { |
push(@privusers,$user); |
push(@privusers,$user); |
Line 3987 sub nothidepriv_row {
|
Line 4162 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> '. |
$hideon.' value="" />'.&mt('Hidden').'</label> '. |
'<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>'; |
Line 4027 sub checkforpriv_row {
|
Line 4203 sub checkforpriv_row {
|
my $domdesc = &Apache::lonnet::domain($currdom,'description'); |
my $domdesc = &Apache::lonnet::domain($currdom,'description'); |
if ($domdesc eq '') { |
if ($domdesc eq '') { |
$domdesc = $currdom; |
$domdesc = $currdom; |
} |
} |
$datatable .= |
$datatable .= |
&Apache::loncommon::start_data_table_row(). |
&Apache::loncommon::start_data_table_row(). |
'<td align="left"><span class="LC_nobreak">'. |
'<td align="left"><span class="LC_nobreak">'. |
Line 4039 sub checkforpriv_row {
|
Line 4215 sub checkforpriv_row {
|
&mt('Delete').'</label></span></td>'. |
&mt('Delete').'</label></span></td>'. |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
$num ++; |
$num ++; |
unless (grep(/^\Q$currdom\E$/,@excdoms)) { |
unless (grep(/^\Q$currdom\E$/,@excdoms)) { |
push(@excdoms,$currdom); |
push(@excdoms,$currdom); |
} |
} |
} |
} |
} |
} |
if ((scalar(keys(%domains)) - scalar(@excdoms)) > 0) { |
if ((scalar(keys(%domains)) - scalar(@excdoms)) > 0) { |
$datatable .= |
$datatable .= |
&Apache::loncommon::start_data_table_row(). |
&Apache::loncommon::start_data_table_row(). |
'<td align="left"><span class="LC_nobreak">'. |
'<td align="left"><span class="LC_nobreak">'. |
&mt('Additional domain:'). '</span><br />'. |
&mt('Additional domain:'). '</span><br />'. |