annotate s4-main.js @ 847:a9e147e355fd

Do not file helper when no pattern matches
author HIROSE Yuuji <yuuji@gentei.org>
date Fri, 26 Jun 2020 22:28:59 +0900
parents 9c4e16c173db
children 3e09ac711f69
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1 (function (){
667
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
2 function collectElementsByAttr(elm, attr, val) {
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3 var e = document.getElementsByTagName(elm);
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
4 if (!e) return null;
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
5 var list = [];
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
6 for (var i of e) {
667
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
7 if (i.getAttribute(attr) == val)
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
8 list.push(i)
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
9 }
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
10 return list;
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
11 }
675
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
12 function nthChildOf(parent, n, elem) { // Return Nth child of type ELEM
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
13 // N begins with 1
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
14 var i=0;
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
15 var le = elem.toLowerCase();
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
16 for (var c of parent.childNodes) {
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
17 if (!c.tagName) continue;
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
18 if (c.tagName.toLowerCase() == le) {
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
19 if (++i >= n) return c;
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
20 }
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
21 }
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
22 return null;
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
23 }
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
24 function insertRedirect(e) {
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
25 var articleId, textarea = document.getElementById("text");
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
26 var p = e.target, checked = p.checked;
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
27 while (p = p.parentNode)
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
28 if (p.nodeName.match(/^td$/i)) break;
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
29 if (!p) return;
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
30 while (p = p.nextSibling)
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
31 if (p.nodeName.match(/^td$/i)) break;
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
32 if (!p) return;
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
33 articleId = p.getAttribute("id");
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
34 if (textarea && articleId) {
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
35 var tv = textarea.value, lines;
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
36 if (tv)
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
37 lines = tv.split("\n");
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
38 else
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
39 lines = [""];
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
40 var re = new RegExp("[, ]*#"+articleId+"(?![0-9])");
590
f480fa97fba6 Redirection also inserted by #XXX anchors
HIROSE Yuuji <yuuji@gentei.org>
parents: 586
diff changeset
41 checked = (p.nodeName.match(/^input$/)
f480fa97fba6 Redirection also inserted by #XXX anchors
HIROSE Yuuji <yuuji@gentei.org>
parents: 586
diff changeset
42 ? p.checked // checkbox obeys its status
f480fa97fba6 Redirection also inserted by #XXX anchors
HIROSE Yuuji <yuuji@gentei.org>
parents: 586
diff changeset
43 : !lines[0].match(re)) // a-elment toggles redirection
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
44 if (checked) {
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
45 if (!lines[0].match(re)) {
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
46 var re2 = new RegExp(/>#[#0-9, ]+[0-9]/);
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
47 if (lines[0].match(re2))
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
48 lines[0] = lines[0].replace(
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
49 re2, '$&, '+'#'+articleId);
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
50 else {
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
51 if (lines[0] > "") lines[0] = " "+lines[0];
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
52 lines[0] = ">#"+articleId+lines[0];
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
53 }
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
54 }
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
55 } else { // Remove #xxxxx
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
56 if (lines[0].match(/^>#[0-9 ,]+#/)) // 2 or more #id's
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
57 lines[0] = lines[0].replace(
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
58 new RegExp("^>#"+articleId+"[ ,]*"), ">").replace(
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
59 new RegExp("[ ,]*#"+articleId), "");
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
60 else {
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
61 lines[0] = lines[0].replace(
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
62 new RegExp(">#"+articleId+"[ ,]*"), "");
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
63 }
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
64 }
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
65 lines[0] = lines[0].replace(/^> *$/, '');
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
66 textarea.value = lines.join("\n");
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
67 }
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
68 }
659
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
69 function reverseChecks() {
667
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
70 var names = collectElementsByAttr("input", "name", "usel");
659
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
71 for (let u of names) {
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
72 u.checked = !u.checked;
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
73 }
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
74 }
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
75 function helpMarkdown(e) {
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
76 //alert(e.keyCode);
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
77 if (e.keyCode == 13) {
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
78 var area = e.target;
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
79 var pos = area.selectionStart, text = area.value;
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
80 if (pos==0) return;
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
81 var last = text.lastIndexOf("\n", pos-1);
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
82 var rest = text.substring(pos);
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
83 var line = last ? text.substring(last+1) : text;
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
84 var tail = text.substring(pos-2, pos), br = (tail==" ");
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
85 var add = "", offset = 1;
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
86 if (line.startsWith("* ")) {
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
87 add = "* ";
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
88 offset += add.length;
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
89 if (br) {
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
90 add = " " + "\n" + add;
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
91 }
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
92 } else if (line.match(/^([1-9][0-9]*)\. /)) {
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
93 ln = parseInt(RegExp.$1);
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
94 add = (ln+1)+". ";
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
95 offset += add.length;
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
96 if (br) {
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
97 add = " ".repeat(RegExp.$1.length+2) + "\n" + add;
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
98 }
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
99 } else if (line.match(/^\|( *).+\|/)) {
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
100 alert("table");
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
101 add = "|" + RegExp.$1 + " |";
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
102 offset += add.length-2;
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
103 } else {
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
104 return;
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
105 }
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
106 e.preventDefault();
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
107 area.value = text.substring(0, pos) + "\n" + add + rest;
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
108 //area.setSelectionRange(pos+length(add));
847
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
109 area.selectionStart=area.selectionEnd = (pos + offset);
a9e147e355fd Do not file helper when no pattern matches
HIROSE Yuuji <yuuji@gentei.org>
parents: 846
diff changeset
110
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
111 }
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
112 }
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
113 /* Init event listeners */
837
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
114 function addFileInput() {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
115 var inpfile = collectElementsByAttr("input", "name", "image");
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
116 if (!inpfile) return;
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
117 var filled = true;
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
118 var i, ih;
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
119 for (i of inpfile) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
120 if (! i.value) filled=false;
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
121 }
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
122 if (filled) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
123 ih = i.parentNode.innerHTML;
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
124 if (ih) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
125 var inpf = ih.substring(ih.indexOf("<input")),
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
126 newi = "<br>"+inpf.substring(0, inpf.indexOf(">")+1);
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
127 i.insertAdjacentHTML("afterend", newi)
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
128 // alert(newi);
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
129 }
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
130 }
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
131 }
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
132 function initFileInput() { // Multiplies "input type=file"
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
133 var el, morefile = document.getElementById("morefile");
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
134 if (morefile) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
135 for (el of collectElementsByAttr("input", "name", "image")) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
136 el.addEventListener("change", function(ev) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
137 if (ev.target.value > "" && ev.target.files.length == 1)
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
138 morefile.style.visibility = "visible";
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
139 // No need to hide again, sure?
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
140 });
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
141 }
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
142 morefile.addEventListener("click", addFileInput, null);
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
143 }
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
144 // When renaming, select basename part
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
145 for (el of collectElementsByAttr("input", "class", "mv")) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
146 el.addEventListener("focus", function(ev) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
147 var i = ev.target;
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
148 if (i) {
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
149 i.setSelectionRange(0, i.value.lastIndexOf("."));
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
150 }
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
151 });
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
152 }
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
153 }
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
154 function initTextarea() {
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
155 var te = collectElementsByAttr("textarea", "name", "text");
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
156 if (!te || !te[0]) return;
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
157 te[0].addEventListener("keydown", helpMarkdown, false);
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
158 }
659
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
159 function initBlogs() {
837
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
160 // Auto-complete #xxxx
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
161 var check = collectElementsByAttr("input", "name", "notifyto");
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
162 if (check)
590
f480fa97fba6 Redirection also inserted by #XXX anchors
HIROSE Yuuji <yuuji@gentei.org>
parents: 586
diff changeset
163 for (let i of check) {
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
164 i.addEventListener("click", insertRedirect, null);
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
165 }
590
f480fa97fba6 Redirection also inserted by #XXX anchors
HIROSE Yuuji <yuuji@gentei.org>
parents: 586
diff changeset
166 for (let i of document.getElementsByTagName("a"))
f480fa97fba6 Redirection also inserted by #XXX anchors
HIROSE Yuuji <yuuji@gentei.org>
parents: 586
diff changeset
167 if (i.getAttribute("href").match(/^#[0-9]+$/))
f480fa97fba6 Redirection also inserted by #XXX anchors
HIROSE Yuuji <yuuji@gentei.org>
parents: 586
diff changeset
168 if (RegExp.lastMatch == i.innerHTML)
f480fa97fba6 Redirection also inserted by #XXX anchors
HIROSE Yuuji <yuuji@gentei.org>
parents: 586
diff changeset
169 i.addEventListener("click", insertRedirect, null)
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
170 }
659
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
171 function initGrpAction() {
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
172 var rev = document.getElementById("reverse");
667
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
173 if (!rev) return; // Is not grpAction page
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
174 if (rev.tagName.match(/span/i)) {
659
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
175 rev.textContent = " 反転 ";
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
176 rev.addEventListener("click", reverseChecks, null);
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
177 }
667
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
178 var emailbtn = document.getElementById("email");
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
179 emailbtn.addEventListener("click", function(ev){
675
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
180 // Enlarge box and Select user's checkbox
667
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
181 if (!ev.target.checked) return;
673
42bf03cb3712 Enlarge div of form field when bring them visible
HIROSE Yuuji <yuuji@gentei.org>
parents: 667
diff changeset
182 var x = collectElementsByAttr("div", "class", "foldtabs");
42bf03cb3712 Enlarge div of form field when bring them visible
HIROSE Yuuji <yuuji@gentei.org>
parents: 667
diff changeset
183 if (x && x[0] && x[0].style) {
42bf03cb3712 Enlarge div of form field when bring them visible
HIROSE Yuuji <yuuji@gentei.org>
parents: 667
diff changeset
184 x[0].style.height = "10em";
42bf03cb3712 Enlarge div of form field when bring them visible
HIROSE Yuuji <yuuji@gentei.org>
parents: 667
diff changeset
185 }
667
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
186 let myuid = document.getElementById("myuid");
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
187 if (myuid) {
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
188 let usel = collectElementsByAttr("input", "name", "usel");
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
189 if (usel) {
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
190 for (u of usel) {
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
191 if (u.value == myuid.value)
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
192 u.checked = true;
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
193 }
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
194 }
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
195 }
9ee0e242c25a Grp-Message customized for Report-handout
HIROSE Yuuji <yuuji@gentei.org>
parents: 659
diff changeset
196 }, null);
675
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
197 var teamsel = document.getElementById("selteam");
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
198 if (teamsel) {
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
199 var usel, p, team;
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
200 // Select all members of the team
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
201 teamsel.addEventListener("change", function(ev) {
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
202 var teamname = teamsel.value,
676
cd6f0badcff4 \b cannot be used for Japanese boundary...
HIROSE Yuuji <yuuji@gentei.org>
parents: 675
diff changeset
203 selected = new RegExp('(^| )'+teamname+"($|,)");
675
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
204 usel = collectElementsByAttr("input", "name", "usel");
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
205 if (!usel) return;
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
206 for (u of usel) {
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
207 p = u.parentNode; // should be label
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
208 if (!p) continue;
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
209 if (teamname == "TEAM") { // Reset all checks
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
210 u.checked = false; // when "TEAM" is selected
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
211 } else {
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
212 p = p.parentNode.parentNode;// should be tr
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
213 team = nthChildOf(p, 3, "td")
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
214 if (team && team.textContent
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
215 && team.textContent.match(selected)) {
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
216 u.checked = true;
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
217 }
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
218 }
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
219 }
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
220 }, null);
9c54908814be Team selection in GrpAction anabled with js
HIROSE Yuuji <yuuji@gentei.org>
parents: 673
diff changeset
221 }
659
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
222 }
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
223 function init() {
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
224 initGrpAction();
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
225 initBlogs();
837
a6462eea48be Multiple files upload for tablets added and file renaming fixed
HIROSE Yuuji <yuuji@gentei.org>
parents: 676
diff changeset
226 initFileInput();
846
9c4e16c173db Add support for small help on describing markdown
HIROSE Yuuji <yuuji@gentei.org>
parents: 837
diff changeset
227 initTextarea();
659
a36a2c3b3056 GrpAction: Reverse selection and supplemental rcpt address
HIROSE Yuuji <yuuji@gentei.org>
parents: 590
diff changeset
228 }
586
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
229 document.addEventListener('DOMContentLoaded', init, null);
a03bfd5d242a First trial of js interaction.
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
230 })();

yatex.org