--- loncom/interface/lonparmset.pm 2022/03/23 17:29:29 1.522.2.28.4.3 +++ 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.3 2022/03/23 17:29:29 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; + } } } } @@ -2807,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(< // @@ -2925,6 +2945,7 @@ ENDPARMSELSCRIPT if ($parm_permission->{'edit'}) { undef($readonly); } + $r->print('
'); if ($parmlev eq 'full') { # @@ -3333,6 +3354,7 @@ ENDMAPONE .'' ); } # end of $parmlev eq general + $r->print('
'); } $r->print(''); $r->print(&Apache::loncommon::end_page()); @@ -3953,7 +3975,7 @@ sub string_deeplink_selector { my ($thiskey, $showval, $readonly) = @_; my (@components,%values,@current,%titles,%options,%optiontext,%defaults, %selectnull,%domlti,%crslti,@possmenus); - @components = ('state','others','listing','scope','protect','menus'); + @components = ('state','others','listing','scope','protect','menus','target'); %titles = &Apache::lonlocal::texthash ( state => 'Access status', others => 'Hide other resources', @@ -3961,6 +3983,7 @@ sub string_deeplink_selector { scope => 'Access scope for link', protect => 'Link protection', menus => 'Menu Items Displayed', + target => 'Embedded?', ); %options = ( state => ['only','off','both'], @@ -3969,6 +3992,7 @@ sub string_deeplink_selector { scope => ['res','map','rec'], protect => ['none','key','ltid','ltic'], menus => ['std','colls'], + target => ['_self','_top'], ); %optiontext = &Apache::lonlocal::texthash ( only => 'deep only', @@ -3990,6 +4014,8 @@ sub string_deeplink_selector { ltid => 'LTI access (domain)' , std => 'Standard (all menus)', colls => 'Numbered collection', + _self => 'Embedded', + _top => 'Not embedded', ); %selectnull = &Apache::lonlocal::texthash ( ltic => 'Select Launcher', @@ -4005,6 +4031,7 @@ sub string_deeplink_selector { ($values{'scope'}) = ($current[3] =~ /^(res|map|rec)$/); ($values{'protect'}) = ($current[4] =~ /^(key:[a-zA-Z\d_.!\@#\$%^&*()+=-]+|ltic:\d+|ltid:\d+)$/); ($values{'menus'}) = ($current[5] =~ /^(\d+)$/); + ($values{'target'}) = ($current[6] =~ /^(_self|_top)$/); } else { $defaults{'state'} = 'off', $defaults{'others'} = 'unhide', @@ -4012,6 +4039,7 @@ sub string_deeplink_selector { $defaults{'scope'} = 'res'; $defaults{'protect'} = 'none'; $defaults{'menus'} = '0'; + $defaults{'target'} = '_top'; } my $disabled; if ($readonly) { @@ -4191,7 +4219,7 @@ my %strings = => [['_allowfrom_','Hostname(s), or IP(s) from which access is allowed'], ['_denyfrom_','Hostname(s) or IP(s) from which access is disallowed']], 'string_deeplink' - => [['on','Set choices for link protection, resource listing, access scope, and shown menu items']], + => [['on','Set choices for link protection, resource listing, access scope, shown menu items, and embedding']], ); my %stringmatches = ( @@ -4199,7 +4227,7 @@ my %stringmatches = ( => [['_allowfrom_','[^\!]+'], ['_denyfrom_','\!']], 'string_deeplink' - => [['on','^(only|off|both)\,(hide|unhide)\,(full|absent|grades|details|datestatus)\,(res|map|rec)\,(none|key\:\w+|ltic\:\d+|ltid\:\d+)\,(\d+|)$']], + => [['on','^(only|off|both)\,(hide|unhide)\,(full|absent|grades|details|datestatus)\,(res|map|rec)\,(none|key\:\w+|ltic\:\d+|ltid\:\d+)\,(\d+|)\,_(self|top)$']], ); my %stringtypes = ( @@ -4440,6 +4468,8 @@ sub newoverview { '. &Apache::lonhtmlcommon::resize_scrollbox_js('params')."\n". &showhide_js()."\n". + &validateparms_js()."\n". + &ipacc_boxes_js()."\n". &done_proctor_js()."\n". &deeplink_js()."\n". '// ]]> @@ -4450,7 +4480,7 @@ sub newoverview { my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview'); $r->print($start_page.$breadcrumbs); $r->print(< +
ENDOVER my @ids=(); my %typep=(); @@ -4635,6 +4665,8 @@ sub overview { my $js = ''."\n"; @@ -4647,7 +4679,7 @@ sub overview { my $start_page=&Apache::loncommon::start_page('Modify Parameters',$js); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview'); $r->print($start_page.$breadcrumbs); - $r->print(''); + $r->print(''); # Store modified unless ($readonly) {