Ticket #3079: 3079.patch

File 3079.patch, 4.3 KB (added by arczi, 6 years ago)
  • _source/lang/en.js

     
    2727         */
    2828        dir : 'ltr',
    2929
     30        // Toolbar buttons states.
     31        stateNormal             :       '%1',
     32        stateOn                 :       '%1 (On)',
     33        stateDisabled   :       '%1 (Disabled)',
     34
    3035        // Toolbar buttons without dialogs.
    3136        source                  : 'Source',
    3237        newPage                 : 'New Page',
  • _source/plugins/button/plugin.js

     
    102102                var env = CKEDITOR.env;
    103103
    104104                var id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber();
     105                this._.editor = editor;
    105106
    106107                var instance =
    107108                {
     
    148149                if ( this.className )
    149150                        classes += ' ' + this.className;
    150151
     152                var stateText = 'stateNormal';
     153                if ( this._.state == CKEDITOR.TRISTATE_DISABLED )
     154                        stateText = 'stateDisabled';
     155                else if ( this._.state == CKEDITOR.TRISTATE_ON )
     156                        stateText = 'stateOn';
     157
     158                var title = editor.lang[ stateText ].replace( /%1/, this.title );
     159
    151160                output.push(
    152161                        '<span class="cke_button">',
    153162                        '<a id="', id, '"' +
    154163                                ' class="', classes, '" href="javascript:void(\'', ( this.title || '' ).replace( "'", '' ), '\')"' +
    155                                 ' title="', this.title, '"' +
     164                                ' title="', title, '"' +
    156165                                ' tabindex="-1"' +
    157166                                ' hidefocus="true"' );
    158167
     
    199208                if ( this._.state == state )
    200209                        return;
    201210
    202                 CKEDITOR.document.getById( this._.id ).setState( state );
     211                // #3079. Change button title.
     212                var stateText = 'stateNormal';
     213                if ( state == CKEDITOR.TRISTATE_DISABLED )
     214                        stateText = 'stateDisabled';
     215                else if ( state == CKEDITOR.TRISTATE_ON )
     216                        stateText = 'stateOn';
    203217
    204218                this._.state = state;
     219
     220                var title = this._.editor.lang[ stateText ].replace( /%1/, this.title ),
     221                        element = CKEDITOR.document.getById( this._.id );
     222
     223                if ( !element )
     224                        element = this.document.getById( 'cke_' + this.id );
     225
     226                element.setState( state );
     227                element.setAttribute( 'title', title );
     228                if ( element.getLast().getName() == 'a' )                               // Update link title.
     229                        element.getLast().setAttribute( 'title', title );
    205230        }
    206231};
    207232
  • _source/plugins/panelbutton/plugin.js

     
    6161                render : function( editor, output )
    6262                {
    6363                        var id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber();
     64                        this._.editor = editor;
    6465
    6566                        var instance =
    6667                        {
  • _source/plugins/richcombo/plugin.js

     
    6969                renderHtml : function( editor )
    7070                {
    7171                        var output = [];
     72                        this._.editor = editor;
    7273                        this.render( editor, output );
    7374                        return output.join( '' );
    7475                },
     
    161162                        if ( this.className )
    162163                                output.push( ' class="', this.className, ' cke_off"');
    163164
     165                        var stateText = 'stateNormal';
     166                        if ( this._.state == CKEDITOR.TRISTATE_DISABLED )
     167                                stateText = 'stateDisabled';
     168                        else if ( this._.state == CKEDITOR.TRISTATE_ON )
     169                                stateText = 'stateOn';
     170
     171                        var title = editor.lang[ stateText ].replace( /%1/, this.title );
     172
    164173                        output.push(
    165174                                '>' +
    166175                                        '<span class=cke_label>', this.label, '</span>' +
    167                                         '<a hidefocus=true title="', this.title, '" tabindex="-1" href="javascript:void(\'', this.label, '\')"' );
     176                                        '<a hidefocus=true title="', title, '" tabindex="-1" href="javascript:void(\'', this.label, '\')"' );
    168177
    169178                        // Some browsers don't cancel key events in the keydown but in the
    170179                        // keypress.
     
    195204                        if ( this.onRender )
    196205                                this.onRender();
    197206                               
     207                        this._.editor = editor;
     208
    198209                        return instance;
    199210                },
    200211
     
    322333                        this._.list.commit();
    323334                },
    324335
    325                 setState : function( state )
    326                 {
    327                         if ( this._.state == state )
    328                                 return;
    329 
    330                         this.document.getById( 'cke_' + this.id ).setState( state );
    331 
    332                         this._.state = state;
    333                 }
     336                setState : CKEDITOR.ui.button.prototype.setState
    334337        }
    335338});
    336339
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy