--- loncom/interface/lonextresedit.pm 2023/07/05 18:10:06 1.8.2.4.4.1 +++ loncom/interface/lonextresedit.pm 2017/03/08 02:51:08 1.15 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: lonextresedit.pm,v 1.8.2.4.4.1 2023/07/05 18:10:06 raeburn Exp $ +# $Id: lonextresedit.pm,v 1.15 2017/03/08 02:51:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -60,7 +60,7 @@ sub handler { $symb,$type); if (($env{'form.folderpath'} =~ /^supplemental/) && ($env{'form.suppurl'})) { $supplementalflag = 1; - if (&unescape($env{'form.suppurl'}) =~ m{^/adm/$cdom/$cnum/\d+/ext\.tool$}) { + if (&unescape($env{'form.suppurl'}) =~ m{^/adm/$cdom/$cnum/\d+/exttools?$}) { $type = 'tool'; } } @@ -79,7 +79,7 @@ sub handler { if ($symb ne $env{'form.symb'}) { $env{'form.symb'} = $symb; } - if ($url =~ m{/adm/$cdom/$cnum/\d+/ext\.tool$}) { + if ($url =~ m{/adm/$cdom/$cnum/\d+/exttools?$}) { $type = 'tool'; } } @@ -98,7 +98,7 @@ sub handler { } my %ltitools; if ($type eq 'tool') { - %ltitools = &Apache::lonnet::get_domain_lti($cdom,'consumer'); + %ltitools = &Apache::lonnet::get_domain_ltitools($cdom); } my $js = &Apache::lonhtmlcommon::scripttag(&extedit_javascript()); my $pathitem = ''; } - if ($ltitools->{$toolhash{'id'}}->{'url'} =~ m{://}) { - (my $prot,my $host,$providerurl) = ($ltitools->{$toolhash{'id'}}->{'url'} =~ m{^([^/]+)://([^/]+)(|/.+)$}); - } else { - $providerurl = $ltitools->{$toolhash{'id'}}->{'url'}; - } $tooltarget = $toolhash{'target'}; if ($tooltarget eq 'window') { $dimendivstyle = 'display:block'; - $windivstyle = 'display:block'; $chkstate{'window'} = 'checked="checked" '; - } elsif ($tooltarget eq 'tab') { - $windivstyle = 'display:block'; - $chkstate{'tab'} = 'checked="checked" '; } else { $chkstate{'iframe'} = 'checked="checked" '; } $width = $toolhash{'width'}; $height = $toolhash{'height'}; - $linktext = $toolhash{'linktext'}; - $explanation = $toolhash{'explanation'}; if (ref($ltitools->{$toolhash{'id'}}->{'crsconf'}) eq 'HASH') { if ($ltitools->{$toolhash{'id'}}->{'crsconf'}->{'title'}) { $crstitle = $toolhash{'crstitle'}; @@ -479,19 +447,9 @@ sub extedit_form { $crslabel = $toolhash{'crslabel'}; $labelstyle = 'display:inline'; } - if ($ltitools->{$toolhash{'id'}}->{'crsconf'}->{'append'}) { - $crsappend = $toolhash{'crsappend'}; - $appendstyle = 'display:inline'; - } if ($ltitools->{$toolhash{'id'}}->{'crsconf'}->{'target'}) { $dispdivstyle = 'display:block'; } - if ($ltitools->{$toolhash{'id'}}->{'crsconf'}->{'linktext'}) { - $linktextstyle = 'padding:0;display:inline'; - } - if ($ltitools->{$toolhash{'id'}}->{'crsconf'}->{'explanation'}) { - $explanationstyle = 'padding:0;display:inline'; - } } $toolelem = ''.$image.' '.$tooltitle.'
'; } @@ -525,44 +483,25 @@ sub extedit_form { $toolelem .= '
'; $crslabel = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'}; $crstitle = $env{'course.'.$cdom.'_'.$cnum.'.description'}; - $crsappend = ''; } $toolelem .= '
'. ''.&mt('Display target:').' '. ''.(' 'x2). - ''.(' 'x2). + "'$toolattr{dimendiv}','$toolattr{dimenwidth}','$toolattr{dimenheight}'".');"'.$disabled.'>'.&mt('iframe').''.(' 'x2). ''. - '
'. - &mt('Width').': '.(' 'x2). - &mt('Height').': '."\n". - '
'; - $toolelem .= '
'. - '
'. - ''.&mt('Link Text').'
'. - '
'. - ''.&mt('Explanation').'
'. - '
'. - '
'; - $toolelem .= '
'. + "'$toolattr{dimendiv}','$toolattr{dimenwidth}','$toolattr{dimenheight}'".');"'.$disabled.'>'.&mt('window').''. + '
'. + ''. + &mt('Width').''.(' 'x2). + &mt('Height').''."\n". + '
'. + '
'. ''.&mt('Course label:').' '. - '
'. + '
'. '
'. '
'. ''.&mt('Course title:').' '. - '
'. - '
'. - '
'. - ''.&mt('Append to URL[_1]', - ' ('.$providerurl.')
'). - '

'. + '
'. '
'; } my $chooser = $toolelem; @@ -620,7 +559,7 @@ sub display_editor { } my %ltitools; if ($type eq 'tool') { - %ltitools = &Apache::lonnet::get_domain_lti($cdom,'consumer'); + %ltitools = &Apache::lonnet::get_domain_ltitools($cdom); } $js = &Apache::lonhtmlcommon::scripttag(&extedit_javascript()); my $args = { 'force_register' => $env{'form.register'} }; @@ -645,55 +584,30 @@ sub extedit_javascript { if (ref($toolsref) eq 'HASH') { my $num = scalar(keys(%{$toolsref})); $toolsjs = " var ltitools = new Array($num);\n". - " var ltitoolsUrl = new Array($num);\n". " var ltitoolsTarget = new Array($num);\n". " var ltitoolsWidth = new Array($num);\n". " var ltitoolsHeight = new Array($num);\n". - " var ltitoolsLinkDef = new Array($num);\n". - " var ltitoolsExplainDef = new Array($num);\n". " var ltitoolsDisplay = new Array($num);\n". - " var ltitoolsLink = new Array($num);\n". - " var ltitoolsExplain = new Array($num);\n". " var ltitoolsLabel = new Array($num);\n". - " var ltitoolsTitle = new Array($num);\n". - " var ltitoolsAppend = new Array($num);\n"; + " var ltitoolsTitle = new Array($num);\n"; my $i = 0; foreach my $key (sort { $a <=> $b } keys(%{$toolsref})) { - if (ref($toolsref->{$key}) eq 'HASH') { - if (ref($toolsref->{$key}->{'display'}) eq 'HASH') { - my $target = $toolsref->{$key}->{'display'}->{'target'}; - my $width = $toolsref->{$key}->{'display'}->{'width'}; - my $height = $toolsref->{$key}->{'display'}->{'height'}; - my $linkdef = $toolsref->{$key}->{'display'}->{'linktext'}; - my $explaindef = $toolsref->{$key}->{'display'}->{'explanation'}; - my $providerurl; - if ($toolsref->{$key}->{'url'} =~ m{://}) { - (my $prot,my $host,$providerurl) = ($toolsref->{$key}->{'url'} =~ m{^([^/]+)://([^/]+)(|/.+)$}); - } else { - $providerurl = $toolsref->{$key}->{'url'}; - } - $providerurl = &LONCAPA::map::qtunescape($providerurl); - $toolsjs .= ' ltitools['.$i.'] = '."'$key';\n". - ' ltitoolsTarget['.$i.'] = '."'$target';\n". - ' ltitoolsWidth['.$i.'] = '."'$width';\n". - ' ltitoolsHeight['.$i.'] = '."'$height';\n". - ' ltitoolsLinkDef['.$i.'] = '."'$linkdef';\n". - ' ltitoolsExplainDef['.$i.'] = '."'$explaindef';\n". - ' ltitoolsUrl['.$i.'] = '."'$providerurl';\n"; - } + if (ref($toolsref->{$key})) { + my $target = $toolsref->{$key}->{'target'}; + my $width = $toolsref->{$key}->{'width'}; + my $height = $toolsref->{$key}->{'height'}; + $toolsjs .= ' ltitools['.$i.'] = '."'$key';\n". + ' ltitoolsTarget['.$i.'] = '."'$target';\n". + ' ltitoolsWidth['.$i.'] = '."'$width';\n". + ' ltitoolsHeight['.$i.'] = '."'$height';\n"; + my %courseconfig; if (ref($toolsref->{$key}->{'crsconf'}) eq 'HASH') { my $display = $toolsref->{$key}->{'crsconf'}->{'target'}; $toolsjs .= ' ltitoolsDisplay['.$i.'] = '."'$display';\n"; - my $linktext = $toolsref->{$key}->{'crsconf'}->{'linktext'}; - $toolsjs .= ' ltitoolsLink['.$i.'] = '."'$linktext';\n"; - my $explanation = $toolsref->{$key}->{'crsconf'}->{'explanation'}; - $toolsjs .= ' ltitoolsExplain['.$i.'] = '."'$explanation';\n"; my $label = $toolsref->{$key}->{'crsconf'}->{'label'}; $toolsjs .= ' ltitoolsLabel['.$i.'] = '."'$label';\n"; my $title = $toolsref->{$key}->{'crsconf'}->{'title'}; $toolsjs .= ' ltitoolsTitle['.$i.'] = '."'$title';\n"; - my $append = $toolsref->{$key}->{'crsconf'}->{'append'}; - $toolsjs .= ' ltitoolsAppend['.$i.'] = '."'$append';\n"; } $i++; } @@ -702,12 +616,6 @@ sub extedit_javascript { my %js_lt = &Apache::lonlocal::texthash( invurl => 'Invalid URL', titbl => 'Title is blank', - mixfra => 'Show preview in pop-up? (http in https page + no framing)', - mixonly => 'Show preview in pop-up? (http in https page)', - fraonly => 'Show preview in pop-up? (framing disallowed)', - nopopup => 'Pop-up blocked', - nopriv => 'Insufficient privileges to use preview', - badurl => 'URL is not: http://hostname/path or https://hostname/path', invtool => 'Please select an external tool', ); &js_escape(\%js_lt); @@ -760,10 +668,8 @@ function setExternal(extform,residx,type prefix = 'supp'; } var dispdiv = prefix+'tooldispdiv'; - var windiv = prefix+'toolwindiv'; if (residx > 0) { dispdiv += '_'+residx; - windiv += '_'+residx; } if (document.getElementById(dispdiv)) { if (document.getElementById(dispdiv).style.display == 'block') { @@ -775,9 +681,7 @@ function setExternal(extform,residx,type width.trim(); var height = extform.exttoolheight.value; height.trim(); - info += ':window:'+width+':'+height; - } else if (extform.exttooltarget[i].value == 'tab') { - info += ':tab::'; + info += ':window:'+width+':'+height; } else { info += ':iframe::'; } @@ -790,41 +694,11 @@ function setExternal(extform,residx,type } else { info += ':::'; } - if (document.getElementById(windiv)) { - if (document.getElementById(windiv).style.display == 'block') { - var linktextdiv = prefix+'toollinktextdiv'; - var explanationdiv = prefix+'toolexplanationdiv'; - if (residx > 0) { - linktextdiv += '_'+residx; - explanationdiv += '_'+residx; - } - if (document.getElementById(linktextdiv).style.display == 'inline') { - var linktext = extform.exttoollinktext.value; - linktext.trim(); - info += ':'+escape(linktext); - } else { - info += ':'; - } - if (document.getElementById(explanationdiv).style.display == 'inline') { - var explaintext = extform.exttoolexplanation.value; - explaintext.trim(); - info += ':'+escape(explaintext); - } else { - info += ':'; - } - } else { - info += '::'; - } - } else { - info += '::'; - } var labelinput = prefix+'toolcrslabel'; var titleinput = prefix+'toolcrstitle'; - var appendinput = prefix+'toolcrsappend'; if (residx > 0) { labelinput += '_'+residx; titleinput += '_'+residx; - appendinput += '_'+residx; } if (document.getElementById(labelinput)) { var crslabel = document.getElementById(labelinput).value; @@ -840,13 +714,6 @@ function setExternal(extform,residx,type } else { info += ':'; } - if (document.getElementById(appendinput)) { - var crsappend = document.getElementById(appendinput).value; - crsappend.trim(); - info += ':'+escape(crsappend); - } else { - info += ':'; - } info=escape(info); if (residx > 0) { eval("extform.importdetail.value=title+'='+info+'='+residx;extform.submit();"); @@ -875,73 +742,14 @@ function extUrlPreview(caller,protocol) var url = document.getElementById(caller).value; if (regexp.test(url)) { var http_regex = /^http\:\/\//gi; - var mixed = 0; - var noiframe = 0; - var nopriv = 0; - var badurl = 0; - var name = "externalpreview"; if ((protocol == 'https') && (http_regex.test(url))) { - mixed = 1; - } - var http = new XMLHttpRequest(); - var lcurl = "/adm/exturlcheck"; - var params = "exturl="+url; - http.open("POST",lcurl, true); - http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - http.onreadystatechange = function() { - if (http.readyState == 4) { - if (http.status == 200) { - if (http.responseText.length > 0) { - if (http.responseText == 1) { - noiframe = 1; - } else if (http.responseText == -1) { - nopriv = 1; - } else if (http.responseText == 0) { - badurl = 1; - } - } - openPreviewWindow(url,name,noiframe,mixed,nopriv,badurl); - } - } - } - http.send(params); - } else { - alert("$js_lt{'invurl'}"); - } - } -} - -var previewLCWindow = null; -function openPreviewWindow(url,name,noiframe,mixed,nopriv,badurl) { - if (previewLCWindow !=null) { - previewLCWindow.close(); - } - if (badurl) { - alert("$js_lt{'badurl'}"); - } else if (nopriv) { - alert("$js_lt{'nopriv'}"); - } else if ((noiframe == 1) || (mixed == 1)) { - var encurl = encodeURI(url); - var msg; - if (mixed == 1) { - if (noiframe == 1) { - msg = "$js_lt{'mixfra'}"; + window.open(url,"externalpreview","height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1"); } else { - msg = "$js_lt{'mixonly'}"; + openMyModal(url,500,400,'yes'); } } else { - msg = "$js_lt{'fraonly'}"; - } - if (confirm(msg)) { - previewLCWindow = window.open(url,name,"height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1"); - if (previewLCWindow != null) { - previewLCWindow.focus(); - } else { - alert("$js_lt{'nopopup'}"); - } + alert("$js_lt{'invurl'}"); } - } else { - openMyModal(url,500,400,'yes'); } } @@ -952,20 +760,12 @@ function updateExttool(caller,form,suppl } dispdiv = prefix+'tooldispdiv'; dimendiv = prefix+'tooldimendiv'; - widthinput = prefix+'tooldimenwidth'; - heightinput = prefix+'tooldimenheight'; + widthinput = prefix+'toolwidth'; + heightinput = prefix+'toolheight'; labeldiv = prefix+'toolcrslabeldiv'; titlediv = prefix+'toolcrstitlediv'; - appenddiv = prefix+'toolcrsappenddiv'; - providerurl = prefix+'toolproviderurl'; labelinput = prefix+'toolcrslabel'; titleinput = prefix+'toolcrstitle'; - appendinput = prefix+'toolcrsappend'; - windiv = prefix+'toolwindiv'; - linktextdiv = prefix+'toollinktextdiv'; - linktextinput = prefix+'toollinktext'; - explanationdiv = prefix+'toolexplanationdiv'; - explanationinput = prefix+'toolexplanation'; if (document.getElementById(dispdiv)) { var toolpick = caller.options[caller.selectedIndex].value; $toolsjs @@ -976,24 +776,12 @@ function updateExttool(caller,form,suppl if (document.getElementById(dimendiv)) { document.getElementById(dimendiv).style.display = 'none'; } - if (document.getElementById(windiv)) { - document.getElementById(windiv).style.display = 'none'; - } - if (document.getElementById(linktextdiv)) { - document.getElementById(linktextdiv).style.display = 'none'; - } - if (document.getElementById(explanationdiv)) { - document.getElementById(explanationdiv).style.display = 'none'; - } if (document.getElementById(labeldiv)) { document.getElementById(labeldiv).style.display = 'none'; } if (document.getElementById(titlediv)) { document.getElementById(titlediv).style.display = 'none'; } - if (document.getElementById(appenddiv)) { - document.getElementById(appenddiv).style.display = 'none'; - } } else { if (ltitools.length > 0) { for (var j=0; j'; - } - } - } else { - document.getElementById(appenddiv).style.display = 'none'; - if (document.getElementById(providerurl)) { - document.getElementById(providerurl).innerHTML = ''; - } - } - } break; } } @@ -1100,39 +839,24 @@ function updateExttool(caller,form,suppl } } -function updateTooldim(form,dimendiv,windiv,widthinput,heightinput,linkinput,explaininput) { +function updateTooldim(form,dimendiv,widthinput,heightinput) { if (form.exttooltarget.length) { for (var i=0; i