bbs_w_post.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. "use strict";
  2. function opennamu_change_comment(get_id) {
  3. const input = document.querySelector('#opennamu_comment_select');
  4. if(input !== null) {
  5. input.value = get_id;
  6. document.getElementById('opennamu_comment_select')?.focus();
  7. }
  8. }
  9. function opennamu_return_comment() {
  10. const input = document.querySelector('#opennamu_comment_select');
  11. if(input !== null) {
  12. document.getElementById(input.value)?.focus();
  13. }
  14. }
  15. function opennamu_post_tabom(bbs_id, bbs_code) {
  16. fetch('/api/v2/bbs/w/tabom/' + bbs_id + '-' + bbs_code, {
  17. method : 'POST'
  18. }).then(function(res) {
  19. return res.json();
  20. }).then(function(data) {
  21. opennamu_load_tabom_count(bbs_id, bbs_code);
  22. });
  23. }
  24. function opennamu_load_tabom_count(bbs_id, bbs_code) {
  25. fetch('/api/v2/bbs/w/tabom/' + bbs_id + '-' + bbs_code).then(function(res) {
  26. return res.json();
  27. }).then(function(data) {
  28. if(data) {
  29. for(let for_a = 0; for_a < document.getElementsByClassName('opennamu_tabom_count').length; for_a++) {
  30. document.getElementsByClassName('opennamu_tabom_count')[for_a].innerHTML = data["data"];
  31. }
  32. }
  33. });
  34. }
  35. function opennamu_load_comment() {
  36. const url = window.location.pathname;
  37. const url_split = url.split('/');
  38. let bbs_id = url_split[3];
  39. let bbs_code = url_split[4];
  40. let lang_data = new FormData();
  41. lang_data.append('data', 'normal comment tool return upvote');
  42. fetch('/api/v2/lang', {
  43. method : 'POST',
  44. body : lang_data,
  45. }).then(function(res) {
  46. return res.json();
  47. }).then(function(lang) {
  48. lang = lang["data"];
  49. fetch('/api/v2/bbs/w/comment/' + bbs_id + '-' + bbs_code + '/around').then(function(res) {
  50. return res.json();
  51. }).then(function(data) {
  52. let data_html = '';
  53. if(data) {
  54. data = data["data"];
  55. let end_render = [];
  56. let select = '<select id="opennamu_comment_select" name="comment_select">';
  57. select += '<option value="0">' + lang["normal"] + '</option>';
  58. for(let for_a in data) {
  59. let data_in = data[for_a];
  60. let code_id = data_in["id"] + '-' + data_in["code"];
  61. code_id = code_id.replace(/^[0-9]+-[0-9]+-/, '');
  62. let count = 0;
  63. for(let for_a = 0; for_a < code_id.length; for_a++) {
  64. if(code_id[for_a] === '-') {
  65. count += 1;
  66. }
  67. }
  68. select += '<option value="' + code_id + '">' + code_id + '</option>';
  69. let color = 'default';
  70. let date = '';
  71. date += '<a href="javascript:opennamu_change_comment(\'' + code_id + '\');">(' + lang["comment"] + ')</a> ';
  72. date += '<a href="/bbs/tool/' + bbs_id + '/' + bbs_code + '/' + code_id + '">(' + lang["tool"] + ')</a> ';
  73. date += data_in["comment_date"];
  74. data_html += '<span style="padding-left: ' + String(20 * count) + 'px;"></span>';
  75. data_html += opennamu_get_thread_ui(
  76. data_in["comment_user_id_render"],
  77. date,
  78. '<div class="opennamu_comment_scroll" id="opennamu_thread_render_' + code_id + '">' + opennamu_xss_filter(data_in["comment"]) + '</div>',
  79. code_id,
  80. color,
  81. '',
  82. 'width: calc(100% - ' + String(20 * count) + 'px);',
  83. ''
  84. );
  85. end_render.push([
  86. data_in["comment"],
  87. code_id
  88. ]);
  89. }
  90. select += '</select> <a href="javascript:opennamu_return_comment();">(' + lang["return"] + ')</a>';
  91. select += '<hr class="main_hr">';
  92. if(document.getElementById('opennamu_bbs_w_post_select')) {
  93. document.getElementById('opennamu_bbs_w_post_select').innerHTML = select;
  94. }
  95. if(document.getElementById('opennamu_bbs_w_post_tabom')) {
  96. document.getElementById('opennamu_bbs_w_post_tabom').innerHTML = '' +
  97. '<a href="javascript:void(0);" id="opennamu_tabom_button">' +
  98. '<span class="opennamu_bbs_w_post_tabom opennamu_svg opennamu_svg_tabom">&nbsp;</span>' +
  99. '</a>' +
  100. '<hr class="main_hr">' +
  101. '<span>' + lang["upvote"] + '</span> <span class="opennamu_tabom_count"></span>' +
  102. '';
  103. }
  104. document.getElementById('opennamu_bbs_w_post').innerHTML = data_html;
  105. opennamu_load_tabom_count(bbs_id, bbs_code);
  106. document.getElementById('opennamu_tabom_button').addEventListener("click", function() {
  107. opennamu_post_tabom(bbs_id, bbs_code);
  108. });
  109. for(let for_a = 0; for_a < end_render.length; for_a++) {
  110. let observer = new IntersectionObserver(entries => {
  111. entries.forEach(entry => {
  112. if(entry.isIntersecting) {
  113. opennamu_do_render(
  114. 'opennamu_thread_render_' + end_render[for_a][1],
  115. end_render[for_a][0],
  116. '',
  117. 'thread'
  118. );
  119. observer.unobserve(entry.target);
  120. }
  121. });
  122. });
  123. observer.observe(document.getElementById('opennamu_thread_render_' + end_render[for_a][1]));
  124. }
  125. }
  126. });
  127. });
  128. }