Browse code

Rename plugin

Dmitrii Kashin authored on 22/11/2016 16:53:31
Showing 2 changed files
1 1
deleted file mode 100644
... ...
@@ -1,158 +0,0 @@
1
-// ==UserScript==
2
-// @name        OpenNet Mod Tools
3
-// @namespace   opennet-mod-tools
4
-// @description Extend interface functionality for OpenNet moderators
5
-// @include     https://www.opennet.ru/openforum/vsluhforumID3/*
6
-// @version     0.2
7
-// @grant       none
8
-// ==/UserScript==
9
-
10
-/* Данный userscript создан для облегчения задачи модерирования проекта opennet
11
- * Я не вебник, так что нахакал как сумел
12
- * Функциональность состоит из двух частей:
13
- * 1) Расстановки тегов
14
- * 2) Отслеживанием сообщений по ip
15
- *
16
- * Теги расставляются при помощи праввки исходного кода скрипта, пример показан ниже.
17
- * Отслеживание по ip производится при нажатии на кнопку (((>o<))), которая есть у каждого сообщения.
18
- * При этом сообщения в новости, сделанные с одного ip-адреса окрашиваются в розовый цвет.
19
- * Также при отслеживании полезно открыть js-консоль (Shift+Ctrl+J):
20
- * При отслеживании туда выводится информация об количестве сообщений пользователя и ссылки на все найденные его сообщения.
21
- *
22
- * Надо иметь в виду, что реально помеченных сообщений может быть меньше найденных.
23
- * Это связано с тем, что какие-то сообщения могут быть либо удалены, либо одно из них
24
- * собственно сама новость и есть.
25
- * 
26
- * Также, поскольку отслеживание ведётся путём грепанья лога, в темах недельной давности отслеживание работать не будет.
27
-*/
28
-
29
-
30
-// определение news_id:
31
-// работает для ссылок типа 
32
-// https://www.opennet.ru/openforum/vsluhforumID3/109668.html
33
-
34
-function last (lst) {
35
-  return lst[lst.length-1]
36
-}
37
-
38
-var news_id = last(document.location.href.split("/")).match(/\d+/)[0];
39
-
40
-var utags = {};
41
-
42
-// теги
43
-let mod = "mod" // модераторы
44
-let smart = "smart" // стоит прислушаться
45
-let fat = "дебил" // толстые тролли
46
-let troll = "troll" // тонкие тролли
47
-let mssp = "mssp" // страх и ненависть Шигорина
48
-
49
-// люди
50
-utags["freehck"] = [mod]
51
-utags["Michael Shigorin"] = [mod]
52
-utags["Сергей"] = [fat]
53
-utags["Celcion"] = [smart]
54
-utags["Crazy Alex"] = [smart]
55
-utags["Andrey Mitrofanov"] = [smart]
56
-
57
-// расстановка тэгов
58
-var links = document.getElementsByTagName("a");
59
-for (i in links) {
60
-  name = links[i].text;
61
-  if (name in utags) {
62
-      links[i].parentElement.innerHTML = "<a href=\"" + links[i].href + "\">" + links[i].text + "</a> " +
63
-                                         "[" + utags[name].toString() + "]"
64
-   };
65
-};
66
-
67
-// раскраска сообщений
68
-
69
-function li_msg_id (id) {
70
-  return ("t" + id)
71
-}
72
-
73
-function mark_li (id, color) {
74
-  let elem = document.getElementById(li_msg_id(id));
75
-  if (elem != null)
76
-    elem.style.backgroundColor = color
77
-}
78
-
79
-// раскраска сообщений
80
-
81
-function msg_id (id) {
82
-  return ("m" + id)
83
-}
84
-
85
-function mark_msg (id, color) {
86
-  let elem = document.getElementById(msg_id(id));
87
-  if (elem != null) { // если сообщение удалено модератором
88
-    var tbl = elem.parentElement;
89
-    tbl.getElementsByTagName("blockquote")[0].style.backgroundColor = color;
90
-  }
91
-}
92
-
93
-function mark (id, color) {
94
-  mark_msg(id, color);
95
-  mark_li(id, color);
96
-}
97
-
98
-var MARKED_IDS = [];
99
-
100
-function mark_all (ids, color) {
101
-  for (var i=0; i<ids.length; i++) {if (ids[i] != 0) mark(ids[i], color)} // сравнение исключает саму новость
102
-}
103
-
104
-function unmark_all () {
105
-  for (var i=0; i<MARKED_IDS.length; i++) {if (MARKED_IDS[i] != 0) mark(MARKED_IDS[i], "#DDE1C2")}
106
-}
107
-
108
-function num_of_str (s) {
109
-  return (s.match(/\d+/)[0])
110
-}
111
-
112
-function lookup_url (news_id, id) {
113
-    return ("https://www.opennet.ru/cgi-bin/openforum/a/show_ip.cgi?forum=vsluhforumID3&om="+news_id+"&omm="+id)
114
-  }
115
-
116
-function get_content () {
117
-    alert( this.responseText );
118
-  }
119
-
120
-function get_content_and_hl () {
121
-    let content = this.responseXML;
122
-    let links = content.getElementsByTagName("a");
123
-    console.log("---------------------")
124
-    var hl_ids = [];
125
-    for (var i=0; i<links.length; i++) {
126
-      console.log(links[i].href);
127
-      var [some_news_id, msg_id] = last(links[i].href.split("/")).match(/\d+/g);
128
-      if (some_news_id == news_id) {
129
-        hl_ids.push(msg_id);
130
-      }
131
-    }
132
-    console.log("Total messages found: "+links.length);
133
-    console.log("Messages in this news: "+hl_ids.length);
134
-    unmark_all();
135
-    mark_all(hl_ids, "pink");
136
-    MARKED_IDS = hl_ids;
137
-  }
138
-  
139
-function lookup_msg_id (news_id, id) {
140
-    var req = new XMLHttpRequest();
141
-    req.addEventListener("load", get_content_and_hl);
142
-    req.open("GET", (lookup_url(news_id, id)));
143
-    req.withCredentials = true;
144
-    req.responseType = "document";
145
-    req.send()
146
-  }
147
-
148
-var msgs = document.querySelectorAll('[id^=m]');
149
-for (var i=0; i<msgs.length; i++) {
150
-  let message = msgs[i];
151
-  let id = num_of_str(msgs[i].id);
152
-  let lookup = message.getElementsByTagName("a")[0].parentElement
153
-  .appendChild(document.createTextNode(" ")).parentElement
154
-  .appendChild(document.createElement("b"))
155
-  .appendChild(document.createElement("a"));
156
-  lookup.onclick = function () {lookup_msg_id(news_id, id)};
157
-  lookup.text = "(((>o<)))";
158
-}
159 1
new file mode 100644
... ...
@@ -0,0 +1,158 @@
0
+// ==UserScript==
1
+// @name        OpenNet Mod Tools
2
+// @namespace   opennet-mod-tools
3
+// @description Extend interface functionality for OpenNet moderators
4
+// @include     https://www.opennet.ru/openforum/vsluhforumID3/*
5
+// @version     0.2
6
+// @grant       none
7
+// ==/UserScript==
8
+
9
+/* Данный userscript создан для облегчения задачи модерирования проекта opennet
10
+ * Я не вебник, так что нахакал как сумел
11
+ * Функциональность состоит из двух частей:
12
+ * 1) Расстановки тегов
13
+ * 2) Отслеживанием сообщений по ip
14
+ *
15
+ * Теги расставляются при помощи праввки исходного кода скрипта, пример показан ниже.
16
+ * Отслеживание по ip производится при нажатии на кнопку (((>o<))), которая есть у каждого сообщения.
17
+ * При этом сообщения в новости, сделанные с одного ip-адреса окрашиваются в розовый цвет.
18
+ * Также при отслеживании полезно открыть js-консоль (Shift+Ctrl+J):
19
+ * При отслеживании туда выводится информация об количестве сообщений пользователя и ссылки на все найденные его сообщения.
20
+ *
21
+ * Надо иметь в виду, что реально помеченных сообщений может быть меньше найденных.
22
+ * Это связано с тем, что какие-то сообщения могут быть либо удалены, либо одно из них
23
+ * собственно сама новость и есть.
24
+ * 
25
+ * Также, поскольку отслеживание ведётся путём грепанья лога, в темах недельной давности отслеживание работать не будет.
26
+*/
27
+
28
+
29
+// определение news_id:
30
+// работает для ссылок типа 
31
+// https://www.opennet.ru/openforum/vsluhforumID3/109668.html
32
+
33
+function last (lst) {
34
+  return lst[lst.length-1]
35
+}
36
+
37
+var news_id = last(document.location.href.split("/")).match(/\d+/)[0];
38
+
39
+var utags = {};
40
+
41
+// теги
42
+let mod = "mod" // модераторы
43
+let smart = "smart" // стоит прислушаться
44
+let fat = "дебил" // толстые тролли
45
+let troll = "troll" // тонкие тролли
46
+let mssp = "mssp" // страх и ненависть Шигорина
47
+
48
+// люди
49
+utags["freehck"] = [mod]
50
+utags["Michael Shigorin"] = [mod]
51
+utags["Сергей"] = [fat]
52
+utags["Celcion"] = [smart]
53
+utags["Crazy Alex"] = [smart]
54
+utags["Andrey Mitrofanov"] = [smart]
55
+
56
+// расстановка тэгов
57
+var links = document.getElementsByTagName("a");
58
+for (i in links) {
59
+  name = links[i].text;
60
+  if (name in utags) {
61
+      links[i].parentElement.innerHTML = "<a href=\"" + links[i].href + "\">" + links[i].text + "</a> " +
62
+                                         "[" + utags[name].toString() + "]"
63
+   };
64
+};
65
+
66
+// раскраска сообщений
67
+
68
+function li_msg_id (id) {
69
+  return ("t" + id)
70
+}
71
+
72
+function mark_li (id, color) {
73
+  let elem = document.getElementById(li_msg_id(id));
74
+  if (elem != null)
75
+    elem.style.backgroundColor = color
76
+}
77
+
78
+// раскраска сообщений
79
+
80
+function msg_id (id) {
81
+  return ("m" + id)
82
+}
83
+
84
+function mark_msg (id, color) {
85
+  let elem = document.getElementById(msg_id(id));
86
+  if (elem != null) { // если сообщение удалено модератором
87
+    var tbl = elem.parentElement;
88
+    tbl.getElementsByTagName("blockquote")[0].style.backgroundColor = color;
89
+  }
90
+}
91
+
92
+function mark (id, color) {
93
+  mark_msg(id, color);
94
+  mark_li(id, color);
95
+}
96
+
97
+var MARKED_IDS = [];
98
+
99
+function mark_all (ids, color) {
100
+  for (var i=0; i<ids.length; i++) {if (ids[i] != 0) mark(ids[i], color)} // сравнение исключает саму новость
101
+}
102
+
103
+function unmark_all () {
104
+  for (var i=0; i<MARKED_IDS.length; i++) {if (MARKED_IDS[i] != 0) mark(MARKED_IDS[i], "#DDE1C2")}
105
+}
106
+
107
+function num_of_str (s) {
108
+  return (s.match(/\d+/)[0])
109
+}
110
+
111
+function lookup_url (news_id, id) {
112
+    return ("https://www.opennet.ru/cgi-bin/openforum/a/show_ip.cgi?forum=vsluhforumID3&om="+news_id+"&omm="+id)
113
+  }
114
+
115
+function get_content () {
116
+    alert( this.responseText );
117
+  }
118
+
119
+function get_content_and_hl () {
120
+    let content = this.responseXML;
121
+    let links = content.getElementsByTagName("a");
122
+    console.log("---------------------")
123
+    var hl_ids = [];
124
+    for (var i=0; i<links.length; i++) {
125
+      console.log(links[i].href);
126
+      var [some_news_id, msg_id] = last(links[i].href.split("/")).match(/\d+/g);
127
+      if (some_news_id == news_id) {
128
+        hl_ids.push(msg_id);
129
+      }
130
+    }
131
+    console.log("Total messages found: "+links.length);
132
+    console.log("Messages in this news: "+hl_ids.length);
133
+    unmark_all();
134
+    mark_all(hl_ids, "pink");
135
+    MARKED_IDS = hl_ids;
136
+  }
137
+  
138
+function lookup_msg_id (news_id, id) {
139
+    var req = new XMLHttpRequest();
140
+    req.addEventListener("load", get_content_and_hl);
141
+    req.open("GET", (lookup_url(news_id, id)));
142
+    req.withCredentials = true;
143
+    req.responseType = "document";
144
+    req.send()
145
+  }
146
+
147
+var msgs = document.querySelectorAll('[id^=m]');
148
+for (var i=0; i<msgs.length; i++) {
149
+  let message = msgs[i];
150
+  let id = num_of_str(msgs[i].id);
151
+  let lookup = message.getElementsByTagName("a")[0].parentElement
152
+  .appendChild(document.createTextNode(" ")).parentElement
153
+  .appendChild(document.createElement("b"))
154
+  .appendChild(document.createElement("a"));
155
+  lookup.onclick = function () {lookup_msg_id(news_id, id)};
156
+  lookup.text = "(((>o<)))";
157
+}