load_skin_set.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. function main_css_regex_data(data) {
  2. return new RegExp('(?:^|; )' + data + '=([^;]*)');
  3. }
  4. function main_css_get_post() {
  5. var check = document.getElementById('main_css_strike');
  6. if(check.value === 'normal') {
  7. document.cookie = 'main_css_del_strike=0;';
  8. } else if(check.value === 'change') {
  9. document.cookie = 'main_css_del_strike=1;';
  10. } else {
  11. document.cookie = 'main_css_del_strike=2;';
  12. }
  13. check = document.getElementById('main_css_bold');
  14. if(check.value === 'normal') {
  15. document.cookie = 'main_css_del_bold=0;';
  16. } else if(check.value === 'change') {
  17. document.cookie = 'main_css_del_bold=1;';
  18. } else {
  19. document.cookie = 'main_css_del_bold=2;';
  20. }
  21. check = document.getElementById('main_css_include');
  22. if(check.checked) {
  23. document.cookie = 'main_css_include_link=1;';
  24. } else {
  25. document.cookie = 'main_css_include_link=0;';
  26. }
  27. check = document.getElementById('main_css_category');
  28. if(check.value === 'bottom') {
  29. document.cookie = 'main_css_category_set=0;';
  30. } else {
  31. document.cookie = 'main_css_category_set=1;';
  32. }
  33. check = document.getElementById('main_css_footnote');
  34. if(check.value === 'spread') {
  35. document.cookie = 'main_css_footnote_set=1;';
  36. } else {
  37. document.cookie = 'main_css_footnote_set=0;';
  38. }
  39. check = document.getElementById('main_css_image');
  40. if(check.value === 'new_click') {
  41. document.cookie = 'main_css_image_set=2;';
  42. } else if(check.value === 'click') {
  43. document.cookie = 'main_css_image_set=1;';
  44. } else {
  45. document.cookie = 'main_css_image_set=0;';
  46. }
  47. check = document.getElementById('main_css_image_paste');
  48. if(check.checked) {
  49. document.cookie = 'main_css_image_paste=1;';
  50. } else {
  51. document.cookie = 'main_css_image_paste=0;';
  52. }
  53. check = document.getElementById('main_css_toc');
  54. if(check.value === 'on') {
  55. document.cookie = 'main_css_toc_set=2;';
  56. } else if(check.value === 'off') {
  57. document.cookie = 'main_css_toc_set=1;';
  58. } else {
  59. document.cookie = 'main_css_toc_set=0;';
  60. }
  61. check = document.getElementById('main_css_font_size');
  62. if(check.value.match(/^[0-9]+$/)) {
  63. document.cookie = 'main_css_font_size=' + check.value + ';';
  64. } else {
  65. document.cookie = 'main_css_font_size=;';
  66. }
  67. check = document.getElementById('main_css_monaco');
  68. if(check.checked) {
  69. document.cookie = 'main_css_monaco=1;';
  70. } else {
  71. document.cookie = 'main_css_monaco=0;';
  72. }
  73. history.go(0);
  74. }
  75. function main_css_skin_load() {
  76. var head_data = document.querySelector('head');
  77. if(document.cookie.match(main_css_regex_data('main_css_del_strike'))) {
  78. if(document.cookie.match(main_css_regex_data('main_css_del_strike'))[1] === '1') {
  79. head_data.innerHTML += '<style>s { text-decoration: none; } s:hover { background-color: transparent; }</style>';
  80. } else if(document.cookie.match(main_css_regex_data('main_css_del_strike'))[1] === '2') {
  81. head_data.innerHTML += '<style>s { display: none; }</style>';
  82. }
  83. }
  84. if(document.cookie.match(main_css_regex_data('main_css_del_bold'))) {
  85. if(document.cookie.match(main_css_regex_data('main_css_del_bold'))[1] === '1') {
  86. head_data.innerHTML += '<style>b { font-weight: normal; }</style>';
  87. } else if(document.cookie.match(main_css_regex_data('main_css_del_bold'))[1] === '2') {
  88. head_data.innerHTML += '<style>b { display: none; }</style>';
  89. }
  90. }
  91. if(
  92. document.cookie.match(main_css_regex_data('main_css_include_link')) &&
  93. document.cookie.match(main_css_regex_data('main_css_include_link'))[1] === '1'
  94. ) {
  95. head_data.innerHTML += '<style>#include_link { display: inline; }</style>';
  96. }
  97. if(
  98. document.cookie.match(main_css_regex_data('main_css_category_set')) &&
  99. document.cookie.match(main_css_regex_data('main_css_category_set'))[1] === '1'
  100. ) {
  101. var get_category = document.getElementById('cate_all');
  102. if(get_category) {
  103. var backup_category = get_category.innerHTML;
  104. var in_data = document.getElementById('in_data_0').innerHTML;
  105. get_category.innerHTML = '';
  106. document.getElementById('in_data_0').innerHTML = backup_category + in_data;
  107. head_data.innerHTML += '<style>#cate { margin-top: 0px; margin-bottom: 20px; }</style>';
  108. }
  109. }
  110. if(
  111. document.cookie.match(main_css_regex_data('main_css_font_size')) &&
  112. document.cookie.match(main_css_regex_data('main_css_font_size'))[1] !== ''
  113. ) {
  114. head_data.innerHTML += '<style>.all_in_data { font-size: ' + document.cookie.match(main_css_regex_data('main_css_font_size'))[1] + 'px; }</style>';
  115. }
  116. if(document.cookie.match(main_css_regex_data('main_css_toc_set'))) {
  117. if(document.cookie.match(main_css_regex_data('main_css_toc_set'))[1] === '2') {
  118. head_data.innerHTML += '<style>#auto_toc { display: none; }</style>';
  119. } else if(document.cookie.match(main_css_regex_data('main_css_toc_set'))[1] === '1') {
  120. head_data.innerHTML += '<style>#toc { display: none; }</style>';
  121. }
  122. }
  123. }
  124. function main_css_load_lang(name) {
  125. var set_language = {
  126. "en-US" : {
  127. "default" : "Default",
  128. "change_to_normal" : "Change to normal text",
  129. "delete" : "Delete",
  130. "include_link" : "Using include link",
  131. "save" : "Save",
  132. "strike" : "Strike",
  133. "bold" : "Bold",
  134. "other" : "Other",
  135. "where_category" : "Set category location",
  136. "bottom" : "Bottom",
  137. "top" : "Top",
  138. "set_footnote" : "Set footnote",
  139. "renderer" : "Renderer",
  140. "spread" : "Spread",
  141. "set_image" : "Set image",
  142. "set_toc" : "Set TOC",
  143. "click_load" : "Load on click",
  144. "in_content" : "Only when TOC is in the document",
  145. "all_off" : "Always off",
  146. "set_font_size" : "Set font size",
  147. "change_to_link" : "Change to link",
  148. "font_size" : "font size",
  149. "editor" : "Editor",
  150. "main" : "Main",
  151. "clipboard_upload" : "Clipboard upload",
  152. "only_korean" : "Supported in korean only",
  153. "except_ie" : "Not supported for Internet Explorer",
  154. "use_monaco" : "Use monaco editor"
  155. }, "ko-KR" : {
  156. "default" : "기본값",
  157. "change_to_normal" : "일반 텍스트로 변경",
  158. "delete" : "삭제",
  159. "include_link" : "틀 링크 사용",
  160. "save" : "저장",
  161. "strike" : "취소선",
  162. "bold" : "볼드체",
  163. "other" : "기타",
  164. "where_category" : "분류 위치 설정",
  165. "bottom" : "아래",
  166. "top" : "위",
  167. "set_footnote" : "각주 설정",
  168. "renderer" : "렌더러",
  169. "spread" : "펼치기",
  170. "set_image" : "이미지 설정",
  171. "set_toc" : "목차 설정",
  172. "click_load" : "클릭시 불러오기",
  173. "in_content" : "문서 안에 있을 때만",
  174. "all_off" : "항상 끔",
  175. "set_font_size" : "글자 크기 설정",
  176. "change_to_link" : "링크로 변경",
  177. "font_size" : "글자 크기",
  178. "editor" : "편집기",
  179. "main" : "메인",
  180. "clipboard_upload" : "클립보드 파일 올리기",
  181. "only_korean" : "한국어로만 지원됨",
  182. "except_ie" : "인터넷 익스플로러에선 지원되지 않음",
  183. "use_monaco" : "모나코 에디터 사용"
  184. }
  185. }
  186. var server_language = document.cookie.match(main_css_regex_data('language'))[1];
  187. var user_language = document.cookie.match(main_css_regex_data('user_language'))[1];
  188. if(user_language in set_language) {
  189. language = user_language;
  190. } else {
  191. if(server_language in set_language) {
  192. language = server_language;
  193. } else {
  194. language = 'en-US';
  195. }
  196. }
  197. if(name in set_language[language]) {
  198. return set_language[language][name];
  199. } else {
  200. return name + ' (' + language + ')';
  201. }
  202. }
  203. function main_css_skin_set() {
  204. var set_data = {};
  205. var strike_list = [
  206. ['0', 'normal', main_css_load_lang('default')],
  207. ['1', 'change', main_css_load_lang('change_to_normal')],
  208. ['2', 'delete', main_css_load_lang('delete')]
  209. ];
  210. set_data["strike"] = '';
  211. var i = 0;
  212. while(strike_list[i]) {
  213. if(
  214. document.cookie.match(main_css_regex_data('main_css_del_strike')) &&
  215. document.cookie.match(main_css_regex_data('main_css_del_strike'))[1] === strike_list[i][0]
  216. ) {
  217. set_data["strike"] = '<option value="' + strike_list[i][1] + '">' + strike_list[i][2] + '</option>' + set_data["strike"];
  218. } else {
  219. set_data["strike"] += '<option value="' + strike_list[i][1] + '">' + strike_list[i][2] + '</option>';
  220. }
  221. i += 1;
  222. }
  223. var bold_list = [
  224. ['0', 'normal', main_css_load_lang('default')],
  225. ['1', 'change', main_css_load_lang('change_to_normal')],
  226. ['2', 'delete', main_css_load_lang('delete')]
  227. ];
  228. set_data["bold"] = '';
  229. i = 0;
  230. while(bold_list[i]) {
  231. if(
  232. document.cookie.match(main_css_regex_data('main_css_del_bold')) &&
  233. document.cookie.match(main_css_regex_data('main_css_del_bold'))[1] === bold_list[i][0]
  234. ) {
  235. set_data["bold"] = '<option value="' + bold_list[i][1] + '">' + bold_list[i][2] + '</option>' + set_data["bold"];
  236. } else {
  237. set_data["bold"] += '<option value="' + bold_list[i][1] + '">' + bold_list[i][2] + '</option>';
  238. }
  239. i += 1;
  240. }
  241. if(
  242. document.cookie.match(main_css_regex_data('main_css_include_link')) &&
  243. document.cookie.match(main_css_regex_data('main_css_include_link'))[1] === '1'
  244. ) {
  245. set_data["include"] = "checked";
  246. } else {
  247. set_data["include"] = "";
  248. }
  249. if(
  250. document.cookie.match(main_css_regex_data('main_css_image_paste')) &&
  251. document.cookie.match(main_css_regex_data('main_css_image_paste'))[1] === '1'
  252. ) {
  253. set_data["image_paste"] = "checked";
  254. } else {
  255. set_data["image_paste"] = "";
  256. }
  257. var category_list = [
  258. ['0', 'bottom', main_css_load_lang('bottom')],
  259. ['1', 'top', main_css_load_lang('top')],
  260. ];
  261. set_data["category"] = '';
  262. i = 0;
  263. while(category_list[i]) {
  264. if(
  265. document.cookie.match(main_css_regex_data('main_css_category_set')) &&
  266. document.cookie.match(main_css_regex_data('main_css_category_set'))[1] === category_list[i][0]
  267. ) {
  268. set_data["category"] = '<option value="' + category_list[i][1] + '">' + category_list[i][2] + '</option>' + set_data["category"];
  269. } else {
  270. set_data["category"] += '<option value="' + category_list[i][1] + '">' + category_list[i][2] + '</option>';
  271. }
  272. i += 1;
  273. }
  274. var footnote_list = [
  275. ['0', 'normal', main_css_load_lang('default')],
  276. ['1', 'spread', main_css_load_lang('spread')]
  277. ];
  278. set_data["footnote"] = '';
  279. i = 0;
  280. while(footnote_list[i]) {
  281. if(
  282. document.cookie.match(main_css_regex_data('main_css_footnote_set')) &&
  283. document.cookie.match(main_css_regex_data('main_css_footnote_set'))[1] === footnote_list[i][0]
  284. ) {
  285. set_data["footnote"] = '<option value="' + footnote_list[i][1] + '">' + footnote_list[i][2] + '</option>' + set_data["footnote"];
  286. } else {
  287. set_data["footnote"] += '<option value="' + footnote_list[i][1] + '">' + footnote_list[i][2] + '</option>';
  288. }
  289. i += 1;
  290. }
  291. var image_list = [
  292. ['0', 'normal', main_css_load_lang('default')],
  293. ['1', 'click', main_css_load_lang('change_to_link')],
  294. ['2', 'new_click', main_css_load_lang('click_load')]
  295. ];
  296. set_data["image"] = '';
  297. i = 0;
  298. while(image_list[i]) {
  299. if(
  300. document.cookie.match(main_css_regex_data('main_css_image_set')) &&
  301. document.cookie.match(main_css_regex_data('main_css_image_set'))[1] === image_list[i][0]
  302. ) {
  303. set_data["image"] = '<option value="' + image_list[i][1] + '">' + image_list[i][2] + '</option>' + set_data["image"];
  304. } else {
  305. set_data["image"] += '<option value="' + image_list[i][1] + '">' + image_list[i][2] + '</option>';
  306. }
  307. i += 1;
  308. }
  309. var toc_list = [
  310. ['0', 'normal', main_css_load_lang('default')],
  311. ['1', 'off', main_css_load_lang('all_off')],
  312. ['2', 'on', main_css_load_lang('in_content')]
  313. ];
  314. set_data["toc"] = '';
  315. i = 0;
  316. while(toc_list[i]) {
  317. if(
  318. document.cookie.match(main_css_regex_data('main_css_toc_set')) &&
  319. document.cookie.match(main_css_regex_data('main_css_toc_set'))[1] === toc_list[i][0]
  320. ) {
  321. set_data["toc"] = '<option value="' + toc_list[i][1] + '">' + toc_list[i][2] + '</option>' + set_data["toc"];
  322. } else {
  323. set_data["toc"] += '<option value="' + toc_list[i][1] + '">' + toc_list[i][2] + '</option>';
  324. }
  325. i += 1;
  326. }
  327. if(document.cookie.match(main_css_regex_data('main_css_font_size'))) {
  328. set_data["font_size"] = document.cookie.match(main_css_regex_data('main_css_font_size'))[1];
  329. } else {
  330. set_data["font_size"] = '';
  331. }
  332. if(
  333. document.cookie.match(main_css_regex_data('main_css_monaco')) &&
  334. document.cookie.match(main_css_regex_data('main_css_monaco'))[1] === '1'
  335. ) {
  336. set_data["monaco"] = "checked";
  337. } else {
  338. set_data["monaco"] = "";
  339. }
  340. document.getElementById("main_skin_set").innerHTML = ' \
  341. <h2>1. ' + main_css_load_lang('renderer') + '</h2> \
  342. <h3>1.1. ' + main_css_load_lang('strike') + '</h3> \
  343. <select id="main_css_strike"> \
  344. ' + set_data["strike"] + ' \
  345. </select> \
  346. <h3>1.2. ' + main_css_load_lang('bold') + '</h3> \
  347. <select id="main_css_bold"> \
  348. ' + set_data["bold"] + ' \
  349. </select> \
  350. <h3>1.3. ' + main_css_load_lang('where_category') + '</h3> \
  351. <select id="main_css_category"> \
  352. ' + set_data["category"] + ' \
  353. </select> \
  354. <h3>1.4. ' + main_css_load_lang('set_footnote') + '</h3> \
  355. <select id="main_css_footnote"> \
  356. ' + set_data["footnote"] + ' \
  357. </select> \
  358. <h3>1.5. ' + main_css_load_lang('set_image') + '</h3> \
  359. <select id="main_css_image"> \
  360. ' + set_data["image"] + ' \
  361. </select> \
  362. <h3>1.6. ' + main_css_load_lang('other') + '</h3> \
  363. <input ' + set_data["include"] + ' type="checkbox" id="main_css_include" value="include"> ' + main_css_load_lang('include_link') + ' \
  364. <h3>1.7. ' + main_css_load_lang('set_toc') + '</h3> \
  365. <select id="main_css_toc"> \
  366. ' + set_data["toc"] + ' \
  367. </select> \
  368. <h3>1.8. ' + main_css_load_lang('set_font_size') + '</h3> \
  369. <input id="main_css_font_size" placeholder="' + main_css_load_lang('font_size') + ' (EX : 11)" value="' + set_data["font_size"] + '"> \
  370. <h2>2. ' + main_css_load_lang('editor') + '</h2> \
  371. <h3>2.1. ' + main_css_load_lang('main') + '</h3> \
  372. <input ' + set_data["monaco"] + ' type="checkbox" id="main_css_monaco" value="monaco"> ' + main_css_load_lang('use_monaco') + '<sup>(1)</sup> \
  373. <hr class="main_hr"> \
  374. <input ' + set_data["image_paste"] + ' type="checkbox" id="main_css_image_paste" value="image_paste"> ' +
  375. main_css_load_lang('clipboard_upload') + '<sup>(ko-KR)</sup><sup>(1)</sup> \
  376. <hr class="main_hr"> \
  377. <button onclick="main_css_get_post();">' + main_css_load_lang('save') + '</button> \
  378. <hr class="main_hr"> \
  379. <ul id="footnote_data"> \
  380. <li><a id="note_1_end" href="#note_1">(1)</a> ' + main_css_load_lang('except_ie') + '</li> \
  381. <li><a href="#note_1_1">(1.1)</a></li> \
  382. <li><a id="note_2_end" href="#note_2">(ko-KR)</a> ' + main_css_load_lang('only_korean') + '</li> \
  383. </ul> \
  384. ';
  385. // 목차 구현
  386. var toc_all_data = '<div id="toc"><span id="toc_title">TOC</span><br>';
  387. var skin_set_data = document.getElementById("main_skin_set").innerHTML;
  388. var split_toc;
  389. var toc_data;
  390. i = 1;
  391. while(1) {
  392. toc_data = skin_set_data.match(/<h[1-6]>([^<>]+)<\/h[1-6]>/);
  393. if(toc_data) {
  394. split_toc = toc_data[1].match(/^([^ ]+)(.+)/);
  395. toc_all_data += '' +
  396. '<br>' +
  397. '<span style="margin-left: ' + String(((toc_data[1].match(/\./g) || []).length - 1) * 10) + 'px;">' +
  398. '<a href="#toc_' + String(i) + '">' + split_toc[1] + '</a>' + split_toc[2] +
  399. '</span>' +
  400. '';
  401. skin_set_data = skin_set_data.replace(
  402. /<(h[1-6])>([^<>]+)<\/h[1-6]>/,
  403. '<$1 id="toc_' + String(i) + '"><a href="#toc">' + split_toc[1] + '</a>' + split_toc[2] + '</$1>'
  404. );
  405. i += 1;
  406. } else {
  407. break;
  408. }
  409. }
  410. document.getElementById("main_skin_set").innerHTML = toc_all_data + '</div>' + skin_set_data;
  411. // 각주 구현
  412. skin_set_data = document.getElementById("main_skin_set").innerHTML;
  413. var note_list = {};
  414. var plus_note;
  415. i = 1;
  416. while(1) {
  417. toc_data = skin_set_data.match(/<sup>([^<>]+)<\/sup>/);
  418. if(toc_data) {
  419. if(!note_list[toc_data[1]]) {
  420. note_list[toc_data[1]] = [String(i), 0];
  421. } else {
  422. note_list[toc_data[1]][1] += 1;
  423. }
  424. if(note_list[toc_data[1]][1] != 0) {
  425. plus_note = '_' + String(note_list[toc_data[1]][1]);
  426. } else {
  427. plus_note = '';
  428. }
  429. skin_set_data = skin_set_data.replace(
  430. /<sup>([^<>]+)<\/sup>/,
  431. '<sup><a id="note_' + note_list[toc_data[1]][0] + plus_note + '" href="#note_' + note_list[toc_data[1]][0] + '_end">$1</a></sup>'
  432. );
  433. i += 1;
  434. } else {
  435. break;
  436. }
  437. }
  438. document.getElementById("main_skin_set").innerHTML = skin_set_data;
  439. }