Ticket #2836: 2836_5.patch

File 2836_5.patch, 12.1 KB (added by Frederico Caldeira Knabben, 10 years ago)
  • _source/core/command.js

     
    55
    66CKEDITOR.command = function( editor, commandDefinition )
    77{
    8         this.state = ( 'state' in commandDefinition ) ? commandDefinition.state : CKEDITOR.TRISTATE_OFF;
    9 
    108        this.exec = function( data )
    119        {
    1210                if ( this.state == CKEDITOR.TRISTATE_DISABLED )
     
    1513                return ( commandDefinition.exec.call( this, editor, data ) !== false );
    1614        };
    1715
    18         CKEDITOR.tools.extend( this, commandDefinition );
     16        CKEDITOR.tools.extend( this, commandDefinition,
     17                // Defaults
     18                {
     19                        modes : { wysiwyg : 1 },
     20                        state : CKEDITOR.TRISTATE_OFF
     21                });
    1922
    2023        // Call the CKEDITOR.event constructor to initialize this instance.
    2124        CKEDITOR.event.call( this );
  • _source/core/dom/element.js

     
    11661166                        var currentScroll = win.getScrollPosition().y;
    11671167                        if ( offset > 0 && ( offset > currentScroll || offset < currentScroll - winHeight ) )
    11681168                                win.$.scrollTo( 0, offset );
     1169                },
     1170
     1171                setState : function( state )
     1172                {
     1173                        switch ( state )
     1174                        {
     1175                                case CKEDITOR.TRISTATE_ON :
     1176                                        this.addClass( 'cke_on' );
     1177                                        this.removeClass( 'cke_off' );
     1178                                        this.removeClass( 'cke_disabled' );
     1179                                        break;
     1180                                case CKEDITOR.TRISTATE_DISABLED :
     1181                                        this.addClass( 'cke_disabled' );
     1182                                        this.removeClass( 'cke_off' );
     1183                                        this.removeClass( 'cke_on' );
     1184                                        break;
     1185                                default :
     1186                                        this.addClass( 'cke_off' );
     1187                                        this.removeClass( 'cke_on' );
     1188                                        this.removeClass( 'cke_disabled' );
     1189                                        break;
     1190                        }
    11691191                }
    11701192        });
  • _source/core/editor.js

     
    272272                }
    273273        };
    274274
     275        function updateCommandsMode()
     276        {
     277                var command,
     278                        commands = this._.commands,
     279                        mode = this.mode;
     280
     281                for ( var name in commands )
     282                {
     283                        command = commands[ name ];
     284
     285                        command.setState( command.modes[ mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
     286                }
     287        }
     288
    275289        /**
    276290         * Initializes the editor instance. This function is called by the editor
    277291         * contructor (editor_basic.js).
     
    346360
    347361                        CKEDITOR.fire( 'instanceCreated', null, this );
    348362
     363                        this.on( 'mode', updateCommandsMode );
     364
    349365                        initConfig( this, instanceConfig );
    350366                };
    351367})();
  • _source/plugins/button/plugin.js

     
    192192
    193193        setState : function( state )
    194194        {
    195                 var element = CKEDITOR.document.getById( this._.id );
    196 
    197                 if ( this._.currentState == state )
     195                if ( this._.state == state )
    198196                        return;
    199197
    200                 switch ( state )
    201                 {
    202                         case CKEDITOR.TRISTATE_ON :
    203                                 element.addClass( 'cke_on' );
    204                                 element.removeClass( 'cke_off' );
    205                                 element.removeClass( 'cke_disabled' );
    206                                 break;
    207                         case CKEDITOR.TRISTATE_DISABLED :
    208                                 element.addClass( 'cke_disabled' );
    209                                 element.removeClass( 'cke_off' );
    210                                 element.removeClass( 'cke_on' );
    211                                 break;
    212                         default :
    213                                 element.addClass( 'cke_off' );
    214                                 element.removeClass( 'cke_on' );
    215                                 element.removeClass( 'cke_disabled' );
    216                                 break;
    217                 }
     198                CKEDITOR.document.getById( this._.id ).setState( state );
    218199
    219                 this._.currentState = state;
     200                this._.state = state;
    220201        }
    221202};
    222203
  • _source/plugins/newpage/plugin.js

     
    1414        {
    1515                editor.addCommand( 'newpage',
    1616                        {
     17                                modes : { wysiwyg:1, source:1 },
     18
    1719                                exec : function( editor )
    1820                                {
    1921                                        editor.setData( editor.config.newpage_html );
  • _source/plugins/panelbutton/plugin.js

     
    2727                CKEDITOR.tools.extend( this, definition,
    2828                        // Set defaults.
    2929                        {
    30                                 title : definition.label
     30                                title : definition.label,
     31                                modes : { wysiwyg : 1 }
    3132                        });
    3233
    3334                // We don't want the panel definition in this object.
     
    7980                                {
    8081                                        var _ = this._;
    8182
     83                                        if ( _.state == CKEDITOR.TRISTATE_DISABLED )
     84                                                return;
     85
    8286                                        this.createPanel( editor );
    8387
    8488                                        if ( _.on )
     
    116120                        if ( this.className )
    117121                                classes += ' ' + this.className;
    118122
     123                        editor.on( 'mode', function()
     124                                {
     125                                        this.setState( this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
     126                                },
     127                                this );
     128
    119129                        output.push(
    120130                                '<span class="cke_button">',
    121131                                '<a id="', id, '"' +
  • _source/plugins/preview/plugin.js

     
    1111{
    1212        var previewCmd =
    1313        {
     14                modes : { wysiwyg:1, source:1 },
     15
    1416                exec : function( editor )
    1517                {
    1618                        var sHTML,
  • _source/plugins/richcombo/plugin.js

     
    1 /*
     1/*
    22Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
    33For licensing, see LICENSE.html or http://ckeditor.com/license
    44*/
    55
    66CKEDITOR.plugins.add( 'richcombo',
    77{
    8         requires : [ 'floatpanel', 'listblock' ],
     8        requires : [ 'floatpanel', 'listblock', 'button' ],
    99
    1010        beforeInit : function( editor )
    1111        {
     
    2828                CKEDITOR.tools.extend( this, definition,
    2929                        // Set defaults.
    3030                        {
    31                                 title : definition.label
     31                                title : definition.label,
     32                                modes : { wysiwyg : 1 }
    3233                        });
    3334
    3435                // We don't want the panel definition in this object.
     
    4748                this._ =
    4849                {
    4950                        panelDefinition : panelDefinition,
    50                         items : {}
     51                        items : {},
     52                        state : CKEDITOR.TRISTATE_OFF
    5153                };
    5254        },
    5355
     
    8587                        var clickFn = CKEDITOR.tools.addFunction( function( $element )
    8688                                {
    8789                                        var _ = this._;
     90                                       
     91                                        if ( _.state == CKEDITOR.TRISTATE_DISABLED )
     92                                                return;
    8893
    8994                                        this.createPanel( editor );
    9095
     
    109114                                        _.panel.showBlock( this.id, new CKEDITOR.dom.element( $element ).getFirst(), 4 );
    110115                                },
    111116                                this );
    112                                
     117
    113118                        var instance = {
    114119                                id : id,
    115120                                combo : this,
     
    120125                                },
    121126                                execute : clickFn
    122127                        };
     128
     129                        editor.on( 'mode', function()
     130                                {
     131                                        this.setState( this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
     132                                },
     133                                this );
    123134                       
    124135                        var keyDownFn = CKEDITOR.tools.addFunction( function( ev, element ){
    125136                               
     
    146157                                '<span id=', id );
    147158
    148159                        if ( this.className )
    149                                 output.push( ' class="', this.className, '"');
     160                                output.push( ' class="', this.className, ' cke_off"');
    150161
    151162                        output.push(
    152163                                '>' +
     
    201212                                        if ( me.className )
    202213                                                this.element.getFirst().addClass( me.className + '_panel' );
    203214
    204                                         me.document.getById( 'cke_' + me.id ).addClass( 'cke_on');
     215                                        me.setState( CKEDITOR.TRISTATE_ON );
    205216
    206217                                        me._.on = 1;
    207218
     
    214225                                        if ( me.className )
    215226                                                this.element.getFirst().removeClass( me.className + '_panel' );
    216227
    217                                         me.document.getById( 'cke_' + me.id ).removeClass( 'cke_on');
     228                                        me.setState( CKEDITOR.TRISTATE_OFF );
    218229
    219230                                        me._.on = 0;
    220231
     
    299310                commit : function()
    300311                {
    301312                        this._.list.commit();
     313                },
     314
     315                setState : function( state )
     316                {
     317                        if ( this._.state == state )
     318                                return;
     319
     320                        this.document.getById( 'cke_' + this.id ).setState( state );
     321
     322                        this._.state = state;
    302323                }
    303324        }
    304325});
  • _source/plugins/sourcearea/plugin.js

     
    137137        {
    138138                source :
    139139                {
     140                        modes : { wysiwyg:1, source:1 },
     141
    140142                        exec : function( editor )
    141143                        {
    142144                                editor.setMode( editor.mode == 'source' ? 'wysiwyg' : 'source' );
  • _source/plugins/undo/plugin.js

     
    6666                        // Make the undo manager available only in wysiwyg mode.
    6767                        editor.on( 'mode', function()
    6868                                {
    69                                         if ( !undoManager.enabled && editor.mode == 'wysiwyg' )
     69                                        if ( editor.mode == 'wysiwyg' )
    7070                                        {
    71                                                 undoManager.enabled = true;
     71                                                if ( !undoManager.enabled )
     72                                                {
     73                                                        undoManager.enabled = true;
    7274
    73                                                 editor.document.on( 'keydown', function( event )
    74                                                         {
    75                                                                 // Do not capture CTRL hotkeys.
    76                                                                 if ( !event.data.$.ctrlKey && !event.data.$.metaKey )
    77                                                                         undoManager.type();
    78                                                         });
     75                                                        editor.document.on( 'keydown', function( event )
     76                                                                {
     77                                                                        // Do not capture CTRL hotkeys.
     78                                                                        if ( !event.data.$.ctrlKey && !event.data.$.metaKey )
     79                                                                                undoManager.type();
     80                                                                });
    7981
    80                                                 // Being this the first call, let's get an undo snapshot.
    81                                                 if ( undoManager.index == -1 )
    82                                                         undoManager.save();
     82                                                        // Being this the first call, let's get an undo snapshot.
     83                                                        if ( undoManager.index == -1 )
     84                                                                undoManager.save();
     85                                                }
    8386                                        }
     87                                        else
     88                                                undoManager.enabled = false;
    8489
    8590                                        undoManager.onChange();
    8691                                });
  • _source/skins/default/richcombo.css

     
    9191    width: 15px;
    9292}
    9393
    94 .cke_skin_default .cke_rcombo a:hover,
    95 .cke_skin_default .cke_rcombo a:focus,
    96 .cke_skin_default .cke_rcombo a:active,
     94.cke_skin_default .cke_rcombo .cke_off a:hover,
     95.cke_skin_default .cke_rcombo .cke_off a:focus,
     96.cke_skin_default .cke_rcombo .cke_off a:active,
    9797.cke_skin_default .cke_rcombo .cke_on a
    9898{
    9999        filter: alpha(opacity=100); /* IE */
    100100        opacity: 1; /* Safari, Opera and Mozilla */
    101101}
    102102
    103 .cke_skin_default .cke_rcombo a:hover .cke_text,
    104 .cke_skin_default .cke_rcombo a:focus .cke_text,
    105 .cke_skin_default .cke_rcombo a:active .cke_text,
     103.cke_skin_default .cke_rcombo .cke_off a:hover .cke_text,
     104.cke_skin_default .cke_rcombo .cke_off a:focus .cke_text,
     105.cke_skin_default .cke_rcombo .cke_off a:active .cke_text,
    106106.cke_skin_default .cke_rcombo .cke_on .cke_text
    107107{
    108108        border-color: #316ac5;
    109109}
    110110
    111 .cke_skin_default .cke_rcombo a:hover .cke_openbutton,
    112 .cke_skin_default .cke_rcombo a:focus .cke_openbutton,
    113 .cke_skin_default .cke_rcombo a:active .cke_openbutton,
     111.cke_skin_default .cke_rcombo .cke_off a:hover .cke_openbutton,
     112.cke_skin_default .cke_rcombo .cke_off a:focus .cke_openbutton,
     113.cke_skin_default .cke_rcombo .cke_off a:active .cke_openbutton,
    114114.cke_skin_default .cke_rcombo .cke_on .cke_openbutton
    115115{
    116116        border-color: #316ac5;
     
    130130        -webkit-border-bottom-right-radius: 0px;
    131131        border-bottom-right-radius: 0px;
    132132}
     133
     134.cke_skin_default .cke_rcombo .cke_disabled .cke_label
     135{
     136        filter: alpha(opacity=30); /* IE */
     137        opacity: 0.3; /* Safari, Opera and Mozilla */
     138}
     139
     140.cke_skin_default .cke_rcombo .cke_disabled .cke_text,
     141.cke_skin_default .cke_rcombo .cke_disabled .cke_openbutton
     142{
     143        filter: alpha(opacity=50); /* IE */
     144        opacity: 0.5; /* Safari, Opera and Mozilla */
     145}
     146
     147.cke_skin_default .cke_rcombo .cke_disabled .cke_text
     148{
     149        color: #fff;
     150}
     151 No newline at end of file
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy