Changeset 245


Ignore:
Timestamp:
04/11/07 20:31:28 (8 years ago)
Author:
fredck
Message:

Updated the branch with trunk r244. Final changes for the first Data Processor proposal.

Location:
FCKeditor/branches/features/dataprocessor
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • FCKeditor/branches/features/dataprocessor/_dev/releaser/fckreleaser.php

    r164 r245  
    349349function StrEndsWith( $str, $sub ) 
    350350{ 
    351    return ( substr( $str, strlen( $str ) - strlen( $sub ) ) == $sub ) ; 
     351        return ( substr( $str, strlen( $str ) - strlen( $sub ) ) == $sub ) ; 
    352352} 
    353353 
     
    363363{ 
    364364        $dirParts = explode( '/', $path ) ; 
    365          
     365 
    366366        $currentDir = '' ; 
    367367 
     
    369369        { 
    370370                $currentDir .= $dirPart . '/' ; 
    371                  
     371 
    372372                if ( strlen( $dirPart ) > 0 && !is_dir( $currentDir ) ) 
    373373                        mkdir( $currentDir, $rights ) ; 
     
    385385                fwrite( $f, "\xEF\xBB\xBF" ) ;  // BOM 
    386386 
    387         fwrite( $f, $strData ) ; 
    388         fclose( $f ) ; 
    389  
    390         return TRUE ; 
    391 } 
    392  
    393 function SaveStringToUtf8File( $strData, $filePath, $includeBom = TRUE ) 
    394 { 
    395         $f = @fopen( $filePath, 'wb' ) ; 
    396  
    397         if ( !$f ) 
    398                 return FALSE ; 
    399  
    400         if ( $includeBom ) 
    401                 fwrite( $f, "\xEF\xBB\xBF" ) ;  // BOM 
    402  
    403         fwrite( $f, ( $strData ) ) ; 
    404  
     387        fwrite( $f, StripUtf8Bom( $strData ) ) ; 
    405388        fclose( $f ) ; 
    406389 
     
    954937        function ProcessFile( $sourceFilePath, $destinationFilePath, $onlyHeader = FALSE ) 
    955938        { 
    956                 SaveStringToUtf8File( 
     939                SaveStringToFile( 
    957940                        FCKPreProcessor::Process( file_get_contents( $sourceFilePath ), $onlyHeader ), 
    958941                        $destinationFilePath, 
    959                         ( !StrEndsWith( $sourceFilePath, '.asp' ) && !StrEndsWith( $sourceFilePath, '.js' ) ) ) ;       // Only ASP and JavaScript files require the BOM. 
     942                        ( StrEndsWith( $sourceFilePath, '.asp' ) || StrEndsWith( $sourceFilePath, '.js' ) ) ) ; // Only ASP and JavaScript files require the BOM. 
    960943 
    961944                // Set the destination file Last Access and Last Write times. 
  • FCKeditor/branches/features/dataprocessor/_whatsnew.html

    r225 r245  
    3131<body> 
    3232        <h3> 
    33                 Version 2.4.1 (SVN)</h3> 
     33                Version 2.4.3 (SVN)</h3> 
     34        <p> 
     35                New Features and Improvements:</p> 
     36        <ul> 
     37                <li>The editor now uses the <strong>Data Processor</strong> technology, which makes 
     38                        it possible to handle different input formats. A sample of it may be found at "editor/plugins/bbcode/_sample", 
     39                        that shows some simple BBCode support.</li> 
     40        </ul> 
     41        <p> 
     42                Fixed Bugs:</p> 
     43        <ul> 
     44                <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/300">#300</a>] The fck_internal.css 
     45                        file was not validating with the W3C CSS Validation Service.</li> 
     46                <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/336">#336</a>] Ordered 
     47                        list didn't keep the Type attribute properly (it was converted to lowercase when 
     48                        the properties dialog was opened again).</li> 
     49                <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/318">#318</a>] Multiple 
     50                        linked images are merged in a single link in IE.</li> 
     51        </ul> 
     52        <h3> 
     53                Version 2.4.2</h3> 
     54        <p> 
     55                Fixed Bugs:</p> 
     56        <ul> 
     57                <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/279">#279</a>] The UTF-8 
     58                        BOM was being included in the wrong files, affecting mainly PHP installations.</li> 
     59        </ul> 
     60        <h3> 
     61                Version 2.4.1</h3> 
    3462        <p> 
    3563                New Features and Improvements:</p> 
  • FCKeditor/branches/features/dataprocessor/editor/_source/classes/fckdataprocessor.js

    r225 r245  
    4545        ConvertToHtml : function( data ) 
    4646        { 
    47                 // Protect event attributes (they could get fired in the editing area). 
    48                 data = this._ProtectEvents( data ) ; 
    49  
    5047                // The default data processor must handle two different cases depending 
    5148                // on the FullPage setting. Custom Data Processors will not be 
     
    116113                        return '' ; 
    117114 
    118                 // Restore protected event attributes. 
    119                 data = this._ProtectEventsRestore( data ) ; 
    120  
    121115                return data ; 
    122116        }, 
     
    128122         */ 
    129123        FixHtml : function( html ) 
    130         {}, 
    131  
    132         // Saves event attributes (like onclick) so they don't get executed while 
    133         // editing. 
    134         _ProtectEvents : function( html ) 
    135124        { 
    136                 return html.replace( FCKRegexLib.TagsWithEvent, _FCKDataProcessor_ProtectEvents_ReplaceTags ) ; 
    137         }, 
    138  
    139         _ProtectEventsRestore : function( html ) 
    140         { 
    141                 return html.replace( FCKRegexLib.ProtectedEvents, _FCKDataProcessor_ProtectEvents_RestoreEvents ) ; 
     125                return html ; 
    142126        } 
    143127} ; 
    144  
    145 // Replace all events attributes (like onclick). 
    146 function _FCKDataProcessor_ProtectEvents_ReplaceTags( tagMatch ) 
    147 { 
    148         return tagMatch.replace( FCKRegexLib.EventAttributes, _FCKDataProcessor_ProtectEvents_ReplaceEvents ) ; 
    149 } 
    150  
    151 // Replace an event attribute with its respective __fckprotectedatt attribute. 
    152 // The original event markup will be encoded and saved as the value of the new 
    153 // attribute. 
    154 function _FCKDataProcessor_ProtectEvents_ReplaceEvents( eventMatch, attName ) 
    155 { 
    156         return ' ' + attName + '_fckprotectedatt="' + eventMatch.ReplaceAll( [/&/g,/'/g,/"/g,/=/g,/</g,/>/g,/\r/g,/\n/g], ['&apos;','&#39;','&quot;','&#61;','&lt;','&gt;','&#10;','&#13;'] ) + '"' ; 
    157 } 
    158  
    159 function _FCKDataProcessor_ProtectEvents_RestoreEvents( match, encodedOriginal ) 
    160 { 
    161         return encodedOriginal.ReplaceAll( [/&#39;/g,/&quot;/g,/&#61;/g,/&lt;/g,/&gt;/g,/&#10;/g,/&#13;/g,/&apos;/g], ["'",'"','=','<','>','\r','\n','&'] ) ; 
    162 } 
    163  
  • FCKeditor/branches/features/dataprocessor/editor/_source/internals/fck.js

    r225 r245  
    214214                        format ) ; 
    215215 
     216                // Restore protected attributes. 
     217                data = FCK.ProtectEventsRestore( data ) ; 
     218 
    216219                if ( FCKBrowserInfo.IsIE ) 
    217220                        data = data.replace( FCKRegexLib.ToReplace, '$1' ) ; 
     
    272275        }, 
    273276 
     277        // Saves event attributes (like onclick) so they don't get executed while 
     278        // editing. 
     279        ProtectEvents : function( html ) 
     280        { 
     281                return html.replace( FCKRegexLib.TagsWithEvent, _FCK_ProtectEvents_ReplaceTags ) ; 
     282        }, 
     283 
     284        ProtectEventsRestore : function( html ) 
     285        { 
     286                return html.replace( FCKRegexLib.ProtectedEvents, _FCK_ProtectEvents_RestoreEvents ) ; 
     287        }, 
     288 
    274289        ProtectTags : function( html ) 
    275290        { 
     
    279294                if ( FCKBrowserInfo.IsIE ) 
    280295                        sTags += sTags.length > 0 ? '|ABBR' : 'ABBR' ; 
    281                  
     296 
    282297                var oRegex ; 
    283298                if ( sTags.length > 0 ) 
     
    289304                        html = html.replace( oRegex, '<\/FCK:$1>' ) ; 
    290305                } 
    291                  
     306 
    292307                // Protect some empty elements. We must do it separately becase the 
    293308                // original tag may not contain the closing slash, like <hr>: 
     
    325340                        // Fix for invalid self-closing tags (see #152). 
    326341                        data = data.replace( FCKRegexLib.InvalidSelfCloseTags, '$1></$2>' ) ; 
    327                          
     342 
     343                        // Protect event attributes (they could get fired in the editing area). 
     344                        data = FCK.ProtectEvents( data ) ; 
     345 
    328346                        // Protect some things from the browser itself. 
    329347                        data = FCK.ProtectUrls( data ) ; 
     
    570588FCK.SetHTML = FCK.SetData ; 
    571589 
     590// Replace all events attributes (like onclick). 
     591function _FCK_ProtectEvents_ReplaceTags( tagMatch ) 
     592{ 
     593        return tagMatch.replace( FCKRegexLib.EventAttributes, _FCK_ProtectEvents_ReplaceEvents ) ; 
     594} 
     595 
     596// Replace an event attribute with its respective __fckprotectedatt attribute. 
     597// The original event markup will be encoded and saved as the value of the new 
     598// attribute. 
     599function _FCK_ProtectEvents_ReplaceEvents( eventMatch, attName ) 
     600{ 
     601        return ' ' + attName + '_fckprotectedatt="' + eventMatch.ReplaceAll( [/&/g,/'/g,/"/g,/=/g,/</g,/>/g,/\r/g,/\n/g], ['&apos;','&#39;','&quot;','&#61;','&lt;','&gt;','&#10;','&#13;'] ) + '"' ; 
     602} 
     603 
     604function _FCK_ProtectEvents_RestoreEvents( match, encodedOriginal ) 
     605{ 
     606        return encodedOriginal.ReplaceAll( [/&#39;/g,/&quot;/g,/&#61;/g,/&lt;/g,/&gt;/g,/&#10;/g,/&#13;/g,/&apos;/g], ["'",'"','=','<','>','\r','\n','&'] ) ; 
     607} 
     608 
    572609function _FCK_EditingArea_OnLoad() 
    573610{ 
  • FCKeditor/branches/features/dataprocessor/editor/_source/internals/fck_gecko.js

    r187 r245  
    155155        // Firefox can't handle correctly the editing of the STRONG and EM tags. 
    156156        // We must replace them with B and I. 
    157                 html = html.replace( FCKRegexLib.StrongOpener, '<b$1' ) ; 
    158                 html = html.replace( FCKRegexLib.StrongCloser, '<\/b>' ) ; 
    159                 html = html.replace( FCKRegexLib.EmOpener, '<i$1' ) ; 
    160                 html = html.replace( FCKRegexLib.EmCloser, '<\/i>' ) ; 
     157        html = html.replace( FCKRegexLib.StrongOpener, '<b$1' ) ; 
     158        html = html.replace( FCKRegexLib.StrongCloser, '<\/b>' ) ; 
     159        html = html.replace( FCKRegexLib.EmOpener, '<i$1' ) ; 
     160        html = html.replace( FCKRegexLib.EmCloser, '<\/i>' ) ; 
    161161 
    162162        // Delete the actual selection. 
  • FCKeditor/branches/features/dataprocessor/editor/_source/internals/fck_ie.js

    r225 r245  
    357357        if ( url.length > 0 ) 
    358358        { 
     359                // If there are several images, and you try to link each one, all the images get inside the link: 
     360                // <img><img> -> <a><img></a><img> -> <a><img><img></a> due to the call to 'CreateLink' (bug in IE) 
     361                if (FCKSelection.GetType() == 'Control') 
     362                { 
     363                        // Create a link 
     364                        var oLink = this.EditorDocument.createElement( 'A' ) ; 
     365                        oLink.href = url ; 
     366 
     367                        // Get the selected object 
     368                        var oControl = FCKSelection.GetSelectedElement() ; 
     369                        // Put the link just before the object 
     370                        oControl.parentNode.insertBefore(oLink, oControl) ; 
     371                        // Move the object inside the link 
     372                        oControl.parentNode.removeChild( oControl ) ; 
     373                        oLink.appendChild( oControl ) ; 
     374                         
     375                        return oLink ; 
     376                } 
     377 
    359378                // Generate a temporary name for the link. 
    360379                var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ; 
  • FCKeditor/branches/features/dataprocessor/editor/css/fck_internal.css

    r225 r245  
    4343.FCK__Flash 
    4444{ 
    45         border: darkgray 1px solid; 
     45        border: #a9a9a9 1px solid; 
    4646        background-position: center center; 
    4747        background-image: url(images/fck_flashlogo.gif); 
     
    6767{ 
    6868        border: 1px dotted #00F; 
    69         background-position: 1 center; 
     69        background-position: 1px center; 
    7070        background-image: url(images/fck_anchor.gif); 
    7171        background-repeat: no-repeat; 
  • FCKeditor/branches/features/dataprocessor/editor/dialog/fck_listprop.html

    r132 r245  
    6161        { 
    6262                if ( oActiveEl.getAttribute('type') ) 
    63                         oActiveSel.value = oActiveEl.getAttribute('type').toLowerCase() ; 
     63                        oActiveSel.value = oActiveEl.getAttribute('type') ; 
    6464        } 
    6565 
  • FCKeditor/branches/features/dataprocessor/editor/plugins/bbcode/fckplugin.js

    r225 r245  
    100100         */ 
    101101        FixHtml : function( html ) 
    102         {} 
     102        { 
     103                return html ; 
     104        } 
    103105} ; 
    104106 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy