Changeset 6956


Ignore:
Timestamp:
05/24/11 08:14:51 (4 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 – 2015 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy