File:  [LON-CAPA] / loncom / html / htmlarea / popups / Attic / fullscreen.html
Revision 1.1: download - view: text, annotated - select for diffs
Wed Feb 18 08:07:16 2004 UTC (20 years, 5 months ago) by www
Branches: MAIN
CVS tags: HEAD
Install HTMLArea

<html>
<head><title>Fullscreen Editor</title>
<style type="text/css">
@import url(../htmlarea.css);
html, body {	margin: 0px; border: 0px; background-color: buttonface; } </style>

<!--
<script type="text/javascript" src="../htmlarea.js"></script>
<script type="text/javascript" src="../htmlarea-lang-en.js"></script>
<script type="text/javascript" src="../dialog.js"></script>
-->

<script type="text/javascript">
// load same scripts that were present in the opener page
var scripts = opener.document.getElementsByTagName("script");
var head = document.getElementsByTagName("head")[0];
for (var i = 0; i < scripts.length; ++i) {
  var script = scripts[i];
  if (typeof script.src != "undefined" && /\S/.test(script.src)) {
    // document.write("<scr" + "ipt type=" + "\"script/javascript\"");
    // document.write(" src=\"../" + script.src + "\"></scr" + "ipt>");
    var new_script = document.createElement("script");
    if (/^http:/i.test(script.src)) {
      new_script.src = script.src;
    } else {
      new_script.src = "../" + script.src;
    }
    head.appendChild(new_script);
  }
}
</script>

<script type="text/javascript">

var parent_object  = null;
var editor         = null;      // to be initialized later [ function init() ]

/* ---------------------------------------------------------------------- *\
  Function    : 
  Description : 
\* ---------------------------------------------------------------------- */

function _CloseOnEsc(ev) {
  if (document.all) {
    // IE
    ev = window.event;
  }
  if (ev.keyCode == 27) {
    // update_parent();
    window.close();
    return;
  }
}

/* ---------------------------------------------------------------------- *\
  Function    : cloneObject
  Description : copy an object by value instead of by reference
  Usage       : var newObj = cloneObject(oldObj);
\* ---------------------------------------------------------------------- */

function cloneObject(obj) {
  var newObj          = new Object; 

  // check for array objects
  if (obj.constructor.toString().indexOf("function Array(") == 1) {
    newObj = obj.constructor();
  }

  // check for function objects (as usual, IE is fucked up)
  if (obj.constructor.toString().indexOf("function Function(") == 1) {
    newObj = obj; // just copy reference to it
  } else for (var n in obj) {
    var node = obj[n];
    if (typeof node == 'object') { newObj[n] = cloneObject(node); }
    else                         { newObj[n] = node; }
  }
  
  return newObj;
}

/* ---------------------------------------------------------------------- *\
  Function    : resize_editor
  Description : resize the editor when the user resizes the popup
\* ---------------------------------------------------------------------- */

function resize_editor() {  // resize editor to fix window
  var newHeight;
  if (document.all) {
    // IE
    newHeight = document.body.offsetHeight - editor._toolbar.offsetHeight;
    if (newHeight < 0) { newHeight = 0; }
  } else {
    // Gecko
    newHeight = window.innerHeight - editor._toolbar.offsetHeight;
  }
  if (editor.config.statusBar) {
    newHeight -= editor._statusBar.offsetHeight;
  }
  editor._textArea.style.height = editor._iframe.style.height = newHeight + "px";
}

/* ---------------------------------------------------------------------- *\
  Function    : init
  Description : run this code on page load
\* ---------------------------------------------------------------------- */

function init() {
  parent_object      = opener.HTMLArea._object;
  var config         = cloneObject( parent_object.config );
  config.editorURL   = "../";
  config.width       = "100%";
  config.height      = "auto";

  // change maximize button to minimize button
  config.btnList["popupeditor"] = [ 'Minimize Editor', 'images/fullscreen_minimize.gif', true,
                                    function() { window.close(); } ];

  // generate editor and resize it
  editor = new HTMLArea("editor", config);
  editor.generate();
  editor._iframe.style.width = "100%";
  editor._textArea.style.width = "100%";
  resize_editor();

  // set child window contents and event handlers, after a small delay
  setTimeout(function() {
    editor.setHTML(parent_object.getInnerHTML());

    // switch mode if needed
    if (parent_object._mode == "textmode") { editor.setMode("textmode"); }

    // continuously update parent editor window
    setInterval(update_parent, 500);

    // setup event handlers
    document.body.onkeypress = _CloseOnEsc;
    editor._doc.body.onkeypress = _CloseOnEsc;
    editor._textArea.onkeypress = _CloseOnEsc;
    window.onresize = resize_editor;
  }, 333);                      // give it some time to meet the new frame
}

/* ---------------------------------------------------------------------- *\
  Function    : update_parent
  Description : update parent window editor field with contents from child window
\* ---------------------------------------------------------------------- */

function update_parent() {
  // use the fast version
  parent_object.setHTML(editor.getInnerHTML());
}


</script>
</head>
<body scroll="no" onload="init()" onunload="update_parent()">

<form style="margin: 0px; border: 1px solid; border-color: threedshadow threedhighlight threedhighlight threedshadow;">
<textarea name="editor" id="editor" style="width:100%; height:300px">&nbsp;</textarea>
</form>

</body></html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>