Changeset 943


Ignore:
Timestamp:
01/26/08 21:46:42 (12 years ago)
Author:
ray
Message:
  • #645 Save as function only saves the original html
  • #442 remove alert "Your Document is not well formed..."
  • #383 [ImageManager?][ExtendedFileManager?] Spanish translation
  • #1138 added API functions Xinha.getEditor(), Xinha.prototype.getPluginInstance(), Xinha.addOnloadHandler()
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/XinhaCore.js

    r940 r943  
    42224222}; 
    42234223 
     4224/** Returns a editor object referenced by the id or name of the textarea or the textarea node itself 
     4225 * For example to retrieve the HTML of an editor made out of the textarea with the id "myTextArea" you would do<br /> 
     4226 * <code> 
     4227 *       var editor = Xinha.getEditor("myTextArea"); 
     4228 *   var html = editor.getEditorContent();  
     4229 * </code> 
     4230 * @returns {Xinha|null}  
     4231 * @param {String|DomNode} ref id or name of the textarea or the textarea node itself 
     4232 */ 
     4233Xinha.getEditor = function(ref) 
     4234{ 
     4235  for ( var i = __xinhas.length; i--; ) 
     4236  { 
     4237    var editor = __xinhas[i]; 
     4238    if ( editor && ( editor._textArea.id == ref || editor._textArea.name == ref || editor._textArea == ref ) ) 
     4239    { 
     4240      return editor; 
     4241    } 
     4242  } 
     4243  return null; 
     4244}; 
     4245/** Sometimes one wants to call a plugin method directly, e.g. from outside the editor. 
     4246 * This function returns the respective editor's instance of a plugin. 
     4247 * For example you might want to have a button to trigger SaveSubmit's save() method:<br /> 
     4248 * <code> 
     4249 *       &lt;button type="button" onclick="Xinha.getEditor('myTextArea').getPluginInstance('SaveSubmit').save();return false;"&gt;Save&lt;/button&gt; 
     4250 * </code> 
     4251 * @returns {PluginObject|null}  
     4252 * @param {String} plugin name of the plugin 
     4253 */ 
     4254Xinha.prototype.getPluginInstance = function (plugin) 
     4255{ 
     4256  if (this.plugins[plugin]) 
     4257  { 
     4258    return this.plugins[plugin].instance; 
     4259  } 
     4260  else return null; 
     4261}; 
    42244262/** Returns an array with all the ancestor nodes of the selection or current cursor position. 
    42254263* @returns {Array} 
  • trunk/XinhaLoader.js

    r937 r943  
    196196    script.onreadystatechange = function() 
    197197    { 
    198       if (this.readyState == "complete") 
     198      if (this.readyState == "loaded") 
    199199      { 
    200200        init(); // call the onload handler 
  • trunk/modules/GetHtml/DOMwalk.js

    r871 r943  
    3838// Retrieves the HTML code from the given node.  This is a replacement for 
    3939// getting innerHTML, using standard DOM calls. 
    40 // Wrapper catch a Mozilla-Exception with non well formed html source code 
     40// Wrapper legacy see #442 
    4141Xinha.getHTML = function(root, outputRoot, editor) 
    4242{ 
    43   try 
    44   { 
    45     return Xinha.getHTMLWrapper(root,outputRoot,editor); 
    46   } 
    47   catch(ex) 
    48   {    
    49     alert(Xinha._lc('Your Document is not well formed. Check JavaScript console for details.')); 
    50     return editor._iframe.contentWindow.document.body.innerHTML; 
    51   } 
     43  return Xinha.getHTMLWrapper(root,outputRoot,editor); 
    5244}; 
    5345 
  • trunk/modules/InternetExplorer/InternetExplorer.js

    r901 r943  
    158158} 
    159159 
     160InternetExplorer.prototype.onExecCommand = function(cmdID, UI, param) 
     161{    
     162  switch(cmdID) 
     163  { 
     164    // #645 IE only saves the initial content of the iframe, so we create a temporary iframe with the current editor contents 
     165    case 'saveas': 
     166    { 
     167        var doc = null; 
     168        var editor = this.editor; 
     169        var iframe = document.createElement("iframe"); 
     170        iframe.src = "about:blank"; 
     171        iframe.style.display = 'none'; 
     172        document.body.appendChild(iframe); 
     173        try 
     174        { 
     175          if ( iframe.contentDocument ) 
     176          { 
     177            doc = iframe.contentDocument;         
     178          } 
     179          else 
     180          { 
     181            doc = iframe.contentWindow.document; 
     182          } 
     183        } 
     184        catch(ex) 
     185        {  
     186          //hope there's no exception 
     187        } 
     188         
     189        doc.open("text/html","replace"); 
     190        var html = ''; 
     191        if ( editor.config.browserQuirksMode === false ) 
     192        { 
     193          var doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; 
     194        } 
     195        else if ( editor.config.browserQuirksMode === true ) 
     196        { 
     197           var doctype = ''; 
     198        } 
     199        else 
     200        { 
     201           var doctype = Xinha.getDoctype(document); 
     202        } 
     203        if ( !editor.config.fullPage ) 
     204        { 
     205          html += doctype + "\n"; 
     206          html += "<html>\n"; 
     207          html += "<head>\n"; 
     208          html += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + editor.config.charSet + "\">\n"; 
     209          if ( typeof editor.config.baseHref != 'undefined' && editor.config.baseHref !== null ) 
     210          { 
     211            html += "<base href=\"" + editor.config.baseHref + "\"/>\n"; 
     212          } 
     213           
     214          if ( typeof editor.config.pageStyleSheets !== 'undefined' ) 
     215          { 
     216            for ( var i = 0; i < editor.config.pageStyleSheets.length; i++ ) 
     217            { 
     218              if ( editor.config.pageStyleSheets[i].length > 0 ) 
     219              { 
     220                html += "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + editor.config.pageStyleSheets[i] + "\">"; 
     221                //html += "<style> @import url('" + editor.config.pageStyleSheets[i] + "'); </style>\n"; 
     222              } 
     223            } 
     224          } 
     225           
     226          if ( editor.config.pageStyle ) 
     227          { 
     228            html += "<style type=\"text/css\">\n" + editor.config.pageStyle + "\n</style>"; 
     229          } 
     230           
     231          html += "</head>\n"; 
     232          html += "<body>\n"; 
     233          html += editor.getEditorContent(); 
     234          html += "</body>\n"; 
     235          html += "</html>"; 
     236        } 
     237        else 
     238        { 
     239          html = editor.getEditorContent(); 
     240          if ( html.match(Xinha.RE_doctype) ) 
     241          { 
     242            editor.setDoctype(RegExp.$1); 
     243          } 
     244        } 
     245        doc.write(html); 
     246        doc.close(); 
     247        doc.execCommand(cmdID, UI, param); 
     248        document.body.removeChild(iframe); 
     249      return true; 
     250    } 
     251  } 
     252   
     253  return false; 
     254}; 
    160255/*--------------------------------------------------------------------------*/ 
    161256/*------- IMPLEMENTATION OF THE ABSTRACT "Xinha.prototype" METHODS ---------*/ 
  • trunk/plugins/SaveSubmit/save-submit.js

    r903 r943  
    2121        image    : this.image_unchanged, 
    2222        textMode : false, 
    23         action   :  function(editor) { 
    24                         self.save(editor); 
     23        action   :  function() { 
     24                        self.save(); 
    2525                } 
    2626        }); 
     
    9393} 
    9494 
    95 SaveSubmit.prototype.save =  function(editor) { 
    96         this.buildMessage() 
     95SaveSubmit.prototype.save =  function() { 
     96        this.buildMessage(); 
     97        var editor = this.editor; 
    9798        var self =this; 
    9899        var form = editor._textArea.form; 
Note: See TracChangeset for help on using the changeset viewer.