[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonextresedit.pm

raeburn raeburn at source.lon-capa.org
Tue Jul 30 15:53:22 EDT 2019


raeburn		Tue Jul 30 19:53:22 2019 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/interface	lonextresedit.pm 
  Log:
  - For 2.11
    Backport 1.28, 1.29
  
  
Index: loncom/interface/lonextresedit.pm
diff -u loncom/interface/lonextresedit.pm:1.8.2.3 loncom/interface/lonextresedit.pm:1.8.2.4
--- loncom/interface/lonextresedit.pm:1.8.2.3	Sun Jul 28 04:10:31 2019
+++ loncom/interface/lonextresedit.pm	Tue Jul 30 19:53:22 2019
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: lonextresedit.pm,v 1.8.2.3 2019/07/28 04:10:31 raeburn Exp $
+# $Id: lonextresedit.pm,v 1.8.2.4 2019/07/30 19:53:22 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -328,6 +328,12 @@
     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',
     );
     &js_escape(\%js_lt);
 
@@ -383,17 +389,76 @@
         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');
+    }
+}
+
 ENDJS
 
 }




More information about the LON-CAPA-cvs mailing list