--- a/includes/clientside/tinymce/plugins/fullscreen/editor_plugin_src.js Wed Dec 26 00:37:26 2007 -0500
+++ b/includes/clientside/tinymce/plugins/fullscreen/editor_plugin_src.js Thu Dec 27 22:09:33 2007 -0500
@@ -1,230 +1,106 @@
/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ * $Id: editor_plugin_src.js 453 2007-11-27 17:36:55Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('fullscreen');
-
-var TinyMCE_FullScreenPlugin = {
- getInfo : function() {
- return {
- longname : 'Fullscreen',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
- version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
- };
- },
+(function() {
+ var DOM = tinymce.DOM;
- initInstance : function(inst) {
- if (!tinyMCE.settings['fullscreen_skip_plugin_css'])
- tinyMCE.importCSS(inst.getContainerWin().document, tinyMCE.baseURL + "/plugins/fullscreen/css/page.css");
- },
+ tinymce.create('tinymce.plugins.FullScreenPlugin', {
+ init : function(ed, url) {
+ var t = this, s = {}, vp;
- getControlHTML : function(cn) {
- switch (cn) {
- case "fullscreen":
- return tinyMCE.getButtonHTML(cn, 'lang_fullscreen_desc', '{$pluginurl}/images/fullscreen.gif', 'mceFullScreen');
- }
+ t.editor = ed;
- return "";
- },
+ // Register commands
+ ed.addCommand('mceFullScreen', function() {
+ var win;
- execCommand : function(editor_id, element, command, user_interface, value) {
- var inst;
-
- // Handle commands
- switch (command) {
- case "mceFullScreen":
- inst = tinyMCE.getInstanceById(editor_id);
-
- if (tinyMCE.getParam('fullscreen_new_window'))
- this._toggleFullscreenWin(inst);
- else
- this._toggleFullscreen(inst);
-
- return true;
- }
-
- // Pass to next handler in chain
- return false;
- },
-
- _toggleFullscreenWin : function(inst) {
- if (tinyMCE.getParam('fullscreen_is_enabled')) {
- // In fullscreen mode
- window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'), 'mceSetContent', false, tinyMCE.getContent(inst.editorId));
- top.close();
- } else {
- tinyMCE.setWindowArg('editor_id', inst.editorId);
+ if (ed.getParam('fullscreen_is_enabled')) {
+ if (ed.getParam('fullscreen_new_window'))
+ closeFullscreen(); // Call to close in new window
+ else {
+ window.setTimeout(function() {
+ tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
+ tinyMCE.remove(ed);
+ DOM.remove('mce_fullscreen_container');
+ DOM.setStyle(document.body, 'overflow', ed.getParam('fullscreen_overflow'));
+ }, 10);
+ }
+ return;
+ }
- var win = window.open(tinyMCE.baseURL + "/plugins/fullscreen/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
- try { win.resizeTo(screen.availWidth, screen.availHeight); } catch (e) {}
- }
- },
-
- _toggleFullscreen : function(inst) {
- var ds = inst.getData('fullscreen'), editorContainer, tableElm, iframe, vp, cw, cd, re, w, h, si, blo, delta = 0, cell, row, fcml, bcml;
+ if (ed.getParam('fullscreen_new_window')) {
+ win = window.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=no,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
+ try {
+ win.resizeTo(screen.availWidth, screen.availHeight);
+ } catch (e) {
+ // Ignore
+ }
+ } else {
+ s.fullscreen_overflow = DOM.getStyle(document.body, 'overflow', 1) || 'auto';
+ DOM.setStyle(document.body, 'overflow', 'hidden');
+ vp = DOM.getViewPort();
- cw = inst.getContainerWin();
- cd = cw.document;
- editorContainer = cd.getElementById(inst.editorId + '_parent');
- tableElm = editorContainer.firstChild;
- iframe = inst.iframeElement;
- re = cd.getElementById(inst.editorId + '_resize');
- blo = document.getElementById('mce_fullscreen_blocker');
- fcm = new TinyMCE_Layer(inst.editorId + '_fcMenu');
- fcml = new TinyMCE_Layer(inst.editorId + '_fcMenu');
- bcml = new TinyMCE_Layer(inst.editorId + '_bcMenu');
+ if (tinymce.isIE)
+ vp.h -= 1;
- if (fcml.exists() && fcml.isVisible()) {
- tinyMCE.switchClass(inst.editorId + '_forecolor', 'mceMenuButton');
- fcml.hide();
- }
+ n = DOM.add(document.body, 'div', {id : 'mce_fullscreen_container', style : 'position:absolute;top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:150;'});
+ DOM.add(n, 'div', {id : 'mce_fullscreen'});
- if (bcml.exists() && bcml.isVisible()) {
- tinyMCE.switchClass(inst.editorId + '_backcolor', 'mceMenuButton');
- bcml.hide();
- }
+ tinymce.each(ed.settings, function(v, n) {
+ s[n] = v;
+ });
- if (!ds.enabled) {
- // Handle External Toolbar
- if (inst.toolbarElement) {
- delta += inst.toolbarElement.offsetHeight;
+ s.id = 'mce_fullscreen';
+ s.width = n.clientWidth;
+ s.height = n.clientHeight - 15;
+ s.fullscreen_is_enabled = true;
+ s.fullscreen_editor_id = ed.id;
+ s.theme_advanced_resizing = false;
- cell = tableElm.tBodies[0].insertRow(0).insertCell(-1);
- cell.className = 'mceToolbarTop';
- cell.nowrap = true;
-
- ds.oldToolbarParent = inst.toolbarElement.parentNode;
- ds.toolbarHolder = document.createTextNode('...');
-
- cell.appendChild(ds.oldToolbarParent.replaceChild(ds.toolbarHolder, inst.toolbarElement));
- }
-
- ds.parents = [];
+ tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {
+ s[k] = v;
+ });
- vp = tinyMCE.getViewPort(cw);
- ds.scrollX = vp.left;
- ds.scrollY = vp.top;
+ if (s.theme_advanced_toolbar_location === 'external')
+ s.theme_advanced_toolbar_location = 'top';
- // Opera has a bug restoring scrollbars
- if (!tinyMCE.isOpera)
- tinyMCE.addCSSClass(cd.body, 'mceFullscreen');
+ t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
+ t.fullscreenEditor.onInit.add(function() {
+ t.fullscreenEditor.setContent(ed.getContent({format : 'raw', no_events : 1}), {format : 'raw', no_events : 1});
+ });
- tinyMCE.getParentNode(tableElm.parentNode, function (n) {
- if (n.nodeName == 'BODY')
- return true;
+ t.fullscreenEditor.render();
+ tinyMCE.add(t.fullscreenEditor);
- if (n.nodeType == 1)
- tinyMCE.addCSSClass(n, 'mceFullscreenPos');
-
- return false;
+ t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
+ t.fullscreenElement.update();
+ //document.body.overflow = 'hidden';
+ }
});
- if (re)
- re.style.display = 'none';
-
- vp = tinyMCE.getViewPort(cw);
-
- ds.oldWidth = iframe.style.width ? iframe.style.width : iframe.offsetWidth;
- ds.oldHeight = iframe.style.height ? iframe.style.height : iframe.offsetHeight;
- ds.oldTWidth = tableElm.style.width ? tableElm.style.width : tableElm.offsetWidth;
- ds.oldTHeight = tableElm.style.height ? tableElm.style.height : tableElm.offsetHeight;
-
- // Handle % width
- if (ds.oldWidth && ds.oldWidth.indexOf)
- ds.oldTWidth = ds.oldWidth.indexOf('%') != -1 ? ds.oldWidth : ds.oldTWidth;
-
- if (!blo && tinyMCE.isRealIE) {
- blo = tinyMCE.createTag(document, 'iframe', {id : 'mce_fullscreen_blocker', src : 'about:blank', frameBorder : 0, width : vp.width, height : vp.height, style : 'display: block; position: absolute; left: 0; top: 0; z-index: 999; margin: 0; padding: 0;'});
- document.body.appendChild(blo);
- }
-
- tableElm.style.position = 'absolute';
- tableElm.style.zIndex = 1000;
- tableElm.style.left = tableElm.style.top = '0';
-
- tableElm.style.width = vp.width + 'px';
- tableElm.style.height = vp.height + 'px';
+ // Register buttons
+ ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});
- if (tinyMCE.isRealIE) {
- iframe.style.width = vp.width + 'px';
- iframe.style.height = vp.height + 'px';
-
- // Calc new width/height based on overflow
- w = iframe.parentNode.clientWidth - (tableElm.offsetWidth - vp.width);
- h = iframe.parentNode.clientHeight - (tableElm.offsetHeight - vp.height);
- } else {
- w = iframe.parentNode.clientWidth;
- h = iframe.parentNode.clientHeight;
- }
-
- iframe.style.width = w + "px";
- iframe.style.height = (h+delta) + "px";
-
- tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonSelected');
- ds.enabled = true;
-
- inst.useCSS = false;
- } else {
- // Handle External Toolbar
- if (inst.toolbarElement) {
- row = inst.toolbarElement.parentNode.parentNode;
-
- row.parentNode.removeChild(row);
+ ed.onNodeChange.add(function(ed, cm) {
+ cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
+ });
+ },
- ds.oldToolbarParent.replaceChild(inst.toolbarElement, ds.toolbarHolder);
-
- ds.oldToolbarParent = null;
- ds.toolbarHolder = null;
- }
-
- if (blo)
- blo.parentNode.removeChild(blo);
-
- si = 0;
- tinyMCE.getParentNode(tableElm.parentNode, function (n) {
- if (n.nodeName == 'BODY')
- return true;
-
- if (n.nodeType == 1)
- tinyMCE.removeCSSClass(n, 'mceFullscreenPos');
- });
-
- if (re && tinyMCE.getParam("theme_advanced_resizing", false))
- re.style.display = 'block';
-
- tableElm.style.position = 'static';
- tableElm.style.zIndex = '';
- tableElm.style.width = '';
- tableElm.style.height = '';
+ getInfo : function() {
+ return {
+ longname : 'Fullscreen',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
- tableElm.style.width = ds.oldTWidth ? ds.oldTWidth : '';
- tableElm.style.height = ds.oldTHeight ? ds.oldTHeight : '';
-
- iframe.style.width = ds.oldWidth ? ds.oldWidth : '';
- iframe.style.height = ds.oldHeight ? ds.oldHeight : '';
-
- tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonNormal');
- ds.enabled = false;
-
- tinyMCE.removeCSSClass(cd.body, 'mceFullscreen');
- cw.scrollTo(ds.scrollX, ds.scrollY);
-
- inst.useCSS = false;
- }
- },
-
- handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
- if (tinyMCE.getParam('fullscreen_is_enabled'))
- tinyMCE.switchClass(editor_id + '_fullscreen', 'mceButtonSelected');
-
- return true;
- }
-};
-
-tinyMCE.addPlugin("fullscreen", TinyMCE_FullScreenPlugin);
+ // Register plugin
+ tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
+})();
\ No newline at end of file