Ticket #3007: 3007.patch

File 3007.patch, 12.2 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,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,newpage,pagebreak,pastefromword,pastetext,preview,print,removeformat,smiley,showblocks,sourcearea,table,specialchar,tab,templates,toolbar,undo,wysiwygarea',
     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,table,specialchar,tab,templates,toolbar,undo,wysiwygarea',
    151151
    152152        /**
    153153         * The theme to be used to build the UI.
  • _source/core/tools.js

     
    3737                },
    3838
    3939                /**
     40                 * Creates a deep copy of an object.
     41                 * Attention: there is no support for deep copy of Array properties and
     42                 * for recursive references.
     43                 * @param {Object} object The object to be cloned.
     44                 * @returns {Object} The object clone.
     45                 * @example
     46                 * var obj =
     47                 *     {
     48                 *         name : 'John',
     49                 *         cars :
     50                 *             {
     51                 *                 Mercedes : { color : 'blue' },
     52                 *                 Porsche : { color : 'red' }
     53                 *             }
     54                 *     };
     55                 * var clone = CKEDITOR.tools.clone( obj );
     56                 * clone.name = 'Paul';
     57                 * clone.cars.Porsche.color = 'silver';
     58                 * alert( obj.name );   // John
     59                 * alert( clone.name ); // Paul
     60                 * alert( obj.cars.Porsche.color );     // red
     61                 * alert( clone.cars.Porsche.color );   // silver
     62                 */
     63                clone : function( object )
     64                {
     65                        var clone = {};
     66
     67                        for ( var propertyName in object )
     68                        {
     69                                var property = object[ propertyName ];
     70
     71                                if ( typeof property == 'object' )
     72                                        property = this.clone( property );
     73
     74                                clone[ propertyName ] = property;
     75                        }
     76
     77                        return clone;
     78                },
     79
     80                /**
    4081                 * Copy the properties from one object to another. By default, properties
    4182                 * already present in the target object <strong>are not</strong> overwritten.
    4283                 * @param {Object} target The object to be extended.
  • _source/lang/en.js

     
    453453                tag_h5 : 'Heading 5',
    454454                tag_h6 : 'Heading 6',
    455455                tag_div : 'Normal (DIV)'
     456        },
     457
     458        font :
     459        {
     460                label : 'Font',
     461                panelTitle : 'Font Style'
     462        },
     463
     464        fontSize :
     465        {
     466                label : 'Size',
     467                panelTitle : 'Font Size'
    456468        }
    457469};
  • _source/plugins/font/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
     6(function()
     7{
     8        function addCombo( editor, comboName, styleType, lang, entries, defaultLabel, styleDefinition )
     9        {
     10                var config = editor.config;
     11                var saveRanges;
     12
     13                // Gets the list of fonts from the settings.
     14                var names = entries.split( ';' ),
     15                        values = [];
     16
     17                // Create style objects for all fonts.
     18                var styles = {};
     19                for ( var i = 0 ; i < names.length ; i++ )
     20                {
     21                        var vars = {};
     22                        var parts = names[ i ].split( '/' );
     23
     24                        var name = names[ i ] = parts[ 0 ];
     25                        vars[ styleType ] = values[ i ] = parts[ 1 ] || name;
     26
     27                        styles[ name ] = new CKEDITOR.style( styleDefinition, vars );
     28                }
     29
     30                editor.ui.addRichCombo( comboName,
     31                        {
     32                                label : lang.label,
     33                                title : lang.panelTitle,
     34                                className : 'cke_' + ( styleType == 'size' ? 'fontSize' : 'font' ),
     35                                multiSelect : false,
     36
     37                                panel :
     38                                {
     39                                        css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
     40                                        className : 'cke_skin_default'
     41                                },
     42
     43                                init : function()
     44                                {
     45                                        this.startGroup( lang.panelTitle );
     46
     47                                        for ( var i = 0 ; i < names.length ; i++ )
     48                                        {
     49                                                var name = names[ i ];
     50
     51                                                // Add the tag entry to the panel list.
     52                                                this.add( name, '<span style="font-' + styleType + ':' + values[ i ] + '">' + name + '</span>', name );
     53                                        }
     54                                },
     55
     56                                onClick : function( value )
     57                                {
     58                                        editor.focus();
     59
     60                                        if ( saveRanges )
     61                                        {
     62                                                editor.getSelection().selectRanges( saveRanges );
     63                                                saveRanges = false;
     64                                        }
     65
     66                                        var style = styles[ value ]
     67
     68                                        if ( this.getValue() == value )
     69                                                style.remove( editor.document );
     70                                        else
     71                                                style.apply( editor.document );
     72                                },
     73
     74                                onRender : function()
     75                                {
     76                                        editor.on( 'selectionChange', function( ev )
     77                                                {
     78                                                        var currentValue = this.getValue();
     79
     80                                                        var elementPath = ev.data.path;
     81
     82                                                        for ( var value in styles )
     83                                                        {
     84                                                                if ( styles[ value ].checkActive( elementPath ) )
     85                                                                {
     86                                                                        if ( value != currentValue )
     87                                                                                this.setValue( value );
     88                                                                        return;
     89                                                                }
     90                                                        }
     91
     92                                                        // If no styles match, just empty it.
     93                                                        this.setValue( '', defaultLabel );
     94                                                },
     95                                                this);
     96                                },
     97
     98                                onOpen : function()
     99                                {
     100                                        if ( CKEDITOR.env.ie )
     101                                        {
     102                                                editor.focus();
     103                                                saveRanges = editor.getSelection().getRanges();
     104                                        }
     105                                },
     106
     107                                onClose : function()
     108                                {
     109                                        saveRanges = null;
     110                                }
     111                        });
     112        }
     113
     114        CKEDITOR.plugins.add( 'font',
     115        {
     116                requires : [ 'richcombo', 'styles' ],
     117
     118                init : function( editor )
     119                {
     120                        var config = editor.config;
     121
     122                        addCombo( editor, 'Font', 'family', editor.lang.font, config.font_names, config.font_defaultLabel, config.font_style );
     123                        addCombo( editor, 'FontSize', 'size', editor.lang.fontSize, config.fontSize_sizes, config.fontSize_defaultLabel, config.fontSize_style );
     124                }
     125        });
     126})();
     127
     128// Font settings.
     129
     130CKEDITOR.config.font_names =
     131        'Arial/Arial, Helvetica, sans-serif;' +
     132        'Comic Sans MS/Comic Sans MS, cursive;' +
     133        'Courier New/Courier New, Courier, monospace;' +
     134        'Georgia/Georgia, serif;' +
     135        'Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;' +
     136        'Tahoma/Tahoma, Geneva, sans-serif;' +
     137        'Times New Roman/Times New Roman, Times, serif;' +
     138        'Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;' +
     139        'Verdana/Verdana, Geneva, sans-serif';
     140
     141CKEDITOR.config.font_defaultLabel = ''
     142CKEDITOR.config.font_style =
     143        {
     144                element         : 'span',
     145                styles          : { 'font-family' : '#(family)' },
     146                overrides       : [ { element : 'font', attributes : { 'face' : null } } ]
     147        };
     148
     149// Font Size setting.
     150
     151CKEDITOR.config.fontSize_sizes =
     152        '8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px';
     153
     154CKEDITOR.config.fontSize_defaultLabel = ''
     155CKEDITOR.config.fontSize_style =
     156        {
     157                element         : 'span',
     158                styles          : { 'font-size' : '#(size)' },
     159                overrides       : [ { element : 'font', attributes : { 'face' : null } } ]
     160        };
  • _source/plugins/format/plugin.js

     
    55
    66CKEDITOR.plugins.add( 'format',
    77{
    8         requires : [ 'richcombo' ],
     8        requires : [ 'richcombo', 'styles' ],
    99
    1010        init : function( editor )
    1111        {
     
    1515                var saveRanges;
    1616
    1717                // Gets the list of tags from the settings.
    18                 var tags = config.format_tags.split( ',' );
     18                var tags = config.format_tags.split( ';' );
    1919
    2020                // Create style objects for all defined styles.
    2121                var styles = {};
     
    105105        }
    106106});
    107107
    108 CKEDITOR.config.format_tags = 'p,h1,h2,h3,h4,h5,h6,pre,address,div';
     108CKEDITOR.config.format_tags = 'p;h1;h2;h3;h4;h5;h6;pre;address;div';
    109109
    110110CKEDITOR.config.format_p                = { element : 'p' };
    111111CKEDITOR.config.format_div              = { element : 'div' };
  • _source/plugins/richcombo/plugin.js

     
    198198
    199199                        list.onClick = function( value, marked )
    200200                                {
    201                                         if ( marked )
    202                                                 me.setValue( value, me._.items[ value ] );
    203                                         else
    204                                                 me.setValue( '' );
    205 
    206201                                        // Move the focus to the main windows, otherwise it will stay
    207202                                        // into the floating panel, even if invisible, and Safari and
    208203                                        // Opera will go a bit crazy.
     
    211206                                        if ( me.onClick )
    212207                                                me.onClick.call( me, value, marked );
    213208
     209                                        if ( marked )
     210                                                me.setValue( value, me._.items[ value ] );
     211                                        else
     212                                                me.setValue( '' );
     213
    214214                                        panel.hide();
    215215                                };
    216216
  • _source/plugins/toolbar/plugin.js

     
    221221        ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
    222222        ['Link','Unlink','Anchor'],     ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
    223223        '/',
    224         ['Format'],     ['ShowBlocks']
     224        ['Format','Font','FontSize'],
     225        ['ShowBlocks']
    225226];
  • _source/skins/default/editor.css

     
    99@import url("panel.css");
    1010@import url("richcombo.css");
    1111@import url("elementspath.css");
     12@import url("presets.css");
    1213
    1314/* Restore the container visibility */
    1415body .cke_container
  • _source/skins/default/panel.css

     
    2424        border-top-right-radius: 3px;
    2525}
    2626
    27 .cke_skin_default.cke_panel.cke_format
    28 {
    29         width: 150px;
    30         height: 170px;
    31 }
    32 
    3327/* Ideally we would use "inherit here"... but you know... IE :( */
    3428.cke_skin_default.cke_panel iframe
    3529{
  • _source/skins/default/presets.css

     
     1/*
     2Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
     3For licensing, see LICENSE.html or http://ckeditor.com/license
     4*/
     5
     6/* "Format" panel size */
     7.cke_skin_default.cke_panel.cke_format
     8{
     9        width: 150px;
     10        height: 170px;
     11}
     12
     13/* "Font" panel size */
     14.cke_skin_default.cke_panel.cke_font
     15{
     16        width: 150px;
     17        height: 170px;
     18}
     19
     20/* "Font Size" panel size */
     21.cke_skin_default.cke_panel.cke_fontSize
     22{
     23        height: 170px;
     24}
     25
     26/* "Font Size" combo width */
     27.cke_skin_default .cke_fontSize .cke_text
     28{
     29        width: 20px;
     30}
  • _source/tests/core/tools.html

     
    125125                        assert.areSame( ' \n \t  test', CKEDITOR.tools.rtrim( ' \n \t  test\n  \t ' ) );
    126126                },
    127127
     128                test_clone : function()
     129                {
     130                        var obj =
     131                        {
     132                                name : 'John',
     133                                cars :
     134                                {
     135                                        Mercedes : { color : 'blue' },
     136                                        Porsche : { color : 'red' }
     137                                }
     138                        };
     139
     140                        var clone = CKEDITOR.tools.clone( obj );
     141
     142                        clone.name = 'Paul';
     143                        clone.cars.Porsche.color = 'silver';
     144
     145                        assert.areSame( 'John', obj.name );
     146                        assert.areSame( 'Paul', clone.name );
     147
     148                        assert.areSame( 'red', obj.cars.Porsche.color );
     149                        assert.areSame( 'silver', clone.cars.Porsche.color );
     150                },
     151
    128152                name : document.title
    129153        };
    130154})() );
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy