MainContentsPopupForm.html 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : MainContentsPopupForm.html
  7. * @desc : 메인전시 컨텐츠 수정 팝업 Page
  8. *============================================================================
  9. * STYLE24
  10. * Copyright(C) 2020 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2021.2.23 bin2107 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div class="modalPopup" data-width="1500" >
  18. <div class="panelStyle">
  19. <div class="panelTitle">
  20. <h2 id="popTitle" th:text="${contentsLoc}"></h2>
  21. <button type="button" class="close" onclick="fnMainContentsPopupFormClose()"><i class="fa fa-times"></i></button>
  22. </div>
  23. <div class="panelContent">
  24. <ul class="panelBar">
  25. <li class="aL">
  26. <span class="cBlue">* 상단으로 드래그&amp;드랍하여 순서 변경 가능합니다.</span>
  27. </li>
  28. <li class="aR">
  29. <button type="button" class="btn btn btn-base btn-sm" id="btnPopAddRow">컨텐츠 추가</button>
  30. <button type="button" class="btn btn btn-dark btn-sm" id="btnPopSave">임시저장</button>
  31. <input type="hidden" name="uploadDefaultUrlPop" id="uploadDefaultUrlPop" th:value="${@environment.getProperty('upload.image.view') + '/contents/'}"/>
  32. </li>
  33. </ul>
  34. </div>
  35. <form name="contentsTitleForm" id="contentsTitleForm" style="width:1170px; overflow:auto; display: none;">
  36. <table class="frmStyle">
  37. <colgroup>
  38. <col style="width:10%;"/>
  39. <col style="width:40%;"/>
  40. <col style="width:10%;"/>
  41. <col style="width:40%;"/>
  42. </colgroup>
  43. <tr>
  44. <th>컨텐츠 타이틀</th>
  45. <td colspan="3"><input type="text" style="width:43.5%;" name="contentsTitle" maxlength="40" required="required" data-valid-name="컨텐츠타이틀" th:value="${contentsTitle}"></td>
  46. </tr>
  47. </table>
  48. </form>
  49. <form style="height:600px; width:1470px; overflow:auto;" id="popSortable">
  50. </form>
  51. </div>
  52. </div>
  53. <script th:inline="javascript">
  54. /*<![CDATA[*/
  55. var cateNo = [[${cateNo}]];
  56. var contentsLoc = [[${contentsLoc}]];
  57. var brandGroupNo = [[${brandGroupNo}]];
  58. var contentsTitle = [[${contentsTitle}]];
  59. var contentsLocArr = gagajf.convertToArray([[${contentsLocList}]]);
  60. var tdWidth = $("#sortable").find("td").width();
  61. var tdDeleteWidth = parseInt(tdWidth/11, 10);
  62. tdWidth = tdWidth - tdDeleteWidth;
  63. var tableLen = 0; // 테이블 ID
  64. // 컨텐츠 미리보기 리스트
  65. var fnGetContentsPreviewList = function() {
  66. $("#popSortable").html('');
  67. var data = {cateNo : cateNo
  68. ,contentsLoc : contentsLoc
  69. ,brandGroupNo : brandGroupNo
  70. };
  71. var jsonData = JSON.stringify(data);
  72. gagajf.ajaxJsonSubmit('/display/contents/preview/list', jsonData, fnCreatePopLayout);
  73. }
  74. var fnCreateCateMainLayout = function(result){
  75. var html = '';
  76. for(let i=0; i<result.length; i++){
  77. html += '<form name="contentsTitleForm" id="contentsTitleForm" style="width:1170px; overflow:auto;>';
  78. html += ' <table className="frmStyle">';
  79. html += ' <colgroup>';
  80. html += ' <col style="width:10%;"/>';
  81. html += ' <col style="width:40%;"/>';
  82. html += ' <col style="width:10%;"/>';
  83. html += ' <col style="width:40%;"/>';
  84. html += ' </colgroup>';
  85. html += ' <tr>';
  86. html += ' <th>컨텐츠 타이틀</th>';
  87. html += ' <td colSpan="3"><input type="text" style="width:43.5%;" name="contentsTitle" maxLength="40" required="required" data-valid-name="컨텐츠타이틀" value"'+result[i].mdTitle+'">';
  88. html += ' </td>';
  89. html += ' </tr>';
  90. html += ' <tr>';
  91. html += ' <th>전시 설정</th>';
  92. html += ' <td>';
  93. if(result[i].useYn=='Y'){
  94. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="Y" checked="checked"/>노출</label>';
  95. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="N"/>비노출</label>';
  96. }else{
  97. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="Y"/>노출</label>';
  98. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="N" checked="checked"/>비노출</label>';
  99. }
  100. html += ' </td>';
  101. if(result[i].contentsLoc=='SCM003'){
  102. html += ' <th>상품 노출 개수</th>';
  103. html += ' <td>';
  104. if(result[i].strVar1=='10'){
  105. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10" checked="checked"/>10개</label>';
  106. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20"/>20개</label>';
  107. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30"/>30개</label>';
  108. }else if(result[i].strVar1=='20'){
  109. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10"/>10개</label>';
  110. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20" checked="checked"/>20개</label>';
  111. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30"/>30개</label>';
  112. }else{
  113. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10"/>10개</label>';
  114. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20"/>20개</label>';
  115. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30" checked="checked"/>30개</label>';
  116. }
  117. html += ' </td>';
  118. }
  119. html += ' </tr>';
  120. html += ' </table>';
  121. html += '</form>';
  122. }
  123. }
  124. var createIdx = 0;
  125. var fnCreatePopLayout = function(result) {
  126. var html = '';
  127. for(var i=0; i<result.length; i++){
  128. var dispStdt = result[i].dispStdt.split(" ");
  129. var dispEddt = result[i].dispEddt.split(" ");
  130. html += '<table class="frmStyle mcTable" style="margin-bottom:30px" id="mcTable'+i+'">';
  131. html += '<input type="hidden" name="tableIdx" value="'+i+'" data-id="'+i+'">';
  132. html += '<colgroup>';
  133. html += '<col style="width:10%;"/>';
  134. html += '<col style="width:55%;"/>';
  135. html += '<col/>';
  136. html += '</colgroup>';
  137. html += '<thead><tr><th>전시일시</th><td><input name="dispStdt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출시작일" data-valid-type="calendar" value="'+dispStdt[0]+'"/>';
  138. html += '<select name="stTimeHour" required="required" data-valid-name="노출기간 시작시간">';
  139. html += fnCreateTimeOption(24, dispStdt[1].split(":")[0]);
  140. html += '</select>';
  141. html += '<select name="stTimeMin" required="required" data-valid-name="노출기간 시작시간">';
  142. html += fnCreateTimeOption(60, dispStdt[1].split(":")[1]);
  143. html += '</select>';
  144. html += '<span> ~ </span>';
  145. html += '<input name="dispEddt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출종료일" data-valid-type="calendar" value="'+dispEddt[0]+'"/>';
  146. html += '<select name="edTimeHour" required="required" data-valid-name="노출기간 종료시간">';
  147. html += fnCreateTimeOption(24, dispEddt[1].split(":")[0]);
  148. html += '</select>';
  149. html += '<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
  150. html += fnCreateTimeOption(60, dispEddt[1].split(":")[1]);
  151. html += '</select>';
  152. html += '<input name="dispOrd" type="text" class="w80"placeholder="전시순서" style="margin-left:5px; text-align:center"/>';
  153. html += '</td>';
  154. if(contentsLoc!='SCM002' && contentsLoc!='SCM003'){
  155. html += '<td class="aL">';
  156. if(contentsLoc!='SMM005'){
  157. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
  158. }
  159. if(contentsLoc=='SMM001' || contentsLoc=='SMM002' || contentsLoc=='SBM004' || contentsLoc=='SBMM004' || contentsLoc=='SCM001'){
  160. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
  161. }
  162. if(contentsLoc=='SBM005' || contentsLoc=='SBMM005'){
  163. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddBrandDescRow(this);">브랜드소개추가</button>';
  164. }
  165. if(contentsLoc!='SMM005' && contentsLoc!='SBM005' && contentsLoc!='SBMM005'){
  166. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddImgPopRow(this);">이미지추가</button>';
  167. }
  168. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddLinkPopRow(this);">링크추가</button>';
  169. html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
  170. }
  171. html += '</tr>';
  172. if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
  173. html += ' <tr>';
  174. html += ' <th>전시 설정</th>';
  175. html += ' <td>';
  176. if(result[i].useYn=='Y'){
  177. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="Y" checked="checked"/>노출</label>';
  178. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="N"/>비노출</label>';
  179. }else{
  180. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="Y"/>노출</label>';
  181. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="N" checked="checked"/>비노출</label>';
  182. }
  183. html += ' </td>';
  184. if(result[i].contentsLoc=='SCM003'){
  185. html += ' <th>상품 노출 개수</th>';
  186. html += ' <td>';
  187. if(result[i].strVar1=='10'){
  188. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10" checked="checked"/>10개</label>';
  189. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20"/>20개</label>';
  190. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30"/>30개</label>';
  191. }else if(result[i].strVar1=='20'){
  192. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10"/>10개</label>';
  193. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20" checked="checked"/>20개</label>';
  194. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30"/>30개</label>';
  195. }else{
  196. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10"/>10개</label>';
  197. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20"/>20개</label>';
  198. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30" checked="checked"/>30개</label>';
  199. }
  200. html += ' </td>';
  201. }
  202. html += ' </tr>';
  203. }
  204. if(contentsLoc=='SMM001'){
  205. html += '<tr>';
  206. html += ' <th>컨텐츠유형</th>';
  207. html += ' <td class="planArea" name="planArea" id="planArea'+i+'" colspan="3">';
  208. if(result[i].strVar5=='P'){
  209. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="P" onclick="fnChangeContentsType(this,'+i+');" checked="checked"/>기획전</label>';
  210. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="E" onclick="fnChangeContentsType(this,'+i+');"/>이벤트</label>';
  211. }else{
  212. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="P" onclick="fnChangeContentsType(this,'+i+');" />기획전</label>';
  213. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="E" onclick="fnChangeContentsType(this,'+i+');" checked="checked"/>이벤트</label>';
  214. }
  215. if(result[i].strVar5=='P') {
  216. html += ' <input type="text" class="w100 inputPlan" name="planSq' + i + '" value="' + result[i].strVar6 + '"/>';
  217. html += ' <button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan(' + i + ');">기획전검색</button>';
  218. }else{
  219. html += ' <input type="text" class="w100 inputPlan" name="planSq' + i + '" value="" style="display: none;"/>';
  220. html += ' <button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan(' + i + ');" style="display: none;">기획전검색</button>';
  221. }
  222. html += ' </td>';
  223. html += '</tr>';
  224. html += '<tr>';
  225. html += ' <th>썸네일 <br>글자 색상</th>';
  226. html += ' <td colspan="3">';
  227. if(result[i].strVar7=='BLACK'){
  228. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="BLACK" checked="checked"/>BLACK</label>';
  229. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="WHITE" />WHITE</label>';
  230. }else{
  231. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="BLACK" />BLACK</label>';
  232. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="WHITE" checked="checked"/>WHITE</label>';
  233. }
  234. html += ' </td>';
  235. html += '</tr>';
  236. }
  237. if(contentsLoc=='SMM005'){
  238. html += '<tr>';
  239. html += ' <th>배너유형</th>';
  240. html += ' <td class="bannerArea" id="bannerArea'+i+'">';
  241. if(result[i].contentsType=='1'){
  242. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+i+'" value="1" checked="checked">1단</label>';
  243. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+i+'" value="2" >2단</label>';
  244. }else{
  245. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+i+'" value="1" >1단</label>';
  246. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+i+'" value="2" checked="checked">2단</label>';
  247. }
  248. html += ' </td>';
  249. html += '</tr>';
  250. /*html += '<tr id="bannerImgTr1" name="imgPopRow">';
  251. html += ' <th>이미지1</th>';
  252. html += ' <td>';
  253. html += ' <div id="ImageArea1" style="height:33px;">';
  254. html += ' <span className="uFile w300">';
  255. html += ' <input id="file_1" name="file" type="file" className="uFileInput w300" data-valid-name="이미지파일" onChange="fnPopFileUpload(this, 1)"/>';
  256. html += ' <label htmlFor="file_1" className="uFileLabel"></label>';
  257. html += ' <input type="hidden" name="imgPath" value="'+result[i].imgPath1+'"/>';
  258. html += ' <input type="hidden" name="newImgFile" value="" />';
  259. html += ' </span>';
  260. html += ' <span className="memAdd off" id="imgFileNm1"></span>';
  261. html += ' </div>';
  262. html += ' </td>';
  263. html += '</tr>';
  264. html += '<tr id="bannerLinkTr1" name="linkRow">';
  265. html += ' <th>링크1</th>';
  266. html += ' <td><input type="text" class="w400" name="linkUrl" maxlength="300" required="required" data-valid-name="LINK" value="'+result[i].strVar1+'"/></td>';
  267. html += '</tr>';
  268. if(result[i].contentsType==2){
  269. html += '<tr id="bannerImgTr2" name="imgPopRow">';
  270. html += ' <th>이미지2</th>';
  271. html += ' <td>';
  272. html += ' <div id="ImageArea2" style="height:33px;">';
  273. html += ' <span className="uFile w300">';
  274. html += ' <input id="file_2" name="file" type="file" className="uFileInput w300" data-valid-name="이미지파일" onChange="fnPopFileUpload(this, 2)"/>';
  275. html += ' <label htmlFor="file_2" className="uFileLabel"></label>';
  276. html += ' <input type="hidden" name="imgPath" value="'+result[i].imgPath2+'"/>';
  277. html += ' <input type="hidden" name="newImgFile" value="" />';
  278. html += ' </span>';
  279. html += ' <span className="memAdd off" id="imgFileNm2"></span>';
  280. html += ' </div>';
  281. html += ' </td>';
  282. html += '</tr>';
  283. html += '<tr id="bannerLinkTr2" name="linkRow" >';
  284. html += ' <th>링크2</th>';
  285. html += ' <td><input type="text" class="w400" name="linkUrl" maxlength="300" required="required" data-valid-name="LINK" value="'+result[i].strVar2+'"/></td>';
  286. html += '</tr>';
  287. }*/
  288. }
  289. html += '</thead><tbody>';
  290. if(contentsLoc!='SCM002' && contentsLoc!='SCM003'){
  291. for(var j=1; j<5; j++){
  292. var strTitle = eval("result["+i+"].strTitle" + j);
  293. var imgPath = eval("result["+i+"].imgPath" + j);
  294. var strVar = eval("result["+i+"].strVar" + j);
  295. var subText = eval("result["+i+"].subText" + j);
  296. if(strTitle!=null && strTitle!='null' && strTitle!='' ){
  297. html += fnAddTitlePopRow(strTitle);
  298. }
  299. if(imgPath!=null && imgPath!='null' && imgPath!='' ){
  300. html += fnAddImgPopRow(imgPath);
  301. }
  302. if(strVar!=null && strVar!='null' && strVar!='' ){
  303. html += fnAddLinkPopRow(strVar);
  304. }
  305. if(subText!=null && subText!='null' && subText!='' ){
  306. html += fnAddSubTextPopRow(subText);
  307. }
  308. }
  309. }
  310. html += '</tbody></table>';
  311. }
  312. $("#popSortable").append(html);
  313. $("#popSortable").sortable();
  314. $('.schDate').datepicker("destroy");
  315. $('.schDate').datepicker({
  316. changeMonth: true,
  317. changeYear: true,
  318. defaultDate: $('.schDate').val()
  319. });
  320. tableLen = $(".mcTable").length;
  321. }
  322. /**
  323. * 컨텐츠 추가 버튼
  324. */
  325. var dataIdx=0;
  326. $("#btnPopAddRow").on("click", function (){
  327. dataIdx = tableLen;
  328. if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
  329. if($(".mcTable").length > 0){
  330. mcxDialog.alert('컨텐츠 추가를 1개 이상 할 수 없습니다.');
  331. return;
  332. }
  333. }
  334. var html = '<table class="frmStyle mcTable" style="margin-bottom:30px" id="mcTable'+dataIdx+'">';
  335. html += '<input type="hidden" name="tableIdx" value="'+dataIdx+'" data-id="'+dataIdx+'">';
  336. html += '<colgroup>';
  337. html += '<col style="width:10%;"/>';
  338. html += '<col style="width:55%;"/>';
  339. html += '<col/>';
  340. html += '</colgroup>';
  341. html += '<thead><tr><th>전시일시</th><td><input name="dispStdt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출시작일" data-valid-type="calendar"/>';
  342. html += '<select name="stTimeHour" required="required" data-valid-name="노출기간 시작시간">';
  343. html += fnCreateTimeOption(24);
  344. html += '</select>';
  345. html += '<select name="stTimeMin" required="required" data-valid-name="노출기간 시작시간">';
  346. html += fnCreateTimeOption(60);
  347. html += '</select>';
  348. html += '<span> ~ </span>';
  349. html += '<input name="dispEddt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출종료일" data-valid-type="calendar"/>';
  350. html += '<select name="edTimeHour" required="required" data-valid-name="노출기간 종료시간">';
  351. html += fnCreateTimeOption(24,23);
  352. html += '</select>';
  353. html += '<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
  354. html += fnCreateTimeOption(60,59);
  355. html += '</select>';
  356. html += '<input name="dispOrd" type="text" class="w80"placeholder="전시순서" style="margin-left:5px; text-align:center"/>';
  357. html += '</td>';
  358. html += '<td class="aL">';
  359. if(contentsLoc!='SCM002' && contentsLoc!='SCM003'){
  360. if(contentsLoc!='SMM005'){
  361. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
  362. }
  363. if(contentsLoc=='SMM001' || contentsLoc=='SMM002' || contentsLoc=='SBM004' || contentsLoc=='SBMM004' || contentsLoc=='SCM001'){
  364. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
  365. }
  366. if(contentsLoc=='SBM005' || contentsLoc=='SBMM005'){
  367. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddBrandDescRow(this);">브랜드소개추가</button>';
  368. }
  369. if(contentsLoc!='SBM005' && contentsLoc!='SBMM005') {
  370. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddImgPopRow(this);">이미지추가</button>';
  371. }
  372. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddLinkPopRow(this);">링크추가</button>';
  373. }
  374. html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
  375. html += '</tr>';
  376. if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
  377. html += ' <tr>';
  378. html += ' <th>전시 설정</th>';
  379. html += ' <td>';
  380. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="Y" checked="checked"/>노출</label>';
  381. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="N"/>비노출</label>';
  382. html += ' </td>';
  383. if(contentsLoc=='SCM003'){
  384. html += ' <th>상품 노출 개수</th>';
  385. html += ' <td>';
  386. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10" checked="checked"/>10개</label>';
  387. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20"/>20개</label>';
  388. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30"/>30개</label>';
  389. html += ' </td>';
  390. }
  391. html += ' </tr>';
  392. }
  393. if(contentsLoc=='SMM001'){
  394. html += '<tr>';
  395. html += ' <th>컨텐츠유형</th>';
  396. html += ' <td class="planArea" name="planArea" id="planArea'+dataIdx+'" colspan="3">';
  397. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+dataIdx+'" value="P" onclick="fnChangeContentsType(this,'+dataIdx+');" checked="checked"/>기획전</label>';
  398. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+dataIdx+'" value="E" onclick="fnChangeContentsType(this,'+dataIdx+');"/>이벤트</label>';
  399. html += ' <input type="text" class="w100 inputPlan" name="planSq'+dataIdx+'" value=""/>';
  400. html += ' <button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan('+dataIdx+');">기획전검색</button>';
  401. html += ' </td>';
  402. html += '</tr>';
  403. html += '<tr>';
  404. html += ' <th>썸네일 <br>글자 색상</th>';
  405. html += ' <td colspan="3">';
  406. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+dataIdx+'" value="BLACK" checked="checked"/>BLACK</label>';
  407. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+dataIdx+'" value="WHITE" />WHITE</label>';
  408. html += ' </td>';
  409. html += '</tr>';
  410. }
  411. if(contentsLoc=='SMM005'){
  412. html += '<tr>';
  413. html += ' <th>배너유형</th>';
  414. html += ' <td class="bannerArea" id="bannerArea'+dataIdx+'">';
  415. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+dataIdx+'" value="1" checked="checked">1단</label>'; /*onclick="fnChangeBannerType(this,1);"*/
  416. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+dataIdx+'" value="2" >2단</label>';
  417. html += ' </td>';
  418. html += '</tr>';
  419. /*html += '<tr id="bannerImgTr1" name="imgPopRow" style="display: none;">';
  420. html += ' <th>이미지1</th>';
  421. html += ' <td>';
  422. html += ' <div id="ImageArea1" style="height:33px;">';
  423. html += ' <span className="uFile w300">';
  424. html += ' <input id="file_1" name="file" type="file" className="uFileInput w300" data-valid-name="이미지파일" onChange="fnPopFileUpload(this, 1)"/>';
  425. html += ' <label htmlFor="file_1" className="uFileLabel"></label>';
  426. html += ' <input type="hidden" name="imgPath" value=""/>';
  427. html += ' <input type="hidden" name="newImgFile" value="" />';
  428. html += ' </span>';
  429. html += ' <span className="memAdd off" id="imgFileNm1"></span>';
  430. html += ' </div>';
  431. html += ' </td>';
  432. html += '</tr>';
  433. html += '<tr id="bannerLinkTr1" name="linkRow" style="display: none;">';
  434. html += ' <th>링크1</th>';
  435. html += ' <td><input type="text" class="w400" name="linkUrl" maxlength="300" required="required" data-valid-name="LINK" value="#"/></td>';
  436. html += '</tr>';
  437. html += '<tr id="bannerImgTr2" name="imgPopRow" style="display: none;">';
  438. html += ' <th>이미지2</th>';
  439. html += ' <td>';
  440. html += ' <div id="ImageArea2" style="height:33px;">';
  441. html += ' <span className="uFile w300">';
  442. html += ' <input id="file_2" name="file" type="file" className="uFileInput w300" data-valid-name="이미지파일" onChange="fnPopFileUpload(this, 2)"/>';
  443. html += ' <label htmlFor="file_2" className="uFileLabel"></label>';
  444. html += ' <input type="hidden" name="imgPath" value=""/>';
  445. html += ' <input type="hidden" name="newImgFile" value="" />';
  446. html += ' </span>';
  447. html += ' <span className="memAdd off" id="imgFileNm2"></span>';
  448. html += ' </div>';
  449. html += ' </td>';
  450. html += '</tr>';
  451. html += '<tr id="bannerLinkTr2" name="linkRow" style="display: none;">';
  452. html += ' <th>링크2</th>';
  453. html += ' <td><input type="text" class="w400" name="linkUrl" maxlength="300" required="required" data-valid-name="LINK" value="#"/></td>';
  454. html += '</tr>';*/
  455. }
  456. html += '</thead><tbody>';
  457. html += '</tbody></table>';
  458. $("#popSortable").prepend(html);
  459. $("#popSortable").sortable();
  460. $('.schDate').datepicker("destroy");
  461. $('.schDate').datepicker({
  462. changeMonth: true,
  463. changeYear: true,
  464. defaultDate: $('.schDate').val()
  465. });
  466. tableLen = tableLen+1;
  467. });
  468. var fnChangeBannerType = function (obj, idx){
  469. if(idx==1){
  470. $(obj).closest("table").find("[id=bannerImgTr1]").show();
  471. $(obj).closest("table").find("[id=bannerLinkTr1]").show();
  472. $(obj).closest("table").find("[id=bannerImgTr2]").hide();
  473. $(obj).closest("table").find("[id=bannerLinkTr2]").hide();
  474. }else{
  475. $(obj).closest("table").find("[id=bannerImgTr1]").show();
  476. $(obj).closest("table").find("[id=bannerLinkTr1]").show();
  477. $(obj).closest("table").find("[id=bannerImgTr2]").show();
  478. $(obj).closest("table").find("[id=bannerLinkTr2]").show();
  479. }
  480. }
  481. // 몰메인>메인롤링배너 컨텐츠유형 선택시
  482. var fnChangeContentsType = function (obj, idx){
  483. var radioVal = $(obj).closest("td").find("input[name=contentsType"+idx+"]:checked").val();
  484. if(radioVal=='P'){
  485. $("#planArea"+idx+" .inputPlan").show();
  486. $("#planArea"+idx+" .btnPlan").show();
  487. }else{
  488. $("#planArea"+idx).find("input[name=planSq"+idx+"]").val('');
  489. $("#planArea"+idx+" .inputPlan").hide();
  490. $("#planArea"+idx+" .btnPlan").hide();
  491. }
  492. }
  493. // 몰메인>메인롤링배너 기획전 조회
  494. var tableDataId = 0;
  495. var fnSearchPlan = function (idx){
  496. cfnOpenPlanPopup('callbackPlanPopup');
  497. tableDataId = idx;
  498. }
  499. var callbackPlanPopup = function (result){
  500. $("#mcTable"+tableDataId+" .planArea").find("input[name=planSq"+tableDataId+"]").val(result[0].planSq);
  501. }
  502. // SMM005 데이터 validation 체크
  503. /*function smm005DataValidation(){
  504. $(".mcTable").each(function(i){
  505. var thisIdx = $(this).find("input[name=tableIdx]").val();
  506. var contentsType = $(this).find("input:radio[name=bannerType"+thisIdx+"]:checked").val();
  507. var imgPath1 = $(this).find("[id=ImageArea1]").find("input[name=imgPath]").val();
  508. var imgPath2 = $(this).find("[id=ImageArea2]").find("input[name=imgPath]").val();
  509. var link1 = $(this).find("[id=bannerLinkTr1]").find("input[name=linkUrl]").val();
  510. var link2 = $(this).find("[id=bannerLinkTr2]").find("input[name=linkUrl]").val();
  511. if(gagajf.isNull(imgPath1)){
  512. mcxDialog.alert('배너1 이미지를 선택해주세요.');
  513. return false;
  514. }
  515. if(gagajf.isNull(link1)){
  516. mcxDialog.alert('배너1 링크를 선택해주세요.');
  517. return false;
  518. }
  519. if(contentsType==2){
  520. if(gagajf.isNull(imgPath2)){
  521. mcxDialog.alert('배너2 이미지를 선택해주세요.');
  522. return false;
  523. }
  524. if(gagajf.isNull(link2)){
  525. mcxDialog.alert('배너2 링크를 선택해주세요.');
  526. return false;
  527. }
  528. }
  529. });
  530. return true;
  531. }*/
  532. // SMM001 데이터 validation 체크
  533. function smm001DataValidation(){
  534. $(".mcTable").each(function(i){
  535. var thisIdx = $(this).find("input[name=tableIdx]").val();
  536. var contentsTypeVal = $(this).find("input:radio[name=contentsType"+thisIdx+"]:checked").val();
  537. var textColorVal = $(this).find("input:radio[name=thumTextColor"+thisIdx+"]:checked").val();
  538. if(gagajf.isNull(contentsTypeVal)){
  539. mcxDialog.alert('컨텐츠 유형을 선택해주세요.');
  540. return false;
  541. }
  542. if(contentsTypeVal=='P'){
  543. if(gagajf.isNull($(this).find("input[name=planSq"+thisIdx+"]").val())){
  544. mcxDialog.alert('기획전 번호를 입력해주세요.');
  545. return false;
  546. }
  547. }
  548. if(gagajf.isNull(textColorVal)){
  549. mcxDialog.alert('썸네일 글자 색상을 선택해주세요.');
  550. return false;
  551. }
  552. });
  553. return true;
  554. }
  555. /**
  556. * 임시저장
  557. */
  558. var dataArr = [];
  559. $("#btnPopSave").on("click", function (){
  560. if (!gagajf.checkRequired("#popSortable")) {
  561. return;
  562. }
  563. if(contentsLoc=='SMM002'||contentsLoc=='SMM003'||contentsLoc=='SMM004'||contentsLoc=='SMM006'||contentsLoc=='SMM007'
  564. ||contentsLoc=='SMM009' ||contentsLoc=='SMM010'||contentsLoc=='SMM011'||contentsLoc=='SBM005' || contentsLoc=='SBMM005'
  565. || contentsLoc=='SCM002' || contentsLoc=='SCM003' || contentsLoc=='SBM010'){
  566. if(!gagajf.checkRequired("#contentsTitleForm")){
  567. return;
  568. }
  569. }
  570. if(contentsLoc=='SMM001'){
  571. if(!smm001DataValidation()){
  572. return false;
  573. }
  574. }
  575. /*if(contentsLoc=='SMM005'){
  576. if(!smm005DataValidation()){
  577. return false;
  578. }
  579. }*/
  580. var titleBool = true;
  581. $("#popSortable").find('input[name=title]').each(function(idx, title) {
  582. if ($(title).val()==''){
  583. titleBool = false;
  584. $(title).focus();
  585. gagajf.alertMessage($(title), 'input');
  586. return;
  587. }
  588. });
  589. if(!titleBool){
  590. return false;
  591. }
  592. dataArr = [];
  593. $("#popSortable table").each(function(){
  594. var newImgFileArr = [];
  595. var imgPath1 = '';
  596. var imgPath2 = '';
  597. var imgPath3 = '';
  598. var imgPath4 = '';
  599. var strVar1 = '';
  600. var strVar2 = '';
  601. var strVar3 = '';
  602. var strVar4 = '';
  603. var strVar5 = '';
  604. var strVar6 = '';
  605. var strVar7 = '';
  606. var strVar8 = '';
  607. var strTitle1 = '';
  608. var strTitle2 = '';
  609. var strTitle3 = '';
  610. var strTitle4 = '';
  611. var subText1 = '';
  612. var subText2 = '';
  613. var subText3 = '';
  614. var subText4 = '';
  615. var contentsType = '';
  616. var useYn = 'Y';
  617. var i = 1;
  618. $(this).find('input[name=imgPath]').each(function(){
  619. eval("imgPath" + i + "='"+$(this).val()+"'");
  620. i++;
  621. });
  622. $(this).find('input[name=newImgFile]').each(function(){
  623. newImgFileArr.push($(this).val());
  624. });
  625. i = 1;
  626. $(this).find('input[name=title]').each(function(){
  627. var title = $(this).val().replace(/[\']/gi, "\\'");
  628. eval("strTitle" + i + "='"+title+"'");
  629. i++;
  630. });
  631. i = 1;
  632. $(this).find('input[name=link]').each(function(){
  633. _mall = [[${@environment.getProperty('domain.front')}]];
  634. var val = $(this).val();
  635. val = val.replace('https:'+_mall, '');
  636. val = val.replace('http:'+_mall, '');
  637. val = val.replace(_mall, '');
  638. eval("strVar" + i + "='"+val+"'");
  639. i++;
  640. });
  641. i = 1;
  642. $(this).find('input[name=subText]').each(function(){
  643. var subText = $(this).val().replace(/[\']/gi, "\\'");
  644. eval("subText" + i + "='"+subText+"'");
  645. i++;
  646. });
  647. var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
  648. var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
  649. var dispOrd = $(this).find("[name=dispOrd]").val();
  650. if(contentsLoc=='SMM001'){
  651. var thisIdx = $(this).find("input[name=tableIdx]").val();
  652. strVar5 = $(this).find("input:radio[name=contentsType"+thisIdx+"]:checked").val();
  653. strVar6 = $(this).find("input[name=planSq"+thisIdx+"]").val();
  654. strVar7 = $(this).find("input:radio[name=thumTextColor"+thisIdx+"]:checked").val();
  655. }
  656. if(contentsLoc=='SMM005'){
  657. var thisIdx = $(this).find("input[name=tableIdx]").val();
  658. contentsType = $(this).find("input:radio[name=bannerType"+thisIdx+"]:checked").val();
  659. /*imgPath1 = $(this).find("#ImageArea1").find("input[name=imgPath]").val();
  660. strVar1 = $(this).find("#bannerLinkTr1").find("input[name=linkUrl]").val();
  661. imgPath2 = $(this).find("#ImageArea2").find("input[name=imgPath]").val();
  662. strVar2 = $(this).find("#bannerLinkTr2").find("input[name=linkUrl]").val();*/
  663. }
  664. if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
  665. useYn = $(this).find("input:radio[name=dispYn]:checked").val();
  666. }
  667. if(contentsLoc=='SCM003'){
  668. strVar1 = $(this).find("input:radio[name=dispCnt]:checked").val();
  669. }
  670. var data = {cateNo : cateNo
  671. , contentsLoc : contentsLoc
  672. , contentsType : contentsType
  673. , dispStdt : dispStdt
  674. , dispEddt : dispEddt
  675. , newImgFileArr : newImgFileArr
  676. , imgPath1 : imgPath1
  677. , imgPath2 : imgPath2
  678. , imgPath3 : imgPath3
  679. , imgPath4 : imgPath4
  680. , strVar1 : strVar1
  681. , strVar2 : strVar2
  682. , strVar3 : strVar3
  683. , strVar4 : strVar4
  684. , strVar5 : strVar5
  685. , strVar6 : strVar6
  686. , strVar7 : strVar7
  687. , strVar8 : strVar8
  688. , strTitle1 : strTitle1
  689. , strTitle2 : strTitle2
  690. , strTitle3 : strTitle3
  691. , strTitle4 : strTitle4
  692. , subText1 : subText1
  693. , subText2 : subText2
  694. , subText3 : subText3
  695. , subText4 : subText4
  696. , useYn : useYn
  697. , dispOrd : dispOrd
  698. , brandGroupNo : brandGroupNo
  699. };
  700. dataArr.push(data);
  701. });
  702. if(dataArr.length==0){
  703. var data = {cateNo : cateNo
  704. , contentsLoc : contentsLoc
  705. , brandGroupNo : brandGroupNo
  706. };
  707. dataArr.push(data);
  708. }else{
  709. var dataArrSort = [];
  710. dataArr.forEach(function(item, index){
  711. if(dataArr[index].dispOrd>0){
  712. for(var i=1; i<dataArr.length; i++){
  713. if(i>index){
  714. if(dataArr[index].dispOrd==dataArr[i].dispOrd){
  715. dataArr[i].dispOrd = Number(dataArr[i].dispOrd) + 1;
  716. }
  717. }
  718. }
  719. }
  720. });
  721. dataArr.forEach(function(item, index){
  722. if(dataArr[index].dispOrd != ''){
  723. dataArrSort[dataArr[index].dispOrd-1] = item;
  724. }
  725. });
  726. dataArr.forEach(function(item, index){
  727. if(dataArr[index].dispOrd == ''){
  728. var empty = false;
  729. for(var i=0; i<dataArrSort.length; i++){
  730. if(typeof dataArrSort[i] == 'undefined'){
  731. dataArrSort[i] = item;
  732. empty = true;
  733. break;
  734. }
  735. };
  736. if(!empty){
  737. dataArrSort.push(item);
  738. }
  739. }
  740. });
  741. dataArr = dataArrSort;
  742. }
  743. if(contentsLoc=='SMM002'||contentsLoc=='SMM003'||contentsLoc=='SMM004'||contentsLoc=='SMM006'||contentsLoc=='SMM007'
  744. ||contentsLoc=='SMM009' ||contentsLoc=='SMM010'||contentsLoc=='SMM011'||contentsLoc=='SBM005' || contentsLoc=='SBMM005'
  745. || contentsLoc=='SCM002' || contentsLoc=='SCM003' || contentsLoc=='SBM010'){
  746. var data = {
  747. cateNo : cateNo
  748. , contentsLoc : contentsLoc
  749. , contentsTitle : $("#contentsTitleForm input[name=contentsTitle]").val()
  750. , brandGroupNo : brandGroupNo
  751. }
  752. dataArr.push(data);
  753. }
  754. var jsonData = JSON.stringify(dataArr);
  755. mcxDialog.confirm('컨텐츠를 저장 하시겠습니까?', {
  756. cancelBtnText: "취소",
  757. sureBtnText: "확인",
  758. sureBtnClick: function(){
  759. gagajf.ajaxJsonSubmit('/display/contents/preview/save', jsonData, fnGetContentsPreviewList);
  760. }
  761. });
  762. });
  763. /**
  764. * 파일첨부
  765. */
  766. var fnPopFileUpload = function (obj, ind){
  767. var file = obj.files[0];
  768. file.name = 'test';
  769. if (typeof(file) == 'undefined'){
  770. return;
  771. }
  772. // 파일 업로드
  773. gagajf.ajaxFileUpload('/common/file/upload?subDir=/contents'
  774. , file
  775. , function(result) {
  776. $(obj).closest('div').find('input:hidden[name=newImgFile]').val(result.newFileName);
  777. $("#bannerPreViewUrlPop_"+ind).attr('src', $("#uploadDefaultUrlPop").val()+result.newFileName);
  778. $("#imgViewPop_"+ind).removeClass("off").addClass("on");
  779. }
  780. , 'image'
  781. );
  782. }
  783. /**
  784. * 링크추가
  785. */
  786. var fnAddLinkPopRow = function (param){
  787. var val = typeof param=='object'?'#':param;
  788. var html = '<tr name="linkPopRow">';
  789. html += '<th>링크 (없으면 #)</th>';
  790. html += '<td><input name="link" type="text" maxlength="200" required="required" data-valid-name="링크" value="'+val+'"/></td>';
  791. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  792. html += '</tr>';
  793. if(typeof param == 'object'){
  794. if(contentsLoc=='SMM005'){
  795. if($(param).closest("table").find("tbody").find("tr[name=linkPopRow]").length>1){
  796. mcxDialog.alert("링크는 최대 2개까지 등록 가능합니다");
  797. return;
  798. }
  799. }else{
  800. if($(param).closest("table").find("tbody").find("tr[name=linkPopRow]").length>3){
  801. mcxDialog.alert("링크는 4개까지 등록 가능합니다");
  802. return;
  803. }
  804. }
  805. $(param).closest("table").find("tbody").append(html);
  806. }else{
  807. return html;
  808. }
  809. }
  810. /**
  811. * 서브텍스트추가
  812. */
  813. var fnAddSubTextPopRow = function (param){
  814. var val = typeof param=='object'?'':param;
  815. var html = '<tr name="subTextPopRow">'
  816. html += '<th>서브텍스트</th>';
  817. html += '<td><input type="text" name="subText" maxlength="200" value="'+val+'"/></td>';
  818. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  819. html += '</tr>';
  820. if(typeof param == 'object'){
  821. if($(param).closest("table").find("tbody").find("tr[name=subTextPopRow]").length>3){
  822. mcxDialog.alert("서브텍스트는 4개까지 등록 가능합니다");
  823. return;
  824. }
  825. $(param).closest("table").find("tbody").append(html);
  826. }else{
  827. return html;
  828. }
  829. }
  830. /**
  831. * 브랜드 소개추가
  832. */
  833. var fnAddBrandDescRow = function (param){
  834. var val = typeof param=='object'?'':param;
  835. var html = '<tr name="subTextPopRow">'
  836. html += '<th>브랜드소개</th>';
  837. html += '<td><input type="text" name="subText" maxlength="200" value="'+val+'"/></td>';
  838. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  839. html += '</tr>';
  840. if(typeof param == 'object'){
  841. if($(param).closest("table").find("tbody").find("tr[name=subTextPopRow]").length>0){
  842. mcxDialog.alert("브랜드소개는 1개까지 등록 가능합니다");
  843. return;
  844. }
  845. $(param).closest("table").find("tbody").append(html);
  846. }else{
  847. return html;
  848. }
  849. }
  850. /**
  851. * 이미지 추가
  852. */
  853. var imgIndex = 0;
  854. var fnAddImgPopRow = function (param){
  855. var src = '';
  856. var imgPath = '';
  857. if(typeof param!='object'){
  858. src = $("#uploadDefaultUrlPop").val().replace('/contents/', '')+param;
  859. imgPath = param;
  860. }
  861. var html = '<tr name="imgPopRow">';
  862. html += '<th>이미지';
  863. html += '</th>';
  864. html += '<td><div class="uFile w300">';
  865. html += '<input id="filePop_'+imgIndex+'" name="file" type="file" class="uFileInput w300" onchange="fnPopFileUpload(this, '+imgIndex+')"/>';
  866. html += '<label for="filePop_'+imgIndex+'" class="uFileLabel">파일선택</label>';
  867. html += '<input type="hidden" name="imgPath" value="'+imgPath+'"/>';
  868. html += '<input type="hidden" name="newImgFile" value="" />';
  869. html += '</div>';
  870. html += '<div id="imgViewPop_'+imgIndex+'" class=';
  871. if(src!=''){
  872. html += '"on">';
  873. }else{
  874. html += '"off">';
  875. }
  876. html += '<img id="bannerPreViewUrlPop_'+imgIndex+'" src="'+src+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
  877. html += '</div></td>';
  878. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  879. html += '</tr>';
  880. if(typeof param == 'object'){
  881. if(contentsLoc=='SMM005'){
  882. if($(param).closest("table").find("tbody").find("tr[name=imgPopRow]").length>1){
  883. mcxDialog.alert("이미지는 최대 2개까지 등록 가능합니다");
  884. return;
  885. }
  886. }else{
  887. if($(param).closest("table").find("tbody").find("tr[name=imgPopRow]").length>3){
  888. mcxDialog.alert("이미지는 4개까지 등록 가능합니다");
  889. return;
  890. }
  891. }
  892. imgIndex++;
  893. $(param).closest("table").find("tbody").append(html);
  894. }else{
  895. imgIndex++;
  896. return html;
  897. }
  898. }
  899. /**
  900. * 타이틀추가
  901. */
  902. var fnAddTitlePopRow = function (param){
  903. var val = typeof param=='object'?'':param;
  904. var html = '<tr name="titlePopRow">';
  905. html += '<th>타이틀</th>';
  906. html += '<td><input name="title" type="text" maxlength="200" data-valid-name="타이틀" value="'+val+'"/></td>';
  907. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  908. html += '</tr>';
  909. if(typeof param == 'object'){
  910. if($(param).closest("table").find("tbody").find("tr[name=titlePopRow]").length>3){
  911. mcxDialog.alert("타이틀은 4개까지 등록 가능합니다");
  912. return;
  913. }
  914. $(param).closest("table").find("tbody").append(html);
  915. }else{
  916. return html;
  917. }
  918. }
  919. // 컨텐츠 행삭제
  920. var fnDeleteContentsRow = function (obj){
  921. $(obj).closest("table").remove();
  922. }
  923. // 행삭제
  924. var fnDeleteTrRow = function (obj){
  925. $(obj).closest("tr").remove();
  926. }
  927. // 컨텐츠 추가 날짜 설정
  928. var fnCreateTimeOption = function(val, sel) {
  929. var html = '';
  930. for(var i=0; i<val; i++){
  931. var time = 0;
  932. if(i<10){
  933. time = '0'+i;
  934. }else {
  935. time = i;
  936. }
  937. var select = false;
  938. if(sel==time){
  939. select = true;
  940. }
  941. if(val==24){
  942. time += '시';
  943. }else if(val==60){
  944. time += '분';
  945. }
  946. html += '<option value="'+time+'"';
  947. if(select){
  948. html += 'selected="selected"';
  949. }
  950. html += '>'+time+'</option>';
  951. }
  952. return html;
  953. }
  954. // 창닫기
  955. var fnMainContentsPopupFormClose = function (){
  956. uifnPopupClose('popupMainContents');
  957. }
  958. $(document).ready(function() {
  959. $("#popTitle").text("["+contentsLoc+"] "+gagaAgGrid.lookupValue(contentsLocArr, contentsLoc));
  960. if(contentsLoc=='SMM002'||contentsLoc=='SMM003'||contentsLoc=='SMM004'||contentsLoc=='SMM006'||contentsLoc=='SMM007'
  961. ||contentsLoc=='SMM009' ||contentsLoc=='SMM010'||contentsLoc=='SMM011'||contentsLoc=='SBM005' || contentsLoc=='SBMM005'
  962. || contentsLoc=='SCM002' || contentsLoc=='SCM003' || contentsLoc=='SBM010'){
  963. $("#contentsTitleForm").show();
  964. }else{
  965. $("#contentsTitleForm").hide();
  966. }
  967. $("#popSortable").disableSelection();
  968. fnGetContentsPreviewList();
  969. });
  970. /*]]>*/
  971. </script>
  972. </html>