Ticket #3869: 3869_3.patch

File 3869_3.patch, 4.8 KB (added by Artur Formella, 13 years ago)
  • _source/plugins/htmldataprocessor/plugin.js

     
    229229
    230230        function protectSource( data, protectRegexes )
    231231        {
     232                var protectedHtml = [],
     233                        tempRegex = /<\!--{cke_temp}(\d*?)-->/g;
    232234                var regexes =
    233235                        [
    234236                                // First of any other protection, we must protect all comments
     
    248250                {
    249251                        data = data.replace( regexes[i], function( match )
    250252                                {
    251                                         return '<!--' + protectedSourceMarker + encodeURIComponent( match ).replace( /--/g, '%2D%2D' ) + '-->';
     253                                        match = match.replace( tempRegex,               // There could be protected source inside another one. (#3869).
     254                                                function( $, id )
     255                                                {
     256                                                        return protectedHtml[ id ];
     257                                                }
     258                                        );
     259                                        return  '<!--{cke_temp}' + ( protectedHtml.push( match ) - 1 ) + '-->';
    252260                                });
    253261                }
    254 
     262                data = data.replace( tempRegex, function( $, id )
     263                        {
     264                                return '<!--' + protectedSourceMarker +
     265                                                encodeURIComponent( protectedHtml[ id ] ).replace( /--/g, '%2D%2D' ) +
     266                                                '-->';
     267                        }
     268                );
    255269                return data;
    256270        }
    257271
  • _source/tests/plugins/htmldataprocessor/htmldataprocessor.html

     
    270270                                dataProcessor.toDataFormat( protectedHtml ) );
    271271                },
    272272
     273                test_ticket_3869_1 : function()
     274                {
     275                        var editor = CKEDITOR.instances.editor1,
     276                                dataProcessor = editor.dataProcessor;
     277 
     278                        dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
     279                        var html = getTextAreaValue( '_TEXTAREA_3869_1' );
     280                        var protectedHtml = dataProcessor.toHtml( html );
     281
     282                        assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );
     283                },
     284
     285                test_ticket_3869_2 : function()
     286                {
     287                        var editor = CKEDITOR.instances.editor1,
     288                                dataProcessor = editor.dataProcessor,
     289                                config = editor.config;
     290
     291                        config.protectedSource.push( /<\?[\s\S]*?\?>/g );   // PHP Code
     292                        config.protectedSource.push( /<%[\s\S]*?%>/g );   // ASP Code
     293                        config.protectedSource.push( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi );   // ASP.Net Code
     294                        config.protectedSource.push(/<gallery[\s\S]*?<\/gallery>/gi );  // custom protected source
     295                        config.protectedSource.push(/<options[\s\S]*?<\/options>/gi );
     296                        dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
     297                        var html = getTextAreaValue( '_TEXTAREA_3869_2' );
     298                        var protectedHtml = dataProcessor.toHtml( html );
     299
     300                        assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );
     301                },
     302
    273303                /**
    274304                 * Test empty value attributes.
    275305                 */
     
    318348include ("head.html"); ?></td></tr></tbody></table><noscript>Your browser doesn't support JavaScript</noscript></textarea>
    319349        <textarea id="_TEXTAREA_3591"><object><param /><param /><embed></embed></object></textarea>
    320350        <textarea id="_TEXTAREA_3591_protected"><cke:object><cke:param></cke:param><cke:param></cke:param><cke:embed></cke:embed></cke:object></textarea>
     351        <textarea id="_TEXTAREA_3869_1">#3869<script language="Javascript" type="text/javascript">
     352        <!--
     353                alert('-->')
     354        //-->
     355        </script></textarea>
     356        <textarea id="_TEXTAREA_3869_2">#3869<gallery>
     357        file.jpg
     358        <options name="test1" value="value1"></options>
     359        <options name="test2" value="value2"></options>
     360        </gallery><?
     361                echo '<script type="text/javascript">';
     362                echo '<!--alert("-->");//-->';
     363                echo '</script>';
     364        ?><!--<%Response.Write(now())%>//-->invalid<?
     365                echo 'bbb<script>
     366                <!--
     367                ccc();<!-- </script><!-- </script>
     368                //--></script>
     369                <script><!--
     370                <!--
     371                ffff();
     372                //--></script>
     373                ddd';
     374        ?>html</textarea>
    321375        <textarea id="_TEXTAREA_3591_2"><object classid="clsid"><param name="movie" value="movie.swf" /><embed src="movie.swf" type="application/x-shockwave-flash"></embed></object></textarea>
    322376</body>
    323377</html>
  • CHANGES.html

     
    4444        <p>
    4545                Fixed issues:</p>
    4646        <ul>
     47                <li><a href="http://dev.fckeditor.net/ticket/3869">#3869</a> : Now it is possible to insert protected source inside another one</li>
    4748                <li><a href="http://dev.fckeditor.net/ticket/3859">#3859</a> : Fixed Flash dialog layout in Webkit</li>
    4849                <li><a href="http://dev.fckeditor.net/ticket/3852">#3852</a> : Disabled textarea resizing in dialogs</li>
    4950                <li><a href="http://dev.fckeditor.net/ticket/3781">#3781</a> : Colorbutton is now disabled in 'source' mode</li>
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy