Changeset 69


Ignore:
Timestamp:
04/13/05 10:04:25 (13 years ago)
Author:
guillaumed
Message:

Ticket 93 and 125. Seems to work but parts of code is written to walk around FF "features"...

Also use registerPlugin in registerPlugins..

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/htmlarea.js

    r64 r69  
    13851385  } 
    13861386 
     1387  HTMLArea.prototype.editorIsActivated = function() { 
     1388    try { 
     1389      if (HTMLArea.is_gecko) return (this._doc.designMode == 'on'); 
     1390      else return (this._doc.body.contentEditable); 
     1391    } catch (e) 
     1392    { 
     1393      return false; 
     1394    } 
     1395  } 
     1396 
    13871397  HTMLArea.prototype.activateEditor = function() 
    13881398  { 
    13891399    if (HTMLArea.is_gecko && this._doc.designMode != 'on') 
    1390     { 
    1391       try{HTMLArea.last_on.designMode = 'off';} catch(e) { } 
    1392       if(this._iframe.style.display == 'none') 
     1400    try { 
     1401     
     1402      // cannot set design mode if no display 
     1403      if (this._iframe.style.display == 'none') 
    13931404      { 
    13941405        this._iframe.style.display = ''; 
     
    14001411        this._doc.designMode = 'on'; 
    14011412      } 
    1402     } 
     1413    } catch (e) {} 
    14031414    else 
    14041415    { 
    14051416      this._doc.body.contentEditable = true; 
    14061417    } 
    1407     HTMLArea.last_on = this._doc; 
    14081418  } 
    14091419 
    14101420  HTMLArea.prototype.deactivateEditor = function() 
    14111421  { 
    1412     if(HTMLArea.is_gecko && this._doc.designMode == 'on') 
    1413     { 
    1414       this._doc.designMode = 'off'; 
    1415       HTMLArea.last_on = null; 
     1422    if (HTMLArea.is_gecko && this._doc.designMode != 'off') 
     1423    { 
     1424      try {this._doc.designMode = 'off';} catch (e) {} 
    14161425    } 
    14171426    else 
     
    14271436    try 
    14281437    { 
    1429       doc = editor._iframe.contentWindow.document; 
    1430       if (!doc) { 
    1431         // Try again.. 
    1432         // FIXME: don't know what else to do here.  Normally 
    1433         // we'll never reach this point. 
     1438      if (editor._iframe.contentDocument) 
     1439      { 
     1440        this._doc = editor._iframe.contentDocument; 
     1441      } 
     1442      else 
     1443      { 
     1444        this._doc = editor._iframe.contentWindow.document; 
     1445      } 
     1446      doc = this._doc; 
     1447      if (!doc) { // try later 
    14341448        if (HTMLArea.is_gecko) { 
    14351449          setTimeout(function() { editor.initIframe()}, 50); 
     
    14391453        } 
    14401454      } 
     1455      editor.activateEditor(); 
    14411456    } 
    14421457    catch(e) 
    1443     { 
     1458    { // try later 
    14441459      setTimeout(function() { editor.initIframe()}, 50); 
    14451460    } 
    14461461 
     1462    doc.open(); 
    14471463    if (!editor.config.fullPage) { 
    1448       doc.open(); 
    14491464      var html = "<html>\n"; 
    14501465      html += "<head>\n"; 
     
    14761491      html += "</body>\n"; 
    14771492      html += "</html>"; 
    1478       doc.write(html); 
    1479       doc.close(); 
    14801493    } else { 
    14811494      var html = editor.inwardHtml(editor._textArea.value); 
     
    14841497        html = html.replace(HTMLArea.RE_doctype, ""); 
    14851498      } 
    1486       doc.open(); 
    1487       doc.write(html); 
    1488       doc.close(); 
    1489     } 
    1490  
    1491     this._doc = doc; 
    1492  
    1493     // If we have multiple editors some bug in Mozilla makes some lose editing ability 
     1499    } 
     1500    doc.write(html); 
     1501    doc.close(); 
     1502     
     1503    // redo it for some obscure reason that IE need it.. 
     1504    editor.activateEditor(); 
     1505     
     1506    // if we have multiple editors some bug in Mozilla makes some lose editing ability 
    14941507    if(HTMLArea.is_gecko) 
    14951508    { 
     
    14991512        function() { editor.activateEditor();  } 
    15001513      ); 
    1501     } 
    1502     else 
    1503     { 
    1504       editor.activateEditor(); 
    15051514    } 
    15061515 
     
    15191528    } 
    15201529 
    1521     if(typeof editor._onGenerate == "function") { editor._onGenerate();} 
    1522  
    1523     setTimeout(function() { 
    1524 //      editor.updateToolbar(); 
     1530    // specific editor initialization 
     1531    if(typeof editor._onGenerate == "function") { 
     1532      editor._onGenerate(); 
     1533    } 
     1534 
     1535    // update toolbar (hope this will arrive enough late...) 
     1536    editor._timerToolbar = setTimeout(function() { 
     1537      editor.updateToolbar(); 
     1538      editor._timerToolbar = null; 
    15251539    }, 250); 
    1526  
    1527     if (typeof editor.onGenerate == "function") 
    1528       editor.onGenerate(); 
    15291540  } 
    15301541 
     
    19321943      { 
    19331944        // We don't want to focus the field unless at least one field has been activated. 
    1934         if(HTMLArea.last_on) 
     1945        if(!this.editorIsActivated()) 
    19351946        { 
    19361947          this.activateEditor(); 
     
    46694680  for(var x = 0; x < editor_names.length; x++) 
    46704681  { 
    4671     editors[editor_names[x]] = new HTMLArea(editor_names[x], HTMLArea.cloneObject(default_config)); 
    4672     if(plugin_names) 
    4673     { 
    4674       for(var i = 0; i < plugin_names.length; i++) 
    4675       { 
    4676         editors[editor_names[x]].registerPlugin(eval(plugin_names[i])); 
    4677       } 
    4678     } 
     4682    var editor = new HTMLArea(editor_names[x], HTMLArea.cloneObject(default_config)); 
     4683    editor.registerPlugins(plugin_names); 
     4684    editors[editor_names[x]] = editor; 
    46794685  } 
    46804686  return editors; 
Note: See TracChangeset for help on using the changeset viewer.