--- loncom/interface/lonparmset.pm 2022/01/03 20:09:40 1.522.2.28.4.1 +++ loncom/interface/lonparmset.pm 2022/05/31 14:31:45 1.522.2.28.4.6 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.522.2.28.4.1 2022/01/03 20:09:40 raeburn Exp $ +# $Id: lonparmset.pm,v 1.522.2.28.4.6 2022/05/31 14:31:45 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -945,6 +945,7 @@ function validateParms() { var dlKeyRegExp = /^deeplink_key_/; var dlMenusRegExp = /^deeplink_menus_/; var dlCollsRegExp = /^deeplink_colls_/; + var dlTargetRegExp = /^deeplink_target_/; var patternIP = /[\[\]\*\.a-zA-Z\d\-]+/; if ((document.parmform.elements.length != 'undefined') && (document.parmform.elements.length) != 'null') { if (document.parmform.elements.length) { @@ -970,6 +971,7 @@ function validateParms() { if (document.parmform.elements['set_'+identifier].value) { possdeny = ','+possdeny; } + document.parmform.elements['set_'+identifier].value += possdeny; } } } else if (deeplinkRegExp.test(name)) { @@ -1075,6 +1077,17 @@ function validateParms() { } document.parmform.elements['set_'+identifier].value += posslinkmenu; } + } else if (dlTargetRegExp.test(name)) { + var identifier = name.replace(dlTargetRegExp,''); + var idx = document.parmform.elements[i].selectedIndex; + if (idx > 0) { + var possdeeplink = document.parmform.elements[i].options[idx].value + possdeeplink = possdeeplink.replace(/^\s+|\s+$/g,''); + if (document.parmform.elements['set_'+identifier].value) { + possdeeplink = ','+possdeeplink; + } + document.parmform.elements['set_'+identifier].value += possdeeplink; + } } } } @@ -1313,13 +1326,11 @@ sub print_row { my ($domltistr,$crsltistr); my %lti = &Apache::lonnet::get_domain_lti($env{'course.'.$env{'request.course.id'}.'.domain'}, - 'provider'); + 'linkprot'); if (keys(%lti)) { foreach my $item (sort { $a <=> $b } (keys(%lti))) { - if (ref($lti{$item}) eq 'HASH') { - unless ($lti{$item}{'requser'}) { - $domltistr .= $item.':'.&escape(&escape($lti{$item}{'consumer'})).','; - } + if (($item =~ /^\d+$/) && (ref($lti{$item}) eq 'HASH')) { + $domltistr .= $item.':'.&escape(&escape($lti{$item}{'name'})).','; } } $domltistr =~ s/,$//; @@ -2675,6 +2686,7 @@ sub assessparms { my $chome = $env{'course.'.$env{'request.course.id'}.'.home'}; my ($got_chostname,$chostname,$cmajor,$cminor); my $totalstored = 0; + my $totalskippeduser = 0; my $now = time; for (my $i=0;$i<=$#markers;$i++) { my ($needsrelease,$needsnewer,$name); @@ -2683,6 +2695,11 @@ sub assessparms { } if ($markers[$i] =~ /\&(6|5|4)$/) { next if ($noeditgrp); + } elsif ($markers[$i] =~ /\&(3|2|1)$/) { + if ($uname eq '') { + $totalskippeduser ++; + next; + } } if ($markers[$i] =~ /^[\d.]+\&0_availablestudent\&(1|2|3)$/) { my (@ok_slots,@fail_slots,@del_slots); @@ -2760,9 +2777,27 @@ sub assessparms { # ---------------------------------------------------------------- Done storing if ($totalstored) { $message.='
'
+ .&mt('Changes for [quant,_1,parameter] saved.',$totalstored)
+ .'
'
.&mt('Changes can take up to 10 minutes before being active for all students.')
.&Apache::loncommon::help_open_topic('Caching')
.'
'.&mt('No parameter changes saved.').'
'; + } + if ($totalskippeduser) { + $message .= ''; + if ($uhome eq 'no_host') { + $message .= &mt('Changes for [quant,_1,user-specific parameter] not saved because the username or ID was invalid.', + $totalskippeduser); + } elsif ($env{'form.userroles'} eq 'any') { + $message .= &mt('Changes for [quant,_1,user-specific parameter] not saved because the user does not have a course role.', + $totalskippeduser); + } else { + $message .= &mt('Changes for [quant,_1,user-specific parameter] not saved because the user is not a student.', + $totalskippeduser); + } + $message .= '
'; } } #----------------------------------------------- if all selected, fill in array @@ -2785,13 +2820,20 @@ sub assessparms { # ----- Start Parameter Selection - # Hide parm selection? + # Hide parm selection and possibly table? + my ($tablejs,$tabledivsty); + if (((($env{'form.uname'} ne '') || ($env{'form.id'} ne '')) && ($uname eq '')) && + ($env{'form.dis'}) && ($pssymb eq '')) { + $tablejs = 'document.getElementById('."'parmtable'".').style.display = "";'; + $tabledivsty = ' style="display:none"'; + } $r->print(<