Ticket #6664: 6664.patch

File 6664.patch, 5.7 KB (added by Garry Yao, 13 years ago)
  • _source/plugins/pagebreak/plugin.js

     
    2424
    2525                // Add the style that renders our placeholder.
    2626                editor.addCss(
    27                         'img.cke_pagebreak' +
     27                        'div.cke_pagebreak, ' +
     28                        '.cke_show_blocks div.cke_pagebreak' +          // Be friendly with "showblocks" plugin.
    2829                        '{' +
    2930                                'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/pagebreak.gif' ) + ');' +
    3031                                'background-position: center center;' +
     
    3536                                'width:100% !important; _width:99.9% !important;' +
    3637                                'border-top: #999999 1px dotted;' +
    3738                                'border-bottom: #999999 1px dotted;' +
     39                                'padding:0;' +
     40                                'margin:5px 0px;' +             // Leave some places making it easier for the user to put cursor around the page-break.
    3841                                'height: 5px !important;' +
    39                                 'page-break-after: always;' +
    40 
    4142                        '}' );
    4243        },
    4344
     
    4647                // Register a filter to displaying placeholders after mode change.
    4748
    4849                var dataProcessor = editor.dataProcessor,
    49                         dataFilter = dataProcessor && dataProcessor.dataFilter;
     50                        dataFilter = dataProcessor && dataProcessor.dataFilter,
     51                        htmlFilter = dataProcessor && dataProcessor.htmlFilter;
    5052
     53                if ( htmlFilter )
     54                {
     55                        htmlFilter.addRules(
     56                        {
     57                                attributes : {
     58                                        'class' : function( value, element )
     59                                        {
     60                                                var className =  value.replace( 'cke_pagebreak', '' );
     61                                                if ( className != value )
     62                                                {
     63                                                        var span = CKEDITOR.htmlParser.fragment.fromHtml( '<span style="display: none;">&nbsp;</span>' );
     64                                                        element.children.length = 0;
     65                                                        element.add( span );
     66                                                        var attrs = element.attributes;
     67                                                        delete attrs[ 'aria-label' ];
     68                                                        delete attrs.contenteditable;
     69                                                }
     70                                                return className;
     71                                        }
     72                                }
     73                        }, 5 );
     74                }
     75
    5176                if ( dataFilter )
    5277                {
    5378                        dataFilter.addRules(
     
    6388
    6489                                                        if ( childStyle && ( /page-break-after\s*:\s*always/i ).test( style ) && ( /display\s*:\s*none/i ).test( childStyle ) )
    6590                                                        {
    66                                                                 var fakeImg = editor.createFakeParserElement( element, 'cke_pagebreak', 'div' );
     91                                                                attributes.contenteditable = "false";
     92                                                                attributes[ 'class' ] = "cke_pagebreak";
     93                                                                attributes[ '_cke_display_name' ] = "pagebreak";
     94
    6795                                                                var label = editor.lang.pagebreakAlt;
    68                                                                 fakeImg.attributes[ 'alt' ] = label;
    69                                                                 fakeImg.attributes[ 'aria-label' ] = label;
    70                                                                 return fakeImg;
     96                                                                label && ( attributes[ 'aria-label' ] = label );
     97
     98                                                                element.children.length = 0;
    7199                                                        }
    72100                                                }
    73101                                        }
     
    82110{
    83111        exec : function( editor )
    84112        {
    85                 // Create the element that represents a print break.
     113                // Create read-only element that represents a print break.
     114                var breakObject = CKEDITOR.dom.element.createFromHtml( '<div style="page-break-after: always;" ' +
     115                        'contenteditable="false" _cke_display_name="pagebreak" class="cke_pagebreak"></div>' );
     116
    86117                var label = editor.lang.pagebreakAlt;
    87                 var breakObject = CKEDITOR.dom.element.createFromHtml( '<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>' );
     118                label && breakObject.setAttribute( 'aria-label', label );
    88119
    89                 // Creates the fake image used for this element.
    90                 breakObject = editor.createFakeElement( breakObject, 'cke_pagebreak', 'div' );
    91                 breakObject.setAttribute( 'alt', label );
    92                 breakObject.setAttribute( 'aria-label', label );
    93 
    94120                var ranges = editor.getSelection().getRanges( true );
    95121
    96122                editor.fire( 'saveSnapshot' );
  • _source/plugins/elementspath/plugin.js

     
    8282                                                {
    8383                                                        var index = elementsList.push( element ) - 1;
    8484                                                        var name;
    85                                                         if ( element.getAttribute( '_cke_real_element_type' ) )
     85                                                        if ( element.getAttribute( '_cke_display_name' ) )
     86                                                                name = element.getAttribute( '_cke_display_name' );
     87                                                        else if ( element.getAttribute( '_cke_real_element_type' ) )
    8688                                                                name = element.getAttribute( '_cke_real_element_type' );
    8789                                                        else
    8890                                                                name = element.getName();
  • _source/plugins/wysiwygarea/plugin.js

     
    1818
    1919        var notWhitespaceEval = CKEDITOR.dom.walker.whitespaces( true );
    2020
     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                                || element.isReadOnly();
     27        }
     28
    2129        function checkReadOnly( selection )
    2230        {
    2331                if ( selection.getType() == CKEDITOR.SELECTION_ELEMENT )
     
    317325                                var element = fixedBlock.getNext( isNotWhitespace );
    318326                                if ( element &&
    319327                                         element.type == CKEDITOR.NODE_ELEMENT &&
    320                                          !nonExitableElementNames[ element.getName() ] )
     328                                         !nonExitable( element ) )
    321329                                {
    322330                                        range.moveToElementEditStart( element );
    323331                                        fixedBlock.remove();
     
    327335                                        element = fixedBlock.getPrevious( isNotWhitespace );
    328336                                        if ( element &&
    329337                                                 element.type == CKEDITOR.NODE_ELEMENT &&
    330                                                  !nonExitableElementNames[ element.getName() ] )
     338                                                 !nonExitable( element ) )
    331339                                        {
    332340                                                range.moveToElementEditEnd( element );
    333341                                                fixedBlock.remove();
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy