Annotation of loncom/html/htmlarea/popups/fullscreen.html, revision 1.1
1.1 ! www 1: <html>
! 2: <head><title>Fullscreen Editor</title>
! 3: <style type="text/css">
! 4: @import url(../htmlarea.css);
! 5: html, body { margin: 0px; border: 0px; background-color: buttonface; } </style>
! 6:
! 7: <!--
! 8: <script type="text/javascript" src="../htmlarea.js"></script>
! 9: <script type="text/javascript" src="../htmlarea-lang-en.js"></script>
! 10: <script type="text/javascript" src="../dialog.js"></script>
! 11: -->
! 12:
! 13: <script type="text/javascript">
! 14: // load same scripts that were present in the opener page
! 15: var scripts = opener.document.getElementsByTagName("script");
! 16: var head = document.getElementsByTagName("head")[0];
! 17: for (var i = 0; i < scripts.length; ++i) {
! 18: var script = scripts[i];
! 19: if (typeof script.src != "undefined" && /\S/.test(script.src)) {
! 20: // document.write("<scr" + "ipt type=" + "\"script/javascript\"");
! 21: // document.write(" src=\"../" + script.src + "\"></scr" + "ipt>");
! 22: var new_script = document.createElement("script");
! 23: if (/^http:/i.test(script.src)) {
! 24: new_script.src = script.src;
! 25: } else {
! 26: new_script.src = "../" + script.src;
! 27: }
! 28: head.appendChild(new_script);
! 29: }
! 30: }
! 31: </script>
! 32:
! 33: <script type="text/javascript">
! 34:
! 35: var parent_object = null;
! 36: var editor = null; // to be initialized later [ function init() ]
! 37:
! 38: /* ---------------------------------------------------------------------- *\
! 39: Function :
! 40: Description :
! 41: \* ---------------------------------------------------------------------- */
! 42:
! 43: function _CloseOnEsc(ev) {
! 44: if (document.all) {
! 45: // IE
! 46: ev = window.event;
! 47: }
! 48: if (ev.keyCode == 27) {
! 49: // update_parent();
! 50: window.close();
! 51: return;
! 52: }
! 53: }
! 54:
! 55: /* ---------------------------------------------------------------------- *\
! 56: Function : cloneObject
! 57: Description : copy an object by value instead of by reference
! 58: Usage : var newObj = cloneObject(oldObj);
! 59: \* ---------------------------------------------------------------------- */
! 60:
! 61: function cloneObject(obj) {
! 62: var newObj = new Object;
! 63:
! 64: // check for array objects
! 65: if (obj.constructor.toString().indexOf("function Array(") == 1) {
! 66: newObj = obj.constructor();
! 67: }
! 68:
! 69: // check for function objects (as usual, IE is fucked up)
! 70: if (obj.constructor.toString().indexOf("function Function(") == 1) {
! 71: newObj = obj; // just copy reference to it
! 72: } else for (var n in obj) {
! 73: var node = obj[n];
! 74: if (typeof node == 'object') { newObj[n] = cloneObject(node); }
! 75: else { newObj[n] = node; }
! 76: }
! 77:
! 78: return newObj;
! 79: }
! 80:
! 81: /* ---------------------------------------------------------------------- *\
! 82: Function : resize_editor
! 83: Description : resize the editor when the user resizes the popup
! 84: \* ---------------------------------------------------------------------- */
! 85:
! 86: function resize_editor() { // resize editor to fix window
! 87: var newHeight;
! 88: if (document.all) {
! 89: // IE
! 90: newHeight = document.body.offsetHeight - editor._toolbar.offsetHeight;
! 91: if (newHeight < 0) { newHeight = 0; }
! 92: } else {
! 93: // Gecko
! 94: newHeight = window.innerHeight - editor._toolbar.offsetHeight;
! 95: }
! 96: if (editor.config.statusBar) {
! 97: newHeight -= editor._statusBar.offsetHeight;
! 98: }
! 99: editor._textArea.style.height = editor._iframe.style.height = newHeight + "px";
! 100: }
! 101:
! 102: /* ---------------------------------------------------------------------- *\
! 103: Function : init
! 104: Description : run this code on page load
! 105: \* ---------------------------------------------------------------------- */
! 106:
! 107: function init() {
! 108: parent_object = opener.HTMLArea._object;
! 109: var config = cloneObject( parent_object.config );
! 110: config.editorURL = "../";
! 111: config.width = "100%";
! 112: config.height = "auto";
! 113:
! 114: // change maximize button to minimize button
! 115: config.btnList["popupeditor"] = [ 'Minimize Editor', 'images/fullscreen_minimize.gif', true,
! 116: function() { window.close(); } ];
! 117:
! 118: // generate editor and resize it
! 119: editor = new HTMLArea("editor", config);
! 120: editor.generate();
! 121: editor._iframe.style.width = "100%";
! 122: editor._textArea.style.width = "100%";
! 123: resize_editor();
! 124:
! 125: // set child window contents and event handlers, after a small delay
! 126: setTimeout(function() {
! 127: editor.setHTML(parent_object.getInnerHTML());
! 128:
! 129: // switch mode if needed
! 130: if (parent_object._mode == "textmode") { editor.setMode("textmode"); }
! 131:
! 132: // continuously update parent editor window
! 133: setInterval(update_parent, 500);
! 134:
! 135: // setup event handlers
! 136: document.body.onkeypress = _CloseOnEsc;
! 137: editor._doc.body.onkeypress = _CloseOnEsc;
! 138: editor._textArea.onkeypress = _CloseOnEsc;
! 139: window.onresize = resize_editor;
! 140: }, 333); // give it some time to meet the new frame
! 141: }
! 142:
! 143: /* ---------------------------------------------------------------------- *\
! 144: Function : update_parent
! 145: Description : update parent window editor field with contents from child window
! 146: \* ---------------------------------------------------------------------- */
! 147:
! 148: function update_parent() {
! 149: // use the fast version
! 150: parent_object.setHTML(editor.getInnerHTML());
! 151: }
! 152:
! 153:
! 154: </script>
! 155: </head>
! 156: <body scroll="no" onload="init()" onunload="update_parent()">
! 157:
! 158: <form style="margin: 0px; border: 1px solid; border-color: threedshadow threedhighlight threedhighlight threedshadow;">
! 159: <textarea name="editor" id="editor" style="width:100%; height:300px"> </textarea>
! 160: </form>
! 161:
! 162: </body></html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>