Ticket #3060: 3060.patch

File 3060.patch, 3.7 KB (added by Artur Formella, 11 years ago)
  • _source/plugins/button/plugin.js

     
    5858        this.className = definition.className || ( definition.command && 'cke_button_' + definition.command ) || '';
    5959
    6060        /**
     61         * Button is disabled in editor mode which name doesn't exist on this list.
     62         * Ingored if command name is defined.
     63         * @name CKEDITOR.ui.button.prototype.activeInModes
     64         * @type Array of Strings
     65         * @example
     66         */
     67        this.activeInModes = definition.activeInModes;
     68
     69        /**
    6170         * The function to be called when the user clicks the button. If not
    6271         * defined, the "command" property is required, and the command gets
    6372         * executed on click.
     
    114123                        },
    115124                        execute : function()
    116125                        {
    117                                 this.button.click( editor );
     126                                if ( this.button._.currentState != CKEDITOR.TRISTATE_DISABLED )         // Button isn't disabled.
     127                                        this.button.click( editor );
    118128                        }
    119129                };
    120130
     
    144154                        }
    145155                }
    146156
     157                if ( !command )                 // Buttons without command.
     158                {
     159                        this._.currentState = this.stateInEditorMode( editor.mode );
     160
     161                        classes += ' cke_' + (
     162                                this._.currentState == CKEDITOR.TRISTATE_ON ? 'on' :
     163                                this._.currentState == CKEDITOR.TRISTATE_DISABLED ? 'disabled' :
     164                                'off' );
     165
     166                        if ( this.activeInModes )
     167                        {
     168                                editor.on( 'mode', function()
     169                                        {
     170                                                this.setState( this.stateInEditorMode( editor.mode ) );
     171                                        }, this );
     172                        }
     173                }
     174
    147175                if ( this.className )
    148176                        classes += ' ' + this.className;
    149177
     
    209237                }
    210238
    211239                this._.currentState = state;
     240        },
     241        stateInEditorMode : function ( editorMode )
     242        {
     243                if ( this.activeInModes )
     244                {
     245                        var index = CKEDITOR.tools.indexOf( this.activeInModes, editorMode );
     246                        return ( index == -1 ) ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF;
     247                }
     248
     249                return this._.currentState ? this._.currentState : CKEDITOR.TRISTATE_OFF;
    212250        }
    213251};
    214252
  • _source/plugins/colorbutton/plugin.js

     
    2525                                        label : lang.label,
    2626                                        title : lang.panelTitle,
    2727                                        className : 'cke_button_' + name.toLowerCase(),
     28                                        activeInModes : [ 'wysiwyg' ],
    2829
    2930                                        panel :
    3031                                        {
  • _source/plugins/panelbutton/plugin.js

     
    7979                                {
    8080                                        var _ = this._;
    8181
     82                                        if ( _.currentState == CKEDITOR.TRISTATE_DISABLED )
     83                                                return false;
     84
    8285                                        this.createPanel();
    8386
    8487                                        if ( _.on )
     
    9396
    9497                        var label = this.label || '';
    9598
    96                         var classes = 'cke_button cke_off';
     99                        var classes = 'cke_button';
    97100
     101                        if ( this.activeInModes )
     102                        {
     103                                this._.currentState = this.stateInEditorMode( editor.mode );
     104                                classes += ' cke_' + ( ( this._.currentState == CKEDITOR.TRISTATE_DISABLED ) ? 'disabled' : 'off' );
     105                               
     106                                editor.on( 'mode', function()
     107                                        {
     108                                                this.setState( this.stateInEditorMode( editor.mode ) );
     109                                        }, this );
     110                        }
     111                        else
     112                        {
     113                                classes += ' cke_off';
     114                                this._.currentState =  CKEDITOR.TRISTATE_OFF;
     115                        }
     116
    98117                        if ( this.className )
    99118                                classes += ' ' + this.className;
    100119
     
    178197                                this.onBlock( panel, _.id );
    179198                },
    180199
     200                stateInEditorMode : CKEDITOR.ui.button.prototype.stateInEditorMode,
    181201                setState : CKEDITOR.ui.button.prototype.setState
    182202        }
    183203});
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy