Changeset 6235


Ignore:
Timestamp:
12/16/10 23:27:53 (3 years ago)
Author:
wwalc
Message:

Merged log:CKEditor/trunk@6085:6150

Location:
CKEditor/branches/versions/3.4.x
Files:
1 deleted
30 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/branches/versions/3.4.x

  • CKEditor/branches/versions/3.4.x/CHANGES.html

    r6234 r6235  
    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    22<!-- 
    33Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. 
     
    3636        </h1> 
    3737        <h3> 
    38                         CKEditor 3.5 (SVN)</h3> 
     38                        CKEditor 3.4.3 (SVN)</h3> 
    3939        <p> 
    4040                        New features:</p> 
     
    4545                        Fixed issues:</p> 
    4646        <ul> 
    47                 <li><a href="http://dev.ckeditor.com/ticket/6419">#6419</a> : IE: List creation by merging problem.</li> 
    48                 <li><a href="http://dev.ckeditor.com/ticket/5599">#5599</a> : Labels for special characters need to be resourced.</li> 
    49         </ul> 
    50         <h3> 
    51                         CKEditor 3.4.3 (SVN)</h3> 
    52         <p> 
    53                         New features:</p> 
    54         <ul> 
    55                 <li></li> 
    56         </ul> 
    57         <p> 
    58                         Fixed issues:</p> 
    59         <ul> 
     47                <li><a href="http://dev.ckeditor.com/ticket/6554">#6554</a> : Webkit: cannot type after inserting Page Break.</li> 
    6048                <li><a href="http://dev.ckeditor.com/ticket/6569">#6569</a> : Indentation now honors text direction of the only item.</li> 
    6149                <li><a href="http://dev.ckeditor.com/ticket/6579">#6579</a> : The jQuery adapter wasn't working properly tunning on incompatible environments.</li> 
    6250                <li><a href="http://dev.ckeditor.com/ticket/6644">#6644</a> : Restrict onmousedown handler to the toolbar area.</li> 
    6351                <li><a href="http://dev.ckeditor.com/ticket/6656">#6656</a> : Panelbutton's buttons became active when clicking on source.</li> 
    64                 <li><a href="http://dev.ckeditor.com/ticket/5404">#5404</a> : Whitespaces (NBSP) were incorrectly added into empty table cells and list items.</li> 
     52                <li><a href="http://dev.ckeditor.com/ticket/6248">#6248</a> : Whitespaces (NBSP) were incorrectly added into empty table cells and list items.</li> 
     53                <li><a href="http://dev.ckeditor.com/ticket/6575">#6575</a> : Tabs disappearing in Link dialog after specific action sequence.</li> 
     54                <li><a href="http://dev.ckeditor.com/ticket/6510">#6510</a> : Margin mirroring doesn't respect style configuration.</li> 
     55                <li><a href="http://dev.ckeditor.com/ticket/6471">#6471</a> : BIDI: Pressing decrease indent in an RTL bulleted list causes incorrect behaviour.</li> 
     56                <li><a href="http://dev.ckeditor.com/ticket/6479">#6479</a> : BIDI: Language direction is not being preserved when pressing Enter after a paragraph format has been applied.</li> 
     57                <li><a href="http://dev.ckeditor.com/ticket/6670">#6670</a> : BIDI: Indent & List icons are not reversed when we apply RTL direction to a paragraph with any of Paragraph Formatting options.</li> 
     58                <li><a href="http://dev.ckeditor.com/ticket/6640">#6640</a> : Floating panels are now being closed when switching modes.</li> 
     59                <li><a href="http://dev.ckeditor.com/ticket/4790">#4790</a> : Remove list with multiple items in enterBr doesn't preserve line-breaks.</li> 
     60                <li><a href="http://dev.ckeditor.com/ticket/6297">#6297</a> : Floated inline elements are no anymore acting in behavior of blocks.</li> 
     61                <li><a href="http://dev.ckeditor.com/ticket/6171">#6171</a> : [Firefox] Open rich combo scrolls host page to top when editor has vertical scrollbar.</li> 
     62                <li><a href="http://dev.ckeditor.com/ticket/6330">#6330</a> : List bullet form MS Word with Roman numbering are not preserved.</li> 
     63                <li><a href="http://dev.ckeditor.com/ticket/6720">#6720</a> : Attribute protection might detect wrong elements.</li> 
     64                <li><a href="http://dev.ckeditor.com/ticket/6580">#6580</a> : [IE9] Flash dialog doesn't get filled up.</li> 
     65                <li><a href="http://dev.ckeditor.com/ticket/6447">#6447</a> : Outdent list with "indentClasses" config doesn't work.</li> 
     66                <li><a href="http://dev.ckeditor.com/ticket/5894">#5894</a> : Custom buttons added at bottom of dialogs don't expand to include their contents.</li> 
     67                <li><a href="http://dev.ckeditor.com/ticket/6513">#6513</a> : Wrong ARIA attributes created on list options of "Styles" rich combo.</li> 
     68                <li><a href="http://dev.ckeditor.com/ticket/6150">#6150</a> : [Safari] Color dialog was broken.</li> 
     69                <li><a href="http://dev.ckeditor.com/ticket/6629">#6629</a> : Pre-formatted block is not anymore been listed as unexitable element.</li> 
    6570        </ul> 
    6671        <h3> 
  • CKEditor/branches/versions/3.4.x/_source/core/config.js

    r6043 r6235  
    1 /* 
     1/* 
    22Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. 
    33For licensing, see LICENSE.html or http://ckeditor.com/license 
     
    350350        /** 
    351351         * List of regular expressions to be executed over the input HTML, 
    352          * indicating code that must stay untouched. 
     352         * indicating HTML source code that matched must <strong>not</strong> present in WYSIWYG mode for editing. 
    353353         * @type Array 
    354354         * @default [] (empty array) 
  • CKEditor/branches/versions/3.4.x/_source/core/dom/document.js

    r4904 r6235  
    151151                getElementsByTag : function( tagName, namespace ) 
    152152                { 
    153                         if ( !CKEDITOR.env.ie && namespace ) 
     153                        if ( !( CKEDITOR.env.ie && ! ( document.documentMode > 8 ) ) && namespace ) 
    154154                                tagName = namespace + ':' + tagName; 
    155155                        return new CKEDITOR.dom.nodeList( this.$.getElementsByTagName( tagName ) ); 
  • CKEditor/branches/versions/3.4.x/_source/core/dom/domobject.js

    r6234 r6235  
    168168         * Sets a data slot value for this object. These values are shared by all 
    169169         * instances pointing to that same DOM object. 
    170          * <strong>Note:</strong> The created data slot is only guarantied to be available on this unique dom node, 
    171          * thus any wish to continue access it from other element clones (either created by clone node or from innerHtml) 
    172          * will fail, for such usage, please use {@link CKEDITOR.dom.element::setAttribute} instead. 
    173170         * @name CKEDITOR.dom.domObject.prototype.setCustomData 
    174171         * @function 
  • CKEditor/branches/versions/3.4.x/_source/core/dom/element.js

    r6043 r6235  
    1 /* 
     1/* 
    22Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. 
    33For licensing, see LICENSE.html or http://ckeditor.com/license 
     
    614614                        var nodeName = this.$.nodeName.toLowerCase(); 
    615615 
    616                         if ( CKEDITOR.env.ie ) 
     616                        if ( CKEDITOR.env.ie && ! ( document.documentMode > 8 ) ) 
    617617                        { 
    618618                                var scopeName = this.$.scopeName; 
     
    721721                        var thisLength = thisAttribs.length, 
    722722                                otherLength = otherAttribs.length; 
    723  
    724                         if ( !CKEDITOR.env.ie && thisLength != otherLength ) 
    725                                 return false; 
    726723 
    727724                        for ( var i = 0 ; i < thisLength ; i++ ) 
  • CKEditor/branches/versions/3.4.x/_source/core/dom/node.js

    r6234 r6235  
    108108                        var $clone = this.$.cloneNode( includeChildren ); 
    109109 
    110                         var removeIds = function( node ) 
    111                         { 
    112                                 if ( node.nodeType != CKEDITOR.NODE_ELEMENT ) 
    113                                         return; 
    114  
    115                                 if ( !cloneId ) 
    116                                         node.removeAttribute( 'id', false ); 
    117                                 node.removeAttribute( '_cke_expando', false ); 
    118  
    119                                 if ( includeChildren ) 
    120                                 { 
     110                        if ( !cloneId ) 
     111                        { 
     112                                var removeIds = function( node ) 
     113                                { 
     114                                        if ( node.nodeType != CKEDITOR.NODE_ELEMENT ) 
     115                                                return; 
     116 
     117                                        node.removeAttribute( 'id', false ) ; 
     118                                        node.removeAttribute( '_cke_expando', false ) ; 
     119 
    121120                                        var childs = node.childNodes; 
    122                                         for ( var i=0; i < childs.length; i++ ) 
     121                                        for ( var i=0 ; i < childs.length ; i++ ) 
    123122                                                removeIds( childs[ i ] ); 
    124                                 } 
    125                         }; 
    126  
    127                         // The "id" attribute should never be cloned to avoid duplication. 
    128                         removeIds( $clone ); 
     123                                }; 
     124 
     125                                // The "id" attribute should never be cloned to avoid duplication. 
     126                                removeIds( $clone ); 
     127                        } 
    129128 
    130129                        return new CKEDITOR.dom.node( $clone ); 
     
    661660                }, 
    662661 
     662                /** 
     663                 * Checks is this node is read-only (should not be changed). It 
     664                 * additionaly returns the element, if any, which defines the read-only 
     665                 * state of this node. It may be the node itself or any of its parent 
     666                 * nodes. 
     667                 * @returns {CKEDITOR.dom.element|Boolean} An element containing 
     668                 *              read-only attributes or "false" if none is found. 
     669                 * @since 3.5 
     670                 * @example 
     671                 * // For the following HTML: 
     672                 * // <div contenteditable="false">Some <b>text</b></div> 
     673                 *  
     674                 * // If "ele" is the above <div> 
     675                 * ele.getReadOnlyRoot();  // the <div> element 
     676                 * 
     677                 * // If "ele" is the above <b> 
     678                 * ele.getReadOnlyRoot();  // the <div> element 
     679                 */ 
    663680                isReadOnly : function() 
    664681                { 
  • CKEditor/branches/versions/3.4.x/_source/core/dom/walker.js

    r6034 r6235  
    335335                'table-cell' : 1, 
    336336                'table-caption' : 1 
    337         }, 
    338         blockBoundaryNodeNameMatch = { hr : 1 }; 
     337        }; 
    339338 
    340339        CKEDITOR.dom.element.prototype.isBlockBoundary = function( customNodeNames ) 
    341340        { 
    342                 var nodeNameMatches = CKEDITOR.tools.extend( {}, 
    343                                                                                                         blockBoundaryNodeNameMatch, customNodeNames || {} ); 
    344  
    345                 return blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ] || 
    346                         nodeNameMatches[ this.getName() ]; 
     341                var nodeNameMatches = CKEDITOR.tools.extend( {}, CKEDITOR.dtd.$block, customNodeNames || {} ); 
     342 
     343                // Don't consider floated formatting as block boundary, fall back to dtd check in that case. (#6297)   
     344                return this.getComputedStyle( 'float' ) == 'none' && blockBoundaryDisplayMatch[ this.getComputedStyle( 'display' ) ] 
     345                                || nodeNameMatches[ this.getName() ]; 
    347346        }; 
    348347 
  • CKEditor/branches/versions/3.4.x/_source/lang/de.js

    r5887 r6235  
    722722                title           : 'Über CKEditor', 
    723723                dlgTitle        : 'Über CKEditor', 
    724                 moreInfo        : 'Für Informationen Liztenzbestimmungen besuchen sie bitte unsere Webseite:', 
     724                moreInfo        : 'Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:', 
    725725                copy            : 'Copyright &copy; $1. Alle Rechte vorbehalten.' 
    726726        }, 
  • CKEditor/branches/versions/3.4.x/_source/plugins/bidi/plugin.js

    r6083 r6235  
    4949                var editor = evt.editor, 
    5050                        chromeRoot = editor.container.getChild( 1 ), 
    51                         directionNode = getElementForDirection( evt.data.path.lastElement ); 
     51                        directionNode = evt.data.path.block || evt.data.path.blockLimit; 
    5252 
    5353                if ( directionNode && editor.lang.dir != directionNode.getComputedStyle( 'direction' ) ) 
     
    124124                // like a mirror. (#5910) 
    125125                if ( dir != dirBefore ) 
    126                         editor.fire( 'dirChanged', element ); 
     126                { 
     127                        editor.fire( 'dirChanged', 
     128                                { 
     129                                        node : element, 
     130                                        dir : dir 
     131                                } ); 
     132                } 
    127133 
    128134                editor.forceNextSelectionCheck(); 
  • CKEditor/branches/versions/3.4.x/_source/plugins/colordialog/dialogs/colordialog.js

    r6002 r6235  
    237237                var table = new $el( 'table' ); 
    238238                createColorTable(); 
     239                var html = table.getHtml(); 
    239240 
    240241                var numbering = function( id ) 
     
    271272                                                                { 
    272273                                                                        type : 'html', 
    273                                                                         html : '<table role="listbox" aria-labelledby="' + tableLabelId + '" onmouseout="CKEDITOR.tools.callFunction( ' + onMouseout + ' );">' + table.getHtml() + '</table>' + 
    274                                                                                                 '<span id="' + tableLabelId + '" class="cke_voice_label">' + lang.options +'</span>', 
     274                                                                        html :  '<table role="listbox" aria-labelledby="' + tableLabelId + '" onmouseout="CKEDITOR.tools.callFunction( ' + onMouseout + ' );">' + 
     275                                                                                        ( !CKEDITOR.env.webkit ? html : '' ) + 
     276                                                                                '</table><span id="' + tableLabelId + '" class="cke_voice_label">' + lang.options +'</span>', 
    275277                                                                        onLoad : function() 
    276278                                                                        { 
    277279                                                                                var table = CKEDITOR.document.getById( this.domId ); 
    278280                                                                                table.on( 'mouseover', updateHighlight ); 
     281                                                                                // In WebKit, the table content must be inserted after this event call (#6150) 
     282                                                                                CKEDITOR.env.webkit && table.setHtml( html ); 
    279283                                                                        }, 
    280284                                                                        focus: function() 
  • CKEditor/branches/versions/3.4.x/_source/plugins/dialog/plugin.js

    r6084 r6235  
    10301030                { 
    10311031                        var tab = this._.tabs[id] && this._.tabs[id][0]; 
    1032                         if ( !tab || this._.pageCount == 1 ) 
     1032                        if ( !tab || this._.pageCount == 1 || !tab.isVisible() ) 
    10331033                                return; 
    10341034                        // Switch to other tab first when we're hiding the active tab. 
  • CKEditor/branches/versions/3.4.x/_source/plugins/floatpanel/plugin.js

    r6043 r6235  
    6161                                dir : editor.lang.dir 
    6262                        }; 
     63 
     64                        editor.on( 'mode', function(){ this.hide(); }, this ); 
    6365                }, 
    6466 
     
    124126                                element.setStyles( 
    125127                                        { 
    126                                                 top : 0, 
     128                                                top : top + 'px', 
    127129                                                left: 0, 
    128130                                                display : '' 
    129131                                        }); 
     132 
    130133                                // Don't use display or visibility style because we need to 
    131134                                // calculate the rendering layout later and focus the element. 
  • CKEditor/branches/versions/3.4.x/_source/plugins/htmldataprocessor/plugin.js

    r6234 r6235  
    1 /* 
     1/* 
    22Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. 
    33For licensing, see LICENSE.html or http://ckeditor.com/license 
     
    273273        } 
    274274 
    275         var protectAttributeRegex = /<((?:a|area|img|input)[\s\S]*?\s)((href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))([^>]*)>/gi, 
     275        var protectAttributeRegex = /<((?:a|area|img|input)\b[\s\S]*?\s)((href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))([^>]*)>/gi, 
    276276                findSavedSrcRegex = /\s_cke_saved_src\s*=/; 
    277277 
     
    502502/** 
    503503 * Whether to force using "&" instead of "&amp;amp;" in elements attributes 
    504  * values. It's not recommended to change this setting for compliance with the 
    505  * W3C XHTML 1.0 standards 
    506  * (<a href="http://www.w3.org/TR/xhtml1/#C_12">C.12, XHTML 1.0</a>). 
     504 * values, it's not recommended to change this setting for compliance with the 
     505 * W3C XHTML 1.0 standards (<a href="http://www.w3.org/TR/xhtml1/#C_12">C.12, XHTML 1.0</a>). 
     506 * @name CKEDITOR.config.forceSimpleAmpersand 
    507507 * @type Boolean 
    508508 * @default false 
  • CKEditor/branches/versions/3.4.x/_source/plugins/image/dialogs/image.js

    r6002 r6235  
    11491149                                                        setup : function( type, element ) 
    11501150                                                        { 
    1151                                                                 if ( type == LINK ) 
    1152                                                                         this.setValue( element.getAttribute( 'target' ) ); 
     1151                                                                this.setValue( element.getAttribute( 'target' ) || '' ); 
    11531152                                                        }, 
    11541153                                                        commit : function( type, element ) 
  • CKEditor/branches/versions/3.4.x/_source/plugins/indent/plugin.js

    r6234 r6235  
    1 /* 
     1/* 
    22Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. 
    33For licensing, see LICENSE.html or http://ckeditor.com/license 
     
    248248                                        indentStep = Math.min( indentStep, editor.config.indentClasses.length ); 
    249249                                        indentStep = Math.max( indentStep, 0 ); 
    250                                         var className = CKEDITOR.tools.ltrim( element.$.className.replace( self.classNameRegex, '' ) ); 
    251                                         if ( indentStep < 1 ) 
    252                                                 element.$.className = className; 
    253                                         else 
     250                                        element.$.className = CKEDITOR.tools.ltrim( element.$.className.replace( self.classNameRegex, '' ) ); 
     251                                        if ( indentStep > 0 ) 
    254252                                                element.addClass( editor.config.indentClasses[ indentStep - 1 ] ); 
    255253                                } 
     
    393391                        { 
    394392                                var range = new CKEDITOR.dom.range( editor.document ); 
    395                                 range.setStartBefore( e.data ); 
    396                                 range.setEndAfter( e.data ); 
     393                                range.setStartBefore( e.data.node ); 
     394                                range.setEndAfter( e.data.node ); 
    397395 
    398396                                var walker = new CKEDITOR.dom.walker( range ), 
     
    404402                                        { 
    405403                                                // A child with the defined dir is to be ignored. 
    406                                                 if ( !node.equals( e.data ) && node.getDirection() ) 
     404                                                if ( !node.equals( e.data.node ) && node.getDirection() ) 
    407405                                                { 
    408406                                                        range.setStartAfter( node ); 
     
    411409                                                } 
    412410 
     411                                                // Switch alignment classes. 
     412                                                var classes = editor.config.indentClasses; 
     413                                                if ( classes ) 
     414                                                { 
     415                                                        var suffix = ( e.data.dir == 'ltr' ) ? [ '_rtl', '' ] : [ '', '_rtl' ]; 
     416                                                        for ( var i = 0; i < classes.length; i++ ) 
     417                                                        { 
     418                                                                if ( node.hasClass( classes[ i ] + suffix[ 0 ] ) ) 
     419                                                                { 
     420                                                                        node.removeClass( classes[ i ] + suffix[ 0 ] ); 
     421                                                                        node.addClass( classes[ i ] + suffix[ 1 ] ); 
     422                                                                } 
     423                                                        } 
     424                                                } 
     425 
    413426                                                // Switch the margins. 
    414427                                                var marginLeft = node.getStyle( 'margin-right' ), 
     
    428441/** 
    429442 * Size of each indentation step 
     443 * @name CKEDITOR.config.indentOffset 
    430444 * @type Number 
    431445 * @default 40 
     
    436450 /** 
    437451 * Unit for the indentation style 
     452 * @name CKEDITOR.config.indentUnit 
    438453 * @type String 
    439454 * @default 'px' 
     
    445460 * List of classes to use for indenting the contents. If it's null, no classes will be used 
    446461 * and instead the {@link #indentUnit} and {@link #indentOffset} properties will be used. 
     462 * @name CKEDITOR.config.indentClasses 
    447463 * @type Array 
    448464 * default null 
  • CKEditor/branches/versions/3.4.x/_source/plugins/justify/plugin.js

    r6083 r6235  
    8888 
    8989                var range = new CKEDITOR.dom.range( editor.document ); 
    90                 range.setStartBefore( e.data ); 
    91                 range.setEndAfter( e.data ); 
     90                range.setStartBefore( e.data.node ); 
     91                range.setEndAfter( e.data.node ); 
    9292 
    9393                var walker = new CKEDITOR.dom.walker( range ), 
     
    9999                        { 
    100100                                // A child with the defined dir is to be ignored. 
    101                                 if ( !node.equals( e.data ) && node.getDirection() ) 
     101                                if ( !node.equals( e.data.node ) && node.getDirection() ) 
    102102                                { 
    103103                                        range.setStartAfter( node ); 
     
    107107 
    108108                                // Switch the alignment. 
     109                                var classes = editor.config.justifyClasses; 
     110                                if ( classes ) 
     111                                { 
     112                                        // The left align class. 
     113                                        if ( node.hasClass( classes[ 0 ] ) ) 
     114                                        { 
     115                                                node.removeClass( classes[ 0 ] ); 
     116                                                node.addClass( classes[ 2 ] ); 
     117                                        } 
     118                                        // The right align class. 
     119                                        else if ( node.hasClass( classes[ 2 ] ) ) 
     120                                        { 
     121                                                node.removeClass( classes[ 2 ] ); 
     122                                                node.addClass( classes[ 0 ] ); 
     123                                        } 
     124                                } 
     125 
     126                                // Always switch CSS margins. 
    109127                                var style = 'text-align'; 
    110128                                var align = node.getStyle( style ); 
  • CKEditor/branches/versions/3.4.x/_source/plugins/link/plugin.js

    r5887 r6235  
    1 /* 
     1/* 
    22Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. 
    33For licensing, see LICENSE.html or http://ckeditor.com/license 
     
    7070                                var element = CKEDITOR.plugins.link.getSelectedLink( editor ) || evt.data.element; 
    7171 
    72                                 if ( element.is( 'a' ) ) 
    73                                         evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link'; 
    74                                 else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' ) 
    75                                         evt.data.dialog = 'anchor'; 
     72                                if ( !element.isReadOnly() ) 
     73                                { 
     74                                        if ( element.is( 'a' ) ) 
     75                                                evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link'; 
     76                                        else if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' ) 
     77                                                evt.data.dialog = 'anchor'; 
     78                                } 
    7679                        }); 
    7780 
  • CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js

    r6082 r6235  
    1212        var listNodeNames = { ol : 1, ul : 1 }, 
    1313                emptyTextRegex = /^[\n\r\t ]*$/; 
     14 
     15        var whitespaces = CKEDITOR.dom.walker.whitespaces(), 
     16                bookmarks = CKEDITOR.dom.walker.bookmark(), 
     17                nonEmpty = function( node ){ return !( whitespaces( node ) || bookmarks( node ) ); }; 
    1418 
    1519        CKEDITOR.plugins.list = { 
     
    134138                                                 && currentIndex != listArray.length - 1 ) 
    135139                                        { 
    136                                                 if ( currentListItem.getLast() 
    137                                                                 && currentListItem.getLast().type == CKEDITOR.NODE_ELEMENT 
    138                                                                 && currentListItem.getLast().getAttribute( 'type' ) == '_moz' ) 
    139                                                         currentListItem.getLast().remove(); 
    140                                                 currentListItem.appendBogus(); 
     140                                                var last = currentListItem.getLast(); 
     141                                                if ( last && last.type == CKEDITOR.NODE_ELEMENT 
     142                                                                && last.getAttribute( 'type' ) == '_moz' ) 
     143                                                { 
     144                                                        last.remove(); 
     145                                                } 
     146 
     147                                                if ( !( last = currentListItem.getLast( nonEmpty ) 
     148                                                        && last.type == CKEDITOR.NODE_ELEMENT 
     149                                                        && last.getName() in CKEDITOR.dtd.$block ) ) 
     150                                                { 
     151                                                        currentListItem.append( doc.createElement( 'br' ) ); 
     152                                                } 
    141153                                        } 
    142154 
  • CKEditor/branches/versions/3.4.x/_source/plugins/menubutton/plugin.js

    r5283 r6235  
    4141                        menu.onHide = CKEDITOR.tools.bind( function() 
    4242                                { 
    43                                         this.setState( _.previousState ); 
     43                                        this.setState( this.modes && this.modes[ editor.mode ] ? _.previousState : CKEDITOR.TRISTATE_DISABLED ); 
    4444                                }, 
    4545                                this ); 
     
    4747                        // Initialize the menu items at this point. 
    4848                        if ( this.onMenu ) 
    49                         { 
    5049                                menu.addListener( this.onMenu ); 
    51                         } 
    5250                } 
    5351 
  • CKEditor/branches/versions/3.4.x/_source/plugins/pastefromword/filter/default.js

    r6002 r6235  
    121121        var cssLengthRelativeUnit = /^([.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i; 
    122122        var emptyMarginRegex = /^(?:\b0[^\s]*\s*){1,4}$/;               // e.g. 0px 0pt 0px 
     123        var romanLiternalPattern = '^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$', 
     124                lowerRomanLiteralRegex = new RegExp( romanLiternalPattern ), 
     125                upperRomanLiteralRegex = new RegExp( romanLiternalPattern.toUpperCase() ); 
    123126 
    124127        var listBaseIndent = 0, 
     
    145148                                        if ( !isNaN( bulletStyle[ 1 ] ) ) 
    146149                                                bulletStyle = 'decimal'; 
    147                                         // No way to distinguish between Roman numerals and Alphas, 
    148                                         // detect them as a whole. 
     150                                        else if ( lowerRomanLiteralRegex.test( bulletStyle[ 1 ] ) ) 
     151                                                bulletStyle = 'lower-roman'; 
     152                                        else if ( upperRomanLiteralRegex.test( bulletStyle[ 1 ] ) ) 
     153                                                bulletStyle = 'upper-roman'; 
    149154                                        else if ( /^[a-z]+$/.test( bulletStyle[ 1 ] ) ) 
    150155                                                bulletStyle = 'lower-alpha'; 
  • CKEditor/branches/versions/3.4.x/_source/plugins/richcombo/plugin.js

    r6002 r6235  
    107107                                        } 
    108108 
    109                                         if ( !_.committed ) 
    110                                         { 
    111                                                 _.list.commit(); 
    112                                                 _.committed = 1; 
    113                                         } 
     109                                        !_.committed && this.commit(); 
    114110 
    115111                                        var value = this.getValue(); 
     
    245241                                                this.element.getFirst().removeClass( me.className + '_panel' ); 
    246242 
    247                                         me.setState( CKEDITOR.TRISTATE_OFF ); 
     243                                        me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); 
    248244 
    249245                                        me._.on = 0; 
     
    351347                { 
    352348                        this._.list.commit(); 
     349                        this._.committed = 1; 
    353350                }, 
    354351 
  • CKEditor/branches/versions/3.4.x/_source/plugins/specialchar/dialogs/specialchar.js

    r6234 r6235  
    223223                buttons : [ CKEDITOR.dialog.cancelButton ], 
    224224                charColumns : 17, 
     225                chars : 
     226                        [ 
     227                                '!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/', 
     228                                '0','1','2','3','4','5','6','7','8','9',':',';', 
     229                                '&lt;','=','&gt;','?','@', 
     230                                'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O', 
     231                                'P','Q','R','S','T','U','V','W','X','Y','Z', 
     232                                '[',']','^','_','`', 
     233                                'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p', 
     234                                'q','r','s','t','u','v','w','x','y','z', 
     235                                '{','|','}','~','&euro;(EURO SIGN)','&lsquo;(LEFT SINGLE QUOTATION MARK)','&rsquo;(RIGHT SINGLE QUOTATION MARK)','&ldquo;(LEFT DOUBLE QUOTATION MARK)', 
     236                                '&rdquo;(RIGHT DOUBLE QUOTATION MARK)','&ndash;(EN DASH)','&mdash;(EM DASH)','&iexcl;(INVERTED EXCLAMATION MARK)','&cent;(CENT SIGN)','&pound;(POUND SIGN)', 
     237                                '&curren;(CURRENCY SIGN)','&yen;(YEN SIGN)','&brvbar;(BROKEN BAR)','&sect;(SECTION SIGN)','&uml;(DIAERESIS)','&copy;(COPYRIGHT SIGN)','&ordf;(FEMININE ORDINAL INDICATOR)', 
     238                                '&laquo;(LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)','&not;(NOT SIGN)','&reg;(REGISTERED SIGN)','&macr;(MACRON)','&deg;(DEGREE SIGN)','&plusmn;(PLUS-MINUS SIGN)','&sup2;(SUPERSCRIPT TWO)', 
     239                                '&sup3;(SUPERSCRIPT THREE)','&acute;(ACUTE ACCENT)','&micro;(MICRO SIGN)','&para;(PILCROW SIGN)','&middot;(MIDDLE DOT)','&cedil;(CEDILLA)', 
     240                                '&sup1;(SUPERSCRIPT ONE)','&ordm;(MASCULINE ORDINAL INDICATOR)','&raquo;(RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)','&frac14;(VULGAR FRACTION ONE QUARTER)','&frac12;(VULGAR FRACTION ONE HALF)','&frac34;(VULGAR FRACTION THREE QUARTERS)', 
     241                                '&iquest;(INVERTED QUESTION MARK)','&Agrave;(LATIN CAPITAL LETTER A WITH GRAVE)','&Aacute;(LATIN CAPITAL LETTER A WITH ACUTE)','&Acirc;(LATIN CAPITAL LETTER A WITH CIRCUMFLEX)','&Atilde;(LATIN CAPITAL LETTER A WITH TILDE)','&Auml;(LATIN CAPITAL LETTER A WITH DIAERESIS)', 
     242                                '&Aring;(LATIN CAPITAL LETTER A WITH RING ABOVE)','&AElig;(LATIN CAPITAL LETTER AE)','&Ccedil;(LATIN CAPITAL LETTER C WITH CEDILLA)','&Egrave;(LATIN CAPITAL LETTER E WITH GRAVE)','&Eacute;(LATIN CAPITAL LETTER E WITH ACUTE)','&Ecirc;(LATIN CAPITAL LETTER E WITH CIRCUMFLEX)', 
     243                                '&Euml;(LATIN CAPITAL LETTER E WITH DIAERESIS)','&Igrave;(LATIN CAPITAL LETTER I WITH GRAVE)','&Iacute;(LATIN CAPITAL LETTER I WITH ACUTE)','&Icirc;(LATIN CAPITAL LETTER I WITH CIRCUMFLEX)','&Iuml;(LATIN CAPITAL LETTER I WITH DIAERESIS)','&ETH;(LATIN CAPITAL LETTER ETH)', 
     244                                '&Ntilde;(LATIN CAPITAL LETTER N WITH TILDE)','&Ograve;(LATIN CAPITAL LETTER O WITH GRAVE)','&Oacute;(LATIN CAPITAL LETTER O WITH ACUTE)','&Ocirc;(LATIN CAPITAL LETTER O WITH CIRCUMFLEX)','&Otilde;(LATIN CAPITAL LETTER O WITH TILDE)','&Ouml;(LATIN CAPITAL LETTER O WITH DIAERESIS)', 
     245                                '&times;(MULTIPLICATION SIGN)','&Oslash;(LATIN CAPITAL LETTER O WITH STROKE)','&Ugrave;(LATIN CAPITAL LETTER U WITH GRAVE)','&Uacute;(LATIN CAPITAL LETTER U WITH ACUTE)','&Ucirc;(LATIN CAPITAL LETTER U WITH CIRCUMFLEX)','&Uuml;(LATIN CAPITAL LETTER U WITH DIAERESIS)', 
     246                                '&Yacute;(LATIN CAPITAL LETTER Y WITH ACUTE)','&THORN;(LATIN CAPITAL LETTER THORN)','&szlig;(LATIN SMALL LETTER SHARP S)','&agrave;(LATIN SMALL LETTER A WITH GRAVE)','&aacute;(LATIN SMALL LETTER A WITH ACUTE)','&acirc;(LATIN SMALL LETTER A WITH CIRCUMFLEX)', 
     247                                '&atilde;(LATIN SMALL LETTER A WITH TILDE)','&auml;(LATIN SMALL LETTER A WITH DIAERESIS)','&aring;(LATIN SMALL LETTER A WITH RING ABOVE)','&aelig;(LATIN SMALL LETTER AE)','&ccedil;(LATIN SMALL LETTER C WITH CEDILLA)','&egrave;(LATIN SMALL LETTER E WITH GRAVE)', 
     248                                '&eacute;(LATIN SMALL LETTER E WITH ACUTE)','&ecirc;(LATIN SMALL LETTER E WITH CIRCUMFLEX)','&euml;(LATIN SMALL LETTER E WITH DIAERESIS)','&igrave;(LATIN SMALL LETTER I WITH GRAVE)','&iacute;(LATIN SMALL LETTER I WITH ACUTE)','&icirc;(LATIN SMALL LETTER I WITH CIRCUMFLEX)', 
     249                                '&iuml;(LATIN SMALL LETTER I WITH DIAERESIS)','&eth;(LATIN SMALL LETTER ETH)','&ntilde;(LATIN SMALL LETTER N WITH TILDE)','&ograve;(LATIN SMALL LETTER O WITH GRAVE)','&oacute;(LATIN SMALL LETTER O WITH ACUTE)','&ocirc;(LATIN SMALL LETTER O WITH CIRCUMFLEX)', 
     250                                '&otilde;(LATIN SMALL LETTER O WITH TILDE)','&ouml;(LATIN SMALL LETTER O WITH DIAERESIS)', 
     251                                '&divide;(DIVISION SIGN)','&oslash;(LATIN SMALL LETTER O WITH STROKE)', 
     252                                '&ugrave;(LATIN SMALL LETTER U WITH GRAVE)','&uacute;(LATIN SMALL LETTER U WITH ACUTE)', 
     253                                '&ucirc;(LATIN SMALL LETTER U WITH CIRCUMFLEX)','&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)', 
     254                                '&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)','&yacute;(LATIN SMALL LETTER Y WITH ACUTE)','&thorn;(LATIN SMALL LETTER THORN)','&yuml;(LATIN SMALL LETTER Y WITH DIAERESIS)', 
     255                                '&OElig;(LATIN CAPITAL LIGATURE OE)', 
     256                                '&oelig;(LATIN SMALL LIGATURE OE)','&#372;(LATIN CAPITAL LETTER W WITH CIRCUMFLEX)', 
     257                                '&#374(LATIN CAPITAL LETTER Y WITH CIRCUMFLEX)','&#373(LATIN SMALL LETTER W WITH CIRCUMFLEX)', 
     258                                '&#375;(LATIN SMALL LETTER Y WITH CIRCUMFLEX)','&sbquo;(SINGLE LOW-9 QUOTATION MARK)', 
     259                                '&#8219;(SINGLE HIGH-REVERSED-9 QUOTATION MARK)','&bdquo;(DOUBLE LOW-9 QUOTATION MARK)','&hellip;(HORIZONTAL ELLIPSIS)', 
     260                                '&trade;(TRADE MARK SIGN)','&#9658;(BLACK RIGHT-POINTING POINTER)','&bull;(BULLET)', 
     261                                '&rarr;(RIGHTWARDS ARROW)','&rArr;(RIGHTWARDS DOUBLE ARROW)','&hArr;(LEFT RIGHT DOUBLE ARROW)','&diams;(BLACK DIAMOND SUIT)','&asymp;(ALMOST EQUAL TO)' 
     262                        ], 
    225263                onLoad :  function() 
    226264                { 
    227265                        var columns = this.definition.charColumns, 
    228                                 extraChars = editor.config.extraSpecialChars, 
    229                                 chars = editor.config.specialChars; 
     266                                chars = this.definition.chars; 
    230267 
    231268                        var charsTableLabel =  CKEDITOR.tools.getNextId() + '_specialchar_table_label'; 
     
    248285                                        { 
    249286                                                charDesc = ''; 
    250                                                  
    251                                                 if ( character instanceof Array ) 
    252                                                 { 
    253                                                         charDesc = character[ 1 ]; 
    254                                                         character = character[ 0 ]; 
    255                                                 } 
    256                                                 else 
    257                                                 { 
    258                                                         var _tmpName = character.toLowerCase().replace( '&', '' ).replace( ';', '' ).replace( '#', '' ); 
    259  
    260                                                         // Use character in case description unavailable. 
    261                                                         charDesc = lang[ _tmpName ] || character; 
    262                                                 } 
     287                                                character = character.replace( /\((.*?)\)/, function( match, desc ) 
     288                                                        { 
     289                                                                charDesc = desc; 
     290                                                                return ''; 
     291                                                        } ); 
     292 
     293                                                // Use character in case description unavailable. 
     294                                                charDesc = charDesc || character; 
    263295 
    264296                                                var charLabelId =  'cke_specialchar_label_' + i + '_' + CKEDITOR.tools.getNextNumber(); 
  • CKEditor/branches/versions/3.4.x/_source/plugins/specialchar/plugin.js

    r6234 r6235  
    1010CKEDITOR.plugins.add( 'specialchar', 
    1111{ 
    12         // List of available localizations. 
    13         availableLangs : { en:1 }, 
    14          
    1512        init : function( editor ) 
    1613        { 
    17                 var pluginName = 'specialchar', 
    18                         plugin = this; 
     14                var pluginName = 'specialchar'; 
    1915 
    2016                // Register the dialog. 
    2117                CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/specialchar.js' ); 
    2218 
    23                 editor.addCommand( pluginName, 
    24                         { 
    25                                 exec : function() 
    26                                 { 
    27                                         var langCode = editor.langCode; 
    28                                         langCode = plugin.availableLangs[ langCode ] ? langCode : 'en'; 
    29  
    30                                         CKEDITOR.scriptLoader.load( 
    31                                                         CKEDITOR.getUrl( plugin.path + 'lang/' + langCode + '.js' ), 
    32                                                         function() 
    33                                                         { 
    34                                                                 CKEDITOR.tools.extend( editor.lang.specialChar, plugin.lang[ langCode ] ); 
    35                                                                 editor.openDialog( pluginName ); 
    36                                                         }); 
    37                                 }, 
    38                                 modes : { wysiwyg:1 }, 
    39                                 canUndo : false 
    40                         }); 
     19                // Register the command. 
     20                editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) ); 
    4121 
    4222                // Register the toolbar button. 
     
    4828        } 
    4929} ); 
    50  
    51 /** 
    52   * The list of special characters visible in Special Character dialog. 
    53   * @type Array 
    54   * @example 
    55   * config.specialChars = [ '&quot;', '&rsquo;', [ '&custom;', 'Custom label' ] ]; 
    56   * config.specialChars = config.specialChars.concat( [ '&quot;', [ '&rsquo;', 'Custom label' ] ] ); 
    57   */ 
    58 CKEDITOR.config.specialChars =  
    59         [ 
    60                 '!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/', 
    61                 '0','1','2','3','4','5','6','7','8','9',':',';', 
    62                 '&lt;','=','&gt;','?','@', 
    63                 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O', 
    64                 'P','Q','R','S','T','U','V','W','X','Y','Z', 
    65                 '[',']','^','_','`', 
    66                 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p', 
    67                 'q','r','s','t','u','v','w','x','y','z', 
    68                 '{','|','}','~', 
    69                 "&euro;", "&lsquo;", "&rsquo;", "&ldquo;", "&rdquo;", "&ndash;", "&mdash;", "&iexcl;", "&cent;", "&pound;", "&curren;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;", "&ordf;", "&laquo;", "&not;", "&reg;", "&macr;", "&deg;", "&", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;", "&middot;", "&cedil;", "&sup1;", "&ordm;", "&", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;", "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&divide;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&uuml;", "&yacute;", "&thorn;", "&yuml;", "&OElig;", "&oelig;", "&#372;", "&#374", "&#373", "&#375;", "&sbquo;", "&#8219;", "&bdquo;", "&hellip;", "&trade;", "&#9658;", "&bull;", "&rarr;", "&rArr;", "&hArr;", "&diams;", "&asymp;" 
    70         ]; 
  • CKEditor/branches/versions/3.4.x/_source/plugins/styles/plugin.js

    r6043 r6235  
    1313 * editing area. The current state is passed to the function. The possible 
    1414 * states are {@link CKEDITOR.TRISTATE_ON} and {@link CKEDITOR.TRISTATE_OFF}. 
    15  * @param {CKEDITOR.style} The style to be watched. 
    16  * @param {Function} The function to be called when the style state changes. 
     15 * @param {CKEDITOR.style} style The style to be watched. 
     16 * @param {Function} callback The function to be called when the style state changes. 
    1717 * @example 
    1818 * // Create a style object for the &lt;b&gt; element. 
     
    14091409/** 
    14101410 * Gets the current styleSet for this instance 
    1411  * @param {Function} The function to be called with the styles data. 
     1411 * @param {Function} callback The function to be called with the styles data. 
    14121412 * @example 
    14131413 * editor.getStylesSet( function( stylesDefinitions ) {} ); 
  • CKEditor/branches/versions/3.4.x/_source/plugins/wysiwygarea/plugin.js

    r6043 r6235  
    1 /* 
     1/* 
    22Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. 
    33For licensing, see LICENSE.html or http://ckeditor.com/license 
     
    1212{ 
    1313        // List of elements in which has no way to move editing focus outside. 
    14         var nonExitableElementNames = { table:1,pre:1 }; 
     14        var nonExitableElementNames = { table:1 }; 
    1515 
    1616        // Matching an empty paragraph at the end of document. 
     
    1818 
    1919        var notWhitespaceEval = CKEDITOR.dom.walker.whitespaces( true ); 
     20 
     21        // Elements that could have empty new line around, including table, pre-formatted block, hr, page-break. (#6554) 
     22        function nonExitable( element ) 
     23        { 
     24                return ( element.getName() in nonExitableElementNames ) 
     25                                || element.isBlockBoundary() && CKEDITOR.dtd.$empty[ element.getName() ]; 
     26        } 
    2027 
    2128        function checkReadOnly( selection ) 
     
    318325                                if ( element && 
    319326                                         element.type == CKEDITOR.NODE_ELEMENT && 
    320                                          !nonExitableElementNames[ element.getName() ] ) 
     327                                         !nonExitable( element ) ) 
    321328                                { 
    322329                                        range.moveToElementEditStart( element ); 
     
    328335                                        if ( element && 
    329336                                                 element.type == CKEDITOR.NODE_ELEMENT && 
    330                                                  !nonExitableElementNames[ element.getName() ] ) 
     337                                                 !nonExitable( element ) ) 
    331338                                        { 
    332339                                                range.moveToElementEditEnd( element ); 
     
    10271034                                        focusGrabber = editor.container.append( CKEDITOR.dom.element.createFromHtml( 
    10281035                                                // Use 'span' instead of anything else to fly under the screen-reader radar. (#5049) 
    1029                                                 '<span tabindex="-1" style="position:absolute; left:-10000" role="presentation"></span>' ) ); 
     1036                                                '<span tabindex="-1" style="position:absolute;" role="presentation"></span>' ) ); 
    10301037 
    10311038                                        focusGrabber.on( 'focus', function() 
  • CKEditor/branches/versions/3.4.x/_source/skins/kama/dialog.css

    r6002 r6235  
    395395.cke_skin_kama a.cke_dialog_ui_button_cancel span 
    396396{ 
     397        width:60px; 
    397398        padding-right: 20px; 
    398399        padding-left: 20px; 
     
    518519{ 
    519520        margin: 7px 0; 
    520         width: 60px; 
    521521        text-align: center; 
    522522} 
  • CKEditor/branches/versions/3.4.x/_source/skins/office2003/dialog.css

    r6002 r6235  
    430430} 
    431431 
     432.cke_skin_office2003 a.cke_dialog_ui_button_ok span, 
     433.cke_skin_office2003 a.cke_dialog_ui_button_cancel span 
     434{ 
     435        width:60px; 
     436} 
     437 
    432438.cke_skin_office2003 span.cke_dialog_ui_button 
    433439{ 
     
    486492.cke_skin_office2003 .cke_dialog_footer_buttons span.cke_dialog_ui_button 
    487493{ 
    488         width: 60px; 
    489494        margin: 7px 0; 
    490495} 
  • CKEditor/branches/versions/3.4.x/_source/skins/v2/dialog.css

    r6002 r6235  
    429429} 
    430430 
     431.cke_skin_v2 a.cke_dialog_ui_button_ok span, 
     432.cke_skin_v2 a.cke_dialog_ui_button_cancel span 
     433{ 
     434        width:60px; 
     435} 
     436 
    431437.cke_skin_v2 span.cke_dialog_ui_button 
    432438{ 
     
    482488.cke_skin_v2 .cke_dialog_footer_buttons span.cke_dialog_ui_button 
    483489{ 
    484         width: 60px; 
    485490        margin: 7px 0; 
    486491} 
  • CKEditor/branches/versions/3.4.x/_source/themes/default/theme.js

    r6234 r6235  
    185185                                                                '<a id="%close_button#" class="%close_button" href="javascript:void(0)" title="' +  editor.lang.common.close+'" role="button"><span class="cke_label">X</span></a>' + 
    186186                                                                '<div id="%tabs#" class="%tabs" role="tablist"></div>' + 
    187                                                                 '<table class="%contents" role="presentation"><tr>' + 
     187                                                                '<table class="%contents" role="presentation">' + 
     188                                                                '<tr>' + 
    188189                                                                  '<td id="%contents#" class="%contents" role="presentation"></td>' + 
    189                                                                 '</tr></table>' + 
    190                                                                 '<div id="%footer#" class="%footer" role="presentation"></div>' + 
     190                                                                '</tr>' + 
     191                                                                '<tr>' + 
     192                                                                  '<td id="%footer#" class="%footer" role="presentation"></td>' + 
     193                                                                '</tr>' + 
     194                                                                '</table>' + 
    191195                                                        '</div>' + 
    192196                                                        '<div id="%tl#" class="%tl"></div>' + 
     
    227231                                        tabs            : body.getChild( 2 ), 
    228232                                        contents        : body.getChild( [ 3, 0, 0, 0 ] ), 
    229                                         footer          : body.getChild( 4 ) 
     233                                        footer          : body.getChild( [ 3, 0, 1, 0 ] ) 
    230234                                } 
    231235                        }; 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy