/[suikacvs]/markup/html/html5/spec-ja/ja-script.js
Suika

Diff of /markup/html/html5/spec-ja/ja-script.js

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by wakaba, Sun Oct 26 08:44:19 2008 UTC revision 1.7 by wakaba, Wed Oct 29 06:26:42 2008 UTC
# Line 1  Line 1 
1  window.onload = function () {  window.addEventListener ('load', function () {
2    createJaHashIndex ();    createJaHashIndex ();
3    
4    var req = new XMLHttpRequest ();    var req = new XMLHttpRequest ();
# Line 6  window.onload = function () { Line 6  window.onload = function () {
6    req.onreadystatechange = function () {    req.onreadystatechange = function () {
7      if (req.readyState == 4) {      if (req.readyState == 4) {
8        if (req.status >= 200 && req.status < 400) {        if (req.status >= 200 && req.status < 400) {
9          var updates = eval ('(' + req.responseText + ')');          applyJaUpdates (eval ('(' + req.responseText + ')'));
         for (var hash in updates) {  
           if (document.jaHashes[hash]) {  
             for (var i in document.jaHashes[hash]) {  
               applyJaEntry (document.jaHashes[hash][i], updates[hash]);  
             }  
           }  
           if (document.jaRealHashes[hash]) {  
             for (var i in document.jaRealHashes[hash]) {  
               applyJaEntry (document.jaRealHashes[hash][i], updates[hash]);  
             }  
           }  
         }  
10        }        }
11      }      }
12    }; // onreadystatechange    }; // onreadystatechange
13    req.send (null);    req.send (null);
14  }; // window.onload  }, false); // window.onload
15    
16  document.documentElement.ondblclick = function (event) {  document.documentElement.ondblclick = function (event) {
17    var container = getEJContainer (event.target);    var container = getEJContainer (event.target);
# Line 74  function insertJaForm (targetNode) { Line 62  function insertJaForm (targetNode) {
62    
63    form.innerHTML = "<p><label>Original text:<br><textarea name=en></textarea></label><br>\    form.innerHTML = "<p><label>Original text:<br><textarea name=en></textarea></label><br>\
64        (<label><input name=pattern type=checkbox> Pattern</label><span> <button type=button>Load original text</button></span>)\        (<label><input name=pattern type=checkbox> Pattern</label><span> <button type=button>Load original text</button></span>)\
65        <p><label>Translated text:<br><textarea name=ja></textarea></label><p><label>Tags:<br><textarea name=tags></textarea></label><p><button type=submit class=ja-save-button>Save and close</button> <button type=button class=ja-close-button>Close</button> (<output>Text not loaded yet</output>)";        <p><label>Translated text:<br><textarea name=ja></textarea></label><p><label>Tags:<br><textarea name=tags></textarea></label><p><button type=button class=ja-save-button>Save and close</button> <button type=button class=ja-close-button>Close</button> (<output>Text not loaded yet</output>; see also <a href='edit/#license'>license</a>)";
66        
67    form.onchange = function () {    form.onchange = function () {
68      form.jaFormChanged = true;      form.jaFormChanged = true;
# Line 115  function insertJaForm (targetNode) { Line 103  function insertJaForm (targetNode) {
103        v += '&pattern=on';        v += '&pattern=on';
104      }      }
105    
106        form.getElementsByTagName ('output')[0].firstChild.data
107            = 'Saving...';
108    
109      var req = new XMLHttpRequest ();      var req = new XMLHttpRequest ();
110      req.open ('POST', 'edit2/', true);      req.open ('POST', 'edit2/', true);
111      req.onreadystatechange = function () {      req.onreadystatechange = function () {
# Line 122  function insertJaForm (targetNode) { Line 113  function insertJaForm (targetNode) {
113          form.getElementsByTagName ('output')[0].firstChild.data          form.getElementsByTagName ('output')[0].firstChild.data
114              = 'Save: ' + req.status + ' ' + req.statusText;              = 'Save: ' + req.status + ' ' + req.statusText;
115          if (req.status >= 200 && req.status < 400) {          if (req.status >= 200 && req.status < 400) {
           applyJaEntry (targetNode, {ja: ta[1].value});  
116            targetNode.jaForm = null;            targetNode.jaForm = null;
117            form.parentNode.removeChild (form);            form.style.display = 'none';
118              setTimeout (function () {
119                form.parentNode.removeChild (form);
120                applyJaUpdates (eval ('(' + req.responseText + ')'));
121              }, 100);
122          }          }
123        }        }
124      }; // onreadystatechange      }; // onreadystatechange
# Line 178  function insertInterfaceElement (inserte Line 172  function insertInterfaceElement (inserte
172    while (true) {    while (true) {
173      if (!parent.parentNode) break;      if (!parent.parentNode) break;
174      var ln = parent.nodeName.toLowerCase ();      var ln = parent.nodeName.toLowerCase ();
175      if (ln == 'tr' || ln == 'tbody' || ln == 'thead' || ln == 'tfoot' ||      if (ln == 'tr' /*|| ln == 'tbody' || ln == 'thead' || ln == 'tfoot' ||
176          ln == 'table' || ln == 'pre') {          ln == 'table'*/ || ln == 'pre') {
177        prev = parent;        prev = parent;
178        parent = parent.parentNode;        parent = parent.parentNode;
179      } else {      } else {
180        break;        break;
181      }      }
182    }    }
   
183    parent.insertBefore (insertedElement, prev.nextSibling);    parent.insertBefore (insertedElement, prev.nextSibling);
184  } // insertInterfaceElement  } // insertInterfaceElement
185    
186    function applyJaUpdates (updates) {
187      for (var hash in updates) {
188        if (document.jaHashes[hash]) {
189          for (var i in document.jaHashes[hash]) {
190            applyJaEntry (document.jaHashes[hash][i], updates[hash]);
191          }
192        }
193        if (document.jaRealHashes[hash]) {
194          for (var i in document.jaRealHashes[hash]) {
195            applyJaEntry (document.jaRealHashes[hash][i], updates[hash]);
196          }
197        }
198      }
199    } // applyJaUpdates
200    
201  function applyJaEntry (targetNode, entry) {  function applyJaEntry (targetNode, entry) {
202    if (entry.isPattern) {    if (entry.isPattern || targetNode.nodeName == 'TR' /* find.cgi */) {
203      targetNode.className += ' ja-not-patched';      targetNode.className += ' ja-not-patched';
204    } else {    } else {
205      var en;      var en;
# Line 203  function applyJaEntry (targetNode, entry Line 211  function applyJaEntry (targetNode, entry
211          if (n.firstChild && n.firstChild.className == 'secno') {          if (n.firstChild && n.firstChild.className == 'secno') {
212            prefix = n.firstChild;            prefix = n.firstChild;
213          }          }
214          n.innerHTML = entry.ja;          n.innerHTML = formatJaText (entry.ja);
215          if (prefix) n.insertBefore (prefix, n.firstChild);          if (prefix) n.insertBefore (prefix, n.firstChild);
216          targetNode.className += ' ja-patched';          targetNode.className += ' ja-patched';
217          return;          return;
# Line 218  function applyJaEntry (targetNode, entry Line 226  function applyJaEntry (targetNode, entry
226      if (en.firstChild && en.firstChild.className == 'secno') {      if (en.firstChild && en.firstChild.className == 'secno') {
227        prefix = en.firstChild.cloneNode (true);        prefix = en.firstChild.cloneNode (true);
228      }      }
229      span.innerHTML = entry.ja;      span.innerHTML = formatJaText (entry.ja);
230      if (prefix) span.insertBefore (prefix, span.firstChild);      if (prefix) span.insertBefore (prefix, span.firstChild);
231      targetNode.appendChild (span);      targetNode.appendChild (span);
232      targetNode.className      targetNode.className
# Line 226  function applyJaEntry (targetNode, entry Line 234  function applyJaEntry (targetNode, entry
234              (/\bno-ja-translation\b/, 'has-ja-translation ja-patched');              (/\bno-ja-translation\b/, 'has-ja-translation ja-patched');
235    }    }
236  } // applyJaEntry  } // applyJaEntry
237    
238    function formatJaText (s) {
239      return s.replace
240          (/\[\[([A-Z ]+):([^\]]+)\]\]/g,
241           function (a, b, c) {
242             return "<em class=rfc2119 title=\"" + b + "\">" + c + "</em>";
243           });
244    } // formatJaText
245    
246    /*
247      Author: Wakaba <[email protected]>.
248      License: Copyright 2008 Wakaba.  You are granted a license to use,
249          reproduce and create derivative works of this script.
250      $Date$
251    */

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24