Ticket #4421: dojo.editor.patch

File dojo.editor.patch, 6.6 kB (added by guest, 16 months ago)
  • dijit/_editor/RichText.js

    diff -Nur dojo-release-0.9.0/dijit/_editor/RichText.js dojo/dijit/_editor/RichText.js
    old new  
    239239                        // new editing harness node. 
    240240                        this.textarea = this.domNode; 
    241241                        this.name=this.textarea.name; 
    242                         var html = this._preFilterContent(this.textarea.value); 
     242      // in Safari, formatting information gets lost if we use textarea.value 
     243      // in Firefox otoh, textarea.innerHTML results in escaped html-tags. 
     244                        if(dojo.isSafari) { 
     245        var html = this._preFilterContent(this.textarea.innerHTML); 
     246      } else { 
     247        var html = this._preFilterContent(this.textarea.value); 
     248      } 
    243249                        this.domNode = dojo.doc.createElement("div"); 
    244250                        this.domNode.setAttribute('widgetId',this.id); 
    245251                        this.textarea.removeAttribute('widgetId'); 
     
    11611167                        //area, the <a> tag will be around all the content 
    11621168                        //so for now, use setValue for IE too 
    11631169                        this.setValue(html); 
    1164                 } 
     1170                } else {  
     1171      // is there any particular reason why there is no catch-all? In Safari 2.0.4 
     1172      // none of the above are executed... 
     1173      this.setValue(html); 
     1174    } 
    11651175        }, 
    11661176 
    11671177        _preFilterContent: function(/*String*/html){ 
  • dijit/form/Button.js

    diff -Nur dojo-release-0.9.0/dijit/form/Button.js dojo/dijit/form/Button.js
    old new  
    3030 
    3131        type: "button", 
    3232        baseClass: "dijitButton", 
    33         templateString:"<div class=\"dijit dijitLeft dijitInline dijitButton\" baseClass=\"${baseClass}\"\n\tdojoAttachEvent=\"onclick:_onButtonClick,onmouseover:_onMouse,onmouseout:_onMouse,onmousedown:_onMouse\"\n\t><div class='dijitRight'\n\t><button class=\"dijitStretch dijitButtonNode dijitButtonContents\" dojoAttachPoint=\"focusNode,titleNode\"\n\t\ttabIndex=\"${tabIndex}\" type=\"${type}\" id=\"${id}\" name=\"${name}\" waiRole=\"button\" waiState=\"labelledby-${id}_label\"\n\t\t><div class=\"dijitInline ${iconClass}\"></div\n\t\t><span class=\"dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\">${label}</span\n\t></button\n></div></div>\n", 
     33        templateString:"<div class=\"dijit dijitLeft dijitInline dijitButton\" baseClass=\"${baseClass}\"\n\tdojoAttachEvent=\"onclick:_onButtonClick,onmouseover:_onMouse,onmouseout:_onMouse,onmousedown:_onMouseDown\"\n\t><div class='dijitRight'\n\t><button class=\"dijitStretch dijitButtonNode dijitButtonContents\" dojoAttachPoint=\"focusNode,titleNode\"\n\t\ttabIndex=\"${tabIndex}\" type=\"${type}\" id=\"${id}\" name=\"${name}\" waiRole=\"button\" waiState=\"labelledby-${id}_label\"\n\t\t><div class=\"dijitInline ${iconClass}\"></div\n\t\t><span class=\"dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\">${label}</span\n\t></button\n></div></div>\n", 
    3434 
    3535        // TODO: set button's title to this.containerNode.innerText 
    3636 
     37  // in Safari we need to prevent losing focus if we want to work with selections 
     38  _onMouseDown: function(/*Event*/ e){ 
     39    if(dojo.isSafari){ dojo.stopEvent(e); } 
     40    this._onMouse(e); 
     41  }, 
     42 
    3743        _onButtonClick: function(/*Event*/ e){ 
    3844                // summary: callback when the user mouse clicks the button portion 
    3945                dojo.stopEvent(e); 
     
    4753                if (this.showLabel == false){ 
    4854                        var labelText = ""; 
    4955                        this.label = this.containerNode.innerHTML; 
    50                         labelText = dojo.trim(this.containerNode.innerText || this.containerNode.textContent); 
     56                        // Safari 2.0.4: empty Strings in this.containerNode.innerText are treated 
     57                        //                                                       as false-values. this.containerNode.textContent otoh is  
     58                        //                                                       undefined. Use explicit typecast(?) to String to ensure  
     59                        //                                                       this call to dojo.trim doesn't kill our button.  
     60                        labelText = dojo.trim(this.containerNode.innerText || this.containerNode.textContent || ''); 
    5161                        // set title attrib on iconNode 
    5262                        this.titleNode.title=labelText; 
    5363                        dojo.addClass(this.containerNode,"dijitDisplayNone"); 
     
    234244dojo.declare("dijit.form.ComboButton", dijit.form.DropDownButton, { 
    235245        // summary 
    236246        //              left side is normal button, right side displays menu 
    237         templateString:"<table class='dijit dijitReset dijitInline dijitLeft dijitComboButton'  baseClass='dijitComboButton'\n\tid=\"${id}\" name=\"${name}\" cellspacing='0' cellpadding='0'\n\tdojoAttachEvent=\"onmouseover:_onMouse,onmouseout:_onMouse,onmousedown:_onMouse\">\n\t<tr>\n\t\t<td\tclass=\"dijitStretch dijitButtonContents dijitButtonNode\"\n\t\t\ttabIndex=\"${tabIndex}\"\n\t\t\tdojoAttachEvent=\"ondijitclick:_onButtonClick\"  dojoAttachPoint=\"titleNode\"\n\t\t\twaiRole=\"button\" waiState=\"labelledby-${id}_label\">\n\t\t\t<div class=\"dijitInline ${iconClass}\"></div>\n\t\t\t<span class=\"dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\">${label}</span>\n\t\t</td>\n\t\t<td class='dijitReset dijitRight dijitButtonNode dijitDownArrowButton'\n\t\t\tdojoAttachPoint=\"popupStateNode,focusNode\"\n\t\t\tdojoAttachEvent=\"onmouseover:_onMouse,onmouseout:_onMouse,onmousedown:_onMouse,ondijitclick:_onArrowClick, onkeypress:_onKey\"\n\t\t\tbaseClass=\"dijitComboButtonDownArrow\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\ttabIndex=\"${tabIndex}\"\n\t\t\twaiRole=\"button\" waiState=\"haspopup-true\"\n\t\t><div waiRole=\"presentation\">&#9660;</div>\n\t</td></tr>\n</table>\n", 
     247        templateString:"<table class='dijit dijitReset dijitInline dijitLeft dijitComboButton'  baseClass='dijitComboButton'\n\tid=\"${id}\" name=\"${name}\" cellspacing='0' cellpadding='0'\n\tdojoAttachEvent=\"onmouseover:_onMouse,onmouseout:_onMouse,onmousedown:_onMouseDown\">\n\t<tr>\n\t\t<td\tclass=\"dijitStretch dijitButtonContents dijitButtonNode\"\n\t\t\ttabIndex=\"${tabIndex}\"\n\t\t\tdojoAttachEvent=\"ondijitclick:_onButtonClick\"  dojoAttachPoint=\"titleNode\"\n\t\t\twaiRole=\"button\" waiState=\"labelledby-${id}_label\">\n\t\t\t<div class=\"dijitInline ${iconClass}\"></div>\n\t\t\t<span class=\"dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\">${label}</span>\n\t\t</td>\n\t\t<td class='dijitReset dijitRight dijitButtonNode dijitDownArrowButton'\n\t\t\tdojoAttachPoint=\"popupStateNode,focusNode\"\n\t\t\tdojoAttachEvent=\"onmouseover:_onMouse,onmouseout:_onMouse,onmousedown:_onMouse,ondijitclick:_onArrowClick, onkeypress:_onKey\"\n\t\t\tbaseClass=\"dijitComboButtonDownArrow\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\ttabIndex=\"${tabIndex}\"\n\t\t\twaiRole=\"button\" waiState=\"haspopup-true\"\n\t\t><div waiRole=\"presentation\">&#9660;</div>\n\t</td></tr>\n</table>\n", 
    238248 
    239249        // optionsTitle: String 
    240250        //  text that describes the options menu (accessibility)