--- loncom/interface/lonextresedit.pm 2017/12/18 22:56:45 1.23
+++ loncom/interface/lonextresedit.pm 2019/05/02 23:09:39 1.29
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: lonextresedit.pm,v 1.23 2017/12/18 22:56:45 raeburn Exp $
+# $Id: lonextresedit.pm,v 1.29 2019/05/02 23:09:39 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -296,7 +296,6 @@ sub process_changes {
sub update_exttool {
my ($marker,$cdom,$cnum,$supplementalflag,$args) = @_;
- my %toolhash=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum);
my (%newhash,$changed,$newgradable,@deleted,$errormsg);
($newhash{'target'},$newhash{'width'},$newhash{'height'},$newhash{'linktext'},$newhash{'explanation'},
$newhash{'crslabel'},$newhash{'crstitle'},$newhash{'crsappend'},$newhash{'gradable'}) = split(/:/,$args);
@@ -387,7 +386,7 @@ sub extedit_form {
$appendstyle,$gradablestyle,$legend,$urlelem,$toolelem,%toolattr);
$formname = 'new'.$type;
$toggle = $type;
- $fieldsetid = 'upload'.$type.'form';
+ $fieldsetid = 'external'.$type.'form';
$urlid = $type.'url';
map { $toolattr{$_} = $type.$_; } ('dispdiv','dimendiv','dimenwidth','dimenheight',
'crstitlediv','crslabeldiv','crsappenddiv',
@@ -406,7 +405,7 @@ sub extedit_form {
if ($supplementalflag) {
$formname = 'newsupp'.$type;
$toggle = 'supp'.$type;
- $fieldsetid = 'uploadsupp'.$type.'form';
+ $fieldsetid = 'externalsupp'.$type.'form';
$urlid = 'supp'.$type.'url';
map { $toolattr{$_} = 'supp'.$toolattr{$_}; } (keys(%toolattr));
}
@@ -444,7 +443,7 @@ sub extedit_form {
$active = '';
}
$formname = 'edit'.$type.'_'.$residx;
- $fieldsetid = 'upload'.$type.$residx;
+ $fieldsetid = 'external'.$type.$residx;
$urlid = $type.'url_'.$residx;
map { $toolattr{$_} .= '_'.$residx; } (keys(%toolattr));
$srcclass = ' class="LC_nobreak"';
@@ -459,7 +458,7 @@ sub extedit_form {
if ($type eq 'tool') {
$link = $lt{'et'};
}
- $link = ''.$helpitem;
+ $link = ''.$helpitem;
if ($type eq 'tool') {
$legend = $lt{'te'};
} else {
@@ -768,6 +767,12 @@ sub extedit_javascript {
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',
);
&js_escape(\%js_lt);
@@ -942,14 +947,14 @@ function setExternal(extform,residx,type
}
function editext(residx,type) {
- if (document.getElementById('upload'+type+residx)) {
- var curr = document.getElementById('upload'+type+residx).style.display;
+ if (document.getElementById('external'+type+residx)) {
+ var curr = document.getElementById('external'+type+residx).style.display;
if (curr == 'none') {
disp = 'block';
} else {
disp = 'none';
}
- document.getElementById('upload'+type+residx).style.display=disp;
+ document.getElementById('external'+type+residx).style.display=disp;
}
resize_scrollbox('contentscroll','1','1');
return;
@@ -960,17 +965,76 @@ 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))) {
- window.open(url,"externalpreview","height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1");
- } else {
- openMyModal(url,500,400,'yes');
+ 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();
+ } else {
+ alert("$js_lt{'nopopup'}");
+ }
+ }
+ } else {
+ openMyModal(url,500,400,'yes');
+ }
+}
+
function updateExttool(caller,form,supplementalflag) {
var prefix = '';
if (supplementalflag == 1) {