--- loncom/interface/lonparmset.pm 2022/07/08 16:12:50 1.522.2.28.4.7
+++ loncom/interface/lonparmset.pm 2023/01/31 15:47:57 1.522.2.28.4.8
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.522.2.28.4.7 2022/07/08 16:12:50 raeburn Exp $
+# $Id: lonparmset.pm,v 1.522.2.28.4.8 2023/01/31 15:47:57 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1183,6 +1183,8 @@ END
}
sub done_proctor_js {
+ my $defaultdone = &mt('Done');
+ &js_escape(\$defaultdone);
return <<"END";
function toggleSecret(form,radio,key) {
var radios = form[radio+key];
@@ -1199,6 +1201,15 @@ function toggleSecret(form,radio,key) {
document.getElementById('done_'+key+'_proctorkey').value='';
}
}
+ if (document.getElementById('done_'+key+'_buttontext')) {
+ if (radios[i].value == '') {
+ document.getElementById('done_'+key+'_buttontext').value = '';
+ } else {
+ if (document.getElementById('done_'+key+'_buttontext').value == '') {
+ document.getElementById('done_'+key+'_buttontext').value = '$defaultdone';
+ }
+ }
+ }
}
}
}
@@ -2182,7 +2193,7 @@ sub displaymenu {
}
sub mapmenu {
- my ($r,$allmaps,$pschp,$maptitles,$symbp)=@_;
+ my ($r,$allmaps,$pschp,$maptitles,$symbp,$parmlev)=@_;
my %allmaps_inverted = reverse %$allmaps;
my $navmap = Apache::lonnavmaps::navmap->new();
my $tree=[];
@@ -2230,7 +2241,11 @@ sub mapmenu {
}
}
# Show it ...
- $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Enclosing Map or Folder'),'','',' id="mapmenu"'));
+ my $rowattr = ' id="mapmenu"';
+ if ($parmlev eq 'general') {
+ $rowattr .= ' style="display:none"';
+ }
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Enclosing Map or Folder'),'','',$rowattr));
if ((ref($tree) eq 'ARRAY') && (ref($treeinfo) eq 'HASH')) {
my $icon = '';
my $whitespace =
@@ -2918,7 +2933,7 @@ ENDPARMSELSCRIPT
$r->print(&Apache::lonhtmlcommon::start_pick_box(undef,'parmlevel'));
&levelmenu($r,\%alllevs,$parmlev);
$r->print(&Apache::lonhtmlcommon::row_closure());
- &mapmenu($r,\%allmaps,$pschp,\%maptitles, \%symbp);
+ &mapmenu($r,\%allmaps,$pschp,\%maptitles,\%symbp,$parmlev);
$r->print(&Apache::lonhtmlcommon::row_closure());
$r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View')));
&partmenu($r,\%allparts,\@psprt);
@@ -3214,7 +3229,7 @@ ENDTABLEHEADFOUR
#-------------------------------------------- for each map, gather information
my $mapid;
- foreach $mapid (sort {$maplist{$a} cmp $maplist{$b}} keys %maplist) {
+ foreach $mapid (sort { $a <=> $b } keys(%maplist)) {
my $maptitle = $maplist{$mapid};
#----------------------- loop through ids and get all parameter types for map
@@ -3784,6 +3799,7 @@ sub listdata {
$realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).'
('.$1.')';
} elsif ($middle) {
my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);
+ next if (($url =~ /\.(page|sequence)$/) && ($parmlev eq 'full') && ($caller eq 'newoverview'));
$realm=''.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).'
('.$url.' in '.$map.' id: '.$id.')';
}
if ($sortorder eq 'realmstudent') {
@@ -3889,6 +3905,11 @@ sub date_interval_selector {
$showval %= $factor;
my %select = ((map {$_ => $_} (0..$max)),
'select_form_order' => [0..$max]);
+ if ($currval eq '') {
+ unshift(@{$select{'select_form_order'}},'');
+ $select{''} = '';
+ $amount = '';
+ }
$result .= &Apache::loncommon::select_form($amount,$name.'_'.$thiskey,
\%select,'',$readonly);
$result .= ' '.&mt($name);
@@ -3896,6 +3917,7 @@ sub date_interval_selector {
if ($pname eq 'interval') {
unless ($skipval{'done'}) {
my $checkedon = '';
+ my $checkedoff = '';
my $checkedproc = '';
my $currproctorkey = '';
my $currprocdisplay = 'hidden';
@@ -3903,22 +3925,22 @@ sub date_interval_selector {
my $checkedoff = ' checked="checked"';
if ($currval =~ /^(?:\d+)_done$/) {
$checkedon = ' checked="checked"';
- $checkedoff = '';
} elsif ($currval =~ /^(?:\d+)_done\:([^\:]+)\:$/) {
$currdonetext = $1;
$checkedon = ' checked="checked"';
- $checkedoff = '';
} elsif ($currval =~ /^(?:\d+)_done_proctor_(.+)$/) {
$currproctorkey = $1;
$checkedproc = ' checked="checked"';
- $checkedoff = '';
$currprocdisplay = 'text';
} elsif ($currval =~ /^(?:\d+)_done\:([^\:]+)\:_proctor_(.+)$/) {
$currdonetext = $1;
$currproctorkey = $2;
$checkedproc = ' checked="checked"';
- $checkedoff = '';
$currprocdisplay = 'text';
+ } elsif ($currval ne '') {
+ $checkedoff = ' checked="checked"';
+ } else {
+ $currdonetext = '';
}
my $onclick = ' onclick="toggleSecret(this.form,'."'done_','$thiskey'".');"';
my $disabled;
@@ -3935,7 +3957,8 @@ sub date_interval_selector {
'&').'"'.$disabled.' />
'.
''.&mt('Button text').': '.
- '&').'"'.$disabled.' />';
+ '&').'"'.$disabled.' />';
}
}
unless ($readonly) {
@@ -3948,15 +3971,36 @@ sub date_interval_selector {
sub get_date_interval_from_form {
my ($key) = @_;
my $seconds = 0;
+ my $numnotnull = 0;
foreach my $which (['days', 86400],
['hours', 3600],
['minutes', 60],
['seconds', 1]) {
my ($name, $factor) = @{ $which };
if (defined($env{'form.'.$name.'_'.$key})) {
- $seconds += $env{'form.'.$name.'_'.$key} * $factor;
+ unless ($env{'form.'.$name.'_'.$key} eq '') {
+ $numnotnull ++;
+ $seconds += $env{'form.'.$name.'_'.$key} * $factor;
+ }
+ }
}
+ if (($key =~ /\.interval$/) &&
+ (($env{'form.done_'.$key} eq '_done') || ($env{'form.done_'.$key} eq '_done_proctor'))) {
+ if ($env{'form.done_'.$key.'_buttontext'}) {
+ $env{'form.done_'.$key.'_buttontext'} =~ s/\://g;
+ $seconds .= '_done:'.$env{'form.done_'.$key.'_buttontext'}.':';
+ if ($env{'form.done_'.$key} eq '_done_proctor') {
+ $seconds .= '_proctor';
+ }
+ } else {
+ $seconds .= $env{'form.done_'.$key};
+ }
+ if (($env{'form.done_'.$key} eq '_done_proctor') &&
+ ($env{'form.done_'.$key.'_proctorkey'})) {
+ $seconds .= '_'.$env{'form.done_'.$key.'_proctorkey'};
+ }
}
+ return if (!$numnotnull);
return $seconds;
}
@@ -4641,10 +4685,8 @@ ENDOVER
$r->print('