Ticket #7430: 7430_5.patch

File 7430_5.patch, 5.6 KB (added by garry.yao, 2 years ago)
  • _source/plugins/image/plugin.js

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    77 * @file Image plugin 
    88 */ 
    99 
     10(function() 
     11{ 
     12 
    1013CKEDITOR.plugins.add( 'image', 
    1114{ 
    1215        init : function( editor ) 
     
    5356                { 
    5457                        editor.contextMenu.addListener( function( element, selection ) 
    5558                                { 
    56                                         if ( !element || !element.is( 'img' ) || element.data( 'cke-realelement' ) || element.isReadOnly() ) 
    57                                                 return null; 
    58  
    59                                         return { image : CKEDITOR.TRISTATE_OFF }; 
     59                                        if ( getSelectedImage( editor, element ) ) 
     60                                                return { image : CKEDITOR.TRISTATE_OFF }; 
    6061                                }); 
    6162                } 
    62         } 
    63 } ); 
     63        }, 
     64        afterInit : function( editor ) 
     65        { 
     66                // Customize the behavior of the alignment commands. (#7430) 
     67                setupAlignCommand( 'left' ); 
     68                setupAlignCommand( 'right' ); 
     69                setupAlignCommand( 'center' ); 
     70                setupAlignCommand( 'block' ); 
     71 
     72                function setupAlignCommand( value ) 
     73                { 
     74                        var command = editor.getCommand( 'justify' + value ); 
     75                        if ( command ) 
     76                        { 
     77                                if ( value == 'left' || value == 'right' ) 
     78                                { 
     79                                        command.on( 'exec', function( evt ) 
     80                                                { 
     81                                                        var img = getSelectedImage( editor ), align; 
     82                                                        if ( img ) 
     83                                                        { 
     84                                                                align = getImageAlignment( img ); 
     85                                                                if ( align == value ) 
     86                                                                { 
     87                                                                        img.removeStyle( 'float' ); 
     88 
     89                                                                        // Remove "align" attribute when necessary. 
     90                                                                        if ( value == getImageAlignment( img ) ) 
     91                                                                                img.removeAttribute( 'align' ); 
     92                                                                } 
     93                                                                else 
     94                                                                        img.setStyle( 'float', value ) 
     95 
     96                                                                evt.cancel(); 
     97                                                        } 
     98                                                }); 
     99                                } 
     100 
     101                                command.on( 'refresh', function( evt ) 
     102                                        { 
     103                                                var img = getSelectedImage( editor ), align; 
     104                                                if ( img ) 
     105                                                { 
     106                                                        align = getImageAlignment( img ); 
     107 
     108                                                        this.setState( 
     109                                                                ( align == value ) ? CKEDITOR.TRISTATE_ON : 
     110                                                                ( value == 'right' || value == 'left' ) ? CKEDITOR.TRISTATE_OFF : 
     111                                                                CKEDITOR.TRISTATE_DISABLED ); 
     112 
     113                                                        evt.cancel(); 
     114                                                } 
     115                                        }); 
     116                        } 
     117                } 
     118        } 
     119}); 
     120 
     121function getSelectedImage( editor, element ) 
     122{ 
     123        if ( !element ) 
     124        { 
     125                var sel = editor.getSelection(); 
     126                element = ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && sel.getSelectedElement(); 
     127        } 
     128 
     129        if ( element && element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() ) 
     130                return element; 
     131} 
     132 
     133function getImageAlignment( element ) 
     134{ 
     135        var align = element.getStyle( 'float' ); 
     136 
     137        if ( align == 'inherit' || align == 'none' ) 
     138                align = 0; 
     139 
     140        if ( !align ) 
     141                align = element.getAttribute( 'align' ); 
     142 
     143        return align; 
     144} 
     145 
     146})(); 
    64147 
    65148/** 
    66149 * Whether to remove links when emptying the link URL field in the image dialog. 
  • _source/plugins/justify/plugin.js

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    99 
    1010(function() 
    1111{ 
    12         function getState( editor, path ) 
    13         { 
    14                 var firstBlock = path.block || path.blockLimit; 
    15  
    16                 if ( !firstBlock || firstBlock.getName() == 'body' ) 
    17                         return CKEDITOR.TRISTATE_OFF; 
    18  
    19                 return ( getAlignment( firstBlock, editor.config.useComputedState ) == this.value ) ? 
    20                         CKEDITOR.TRISTATE_ON : 
    21                         CKEDITOR.TRISTATE_OFF; 
    22         } 
    23  
    2412        function getAlignment( element, useComputedState ) 
    2513        { 
    2614                useComputedState = useComputedState === undefined || useComputedState; 
     
    4028                        align = element.getStyle( 'text-align' ) || element.getAttribute( 'align' ) || ''; 
    4129                } 
    4230 
    43                 align && ( align = align.replace( /-moz-|-webkit-|start|auto/i, '' ) ); 
     31                // Sometimes computed values doesn't tell. 
     32                align && ( align = align.replace( /(?:-(?:moz|webkit)-)?(?:start|auto)/i, '' ) ); 
    4433 
    4534                !align && useComputedState && ( align = element.getComputedStyle( 'direction' ) == 'rtl' ? 'right' : 'left' ); 
    4635 
     
    5241                if ( evt.editor.readOnly ) 
    5342                        return; 
    5443 
    55                 var command = evt.editor.getCommand( this.name ); 
    56                 command.state = getState.call( this, evt.editor, evt.data.path ); 
    57                 command.fire( 'state' ); 
     44                evt.editor.getCommand( this.name ).refresh( evt.data.path ); 
    5845        } 
    5946 
    6047        function justifyCommand( editor, name, value ) 
    6148        { 
     49                this.editor = editor; 
    6250                this.name = name; 
    6351                this.value = value; 
    6452 
     
    192180                        editor.focus(); 
    193181                        editor.forceNextSelectionCheck(); 
    194182                        selection.selectBookmarks( bookmarks ); 
     183                }, 
     184 
     185                refresh : function( path ) 
     186                { 
     187                        var firstBlock = path.block || path.blockLimit; 
     188 
     189                        this.setState( firstBlock.getName() != 'body' && 
     190                                getAlignment( firstBlock, this.editor.config.useComputedState ) == this.value ? 
     191                                CKEDITOR.TRISTATE_ON : 
     192                                CKEDITOR.TRISTATE_OFF ); 
    195193                } 
    196194        }; 
    197195 
  • _source/core/command.js

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    4949                if ( this.editorFocus )     // Give editor focus if necessary (#4355). 
    5050                        editor.focus(); 
    5151 
     52                if ( this.fire( 'exec' ) === true ) 
     53                        return true; 
     54 
    5255                return ( commandDefinition.exec.call( this, editor, data ) !== false ); 
     56        }; 
     57 
     58        this.refresh = function() 
     59        { 
     60                if ( this.fire( 'refresh' ) === true ) 
     61                        return true; 
     62 
     63                return ( commandDefinition.refresh && commandDefinition.refresh.apply( this, arguments ) !== false ); 
    5364        }; 
    5465 
    5566        CKEDITOR.tools.extend( this, commandDefinition, 
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy