Ticket #3025: 3025.patch

File 3025.patch, 17.5 KB (added by Frederico Caldeira Knabben, 11 years ago)
  • _source/core/config.js

     
    147147         * config.plugins = 'basicstyles,button,htmldataprocessor,toolbar,wysiwygarea';
    148148         */
    149149
    150         plugins : 'basicstyles,blockquote,button,clipboard,elementspath,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,newpage,pagebreak,pastefromword,pastetext,preview,print,removeformat,smiley,showblocks,sourcearea,stylescombo,table,specialchar,tab,templates,toolbar,undo,wysiwygarea',
     150        plugins : 'basicstyles,blockquote,button,clipboard,colorbutton,elementspath,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,newpage,pagebreak,pastefromword,pastetext,preview,print,removeformat,smiley,showblocks,sourcearea,stylescombo,table,specialchar,tab,templates,toolbar,undo,wysiwygarea',
    151151
    152152        /**
    153153         * The theme to be used to build the UI.
  • _source/lang/en.js

     
    473473        {
    474474                label : 'Size',
    475475                panelTitle : 'Font Size'
     476        },
     477
     478        colorButton :
     479        {
     480                auto : 'Automatic',
     481                more : 'More Colors...'
    476482        }
    477483};
  • _source/plugins/button/plugin.js

     
    185185        {
    186186                var element = CKEDITOR.document.getById( this._.id );
    187187
     188                if ( this._.currentState == state )
     189                        return;
     190
    188191                switch ( state )
    189192                {
    190193                        case CKEDITOR.TRISTATE_ON :
     
    203206                                element.removeClass( 'cke_disabled' );
    204207                                break;
    205208                }
     209
     210                this._.currentState = state;
    206211        }
    207212};
    208213
  • _source/plugins/colorbutton/plugin.js

     
     1/*
     2Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
     3For licensing, see LICENSE.html or http://ckeditor.com/license
     4*/
     5
     6CKEDITOR.plugins.add( 'colorbutton',
     7{
     8        requires : [ 'panelbutton', 'floatpanel', 'styles' ],
     9
     10        init : function( editor )
     11        {
     12                var config = editor.config,
     13                        lang = editor.lang.colorButton;
     14
     15                var saveRanges,
     16                        clickFn;
     17
     18                addButton( 'TextColor', 'fore' );
     19                addButton( 'BGColor', 'back' );
     20
     21                function addButton( name, type )
     22                {
     23                        editor.ui.add( name, CKEDITOR.UI_PANELBUTTON,
     24                                {
     25                                        label : lang.label,
     26                                        title : lang.panelTitle,
     27                                        className : 'cke_button_' + name.toLowerCase(),
     28
     29                                        panel :
     30                                        {
     31                                                css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
     32                                                className : 'cke_skin_default'
     33                                        },
     34
     35                                        onBlock : function( panel, blockName )
     36                                        {
     37                                                var block = panel.addBlock( blockName );
     38                                                block.autoSize = true;
     39                                                block.element.addClass( 'cke_colorblock' );
     40                                                block.element.setHtml( renderColors( panel, type ) );
     41                                        },
     42
     43                                        onOpen : function()
     44                                        {
     45                                                if ( CKEDITOR.env.ie )
     46                                                {
     47                                                        editor.focus();
     48                                                        saveRanges = editor.getSelection().getRanges();
     49                                                }
     50                                        },
     51
     52                                        onClose : function()
     53                                        {
     54                                                saveRanges = null;
     55                                        }
     56                                });
     57                }
     58
     59
     60                function renderColors( panel, type )
     61                {
     62                        var output = [],
     63                                colors = CKEDITOR.config.colorButton_colors.split( ',' );
     64
     65                        if ( !clickFn )
     66                        {
     67                                clickFn = CKEDITOR.tools.addFunction( function( color, type )
     68                                        {
     69                                                if ( color == '?' )
     70                                                {
     71                                                        // TODO : Implement the colors dialog.
     72                                                        // editor.openDialog( '' );
     73                                                        return;
     74                                                }
     75
     76                                                editor.focus();
     77
     78                                                if ( saveRanges )
     79                                                {
     80                                                        editor.getSelection().selectRanges( saveRanges );
     81                                                        saveRanges = false;
     82                                                }
     83
     84                                                panel.hide();
     85
     86                                                var style = new CKEDITOR.style( config['colorButton_' + type + 'Style'], { color : color || '#000' } );
     87
     88                                                if ( color )
     89                                                        style.apply( editor.document );
     90                                                else
     91                                                        style.remove( editor.document );
     92                                        });
     93                        }
     94
     95                        // Render the "Automatic" button.
     96                        output.push(
     97                                '<a class="cke_colorauto"' +
     98                                        ' onclick="CKEDITOR.tools.callFunction(', clickFn, ',null,\'', type, '\');"' +
     99                                        ' href="javascript:void(\'', lang.auto, '\')">' +
     100                                        '<table cellspacing=0 cellpadding=0 width="100%">' +
     101                                                '<tr>' +
     102                                                        '<td>' +
     103                                                                '<span class="cke_colorbox" style="background-color:#000"></span>' +
     104                                                        '</td>' +
     105                                                        '<td colspan=7 align=center>',
     106                                                                lang.auto,
     107                                                        '</td>' +
     108                                                '</tr>' +
     109                                        '</table>' +
     110                                '</a>' +
     111                                '<table cellspacing=0 cellpadding=0 width="100%">' );
     112
     113                        // Render the color boxes.
     114                        for ( var i = 0 ; i < colors.length ; i++ )
     115                        {
     116                                if ( ( i % 8 ) == 0 )
     117                                        output.push( '</tr><tr>' );
     118
     119                                var color = colors[ i ];
     120                                output.push(
     121                                        '<td>' +
     122                                                '<a class="cke_colorbox"' +
     123                                                        ' onclick="CKEDITOR.tools.callFunction(', clickFn, ',\'#', color, '\',\'', type, '\');"' +
     124                                                        ' href="javascript:void(\'', color, '\')">' +
     125                                                        '<span class="cke_colorbox" style="background-color:#', color, '"></span>' +
     126                                                '</a>' +
     127                                        '</td>' );
     128                        }
     129
     130                        // Render the "More Colors" button.
     131                        if ( config.colorButton_enableMore )
     132                        {
     133                                output.push(
     134                                        '</tr>' +
     135                                        '<tr>' +
     136                                                '<td colspan=8 align=center>' +
     137                                                        '<a class="cke_colormore"' +
     138                                                                ' onclick="CKEDITOR.tools.callFunction(', clickFn, ',\'?\',\'', type, '\');"' +
     139                                                                ' href="javascript:void(\'', lang.more, '\')">',
     140                                                                lang.more,
     141                                                        '</a>' +
     142                                                '</td>' );      // It is later in the code.
     143                        }
     144
     145                        output.push( '</tr></table>' );
     146
     147                        return output.join( '' );
     148                }
     149        }
     150});
     151
     152CKEDITOR.config.colorButton_enableMore = false;
     153CKEDITOR.config.colorButton_colors =
     154        '000,930,330,030,036,000080,339,333,' +
     155        '800000,F60,808000,808080,008080,00F,669,808080,' +
     156        'F00,F90,9C0,396,3CC,36F,800080,999,' +
     157        'F0F,FC0,FF0,0F0,0FF,0CF,936,C0C0C0,' +
     158        'F9C,FC9,FF9,CFC,CFF,9CF,C9F,FFF';
     159
     160CKEDITOR.config.colorButton_foreStyle =
     161        {
     162                element         : 'span',
     163                styles          : { 'color' : '#(color)' },
     164                overrides       : [ { element : 'font', attributes : { 'color' : null } } ]
     165        };
     166
     167CKEDITOR.config.colorButton_backStyle =
     168        {
     169                element         : 'span',
     170                styles          : { 'background-color' : '#(color)' }
     171        };
  • _source/plugins/floatpanel/plugin.js

     
    7373
    7474                        showBlock : function( name, offsetParent, corner, offsetX, offsetY )
    7575                        {
    76                                 this._.panel.showBlock( name );
     76                                var panel = this._.panel,
     77                                        block = panel.showBlock( name );
    7778
    7879                                var element = this.element,
    7980                                        iframe = this._.iframe,
     
    9596                                                display : ''
    9697                                        });
    9798
     99                                if ( block.autoSize )
     100                                {
     101                                        function setHeight()
     102                                        {
     103                                                element.setStyle( 'height', block.element.$.scrollHeight + 'px' );
     104                                        }
     105                                       
     106                                        if ( !CKEDITOR.env.gecko || panel.isLoaded )
     107                                                setHeight();
     108                                        else
     109                                                panel.onLoad = setHeight;
     110                                }
     111                                else
     112                                        element.removeStyle( 'height' );
     113
    98114                                // Configure the IFrame blur event. Do that only once.
    99115                                if ( !this._.blurSet )
    100116                                {
  • _source/plugins/panel/plugin.js

     
    123123                                                '</body>' +
    124124                                        '<\/html>' );
    125125                                doc.$.close();
     126                               
     127                                var win = doc.getWindow();
    126128
    127129                                // Register the CKEDITOR global.
    128                                 doc.getWindow().$.CKEDITOR = CKEDITOR;
     130                                win.$.CKEDITOR = CKEDITOR;
    129131
     132                                win.on( 'load', function( ev )
     133                                        {
     134                                                this.isLoaded = true;
     135                                                if ( this.onLoad )
     136                                                        this.onLoad();
     137                                        },
     138                                        this);
     139
    130140                                holder = doc.getBody();
    131141                        }
    132142                        else
     
    160170                this._.currentBlock = block;
    161171
    162172                block.show();
     173               
     174                return block;
    163175        }
    164176};
    165177
  • _source/plugins/panelbutton/plugin.js

     
     1/*
     2Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
     3For licensing, see LICENSE.html or http://ckeditor.com/license
     4*/
     5
     6CKEDITOR.plugins.add( 'panelbutton',
     7{
     8        requires : [ 'button' ],
     9        beforeInit : function( editor )
     10        {
     11                editor.ui.addHandler( CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler );
     12        }
     13});
     14
     15/**
     16 * Button UI element.
     17 * @constant
     18 * @example
     19 */
     20CKEDITOR.UI_PANELBUTTON = 4;
     21
     22CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass(
     23{
     24        $ : function( definition )
     25        {
     26                // Copy all definition properties to this object.
     27                CKEDITOR.tools.extend( this, definition,
     28                        // Set defaults.
     29                        {
     30                                title : definition.label
     31                        });
     32
     33                // We don't want the panel definition in this object.
     34                var panelDefinition = this.panel;
     35                delete this.panel;
     36
     37                this.document = ( panelDefinition
     38                                                        && panelDefinition.parent
     39                                                        && panelDefinition.parent.getDocument() )
     40                                                || CKEDITOR.document;
     41                this._ =
     42                {
     43                        panelDefinition : panelDefinition
     44                };
     45        },
     46       
     47        statics :
     48        {
     49                handler :
     50                {
     51                        create : function( definition )
     52                        {
     53                                return new CKEDITOR.ui.panelButton( definition );
     54                        }
     55                }
     56        },
     57       
     58        proto :
     59        {
     60                render : function( editor, output )
     61                {
     62                        var id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber();
     63
     64                        var instance =
     65                        {
     66                                id : id,
     67                                focus : function()
     68                                {
     69                                        var element = CKEDITOR.document.getById( id );
     70                                        element.focus();
     71                                },
     72                                execute : function()
     73                                {
     74                                        this.button.click( editor );
     75                                }
     76                        };
     77
     78                        var clickFn = CKEDITOR.tools.addFunction( function( $element )
     79                                {
     80                                        var _ = this._;
     81
     82                                        this.createPanel();
     83
     84                                        if ( _.on )
     85                                        {
     86                                                _.panel.hide();
     87                                                return;
     88                                        }
     89
     90                                        _.panel.showBlock( this._.id, new CKEDITOR.dom.element( $element ), 4 );
     91                                },
     92                                this );
     93
     94                        var label = this.label || '';
     95
     96                        var classes = 'cke_button cke_off';
     97
     98                        if ( this.className )
     99                                classes += ' ' + this.className;
     100
     101                        if ( CKEDITOR.env.ie )
     102                                label += '\ufeff';
     103
     104                        output.push(
     105                                '<a id="', id, '"' +
     106                                        ' class="', classes, '" href="javascript:void(\'', ( this.label || '' ).replace( "'", '' ), '\')"' +
     107                                        ' title="', this.title, '"' +
     108                                        ' tabindex="-1"' +
     109                                        ' hidefocus="true"' );
     110
     111                        // Some browsers don't cancel key events in the keydown but in the
     112                        // keypress.
     113                        // TODO: Check if really needed for Gecko+Mac.
     114                        if ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.mac ) )
     115                        {
     116                                output.push(
     117                                        ' onkeypress="return false;"' );
     118                        }
     119
     120                        // With Firefox, we need to force the button to redraw, otherwise it
     121                        // will remain in the focus state.
     122                        if ( CKEDITOR.env.gecko )
     123                        {
     124                                output.push(
     125                                        ' onblur="this.style.cssText = this.style.cssText;"' );
     126                        }
     127
     128                        output.push(
     129//                                      ' onkeydown="return CKEDITOR.ui.button._.keydown(', index, ', event);"' +
     130                                        ' onclick="CKEDITOR.tools.callFunction(', clickFn, ', this);">' +
     131                                                '<span class="cke_icon"></span>' +
     132                                                '<span class="cke_label">', label, '</span>' +
     133                                                '<span class="cke_buttonarrow"></span>' +
     134                                '</a>' );
     135
     136                        return instance;
     137                },
     138               
     139                createPanel : function()
     140                {
     141                        var _ = this._;
     142
     143                        if ( _.panel )
     144                                return;
     145                       
     146                        var panelDefinition = this._.panelDefinition || {},
     147                                panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
     148                                panel = this._.panel = new CKEDITOR.ui.floatPanel( panelParentElement, panelDefinition ),
     149                                me = this;                     
     150
     151                        panel.onShow = function()
     152                                {
     153                                        if ( me.className )
     154                                                this.element.addClass( me.className );
     155
     156                                        me.document.getById( _.id ).addClass( 'cke_on');
     157
     158                                        _.on = 1;
     159
     160                                        if ( me.onOpen )
     161                                                me.onOpen();
     162                                };
     163
     164                        panel.onHide = function()
     165                                {
     166                                        if ( me.className )
     167                                                this.element.removeClass( me.className );
     168
     169                                        me.document.getById( _.id ).removeClass( 'cke_on');
     170
     171                                        _.on = 0;
     172
     173                                        if ( me.onClose )
     174                                                me.onClose();
     175                                };
     176                       
     177                        if ( this.onBlock )
     178                                this.onBlock( panel, _.id );
     179                },
     180
     181                setState : CKEDITOR.ui.button.prototype.setState
     182        }
     183});
  • _source/plugins/toolbar/plugin.js

     
    222222        ['Link','Unlink','Anchor'],     ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
    223223        '/',
    224224        ['Styles','Format','Font','FontSize'],
     225        ['TextColor','BGColor'],
    225226        ['ShowBlocks']
    226227];
  • _source/skins/default/panel.css

     
    254254        margin-top: 3px;
    255255        margin-bottom: 3px;
    256256}
     257
     258.cke_skin_default.cke_panel.cke_button_textcolor,
     259.cke_skin_default.cke_panel.cke_button_bgcolor
     260{
     261        width: 150px;
     262        height: 135px;
     263}
     264
     265.cke_colorblock
     266{
     267        padding: 3px;
     268    font-size: 11px;
     269    font-family: 'Microsoft Sans Serif', Tahoma, Arial, Verdana, Sans-Serif;
     270}
     271
     272.cke_colorblock,
     273.cke_colorblock a
     274{
     275        text-decoration: none;
     276        color: #000;
     277}
     278
     279span.cke_colorbox
     280{
     281        width: 10px;
     282        height: 10px;
     283    border: #808080 1px solid;
     284        float: left;
     285}
     286
     287a.cke_colorbox
     288{
     289    border: #fff 1px solid;
     290    padding: 2px;
     291    float: left;
     292}
     293
     294a:hover.cke_colorbox
     295{
     296    border: #316ac5 1px solid;
     297    background-color: #dff1ff;
     298}
     299
     300a.cke_colorauto,
     301a.cke_colormore
     302{
     303    border: #fff 1px solid;
     304    padding: 2px;
     305    display: block;
     306}
     307
     308a:hover.cke_colorauto,
     309a:hover.cke_colormore
     310{
     311    border: #316ac5 1px solid;
     312    background-color: #dff1ff;
     313}
     314
  • _source/skins/default/toolbar.css

     
    144144        padding-top:3px;
    145145}
    146146
     147.cke_skin_default a.cke_button .cke_buttonarrow
     148{
     149        float: left;
     150        height: 18px;
     151        width: 8px;
     152        background-position: right center;
     153        background-image: url(images/toolbar.buttonarrow.gif);
     154        background-repeat: no-repeat;
     155}
     156
    147157.cke_skin_default.cke_rtl a.cke_button .cke_label
    148158{
    149159        float: right;
     
    299309        background-position: 0 -672px;
    300310}
    301311
     312.cke_skin_default a.cke_button_textcolor .cke_icon
     313{
     314        background-position: 0 -704px;
     315}
     316
     317.cke_skin_default a.cke_button_bgcolor .cke_icon
     318{
     319        background-position: 0 -720px;
     320}
     321
    302322.cke_skin_default a.cke_button_form .cke_icon
    303323{
    304324        background-position: 0 -752px;
  • ckeditor.pack

     
    4343                'CKEDITOR.STYLE_BLOCK' : 1,
    4444                'CKEDITOR.STYLE_INLINE' : 2,
    4545                'CKEDITOR.STYLE_OBJECT' : 3,
     46                'CKEDITOR.UI_PANELBUTTON' : 4,
    4647                'CKEDITOR.SELECTION_NONE' : 1,
    4748                'CKEDITOR.SELECTION_TEXT' : 2,
    4849                'CKEDITOR.SELECTION_ELEMENT' : 3,
     
    120121                                        '_source/plugins/blockquote/plugin.js',
    121122                                        '_source/plugins/button/plugin.js',
    122123                                        '_source/plugins/clipboard/plugin.js',
     124                                        '_source/plugins/colorbutton/plugin.js',
    123125                                        '_source/plugins/elementspath/plugin.js',
    124126                                        '_source/plugins/find/plugin.js',
    125127                                        '_source/plugins/flash/plugin.js',
     128                                        '_source/plugins/font/plugin.js',
    126129                                        '_source/plugins/format/plugin.js',
     130                                        '_source/plugins/forms/plugin.js',
    127131                                        '_source/plugins/horizontalrule/plugin.js',
    128132                                        '_source/plugins/htmldataprocessor/plugin.js',
    129133                                        '_source/plugins/image/plugin.js',
     
    142146                                        '_source/plugins/smiley/plugin.js',
    143147                                        '_source/plugins/showblocks/plugin.js',
    144148                                        '_source/plugins/sourcearea/plugin.js',
     149                                        '_source/plugins/stylescombo/plugin.js',
    145150                                        '_source/plugins/table/plugin.js',
    146151                                        '_source/plugins/specialchar/plugin.js',
    147152                                        '_source/plugins/tab/plugin.js',
     
    151156                                        '_source/plugins/wysiwygarea/plugin.js',
    152157                                        '_source/plugins/styles/plugin.js',
    153158                                        '_source/plugins/domiterator/plugin.js',
     159                                        '_source/plugins/panelbutton/plugin.js',
     160                                        '_source/plugins/floatpanel/plugin.js',
    154161                                        '_source/plugins/selection/plugin.js',
    155162                                        '_source/plugins/fakeobjects/plugin.js',
    156163                                        '_source/plugins/richcombo/plugin.js',
    157164                                        '_source/plugins/htmlwriter/plugin.js',
    158165                                        '_source/plugins/dialog/plugin.js',
    159166                                        '_source/plugins/editingblock/plugin.js',
    160                                         '_source/plugins/floatpanel/plugin.js',
     167                                        '_source/plugins/panel/plugin.js',
    161168                                        '_source/plugins/listblock/plugin.js',
    162169                                        '_source/plugins/dialogui/plugin.js',
    163                                         '_source/plugins/panel/plugin.js',
    164170                                        '_source/skins/default/skin.js',
    165171                                        '_source/themes/default/theme.js'
    166172                                ]
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy