Changeset 321


Ignore:
Timestamp:
07/07/09 23:36:45 (3 years ago)
Author:
sam
Message:

mediaWeb : meilleure compat de la preview avec plusieurs sites

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/model/sources/office/model/base/mediaWeb/mw.doss/_mediaWeb/mwFragment.xbl.xml

    r320 r321  
    44                <content orient="vertical" flex="1"> 
    55                        <xul:toolbar class="fragToolbar"> 
    6                                 <xul:toolbarbutton anonid="btnPaste" class="btnPaste" label="Coller" oncommand="document.getBindingParent(this).pasteFrag();" tooltiptext="Coller le fragment web depuis le presse-papier"/> 
    7                                 <xul:toolbarbutton anonid="btnCopy" class="btnCopy" label="Copier" oncommand="document.getBindingParent(this).copyFrag();" tooltiptext="Copier le fragment web dans le presse-papier" style="display:none;"/> 
     6                                <xul:toolbarbutton anonid="btnPaste" class="btnPaste" label="Coller" oncommand="document.getBindingParent(this).pasteFrag();" tooltiptext="Coller le fragment web depuis le presse-papier"/> 
     7                                <xul:toolbarbutton anonid="btnCopy" class="btnCopy" label="Copier" oncommand="document.getBindingParent(this).copyFrag();" tooltiptext="Copier le fragment web dans le presse-papier" style="display:none;"/> 
    88                        </xul:toolbar> 
    99                        <xul:vbox> 
     
    2929                                <body><![CDATA[ 
    3030                                        try{ 
    31 //                                              this.fPreviewFrame.contentDocument.body.style.font = "sans-serif 11pt"; 
    3231                                                var vXbl = this; 
    3332                                                window.setTimeout(function(){vXbl.refresh()}, 10); 
     
    3938                                        try{ 
    4039                                                var vVal = this.realValue; 
    41                                                 if (!vVal) return; 
    42                                                 var vDoc = new DOMParser().parseFromString("<root>"+vVal+"</root>", "text/xml"); 
    43                                                 var vTargetRoot = this.fPreviewFrame.contentDocument.body; 
    44                                                 while(vTargetRoot.hasChildNodes()) vTargetRoot.removeChild(vTargetRoot.lastChild); 
    45                                                 var vNode = vDoc.documentElement.firstChild; 
    46                                                 while(vNode) { 
    47                                                         vTargetRoot.appendChild(vTargetRoot.ownerDocument.importNode(vNode, true)); 
    48                                                         vNode = vNode.nextSibling; 
     40                                                var vTargetDoc = this.fPreviewFrame.contentDocument; 
     41                                                var vTargetRoot = vTargetDoc.body; 
     42                                                vTargetRoot.style.font = "caption"; 
     43                                                if (!vVal || vVal == "") { 
     44                                                        vDiv = vTargetDoc.createElement("div"); 
     45                                                        vDiv.style.position = "absolute"; 
     46                                                        vDiv.style.height = "20px"; 
     47                                                        vDiv.style.width = "100%"; 
     48                                                        vDiv.style.top = "50%"; 
     49                                                        vDiv.style.marginTop = "-10px"; 
     50                                                        vDiv.style.textAlign = "center"; 
     51                                                        vDiv.style.color = "silver"; 
     52                                                        vDiv.style.fontStyle = "italic"; 
     53                                                        vDiv.innerHTML = "Veuillez coller un fragment HTML." 
     54                                                        vTargetRoot.appendChild(vDiv); 
     55                                                } else { 
     56                                                        var vDoc = new DOMParser().parseFromString("<root>"+vVal+"</root>", "text/xml"); 
     57                                                        while(vTargetRoot.hasChildNodes()) vTargetRoot.removeChild(vTargetRoot.lastChild); 
     58                                                        var vNode = vDoc.documentElement.firstChild; 
     59                                                        while(vNode) { 
     60                                                                vTargetRoot.appendChild(vTargetRoot.ownerDocument.importNode(vNode, true)); 
     61                                                                vNode = vNode.nextSibling; 
     62                                                        } 
     63                                                        this.fBtnCopy.style.display = this.realValue && this.realValue.length > 0 ? "" : "none"; 
     64                                                        var vXbl = this; 
     65                                                        window.setTimeout(function(){vXbl.autoSize()}, 100); 
    4966                                                } 
    50                                                 this.fBtnCopy.style.display = this.realValue && this.realValue.length > 0 ? "" : "none"; 
    51                                                 this.autoSize(); 
    5267                                        } catch(e){xed.debug("ERROR - mwFragment.refresh: "+e)} 
    5368                                ]]></body> 
     
    5570                        <method name="autoSize"> 
    5671                                <body><![CDATA[ 
     72                                        //xed.debug("mwFragment.autoSize"); 
     73                                        var vDocBody = this.fPreviewFrame.contentDocument.body; 
     74                                        var vHeight = Math.max(this.xToInt(vDocBody.scrollHeight), this.xToInt(vDocBody.lastChild.offsetTop) + this.xToInt(vDocBody.lastChild.clientHeight)+8); 
    5775                                        this.fPreviewFrame.parentNode.height = 100; 
    58                                         this.fPreviewFrame.parentNode.height = this.fPreviewFrame.contentDocument.body.scrollHeight+5; 
     76                                        this.fPreviewFrame.parentNode.height = vHeight+2; 
    5977                                ]]></body> 
    6078                        </method> 
     
    6785                                                var vText = xed_transf.getStringDataFromTransferable(vTrans, xed_transf.FLAVOUR_TEXT_UNICODE); 
    6886                                                var vHtmlDoc = this.fPreviewFrame.contentDocument; 
    69                                                  
    7087                                                vHtmlDoc.body.innerHTML = vText; 
    71                                                  
    7288                                                var vXhtmlRoot = document.createDocumentFragment(); 
    73                                                  
    7489                                                function cloneChildren2Xhtml(pHtmlNode, pXhtml) { 
    7590                                                        var vNode = pHtmlNode.firstChild; 
     
    96111                                                } 
    97112                                                cloneChildren2Xhtml(vHtmlDoc.body, vXhtmlRoot); 
    98                                                  
    99113                                                var vEncoder = Components.classes["@mozilla.org/layout/documentEncoder;1?type=application/xhtml+xml"].createInstance(Components.interfaces.nsIDocumentEncoder); 
    100114                                                vEncoder.init(vXhtmlRoot.ownerDocument, "application/xhtml+xml", 0); 
    101                                                  
    102115                                                vEncoder.setContainerNode(vXhtmlRoot); 
    103116                                                var vEncFrag = vEncoder.encodeToString(); 
     
    105118                                                this.updateVal(vEncFrag); 
    106119                                                this.fBtnCopy.style.display = this.realValue && this.realValue.length > 0 ? "" : "none"; 
    107                                                 this.autoSize(); 
     120                                                var vXbl = this; 
     121                                                window.setTimeout(function(){vXbl.autoSize()}, 100); 
    108122                                        } catch(e){xed.debug("ERROR - mwFragment.pasteFrag: "+e)} 
    109123                                ]]></body> 
     
    111125                        <method name="copyFrag"> 
    112126                                <body><![CDATA[ 
    113                                         xed.debug("mwFragment.copyFrag"); 
     127                                        //xed.debug("mwFragment.copyFrag"); 
    114128                                        Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper).copyString(xed.getBind(this).fValue); 
    115129                                ]]></body> 
     
    140154                                                this.dispatchEvent(vEvent); 
    141155                                                return true; 
    142                                         } catch(e){xed.debug(e);} 
     156                                        } catch(e){xed.debug("ERROR - mwFragment.updateVal: "+e);} 
    143157                                ]]></body> 
    144158                        </method> 
    145  
     159                        <method name="xToInt"> 
     160                                <parameter name="pVal"/> 
     161                                <body><![CDATA[ 
     162                                        var vRet; 
     163                                        return isNaN(vRet = parseInt(pVal))? 0 : vRet; 
     164                                ]]></body> 
     165                        </method> 
    146166                </implementation> 
    147167        </binding> 
    148168</bindings> 
     169 
Note: See TracChangeset for help on using the changeset viewer.