mirror of
https://github.com/UnickSoft/graphonline.git
synced 2025-07-01 23:36:00 +00:00
93 lines
4.0 KiB
JavaScript
Executable File
93 lines
4.0 KiB
JavaScript
Executable File
/*
|
|
* Copyright (C) 2013 Erideon (Singapore) Private Limited; http://www.erideon.com/
|
|
*
|
|
* This library is free software; you can redistribute it and/or modify it under
|
|
* the terms of the GNU Lesser General Public License as published by the Free Software Foundation;
|
|
* either version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU Lesser General Public License for more details available from
|
|
* Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*
|
|
* This header must be retained in all distributed or embedded copies of this code and
|
|
* reference to www.erideon.com must be made available in derivative works.
|
|
*/
|
|
|
|
(function () {
|
|
var pluginHandle = 'maxheight';
|
|
CKEDITOR.plugins.add(pluginHandle, {
|
|
init: function (oEditor) {
|
|
// for conveniently referencing the plugin in the init-function
|
|
var oPlugin = oEditor.plugins[pluginHandle];
|
|
|
|
// we choose the DOM-element where we want to put the eventhandler on
|
|
var eventObject = window;
|
|
if (navigator.appVersion.indexOf("MSIE 7.") != -1) {
|
|
// IE7 cannot react on window-events -> use the parent-element
|
|
eventObject = oEditor.element.$.parentElement;
|
|
}
|
|
|
|
// our resize-functionality
|
|
var resizeFunction = function () {
|
|
oPlugin.recalcCKEditorSize(oEditor);
|
|
};
|
|
|
|
// for convenience calls from outside
|
|
oEditor.maximizeHeightNow = resizeFunction;
|
|
// window resize events will trigger a CKEditor-resize
|
|
oPlugin.addEvent(eventObject, 'resize', resizeFunction);
|
|
|
|
// do an initial resize at startup - does not work if the editor is not visible!
|
|
oEditor.on('instanceReady', resizeFunction);
|
|
},
|
|
|
|
recalcCKEditorSize: function (oEditor) {
|
|
/// <summary>
|
|
/// recalculate the size of the CKeditor instance
|
|
/// </summary>
|
|
/// <param name="oEditor">editor to work with</param>
|
|
|
|
// make sure everything is available
|
|
if (oEditor && oEditor.element && oEditor.container) {
|
|
// evaluate desired width
|
|
var curSize = oEditor.getResizable()
|
|
|
|
// from width-setting of the container / width-property of ASP.NET control
|
|
var curWidth = curSize.$.style.width;
|
|
if (curWidth == '') {
|
|
// from textarea (style setting on ASP.NET control)
|
|
curWidth = oEditor.element.$.style.width;
|
|
if (curWidth == '') {
|
|
// no definition so far
|
|
// we assume 100%
|
|
curWidth = '100%';
|
|
}
|
|
}
|
|
|
|
// we take height from encapsulating div/body/...
|
|
oEditor.resize(curWidth, oEditor.container.$.parentElement.offsetHeight, null, false);
|
|
}
|
|
},
|
|
|
|
addEvent: function (elem, type, eventHandle) {
|
|
/// <summary>
|
|
/// handles attaching events cross-browser.
|
|
/// <see href="http://stackoverflow.com/questions/641857/javascript-window-resize-event" />
|
|
/// </summary>
|
|
/// <param name="elem">the object to attach the event on</param>
|
|
/// <param name="type">name of the event</param>
|
|
/// <param name="eventHandle">the event handler</param>
|
|
|
|
if (elem == null || elem == undefined) return;
|
|
if (elem.addEventListener) {
|
|
elem.addEventListener(type, eventHandle, false);
|
|
} else if (elem.attachEvent) {
|
|
elem.attachEvent("on" + type, eventHandle);
|
|
} else {
|
|
elem["on" + type] = eventHandle;
|
|
}
|
|
}
|
|
});
|
|
})();
|