Ticket #2751: 2751.patch

File 2751.patch, 5.4 KB (added by Artur Formella, 16 years ago)
  • _source/plugins/elementspath/plugin.js

     
    7878
    7979                                        while ( element )
    8080                                        {
    81                                                 var index = elementsList.push( element ) - 1,
     81                                                var index = elementsList.push( element ) - 1;
     82                                                var name;
     83                                                if ( element.getAttribute( '_cke_real_element_type' ) )
     84                                                        name = element.getAttribute( '_cke_real_element_type' );
     85                                                else
    8286                                                        name = element.getName();
    8387
    8488                                                // Use this variable to add conditional stuff to the
  • _source/plugins/fakeobjects/plugin.js

     
    4545                                                {
    4646                                                        match : function( nodeName, attributes )
    4747                                                        {
     48                                                                return ( nodeName == 'a' && attributes.name != null && attributes.name != '' );
     49                                                        },
     50                                                        cssClass : 'anchor',
     51                                                        priority : 10
     52                                                },
     53                                                {
     54                                                        match : function( nodeName, attributes )
     55                                                        {
    4856                                                                return nodeName == 'embed' || nodeName == 'object';
    4957                                                        },
    5058                                                        cssClass : 'object',
     
    129137
    130138                                                // Get the fake element's CSS class.
    131139                                                var cssClass = 'unknown';
     140                                                var realElementType = element.getName();
    132141                                                for ( var i = 0 ; i < objectTypes.length ; i++ )
    133142                                                {
    134143                                                        if ( objectTypes[i].match( element.getName(), element.$ ) )
    135144                                                        {
    136145                                                                cssClass = '_cke_fakeobject' + ' ' + objectTypes[i].cssClass;
     146                                                                realElementType = objectTypes[i].cssClass;
    137147                                                                break;
    138148                                                        }
    139149                                                }
     
    150160                                                if ( heightMatch )
    151161                                                        fakeRawElement.style.height = heightMatch[1] + 'px';
    152162                                                fakeRawElement.setAttribute( '_cke_protected_html', encodeURIComponent( html ) );
     163                                                fakeRawElement.setAttribute( '_cke_real_element_type', realElementType );
    153164                                                return new CKEDITOR.dom.element( fakeRawElement );
    154165                                        },
    155166
     
    264275                                                parser.parse( html );
    265276                                                return processedHtml.join( '' );
    266277                                        },
     278                                        /**
     279                                         * Updates HTML into a placeholder
     280                                         * @param {CKEDITOR.dom.element} fakeImgElement The placeholder &lt;img&gt;.
     281                                         * @param {CKEDITOR.dom.element} element Input DOM element.
     282                                         * @returns {String} encoded HTML.
     283                                         * @example
     284                                         */
     285                                        updateFakeElement : function( fakeElement, realElement )
     286                                        {
     287                                                var $ = realElement.$.cloneNode( true ),
     288                                                        doc = $.ownerDocument,
     289                                                        temp = doc.createElement( 'div' ),
     290                                                        html;
    267291
     292                                                // Get the object's HTML code.
     293                                                temp.appendChild( $ );
     294                                                html = temp.innerHTML;
     295                                                fakeElement.setAttribute( '_cke_protected_html', encodeURIComponent( html ) );
     296                                                return html;
     297                                        },
     298                                       
    268299                                        /**
    269300                                         * Restores placeholders in an HTML string back to their original elements.
    270301                                         * @param {String} html HTML with placeholders.
  • _source/plugins/link/dialogs/anchor.js

     
    5555                                // It doesn't work with IE.
    5656                                this.restoreSelection();
    5757                                this.clearSavedSelection();
    58                                 editor.insertElement( this.editObj );
     58
     59                                var fakeElement = CKEDITOR.plugins.fakeobjects.protectElement( this.editObj );
     60                                editor.insertElement( fakeElement );
    5961                        }
     62                        else
     63                                CKEDITOR.plugins.fakeobjects.updateFakeElement( this.fakeObj, this.editObj );
    6064                        return true;
    6165                },
    6266                onShow : function()
    6367                {
    6468                        this.editObj = false;
     69                        this.fakeObj = false;
    6570                        this.editMode = false;
    6671
    6772                        // IE BUG: Selection must be in the editor for getSelection() to work.
     
    7580                        {
    7681                                ranges[0].enlarge( CKEDITOR.ENLARGE_ELEMENT );
    7782                                rangeRoot = ranges[0].getCommonAncestor( true );
    78                                 var element = rangeRoot.getAscendant( 'a', true );
    79                                 if ( element && element.getAttribute( 'name' ) )
     83                                var element = rangeRoot.getAscendant( 'img', true );
     84                                if ( element && element.getAttribute( '_cke_real_element_type' ) && element.getAttribute( '_cke_real_element_type' ) == 'anchor' )
    8085                                {
     86                                        this.fakeObj = element;
     87                                        element = CKEDITOR.plugins.fakeobjects.restoreElement( this.fakeObj );
    8188                                        loadElements.apply( this, [ editor, selection, ranges, element ] );
    82                                         selection.selectElement( element );
     89                                        selection.selectElement( this.fakeObj );
    8390                                        this.saveSelection();
    8491                                }
    8592                        }
  • _source/skins/default/toolbar.css

     
    257257        background-position: 0 -656px;
    258258}
    259259
     260.cke_skin_default a.cke_button_pagebreak .cke_icon
     261{
     262        background-position: 0 -672px;
     263}
     264
    260265.cke_skin_default a.cke_button_form .cke_icon
    261266{
    262267        background-position: 0 -752px;
  • contents.css

     
    4747{
    4848        background-image: url(images/plugin.gif);
    4949}
     50
     51img._cke_fakeobject.anchor
     52{
     53        background-image: url(images/anchor.gif);
     54        width: 18px;
     55        height: 18px;
     56}
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy