2005-09-30 02:25:07 +00:00
|
|
|
function FullScreen(editor, args)
|
|
|
|
|
{
|
|
|
|
|
this.editor = editor;
|
|
|
|
|
editor._superclean_on = false;
|
|
|
|
|
cfg = editor.config;
|
|
|
|
|
|
|
|
|
|
cfg.registerButton
|
|
|
|
|
( 'fullscreen',
|
|
|
|
|
this._lc("Maximize/Minimize Editor"),
|
|
|
|
|
[_editor_url + cfg.imgURL + 'ed_buttons_main.gif',8,0], true,
|
|
|
|
|
function(e, objname, obj)
|
|
|
|
|
{
|
|
|
|
|
e._fullScreen();
|
|
|
|
|
if(e._isFullScreen)
|
|
|
|
|
{
|
|
|
|
|
obj.swapImage([_editor_url + cfg.imgURL + 'ed_buttons_main.gif',9,0]);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
obj.swapImage([_editor_url + cfg.imgURL + 'ed_buttons_main.gif',8,0]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// See if we can find 'popupeditor' and replace it with fullscreen
|
|
|
|
|
cfg.addToolbarElement("fullscreen", "popupeditor", 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FullScreen._pluginInfo =
|
|
|
|
|
{
|
|
|
|
|
name : "FullScreen",
|
|
|
|
|
version : "1.0",
|
|
|
|
|
developer: "James Sleeman",
|
|
|
|
|
developer_url: "http://www.gogo.co.nz/",
|
|
|
|
|
c_owner : "Gogo Internet Services",
|
|
|
|
|
license : "htmlArea",
|
|
|
|
|
sponsor : "Gogo Internet Services",
|
|
|
|
|
sponsor_url : "http://www.gogo.co.nz/"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
FullScreen.prototype._lc = function(string) {
|
|
|
|
|
return HTMLArea._lc(string, 'FullScreen');
|
2005-12-07 03:37:36 +00:00
|
|
|
};
|
2005-09-30 02:25:07 +00:00
|
|
|
|
|
|
|
|
/** fullScreen makes an editor take up the full window space (and resizes when the browser is resized)
|
|
|
|
|
* the principle is the same as the "popupwindow" functionality in the original htmlArea, except
|
|
|
|
|
* this one doesn't popup a window (it just uses to positioning hackery) so it's much more reliable
|
|
|
|
|
* and much faster to switch between
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
HTMLArea.prototype._fullScreen = function()
|
|
|
|
|
{
|
|
|
|
|
var e = this;
|
|
|
|
|
function sizeItUp()
|
|
|
|
|
{
|
|
|
|
|
if(!e._isFullScreen || e._sizing) return false;
|
|
|
|
|
e._sizing = true;
|
|
|
|
|
// Width & Height of window
|
|
|
|
|
var x,y;
|
|
|
|
|
if (window.innerHeight) // all except Explorer
|
|
|
|
|
{
|
|
|
|
|
x = window.innerWidth;
|
|
|
|
|
y = window.innerHeight;
|
|
|
|
|
}
|
|
|
|
|
else if (document.documentElement && document.documentElement.clientHeight)
|
|
|
|
|
// Explorer 6 Strict Mode
|
|
|
|
|
{
|
|
|
|
|
x = document.documentElement.clientWidth;
|
|
|
|
|
y = document.documentElement.clientHeight;
|
|
|
|
|
}
|
|
|
|
|
else if (document.body) // other Explorers
|
|
|
|
|
{
|
|
|
|
|
x = document.body.clientWidth;
|
|
|
|
|
y = document.body.clientHeight;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
e.sizeEditor(x + 'px',y + 'px',true,true);
|
|
|
|
|
e._sizing = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function sizeItDown()
|
|
|
|
|
{
|
|
|
|
|
if(e._isFullScreen || e._sizing) return false;
|
|
|
|
|
e._sizing = true;
|
|
|
|
|
e.initSize();
|
|
|
|
|
e._sizing = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** It's not possible to reliably get scroll events, particularly when we are hiding the scrollbars
|
|
|
|
|
* so we just reset the scroll ever so often while in fullscreen mode
|
|
|
|
|
*/
|
|
|
|
|
function resetScroll()
|
|
|
|
|
{
|
|
|
|
|
if(e._isFullScreen)
|
|
|
|
|
{
|
|
|
|
|
window.scroll(0,0);
|
|
|
|
|
window.setTimeout(resetScroll,150);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(typeof this._isFullScreen == 'undefined')
|
|
|
|
|
{
|
|
|
|
|
this._isFullScreen = false;
|
|
|
|
|
if(e.target != e._iframe)
|
|
|
|
|
{
|
|
|
|
|
HTMLArea._addEvent(window, 'resize', sizeItUp);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Gecko has a bug where if you change position/display on a
|
|
|
|
|
// designMode iframe that designMode dies.
|
|
|
|
|
if(HTMLArea.is_gecko)
|
|
|
|
|
{
|
|
|
|
|
this.deactivateEditor();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(this._isFullScreen)
|
|
|
|
|
{
|
|
|
|
|
// Unmaximize
|
|
|
|
|
this._htmlArea.style.position = '';
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if(HTMLArea.is_ie)
|
|
|
|
|
{
|
|
|
|
|
var bod = document.getElementsByTagName('html');
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var bod = document.getElementsByTagName('body');
|
|
|
|
|
}
|
|
|
|
|
bod[0].style.overflow='';
|
|
|
|
|
}
|
|
|
|
|
catch(e)
|
|
|
|
|
{
|
|
|
|
|
// Nutthin
|
|
|
|
|
}
|
|
|
|
|
this._isFullScreen = false;
|
|
|
|
|
sizeItDown();
|
|
|
|
|
|
|
|
|
|
// Restore all ancestor positions
|
|
|
|
|
var ancestor = this._htmlArea;
|
|
|
|
|
while((ancestor = ancestor.parentNode) && ancestor.style)
|
|
|
|
|
{
|
|
|
|
|
ancestor.style.position = ancestor._xinha_fullScreenOldPosition;
|
|
|
|
|
ancestor._xinha_fullScreenOldPosition = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
window.scroll(this._unScroll.x, this._unScroll.y);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
// Get the current Scroll Positions
|
|
|
|
|
this._unScroll =
|
|
|
|
|
{
|
|
|
|
|
x:(window.pageXOffset)?(window.pageXOffset):(document.documentElement)?document.documentElement.scrollLeft:document.body.scrollLeft,
|
|
|
|
|
y:(window.pageYOffset)?(window.pageYOffset):(document.documentElement)?document.documentElement.scrollTop:document.body.scrollTop
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Make all ancestors position = static
|
|
|
|
|
var ancestor = this._htmlArea;
|
|
|
|
|
while((ancestor = ancestor.parentNode) && ancestor.style)
|
|
|
|
|
{
|
|
|
|
|
ancestor._xinha_fullScreenOldPosition = ancestor.style.position;
|
|
|
|
|
ancestor.style.position = 'static';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Maximize
|
|
|
|
|
window.scroll(0,0);
|
|
|
|
|
this._htmlArea.style.position = 'absolute';
|
|
|
|
|
this._htmlArea.style.zIndex = 999;
|
|
|
|
|
this._htmlArea.style.left = 0;
|
|
|
|
|
this._htmlArea.style.top = 0;
|
|
|
|
|
this._isFullScreen = true;
|
|
|
|
|
resetScroll();
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if(HTMLArea.is_ie)
|
|
|
|
|
{
|
|
|
|
|
var bod = document.getElementsByTagName('html');
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var bod = document.getElementsByTagName('body');
|
|
|
|
|
}
|
|
|
|
|
bod[0].style.overflow='hidden';
|
|
|
|
|
}
|
|
|
|
|
catch(e)
|
|
|
|
|
{
|
|
|
|
|
// Nutthin
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sizeItUp();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(HTMLArea.is_gecko)
|
|
|
|
|
{
|
|
|
|
|
this.activateEditor();
|
|
|
|
|
}
|
|
|
|
|
this.focusEditor();
|
2005-12-07 03:37:36 +00:00
|
|
|
};
|