+
$title
@@ -748,35 +666,6 @@ ENDFORM
}
}
-sub ordered_tooloptions {
- my ($toolsref) = @_;
- my ($seloptions,@ids,@titles);
- if (ref($toolsref) eq 'HASH') {
- my %bynum;
- foreach my $id (keys(%{$toolsref})) {
- if (ref($toolsref->{$id}) eq 'HASH') {
- my $order = $toolsref->{$id}->{'order'};
- $bynum{$order} = [$id,$toolsref->{$id}];
- }
- }
- foreach my $item (sort { $a <=> $b } keys(%bynum)) {
- if (ref($bynum{$item}) eq 'ARRAY') {
- if (ref($bynum{$item}->[1]) eq 'HASH') {
- my $tooltitle = $bynum{$item}->[1]->{'title'};
- push(@titles,$tooltitle);
- push(@ids,$bynum{$item}->[0]);
- $seloptions .= ''."\n";
- }
- }
- }
- }
- if (wantarray) {
- return (\@ids,\@titles);
- } else {
- return $seloptions;
- }
-}
-
sub display_editor {
my ($url,$folderpath,$symb,$idx,$type,$cdom,$cnum,$hostname) = @_;
my ($residx,$supplementalflag,$title,$pathitem,$output,$js,$navmap);
@@ -792,20 +681,9 @@ sub display_editor {
my $path = &Apache::loncommon::symb_to_docspath($symb,\$navmap);
$pathitem = '';
}
- my (%ltitools,%tooltypes);
+ my %ltitools;
if ($type eq 'tool') {
- my (%domtools,%crstools);
- %tooltypes = &Apache::loncommon::usable_exttools();
- if ($tooltypes{'dom'}) {
- %domtools = &Apache::lonnet::get_domain_lti($cdom,'consumer');
- }
- if ($tooltypes{'crs'}) {
- %crstools = &Apache::lonnet::get_course_lti($cnum,$cdom,'consumer');
- }
- %ltitools = (
- dom => \%domtools,
- crs => \%crstools,
- );
+ %ltitools = &Apache::lonnet::get_domain_lti($cdom,'consumer');
}
$js = &Apache::lonhtmlcommon::scripttag(&extedit_javascript());
my $args = { 'force_register' => $env{'form.register'} };
@@ -826,112 +704,69 @@ sub display_editor {
sub extedit_javascript {
my ($toolsref) = @_;
- my ($toolsjs,$exttoolnums,$exttooloptions);
+ my $toolsjs;
if (ref($toolsref) eq 'HASH') {
- $toolsjs = " var ltitools = new Array();\n".
- " var ltitoolsUrl = new Array();\n".
- " var ltitoolsTarget = new Array();\n".
- " var ltitoolsWidth = new Array();\n".
- " var ltitoolsHeight = new Array();\n".
- " var ltitoolsLinkDef = new Array();\n".
- " var ltitoolsExplainDef = new Array();\n".
- " var ltitoolsDisplay = new Array();\n".
- " var ltitoolsLink = new Array();\n".
- " var ltitoolsExplain = new Array();\n".
- " var ltitoolsLabel = new Array();\n".
- " var ltitoolsTitle = new Array();\n".
- " var ltitoolsAppend = new Array();\n";
- $exttoolnums = " var ltitoolsnum = new Array();\n".
- " var tooloptval = new Array();\n".
- " var toolopttxt = new Array();\n";
- my $idx = 0;
- foreach my $type ('crs','dom') {
- if (ref($toolsref->{$type}) eq 'HASH') {
- my $num = scalar(keys(%{$toolsref->{$type}}));
- $toolsjs .= " ltitools[$idx] = new Array($num);\n".
- " ltitoolsUrl[$idx] = new Array($num);\n".
- " ltitoolsTarget[$idx] = new Array($num);\n".
- " ltitoolsWidth[$idx] = new Array($num);\n".
- " ltitoolsHeight[$idx] = new Array($num);\n".
- " ltitoolsLinkDef[$idx] = new Array($num);\n".
- " ltitoolsExplainDef[$idx] = new Array($num);\n".
- " ltitoolsDisplay[$idx] = new Array($num);\n".
- " ltitoolsLink[$idx] = new Array($num);\n".
- " ltitoolsExplain[$idx] = new Array($num);\n".
- " ltitoolsLabel[$idx] = new Array($num);\n".
- " ltitoolsTitle[$idx] = new Array($num);\n".
- " ltitoolsAppend[$idx] = new Array($num);\n";
- my $i=0;
- foreach my $key (sort { $a <=> $b } keys(%{$toolsref->{$type}})) {
- if (ref($toolsref->{$type}->{$key}) eq 'HASH') {
- if (ref($toolsref->{$type}->{$key}->{'display'}) eq 'HASH') {
- my $target = $toolsref->{$type}->{$key}->{'display'}->{'target'};
- my $width = $toolsref->{$type}->{$key}->{'display'}->{'width'};
- my $height = $toolsref->{$type}->{$key}->{'display'}->{'height'};
- my $linkdef = $toolsref->{$type}->{$key}->{'display'}->{'linktext'};
- my $explaindef = $toolsref->{$type}->{$key}->{'display'}->{'explanation'};
- my $providerurl;
- if ($toolsref->{$type}->{$key}->{'url'} =~ m{://}) {
- (my $prot,my $host,$providerurl) =
- ($toolsref->{$type}->{$key}->{'url'} =~ m{^([^/]+)://([^/]+)(|/.+)$});
- } else {
- $providerurl = $toolsref->{$type}->{$key}->{'url'};
- }
- $providerurl = &LONCAPA::map::qtunescape($providerurl);
- $toolsjs .= " ltitools[$idx][$i] = '$key';\n".
- " ltitoolsTarget[$idx][$i] = '$target';\n".
- " ltitoolsWidth[$idx][$i] = '$width';\n".
- " ltitoolsHeight[$idx][$i] = '$height';\n".
- " ltitoolsLinkDef[$idx][$i] = '$linkdef';\n".
- " ltitoolsExplainDef[$idx][$i] = '$explaindef';\n".
- " ltitoolsUrl[$idx][$i] = '$providerurl';\n";
- }
- if (ref($toolsref->{$type}->{$key}->{'crsconf'}) eq 'HASH') {
- my $display = $toolsref->{$type}->{$key}->{'crsconf'}->{'target'};
- $toolsjs .= " ltitoolsDisplay[$idx][$i] = '$display';\n";
- my $linktext = $toolsref->{$type}->{$key}->{'crsconf'}->{'linktext'};
- $toolsjs .= " ltitoolsLink[$idx][$i] = '$linktext';\n";
- my $explanation = $toolsref->{$type}->{$key}->{'crsconf'}->{'explanation'};
- $toolsjs .= " ltitoolsExplain[$idx][$i] = '$explanation';\n";
- my $label = $toolsref->{$type}->{$key}->{'crsconf'}->{'label'};
- $toolsjs .= " ltitoolsLabel[$idx][$i] = '$label';\n";
- my $title = $toolsref->{$type}->{$key}->{'crsconf'}->{'title'};
- $toolsjs .= " ltitoolsTitle[$idx][$i] = '$title';\n";
- my $append = $toolsref->{$type}->{$key}->{'crsconf'}->{'append'};
- $toolsjs .= " ltitoolsAppend[$idx][$i] = '$append';\n";
- }
- }
- $i++;
- }
- my $firstoption = '';
- my ($idsref,$titlesref) = &ordered_tooloptions($toolsref->{$type});
- if ((ref($idsref) eq 'ARRAY') && (ref($titlesref) eq 'ARRAY')) {
- my $count = scalar(@{$idsref});
- $exttooloptions .= " tooloptval[$idx] = new Array($count);\n".
- " toolopttxt[$idx] = new Array($count);\n";
- for (my $n=0; $n<@{$idsref}; $n++) {
- my $id = $idsref->[$n];
- my $text = $titlesref->[$n];
- $exttooloptions .= " tooloptval[$idx][$n] = '$id';\n".
- " toolopttxt[$idx][$n] = '$text';\n";
+ 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";
+ 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}->{'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";
}
- $exttoolnums .= " ltitoolsnum[$idx] = $i;\n";
+
+ $i++;
}
- $idx ++;
}
}
my %js_lt = &Apache::lonlocal::texthash(
invurl => 'Invalid URL',
titbl => 'Title is blank',
invtool => 'Please select an external tool',
- 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',
- sele => 'Select',
);
&js_escape(\%js_lt);
@@ -970,29 +805,17 @@ function setExternal(extform,residx,type
} else {
title = escape(title);
var info = exttoolurl;
- var prefix = '';
- if (supplementalflag == 1) {
- prefix = 'supp';
- }
if (residx == 0) {
var toolid = parseInt(extform.exttoolid.options[extform.exttoolid.selectedIndex].value);
if (isNaN(toolid)) {
alert("$js_lt{'invtool'}");
return;
}
- var typeelem = extform.elements[prefix+'exttooltype'];
- if (typeelem.length) {
- for (var i=0; i 0) {
labelinput += '_'+residx;
titleinput += '_'+residx;
- appendinput += '_'+residx;
+ appendinput += '_'+residx;
}
if (document.getElementById(labelinput)) {
var crslabel = document.getElementById(labelinput).value;
@@ -1136,145 +959,15 @@ 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'}";
- } else {
- msg = "$js_lt{'mixonly'}";
- }
- } 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();
+ window.open(url,"externalpreview","height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1");
} else {
- alert("$js_lt{'nopopup'}");
- }
- }
- } else {
- openMyModal(url,500,400,'yes');
- }
-}
-
-function updateExttoolSel(form,radioname,supplementalflag) {
- var prefix = '';
- var typepick;
- var radelem = form.elements[radioname];
- if (radelem.length) {
- for (var i=0; i=0) {
- for (i = numopts; i >= 0; i--) {
- selelem.remove(i);
- }
- }
- if (ltitoolsnum[typepick]) {
- if ((Array.isArray(tooloptval[typepick])) && (Array.isArray(toolopttxt[typepick]))) {
- var len = tooloptval[typepick].length;
- if (len) {
- selelem.options[selelem.options.length] = new Option('$js_lt{sele}','',1,1);
- var j;
- for (j=0; j 0) {
- for (var j=0; j 0) {
+ for (var j=0; j';
- }
- }
+ if (document.getElementById(explanationinput)) {
+ if (ltitoolsExplain[j]) {
+ document.getElementById(explanationinput).value = ltitoolsExplainDef[j];
} else {
- document.getElementById(appenddiv).style.display = 'none';
- if (document.getElementById(providerurl)) {
- document.getElementById(providerurl).innerHTML = '';
- }
+ document.getElementById(explananationinput).value = '';
}
}
- if (document.getElementById(gradablediv)) {
- if (supplementalflag != 1) {
- document.getElementById(gradablediv).style.display = 'inline';
+ }
+ if (document.getElementById(labeldiv)) {
+ if (ltitoolsLabel[j]) {
+ document.getElementById(labeldiv).style.display = 'inline';
+ } else {
+ document.getElementById(labeldiv).style.display = 'none';
+ }
+ }
+ if (document.getElementById(titlediv)) {
+ if (ltitoolsTitle[j]) {
+ document.getElementById(titlediv).style.display = 'inline';
+ } else {
+ document.getElementById(titlediv).style.display = 'none';
+ }
+ }
+ if (document.getElementById(appenddiv)) {
+ if (ltitoolsAppend[j]) {
+ document.getElementById(appenddiv).style.display = 'inline';
+ if (document.getElementById(providerurl)) {
+ if ((ltitoolsUrl[j] != '') && (ltitoolsUrl[j] != null)) {
+ document.getElementById(providerurl).innerHTML = ' ('+ltitoolsUrl[j]+')
';
+ }
+ }
+ } else {
+ document.getElementById(appenddiv).style.display = 'none';
+ if (document.getElementById(providerurl)) {
+ document.getElementById(providerurl).innerHTML = '';
}
}
- break;
}
+ if (document.getElementById(gradablediv)) {
+ if (supplementalflag != 1) {
+ document.getElementById(gradablediv).style.display = 'inline';
+ }
+ }
+ break;
}
}
}