Skip to content

Commit

Permalink
missing ckeditor plugins required by other implemented plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
dleffler committed Dec 28, 2016
1 parent 4e715f7 commit efb7fab
Show file tree
Hide file tree
Showing 2 changed files with 504 additions and 0 deletions.
138 changes: 138 additions & 0 deletions external/editors/ckeditor/plugins/panelbutton/plugin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
/**
* @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or http://ckeditor.com/license
*/

CKEDITOR.plugins.add( 'panelbutton', {
requires: 'button',
onLoad: function() {
function clickFn( editor ) {
var _ = this._;

if ( _.state == CKEDITOR.TRISTATE_DISABLED )
return;

this.createPanel( editor );

if ( _.on ) {
_.panel.hide();
return;
}

_.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 );
}

/**
* @class
* @extends CKEDITOR.ui.button
* @todo class and methods
*/
CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass( {
base: CKEDITOR.ui.button,

/**
* Creates a panelButton class instance.
*
* @constructor
*/
$: function( definition ) {
// We don't want the panel definition in this object.
var panelDefinition = definition.panel || {};
delete definition.panel;

this.base( definition );

this.document = ( panelDefinition.parent && panelDefinition.parent.getDocument() ) || CKEDITOR.document;

panelDefinition.block = {
attributes: panelDefinition.attributes
};
panelDefinition.toolbarRelated = true;

this.hasArrow = true;

this.click = clickFn;

this._ = {
panelDefinition: panelDefinition
};
},

statics: {
handler: {
create: function( definition ) {
return new CKEDITOR.ui.panelButton( definition );
}
}
},

proto: {
createPanel: function( editor ) {
var _ = this._;

if ( _.panel )
return;

var panelDefinition = this._.panelDefinition,
panelBlockDefinition = this._.panelDefinition.block,
panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
block = panel.addBlock( _.id, panelBlockDefinition ),
me = this;

panel.onShow = function() {
if ( me.className )
this.element.addClass( me.className + '_panel' );

me.setState( CKEDITOR.TRISTATE_ON );

_.on = 1;

me.editorFocus && editor.focus();

if ( me.onOpen )
me.onOpen();
};

panel.onHide = function( preventOnClose ) {
if ( me.className )
this.element.getFirst().removeClass( me.className + '_panel' );

me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );

_.on = 0;

if ( !preventOnClose && me.onClose )
me.onClose();
};

panel.onEscape = function() {
panel.hide( 1 );
me.document.getById( _.id ).focus();
};

if ( this.onBlock )
this.onBlock( panel, block );

block.onHide = function() {
_.on = 0;
me.setState( CKEDITOR.TRISTATE_OFF );
};
}
}
} );

},
beforeInit: function( editor ) {
editor.ui.addHandler( CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler );
}
} );

/**
* Button UI element.
*
* @readonly
* @property {String} [='panelbutton']
* @member CKEDITOR
*/
CKEDITOR.UI_PANELBUTTON = 'panelbutton';

0 comments on commit efb7fab

Please sign in to comment.