2
0

load_something.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. function load_user_info(name) {
  2. var url = "/api/user_info/" + encodeURI(name) + "?render=1";
  3. var xhr = new XMLHttpRequest();
  4. xhr.open("GET", url, true);
  5. xhr.send(null);
  6. xhr.onreadystatechange = function() {
  7. if(this.readyState === 4 && this.status === 200) {
  8. document.getElementById('get_user_info').innerHTML += JSON.parse(this.responseText)['data'];
  9. opennamu_do_ip_parser();
  10. }
  11. }
  12. }
  13. function load_ver() {
  14. var url = "/api/version";
  15. var xhr = new XMLHttpRequest();
  16. xhr.open("GET", url, true);
  17. xhr.send();
  18. xhr.onreadystatechange = function() {
  19. if(this.readyState === 4 && this.status === 200) {
  20. let get_data = JSON.parse(this.responseText);
  21. document.getElementById('ver_send_2').innerHTML = get_data['version'];
  22. let url_2 = 'https://raw.githubusercontent.com/openNAMU/openNAMU/' + get_data['build'] + '/version.json';
  23. var xhr_2 = new XMLHttpRequest();
  24. xhr_2.open("GET", url_2, true);
  25. xhr_2.send();
  26. xhr_2.onreadystatechange = function() {
  27. if(this.readyState === 4 && this.status === 200) {
  28. document.getElementById('ver_send').innerHTML += JSON.parse(this.responseText)['beta']['r_ver'];
  29. document.getElementById('ver_send').style.display = "list-item";
  30. }
  31. }
  32. }
  33. }
  34. }
  35. function do_skin_ver_check() {
  36. var url = "/api/skin_info?all=true";
  37. var xhr = new XMLHttpRequest();
  38. xhr.open("GET", url, true);
  39. xhr.send();
  40. xhr.onreadystatechange = function() {
  41. if(this.readyState === 4 && this.status === 200) {
  42. var json_data = JSON.parse(this.responseText);
  43. for(var key in json_data) {
  44. document.getElementById('ver_send_3').innerHTML += '<li>' +
  45. json_data[key]['name'] + ' : ' + json_data[key]['skin_ver'] +
  46. (json_data[key]['lastest_version'] ? ' (' + json_data[key]['lastest_version']['skin_ver'] + ')' : '') +
  47. '</li>'
  48. }
  49. }
  50. }
  51. }
  52. function do_twofa_check(init = 0) {
  53. let twofa_option = document.getElementById('twofa_check_input');
  54. let twofa_option_num = twofa_option.options.selectedIndex;
  55. let twofa_select_data = twofa_option.options[twofa_option_num].value;
  56. if(twofa_select_data === 'on') {
  57. document.getElementById('fa_plus_content').style.display = "block";
  58. } else {
  59. document.getElementById('fa_plus_content').style.display = "none";
  60. }
  61. }
  62. function send_render(i = 0) {
  63. let get_class = document.getElementsByClassName('send_content')[i];
  64. if(get_class) {
  65. send_render(i + 1);
  66. let data = get_class.innerHTML;
  67. if(data === '&lt;br&gt;') {
  68. document.getElementsByClassName('send_content')[i].innerHTML = '<br>';
  69. } else {
  70. data = data.replace(/javascript:/i, '');
  71. data = data.replace(/&lt;a(?:(?:(?!&gt;).)*)&gt;((?:(?!&lt;\/a&gt;).)+)&lt;\/a&gt;/g, function(x, x_1) {
  72. x_1_org = x_1.replace('&lt;', '<').replace('&gt;', '>');
  73. return '<a href="/w/' + encodeURIComponent(x_1_org) + '">' + x_1 + '</a>';
  74. });
  75. document.getElementsByClassName('send_content')[i].innerHTML = data;
  76. }
  77. }
  78. }
  79. function simple_render(name_ele) {
  80. var skin_set_data = document.getElementById(name_ele).innerHTML;
  81. // 목차 구현
  82. var toc_all_data = '<div id="toc"><span id="toc_title">TOC</span><br>';
  83. var split_toc;
  84. var toc_data;
  85. i = 1;
  86. while(1) {
  87. toc_data = skin_set_data.match(/<h[1-6]>([^<>]+)<\/h[1-6]>/);
  88. if(toc_data) {
  89. split_toc = toc_data[1].match(/^([^ ]+)(.+)/);
  90. toc_all_data += '' +
  91. '<br>' +
  92. '<span style="margin-left: ' + String(((toc_data[1].match(/\./g) || []).length - 1) * 10) + 'px;">' +
  93. '<a href="#toc_' + String(i) + '">' + split_toc[1] + '</a>' + split_toc[2] +
  94. '</span>' +
  95. '';
  96. skin_set_data = skin_set_data.replace(
  97. /<(h[1-6])>([^<>]+)<\/h[1-6]>/,
  98. '<$1 id="toc_' + String(i) + '"><a href="#toc">' + split_toc[1] + '</a>' + split_toc[2] + '</$1>'
  99. );
  100. i += 1;
  101. } else {
  102. break;
  103. }
  104. }
  105. skin_set_data = toc_all_data + '</div>' + skin_set_data;
  106. // 각주 구현
  107. var note_list = {};
  108. var plus_note;
  109. i = 1;
  110. while(1) {
  111. toc_data = skin_set_data.match(/<sup>([^<>]+)<\/sup>/);
  112. if(toc_data) {
  113. if(!note_list[toc_data[1]]) {
  114. note_list[toc_data[1]] = [String(i), 0];
  115. } else {
  116. note_list[toc_data[1]][1] += 1;
  117. }
  118. if(note_list[toc_data[1]][1] != 0) {
  119. plus_note = '_' + String(note_list[toc_data[1]][1]);
  120. } else {
  121. plus_note = '';
  122. }
  123. skin_set_data = skin_set_data.replace(
  124. /<sup>([^<>]+)<\/sup>/,
  125. '<sup><a id="note_' + note_list[toc_data[1]][0] + plus_note + '" href="#note_' + note_list[toc_data[1]][0] + '_end">$1</a></sup>'
  126. );
  127. i += 1;
  128. } else {
  129. break;
  130. }
  131. }
  132. document.getElementById(name_ele).innerHTML = skin_set_data;
  133. }