rev |
line source |
yuuji@586
|
1 (function (){
|
yuuji@586
|
2 function collectElementsByNameAttr(elm, name) {
|
yuuji@586
|
3 var e = document.getElementsByTagName(elm);
|
yuuji@586
|
4 if (!e) return null;
|
yuuji@586
|
5 var list = [];
|
yuuji@586
|
6 for (var i of e) {
|
yuuji@586
|
7 if (i.getAttribute("name") == name)
|
yuuji@586
|
8 list.push(i)
|
yuuji@586
|
9 }
|
yuuji@586
|
10 return list;
|
yuuji@586
|
11 }
|
yuuji@586
|
12 function insertRedirect(e) {
|
yuuji@586
|
13 var articleId, textarea = document.getElementById("text");
|
yuuji@586
|
14 var p = e.target, checked = p.checked;
|
yuuji@586
|
15 while (p = p.parentNode)
|
yuuji@586
|
16 if (p.nodeName.match(/^td$/i)) break;
|
yuuji@586
|
17 if (!p) return;
|
yuuji@586
|
18 while (p = p.nextSibling)
|
yuuji@586
|
19 if (p.nodeName.match(/^td$/i)) break;
|
yuuji@586
|
20 if (!p) return;
|
yuuji@586
|
21 articleId = p.getAttribute("id");
|
yuuji@586
|
22 if (textarea && articleId) {
|
yuuji@586
|
23 var tv = textarea.value, lines;
|
yuuji@586
|
24 if (tv)
|
yuuji@586
|
25 lines = tv.split("\n");
|
yuuji@586
|
26 else
|
yuuji@586
|
27 lines = [""];
|
yuuji@586
|
28 var re = new RegExp("[, ]*#"+articleId+"(?![0-9])");
|
yuuji@586
|
29 if (checked) {
|
yuuji@586
|
30 if (!lines[0].match(re)) {
|
yuuji@586
|
31 var re2 = new RegExp(/>#[#0-9, ]+[0-9]/);
|
yuuji@586
|
32 if (lines[0].match(re2))
|
yuuji@586
|
33 lines[0] = lines[0].replace(
|
yuuji@586
|
34 re2, '$&, '+'#'+articleId);
|
yuuji@586
|
35 else {
|
yuuji@586
|
36 if (lines[0] > "") lines[0] = " "+lines[0];
|
yuuji@586
|
37 lines[0] = ">#"+articleId+lines[0];
|
yuuji@586
|
38 }
|
yuuji@586
|
39 }
|
yuuji@586
|
40 } else { // Remove #xxxxx
|
yuuji@586
|
41 if (lines[0].match(/^>#[0-9 ,]+#/)) // 2 or more #id's
|
yuuji@586
|
42 lines[0] = lines[0].replace(
|
yuuji@586
|
43 new RegExp("^>#"+articleId+"[ ,]*"), ">").replace(
|
yuuji@586
|
44 new RegExp("[ ,]*#"+articleId), "");
|
yuuji@586
|
45 else {
|
yuuji@586
|
46 lines[0] = lines[0].replace(
|
yuuji@586
|
47 new RegExp(">#"+articleId+"[ ,]*"), "");
|
yuuji@586
|
48 }
|
yuuji@586
|
49 }
|
yuuji@586
|
50 lines[0] = lines[0].replace(/^> *$/, '');
|
yuuji@586
|
51 textarea.value = lines.join("\n");
|
yuuji@586
|
52 }
|
yuuji@586
|
53 }
|
yuuji@586
|
54 function init(){
|
yuuji@586
|
55 var el, check = collectElementsByNameAttr("input", "notifyto");
|
yuuji@586
|
56 if (check)
|
yuuji@586
|
57 for (var i of check) {
|
yuuji@586
|
58 i.addEventListener("click", insertRedirect, null);
|
yuuji@586
|
59 }
|
yuuji@586
|
60 }
|
yuuji@586
|
61 document.addEventListener('DOMContentLoaded', init, null);
|
yuuji@586
|
62 })();
|