Changeset 568

Show
Ignore:
Timestamp:
2007-07-27 03:32:41 (3 years ago)
Author:
martinkou
Message:

Fix for #581 : Fixed the issue where having a form input called "className" in the editor form would cause errors to the maximize feature.
Fix for #581 : Fixed the issue where having a form input called "style" in the editor document would cause errors to FCKXhtml.GetXHTML() calls.

Location:
FCKeditor/trunk/editor/_source
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • FCKeditor/trunk/editor/_source/commandclasses/fckfitwindow.js

    r543 r568  
    5757                        if ( eParent.nodeType == 1 ) 
    5858                        { 
    59                                 var hijackNode = null ; 
    60                                 var hijackSibling = null ; 
    61                                 if ( eParent.tagName.toLowerCase() == 'form' && eParent.elements.namedItem( 'style' ) ) 
    62                                 { 
    63                                         hijackNode = eParent.elements.namedItem( 'style' ) ; 
    64                                         hijackSibling = hijackNode.nextSibling ; 
    65                                         eParent.removeChild( hijackNode ) ; 
    66                                 } 
    6759                                eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ; 
    6860                                eParent.style.zIndex = FCKConfig.FloatingPanelsZIndex - 1 ; 
    69                                 if ( hijackNode ) 
    70                                 { 
    71                                         if ( hijackSibling ) 
    72                                                 eParent.insertBefore( hijackNode, hijackSibling ) ; 
    73                                         else 
    74                                                 eParent.appendChild( hijackNode ) ; 
    75                                 } 
    7661                        } 
    7762                } 
  • FCKeditor/trunk/editor/_source/internals/fcktools_gecko.js

    r422 r568  
    153153FCKTools.SaveStyles = function( element ) 
    154154{ 
     155        var data = FCKTools.ProtectFormStyles( element ) ; 
     156 
    155157        var oSavedStyles = new Object() ; 
    156158 
     
    169171        } 
    170172 
     173        FCKTools.RestoreFormStyles( element, data ) ; 
    171174        return oSavedStyles ; 
    172175} 
     
    174177FCKTools.RestoreStyles = function( element, savedStyles ) 
    175178{ 
     179        var data = FCKTools.ProtectFormStyles( element ) ; 
    176180        element.className = savedStyles.Class || '' ; 
    177181 
     
    180184        else 
    181185                element.removeAttribute( 'style', 0 ) ; 
     186        FCKTools.RestoreFormStyles( element, data ) ; 
    182187} 
    183188 
  • FCKeditor/trunk/editor/_source/internals/fcktools_ie.js

    r412 r568  
    182182FCKTools.SaveStyles = function( element ) 
    183183{ 
     184        var data = FCKTools.ProtectFormStyles( element ) ; 
     185 
    184186        var oSavedStyles = new Object() ; 
    185187 
     
    198200        } 
    199201 
     202        FCKTools.RestoreFormStyles( element, data ) ; 
    200203        return oSavedStyles ; 
    201204} 
     
    203206FCKTools.RestoreStyles = function( element, savedStyles ) 
    204207{ 
     208        var data = FCKTools.ProtectFormStyles( element ) ; 
    205209        element.className               = savedStyles.Class || '' ; 
    206210        element.style.cssText   = savedStyles.Inline || '' ; 
     211        FCKTools.RestoreFormStyles( element, data ) ; 
    207212} 
    208213 
  • FCKeditor/trunk/editor/_source/internals/fcktools.js

    r498 r568  
    474474        return pos ; 
    475475} 
     476 
     477FCKTools.ProtectFormStyles = function( formNode ) 
     478{ 
     479        if ( !formNode || formNode.nodeType != 1 || formNode.tagName.toLowerCase() != 'form' ) 
     480                return [] ; 
     481        var hijackRecord = [] ; 
     482        var hijackNames = [ 'style', 'className' ] ; 
     483        for ( var i = 0 ; i < hijackNames.length ; i++ ) 
     484        { 
     485                var name = hijackNames[i] ; 
     486                if ( formNode.elements.namedItem( name ) ) 
     487                { 
     488                        var hijackNode = formNode.elements.namedItem( name ) ; 
     489                        hijackRecord.push( [ hijackNode, hijackNode.nextSibling ] ) ; 
     490                        formNode.removeChild( hijackNode ) ; 
     491                } 
     492        } 
     493        return hijackRecord ; 
     494} 
     495 
     496FCKTools.RestoreFormStyles = function( formNode, hijackRecord ) 
     497{ 
     498        if ( !formNode || formNode.nodeType != 1 || formNode.tagName.toLowerCase() != 'form' ) 
     499                return ; 
     500        if ( hijackRecord.length > 0 ) 
     501        { 
     502                for ( var i = hijackRecord.length - 1 ; i >= 0 ; i-- ) 
     503                { 
     504                        var node = hijackRecord[i][0] ; 
     505                        var sibling = hijackRecord[i][1] ; 
     506                        if ( sibling ) 
     507                                formNode.insertBefore( node, sibling ) ; 
     508                        else 
     509                                formNode.appendChild( node ) ; 
     510                } 
     511        } 
     512} 
  • FCKeditor/trunk/editor/_source/internals/fckxhtml_ie.js

    r492 r568  
    4747                        // attribute. It returns "null" for the nodeValue. 
    4848                        else if ( sAttName == 'style' ) 
     49                        { 
     50                                var data = FCKTools.ProtectFormStyles( htmlNode ) ; 
    4951                                sAttValue = htmlNode.style.cssText.replace( FCKRegexLib.StyleProperties, FCKTools.ToLowerCase ) ; 
     52                                FCKTools.RestoreFormStyles( htmlNode, data ) ; 
     53                        } 
    5054                        // There are two cases when the oAttribute.nodeValue must be used: 
    5155                        //              - for the "class" attribute