Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I customize a ckeditor 4.2 builtin plugin like links?

If I want to add a tab to the links plugin, what's the best practice approach? I don't want to alter the release code just override it with a version with my customizations. So it's easy to update with new releases. Does CKEDITOR 4.2 have a how-to for this? I'm using the new inline style toolbars.

If I get the source code can I rebuild the release version without the links plugin? and then do an external plugin using my customized version of the links plugin?

like image 501
claya Avatar asked Dec 25 '22 22:12

claya


1 Answers

You got to observe dialogDefinition event to do this:

CKEDITOR.on( 'dialogDefinition', function( evt ) {
    var dialog = evt.data;

    if ( dialog.name == 'link' ) {
        // Get dialog definition.
        var def = evt.data.definition;

        // Add some stuff to definition.
        def.addContents( {
            id: 'custom',
            label: 'My custom tab',
            elements: [
                {
                    id: 'myField1',
                    type: 'text',
                    label: 'My Text Field'
                },
                {
                    id: 'myField2',
                    type: 'text',
                    label: 'Another Text Field'
                }
            ]
        });

    }
} );

CKEDITOR.replace( 'editor1' );

You can also remove existing fields:

var someTab = def.getContents( 'someTab' );
someTab.remove( 'someField' );

Or modify them:

var input = someTab.get( 'input' );
input[ 'default' ] = 'www.example.com';

Or event remove the whole tab:

def.removeContents( 'anotherTab' );
like image 132
oleq Avatar answered Dec 30 '22 11:12

oleq