script_eng.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  1. checkRoute();
  2. let userBasics = JSON.parse(localStorage.getItem('user_profile')) || [];
  3. //userBasics = JSON.parse(userBasics);
  4. if(userBasics.length > 0 || typeof(userBasics) !== 'string'){
  5. $('.userName').html(`<h2 class="user-name text-white mt-lg-3 mt-xl-1 fw-bold">Hi ${userBasics.user_info.userName}</h2>`);
  6. }
  7. function checkRoute() {
  8. let jwt_token = get_jwt_token();
  9. if(jwt_token == undefined) {
  10. window.location.replace("login.html");
  11. }
  12. axios({
  13. method: 'post',
  14. url: 'https://www.choozmo.com:8887/user_profile',
  15. headers: {
  16. 'accept': 'text/html',
  17. 'Authorization': `Bearer ${jwt_token}`
  18. }
  19. }).then(res => {
  20. console.log(res.data);
  21. // if(res.status !== 200) {
  22. // window.location.replace("login.html");
  23. // }
  24. var userName='';
  25. userName+=' <h2 class="user-name text-white mt-4 fw-bold">Hi '+res.data.user_info.userName+'</h2>';
  26. $('.userName').html(userName);
  27. }).catch(err => {
  28. console.log(err);
  29. window.location.replace("login.html");
  30. });
  31. }
  32. const btnLoginPage = document.querySelector('.btn-login');
  33. const btnUserProfile = document.querySelector('.btn-userProfile');
  34. const btnLogout = document.querySelector('.btn-logout');
  35. function loginControl() {
  36. btnLoginPage.style.display = 'none';
  37. btnLogout.style.display = 'block';
  38. btnUserProfile.style.display = 'block';
  39. }
  40. loginControl();
  41. // Check lan
  42. let lan = localStorage.getItem('lan');
  43. $('.dropdown-toggle').click(() => {
  44. lan = localStorage.getItem('lan');
  45. checkLan();
  46. });
  47. checkLan();
  48. function checkLan() {
  49. if(lan == 'en') {
  50. $('.btn-makev').css('display', 'none');
  51. $('.btn-makelong').css('display', 'none');
  52. } else {
  53. $('.btn-makev').css('display', 'block');
  54. $('.btn-makelong').css('display', 'block');
  55. $('.title_new').attr('placeholder', '標題')
  56. }
  57. }
  58. var client_id = Date.now();
  59. var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
  60. var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
  61. return new bootstrap.Tooltip(tooltipTriggerEl)
  62. });
  63. var myModal = new bootstrap.Modal(document.getElementById('history'), {
  64. keyboard: false
  65. })
  66. var avatarModal = new bootstrap.Modal(document.getElementById('avatarmega'), {
  67. keyboard: false
  68. })
  69. var modalImg = document.querySelector("#avatarmega .modal-img");
  70. var modalTitle = document.querySelector("#avatarmega .modal-title");
  71. var avatarSelector = document.getElementById("avatar");
  72. var card = document.querySelectorAll('.avatar-cards .card');
  73. var draftsModal = new bootstrap.Modal(document.getElementById('draftModal'), {
  74. keyboard: false
  75. })
  76. card = [...card];
  77. avatarSelector.addEventListener('change', avatarChange);
  78. avatarChange();
  79. function addCardListener() {
  80. for (let i = 0; i < card.length; i++) {
  81. card[i].addEventListener('click', openavatarModel);
  82. }
  83. }
  84. addCardListener();
  85. function avatarChange() {
  86. var value = avatarSelector.options[avatarSelector.selectedIndex].text;
  87. $('.owl-carousel').trigger('to.owl.carousel', avatarSelector.selectedIndex);
  88. for (let i = 0; i < card.length; i++) {
  89. card[i].classList.remove('active');
  90. if (card[i].dataset.avatar == value) {
  91. card[i].classList.add('active');
  92. }
  93. }
  94. }
  95. function openavatarModel() {
  96. console.log(this.dataset.img);
  97. modalImg.setAttribute("src", `static/img/${this.dataset.img}.webp`);
  98. modalTitle.textContent = `${this.dataset.avatar}`;
  99. avatarModal.show();
  100. }
  101. $('input[type=file]').on('change', prepareUpload);
  102. function prepareUpload(event) {
  103. files = event.target.files;
  104. var data = new FormData();
  105. //data.append('file', $('.img_up1').prop('files')[0]);
  106. data.append('file', files[0]);
  107. // append other variables to data if you want: data.append('field_name_x', field_value_x);
  108. $(this).next().text('');
  109. $(this).next().html('<img src="static/img/Spinner-1s-181px.gif">');
  110. $.ajax({
  111. type: 'POST',
  112. processData: false, // important
  113. contentType: false, // important
  114. data: data,
  115. url: 'https://www.choozmo.com:8887/uploadfile',
  116. dataType: 'json',
  117. success: function (jsonData) {
  118. event.target.previousSibling.value = jsonData.msg;
  119. $(this).prev().val(jsonData.msg);
  120. event.target.nextSibling.innerHTML = '';
  121. event.target.nextSibling.textContent = 'Upload';
  122. //console.log($(this).next());
  123. //$(this).next().html('上傳檔案');
  124. //$(this).next().text('上傳檔案');
  125. },
  126. error: function (error) {
  127. event.target.nextSibling.innerHTML = '';
  128. event.target.nextSibling.textContent = '上傳檔案';
  129. alert('圖片錯誤');
  130. }
  131. });
  132. }
  133. const button = document.querySelector('.next');
  134. // Drafts
  135. function getDraft() {
  136. JsLoadingOverlay.show({
  137. "overlayBackgroundColor": "#FFFFFF",
  138. "overlayOpacity": "1",
  139. "spinnerIcon": "ball-circus",
  140. "spinnerColor": "#B9DDF3",
  141. "spinnerSize": "1x",
  142. "overlayIDName": "overlay",
  143. "spinnerIDName": "spinner",
  144. "offsetX": 0,
  145. "offsetY": 0,
  146. "containerID": "draft-table",
  147. "lockScroll": false,
  148. "overlayZIndex": 9998,
  149. "spinnerZIndex": 9999
  150. });
  151. let token = get_jwt_token();
  152. axios({
  153. method: 'post',
  154. url: 'https://www.choozmo.com:8887/draft_list',
  155. headers: {
  156. 'accept': 'application/json',
  157. 'Authorization': `Bearer ${token}`
  158. }
  159. }).then(res => {
  160. console.log(res.data);
  161. let result = [...res.data];
  162. let str = '';
  163. let draftStr = '';
  164. let nodraftTxt = '目前沒有草稿喔';
  165. if(lan == 'en') {
  166. titleTxt = 'Video Title';
  167. editTxt = 'Edit';
  168. nodraftTxt = 'no_draft';
  169. }
  170. if(result.length > 0){
  171. for(let i = 0;i < result.length; i++) {
  172. draftStr += `<tr>
  173. <td>${result[i].title}</td>
  174. <td>
  175. <span class="me-md-3 draft-content-icon" id="${result[i].id}" onclick="gotoDraft(${result[i].id})">
  176. <i class="fas fa-edit"></i>
  177. </span>
  178. <span class="ms-md-3 draft-content-icon draft-content-delete" id="${result[i].id}" onclick="deleteDraft(${result[i].id})">
  179. <i class="fas fa-trash-alt"></i>
  180. </span>
  181. </td>
  182. </tr>`
  183. }
  184. let titleTxt = '標題';
  185. let editTxt = '編輯';
  186. str = `<table class="table text-center">
  187. <thead>
  188. <tr>
  189. <th scope="col" set-lan="html:video_title">${titleTxt}</th>
  190. <th class="px-0" scope="col" set-lan="html:draft_edit">${editTxt}</th>
  191. </tr>
  192. </thead>
  193. <tbody class="draft-content">${draftStr}</tbody>
  194. </table>`
  195. $('.draft-table .card').html(str);
  196. JsLoadingOverlay.hide();
  197. } else {
  198. str = `<div>
  199. <h5 set-lan="html:no_draft">${nodraftTxt}</h5>
  200. <img src="static/img/undraw_void_3ggu.svg" width="80">
  201. </div>`;
  202. $('.draft-table .card').html(str);
  203. JsLoadingOverlay.hide();
  204. }
  205. }).catch(err => {
  206. console.log(err);
  207. });
  208. }
  209. getDraft();
  210. function openDrafts() {
  211. draftsModal.show()
  212. document.querySelector('#draftModal .loader').style.display = "block";
  213. $('#draftModal #draft-table').show();
  214. getDraft();
  215. document.querySelector('#draftModal .loader').style.display = "none";
  216. }
  217. function gotoDraft (id) {
  218. location.href = `make_video2.html?draftid=${id}`;
  219. }
  220. function deleteDraft(id) {
  221. let token = get_jwt_token();
  222. JsLoadingOverlay.show({
  223. "overlayBackgroundColor": "#FFFFFF",
  224. "overlayOpacity": "1",
  225. "spinnerIcon": "ball-circus",
  226. "spinnerColor": "#B9DDF3",
  227. "spinnerSize": "1x",
  228. "overlayIDName": "overlay",
  229. "spinnerIDName": "spinner",
  230. "offsetX": 0,
  231. "offsetY": 0,
  232. "containerID": "draft-table",
  233. "lockScroll": false,
  234. "overlayZIndex": 9998,
  235. "spinnerZIndex": 9999
  236. });
  237. axios({
  238. method: 'post',
  239. url: 'https://www.choozmo.com:8887/del_draft',
  240. headers: {
  241. 'accept': 'application/json',
  242. 'Authorization': `Bearer ${token}`,
  243. 'Content-Type': 'application/json'
  244. },
  245. data: { "id": id }
  246. }).then(res => {
  247. console.log(res.data);
  248. //$('.draft-content-delete').html('<i class="fas fa-trash-alt"></i>');
  249. JsLoadingOverlay.hide();
  250. getDraft();
  251. draftsModal.show();
  252. avatarModal.hide();
  253. }).catch(err => {
  254. console.log(err);
  255. });
  256. }
  257. // Upload
  258. $(".next").click(function () {
  259. button.setAttribute('disabled', '');
  260. setTimeout(function () {
  261. button.removeAttribute('disabled')
  262. }, 8000);
  263. avatar = $('.avatar').val();
  264. name_title = $('.title_new').val();
  265. txtARR = [];
  266. imgARR = [];
  267. sublineARR = [];
  268. var step;
  269. let contentIdx = document.querySelectorAll(".txtsrc").length;
  270. for (let i = 1; i < (contentIdx + 1); i++) {
  271. if ($(`.txtsrc${i}`).val() != "") {
  272. txtARR.push($(`.txtsrc${i}`).val())
  273. }
  274. }
  275. let sublineIdx = document.querySelectorAll(".subsrc").length;
  276. for (let i = 1; i < (sublineIdx + 1); i++) {
  277. if ($(`.subsrc${i}`).val() != "") {
  278. sublineARR.push($(`.subsrc${i}`).val())
  279. }
  280. }
  281. let imgIdx = document.querySelectorAll(".imgsrc").length;
  282. for (let i = 1; i < (imgIdx + 1); i++) {
  283. if ($(`.imgsrc${i}`).val() != "") {
  284. imgARR.push($(`.imgsrc${i}`).val())
  285. }
  286. }
  287. dataOBJ = { "name": name_title, "text_content": txtARR, "image_urls": imgARR, "sub_titles": sublineARR, "avatar": avatar };
  288. objstr = JSON.stringify(dataOBJ);
  289. console.log(dataOBJ);
  290. jwt_token = get_jwt_token();
  291. var xhr = new XMLHttpRequest();
  292. xhr.open("POST", "https://www.choozmo.com:8887/make_anchor_video_eng");
  293. xhr.setRequestHeader("accept", "application/json");
  294. xhr.setRequestHeader("Authorization","Bearer "+jwt_token)
  295. xhr.setRequestHeader("Content-Type", "application/json");
  296. xhr.onreadystatechange = function () {
  297. if (xhr.readyState === 4) {
  298. responseOBJ = JSON.parse(xhr.responseText);
  299. console.log(responseOBJ);
  300. Swal.fire({
  301. icon: 'info',
  302. text: responseOBJ.msg.eng,
  303. confirmButtonColor: '#3085d6',
  304. });
  305. }
  306. };
  307. var data = renderXHR_data(dataOBJ)
  308. console.log(data)
  309. result = xhr.send(objstr);
  310. });
  311. var loaded_data = ''
  312. function openNav() {
  313. document.getElementById("mySidenav").style.width = "250px";
  314. document.querySelector('.loader').style.display = "block";
  315. let jwt_token = get_jwt_token();
  316. axios({
  317. method: 'post',
  318. url: 'https://www.choozmo.com:8887/history_input',
  319. headers: {
  320. 'accept': 'application/json',
  321. 'Authorization': `Bearer ${jwt_token}`
  322. }
  323. }).then(res => {
  324. console.log(res.data);
  325. loaded_data = res.data;
  326. var historyList = document.querySelector('.historyList');
  327. historyList.innerHTML = '';
  328. for (var obj of loaded_data) {
  329. var list = document.createElement('li');
  330. list.id = obj.id;
  331. // div-imgfr
  332. var divImgfr = document.createElement('div');
  333. divImgfr.classList.add('item_imgfr');
  334. var img = document.createElement('img');
  335. img.setAttribute('src', obj['image_urls'][0]);
  336. divImgfr.appendChild(img);
  337. // div-content
  338. var contentBox = document.createElement('div');
  339. contentBox.classList.add('content-box');
  340. var boxTitle = document.createElement('p');
  341. boxTitle.classList.add('box-title');
  342. boxTitle.textContent = obj.name;
  343. boxTitle.id = obj.id;
  344. boxTitle.setAttribute('onclick', 'load_data()');
  345. var boxLink = document.createElement('span');
  346. boxLink.classList.add('box-link');
  347. boxLink.setAttribute("data-url", obj.link);
  348. boxLink.setAttribute('onclick', 'view()');
  349. boxLink.innerHTML = '<i class="fas fa-play-circle me-1"></i>觀看影片';
  350. contentBox.appendChild(boxTitle);
  351. contentBox.appendChild(boxLink);
  352. list.classList.add("historyList-item");
  353. list.setAttribute('onclick', 'load_data()');
  354. list.appendChild(divImgfr);
  355. list.appendChild(contentBox);
  356. historyList.appendChild(list);
  357. }
  358. document.querySelector('.loader').style.display = "none";
  359. }).catch(err => {
  360. console.log(err);
  361. });
  362. }
  363. function closeNav() {
  364. document.getElementById("mySidenav").style.width = "250px";
  365. }
  366. function view() {
  367. event.stopPropagation();
  368. console.log(event.target);
  369. if (event.target.nodeName === 'I') {
  370. return;
  371. } else {
  372. window.open(`http://${event.target.dataset.url}`, '_blank');
  373. }
  374. }
  375. function renderXHR_data(jsonObj) {
  376. XHRstring = ''
  377. for (const [key, value] of Object.entries(jsonObj)) {
  378. console.log(value)
  379. if (typeof (value) == "object") {
  380. XHRstring += (key+'=['+value.join(',')+']&')
  381. }
  382. else {
  383. XHRstring += (key + '=' + value + '&')
  384. }
  385. }
  386. XHRstring = XHRstring.substring(0, XHRstring.length - 1);
  387. return XHRstring
  388. }
  389. function get_jwt_token(){
  390. jwt_raw = document.cookie.split(';').filter(s=>s.includes('jwt_token'))[0];
  391. if(!jwt_raw) {return}
  392. return jwt_raw.split('=')[1];
  393. }
  394. function load_data() {
  395. var title = document.getElementById("title");
  396. var linker = document.getElementById("linker");
  397. myModal.hide()
  398. tid = event.srcElement.id
  399. console.log(tid);
  400. linker.setAttribute('href', `http://${loaded_data.find(item => item.id == tid).link}`)
  401. linker.setAttribute('target', '_blank')
  402. $("#linker").html(`http://${loaded_data.find(item => item.id == tid).link}`)
  403. $("#linker").show();
  404. $(".linker__box").show();
  405. let historyItem = loaded_data.filter(item => item.id == tid)[0];
  406. console.log(historyItem);
  407. $(".title_new").val(loaded_data.find(item => item.id == tid).name);
  408. let txtlength = historyItem.text_content.length;
  409. let imglength = historyItem.image_urls.length;
  410. let sublinelength = historyItem.sub_titles.length;
  411. subtitleInputs.innerHTML = '';
  412. imgInputs.innerHTML = '';
  413. sublineInputs.innerHTML = '';
  414. for (let i = 0; i < txtlength; i++) {
  415. var txtinput = document.createElement("input");
  416. txtinput.setAttribute('type', 'text');
  417. txtinput.setAttribute('name', `t${i + 1}`);
  418. txtinput.value = historyItem.text_content[i];
  419. txtinput.setAttribute('placeholder', `${i + 1}`);
  420. txtinput.classList.add('txtsrc', `txtsrc${i + 1}`)
  421. subtitleInputs.appendChild(txtinput);
  422. }
  423. for (let i = 0; i < sublinelength; i++) {
  424. var txtinput = document.createElement("input");
  425. txtinput.setAttribute('type', 'text');
  426. txtinput.setAttribute('name', `s${i + 1}`);
  427. txtinput.value = historyItem.sub_titles[i];
  428. txtinput.setAttribute('placeholder', `${i + 1}`);
  429. txtinput.classList.add('subsrc', `subsrc${i + 1}`)
  430. sublineInputs.appendChild(txtinput);
  431. }
  432. for (let i = 0; i < imglength; i++) {
  433. var imginput = document.createElement("input");
  434. imginput.setAttribute('type', 'text');
  435. imginput.setAttribute('name', `m${i + 1}`);
  436. imginput.classList.add('imgsrc', `imgsrc${i + 1}`);
  437. imginput.value = historyItem.image_urls[i];
  438. imginput.setAttribute('placeholder', `${i + 1}`);
  439. imgInputs.appendChild(imginput);
  440. var imgupload = document.createElement("input");
  441. imgupload.setAttribute('id', `img${i + 1}`);
  442. imgupload.setAttribute('type', `file`);
  443. imgupload.classList.add('img_uploader', 'img_up');
  444. imgInputs.appendChild(imgupload);
  445. var imguploadlabel = document.createElement("label");
  446. imguploadlabel.setAttribute('for', `img${i + 1}`);
  447. imguploadlabel.classList.add('upload-btn');
  448. imguploadlabel.textContent = 'Upload';
  449. imgInputs.appendChild(imguploadlabel);
  450. }
  451. }
  452. // var subtitleInputs = document.querySelector(".subtitle-inputs");
  453. // var sublineInputs = document.querySelector(".subline-inputs");
  454. // var imgInputs = document.querySelector(".img-inputs");
  455. let length = 5;
  456. function initial() {
  457. for (let i = 0; i < length; i++) {
  458. // rendertxtBlock(i + 1);
  459. // renderimgBlock(i + 1);
  460. // renderSublineBlock(i +1);
  461. renderInputSec(i+1);
  462. }
  463. console.log(document.querySelectorAll(".txtsrc").length + 1);
  464. }
  465. initial();
  466. /* var addbtn = document.querySelector(".add");
  467. var addimgbtn = document.querySelector(".addimg");
  468. var addSubline = document.querySelector('.add-subline');
  469. addbtn.addEventListener('click', addtxtBlock);
  470. addimgbtn.addEventListener('click', addimgBlock);
  471. addSubline.addEventListener('click', addsubBlock); */
  472. var addsecbtn = document.querySelector(".addsec");
  473. addsecbtn.addEventListener('click', addsecBlock);
  474. function addsecBlock() {
  475. let newsecIdx = document.querySelectorAll(".input-sec").length + 1;
  476. renderInputSec(newsecIdx);
  477. }
  478. /* function addtxtBlock() {
  479. let newIdx = document.querySelectorAll(".txtsrc").length + 1;
  480. rendertxtBlock(newIdx);
  481. }
  482. function addsubBlock() {
  483. let newIdx = document.querySelectorAll(".subsrc").length + 1;
  484. renderSublineBlock(newIdx);
  485. }
  486. function addimgBlock() {
  487. let newimgIdx = document.querySelectorAll(".imgsrc").length + 1;
  488. renderimgBlock(newimgIdx);
  489. } */
  490. function rendertxtBlock(i) {
  491. var txtinput = document.createElement("input");
  492. txtinput.setAttribute('type', 'text');
  493. txtinput.setAttribute('name', `t${i}`);
  494. txtinput.value = "";
  495. txtinput.setAttribute('placeholder', `${i}`);
  496. txtinput.classList.add('txtsrc', `txtsrc${i}`)
  497. subtitleInputs.appendChild(txtinput);
  498. }
  499. function renderSublineBlock(i) {
  500. var txtinput = document.createElement("input");
  501. txtinput.setAttribute('type', 'text');
  502. txtinput.setAttribute('name', `s${i}`);
  503. txtinput.value = "";
  504. txtinput.setAttribute('placeholder', `${i}`);
  505. txtinput.classList.add('subsrc', `subsrc${i}`)
  506. sublineInputs.appendChild(txtinput);
  507. }
  508. function renderimgBlock(i) {
  509. var imginput = document.createElement("input");
  510. imginput.setAttribute('type', 'text');
  511. imginput.setAttribute('name', `m${i}`);
  512. imginput.classList.add('imgsrc', `imgsrc${i}`);
  513. imginput.value = "";
  514. imginput.setAttribute('placeholder', `${i}`);
  515. imgInputs.appendChild(imginput);
  516. var imgupload = document.createElement("input");
  517. imgupload.setAttribute('id', `img${i}`);
  518. imgupload.setAttribute('type', `file`);
  519. imgupload.classList.add('img_uploader', 'img_up');
  520. imgInputs.appendChild(imgupload);
  521. var imguploadlabel = document.createElement("label");
  522. imguploadlabel.setAttribute('for', `img${i}`);
  523. imguploadlabel.classList.add('upload-btn');
  524. imguploadlabel.textContent = 'Upload';
  525. imgInputs.appendChild(imguploadlabel);
  526. $('input[type=file]').on('change', prepareUpload);
  527. }
  528. function renderInputSec(i) {
  529. var input_sec = document.createElement('div');
  530. var img_box = document.createElement('div');
  531. input_sec.classList.add('input-sec', `input-sec${i}`, 'p-3', 'mb-3', 'text-end');
  532. img_box.classList.add('img-box');
  533. // subtitle input
  534. var subtitleinput = document.createElement("input");
  535. subtitleinput.setAttribute('type', 'text');
  536. subtitleinput.setAttribute('name', `s${i}`);
  537. subtitleinput.classList.add('subsrc', `subsrc${i}`);
  538. subtitleinput.value = "";
  539. subtitleinput.setAttribute('placeholder', `Subtitle`);
  540. if(lan == 'zh') {
  541. subtitleinput.setAttribute('placeholder', '副標題');
  542. }
  543. input_sec.appendChild(subtitleinput);
  544. // text input
  545. var txtinput = document.createElement("input");
  546. txtinput.setAttribute('type', 'text');
  547. txtinput.setAttribute('name', `t${i}`);
  548. txtinput.classList.add('txtsrc', `txtsrc${i}`);
  549. txtinput.value = "";
  550. txtinput.setAttribute('placeholder', `Line`);
  551. if(lan == 'zh') {
  552. txtinput.setAttribute('placeholder', `台詞`);
  553. }
  554. input_sec.appendChild(txtinput);
  555. // img url input
  556. var imginput = document.createElement("input");
  557. imginput.setAttribute('type', 'text');
  558. imginput.setAttribute('name', `m${i}`);
  559. imginput.classList.add('imgsrc', `imgsrc${i}`);
  560. imginput.value = "";
  561. imginput.setAttribute('placeholder', 'Type in image link or upload image');
  562. if(lan == 'zh') {
  563. imginput.setAttribute('placeholder', '輸入圖片網址或上傳圖片');
  564. }
  565. img_box.appendChild(imginput);
  566. // img upload input
  567. var imgupload = document.createElement("input");
  568. imgupload.setAttribute('id', `img${i}`);
  569. imgupload.setAttribute('type', `file`);
  570. imgupload.classList.add('img_uploader', 'img_up');
  571. imgupload.style.display = "none";
  572. img_box.appendChild(imgupload);
  573. // img upload label
  574. var imguploadlabel = document.createElement("label");
  575. imguploadlabel.setAttribute('for', `img${i}`);
  576. imguploadlabel.classList.add('upload-btn');
  577. // imguploadlabel.textContent = 'Upload';
  578. imguploadlabel.setAttribute('set-lan', `html:upload_file`);
  579. img_box.appendChild(imguploadlabel);
  580. imgupload.addEventListener('change', prepareUpload);
  581. // preview image
  582. // var imgPreBox = document.createElement("div");
  583. // imgPreBox.classList.add('upload-cta');
  584. // img_box.appendChild(imgPreBox);
  585. input_sec.appendChild(img_box);
  586. document.querySelector('.img-inputTest').append(input_sec);
  587. }