--- loncom/interface/lonextresedit.pm 2023/06/01 19:36:11 1.32 +++ loncom/interface/lonextresedit.pm 2025/03/15 01:03:33 1.36 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: lonextresedit.pm,v 1.32 2023/06/01 19:36:11 raeburn Exp $ +# $Id: lonextresedit.pm,v 1.36 2025/03/15 01:03:33 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -109,7 +109,7 @@ sub handler { %ltitools = ( dom => \%domtools, crs => \%crstools, - ); + ); } my $js = &Apache::lonhtmlcommon::scripttag(&extedit_javascript()); my $pathitem = '
'; $gradablestyle = 'display:inline'; @@ -658,8 +681,15 @@ sub extedit_form { $crslabel = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'}; $crstitle = $env{'course.'.$cdom.'_'.$cnum.'.description'}; $crsappend = ''; + $returnurl = ''; + $backtourl = ''; + $customreturn = 'hidden'; $chknogrd = ' checked="checked"'; + $chknoreturn = ''; + $chkreturndef = ' checked="checked"'; + $chkreturncust = ''; } + my $onclickreturl = ' onclick="updateReturnUrl('."this.form,'$toolattr{'customreturnurl'}','$toolattr{'returnurldiv'}','exttoolreturnurl'".');"'; $toolelem .= '
'. ''.&mt('Display target:').' '. '
'. + ''."\n". '
'. ''.&mt('Course title:').' '. '
'. - '
'. + ''."\n". '
'. ''.&mt('Append to URL[_1]', ' ('.$providerurl.')
'). '

'. - '
'. + ''."\n". '
'. ''.&mt('Gradable').' '. ''.(' 'x2). '
'; + ' />'.&mt('No').'
'."\n". + '
'. + ''.&mt('Include return URL').': '. + ''.(' 'x2). + ''.(' 'x2). + '
'."\n". + ''. + '
'."\n"; } my $chooser = $toolelem; if ($type eq 'ext') { $chooser = "
+ $preview
"; } + my $idattr; + unless ($subdivid eq '') { + $idattr = 'id="'.$subdivid.'"'; + } $form = <
$legend $active $chooser -
+
+ $pathitem $hiddenelem @@ -834,7 +882,8 @@ sub extedit_javascript { " var ltitoolsExplain = new Array();\n". " var ltitoolsLabel = new Array();\n". " var ltitoolsTitle = new Array();\n". - " var ltitoolsAppend = new Array();\n"; + " var ltitoolsAppend = new Array();\n". + " var ltitoolsReturnUrl = new Array();\n"; $exttoolnums = " var ltitoolsnum = new Array();\n". " var tooloptval = new Array();\n". " var toolopttxt = new Array();\n"; @@ -854,7 +903,8 @@ sub extedit_javascript { " ltitoolsExplain[$idx] = new Array($num);\n". " ltitoolsLabel[$idx] = new Array($num);\n". " ltitoolsTitle[$idx] = new Array($num);\n". - " ltitoolsAppend[$idx] = new Array($num);\n"; + " ltitoolsAppend[$idx] = new Array($num);\n". + " ltitoolsReturnUrl[$idx] = new Array($num);\n"; my $i=0; foreach my $key (sort { $a <=> $b } keys(%{$toolsref->{$type}})) { if (ref($toolsref->{$type}->{$key}) eq 'HASH') { @@ -893,6 +943,8 @@ sub extedit_javascript { $toolsjs .= " ltitoolsTitle[$idx][$i] = '$title';\n"; my $append = $toolsref->{$type}->{$key}->{'crsconf'}->{'append'}; $toolsjs .= " ltitoolsAppend[$idx][$i] = '$append';\n"; + my $returnurl = $toolsref->{$type}->{$key}->{'crsconf'}->{'returnurl'}; + $toolsjs .= " ltitoolsReturnUrl[$idx][$i] = '$returnurl';\n"; } } $i++; @@ -1050,10 +1102,12 @@ function setExternal(extform,residx,type var labelinput = prefix+'toolcrslabel'; var titleinput = prefix+'toolcrstitle'; var appendinput = prefix+'toolcrsappend'; + var customreturnurl = prefix+'customreturnurl'; if (residx > 0) { labelinput += '_'+residx; titleinput += '_'+residx; - appendinput += '_'+residx; + appendinput += '_'+residx; + customreturnurl += '_'+residx; } if (document.getElementById(labelinput)) { var crslabel = document.getElementById(labelinput).value; @@ -1102,6 +1156,33 @@ function setExternal(extform,residx,type } else { info += ':'; } + var returnurldiv = prefix+'toolreturnurldiv'; + if (residx > 0) { + returnurldiv += '_'+residx; + } + if (document.getElementById(returnurldiv)) { + if (document.getElementById(returnurldiv).style.display == 'inline') { + if (extform.exttoolreturnurl.length) { + for (var i=0; i 0) { eval("extform.importdetail.value=title+'='+info+'='+residx;extform.submit();"); @@ -1284,6 +1365,7 @@ function updateExttool(caller,form,suppl titlediv = prefix+'toolcrstitlediv'; appenddiv = prefix+'toolcrsappenddiv'; gradablediv = prefix+'toolgradablediv'; + returnurldiv = prefix+'toolreturnurldiv'; providerurl = prefix+'toolproviderurl'; labelinput = prefix+'toolcrslabel'; titleinput = prefix+'toolcrstitle'; @@ -1324,6 +1406,9 @@ function updateExttool(caller,form,suppl if (document.getElementById(gradablediv)) { document.getElementById(gradablediv).style.display = 'none'; } + if (document.getElementById(returnurldiv)) { + document.getElementById(returnurldiv).style.display = 'none'; + } } else { var tooltype = ''; var typeelem = form.elements[prefix+'exttooltype']; @@ -1360,7 +1445,7 @@ function updateExttool(caller,form,suppl if ((ltitoolsDisplay[i][j]) && (ltitoolsTarget[i][j] == 'window')) { dimen = 'block'; dimenwidth = ltitoolsWidth[i][j]; - dimenheight = ltitoolsHeight[i][j]; + dimenheight = ltitoolsHeight[i][j]; } if (document.getElementById(dimendiv)) { document.getElementById(dimendiv).style.display = dimen; @@ -1387,7 +1472,7 @@ function updateExttool(caller,form,suppl } if (document.getElementById(linktextinput)) { if (ltitoolsLink[i][j]) { - document.getElementById(linktextinput).value = ltitoolsLinkDef[i][j]; + document.getElementById(linktextinput).value = ltitoolsLinkDef[i][j]; } else { document.getElementById(linktextinput).value = ''; } @@ -1441,6 +1526,13 @@ function updateExttool(caller,form,suppl document.getElementById(gradablediv).style.display = 'inline'; } } + if (document.getElementById(returnurldiv)) { + if (ltitoolsReturnUrl[i][j]) { + document.getElementById(returnurldiv).style.display = 'inline'; + } else { + document.getElementById(returnurldiv).style.display = 'none'; + } + } break; } } @@ -1450,6 +1542,30 @@ function updateExttool(caller,form,suppl } } +function updateReturnUrl(form,typeid,divid,radioname) { + if ((document.getElementById(typeid)) && + (document.getElementById(divid))) { + if (document.getElementById(divid).style.display == 'inline') { + var radelem = form.elements[radioname]; + var inputtype = 'hidden'; + if (radelem.length) { + for (var i=0; i