rev |
line source |
yuuji@586
|
1 (function (){
|
yuuji@667
|
2 function collectElementsByAttr(elm, attr, val) {
|
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@667
|
7 if (i.getAttribute(attr) == val)
|
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@590
|
29 checked = (p.nodeName.match(/^input$/)
|
yuuji@590
|
30 ? p.checked // checkbox obeys its status
|
yuuji@590
|
31 : !lines[0].match(re)) // a-elment toggles redirection
|
yuuji@586
|
32 if (checked) {
|
yuuji@586
|
33 if (!lines[0].match(re)) {
|
yuuji@586
|
34 var re2 = new RegExp(/>#[#0-9, ]+[0-9]/);
|
yuuji@586
|
35 if (lines[0].match(re2))
|
yuuji@586
|
36 lines[0] = lines[0].replace(
|
yuuji@586
|
37 re2, '$&, '+'#'+articleId);
|
yuuji@586
|
38 else {
|
yuuji@586
|
39 if (lines[0] > "") lines[0] = " "+lines[0];
|
yuuji@586
|
40 lines[0] = ">#"+articleId+lines[0];
|
yuuji@586
|
41 }
|
yuuji@586
|
42 }
|
yuuji@586
|
43 } else { // Remove #xxxxx
|
yuuji@586
|
44 if (lines[0].match(/^>#[0-9 ,]+#/)) // 2 or more #id's
|
yuuji@586
|
45 lines[0] = lines[0].replace(
|
yuuji@586
|
46 new RegExp("^>#"+articleId+"[ ,]*"), ">").replace(
|
yuuji@586
|
47 new RegExp("[ ,]*#"+articleId), "");
|
yuuji@586
|
48 else {
|
yuuji@586
|
49 lines[0] = lines[0].replace(
|
yuuji@586
|
50 new RegExp(">#"+articleId+"[ ,]*"), "");
|
yuuji@586
|
51 }
|
yuuji@586
|
52 }
|
yuuji@586
|
53 lines[0] = lines[0].replace(/^> *$/, '');
|
yuuji@586
|
54 textarea.value = lines.join("\n");
|
yuuji@586
|
55 }
|
yuuji@586
|
56 }
|
yuuji@659
|
57 function reverseChecks() {
|
yuuji@667
|
58 var names = collectElementsByAttr("input", "name", "usel");
|
yuuji@659
|
59 for (let u of names) {
|
yuuji@659
|
60 u.checked = !u.checked;
|
yuuji@659
|
61 }
|
yuuji@659
|
62 }
|
yuuji@659
|
63 function initBlogs() {
|
yuuji@667
|
64 var el, check = collectElementsByAttr("input", "name", "notifyto");
|
yuuji@586
|
65 if (check)
|
yuuji@590
|
66 for (let i of check) {
|
yuuji@586
|
67 i.addEventListener("click", insertRedirect, null);
|
yuuji@586
|
68 }
|
yuuji@590
|
69 for (let i of document.getElementsByTagName("a"))
|
yuuji@590
|
70 if (i.getAttribute("href").match(/^#[0-9]+$/))
|
yuuji@590
|
71 if (RegExp.lastMatch == i.innerHTML)
|
yuuji@590
|
72 i.addEventListener("click", insertRedirect, null)
|
yuuji@586
|
73 }
|
yuuji@659
|
74 function initGrpAction() {
|
yuuji@659
|
75 var rev = document.getElementById("reverse");
|
yuuji@667
|
76 if (!rev) return; // Is not grpAction page
|
yuuji@667
|
77 if (rev.tagName.match(/span/i)) {
|
yuuji@659
|
78 rev.textContent = " 反転 ";
|
yuuji@659
|
79 rev.addEventListener("click", reverseChecks, null);
|
yuuji@659
|
80 }
|
yuuji@667
|
81 var emailbtn = document.getElementById("email");
|
yuuji@667
|
82 emailbtn.addEventListener("click", function(ev){
|
yuuji@667
|
83 if (!ev.target.checked) return;
|
yuuji@673
|
84 var x = collectElementsByAttr("div", "class", "foldtabs");
|
yuuji@673
|
85 if (x && x[0] && x[0].style) {
|
yuuji@673
|
86 x[0].style.height = "10em";
|
yuuji@673
|
87 }
|
yuuji@667
|
88 let myuid = document.getElementById("myuid");
|
yuuji@667
|
89 if (myuid) {
|
yuuji@667
|
90 let usel = collectElementsByAttr("input", "name", "usel");
|
yuuji@667
|
91 if (usel) {
|
yuuji@667
|
92 for (u of usel) {
|
yuuji@667
|
93 if (u.value == myuid.value)
|
yuuji@667
|
94 u.checked = true;
|
yuuji@667
|
95 }
|
yuuji@667
|
96 }
|
yuuji@667
|
97 }
|
yuuji@667
|
98 }, null);
|
yuuji@659
|
99 }
|
yuuji@659
|
100 function init() {
|
yuuji@659
|
101 initGrpAction();
|
yuuji@659
|
102 initBlogs();
|
yuuji@659
|
103 }
|
yuuji@586
|
104 document.addEventListener('DOMContentLoaded', init, null);
|
yuuji@586
|
105 })();
|