Ticket #8749: 8749.patch

File 8749.patch, 8.7 KB (added by Alfonso Martínez de Lizarrondo, 9 years ago)

Proposed patch

  • _source/plugins/dialog/plugin.js

     
    31653165                                CKEDITOR.skins.load( this, 'dialog', onDialogFileLoaded );
    31663166
    31673167                                return null;
     3168                        },
     3169
     3170                        /**
     3171                         * Loads and opens a registered dialog as a child of the current dialog.
     3172                         * @param {String} dialogName The registered name of the dialog.
     3173                         * @param {Function} callbackOpen The function to be invoked after subdialog is opened. Parameter:[ childDialog ]
     3174                         * @param {Function} callbackOK The function to be invoked after OK is pressed in the subdialog. Parameter:[ childDialog ]
     3175                         * @see CKEDITOR.dialog.openDialog
     3176                         * @example
     3177                         * CKEDITOR.instances.editor1.openSubDialog( 'smiley', function() {/ * load data * /}, function() {/ * save data * /} );
     3178                         */
     3179                        openSubDialog : function( dialogName, callbackOpen, callbackOK  )
     3180                        {
     3181                                var onOk = function()
     3182                                {
     3183                                        releaseHandlers( this );
     3184                                        callbackOK && callbackOK( this, this._.parentDialog );
     3185                                };
     3186                                var onCancel = function()
     3187                                {
     3188                                        releaseHandlers( this );
     3189                                };
     3190                                var releaseHandlers = function( dialog )
     3191                                {
     3192                                        dialog.removeListener( 'ok', onOk );
     3193                                        dialog.removeListener( 'cancel', onCancel );
     3194                                };
     3195                                var bindToDialog = function( dialog )
     3196                                {
     3197                                        dialog.on( 'ok', onOk );
     3198                                        dialog.on( 'cancel', onCancel );
     3199                                        callbackOpen && callbackOpen( dialog );
     3200                                };
     3201
     3202                                if ( this._.storedDialogs[ dialogName ] )
     3203                                        bindToDialog( this._.storedDialogs[ dialogName ] );
     3204                                else
     3205                                {
     3206                                        CKEDITOR.on( 'dialogDefinition', function( e )
     3207                                        {
     3208                                                if ( e.data.name != dialogName )
     3209                                                        return;
     3210
     3211                                                var definition = e.data.definition;
     3212
     3213                                                e.removeListener();
     3214                                                definition.onLoad = CKEDITOR.tools.override( definition.onLoad, function( original )
     3215                                                {
     3216                                                        return function()
     3217                                                        {
     3218                                                                definition.onLoad = original;
     3219                                                                if ( typeof original == 'function' )
     3220                                                                        original.call( this );
     3221                                                                bindToDialog( this );
     3222                                                        };
     3223                                                } );
     3224                                        });
     3225                                }
     3226
     3227                                this.openDialog( dialogName );
    31683228                        }
     3229
    31693230                });
    31703231})();
    31713232
  • _source/plugins/docprops/dialogs/docprops.js

     
    99                langCommon = editor.lang.common,
    1010                metaHash = {};
    1111
    12         function getDialogValue( dialogName, callback )
    13         {
    14                 var onOk = function()
    15                 {
    16                         releaseHandlers( this );
    17                         callback( this, this._.parentDialog );
    18                 };
    19                 var releaseHandlers = function( dialog )
    20                 {
    21                         dialog.removeListener( 'ok', onOk );
    22                         dialog.removeListener( 'cancel', releaseHandlers );
    23                 };
    24                 var bindToDialog = function( dialog )
    25                 {
    26                         dialog.on( 'ok', onOk );
    27                         dialog.on( 'cancel', releaseHandlers );
    28                 };
    29                 editor.execCommand( dialogName );
    30                 if ( editor._.storedDialogs.colordialog )
    31                         bindToDialog( editor._.storedDialogs.colordialog );
    32                 else
    33                 {
    34                         CKEDITOR.on( 'dialogDefinition', function( e )
    35                         {
    36                                 if ( e.data.name != dialogName )
    37                                         return;
    38 
    39                                 var definition = e.data.definition;
    40 
    41                                 e.removeListener();
    42                                 definition.onLoad = CKEDITOR.tools.override( definition.onLoad, function( orginal )
    43                                 {
    44                                         return function()
    45                                         {
    46                                                 bindToDialog( this );
    47                                                 definition.onLoad = orginal;
    48                                                 if ( typeof orginal == 'function' )
    49                                                         orginal.call( this );
    50                                         };
    51                                 });
    52                         });
    53                 }
    54         }
    5512        function handleOther()
    5613        {
    5714                var dialog = this.getDialog(),
     
    156113                                        className : 'colorChooser',
    157114                                        onClick : function()
    158115                                        {
    159                                                 var self = this;
    160                                                 getDialogValue( 'colordialog', function( colorDialog )
     116                                                var thisDialog = this.getDialog();
     117
     118                                                thisDialog._.editor.openSubDialog( 'colordialog', function( colorDialog )
    161119                                                {
    162                                                         var dialog = self.getDialog();
    163                                                         dialog.getContentElement( dialog._.currentTabId, id ).setValue( colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue() );
    164                                                 });
     120                                                        // Load
     121                                                        var control = colorDialog.getContentElement( 'picker', 'selectedColor' );
     122                                                        // set initial value
     123                                                        control.setValue( thisDialog.getValueOf( thisDialog._.currentTabId, id) );
     124                                                        control.setInitValue();
     125                                                },
     126                                                        function( colorDialog )
     127                                                {
     128                                                        // OK
     129                                                        var control = colorDialog.getContentElement( 'picker', 'selectedColor' );
     130                                                        thisDialog.getContentElement( thisDialog._.currentTabId, id ).setValue( control.getValue() );
     131
     132                                                        // Reset to empty default
     133                                                        control.setValue( '' );
     134                                                        control.setInitValue();
     135                                                } );
    165136                                        }
    166137                                }
    167138                        ]
  • _source/plugins/tabletools/dialogs/tableCell.js

     
    1515                        spacer = { type : 'html', html : ' ' },
    1616                        rtl = editor.lang.dir == 'rtl';
    1717
    18                 /**
    19                  *
    20                  * @param dialogName
    21                  * @param callback [ childDialog ]
    22                  */
    23                 function getDialogValue( dialogName, callback )
     18                function selectColor()
    2419                {
    25                         var onOk = function()
     20                        var thisDialog = this.getDialog(),
     21                                id = this.id.replace( 'Choose', '' );
     22
     23                        thisDialog._.editor.openSubDialog( 'colordialog', function( colorDialog )
    2624                        {
    27                                 releaseHandlers( this );
    28                                 callback( this, this._.parentDialog );
    29                                 this._.parentDialog.changeFocus();
    30                         };
    31                         var onCancel = function()
     25                                // Load
     26                                var control = colorDialog.getContentElement( 'picker', 'selectedColor' );
     27                                // set initial value
     28                                control.setValue( thisDialog.getValueOf( thisDialog._.currentTabId, id) );
     29                                control.setInitValue();
     30                        },
     31                                function( colorDialog )
    3232                        {
    33                                 releaseHandlers( this );
    34                                 this._.parentDialog.changeFocus();
    35                         };
    36                         var releaseHandlers = function( dialog )
    37                         {
    38                                 dialog.removeListener( 'ok', onOk );
    39                                 dialog.removeListener( 'cancel', onCancel );
    40                         };
    41                         var bindToDialog = function( dialog )
    42                         {
    43                                 dialog.on( 'ok', onOk );
    44                                 dialog.on( 'cancel', onCancel );
    45                         };
    46                         editor.execCommand( dialogName );
    47                         if ( editor._.storedDialogs.colordialog )
    48                                 bindToDialog( editor._.storedDialogs.colordialog );
    49                         else
    50                         {
    51                                 CKEDITOR.on( 'dialogDefinition', function( e )
    52                                 {
    53                                         if ( e.data.name != dialogName )
    54                                                 return;
     33                                // OK
     34                                var control = colorDialog.getContentElement( 'picker', 'selectedColor' );
     35                                thisDialog.getContentElement( thisDialog._.currentTabId, id ).setValue( control.getValue() );
    5536
    56                                         var definition = e.data.definition;
    57 
    58                                         e.removeListener();
    59                                         definition.onLoad = CKEDITOR.tools.override( definition.onLoad, function( orginal )
    60                                         {
    61                                                 return function()
    62                                                 {
    63                                                         bindToDialog( this );
    64                                                         definition.onLoad = orginal;
    65                                                         if ( typeof orginal == 'function' )
    66                                                                 orginal.call( this );
    67                                                 };
    68                                         } );
    69                                 });
    70                         }
     37                                // Reset to empty default
     38                                control.setValue( '' );
     39                                control.setInitValue();
     40                        } );
    7141                }
    7242
    7343                return {
     
    423393                                                                                                                // Stick the element to the bottom (#5587)
    424394                                                                                                                this.getElement().getParent().setStyle( 'vertical-align', 'bottom' );
    425395                                                                                                        },
    426                                                                                                         onClick : function()
    427                                                                                                         {
    428                                                                                                                 var self = this;
    429                                                                                                                 getDialogValue( 'colordialog', function( colorDialog )
    430                                                                                                                 {
    431                                                                                                                         self.getDialog().getContentElement( 'info', 'bgColor' ).setValue(
    432                                                                                                                                 colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue()
    433                                                                                                                         );
    434                                                                                                                 } );
    435                                                                                                         }
     396                                                                                                        onClick : selectColor
    436397                                                                                                }
    437398                                                                                        ]
    438399                                                                                },
     
    477438                                                                                                                // Stick the element to the bottom (#5587)
    478439                                                                                                                this.getElement().getParent().setStyle( 'vertical-align', 'bottom' );
    479440                                                                                                        },
    480                                                                                                         onClick : function()
    481                                                                                                         {
    482                                                                                                                 var self = this;
    483                                                                                                                 getDialogValue( 'colordialog', function( colorDialog )
    484                                                                                                                 {
    485                                                                                                                         self.getDialog().getContentElement( 'info', 'borderColor' ).setValue(
    486                                                                                                                                 colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue()
    487                                                                                                                         );
    488                                                                                                                 } );
    489                                                                                                         }
     441                                                                                                        onClick : selectColor
    490442                                                                                                }
    491443                                                                                        ]
    492444                                                                                }
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy