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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download) (as text)
Sun Oct 26 06:50:10 2008 UTC (17 years, 8 months ago) by wakaba
Branch: MAIN
File MIME type: application/javascript
New version of editing interface/database, first revision

1 document.documentElement.ondblclick = function (event) {
2 var container = getEJContainer (event.target);
3 if (container && !container.jaForm) {
4 insertJaForm (container);
5 return false;
6 }
7
8 return true;
9 }; // document.documentElement.ondblclick
10
11 function getEJContainer (n) {
12 while (n) {
13 if (n.hasAttribute && n.hasAttribute ('data-ja-hash')) {
14 return n;
15 }
16 n = n.parentNode;
17 }
18 return null;
19 } // getEJContainer
20
21 function insertJaForm (targetNode) {
22 var form = document.createElement ('form');
23 form.action = 'javascript:void (0)';
24
25 form.innerHTML = "<p><label>Original text:<br><textarea name=en></textarea></label><br>(<label><input name=pattern type=checkbox> Pattern</label>)<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</button> <button type=button class=ja-close-button>Close</button>";
26
27 form.onchange = function () {
28 form.jaFormChanged = true;
29 }; // form.onchange
30
31 form.onsubmit = function () {
32 form.jaFormChanged = false;
33 }; // form.onsubmit
34
35 form.getElementsByTagName ('button')[0].disabled = true; // Submit
36
37 form.getElementsByTagName ('button')[1].onclick = function () {
38 if (!form.jaFormChanged ||
39 confirm ('Changes are discarded.')) {
40 targetNode.jaForm = null;
41 form.parentNode.removeChild (form);
42 }
43 }; // "Close".onclick
44
45 targetNode.jaForm = form;
46
47 var hash = targetNode.getAttribute ('data-ja-hash');
48 var req = new XMLHttpRequest ();
49 req.open ('GET', 'edit2/' + hash + '.json', true);
50 req.onreadystatechange = function () {
51 if (req.readyState == 4) {
52 if (req.status >= 200 && req.status < 400) {
53 var entry = eval ("(" + req.responseText + ")");
54
55 form.action = 'edit2/';
56 form.method = 'post';
57 form.acceptCharset = 'utf-8';
58
59 form.getElementsByTagName ('button')[0].disabled = false;
60
61 form.getElementsByTagName ('textarea')[0].value = entry.en;
62 form.getElementsByTagName ('textarea')[1].value = entry.ja || '';
63 form.getElementsByTagName ('textarea')[2].value = entry.tags.join ("\n");
64 form.getElementsByTagName ('input')[0].checked = entry.isPattern;
65
66 insertInterfaceElement (form, targetNode);
67 }
68 }
69 }; // onreadystatechange
70 req.send (null);
71 } // insertJaForm
72
73 function insertInterfaceElement (insertedElement, contextElement) {
74 var parent = contextElement.parentNode;
75 var prev = contextElement;
76 while (true) {
77 if (!parent.parentNode) break;
78 var ln = parent.nodeName.toLowerCase ();
79 if (ln == 'tr' || ln == 'tbody' || ln == 'thead' || ln == 'tfoot' ||
80 ln == 'table' || ln == 'pre') {
81 prev = parent;
82 parent = parent.parentNode;
83 } else {
84 break;
85 }
86 }
87
88 parent.insertBefore (insertedElement, prev.nextSibling);
89 } // insertInterfaceElement

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24