render_wiki.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. function get_link_state(data) {
  2. let data_exter_link = '0';
  3. if(document.cookie.match(main_css_regex_data('main_css_exter_link'))) {
  4. data_exter_link = document.cookie.match(main_css_regex_data('main_css_exter_link'))[1];
  5. }
  6. var link_list = [];
  7. var link_list_2 = {}
  8. for(var i = 0; document.getElementsByClassName(data + 'link_finder')[i]; i++) {
  9. var data_class = document.getElementsByClassName(data + 'link_finder')[i];
  10. if(
  11. data_class.id !== 'out_link' &&
  12. data_class.id !== 'inside' &&
  13. data_class.id !== 'in_doc_link'
  14. ) {
  15. link_list.push(data_class.title);
  16. if(!link_list_2[data_class.title]) {
  17. link_list_2[data_class.title] = [i];
  18. } else {
  19. link_list_2[data_class.title].push(i);
  20. }
  21. } else if(
  22. data_exter_link === '1' &&
  23. (
  24. data_class.id === 'out_link' ||
  25. data_class.id === 'inside'
  26. )
  27. ) {
  28. document.getElementsByClassName(data + 'link_finder')[i].target = '_self';
  29. }
  30. }
  31. var data_form = new FormData();
  32. data_form.append('title_list', JSON.stringify(link_list));
  33. var xhr = new XMLHttpRequest();
  34. xhr.open("POST", "/api/w/test/doc_tool/exist");
  35. xhr.send(data_form);
  36. xhr.onreadystatechange = function() {
  37. if(this.readyState === 4 && this.status === 200) {
  38. var data_xhr = JSON.parse(this.responseText);
  39. for(var key in link_list_2) {
  40. if(!data_xhr[key]) {
  41. for(var key_2 in link_list_2[key]) {
  42. document.getElementsByClassName(data + 'link_finder')[link_list_2[key][key_2]].id = "not_thing";
  43. }
  44. }
  45. }
  46. }
  47. }
  48. }
  49. function get_heading_name() {
  50. let heading_name = document.getElementsByClassName('render_heading_text');
  51. for(let i = 0; i < heading_name.length; i++) {
  52. heading_name[i].id = heading_name[i].innerText.replace(/^([0-9]+\.)+ /, '').replace(/ ✎ ⊖$/, '');
  53. }
  54. }
  55. function load_image_link(data, data_type = 0) {
  56. let data_end = '';
  57. data_end = '' +
  58. '<img style="' + data.getAttribute('under_style') + '" ' +
  59. 'alt="' + data.getAttribute('under_alt') + '" ' +
  60. 'src="' + data.getAttribute('under_src') + '">' +
  61. '';
  62. if(data_type === 0) {
  63. data.innerHTML = data_end;
  64. } else {
  65. return data_end;
  66. }
  67. }
  68. function get_file_state_extermal(data, data_exter) {
  69. if(document.cookie.match(main_css_regex_data('main_css_image_set'))) {
  70. var data_image_set = document.cookie.match(main_css_regex_data('main_css_image_set'))[1];
  71. } else {
  72. var data_image_set = '0';
  73. }
  74. var data_class = document.getElementsByClassName(data + 'file_finder');
  75. for(var key in data_exter) {
  76. var key = data_exter[key];
  77. if(data_image_set === '1') {
  78. document.getElementsByClassName(data + 'file_finder')[key].innerHTML = '' +
  79. '<a href="' + data_class[key].getAttribute('under_src') + '" ' +
  80. 'title="' + data_class[key].getAttribute('under_src') + '">' +
  81. '(External image link)' +
  82. '</a>' +
  83. '';
  84. } else if(data_image_set === '2') {
  85. document.getElementsByClassName(data + 'file_finder')[key].innerHTML = '' +
  86. '<a href="javascript:void(0);" ' +
  87. 'onclick="load_image_link(this); this.onclick = \'\';" ' +
  88. 'under_style="' + data_class[key].getAttribute('under_style') + '" ' +
  89. 'under_alt="' + data_class[key].getAttribute('under_alt') + '" ' +
  90. 'under_src="' + data_class[key].getAttribute('under_src') + '" ' +
  91. 'title="' + data_class[key].getAttribute('under_src') + '">' +
  92. '(External image load)' +
  93. '</a>' +
  94. '';
  95. } else {
  96. document.getElementsByClassName(data + 'file_finder')[key].innerHTML = '' +
  97. load_image_link(data_class[key], 1) +
  98. '';
  99. }
  100. }
  101. }
  102. function get_file_state_intermal(data, data_inter) {
  103. var data_dict = {};
  104. var data_list = [];
  105. for(var key in data_inter) {
  106. var data_class = document.getElementsByClassName(data + 'file_finder')[key];
  107. var file_org = data_class.getAttribute('under_alt');
  108. var file_type = file_org.split('.');
  109. var file_name = file_type.slice(0, file_type.length - 1).join('.');
  110. file_type = file_type[file_type.length - 1];
  111. if(!data_dict[file_org]) {
  112. data_dict[file_org] = {};
  113. }
  114. data_dict[file_org]['file_name'] = file_name;
  115. data_dict[file_org]['file_type'] = file_type;
  116. data_list.push(file_name);
  117. if(!data_dict[file_org]['list']) {
  118. data_dict[file_org]['list'] = [key];
  119. } else {
  120. data_dict[file_org]['list'].push(key);
  121. }
  122. }
  123. if(document.cookie.match(main_css_regex_data('main_css_image_set'))) {
  124. var data_image_set = document.cookie.match(main_css_regex_data('main_css_image_set'))[1];
  125. } else {
  126. var data_image_set = '0';
  127. }
  128. var data_form = new FormData();
  129. data_form.append('title_list', JSON.stringify(data_list));
  130. var xhr = new XMLHttpRequest();
  131. xhr.open("POST", '/api/sha224/test');
  132. xhr.send(data_form);
  133. xhr.onreadystatechange = function() {
  134. if(this.readyState === 4 && this.status === 200) {
  135. var file_sha224 = JSON.parse(this.responseText);
  136. var data_list_2 = [];
  137. for(var key in data_dict) {
  138. data_dict[key]['file_sha224'] = file_sha224[data_dict[key]['file_name']]
  139. data_list_2.push(data_dict[key]['file_sha224'] + '.' + data_dict[key]['file_type'])
  140. }
  141. var data_form_2 = new FormData();
  142. data_form_2.append('title_list', JSON.stringify(data_list_2));
  143. var xhr_2 = new XMLHttpRequest();
  144. xhr_2.open("POST", '/api/image/test');
  145. xhr_2.send(data_form_2);
  146. xhr_2.onreadystatechange = function() {
  147. if(this.readyState === 4 && this.status === 200) {
  148. var file_data = JSON.parse(this.responseText);
  149. var data_class = document.getElementsByClassName(data + 'file_finder');
  150. for(var key_3 in data_dict) {
  151. if(!file_data[data_dict[key_3]['file_sha224'] + '.' + data_dict[key_3]['file_type']]) {
  152. for(var key_4 in data_dict[key_3]['list']) {
  153. var key_4 = data_dict[key_3]['list'][key_4];
  154. document.getElementsByClassName(data + 'file_finder')[key_4].innerHTML = '' +
  155. '<a href="' + data_class[key_4].getAttribute('under_href') + '" ' +
  156. 'id="not_thing">' +
  157. '(' + data_class[key_4].getAttribute('under_alt') + ')' +
  158. '</a>' +
  159. '';
  160. }
  161. } else {
  162. if(data_image_set === '1') {
  163. for(var key_4 in data_dict[key_3]['list']) {
  164. var key_4 = data_dict[key_3]['list'][key_4];
  165. document.getElementsByClassName(data + 'file_finder')[key_4].innerHTML = '' +
  166. '<a href="/image/' + data_dict[key_3]['file_sha224'] + '.' + data_dict[key_3]['file_type'] + '">' +
  167. '(' + data_class[key_4].getAttribute('under_alt') + ')' +
  168. '</a>' +
  169. '';
  170. }
  171. } else if(data_image_set === '2') {
  172. for(var key_4 in data_dict[key_3]['list']) {
  173. var key_4 = data_dict[key_3]['list'][key_4];
  174. document.getElementsByClassName(data + 'file_finder')[key_4].innerHTML = '' +
  175. '<a href="javascript:void(0);" ' +
  176. 'onclick="load_image_link(this); this.onclick = \'\';" ' +
  177. 'under_style="' + data_class[key_4].getAttribute('under_style') + '" ' +
  178. 'under_alt="' + data_class[key_4].getAttribute('under_alt') + '" ' +
  179. 'under_src="/image/' + data_dict[key_3]['file_sha224'] + '.' + data_dict[key_3]['file_type'] + '">' +
  180. '(' + data_class[key_4].getAttribute('under_alt') + ' load)' +
  181. '</a>' +
  182. '';
  183. }
  184. } else {
  185. for(var key_4 in data_dict[key_3]['list']) {
  186. var key_4 = data_dict[key_3]['list'][key_4];
  187. document.getElementsByClassName(data + 'file_finder')[key_4].innerHTML = '' +
  188. '<a href="/w/file:' + data_class[key_4].getAttribute('under_alt') + '">' +
  189. '<img style="' + data_class[key_4].getAttribute('under_style') + '" ' +
  190. 'alt="' + data_class[key_4].getAttribute('under_alt') + '" ' +
  191. 'src="/image/' + data_dict[key_3]['file_sha224'] + '.' + data_dict[key_3]['file_type'] + '">' +
  192. '</a>' +
  193. '';
  194. }
  195. }
  196. }
  197. }
  198. }
  199. }
  200. }
  201. }
  202. }
  203. function get_file_state(data, i = 0) {
  204. var data_exter = [];
  205. var data_inter = [];
  206. for(var i = 0; document.getElementsByClassName(data + 'file_finder')[i]; i++) {
  207. var data_class = document.getElementsByClassName(data + 'file_finder')[i];
  208. if(data_class.getAttribute('under_href') === 'out_link') {
  209. data_exter.push(i);
  210. } else {
  211. data_inter.push(i);
  212. }
  213. }
  214. get_file_state_extermal(data, data_exter);
  215. get_file_state_intermal(data, data_inter);
  216. }
  217. function load_include(name_doc, name_ob, data_include, name_org = '') {
  218. var data_form = new FormData();
  219. data_form.append('include_list', JSON.stringify(data_include));
  220. data_form.append('name_include', name_ob);
  221. data_form.append('name_org', name_org);
  222. var xhr = new XMLHttpRequest();
  223. xhr.open("POST", "/api/w/" + encodeURI(name_doc) + "/doc_tool/include");
  224. xhr.send(data_form);
  225. document.getElementsByClassName(name_ob)[0].href = "/w/" + do_url_change(name_doc);
  226. xhr.onreadystatechange = function() {
  227. if(this.readyState === 4 && this.status === 200) {
  228. if(this.responseText === "{}\n") {
  229. document.getElementById(name_ob).innerHTML = "";
  230. document.getElementsByClassName(name_ob)[0].id = "not_thing";
  231. } else {
  232. var data_load = JSON.parse(this.responseText);
  233. document.getElementById(name_ob).innerHTML = data_load['data'];
  234. eval(data_load['js_data']);
  235. }
  236. }
  237. }
  238. }
  239. function page_count() {
  240. var url = "/api/title_index";
  241. var xhr = new XMLHttpRequest();
  242. xhr.open("GET", url);
  243. xhr.send();
  244. xhr.onreadystatechange = function() {
  245. if(this.readyState === 4 && this.status === 200) {
  246. var i = 0;
  247. while(document.getElementsByClassName('all_page_count')[i]) {
  248. document.getElementsByClassName('all_page_count')[i].innerHTML = JSON.parse(this.responseText)['count'];
  249. i += 1;
  250. }
  251. }
  252. }
  253. }
  254. function do_open_folding(data, element = '') {
  255. var fol = document.getElementById(data);
  256. if(fol.style.display === '' || (fol.style.display === 'inline-block' || fol.style.display === 'block')) {
  257. document.getElementById(data).style.display = 'none';
  258. } else {
  259. document.getElementById(data).style.display = 'block';
  260. }
  261. if(element != '') {
  262. var fol_data = element.innerHTML;
  263. if(fol_data != '⊖') {
  264. element.innerHTML = '⊖';
  265. } else {
  266. element.innerHTML = '⊕';
  267. }
  268. }
  269. }
  270. function do_open_foot(front_data, name, num = 0) {
  271. if(
  272. document.cookie.match(main_css_regex_data('main_css_footnote_set')) &&
  273. document.cookie.match(main_css_regex_data('main_css_footnote_set'))[1] === '1'
  274. ) {
  275. if(num === 1) {
  276. document.getElementById(front_data + 'r' + name).focus();
  277. } else {
  278. var get_data = document.getElementById(front_data + name).innerHTML;
  279. var org_data = document.getElementById(front_data + 'd' + name).innerHTML;
  280. if(org_data === '') {
  281. document.getElementById(front_data + 'd' + name).innerHTML = '' +
  282. '<a href="#' + front_data + 'c' + name + '">(Go)</a> ' + get_data +
  283. '';
  284. document.getElementById(front_data + 'd' + name).className = 'spead_footnote';
  285. } else {
  286. document.getElementById(front_data + 'd' + name).innerHTML = '';
  287. document.getElementById(front_data + 'd' + name).className = '';
  288. }
  289. }
  290. } else {
  291. document.getElementById(front_data + 'r' + name).style.color = 'red';
  292. document.getElementById(front_data + 'c' + name).style.color = (num === 1 ? 'inherit' : 'red');
  293. document.getElementById(front_data + (num === 1 ? 'r' : 'c') + name).focus();
  294. }
  295. }