MainContentsPopupForm.html 85 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973
  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" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
  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. <br th:if="${contentsLoc=='SGNB001' or contentsLoc=='SMM001' or contentsLoc=='SMM005' or contentsLoc=='SMM008' or contentsLoc=='SBM004' or contentsLoc=='SBM006' or contentsLoc=='SBM014' or contentsLoc=='SBM015' or contentsLoc=='SBM016' or contentsLoc=='SCM001' or contentsLoc=='SOM001'}">
  28. <span class="cRed" th:if="${contentsLoc=='SGNB001'}">* 띠배너 이미지: 1120 X 185 / 확장형 배너이미지: 1920 X 400 / 확장형 HTML 이미지: 1920 X 700</span>
  29. <span class="cRed" th:if="${contentsLoc=='SMM001'}">* PC 이미지: 1080 X 700 / 모바일 이미지: 960 X 960</span>
  30. <span class="cRed" th:if="${contentsLoc=='SMM001'}">* PC 이미지: 1080 X 700 / 모바일 이미지: 960 X 960</span>
  31. <span class="cRed" th:if="${contentsLoc=='SMM005'}">* 1단 이미지: 1780 X 230(안전영역 810X230 + BG컬러) / 모바일 이미지: 810 X 230</span>
  32. <span class="cRed" th:if="${contentsLoc=='SMM008'}">* 이미지: 1920 X 340 </span>
  33. <span class="cRed" th:if="${contentsLoc=='SBM004'}">* PC 이미지: 1080 X 700 / 모바일 이미지: 960 X 960</span>
  34. <span class="cRed" th:if="${contentsLoc=='SBM006' or contentsLoc=='SBM014' or contentsLoc=='SBM015' or contentsLoc=='SBM016'}">* 이미지: 1780 X 230(안전영역 810X230 + BG컬러)</span>
  35. <span class="cRed" th:if="${contentsLoc=='SCM001' or contentsLoc=='SOM001'}">* 이미지: 960 X 960</span>
  36. </li>
  37. <li class="aR">
  38. <button type="button" class="btn btn btn-base btn-sm" id="btnPopAddRow">컨텐츠 추가</button>
  39. <button type="button" class="btn btn btn-dark btn-sm" id="btnPopSave">임시저장</button>
  40. <input type="hidden" name="uploadDefaultUrlPop" id="uploadDefaultUrlPop" th:value="${@environment.getProperty('upload.image.view') + '/contents/'}"/>
  41. </li>
  42. </ul>
  43. </div>
  44. <form style="height:600px; width:1470px; overflow:auto;" id="popSortable">
  45. </form>
  46. </div>
  47. </div>
  48. <script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
  49. <script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=2021072201"></script>
  50. <script type="text/javascript" src="/ux/plugins/gaga/gaga.kollus.js"></script>
  51. <script th:inline="javascript">
  52. /*<![CDATA[*/
  53. var cateNo = [[${cateNo}]];
  54. var contentsLoc = [[${contentsLoc}]];
  55. var brandGroupNo = [[${brandGroupNo}]];
  56. var contentsLocArr = gagajf.convertToArray([[${contentsLocList}]]);
  57. var tdWidth = $("#sortable").find("td").width();
  58. var tdDeleteWidth = parseInt(tdWidth/11, 10);
  59. tdWidth = tdWidth - tdDeleteWidth;
  60. var cate1List = [[${cate1List}]];
  61. var tableLen = 0; // 테이블 ID
  62. // 컨텐츠 미리보기 리스트
  63. var fnGetContentsPreviewList = function() {
  64. $("#popSortable").html('');
  65. var data = {cateNo : cateNo
  66. ,contentsLoc : contentsLoc
  67. ,brandGroupNo : brandGroupNo
  68. };
  69. var jsonData = JSON.stringify(data);
  70. gagajf.ajaxJsonSubmit('/display/contents/preview/list', jsonData, fnCreatePopLayout);
  71. }
  72. // 데이터 뿌리기
  73. var createIdx = 0;
  74. var fnCreatePopLayout = function(result) {
  75. var html = '';
  76. var descIdx = '';
  77. for(var i=0; i<result.length; i++){
  78. descIdx = i;
  79. var dispStdt = result[i].dispStdt.split(" ");
  80. var dispEddt = result[i].dispEddt.split(" ");
  81. var cate1No = result[i].contentsType;
  82. html += '<table class="frmStyle mcTable" style="margin-bottom:30px" id="mcTable'+i+'">';
  83. html += '<input type="hidden" name="tableIdx" value="'+i+'" data-id="'+i+'">';
  84. html += '<colgroup>';
  85. html += '<col style="width:10%;"/>';
  86. html += '<col style="width:55%;"/>';
  87. html += '<col/>';
  88. html += '</colgroup>';
  89. 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]+'"/>';
  90. html += '<select name="stTimeHour" required="required" data-valid-name="노출기간 시작시간">';
  91. html += fnCreateTimeOption(24, dispStdt[1].split(":")[0]);
  92. html += '</select>';
  93. html += '<select name="stTimeMin" required="required" data-valid-name="노출기간 시작시간">';
  94. html += fnCreateTimeOption(60, dispStdt[1].split(":")[1]);
  95. html += '</select>';
  96. html += '<span> ~ </span>';
  97. html += '<input name="dispEddt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출종료일" data-valid-type="calendar" value="'+dispEddt[0]+'"/>';
  98. html += '<select name="edTimeHour" required="required" data-valid-name="노출기간 종료시간">';
  99. html += fnCreateTimeOption(24, dispEddt[1].split(":")[0]);
  100. html += '</select>';
  101. html += '<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
  102. html += fnCreateTimeOption(60, dispEddt[1].split(":")[1]);
  103. html += '</select>';
  104. html += '<input name="dispOrd" type="text" class="w80"placeholder="전시순서" maxlength="4" style="margin-left:5px; text-align:center" value="'+result[i].dispOrd+'"/>';
  105. html += '</td>';
  106. if(contentsLoc!='SCM002' && contentsLoc!='SCM003'){
  107. html += '<td class="aL">';
  108. if(contentsLoc!='SMM005' && contentsLoc!='SMM011' && contentsLoc!='SBM012' && contentsLoc!='SBMM012' && contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SMM003' && contentsLoc!='SMM004' && contentsLoc!='SMM006'
  109. && contentsLoc!='SBM007' && contentsLoc!='SBM008' && contentsLoc!='SBM009' && contentsLoc!='SBM010' && contentsLoc!='SBM011' && contentsLoc!='SBM013' && contentsLoc!='SBM017' && contentsLoc!='SBM018' && contentsLoc!='SBM019'
  110. && contentsLoc!='SOM003' && contentsLoc!='SOM004' && contentsLoc!='SCM004' && contentsLoc!='SBM004' && contentsLoc!='SCM001'){
  111. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
  112. }
  113. if(contentsLoc=='SMM002' || contentsLoc=='SBMM004'){
  114. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
  115. }
  116. if(contentsLoc=='SBM005' || contentsLoc=='SBMM005'){
  117. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddBrandDescRow(this ,\'add\','+i+');">브랜드소개추가</button>';
  118. }
  119. if(contentsLoc!='SMM005' && contentsLoc!='SBM005' && contentsLoc!='SBMM005' && contentsLoc!='SGNB001' && contentsLoc!='SGNB002' && contentsLoc!='SMM011' && contentsLoc!='SBM012' && contentsLoc!='SBMM012' && contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SMM003' && contentsLoc!='SMM004' && contentsLoc!='SMM006'
  120. && contentsLoc!='SBM007' && contentsLoc!='SBM008' && contentsLoc!='SBM009' && contentsLoc!='SBM010' && contentsLoc!='SBM011' && contentsLoc!='SBM013' && contentsLoc!='SBM017' && contentsLoc!='SBM018' && contentsLoc!='SBM019' && contentsLoc!='SOM003' && contentsLoc!='SOM004' && contentsLoc!='SCM004' && contentsLoc!='SBM004' && contentsLoc!='SCM001'){
  121. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddImgPopRow(this);">이미지추가</button>';
  122. }
  123. if(contentsLoc!='SMM011' && contentsLoc!='SBM012' && contentsLoc!='SBMM012' && contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SMM003' && contentsLoc!='SMM006' && contentsLoc!='SCM004' && contentsLoc!='SBM004' && contentsLoc!='SCM001' && contentsLoc!='SMM005'
  124. && contentsLoc!='SBM007' && contentsLoc!='SBM008' && contentsLoc!='SBM009' && contentsLoc!='SBM010' && contentsLoc!='SBM011' && contentsLoc!='SBM013' && contentsLoc!='SBM017' && contentsLoc!='SBM018' && contentsLoc!='SBM019' && contentsLoc!='SOM003' && contentsLoc!='SOM004' ){
  125. html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddLinkPopRow(this);">링크추가</button>';
  126. }
  127. html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
  128. }
  129. html += '</tr>';
  130. if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004' || contentsLoc=='SBMM005'){
  131. html += '<tr class="cateTypeTr">';
  132. html += ' <th>클릭시<br>페이지창</th>';
  133. html += ' <td colspan="3">';
  134. if(result[i].contentsType=='SELF'){
  135. html += ' <label class="rdoBtn"><input type="radio" name="pageTarget'+i+'" value="SELF" checked="checked"/>현재창</label>';
  136. html += ' <label class="rdoBtn"><input type="radio" name="pageTarget'+i+'" value="BLANK" />새창</label>';
  137. }else{
  138. html += ' <label class="rdoBtn"><input type="radio" name="pageTarget'+i+'" value="SELF" />현재창</label>';
  139. html += ' <label class="rdoBtn"><input type="radio" name="pageTarget'+i+'" value="BLANK" checked="checked"/>새창</label>';
  140. }
  141. html += ' </td>';
  142. html += '</tr>';
  143. }
  144. if(contentsLoc=='SMM011' || contentsLoc=='SBM012' || contentsLoc=='SBMM012'){
  145. html += '<tr class="cateTypeTr">';
  146. html += ' <th>동영상구분</th>';
  147. html += ' <td colspan="3">';
  148. if(result[i].strVar1=='Y'){
  149. html += ' <label class="rdoBtn"><input type="radio" name="tvPlayer'+i+'" value="Y" onclick="fnChangeTvPlayer(this,'+i+');" checked="checked" />YouTube</label>';
  150. html += ' <label class="rdoBtn"><input type="radio" name="tvPlayer'+i+'" value="M" onclick="fnChangeTvPlayer(this,'+i+');"/>MP4</label>';
  151. }else{
  152. html += ' <label class="rdoBtn"><input type="radio" name="tvPlayer'+i+'" value="Y" onclick="fnChangeTvPlayer(this,'+i+');" />YouTube</label>';
  153. html += ' <label class="rdoBtn"><input type="radio" name="tvPlayer'+i+'" value="M" onclick="fnChangeTvPlayer(this,'+i+');" checked="checked" />MP4</label>';
  154. }
  155. html += ' </td>';
  156. html += '</tr>';
  157. html += '<tr class="cateTypeTr" name="tvY'+i+'">';
  158. html += ' <th>미디어<br>컨텐츠키</th>';
  159. html += ' <td colspan="3">';
  160. html += ' <input name="tvMediaKey'+i+'" type="text" class="w150" maxlength="200" data-valid-name="미디어 컨텐츠키" value="'+result[i].strVar2+'" ';
  161. if(result[i].strVar1=='M'){
  162. html += ' disabled="disabled" ';
  163. }
  164. html += '/>';
  165. html += ' </td>';
  166. html += '</tr>';
  167. if(result[i].strVar1=='M' && (result[i].strVar2==null || result[i].strVar2=='')){
  168. html += '<tr class="cateTypeTr" name="tvM'+i+'">';
  169. html +=' <th>파일첨부<em class="required" title="필수"></em></th>';
  170. html +=' <td class="infoTxt" colSpan="5">';
  171. html +=' <div class="uFile w300">';
  172. html +=' <input id="file'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnVideoFileUpload(this, '+i+')"/>';
  173. html +=' <label for="file'+i+'" class="uFileLabel">파일선택</label>';
  174. html +=' <input type="hidden" name="kufKey" value="'+result[i].strVar3+'"/>';
  175. html +=' <input type="hidden" name="kmcKey"/>';
  176. html +=' </div>';
  177. html +=' </td>';
  178. html += '</tr>';
  179. }
  180. }
  181. if(contentsLoc=='SGNB001'){
  182. var src = '';
  183. var src2 = '';
  184. html += '<tr class="cateTypeTr">';
  185. html += ' <th>유형선택</th>';
  186. html += ' <td colspan="3">';
  187. html += ' <label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="OPEN" onclick="fnChangeGnbCateType(this,'+i+');"';
  188. if(result[i].contentsType=='OPEN'){
  189. html += ' checked="checked" ';
  190. }
  191. html += '/>오픈배너</label>';
  192. html += ' <label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="IMG" onclick="fnChangeGnbCateType(this,'+i+');" ';
  193. if(result[i].contentsType=='IMG'){
  194. html += ' checked="checked" ';
  195. }
  196. html += '/>이미지배너</label>';
  197. html += ' <label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="TEXT" onclick="fnChangeGnbCateType(this,'+i+');" ';
  198. if(result[i].contentsType=='TEXT'){
  199. html += ' checked="checked" ';
  200. }
  201. html += '/>텍스트배너</label>';
  202. html += ' </td>';
  203. html += '</tr>';
  204. if(!gagajf.isNull(result[i].imgPath1)){
  205. src = $("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[i].imgPath1;
  206. src2 = $("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[i].imgPath2;
  207. }
  208. html += '<tr name="imgPopRow" id="openBanner0" ';
  209. if(result[i].contentsType=='TEXT'){
  210. html += ' style="display:none;"';
  211. }
  212. html += '>';
  213. html += ' <th>띠배너<br>이미지</th>';
  214. html += ' <td><div class="uFile w300">';
  215. html += ' <input id="filePop_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, '+i+', 0)"/>';
  216. html += ' <label for="filePop_'+i+'" class="uFileLabel">파일선택</label>';
  217. html += ' <input type="hidden" name="imgPath" value="'+result[i].imgPath1+'"/>';
  218. html += ' <input type="hidden" name="newImgFile" value="" />';
  219. html += ' </div>';
  220. html += ' <div id="imgViewPop_'+i+'" class=';
  221. if(src!=''){
  222. html += '"on">';
  223. }else{
  224. html += '"off">';
  225. }
  226. html += ' <img id="bannerPreViewUrlPop_'+i+'" src="'+src+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
  227. html += ' </div></td>';
  228. html += '</tr>';
  229. html += '<tr class="cateTypeTr" name="openBannerTypeTr'+i+'" id="openBannerTypeTr" ';
  230. if(result[i].contentsType!='OPEN'){
  231. html += ' style="display:none;"';
  232. }
  233. html += '>';
  234. html += ' <th>확장형 배너<br>유형</th>';
  235. html += ' <td colspan="3">';
  236. if(result[i].strVar7=='IMG'){
  237. html += ' <label class="rdoBtn"><input type="radio" name="openBannerType'+i+'" value="IMG" onclick="fnChangeOpenBannerType(this,'+i+');" checked="checked"/>이미지형</label>';
  238. html += ' <label class="rdoBtn"><input type="radio" name="openBannerType'+i+'" value="HTML" onclick="fnChangeOpenBannerType(this,'+i+');"/>HTML형</label>';
  239. }else{
  240. html += ' <label class="rdoBtn"><input type="radio" name="openBannerType'+i+'" value="IMG" onclick="fnChangeOpenBannerType(this,'+i+');" />이미지형</label>';
  241. html += ' <label class="rdoBtn"><input type="radio" name="openBannerType'+i+'" value="HTML" onclick="fnChangeOpenBannerType(this,'+i+');" checked="checked"/>HTML형</label>';
  242. }
  243. html += ' </td>';
  244. html += '</tr>';
  245. html += '<tr name="imgPopRow" id="openBanner1" ';
  246. if(result[i].contentsType=='OPEN' && result[i].strVar7=='IMG'){
  247. html += ' style="display:table-row;"';
  248. }else{
  249. html += ' style="display:none;"';
  250. }
  251. // if((result[i].contentsType!='IMG') || result[i].contentsType!='OPEN' && result[i].strVar7!='IMG'){
  252. // html += ' style="display:none;"';
  253. // }
  254. html +='>';
  255. html += ' <th>오픈배너<br>이미지</th>';
  256. html += ' <td><div class="uFile w300">';
  257. html += ' <input id="filePop_100'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, 100'+i+', 1)"/>';
  258. html += ' <label for="filePop_100'+i+'" class="uFileLabel">파일선택</label>';
  259. html += ' <input type="hidden" name="imgPath" value="'+result[i].imgPath2+'"/>';
  260. html += ' <input type="hidden" name="newImgFile" value="" />';
  261. html += ' </div>';
  262. html += ' <div id="imgViewPop_100'+i+'" class=';
  263. if(src!='' && result[i].imgPath2 != ''){
  264. html += '"on">';
  265. }else{
  266. html += '"off">';
  267. }
  268. html += ' <img id="bannerPreViewUrlPop_100'+i+'" src="'+src2+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src2\'));"/>';
  269. html += ' </div></td>';
  270. html += '</tr>';
  271. html += '<tr name="imgPopRow" id="openBanner2" ';
  272. if(result[i].contentsType!='OPEN' || result[i].strVar7!='HTML'){
  273. html += ' style="display:none;"';
  274. }
  275. html += '>';
  276. html += ' <input type="hidden" name="htmlDesc'+i+'" id="htmlDesc'+i+'" value="'+result[i].html.replaceAll("\"","\'")+'">';
  277. html += ' <th>오픈배너<br>HTML</th>';
  278. html += ' <td class="padT10"><div class="tabJrContArea">';
  279. html += ' <textarea class="textareaR3 summernote" name="openBannerDesc'+i+'" id="openBannerDesc'+i+'" ></textarea>';
  280. html += ' </div>';
  281. html += ' </td>';
  282. html += '</tr>';
  283. html += ' <tr name="tabBgColorRow'+i+'"';
  284. if(result[i].contentsType=='TEXT'){
  285. html += 'style="display:none;"';
  286. }
  287. html += ' >';
  288. html += ' <th>배경 RGB코드</th>';
  289. html += ' <td><input name="gnbBgColor' + i + '" type="text" maxlength="200" data-valid-name="배경 RGB코드" value="' + result[i].strVar5 + '"/></td>';
  290. html += ' </tr>';
  291. html += ' <tr name="tabShowYnRow'+i+'"';
  292. if(result[i].contentsType!='OPEN'){
  293. html += 'style="display:none;"';
  294. }
  295. html += ' >';
  296. html += ' <th>확장형 배너<br>닫기 버튼<br>노출여부</th>';
  297. html += ' <td>';
  298. if(result[i].strVar8=='Y'){
  299. html += ' <label class="rdoBtn"><input type="radio" name="todayYn'+i+'" value="Y" checked="checked"/>노출</label>';
  300. html += ' <label class="rdoBtn"><input type="radio" name="todayYn'+i+'" value="N" />비노출</label>';
  301. }else{
  302. html += ' <label class="rdoBtn"><input type="radio" name="todayYn'+i+'" value="Y" />노출</label>';
  303. html += ' <label class="rdoBtn"><input type="radio" name="todayYn'+i+'" value="N" checked="checked"/>비노출</label>';
  304. }
  305. html += ' </td>';
  306. html += ' </tr>';
  307. }
  308. if(contentsLoc=='SGNB002'){
  309. html += '<tr class="cateTypeTr">';
  310. html += ' <th>유형선택</th>';
  311. html += ' <td colspan="3">';
  312. html += ' <label class="rdoBtn"><input type="radio" name="cateType'+i+'" value="TEXT" onclick="fnChangeGnbCateType(this,'+i+');" ';
  313. if(result[i].contentsType=='TEXT'){
  314. html += ' checked="checked" ';
  315. }
  316. html += '/>텍스트배너</label>';
  317. html += ' </td>';
  318. html += '</tr>';
  319. }
  320. if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
  321. html += ' <tr>';
  322. html += ' <th>전시 설정</th>';
  323. html += ' <td>';
  324. if(result[i].useYn=='Y'){
  325. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="Y" checked="checked"/>노출</label>';
  326. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="N"/>비노출</label>';
  327. }else{
  328. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="Y"/>노출</label>';
  329. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="N" checked="checked"/>비노출</label>';
  330. }
  331. html += ' </td>';
  332. if(result[i].contentsLoc=='SCM003'){
  333. html += ' <th>상품 노출 개수</th>';
  334. html += ' <td>';
  335. if(result[i].strVar1=='10'){
  336. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10" checked="checked"/>10개</label>';
  337. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20"/>20개</label>';
  338. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30"/>30개</label>';
  339. }else if(result[i].strVar1=='20'){
  340. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10"/>10개</label>';
  341. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20" checked="checked"/>20개</label>';
  342. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30"/>30개</label>';
  343. }else{
  344. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10"/>10개</label>';
  345. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20"/>20개</label>';
  346. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30" checked="checked"/>30개</label>';
  347. }
  348. html += ' </td>';
  349. }
  350. html += ' </tr>';
  351. }
  352. if(contentsLoc=='SMM001' || contentsLoc=='SOM001'){
  353. html += '<tr>';
  354. html += ' <th>컨텐츠유형</th>';
  355. html += ' <td class="planArea" name="planArea" id="planArea'+i+'" colspan="3">';
  356. if(result[i].strVar5=='P'){
  357. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="P" onclick="fnChangeContentsType(this,'+i+');" checked="checked"/>기획전</label>';
  358. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="E" onclick="fnChangeContentsType(this,'+i+');"/>이벤트</label>';
  359. }else{
  360. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="P" onclick="fnChangeContentsType(this,'+i+');" />기획전</label>';
  361. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+i+'" value="E" onclick="fnChangeContentsType(this,'+i+');" checked="checked"/>이벤트</label>';
  362. }
  363. if(result[i].strVar5=='P') {
  364. html += ' <input type="text" class="w100 inputPlan" name="planSq' + i + '" value="' + result[i].strVar6 + '"/>';
  365. html += ' <button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan(' + i + ');">기획전검색</button>';
  366. }else{
  367. html += ' <input type="text" class="w100 inputPlan" name="planSq' + i + '" value="" style="display: none;"/>';
  368. html += ' <button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan(' + i + ');" style="display: none;">기획전검색</button>';
  369. }
  370. html += ' </td>';
  371. html += '</tr>';
  372. html += '<tr>';
  373. html += ' <th>썸네일 <br>글자 색상</th>';
  374. html += ' <td colspan="3">';
  375. if(result[i].strVar7=='BLACK'){
  376. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="BLACK" checked="checked"/>BLACK</label>';
  377. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="WHITE" />WHITE</label>';
  378. }else{
  379. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="BLACK" />BLACK</label>';
  380. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="WHITE" checked="checked"/>WHITE</label>';
  381. }
  382. if(contentsLoc=='SOM001'){
  383. html += '<em>* 모바일에서 사용</em>';
  384. }
  385. html += ' </td>';
  386. html += '</tr>';
  387. }
  388. if(contentsLoc=='SBM004' || contentsLoc=='SCM001'){
  389. html += '<tr>';
  390. html += ' <th>썸네일 <br>글자 색상</th>';
  391. html += ' <td colspan="3">';
  392. if(result[i].strVar7=='BLACK'){
  393. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="BLACK" checked="checked"/>BLACK</label>';
  394. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="WHITE" />WHITE</label>';
  395. }else{
  396. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="BLACK" />BLACK</label>';
  397. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+i+'" value="WHITE" checked="checked"/>WHITE</label>';
  398. }
  399. if(contentsLoc=='SCM001'){
  400. html += '<em>* 모바일에서 사용</em>';
  401. }
  402. html += ' </td>';
  403. html += '</tr>';
  404. }
  405. if(contentsLoc=='SMM005'){
  406. html += '<tr>';
  407. html += ' <th>배너유형</th>';
  408. html += ' <td class="bannerArea" id="bannerArea'+i+'">';
  409. if(result[i].contentsType=='1'){
  410. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+i+'" value="1" checked="checked" onclick="fnChangeHalfBannerType(this,'+i+', 1);">1단</label>';
  411. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+i+'" value="2" onclick="fnChangeHalfBannerType(this,'+i+', 2);">2단</label>';
  412. }else{
  413. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+i+'" value="1" onclick="fnChangeHalfBannerType(this,'+i+', 1);">1단</label>';
  414. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+i+'" value="2" checked="checked" onclick="fnChangeHalfBannerType(this,'+i+', 2);">2단</label>';
  415. }
  416. html += ' </td>';
  417. html += '</tr>';
  418. var src = '';
  419. src = $("#uploadDefaultUrlPop").val().replace('/contents/', '');
  420. html += '<tr name="imgPopRow" id="halfBanner0">\n';
  421. html += ' <th>1단<br>이미지</th>\n';
  422. html += ' <td><div class="uFile w300">\n';
  423. html += ' <input id="filePop_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, '+i+', 0)"/>\n';
  424. html += ' <label for="filePop_'+i+'" class="uFileLabel">파일선택</label>\n';
  425. html += ' <input type="hidden" name="imgPath" value="'+result[i].imgPath1+'"/>\n';
  426. html += ' <input type="hidden" name="newImgFile" value="" />\n';
  427. html += ' </div>\n';
  428. html += ' <div id="imgViewPop_'+i+'" class=';
  429. if(result[i].imgPath1 !=''){
  430. html += '"on">';
  431. }else{
  432. html += '"off">';
  433. }
  434. html += ' <img id="bannerPreViewUrlPop_'+i+'" src="'+src+result[i].imgPath1+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>\n';
  435. html += ' </div></td>\n';
  436. html += '</tr>\n';
  437. html += '<tr name="linkPopRow" id="link1dep">\n';
  438. html += ' <th>1단 링크<br>(없으면 #)<br>(메인은 /)</th>\n';
  439. html += ' <td><input name="link" type="text" maxLength="200" required="required" data-valid-name="링크" placeholder="외부 URL 입력시 https:// 붙여주세요. ex)https://www.levis-kids.co.kr" value="'+result[i].strVar1+'"></td>\n';
  440. html += ' <td class="aL">\n';
  441. html += ' </td>\n';
  442. html += '</tr>\n';
  443. html += '<tr name="imgPopRow" id="halfBanner1"';
  444. if(result[i].contentsType=='1') {
  445. html += ' style="display: none;"';
  446. }
  447. html +=' >\n';
  448. html += ' <th>2단<br>이미지</th>\n';
  449. html += ' <td><div class="uFile w300">';
  450. html += ' <input id="filePop_100'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, 100'+i+', 1)"/>\n';
  451. html += ' <label for="filePop_100'+i+'" class="uFileLabel">파일선택</label>\n';
  452. html += ' <input type="hidden" name="imgPath" value="'+result[i].imgPath2+'"/>\n';
  453. html += ' <input type="hidden" name="newImgFile" value="" />\n';
  454. html += ' </div>\n';
  455. html += ' <div id="imgViewPop_100'+i+'" class=';
  456. if(result[i].imgPath2!=''){
  457. html += '"on">';
  458. }else{
  459. html += '"off">';
  460. }
  461. html += ' <img id="bannerPreViewUrlPop_100'+i+'" src="'+src+result[i].imgPath2+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>\n';
  462. html += ' </div></td>\n';
  463. html += '</tr>\n';
  464. html += '<tr name="linkPopRow" id="link2dep" ';
  465. if(result[i].contentsType=='1') {
  466. html += ' style="display: none;" ';
  467. }
  468. html += '>\n';
  469. html += ' <th>2단 링크<br>(없으면 #)<br>(메인은 /)</th>\n';
  470. html += ' <td><input name="link" type="text" maxLength="200" required="required" data-valid-name="링크" placeholder="외부 URL 입력시 https:// 붙여주세요. ex)https://www.levis-kids.co.kr" value="'+result[i].strVar2+'"></td>\n';
  471. html += ' <td class="aL">\n';
  472. html += ' </td>\n';
  473. html += '</tr>\n';
  474. }
  475. html += '</thead><tbody>';
  476. if(contentsLoc!='SCM002' && contentsLoc!='SCM003' && contentsLoc!='SMM011' && contentsLoc!='SBM012' && contentsLoc!='SBMM012' && contentsLoc!='SMM005'){
  477. for(var j=1; j<5; j++){
  478. var strTitle = eval("result["+i+"].strTitle" + j);
  479. var imgPath = eval("result["+i+"].imgPath" + j);
  480. var strVar = eval("result["+i+"].strVar" + j);
  481. var subText = eval("result["+i+"].subText" + j);
  482. if(strTitle!=null && strTitle!='null' && strTitle!='' ){
  483. html += fnAddTitlePopRow(strTitle);
  484. }
  485. if(contentsLoc!='SGNB001' && contentsLoc!='SGNB002'){
  486. if(contentsLoc=='SMM001' || contentsLoc=='SBM004' || contentsLoc=='SOM001'){
  487. if(j<3){
  488. html += fnAddImgPopRow(imgPath, j);
  489. }
  490. }else{
  491. if(imgPath!=null && imgPath!='null' && imgPath!='' ){
  492. html += fnAddImgPopRow(imgPath, j);
  493. }
  494. }
  495. }
  496. if(strVar!=null && strVar!='null' && strVar!='' ){
  497. html += fnAddLinkPopRow(strVar);
  498. }
  499. if(contentsLoc=='SBM005'){
  500. // if(subText!=null && subText!='null' && subText!='' ){
  501. if(j==1){
  502. html += fnAddBrandDescRow(subText);
  503. }
  504. // }
  505. }else if(contentsLoc=='SMM001'){
  506. if(subText!=null && subText!='null' && subText!='' ){
  507. html += fnAddSubTextPopRow(subText);
  508. }else{
  509. if(j == 1){
  510. html += fnAddSubTextPopRow();
  511. }
  512. }
  513. }else{
  514. if(subText!=null && subText!='null' && subText!='' ){
  515. html += fnAddSubTextPopRow(subText);
  516. }
  517. }
  518. }
  519. }
  520. html += '</tbody></table>';
  521. }
  522. $("#popSortable").append(html);
  523. $("#popSortable").sortable();
  524. $('.schDate').datepicker("destroy");
  525. $('.schDate').datepicker({
  526. changeMonth: true,
  527. changeYear: true,
  528. defaultDate: $('.schDate').val()
  529. });
  530. // SGNB001 일때 확장형 배너 summernote
  531. if(contentsLoc=='SGNB001'){
  532. fnOpenBannerSummernote();
  533. }
  534. if(contentsLoc=='SBM005'){
  535. fnBrandDesc();
  536. }
  537. tableLen = $(".mcTable").length;
  538. }
  539. var fnOpenBannerSummernote = function (){
  540. $('.mcTable').each(function(){
  541. let idx = $(this).find('[name=tableIdx]').val();
  542. let bannerCateType = $("#mcTable"+idx).find('input:radio[name=cateType'+idx+']:checked').val();
  543. // if(bannerCateType=='OPEN'){
  544. let htmlDesc = $("#mcTable"+idx).find('input[name=htmlDesc'+idx+']').val();
  545. var snOptions1 = gagaSn.getToolbarOptions('media');
  546. gagaSn.createSummernote(snOptions1, '#openBannerDesc'+idx);
  547. // gagaSn.setContents('#openBannerDesc'+idx, '');
  548. $('#openBannerDesc'+idx).summernote('code', htmlDesc);
  549. // }
  550. });
  551. }
  552. var fnChangeTvPlayer = function (obj,idx){
  553. let tvPlayer = $("#mcTable"+idx).find("input:radio[name=tvPlayer"+idx+"]:checked").val();
  554. if(tvPlayer == 'Y'){
  555. $(obj).closest("table").find("[name=tvY"+idx+"]").show();
  556. $(obj).closest("table").find("[name=tvM"+idx+"]").hide();
  557. $(obj).closest("table").find("[name=tvMediaKey"+idx+"]").prop('disabled',false);
  558. }else{
  559. $(obj).closest("table").find("[name=tvY"+idx+"]").show();
  560. $(obj).closest("table").find("[name=tvM"+idx+"]").show();
  561. $(obj).closest("table").find("[name=tvMediaKey"+idx+"]").prop('disabled',true);
  562. }
  563. }
  564. var fnChangeOpenBannerType = function (obj, idx){
  565. let openBannerType = $("#mcTable"+idx).find("input:radio[name=openBannerType"+idx+"]:checked").val();
  566. if(openBannerType == 'IMG'){
  567. $(obj).closest("table").find("[id=openBanner1]").show();
  568. $(obj).closest("table").find("[id=openBanner2]").hide();
  569. }else{
  570. $(obj).closest("table").find("[id=openBanner1]").hide();
  571. $(obj).closest("table").find("[id=openBanner2]").show();
  572. }
  573. }
  574. var fnChangeGnbCateType = function (obj, idx){
  575. let cateType = $("#mcTable"+idx).find("input:radio[name=cateType"+idx+"]:checked").val();
  576. if(cateType=='OPEN'){
  577. $(obj).closest("table").find("[name=tabBgColorRow"+idx+"]").show();
  578. $(obj).closest("table").find("[name=tabShowYnRow"+idx+"]").show();
  579. $(obj).closest("table").find("[name=openBannerTypeTr"+idx+"]").show();
  580. console.log($(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:checked").val());
  581. if($(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:checked").val()=='HTML'){
  582. $(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:input[value=HTML]").prop('checked',true);
  583. $(obj).closest("table").find("[id=openBanner2]").show();
  584. }else{
  585. $(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:input[value=IMG]").prop('checked',true);
  586. $(obj).closest("table").find("[id=openBanner2]").hide();
  587. }
  588. $(obj).closest("table").find("[id=openBanner0]").show();
  589. $(obj).closest("table").find("[id=openBanner1]").show();
  590. // $(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
  591. // $(obj).closest("table").find("[name=imgPath]").val('');
  592. // $(obj).closest("table").find("[name=newImgFile]").val('');
  593. // $("#bannerPreViewUrlPop_0").attr('src', '');
  594. // $("#imgViewPop_0").removeClass("on").addClass("off");
  595. // $("#bannerPreViewUrlPop_1").attr('src', '');
  596. // $("#imgViewPop_1").removeClass("on").addClass("off");
  597. }else if(cateType=='IMG'){
  598. $(obj).closest("table").find("[name=tabBgColorRow"+idx+"]").show();
  599. $(obj).closest("table").find("[name=tabShowYnRow"+idx+"]").hide();
  600. $(obj).closest("table").find("[name=openBannerTypeTr"+idx+"]").hide();
  601. $(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:input[value=IMG]").prop('checked',true);
  602. $(obj).closest("table").find("[id=openBanner0]").show();
  603. $(obj).closest("table").find("[id=openBanner1]").hide();
  604. $(obj).closest("table").find("[id=openBanner2]").hide();
  605. // $(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
  606. // $(obj).closest("table").find("[name=imgPath]").val('');
  607. // $(obj).closest("table").find("[name=newImgFile]").val('');
  608. // $("#bannerPreViewUrlPop_0").attr('src', '');
  609. // $("#imgViewPop_0").removeClass("on").addClass("off");
  610. // $("#bannerPreViewUrlPop_1").attr('src', '');
  611. // $("#imgViewPop_1").removeClass("on").addClass("off");
  612. }else if(cateType=='TEXT'){
  613. $(obj).closest("table").find("[name=tabBgColorRow"+idx+"]").hide();
  614. $(obj).closest("table").find("[name=tabShowYnRow"+idx+"]").hide();
  615. $(obj).closest("table").find("[name=openBannerTypeTr"+idx+"]").hide();
  616. $(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:input[value=IMG]").prop('checked',true);
  617. $(obj).closest("table").find("[id=openBanner0]").hide();
  618. $(obj).closest("table").find("[id=openBanner1]").hide();
  619. $(obj).closest("table").find("[id=openBanner2]").hide();
  620. // $(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
  621. // $(obj).closest("table").find("[name=imgPath]").val('');
  622. // $(obj).closest("table").find("[name=newImgFile]").val('');
  623. // $("#bannerPreViewUrlPop_0").attr('src', '');
  624. // $("#imgViewPop_0").removeClass("on").addClass("off");
  625. // $("#bannerPreViewUrlPop_1").attr('src', '');
  626. // $("#imgViewPop_1").removeClass("on").addClass("off");
  627. if($(obj).closest("table").find("[name=title]").length < 1){
  628. fnAddTitlePopRow($(obj));
  629. }
  630. if($(obj).closest("table").find("[name=link]").length < 1){
  631. fnAddLinkPopRow($(obj));
  632. }
  633. }
  634. }
  635. /**
  636. * 컨텐츠 추가 버튼
  637. */
  638. var dataIdx=0;
  639. $("#btnPopAddRow").on("click", function (){
  640. dataIdx = tableLen;
  641. if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
  642. if($(".mcTable").length > 0){
  643. mcxDialog.alert('컨텐츠 추가를 1개 이상 할 수 없습니다.');
  644. return;
  645. }
  646. }
  647. var html = '<table class="frmStyle mcTable" style="margin-bottom:30px" id="mcTable'+dataIdx+'">\n';
  648. html += '<input type="hidden" name="tableIdx" value="'+dataIdx+'" data-id="'+dataIdx+'">\n';
  649. html += '<colgroup>\n';
  650. html += '<col style="width:10%;"/>\n';
  651. html += '<col style="width:55%;"/>\n';
  652. html += '<col/>\n';
  653. html += '</colgroup>\n';
  654. 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"/>\n';
  655. html += '<select name="stTimeHour" required="required" data-valid-name="노출기간 시작시간">';
  656. html += fnCreateTimeOption(24);
  657. html += '</select>\n';
  658. html += '<select name="stTimeMin" required="required" data-valid-name="노출기간 시작시간">';
  659. html += fnCreateTimeOption(60);
  660. html += '</select>\n';
  661. html += '<span> ~ </span>\n';
  662. html += '<input name="dispEddt" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="노출종료일" data-valid-type="calendar"/>\n';
  663. html += '<select name="edTimeHour" required="required" data-valid-name="노출기간 종료시간">';
  664. html += fnCreateTimeOption(24,23);
  665. html += '</select>\n';
  666. html += '<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
  667. html += fnCreateTimeOption(60,59);
  668. html += '</select>\n';
  669. html += '<input name="dispOrd" type="text" class="w80"placeholder="전시순서" maxlength="4" style="margin-left:5px; text-align:center"/>\n';
  670. html += '</td>\n';
  671. html += '<td class="aL">\n';
  672. if(contentsLoc!='SCM002' && contentsLoc!='SCM003' && contentsLoc!='SMM011' && contentsLoc!='SBM012' && contentsLoc!='SBMM012' && contentsLoc!='SMM003' && contentsLoc!='SMM004' && contentsLoc!='SMM006'
  673. && contentsLoc!='SBM007' && contentsLoc!='SBM008' && contentsLoc!='SBM009' && contentsLoc!='SBM010' && contentsLoc!='SBM011' && contentsLoc!='SBM013' && contentsLoc!='SBM017' && contentsLoc!='SBM018' && contentsLoc!='SBM019'
  674. && contentsLoc!='SOM003' && contentsLoc!='SOM004' && contentsLoc!='SCM004' && contentsLoc!='SMM005'){
  675. if(contentsLoc!='SMM005'){
  676. html += '<button type="button" class="btn btn-base btn-lg"';
  677. if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004' || contentsLoc=='SCM001'){
  678. html += ' style="display:none;" ';
  679. }
  680. html+= ' id="addTitle'+dataIdx+'" onclick="fnAddTitlePopRow(this);">타이틀추가</button>\n';
  681. }
  682. if(contentsLoc=='SMM001' || contentsLoc=='SMM002' || contentsLoc=='SBM004' || contentsLoc=='SBMM004' || contentsLoc=='SCM001' || contentsLoc=='SOM001'){
  683. html += '<button type="button" class="btn btn-base btn-lg"';
  684. if(contentsLoc=='SMM001' || contentsLoc=='SOM001'|| contentsLoc=='SBM004' || contentsLoc=='SCM001'){
  685. html += ' style="display:none;" ';
  686. }
  687. html += ' id="addSubText'+dataIdx+'" ';
  688. if(contentsLoc=='SBM004' || contentsLoc=='SCM001'){
  689. html += ' style="display:none;" ';
  690. }
  691. html += ' onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>\n';
  692. }
  693. if(contentsLoc=='SBM005' || contentsLoc=='SBMM005'){
  694. html += '<button type="button" class="btn btn-base btn-lg" id="addBrandDesc'+dataIdx+'" onclick="fnAddBrandDescRow(this,\'add\','+dataIdx+');">브랜드소개추가</button>\n';
  695. }
  696. if(contentsLoc!='SBM005' && contentsLoc!='SBMM005' && contentsLoc!='SGNB001' && contentsLoc!='SGNB002' && contentsLoc!='SMM005') {
  697. html += '<button type="button" class="btn btn-base btn-lg"';
  698. if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004' || contentsLoc=='SCM001'){
  699. html += ' style="display:none;" ';
  700. }
  701. html += ' id="addImg'+dataIdx+'" onclick="fnAddImgPopRow(this);">이미지추가</button>\n';
  702. }
  703. if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004'){
  704. html += '<button type="button" style="display: none;" class="btn btn-base btn-lg" id="addMobImg'+dataIdx+'" onclick="fnAddMobImgPopRow(this, '+dataIdx+');">모바일이미지추가</button>\n';
  705. }
  706. html += '<button type="button" class="btn btn-base btn-lg"';
  707. if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004' || contentsLoc=='SCM001'){
  708. html += ' style="display:none;" ';
  709. }
  710. html += ' id="addLink'+dataIdx+'" onclick="fnAddLinkPopRow(this);">링크추가</button>\n';
  711. }
  712. html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>\n';
  713. html += '</tr>\n';
  714. if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004' || contentsLoc=='SBMM005'){
  715. html += '<tr class="cateTypeTr">\n';
  716. html += ' <th>클릭시<br>페이지창</th>\n';
  717. html += ' <td colspan="3">\n';
  718. html += ' <label class="rdoBtn"><input type="radio" name="pageTarget'+dataIdx+'" value="SELF" checked="checked"/>현재창</label>\n';
  719. html += ' <label class="rdoBtn"><input type="radio" name="pageTarget'+dataIdx+'" value="BLANK" />새창</label>\n';
  720. html += ' </td>\n';
  721. html += '</tr>\n';
  722. }
  723. if(contentsLoc=='SMM011' || contentsLoc=='SBM012' || contentsLoc=='SBMM012'){
  724. html += '<tr class="cateTypeTr">\n';
  725. html += ' <th>동영상구분</th>\n';
  726. html += ' <td colspan="3">\n';
  727. html += ' <label class="rdoBtn"><input type="radio" name="tvPlayer'+dataIdx+'" value="Y" onclick="fnChangeTvPlayer(this,'+dataIdx+');" checked="checked" />YouTube</label>\n';
  728. html += ' <label class="rdoBtn"><input type="radio" name="tvPlayer'+dataIdx+'" value="M" onclick="fnChangeTvPlayer(this,'+dataIdx+');"/>MP4</label>\n';
  729. html += ' </td>\n';
  730. html += '</tr>\n';
  731. html += '<tr class="cateTypeTr" name="tvY'+dataIdx+'">\n';
  732. html += ' <th>미디어<br>컨텐츠키</th>\n';
  733. html += ' <td colspan="3">\n';
  734. html += ' <input name="tvMediaKey'+dataIdx+'" type="text" class="w150" maxlength="200" data-valid-name="미디어 컨텐츠키" value=""/>\n';
  735. html += ' </td>\n';
  736. html += '</tr>\n';
  737. html += '<tr class="cateTypeTr" name="tvM'+dataIdx+'" style="display: none;">\n';
  738. html +=' <th>파일첨부<em class="required" title="필수"></em></th>\n';
  739. html +=' <td class="infoTxt" colSpan="5">\n';
  740. html +=' <div class="uFile w300">\n';
  741. html +=' <input id="file'+dataIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnVideoFileUpload(this, '+dataIdx+')"/>\n';
  742. html +=' <label for="file'+dataIdx+'" class="uFileLabel">파일선택</label>\n';
  743. html +=' <input type="hidden" name="kufKey"/>\n';
  744. html +=' <input type="hidden" name="kmcKey"/>\n';
  745. html +=' </div>\n';
  746. html +=' </td>\n';
  747. html += '</tr>\n';
  748. }
  749. if(contentsLoc=='SGNB001'){
  750. html += '<tr class="cateTypeTr">\n';
  751. html += ' <th>유형선택</th>\n';
  752. html += ' <td colspan="3">\n';
  753. html += ' <label class="rdoBtn"><input type="radio" name="cateType'+dataIdx+'" value="OPEN" onclick="fnChangeGnbCateType(this,'+dataIdx+');" checked="checked"/>오픈배너</label>\n';
  754. html += ' <label class="rdoBtn"><input type="radio" name="cateType'+dataIdx+'" value="IMG" onclick="fnChangeGnbCateType(this,'+dataIdx+');"/>이미지배너</label>\n';
  755. html += ' <label class="rdoBtn"><input type="radio" name="cateType'+dataIdx+'" value="TEXT" onclick="fnChangeGnbCateType(this,'+dataIdx+');"/>텍스트배너</label>\n';
  756. html += ' </td>\n';
  757. html += '</tr>\n';
  758. var src = '';
  759. html += '<tr name="imgPopRow" id="openBanner0">\n';
  760. html += ' <th>띠배너<br>이미지</th>\n';
  761. html += ' <td><div class="uFile w300">\n';
  762. html += ' <input id="filePop_'+dataIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, '+dataIdx+', 0)"/>\n';
  763. html += ' <label for="filePop_'+dataIdx+'" class="uFileLabel">파일선택</label>\n';
  764. html += ' <input type="hidden" name="imgPath" value=""/>\n';
  765. html += ' <input type="hidden" name="newImgFile" value="" />\n';
  766. html += ' </div>\n';
  767. html += ' <div id="imgViewPop_'+dataIdx+'" class=';
  768. if(src!=''){
  769. html += '"on">';
  770. }else{
  771. html += '"off">';
  772. }
  773. html += ' <img id="bannerPreViewUrlPop_'+dataIdx+'" src="'+src+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>\n';
  774. html += ' </div></td>\n';
  775. html += '</tr>\n';
  776. html += '<tr class="cateTypeTr" name="openBannerTypeTr'+dataIdx+'" id="openBannerTypeTr">\n';
  777. html += ' <th>확장형 배너<br>유형</th>\n';
  778. html += ' <td colspan="3">\n';
  779. html += ' <label class="rdoBtn"><input type="radio" name="openBannerType'+dataIdx+'" value="IMG" onclick="fnChangeOpenBannerType(this,'+dataIdx+');" checked="checked"/>이미지형</label>\n';
  780. html += ' <label class="rdoBtn"><input type="radio" name="openBannerType'+dataIdx+'" value="HTML" onclick="fnChangeOpenBannerType(this,'+dataIdx+');"/>HTML형</label>\n';
  781. html += ' </td>\n';
  782. html += '</tr>\n';
  783. html += '<tr name="imgPopRow" id="openBanner1">\n';
  784. html += ' <th>오픈배너<br>이미지</th>\n';
  785. html += ' <td><div class="uFile w300">';
  786. html += ' <input id="filePop_100'+dataIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, 100'+dataIdx+', 1)"/>\n';
  787. html += ' <label for="filePop_100'+dataIdx+'" class="uFileLabel">파일선택</label>\n';
  788. html += ' <input type="hidden" name="imgPath" value=""/>\n';
  789. html += ' <input type="hidden" name="newImgFile" value="" />\n';
  790. html += ' </div>\n';
  791. html += ' <div id="imgViewPop_100'+dataIdx+'" class=';
  792. if(src!=''){
  793. html += '"on">';
  794. }else{
  795. html += '"off">';
  796. }
  797. html += ' <img id="bannerPreViewUrlPop_100'+dataIdx+'" src="'+src+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>\n';
  798. html += ' </div></td>\n';
  799. html += '</tr>\n';
  800. html += '<tr name="imgPopRow" id="openBanner2" style="display: none;">\n';
  801. html += ' <input type="hidden" name="htmlDesc'+dataIdx+'" id="htmlDesc'+dataIdx+'" value="">\n';
  802. html += ' <th>오픈배너<br>HTML</th>\n';
  803. html += ' <td class="padT10"><div class="tabJrContArea">\n';
  804. html += ' <textarea class="textareaR3 summernote" name="openBannerDesc'+dataIdx+'" id="openBannerDesc'+dataIdx+'"></textarea>\n';
  805. html += ' </div>\n';
  806. html += ' </td>\n';
  807. html += '</tr>\n';
  808. html += ' <tr name="tabBgColorRow'+dataIdx+'">\n';
  809. html += ' <th>배경 RGB코드</th>\n';
  810. html += ' <td><input name="gnbBgColor'+dataIdx+'" type="text" maxlength="200" data-valid-name="배경 RGB코드" value=""/></td>\n';
  811. html += ' </tr>\n';
  812. html += ' <tr name="tabShowYnRow'+dataIdx+'">\n';
  813. html += ' <th>확장형 배너<br>닫기 버튼<br>노출여부</th>\n';
  814. html += ' <td>\n';
  815. html += ' <label class="rdoBtn"><input type="radio" name="todayYn'+dataIdx+'" value="Y" checked="checked"/>노출</label>\n';
  816. html += ' <label class="rdoBtn"><input type="radio" name="todayYn'+dataIdx+'" value="N" />비노출</label>\n';
  817. html += ' </td>\n';
  818. html += ' </tr>\n';
  819. }
  820. if(contentsLoc=='SGNB002'){
  821. html += '<tr class="cateTypeTr">\n';
  822. html += ' <th>유형선택</th>\n';
  823. html += ' <td colspan="3">\n';
  824. html += ' <label class="rdoBtn"><input type="radio" name="cateType'+dataIdx+'" value="TEXT" onclick="fnChangeGnbCateType(this,'+dataIdx+');" checked="checked"/>텍스트배너</label>\n';
  825. html += ' </td>\n';
  826. html += '</tr>\n';
  827. }
  828. if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
  829. html += ' <tr>\n';
  830. html += ' <th>전시 설정</th>\n';
  831. html += ' <td>\n';
  832. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="Y" checked="checked"/>노출</label>\n';
  833. html += ' <label class="rdoBtn"><input type="radio" name="dispYn" value="N"/>비노출</label>\n';
  834. html += ' </td>\n';
  835. if(contentsLoc=='SCM003'){
  836. html += ' <th>상품 노출 개수</th>\n';
  837. html += ' <td>\n';
  838. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="10" checked="checked"/>10개</label>\n';
  839. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="20"/>20개</label>\n';
  840. html += ' <label class="rdoBtn"><input type="radio" name="dispCnt" value="30"/>30개</label>\n';
  841. html += ' </td>\n';
  842. }
  843. html += ' </tr>\n';
  844. }
  845. if(contentsLoc=='SMM001' || contentsLoc=='SOM001'){
  846. html += '<tr>\n';
  847. html += ' <th>컨텐츠유형</th>\n';
  848. html += ' <td class="planArea" name="planArea" id="planArea'+dataIdx+'" colspan="3">\n';
  849. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+dataIdx+'" value="P" onclick="fnChangeContentsType(this,'+dataIdx+');" checked="checked"/>기획전</label>\n';
  850. html += ' <label class="rdoBtn"><input type="radio" name="contentsType'+dataIdx+'" value="E" onclick="fnChangeContentsType(this,'+dataIdx+');"/>이벤트</label>\n';
  851. html += ' <input type="text" class="w100 inputPlan" name="planSq'+dataIdx+'" value=""/>\n';
  852. html += ' <button type="button" class="btn btn btn-dark btn-sm btnPlan" onclick="fnSearchPlan('+dataIdx+');">기획전검색</button>\n';
  853. html += ' </td>\n';
  854. html += '</tr>\n';
  855. html += '<tr>\n';
  856. html += ' <th>썸네일 <br>글자 색상</th>\n';
  857. html += ' <td colspan="3">\n';
  858. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+dataIdx+'" value="BLACK" checked="checked"/>BLACK</label>\n';
  859. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+dataIdx+'" value="WHITE" />WHITE</label>\n';
  860. if(contentsLoc=='SOM001'){
  861. html += '<em>* 모바일에서 사용</em>';
  862. }
  863. html += ' </td>\n';
  864. html += '</tr>\n';
  865. }
  866. if(contentsLoc=='SBM004' || contentsLoc=='SCM001'){
  867. html += '<tr>\n';
  868. html += ' <th>썸네일 <br>글자 색상</th>\n';
  869. html += ' <td colspan="3">\n';
  870. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+dataIdx+'" value="BLACK" checked="checked"/>BLACK</label>\n';
  871. html += ' <label class="rdoBtn"><input type="radio" name="thumTextColor'+dataIdx+'" value="WHITE" />WHITE</label>\n';
  872. if(contentsLoc=='SCM001'){
  873. html += '<em>* 모바일에서 사용</em>';
  874. }
  875. html += ' </td>\n';
  876. html += '</tr>\n';
  877. }
  878. if(contentsLoc=='SMM005'){
  879. html += '<tr>\n';
  880. html += ' <th>배너유형</th>\n';
  881. html += ' <td class="bannerArea" id="bannerArea'+dataIdx+'">\n';
  882. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+dataIdx+'" value="1" checked="checked" onclick="fnChangeHalfBannerType(this,'+dataIdx+', 1);">1단</label>'; /*onclick="fnChangeBannerType(this,1);"\n*/
  883. html += ' <label class="rdoBtn"><input type="radio" name="bannerType'+dataIdx+'" value="2" onclick="fnChangeHalfBannerType(this,'+dataIdx+', 2);">2단</label>\n';
  884. html += ' </td>\n';
  885. html += '</tr>\n';
  886. var src = '';
  887. html += '<tr name="imgPopRow" id="halfBanner0">\n';
  888. html += ' <th>1단<br>이미지</th>\n';
  889. html += ' <td><div class="uFile w300">\n';
  890. html += ' <input id="filePop_'+dataIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, '+dataIdx+', 0)"/>\n';
  891. html += ' <label for="filePop_'+dataIdx+'" class="uFileLabel">파일선택</label>\n';
  892. html += ' <input type="hidden" name="imgPath" value=""/>\n';
  893. html += ' <input type="hidden" name="newImgFile" value="" />\n';
  894. html += ' </div>\n';
  895. html += ' <div id="imgViewPop_'+dataIdx+'" class=';
  896. if(src!=''){
  897. html += '"on">';
  898. }else{
  899. html += '"off">';
  900. }
  901. html += ' <img id="bannerPreViewUrlPop_'+dataIdx+'" src="'+src+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>\n';
  902. html += ' </div></td>\n';
  903. html += '</tr>\n';
  904. html += '<tr name="linkPopRow" id="link1dep">\n';
  905. html += ' <th>1단 링크<br>(없으면 #)<br>(메인은 /)</th>\n';
  906. html += ' <td><input name="link" type="text" maxLength="200" required="required" data-valid-name="링크" placeholder="외부 URL 입력시 https:// 붙여주세요. ex)https://www.levis-kids.co.kr"></td>\n';
  907. html += ' <td class="aL">\n';
  908. html += ' </td>\n';
  909. html += '</tr>\n';
  910. html += '<tr name="imgPopRow" id="halfBanner1" style="display: none;">\n';
  911. html += ' <th>2단<br>이미지</th>\n';
  912. html += ' <td><div class="uFile w300">';
  913. html += ' <input id="filePop_100'+dataIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, 100'+dataIdx+', 1)"/>\n';
  914. html += ' <label for="filePop_100'+dataIdx+'" class="uFileLabel">파일선택</label>\n';
  915. html += ' <input type="hidden" name="imgPath" value=""/>\n';
  916. html += ' <input type="hidden" name="newImgFile" value="" />\n';
  917. html += ' </div>\n';
  918. html += ' <div id="imgViewPop_100'+dataIdx+'" class=';
  919. if(src!=''){
  920. html += '"on">';
  921. }else{
  922. html += '"off">';
  923. }
  924. html += ' <img id="bannerPreViewUrlPop_100'+dataIdx+'" src="'+src+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>\n';
  925. html += ' </div></td>\n';
  926. html += '</tr>\n';
  927. html += '<tr name="linkPopRow" id="link2dep" style="display: none;">\n';
  928. html += ' <th>2단 링크<br>(없으면 #)<br>(메인은 /)</th>\n';
  929. html += ' <td><input name="link" type="text" maxLength="200" required="required" data-valid-name="링크" placeholder="외부 URL 입력시 https:// 붙여주세요. ex)https://www.levis-kids.co.kr"></td>\n';
  930. html += ' <td class="aL">\n';
  931. html += ' </td>\n';
  932. html += '</tr>\n';
  933. }
  934. html += '</thead><tbody>\n';
  935. html += '</tbody></table>\n';
  936. $("#popSortable").prepend(html);
  937. $("#popSortable").sortable();
  938. $('.schDate').datepicker("destroy");
  939. $('.schDate').datepicker({
  940. changeMonth: true,
  941. changeYear: true,
  942. defaultDate: $('.schDate').val()
  943. });
  944. if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004' || contentsLoc=='SCM001' || contentsLoc == 'SMM002'){
  945. $("#addTitle"+dataIdx).click();
  946. $("#addSubText"+dataIdx).click();
  947. $("#addLink"+dataIdx).click();
  948. $("#addImg"+dataIdx).click();
  949. if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004'){
  950. $("#addMobImg"+dataIdx).click();
  951. }
  952. }
  953. if(contentsLoc=='SGNB002' || contentsLoc=='SMM008' || contentsLoc=='SBM006' || contentsLoc=='SBM014' || contentsLoc=='SBM015' || contentsLoc=='SBM016' || contentsLoc=='SCM005' || contentsLoc=='SOM005' || contentsLoc=='SAD001'){
  954. $("#addTitle"+dataIdx).click();
  955. if(contentsLoc=='SMM008'|| contentsLoc=='SBM006' || contentsLoc=='SBM014' || contentsLoc=='SBM015' || contentsLoc=='SBM016' || contentsLoc=='SCM005' || contentsLoc=='SOM005' || contentsLoc=='SAD001'){
  956. $("#addImg"+dataIdx).click();
  957. }
  958. $("#addLink"+dataIdx).click();
  959. }
  960. if(contentsLoc=='SGNB001'){
  961. $("#addLink"+dataIdx).click();
  962. gagaSn.setContents('#openBannerDesc'+dataIdx, '');
  963. }
  964. if(contentsLoc == 'SBM005'){
  965. $("#addTitle"+dataIdx).click();
  966. $("#addBrandDesc"+dataIdx).click();
  967. $("#addLink"+dataIdx).click();
  968. }
  969. fnResetDispOrd();
  970. tableLen = tableLen+1;
  971. });
  972. var fnVideoFileUpload = function (obj, idx){
  973. var file = obj.files[0];
  974. gagaKollus.upload('Display', file, $(obj).find('input[name=kufKey]'));
  975. }
  976. var fnChangeBannerType = function (obj, idx){
  977. if(idx==1){
  978. $(obj).closest("table").find("[id=bannerImgTr1]").show();
  979. $(obj).closest("table").find("[id=bannerLinkTr1]").show();
  980. $(obj).closest("table").find("[id=bannerImgTr2]").hide();
  981. $(obj).closest("table").find("[id=bannerLinkTr2]").hide();
  982. }else{
  983. $(obj).closest("table").find("[id=bannerImgTr1]").show();
  984. $(obj).closest("table").find("[id=bannerLinkTr1]").show();
  985. $(obj).closest("table").find("[id=bannerImgTr2]").show();
  986. $(obj).closest("table").find("[id=bannerLinkTr2]").show();
  987. }
  988. }
  989. // 몰메인>메인롤링배너 컨텐츠유형 선택시
  990. var fnChangeContentsType = function (obj, idx){
  991. var radioVal = $(obj).closest("td").find("input[name=contentsType"+idx+"]:checked").val();
  992. if(radioVal=='P'){
  993. $("#planArea"+idx+" .inputPlan").show();
  994. $("#planArea"+idx+" .btnPlan").show();
  995. }else{
  996. $("#planArea"+idx).find("input[name=planSq"+idx+"]").val('');
  997. $("#planArea"+idx+" .inputPlan").hide();
  998. $("#planArea"+idx+" .btnPlan").hide();
  999. }
  1000. }
  1001. // 몰메인>메인롤링배너 기획전 조회
  1002. var tableDataId = 0;
  1003. var fnSearchPlan = function (idx){
  1004. cfnOpenPlanPopup('callbackPlanPopup');
  1005. tableDataId = idx;
  1006. }
  1007. var callbackPlanPopup = function (result){
  1008. $("#mcTable"+tableDataId+" .planArea").find("input[name=planSq"+tableDataId+"]").val(result[0].planSq);
  1009. $("#mcTable"+tableDataId).find("tr[name=titlePopRow]").find("input[name=title]").val(result[0].planNm);
  1010. $("#mcTable"+tableDataId).find("tr[name=subTextPopRow]").find("input[name=subText]").val(result[0].dtlTitle1);
  1011. $("#mcTable"+tableDataId).find("tr[name=linkPopRow]").find("input[name=link]").val('/planning/detail/form?planSq='+result[0].planSq);
  1012. $("#mcTable"+tableDataId).find("tr[id=mobImgPop]").find("input[name=imgPath]").val(result[0].mainPimg);
  1013. if(!gagajf.isNull(result[0].mainPimg)){
  1014. let pcImgIdx = $("#mcTable"+tableDataId).find('.pcImg').find('input[name=imgIdx]').attr('pcImg-idx');
  1015. if(contentsLoc=='SOM001'){
  1016. $("#mcTable"+tableDataId).find('.pcImg').find("#bannerPreViewUrlPop_"+pcImgIdx).attr('src', $("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[0].mainPimg);
  1017. $("#mcTable"+tableDataId).find('.pcImg').find("#imgViewPop_"+pcImgIdx).removeClass("off").addClass("on");
  1018. }
  1019. $("#mcTable"+tableDataId).find('.mobImg').find("#bannerPreViewUrlPop_100"+tableDataId).attr('src', $("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[0].mainPimg);
  1020. $("#mcTable"+tableDataId).find('.mobImg').find("#imgViewPop_100"+tableDataId).removeClass("off").addClass("on");
  1021. }
  1022. let stdt = result[0].dispStdt.split(" ");
  1023. let eddt = result[0].dispEddt.split(" ");
  1024. let stdtTime;
  1025. let eddtTime;
  1026. $("#mcTable"+tableDataId).find("[name=dispStdt]").val(stdt[0]);
  1027. $("#mcTable"+tableDataId).find("[name=dispEddt]").val(eddt[0]);
  1028. if(!gagajf.isNull(stdt[1])){
  1029. stdtTime = stdt[1].split(":");
  1030. }
  1031. if(!gagajf.isNull(eddt[1])){
  1032. eddtTime = eddt[1].split(":");
  1033. }
  1034. $("#mcTable"+tableDataId).find("[name=stTimeHour]").val(stdtTime[0]+'시').prop("selected", true);
  1035. $("#mcTable"+tableDataId).find("[name=stTimeMin]").val(stdtTime[1]+'분').prop("selected", true);
  1036. $("#mcTable"+tableDataId).find("[name=edTimeHour]").val(eddtTime[0]+'시').prop("selected", true);
  1037. $("#mcTable"+tableDataId).find("[name=edTimeMin]").val(eddtTime[1]+'분').prop("selected", true);
  1038. }
  1039. // SMM001 데이터 validation 체크
  1040. function smm001DataValidation(){
  1041. var dataBool = true;
  1042. let dupCnt = 0;
  1043. $(".mcTable").each(function(i){
  1044. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1045. var contentsTypeVal = $(this).find("input:radio[name=contentsType"+thisIdx+"]:checked").val();
  1046. var textColorVal = $(this).find("input:radio[name=thumTextColor"+thisIdx+"]:checked").val();
  1047. var imgVal = $(this).find(".pcImgFile").find("input[name=imgPath]").val();
  1048. var newImgVal = $(this).find(".pcImgFile").find("input[name=newImgFile]").val();
  1049. var mImgVal = $(this).find(".mobImgFile").find("input[name=imgPath]").val();
  1050. var mNewImgVal = $(this).find(".mobImgFile").find("input[name=newImgFile]").val();
  1051. if(gagajf.isNull(contentsTypeVal)){
  1052. mcxDialog.alert((i+1)+'번째 컨텐츠 유형을 선택해주세요.');
  1053. dupCnt++;
  1054. return false;
  1055. }
  1056. if(contentsTypeVal=='P'){
  1057. if(gagajf.isNull($(this).find("input[name=planSq"+thisIdx+"]").val())){
  1058. mcxDialog.alert((i+1)+'번째 기획전 번호를 입력해주세요.');
  1059. $(this).find("input[name=planSq"+thisIdx+"]").focus();
  1060. dupCnt++;
  1061. return false;
  1062. }
  1063. }
  1064. if(gagajf.isNull(textColorVal)){
  1065. mcxDialog.alert((i+1)+'번째 썸네일 글자 색상을 선택해주세요.');
  1066. dupCnt++;
  1067. return false;
  1068. }
  1069. if(gagajf.isNull(imgVal) && gagajf.isNull(newImgVal)){
  1070. mcxDialog.alert((i+1)+'번째 이미지를 선택해주세요.');
  1071. dupCnt++;
  1072. return false;
  1073. }
  1074. if(gagajf.isNull(mImgVal) && gagajf.isNull(mNewImgVal)){
  1075. mcxDialog.alert((i+1)+'번째 모바일용 이미지를 선택해주세요.');
  1076. dupCnt++;
  1077. return false;
  1078. }
  1079. });
  1080. // if(!dataBool){
  1081. // return false;
  1082. // }else{
  1083. // return true;
  1084. // }
  1085. if(dupCnt==0){
  1086. return true;
  1087. }
  1088. }
  1089. // 전시 일시 체크
  1090. function dateValidation(){
  1091. var dateBool = true;
  1092. let dupCnt = 0;
  1093. $(".mcTable").each(function(i){
  1094. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1095. var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
  1096. var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
  1097. let fromDate = dispStdt.replace(/[^0-9]/g, '');
  1098. let toDate = dispEddt.replace(/[^0-9]/g, '');
  1099. if(fromDate > toDate){
  1100. mcxDialog.alert((i+1) +"번째 " +"시작일자는 종료일자 보다 클 수 없습니다.");
  1101. $(this).find('input[name=dispStdt]').focus();
  1102. // dateBool = false;
  1103. dupCnt++;
  1104. return false;
  1105. }
  1106. });
  1107. // if(!dateBool){
  1108. // return false;
  1109. // }else{
  1110. // return true;
  1111. // }
  1112. if(dupCnt==0){
  1113. return true;
  1114. }
  1115. }
  1116. // 동영상 확장자 체크
  1117. function videoValidation(){
  1118. var dataBool = true;
  1119. let dupCnt = 0;
  1120. $(".mcTable").each(function(i){
  1121. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1122. if($(this).find("input:radio[name=tvPlayer"+thisIdx+"]:checked").val()=='M' && ($(this).find("input[name=tvMediaKey"+thisIdx+"]").val()==null || $(this).find("input[name=tvMediaKey"+thisIdx+"]").val()=='')){
  1123. var fileName = $(this).find("input:file[name=file]").val();
  1124. var ext = fileName.split('.').pop().toLowerCase();
  1125. if(ext!='mp4'&&ext!='MP4'){
  1126. mcxDialog.alert((i+1) +'번째 ' +ext+'파일은 업로드 하실 수 없습니다.');
  1127. $(this).find("input:radio[name=tvPlayer"+thisIdx+"]").focus();
  1128. dupCnt++;
  1129. return false;
  1130. }
  1131. }
  1132. });
  1133. // if(!dataBool){
  1134. // return false;
  1135. // }else{
  1136. // return true;
  1137. // }
  1138. if(dupCnt==0){
  1139. return true;
  1140. }
  1141. }
  1142. var bannerDataValidation = function (){
  1143. var dataBool = true;
  1144. let dupCnt = 0;
  1145. $(".mcTable").each(function(i) {
  1146. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1147. var bannerType = $(this).find("input[name=bannerType"+thisIdx+"]:checked").val();
  1148. if(bannerType == 1){
  1149. if(gagajf.isNull($("#mcTable"+thisIdx+" #halfBanner0").find("input[name=imgPath]").val())){
  1150. if(gagajf.isNull($("#mcTable"+thisIdx+" #halfBanner0").find("input[name=newImgFile]").val())){
  1151. mcxDialog.alert((i+1) +'번째 컨텐츠 1단 이미지를 선택해주세요.');
  1152. dupCnt++;
  1153. return false;
  1154. }
  1155. }
  1156. if(gagajf.isNull($("#mcTable"+thisIdx+" #link1dep").find("input[name=link]").val())){
  1157. mcxDialog.alert((i+1) +'번째 컨텐츠 1단 링크를 입력해주세요.');
  1158. dupCnt++;
  1159. return false;
  1160. }
  1161. }else{
  1162. if(gagajf.isNull($("#mcTable"+thisIdx+" #halfBanner0").find("input[name=imgPath]").val())){
  1163. if(gagajf.isNull($("#mcTable"+thisIdx+" #halfBanner0").find("input[name=newImgFile]").val())){
  1164. mcxDialog.alert((i+1) +'번째 컨텐츠 1단 이미지를 선택해주세요.');
  1165. dupCnt++;
  1166. return false;
  1167. }
  1168. }
  1169. if(gagajf.isNull($("#mcTable"+thisIdx+" #link1dep").find("input[name=link]").val())){
  1170. mcxDialog.alert((i+1) +'번째 컨텐츠 1단 링크를 입력해주세요.');
  1171. dupCnt++;
  1172. return false;
  1173. }
  1174. if(gagajf.isNull($("#mcTable"+thisIdx+" #halfBanner1").find("input[name=imgPath]").val())){
  1175. if(gagajf.isNull($("#mcTable"+thisIdx+" #halfBanner1").find("input[name=newImgFile]").val())){
  1176. mcxDialog.alert((i+1) +'번째 컨텐츠 2단 이미지를 선택해주세요.');
  1177. dupCnt++;
  1178. return false;
  1179. }
  1180. }
  1181. if(gagajf.isNull($("#mcTable"+thisIdx+" #link2dep").find("input[name=link]").val())){
  1182. mcxDialog.alert((i+1) +'번째 컨텐츠 2단 링크를 입력해주세요.');
  1183. dupCnt++;
  1184. return false;
  1185. }
  1186. }
  1187. });
  1188. if(dupCnt==0){
  1189. return true;
  1190. }
  1191. // if(!dataBool){
  1192. // return false;
  1193. // }else{
  1194. // return true;
  1195. // }
  1196. }
  1197. var dateNullValidation = function (){
  1198. var dateBool = true;
  1199. let dupCnt = 0;
  1200. $(".mcTable").each(function(i){
  1201. if(gagajf.isNull($(this).find("[name=dispStdt]").val())){
  1202. mcxDialog.alert((i+1) +"번째 " +"시작일자를 입력해주세요.");
  1203. $(this).find('input[name=dispStdt]').focus();
  1204. // dateBool = false;
  1205. dupCnt++;
  1206. return false;
  1207. }
  1208. if(gagajf.isNull($(this).find("[name=dispEddt]").val())){
  1209. mcxDialog.alert((i+1) +"번째 " +"종료일자를 입력해주세요.");
  1210. $(this).find('input[name=dispEddt]').focus();
  1211. // dateBool = false;
  1212. dupCnt++;
  1213. return false;
  1214. }
  1215. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1216. var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
  1217. var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
  1218. let fromDate = dispStdt.replace(/[^0-9]/g, '');
  1219. let toDate = dispEddt.replace(/[^0-9]/g, '');
  1220. if(fromDate > toDate){
  1221. mcxDialog.alert((i+1) +"번째 " +"시작일자는 종료일자 보다 클 수 없습니다.");
  1222. $(this).find('input[name=dispStdt]').focus();
  1223. // dateBool = false;
  1224. dupCnt++;
  1225. return false;
  1226. }
  1227. });
  1228. // if(!dateBool){
  1229. // return false;
  1230. // }else{
  1231. // return true;
  1232. // }
  1233. if(dupCnt==0){
  1234. return true;
  1235. }
  1236. }
  1237. /**
  1238. * 임시저장
  1239. */
  1240. var dataArr = [];
  1241. $("#btnPopSave").on("click", function (){
  1242. if(contentsLoc != 'SMM005'){
  1243. if (!gagajf.checkRequired("#popSortable")) {
  1244. return;
  1245. }
  1246. }else{
  1247. // 전시일시 체크
  1248. if(!dateNullValidation()){
  1249. return false;
  1250. }
  1251. }
  1252. // 전시일시 체크
  1253. if(!dateValidation()){
  1254. return false;
  1255. }
  1256. if(contentsLoc=='SMM011' || contentsLoc=='SBM012'){
  1257. if(!videoValidation()){
  1258. return false;
  1259. }
  1260. }
  1261. if(contentsLoc=='SMM001' || contentsLoc=='SOM001'){
  1262. if(!smm001DataValidation()){
  1263. return false;
  1264. }
  1265. }
  1266. if(contentsLoc == 'SMM005'){
  1267. if(!bannerDataValidation()){
  1268. return false;
  1269. }
  1270. }
  1271. var titleBool = true;
  1272. $("#popSortable").find('input[name=title]').each(function(idx, title) {
  1273. if ($(title).val()==''){
  1274. titleBool = false;
  1275. $(title).focus();
  1276. gagajf.alertMessage($(title), 'input');
  1277. return;
  1278. }
  1279. });
  1280. if(!titleBool){
  1281. return false;
  1282. }
  1283. dataArr = [];
  1284. $("#popSortable table").each(function(){
  1285. var newImgFileArr = [];
  1286. var imgPath1 = '';
  1287. var imgPath2 = '';
  1288. var imgPath3 = '';
  1289. var imgPath4 = '';
  1290. var strVar1 = '';
  1291. var strVar2 = '';
  1292. var strVar3 = '';
  1293. var strVar4 = '';
  1294. var strVar5 = '';
  1295. var strVar6 = '';
  1296. var strVar7 = '';
  1297. var strVar8 = '';
  1298. var strTitle1 = '';
  1299. var strTitle2 = '';
  1300. var strTitle3 = '';
  1301. var strTitle4 = '';
  1302. var subText1 = '';
  1303. var subText2 = '';
  1304. var subText3 = '';
  1305. var subText4 = '';
  1306. var contentsType = '';
  1307. var useYn = 'Y';
  1308. var html = '';
  1309. var i = 1;
  1310. $(this).find('input[name=imgPath]').each(function(){
  1311. eval("imgPath" + i + "='"+$(this).val()+"'");
  1312. i++;
  1313. });
  1314. $(this).find('input[name=newImgFile]').each(function(){
  1315. newImgFileArr.push($(this).val());
  1316. });
  1317. i = 1;
  1318. $(this).find('input[name=title]').each(function(){
  1319. var title = $(this).val().replace(/[\']/gi, "\\'");
  1320. eval("strTitle" + i + "='"+title+"'");
  1321. i++;
  1322. });
  1323. i = 1;
  1324. $(this).find('input[name=link]').each(function(){
  1325. _mall = [[${@environment.getProperty('domain.front')}]];
  1326. var val = $(this).val();
  1327. val = val.replace('https:'+_mall, '');
  1328. val = val.replace('http:'+_mall, '');
  1329. val = val.replace(_mall, '');
  1330. eval("strVar" + i + "='"+val+"'");
  1331. i++;
  1332. });
  1333. i = 1;
  1334. $(this).find('input[name=subText]').each(function(){
  1335. var subText = $(this).val().replace(/[\']/gi, "\\'");
  1336. eval("subText" + i + "='"+subText+"'");
  1337. i++;
  1338. });
  1339. if(contentsLoc=='SBM005'){
  1340. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1341. subText1 = $(this).find("textarea[id=brandDesc"+thisIdx+"]").val();
  1342. }
  1343. if(contentsLoc=='SMM011' || contentsLoc=='SBM012' || contentsLoc=='SBMM012'){
  1344. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1345. strVar1 = $(this).find("input:radio[name=tvPlayer"+thisIdx+"]:checked").val();
  1346. strVar2 = $(this).find("input[name=tvMediaKey"+thisIdx+"]").val();
  1347. strVar3 = $(this).find("input[name=kufKey]").val();
  1348. }
  1349. var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
  1350. var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
  1351. var dispOrd = $(this).find("[name=dispOrd]").val();
  1352. if(contentsLoc=='SBM004' || contentsLoc=='SBM005' || contentsLoc=='SBMM004' || contentsLoc=='SBMM005'){
  1353. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1354. contentsType = $(this).find("input:radio[name=pageTarget"+thisIdx+"]:checked").val();
  1355. }
  1356. if(contentsLoc=='SGNB001'){
  1357. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1358. contentsType = $(this).find("input:radio[name=cateType"+thisIdx+"]:checked").val();
  1359. strVar5 = $(this).find("input[name=gnbBgColor"+thisIdx+"]").val();
  1360. strVar6 = $(this).find("input[name=gnbTextColor"+thisIdx+"]").val();
  1361. strVar8 = $(this).find("input:radio[name=todayYn"+thisIdx+"]:checked").val();
  1362. if(contentsType=='OPEN'){
  1363. strVar7 = $(this).find("input:radio[name=openBannerType"+thisIdx+"]:checked").val();
  1364. }else{
  1365. strVar7 = '';
  1366. }
  1367. if($(this).find("input:radio[name=openBannerType"+thisIdx+"]:checked").val() == 'HTML'){
  1368. html = $(this).find("textarea[name=openBannerDesc"+thisIdx+"]").val();
  1369. }
  1370. }
  1371. if(contentsLoc=='SGNB002'){
  1372. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1373. contentsType = $(this).find("input:radio[name=cateType"+thisIdx+"]:checked").val();
  1374. }
  1375. if(contentsLoc=='SMM001' || contentsLoc=='SOM001'){
  1376. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1377. strVar5 = $(this).find("input:radio[name=contentsType"+thisIdx+"]:checked").val();
  1378. strVar6 = $(this).find("input[name=planSq"+thisIdx+"]").val();
  1379. strVar7 = $(this).find("input:radio[name=thumTextColor"+thisIdx+"]:checked").val();
  1380. }
  1381. if(contentsLoc=='SBM004' || contentsLoc=='SCM001'){
  1382. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1383. strVar7 = $(this).find("input:radio[name=thumTextColor"+thisIdx+"]:checked").val();
  1384. }
  1385. if(contentsLoc=='SMM005'){
  1386. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1387. contentsType = $(this).find("input:radio[name=bannerType"+thisIdx+"]:checked").val();
  1388. }
  1389. if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
  1390. useYn = $(this).find("input:radio[name=dispYn]:checked").val();
  1391. }
  1392. if(contentsLoc=='SCM003'){
  1393. strVar1 = $(this).find("input:radio[name=dispCnt]:checked").val();
  1394. }
  1395. var data = {cateNo : cateNo
  1396. , contentsLoc : contentsLoc
  1397. , contentsType : contentsType
  1398. , dispStdt : dispStdt
  1399. , dispEddt : dispEddt
  1400. , newImgFileArr : newImgFileArr
  1401. , imgPath1 : imgPath1
  1402. , imgPath2 : imgPath2
  1403. , imgPath3 : imgPath3
  1404. , imgPath4 : imgPath4
  1405. , strVar1 : strVar1
  1406. , strVar2 : strVar2
  1407. , strVar3 : strVar3
  1408. , strVar4 : strVar4
  1409. , strVar5 : strVar5
  1410. , strVar6 : strVar6
  1411. , strVar7 : strVar7
  1412. , strVar8 : strVar8
  1413. , strTitle1 : strTitle1
  1414. , strTitle2 : strTitle2
  1415. , strTitle3 : strTitle3
  1416. , strTitle4 : strTitle4
  1417. , subText1 : subText1
  1418. , subText2 : subText2
  1419. , subText3 : subText3
  1420. , subText4 : subText4
  1421. , useYn : useYn
  1422. , dispOrd : dispOrd
  1423. , brandGroupNo : brandGroupNo
  1424. , html : html
  1425. };
  1426. dataArr.push(data);
  1427. });
  1428. if(dataArr.length==0){
  1429. var data = {cateNo : cateNo
  1430. , contentsLoc : contentsLoc
  1431. , brandGroupNo : brandGroupNo
  1432. };
  1433. dataArr.push(data);
  1434. }else{
  1435. var dataArrSort = [];
  1436. dataArr.forEach(function(item, index){
  1437. if(dataArr[index].dispOrd>0){
  1438. for(var i=1; i<dataArr.length; i++){
  1439. if(i>index){
  1440. if(dataArr[index].dispOrd==dataArr[i].dispOrd){
  1441. dataArr[i].dispOrd = Number(dataArr[i].dispOrd) + 1;
  1442. }
  1443. }
  1444. }
  1445. }
  1446. });
  1447. dataArr.forEach(function(item, index){
  1448. if(dataArr[index].dispOrd != ''){
  1449. dataArrSort[dataArr[index].dispOrd-1] = item;
  1450. }
  1451. });
  1452. dataArr.forEach(function(item, index){
  1453. if(dataArr[index].dispOrd == ''){
  1454. var empty = false;
  1455. for(var i=0; i<dataArrSort.length; i++){
  1456. if(typeof dataArrSort[i] == 'undefined'){
  1457. dataArrSort[i] = item;
  1458. empty = true;
  1459. break;
  1460. }
  1461. };
  1462. if(!empty){
  1463. dataArrSort.push(item);
  1464. }
  1465. }
  1466. });
  1467. dataArr = dataArrSort;
  1468. }
  1469. var jsonData = JSON.stringify(dataArr);
  1470. // console.log('jsonData::'+jsonData);
  1471. mcxDialog.confirm('컨텐츠를 저장 하시겠습니까?', {
  1472. cancelBtnText: "취소",
  1473. sureBtnText: "확인",
  1474. sureBtnClick: function(){
  1475. gagajf.ajaxJsonSubmit('/display/contents/preview/save', jsonData, fnGetContentsPreviewList);
  1476. }
  1477. });
  1478. });
  1479. /**
  1480. * 파일첨부
  1481. */
  1482. var fnPopFileUpload = function (obj, ind){
  1483. var file = obj.files[0];
  1484. file.name = 'test';
  1485. if (typeof(file) == 'undefined'){
  1486. return;
  1487. }
  1488. console.log('ind>>>>'+ind);
  1489. // 파일 업로드
  1490. gagajf.ajaxFileUpload('/common/file/upload?subDir=/contents'
  1491. , file
  1492. , function(result) {
  1493. $(obj).closest('div').find('input:hidden[name=newImgFile]').val(result.newFileName);
  1494. $("#bannerPreViewUrlPop_"+ind).attr('src', $("#uploadDefaultUrlPop").val()+result.newFileName);
  1495. $("#imgViewPop_"+ind).removeClass("off").addClass("on");
  1496. }
  1497. , 'image'
  1498. );
  1499. }
  1500. /**
  1501. * GNB배너 파일 첨부
  1502. */
  1503. var fnGnbFileUpload = function (obj, ind, num){
  1504. var file = obj.files[0];
  1505. file.name = 'test';
  1506. if (typeof(file) == 'undefined'){
  1507. return;
  1508. }
  1509. var $obj = $(obj);
  1510. console.log('data-id::'+$("#mcTable"+ind).find('input[name=tableIdx]').val());
  1511. // 파일 업로드
  1512. gagajf.ajaxFileUpload('/common/file/upload?subDir=/contents'
  1513. , file
  1514. , function(result) {
  1515. $(obj).closest('div').find('input:hidden[name=newImgFile]').val(result.newFileName);
  1516. $("#bannerPreViewUrlPop_"+ind).attr('src', $("#uploadDefaultUrlPop").val()+result.newFileName);
  1517. $("#imgViewPop_"+ind).removeClass("off").addClass("on");
  1518. }
  1519. , 'image'
  1520. );
  1521. }
  1522. /**
  1523. * 링크추가
  1524. */
  1525. var fnAddLinkPopRow = function (param){
  1526. var val = typeof param=='object'?'#':param;
  1527. var html = '<tr name="linkPopRow">';
  1528. html += '<th>링크 (없으면 #)<br>(메인은 /)</th>';
  1529. html += '<td><input name="link" type="text" maxlength="200" required="required" data-valid-name="링크" placeholder="외부 URL 입력시 https:// 붙여주세요. ex)https://www.levis-kids.co.kr" value="'+val+'"/></td>';
  1530. if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004' && contentsLoc!='SMM005'){
  1531. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  1532. }
  1533. html += '</tr>';
  1534. if(typeof param == 'object'){
  1535. if(contentsLoc=='SMM005'){
  1536. if($(param).closest("table").find("tbody").find("tr[name=linkPopRow]").length>1){
  1537. mcxDialog.alert("링크는 최대 2개까지 등록 가능합니다");
  1538. return;
  1539. }
  1540. }else{
  1541. if($(param).closest("table").find("tbody").find("tr[name=linkPopRow]").length>0){
  1542. mcxDialog.alert("링크는 1개까지 등록 가능합니다");
  1543. return;
  1544. }
  1545. }
  1546. $(param).closest("table").find("tbody").append(html);
  1547. }else{
  1548. return html;
  1549. }
  1550. }
  1551. /**
  1552. * 서브텍스트추가
  1553. */
  1554. var fnAddSubTextPopRow = function (param){
  1555. var val = typeof param=='object'?'':param;
  1556. if(gagajf.isNull(val)){
  1557. val = '';
  1558. }
  1559. var html = '<tr name="subTextPopRow">'
  1560. html += '<th>서브텍스트</th>';
  1561. html += '<td><input type="text" name="subText" maxlength="200" value="'+val+'"/></td>';
  1562. if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004'){
  1563. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  1564. }
  1565. html += '</tr>';
  1566. if(typeof param == 'object'){
  1567. if($(param).closest("table").find("tbody").find("tr[name=subTextPopRow]").length>0){
  1568. mcxDialog.alert("서브텍스트는 1개까지 등록 가능합니다");
  1569. return;
  1570. }
  1571. $(param).closest("table").find("tbody").append(html);
  1572. }else{
  1573. return html;
  1574. }
  1575. }
  1576. /**
  1577. * 브랜드 소개추가
  1578. */
  1579. var brandDescIndex = 0;
  1580. var fnAddBrandDescRow = function (param , gubun, idx){
  1581. if(gubun=='add'){
  1582. var thisIdx = $("#mcTable"+idx).find("input[name=tableIdx]").val();
  1583. brandDescIndex = thisIdx;
  1584. }
  1585. var val = typeof param=='object'?'':param;
  1586. if(!gagajf.isNull()){
  1587. val = val.replaceAll('&lt;','<').replaceAll('&gt;', '>').replaceAll('&quot;', '"');
  1588. }
  1589. var html = '<tr name="subTextPopRow">'
  1590. html += '<th>브랜드소개';
  1591. html += '<br/>';
  1592. html += '<span id="brandDescContent'+brandDescIndex+'">0</span>/4,000Byte';
  1593. html += '</th>';
  1594. html += '<td>';
  1595. html += '<textarea class="textareaR4" style="resize: none;" name="subText" id="brandDesc'+brandDescIndex+'" onkeyup="cfnGetTextLength(this, 4000, $(\'#brandDescContent'+brandDescIndex+'\'));" >'+val+'</textarea>';
  1596. html += '</td>';
  1597. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  1598. html += '</tr>';
  1599. if(typeof param == 'object'){
  1600. brandDescIndex++;
  1601. if($(param).closest("table").find("tbody").find("tr[name=subTextPopRow]").length>0){
  1602. mcxDialog.alert("브랜드소개는 1개까지 등록 가능합니다");
  1603. return;
  1604. }
  1605. $(param).closest("table").find("tbody").append(html);
  1606. }else{
  1607. brandDescIndex++;
  1608. return html;
  1609. }
  1610. }
  1611. /**
  1612. * 이미지 추가
  1613. */
  1614. var imgIndex = 0;
  1615. var fnAddImgPopRow = function (param, idx){
  1616. var src = '';
  1617. var imgPath = '';
  1618. if(typeof param!='object'){
  1619. src = $("#uploadDefaultUrlPop").val().replace('/contents/', '')+param;
  1620. imgPath = param;
  1621. }
  1622. var html = '<tr class="pcImg" name="imgPopRow">';
  1623. html += '<input type="hidden" name="imgIdx" pcImg-idx="'+imgIndex+'" />';
  1624. if(idx>1){
  1625. if(contentsLoc != 'SMM005'){
  1626. html += '<th>모바일용 이미지';
  1627. }else{
  1628. html += '<th>이미지';
  1629. }
  1630. }else{
  1631. html += '<th>이미지';
  1632. }
  1633. html += '</th>';
  1634. html += '<td><div class="uFile w300';
  1635. if(idx>1){
  1636. html += ' mobImgFile';
  1637. }else{
  1638. html += ' pcImgFile';
  1639. }
  1640. html +=' ">';
  1641. html += '<input id="filePop_'+imgIndex+'" name="file" type="file" class="uFileInput w300" onchange="fnPopFileUpload(this, '+imgIndex+')"/>';
  1642. html += '<label for="filePop_'+imgIndex+'" class="uFileLabel">파일선택</label>';
  1643. html += '<input type="hidden" name="imgPath" value="'+imgPath+'"/>';
  1644. html += '<input type="hidden" name="newImgFile" value="" />';
  1645. html += '</div>';
  1646. html += '<div id="imgViewPop_'+imgIndex+'" class=';
  1647. if(src!='' && imgPath !=''){
  1648. html += '"on">';
  1649. }else{
  1650. html += '"off">';
  1651. }
  1652. html += '<img id="bannerPreViewUrlPop_'+imgIndex+'" src="'+src+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
  1653. html += '</div></td>';
  1654. if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004' && contentsLoc!='SMM005'){
  1655. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  1656. }
  1657. html += '</tr>';
  1658. if(typeof param == 'object'){
  1659. if(contentsLoc=='SMM005'){
  1660. if($(param).closest("table").find("tbody").find("tr[name=imgPopRow]").length>1){
  1661. mcxDialog.alert("이미지는 최대 2개까지 등록 가능합니다");
  1662. return;
  1663. }
  1664. }else{
  1665. if(contentsLoc=='SMM001' || contentsLoc=='SBM004'|| contentsLoc=='SOM001'){
  1666. }else{
  1667. if($(param).closest("table").find("tbody").find("tr[name=imgPopRow]").length>0){
  1668. mcxDialog.alert("이미지는 1개까지 등록 가능합니다");
  1669. return;
  1670. }
  1671. }
  1672. }
  1673. imgIndex++;
  1674. $(param).closest("table").find("tbody").append(html);
  1675. return html;
  1676. }else{
  1677. imgIndex++;
  1678. return html;
  1679. }
  1680. }
  1681. /**
  1682. * 모바일용 이미지 추가
  1683. */
  1684. var imgMobIndex = 0;
  1685. var fnAddMobImgPopRow = function (param , idx){
  1686. imgMobIndex = idx;
  1687. var src = '';
  1688. var imgPath = '';
  1689. if(typeof param!='object'){
  1690. src = $("#uploadDefaultUrlPop").val().replace('/contents/', '')+param;
  1691. imgPath = param;
  1692. }
  1693. var html = '<tr class="mobImg" name="imgPopRow" id="mobImgPop">';
  1694. html += '<th>모바일용 이미지';
  1695. html += '</th>';
  1696. html += '<td><div class="uFile w300 mobImgFile">';
  1697. html += '<input id="filePop_100'+imgMobIndex+'" name="file" type="file" class="uFileInput w300" onchange="fnPopFileUpload(this, 100'+imgMobIndex+')"/>';
  1698. html += '<label for="filePop_100'+imgMobIndex+'" class="uFileLabel">파일선택</label>';
  1699. html += '<input type="hidden" name="imgPath" value="'+imgPath+'"/>';
  1700. html += '<input type="hidden" name="newImgFile" value="" />';
  1701. html += '</div>';
  1702. html += '<div id="imgViewPop_100'+imgMobIndex+'" class=';
  1703. if(src!=''){
  1704. html += '"on">';
  1705. }else{
  1706. html += '"off">';
  1707. }
  1708. html += '<img id="bannerPreViewUrlPop_100'+imgMobIndex+'" src="'+src+'" style="height:100px; max-width:500px;" onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
  1709. html += '</div></td>';
  1710. if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004'){
  1711. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  1712. }
  1713. html += '</tr>';
  1714. if(typeof param == 'object'){
  1715. if(contentsLoc=='SMM005'){
  1716. if($(param).closest("table").find("tbody").find("tr[name=imgPopRow]").length>1){
  1717. mcxDialog.alert("이미지는 최대 2개까지 등록 가능합니다");
  1718. return;
  1719. }
  1720. }else{
  1721. if(contentsLoc=='SMM001' || contentsLoc=='SBM004'|| contentsLoc=='SOM001'){
  1722. }else{
  1723. if($(param).closest("table").find("tbody").find("tr[name=imgPopRow]").length>0){
  1724. mcxDialog.alert("이미지는 1개까지 등록 가능합니다");
  1725. return;
  1726. }
  1727. }
  1728. }
  1729. imgMobIndex++;
  1730. $(param).closest("table").find("tbody").append(html);
  1731. }else{
  1732. imgMobIndex++;
  1733. return html;
  1734. }
  1735. }
  1736. /**
  1737. * 타이틀추가
  1738. */
  1739. var fnAddTitlePopRow = function (param){
  1740. var val = typeof param=='object'?'':param;
  1741. var html = '<tr name="titlePopRow">';
  1742. html += '<th>타이틀</th>';
  1743. html += '<td><input name="title" type="text" maxlength="200" data-valid-name="타이틀" value="'+val+'"/></td>';
  1744. if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004'){
  1745. html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
  1746. }
  1747. html += '</tr>';
  1748. if(typeof param == 'object'){
  1749. if($(param).closest("table").find("tbody").find("tr[name=titlePopRow]").length>0){
  1750. mcxDialog.alert("타이틀은 1개까지 등록 가능합니다");
  1751. return;
  1752. }
  1753. $(param).closest("table").find("tbody").append(html);
  1754. }else{
  1755. return html;
  1756. }
  1757. }
  1758. // 컨텐츠 행삭제
  1759. var fnDeleteContentsRow = function (obj){
  1760. mcxDialog.confirm('삭제시 전시순서가 초기화됩니다. 삭제하시겠습니까?', {
  1761. cancelBtnText: "취소",
  1762. sureBtnText: "확인",
  1763. sureBtnClick: function(){
  1764. $(obj).closest("table").remove();
  1765. fnResetDispOrd();
  1766. }
  1767. });
  1768. }
  1769. // 행삭제
  1770. var fnDeleteTrRow = function (obj){
  1771. $(obj).closest("tr").remove();
  1772. }
  1773. // 컨텐츠 추가 날짜 설정
  1774. var fnCreateTimeOption = function(val, sel) {
  1775. var html = '';
  1776. for(var i=0; i<val; i++){
  1777. var time = 0;
  1778. if(i<10){
  1779. time = '0'+i;
  1780. }else {
  1781. time = i;
  1782. }
  1783. var select = false;
  1784. if(sel==time){
  1785. select = true;
  1786. }
  1787. if(val==24){
  1788. time += '시';
  1789. }else if(val==60){
  1790. time += '분';
  1791. }
  1792. html += '<option value="'+time+'"';
  1793. if(select){
  1794. html += 'selected="selected"';
  1795. }
  1796. html += '>'+time+'</option>';
  1797. }
  1798. return html;
  1799. }
  1800. // 동영상파일 선택 시
  1801. $('#popSortable input[name=file]').on('change', function() {
  1802. var file = this.files[0];
  1803. gagaKollus.upload('Display', file, $('input[name=kufKey]'));
  1804. });
  1805. // 창닫기
  1806. var fnMainContentsPopupFormClose = function (){
  1807. uifnPopupClose('popupMainContents');
  1808. }
  1809. var fnResetDispOrd = function (){
  1810. $('.mcTable').each(function (idx){
  1811. $(this).find('input[name=dispOrd]').val(idx+1);
  1812. if(contentsLoc=='SBM005'){
  1813. var thisIdx = $(this).find("input[name=tableIdx]").val();
  1814. $(this).find('textarea[name=subText]').attr('id','brandDesc'+thisIdx);
  1815. }
  1816. });
  1817. }
  1818. let fnBrandDesc = function (){
  1819. $(".mcTable").each(function (idx){
  1820. console.log('idx:'+idx);
  1821. if(!gagajf.isNull($(this).find('textarea[name=subText]').val())){
  1822. console.log('idx:>'+idx);
  1823. cfnGetTextLength($(this).find('textarea[name=subText]'), 4000, $('#brandDescContent'+idx));
  1824. }
  1825. });
  1826. }
  1827. var fnChangeHalfBannerType = function (obj, tableNum, num){
  1828. if(num==1){
  1829. $("#mcTable"+tableNum+" #halfBanner1").find("input[name=imgPath]").val('');
  1830. $("#mcTable"+tableNum+" #halfBanner1").find("input[name=newImgFile]").val('');
  1831. $("#mcTable"+tableNum+" #halfBanner1 #imgViewPop_100"+tableNum).removeClass("on");
  1832. $("#mcTable"+tableNum+" #halfBanner1 #bannerPreViewUrlPop_100"+tableNum).attr("src","");
  1833. $("#mcTable"+tableNum+" #halfBanner1 .uFileLabel").text('');
  1834. $("#mcTable"+tableNum+" #link2dep").find("input[name=link]").val('');
  1835. $("#mcTable"+tableNum+" #halfBanner1").hide();
  1836. $("#mcTable"+tableNum+" #link2dep").hide();
  1837. }else{
  1838. $("#mcTable"+tableNum+" #halfBanner1").show();
  1839. $("#mcTable"+tableNum+" #link2dep").show();
  1840. }
  1841. }
  1842. $(document).ready(function() {
  1843. $("#popTitle").text("["+contentsLoc+"] "+gagaAgGrid.lookupValue(contentsLocArr, contentsLoc));
  1844. $("#popSortable").disableSelection();
  1845. fnGetContentsPreviewList();
  1846. $("#popSortable").sortable({
  1847. stop: function(event, ui) {
  1848. //fnResetTabIdx();
  1849. fnResetDispOrd();
  1850. }
  1851. });
  1852. });
  1853. /*]]>*/
  1854. </script>
  1855. </html>