skin_set.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. function ringo_do_regex_data(data) {
  2. return new RegExp('(?:^|; )' + data + '=([^;]*)');
  3. }
  4. function ringo_get_post() {
  5. const check = document.getElementById('invert');
  6. if(check.checked === true) {
  7. document.cookie = 'main_css_darkmode=1; path=/';
  8. } else {
  9. document.cookie = 'main_css_darkmode=0; path=/';
  10. }
  11. const check_2 = document.getElementById('use_sys_darkmode');
  12. if(check_2.checked === true) {
  13. window.localStorage.setItem('main_css_use_sys_darkmode', '1');
  14. } else {
  15. window.localStorage.setItem('main_css_use_sys_darkmode', '0');
  16. }
  17. const check_3 = document.getElementById('off_sidebar');
  18. if(check_3.checked === true) {
  19. window.localStorage.setItem('main_css_off_sidebar', '1');
  20. } else {
  21. window.localStorage.setItem('main_css_off_sidebar', '0');
  22. }
  23. const check_4 = document.getElementById('fixed_width');
  24. if(check_4.options[check_4.selectedIndex].value) {
  25. window.localStorage.setItem('main_css_fixed_width', check_4.options[check_4.selectedIndex].value);
  26. } else {
  27. window.localStorage.setItem('main_css_fixed_width', '');
  28. }
  29. const check_5 = document.getElementById('sidebar_right');
  30. if(check_5.checked === true) {
  31. window.localStorage.setItem('main_css_sidebar_right', '1');
  32. } else {
  33. window.localStorage.setItem('main_css_sidebar_right', '0');
  34. }
  35. history.go(0);
  36. }
  37. function ringo_do_skin_set() {
  38. if(!window.localStorage.getItem('main_css_use_sys_darkmode') || window.localStorage.getItem('main_css_use_sys_darkmode') === '1') {
  39. if(window.matchMedia('(prefers-color-scheme: dark)').matches) {
  40. document.cookie = 'main_css_darkmode=1; path=/';
  41. } else {
  42. document.cookie = 'main_css_darkmode=0; path=/';
  43. }
  44. }
  45. if(window.localStorage.getItem('main_css_off_sidebar') && window.localStorage.getItem('main_css_off_sidebar') === '1') {
  46. document.getElementById('ringo_add_style').innerHTML += `
  47. section {
  48. width: auto;
  49. display: block;
  50. margin: auto;
  51. }
  52. .do_fixed {
  53. display: none;
  54. }
  55. `;
  56. }
  57. if(window.localStorage.getItem('main_css_fixed_width') && window.localStorage.getItem('main_css_fixed_width') !== '') {
  58. let fixed_width_data = window.localStorage.getItem('main_css_fixed_width');
  59. document.getElementById('ringo_add_style').innerHTML += `
  60. article.main {
  61. max-width: ` + fixed_width_data + `px;
  62. }
  63. `;
  64. }
  65. if(window.localStorage.getItem('main_css_sidebar_right') && window.localStorage.getItem('main_css_sidebar_right') === '1') {
  66. document.getElementById('ringo_add_style').innerHTML += `
  67. .do_fixed {
  68. float: right;
  69. }
  70. `;
  71. }
  72. }
  73. function ringo_load_skin_set() {
  74. let cookies = document.cookie;
  75. if(window.location.pathname === '/change/skin_set') {
  76. let set_language = {
  77. "en-US" : {
  78. "save" : "Save",
  79. "darkmode" : "Darkmode",
  80. "use_sys_darkmode" : "Use system darkmode set",
  81. "off_sidebar" : "Turn off sidebar",
  82. "fixed_width" : "Fixed width",
  83. 'default' : 'Default',
  84. 'sidebar_right' : 'Sidebar direction right'
  85. }, "ko-KR" : {
  86. "save" : "저장",
  87. "darkmode" : "다크모드",
  88. "use_sys_darkmode" : "시스템 다크모드 설정 사용",
  89. "off_sidebar" : "사이드바 끄기",
  90. "fixed_width" : "고정폭",
  91. 'default' : '기본값',
  92. 'sidebar_right' : '사이드바 방향 오른쪽'
  93. }
  94. }
  95. let language = cookies.match(ringo_do_regex_data('language'))[1];
  96. let user_language = cookies.match(ringo_do_regex_data('user_language'))[1];
  97. if(user_language in set_language) {
  98. language = user_language;
  99. }
  100. if(!language in set_language) {
  101. language = "en-US";
  102. }
  103. let set_data = {};
  104. if(cookies.match(ringo_do_regex_data('main_css_darkmode')) && cookies.match(ringo_do_regex_data('main_css_darkmode'))[1] === '1') {
  105. set_data["invert"] = "checked";
  106. }
  107. if(!window.localStorage.getItem('main_css_use_sys_darkmode') || window.localStorage.getItem('main_css_use_sys_darkmode') === '1') {
  108. set_data["use_sys_darkmode"] = "checked";
  109. }
  110. if(window.localStorage.getItem('main_css_off_sidebar') && window.localStorage.getItem('main_css_off_sidebar') === '1') {
  111. set_data["off_sidebar"] = "checked";
  112. }
  113. let fixed_width_data = '';
  114. if(window.localStorage.getItem('main_css_fixed_width')) {
  115. fixed_width_data = window.localStorage.getItem('main_css_fixed_width');
  116. }
  117. let select_fixed_width = [set_language[language]['default'], '800', '900', '1000', '1100', '1200', '1300', '1500', '1600'];
  118. let select_fixed_width_html = '<select name="fixed_width" id="fixed_width">';
  119. for(let for_a = 0; for_a < select_fixed_width.length; for_a++) {
  120. let for_a_data = select_fixed_width[for_a];
  121. if(for_a_data === set_language[language]['default']) {
  122. for_a_data = '';
  123. }
  124. let selected = '';
  125. if(fixed_width_data === for_a_data) {
  126. selected = 'selected';
  127. }
  128. select_fixed_width_html += '<option value="' + for_a_data + '" ' + selected + '>' + select_fixed_width[for_a] + '</option>';
  129. }
  130. select_fixed_width_html += '</select>';
  131. if(window.localStorage.getItem('main_css_sidebar_right') && window.localStorage.getItem('main_css_sidebar_right') === '1') {
  132. set_data["sidebar_right"] = "checked";
  133. }
  134. document.getElementById("main_skin_set").innerHTML = ' \
  135. <input ' + set_data["use_sys_darkmode"] + ' type="checkbox" id="use_sys_darkmode" name="use_sys_darkmode" value="use_sys_darkmode"> ' + set_language[language]['use_sys_darkmode'] + ' \
  136. <hr class="main_hr"> \
  137. <input ' + set_data["invert"] + ' type="checkbox" id="invert" name="invert" value="invert"> ' + set_language[language]['darkmode'] + ' \
  138. <hr class="main_hr"> \
  139. <input ' + set_data["off_sidebar"] + ' type="checkbox" id="off_sidebar" name="off_sidebar" value="off_sidebar"> ' + set_language[language]['off_sidebar'] + ' \
  140. <hr class="main_hr"> \
  141. ' + select_fixed_width_html + ' \
  142. <hr class="main_hr"> \
  143. <input ' + set_data["sidebar_right"] + ' type="checkbox" id="sidebar_right" name="sidebar_right" value="sidebar_right"> ' + set_language[language]['sidebar_right'] + ' \
  144. <hr class="main_hr"> \
  145. <button onclick="ringo_get_post();">' + set_language[language]['save'] + '</button> \
  146. ';
  147. }
  148. }
  149. window.addEventListener('DOMContentLoaded', ringo_do_skin_set);
  150. window.addEventListener('DOMContentLoaded', ringo_load_skin_set);