Changeset 6956


Ignore:
Timestamp:
05/24/11 08:14:51 (3 years ago)
Author:
garry.yao
Message:

#6663: Safer table caption field by disabling non-text-only caption element.

Location:
CKEditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r6954 r6956  
    7272                <li><a href="http://dev.ckeditor.com/ticket/7742">#7742</a> : [WebKit] Indent doesn't apply on empty document without editor focus in prior.</li> 
    7373                <li><a href="http://dev.ckeditor.com/ticket/7801">#7801</a> : [Opera] Pasted paragraphs now split partial selected blocks.</li> 
     74                <li><a href="http://dev.ckeditor.com/ticket/6663">#6663</a> : Table caption that contains rich text is not anymore corrupted after edit with table dialog.</li> 
    7475                <li>Updated the following language files:<ul> 
    7576                        <li><a href="http://dev.ckeditor.com/ticket/7834">#7834</a> : Dutch;</li> 
  • CKEditor/trunk/_source/plugins/table/dialogs/table.js

    r6348 r6956  
    117117                        onOk : function() 
    118118                        { 
    119                                 if ( this._.selectedElement ) 
    120                                 { 
    121                                         var selection = editor.getSelection(), 
    122                                                 bms = selection.createBookmarks(); 
    123                                 } 
     119                                var selection = editor.getSelection(), 
     120                                        bms = selection.createBookmarks(); 
    124121 
    125122                                var table = this._.selectedElement || makeElement( 'table' ), 
     
    249246                                if ( !this._.selectedElement ) 
    250247                                        editor.insertElement( table ); 
    251                                 // Properly restore the selection inside table. (#4822) 
    252                                 else 
    253                                         selection.selectBookmarks( bms ); 
     248 
     249                                // Properly restore the selection, (#4822) but don't break 
     250                                // because of this, e.g. updated table caption. 
     251                                try { selection.selectBookmarks( bms ); } catch( er ){} 
    254252 
    255253                                return true; 
     
    601599                                                                        setup : function( selectedTable ) 
    602600                                                                        { 
     601                                                                                this.enable(); 
     602 
    603603                                                                                var nodeList = selectedTable.getElementsByTag( 'caption' ); 
    604604                                                                                if ( nodeList.count() > 0 ) 
    605605                                                                                { 
    606606                                                                                        var caption = nodeList.getItem( 0 ); 
     607 
     608                                                                                        var innerHtml = caption.getHtml().replace(/<br>\s*$/i, ''), 
     609                                                                                                innerText = caption.getText(); 
     610 
     611                                                                                        if ( innerHtml != innerText ) 
     612                                                                                        { 
     613                                                                                                this.disable(); 
     614                                                                                                this.setValue( innerText ); 
     615                                                                                                return; 
     616                                                                                        } 
     617 
    607618                                                                                        caption = CKEDITOR.tools.trim( caption.getText() ); 
    608619                                                                                        this.setValue( caption ); 
     
    611622                                                                        commit : function( data, table ) 
    612623                                                                        { 
     624                                                                                if ( !this.isEnabled() ) 
     625                                                                                        return; 
     626 
    613627                                                                                var caption = this.getValue(), 
    614628                                                                                        captionElement = table.getElementsByTag( 'caption' ); 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy