1var isAosBlock = false; 2var isgalleryView = false; 3var pageLoad = true; 4var menuClickMove = false; 5 6var RENDER = { 7 init: function (property) { 8 var History = window.History; 9 var b = property, 10 URI = (b.PUBLISH) ? '/' : '/render', 11 param = (b.PUBLISH) ? '/publish/true' : '', 12 selectEL = '', 13 galleryEL = new Object(); 14 var CERT_USERID = ''; 15 16 this.b = b; 17 this.b.pageContent = {}; 18 this.b.pageContent[b.PAGE] = b.INITPAGE; 19 this.b.pageConf = {}; 20 this.b.pageConf[b.PAGE] = b.PAGECONF || { 21 islock: b.ISLOCK, 22 overlay: b.HEADER, 23 pageScript: '', 24 meta: null, 25 og_others: null 26 }; 27 this.b.pageBlocksType = {}; 28 this.b.URL = URI; 29 this.b.param = param; 30 this.history = window.History; 31 this.b.MENULIST = []; 32 this.galleryEL = galleryEL; 33 this.b.certOpenChk = false; 34 _this = this; 35 36 var applyPageConf = function(data) { 37 if(!data) return true; 38 if(typeof data.url != 'undefined' && data.url) { 39 location.href = data.url; 40 return false; 41 } 42 43 if(typeof data.islock != 'undefined') b.ISLOCK = data.islock; 44 if(typeof data.overlay != 'undefined') b.HEADER = (data.overlay) ? true : false; 45 46 var isSidebar = $('.el-menu > header').hasClass('sidebar'); 47 var isHeaderOldVer = !$.clnav.check(); 48 if(isHeaderOldVer) { 49 if(b.HEADER && !b.VIEW && !isSidebar) { 50 $('.header-empty').css('height',0); 51 $('.header.el-menu').removeClass('fixed'); 52 $('header.navbar').addClass('transparent'); 53 } else { 54 $('header.navbar').removeClass('transparent'); 55 } 56 } 57 58 if(typeof data.pageScript != 'undefined') { 59 $('#pageScript').remove(); 60 if(data.pageScript) $('body').append(data.pageScript); 61 } 62 if(data.meta != null) { 63 $.each(data.meta, function(k,v) { 64 $('meta[name="' + k + '"]').attr('content',v); 65 if(k == 'title') { 66 $(document).prop('title', htmlspecialchars_decode(v)); 67 } 68 }); 69 } 70 if(data.og_others != null) { 71 $.each(data.og_others, function(ok,ov) { 72 var og_property = ok.replace(/\_\_/gi,':'); 73 if(ov != '') { 74 if($('meta[property="' + og_property + '"]').length > 0) $('meta[property="' + og_property + '"]').attr('content',ov); 75 else $('meta[property^="og:"]').eq($('meta[property^="og:"]').length - 1).after('<meta property="' + og_property + '" content="' + ov + '" data-dynamic="true"/>'); 76 } else { 77 if($('meta[property="' + og_property + '"]').length > 0) $('meta[property="' + og_property + '"]').remove(); 78 } 79 }); 80 } 81 82 return true; 83 }; 84 85 var getPageContentsUrl = function(page) { 86 var contentsParam = param; 87 contentsParam = (page == 'index,template' && contentsParam.indexOf('/org/') == -1) ? contentsParam + '/org/' + page : contentsParam; 88 contentsParam = (b.PUBLISH) ? contentsParam : contentsParam + '/render/true'; 89 return '/template/contents/sid/' + b.SID + '/page/' + encodeURIComponent(page) + contentsParam; 90 }; 91 92 var isRenderFormSubmitAllowed = function() { 93 if(window.location.pathname.match(/^\/render(\/|$)/) === null) return true; 94 return (b.PREVIEW_FORM_SUBMIT === true || b.PREVIEW_FORM_SUBMIT === 'true'); 95 }; 96 97 var cachePageContentsResult = function(page, data) { 98 if(!data) return; 99 if(data.conf) b.pageConf[page] = data.conf; 100 if(typeof data.blocks_type != 'undefined') b.pageBlocksType[page] = data.blocks_type; 101 if(typeof data.contents != 'undefined' && page != 'index,template') b.pageContent[page] = data.contents; 102 if(data.initContent !== undefined) property.INITPAGE = JSON.parse(data.initContent); 103 }; 104 105 var loadPageMoveConf = function(page, isForumView) { 106 var deferred = $.Deferred(); 107 if(b.pageConf.hasOwnProperty(page)) { 108 deferred.resolve(b.pageConf[page]); 109 return deferred.promise(); 110 } 111 112 if(!isForumView) { 113 $.ajax({ 114 url: getPageContentsUrl(page), 115 data: { siteum: b.SITEUM }, 116 dataType: 'json', 117 type: 'GET', 118 async: true, 119 cache: false, 120 success: function(data) { 121 if(typeof data.url != 'undefined' && data.url) { 122 deferred.resolve(data); 123 return false;
124 } 125 if(typeof data.error != 'undefined' && data.error) { 126 deferred.resolve({}); 127 return false; 128 } 129 130 cachePageContentsResult(page, data); 131 deferred.resolve(data.conf || {}); 132 }, 133 error: function() { 134 deferred.reject(); 135 } 136 }); 137 } else { 138 $.ajax({ 139 url: '/template/conf', 140 data: { sid : b.SID, page : page, publish : b.PUBLISH, siteum : b.SITEUM }, 141 dataType: 'json', 142 type: 'POST', 143 async: true, 144 cache: false, 145 success: function(data) { 146 if(!(typeof data.url != 'undefined' && data.url)) b.pageConf[page] = data; 147 deferred.resolve(data); 148 }, 149 error: function() { 150 deferred.reject(); 151 } 152 }); 153 } 154 155 return deferred.promise(); 156 }; 157 $(window).ready(function() { 158 if(b.VALIDPLAN && $.inArray(b.VALIDTYPE, ['BN','SM']) > -1 && (b.CERT_USE == 'Y' || b.CERT_USE == 'A')) { 159 if(b.CERT_USE == 'Y') { 160 if(b.UMEMBER.check_login == true) isUserCertified(history); 161 } else { 162 isUserCertified(history); 163 } 164 } 165 166 if(!b.VALIDPLAN && b.CERT_USE == 'A') { 167 isUserCertified(history); 168 } 169 170 var checkIOS = ((navigator.userAgent.indexOf('iPhone') != -1) || (navigator.userAgent.indexOf('iPod') != -1) || (navigator.userAgent.indexOf('iPad') != -1)) ? true : false; 171 if(checkIOS) $('body').addClass('ios-bg-attachment-scroll'); 172 173 (function(window){ 174 var History = window.History; 175 if ( !History.enabled ) { 176 return false; 177 } 178 179 History.Adapter.bind(window,'statechange',function(){ 180 $('.error_404.new_design').remove(); 181 182 var State = History.getState(), 183 cUrl = new getLocation(State.url), 184 loc = cUrl.pathname, 185 uri = (b.PUBLISH) ? loc.replace(/^\//,'').replace(/\/$/,'') : loc.replace(/\/*(render)\/*/,''), 186 uri = uri.replace('/view/',','), 187 s = uri.split(','), 188 bookmark = ''; 189 190 if (b && b.MODOO === true) { 191 const inSubmenu = Array.isArray(b.SMENU) && 192 b.SMENU.some(menu => 193 Array.isArray(menu.children) && 194 menu.children.some(child => 195 child.name.replace(/ /g, "-") === decodeURI(uri) 196 ) 197 ); 198 if (inSubmenu) { 199 //console.log('íì¬ íì´ì§ ìë¸ë©ë´ ì¡´ì¬'); 200 $('.cl-nav-section.sub').show(); 201 } else { 202 //console.log('íì¬ íì´ì§ ìë¸ë©ë´ ìì'); 203 $('.cl-nav-section.sub').hide(); 204 } 205 } 206 207 if(uri.match(/^(psearch|\_checkout|\_forgot|\_mypayment|\_lang)\//gi) !== null) { 208 location.href = '/'+uri; 209 return false; 210 } 211 212 if(uri.match(/^_product\//gi) !== null) { 213 uri = (b.PUBLISH) ? uri : 'render/' + uri; 214 location.href = '/'+uri; 215 return false; 216 } 217 // naverLogCallback(function() { 218 // if("naver_log" in b.SETTINGS) { 219 // if (!wcs_add) var wcs_add={}; 220 // wcs_add["wa"] = b.SETTINGS.naver_log; 221 // if (!_nasa) var _nasa={}; 222 // wcs_do(_nasa); 223 // } 224 // }); 225 if($('.cl-flat-modal').length > 0) $('.cl-flat-modal .modal').modal('hide'); 226 227 if(uri == b.URL || uri == '') { 228 uri = (b.ONE) ? 'index' : b.MENULINK[0]; 229 } 230 231 (typeof s[1] != 'undefined') ? b.VIEW = s[1] : b.VIEW = ''; 232 b.PAGE = decodeURI(uri); 233 if(b.PAGE.indexOf('@')>-1) { 234 var tmp = b.PAGE.split('@'); 235 b.PAGE = tmp[0]; 236 bookmark = tmp[1]; 237 } 238 239 if((b.PAGE).indexOf(',')>-1) { 240 var tmp = b.PAGE.split(','); 241 b.VIEW = tmp[1]; 242 } 243 244 $('.el-footer').css('visibility', 'hidden'); 245 $.processON(); 246 247 getParent(s[0],b.VIEW,b.PAGE); 248 var pageMove = true; 249 250 if(b.VIEW && s[0] != 'forum' && s[0] != 'psearch' && b.COUNT == 0 && !b.PUBLISH) { 251 $(this).showModalFlat('INFORMATION','Page not found',true,false,'','ok'); 252 History.back(); 253 pageMove = false;
254 } 255 if(pageMove) { 256 clearDsgnbody(); 257 pageLoad = true; 258 var is_templates = checkTemplateSite(b.SID), 259 menuVer06 = ($('.el-menu .cl-menu-option').length > 0) ? true : false; 260 261 var menu_name = (b.VIEW) ? b.PAGE.split(',') : [b.PAGE], 262 tmp_url = (is_templates || b.PUBLISH === false) ? '/render' : '', 263 tmp_href = 'a[href="'+tmp_url+'/' + menu_name[0]+'"]', 264 pagemenu_link = '#tpl-menu.nav li '+tmp_href; 265 266 if(!$(pagemenu_link).parent().hasClass('active')) { 267 $('#tpl-menu li').removeClass('active').removeClass('open'); 268 269 $(pagemenu_link).parent().addClass('active'); 270 if($(pagemenu_link).closest('.dropdown-menu').length>0) { 271 if($('body').width() > 768) { 272 $(pagemenu_link).closest('.dropdown').addClass('active'); 273 } else { 274 $(pagemenu_link).closest('.dropdown').addClass('open'); 275 } 276 } else { 277 if($('.el-menu > header').hasClass('navbar-fheader')) $('#mobile-nav li.menu-has-children ul.dropdown-menu').hide(); 278 else { 279 if($('body').width() <= 768) $('#tpl-menu li.dropdown ul.dropdown-menu').hide(); 280 } 281 } 282 } 283 284 if(menuVer06) { 285 $('.el-menu .cl-moption-row').removeClass('active'); 286 $('.el-menu .cl-moption-row '+tmp_href).closest('.cl-moption-row').addClass('active'); 287 if($('.el-menu .cl-moption-row '+tmp_href).closest('.cl-moption-row[data-parent]').length > 0) $('.el-menu .cl-moption-row '+tmp_href).closest('.cl-moption-col').find('.cl-moption-row:not([data-parent])').addClass('active'); 288 289 $('#mobile-nav li.menu-has-children').removeClass('open'); 290 $('#mobile-nav li.menu-has-children ul.dropdown-menu').hide(); 291 $('#mobile-nav '+tmp_href).closest('li.menu-has-children').addClass('open'); 292 $('#mobile-nav '+tmp_href).closest(' ul.dropdown-menu').show(); 293 } 294 295 296 if($('.shopping-more-wrap').length > 0) $('.shopping-more-wrap').remove(); 297 // console.log('pageMove', $.cookie('prev-forum-view')); 298 if(s[0] != 'forum' && $.cookie('prev-forum-view') === undefined) { 299 // console.log('forum cookie'); 300 $.each(document.cookie.split(';'), function(index, cookie) { 301 var name = cookie.split('=')[0].trim(); 302 if (name.indexOf('forum_') === 0) { 303 $.removeCookie(name, {path:'/'}) 304 // document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 305 } 306 }); 307 } 308 $.removeCookie('prev-forum-view', {path:'/'}); 309 var continuePageDraw = function() { 310 $('body').find('.galProjectCss').remove(); 311 if($('.popup').length) $('.popup').remove(); //clear Popup; 312 if(b.SETTINGS.noError404 === true && !(b.MENULIST.indexOf(b.PAGE) > -1) && !b.ONE && !b.VIEW) { // page move 313 window.location.href = '/'; 314 return false; 315 } 316 showPageCallback(showPage, function() { 317 var pgmove_vMode = (typeof $('.mobilepc_ch').attr('data-desktop-option')!='undefined') ? $('.mobilepc_ch').attr('data-desktop-option') : ''; 318 pgmove_vMode = $.mpcWeb.mpcGetVpmode(pgmove_vMode,b.SETTINGS); 319 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 320 if(typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) $.mpcWeb.mpcWebhtml(pgmove_vMode,b.pageContent[b.PAGE],b.SETTINGS.zoom,'pagemove'); 321 } 322 323 setTimeout(function() { 324 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 325 if(b.ONE && !b.VIEW || (b.PAGE == b.MENULINK[0]) && !b.VIEW) setSitePopup(); 326 $.siteBanner.init(true,true); 327 } 328 329 if(b.VALIDPLAN && (b.VALIDTYPE == 'BN' || b.VALIDTYPE == 'SM')) { 330 if(typeof b.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(b.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) { 331 $.fnav.draw(b.SETTINGS.fnav); 332 } 333 if(typeof b.SETTINGS.qm_onoff != 'undefined' && b.SETTINGS.qm_onoff==true) { 334 var quick_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 335 if(!(b.PARENT.page != null && (quick_type=='mobile'))) { 336 $.quickmenu.init(b.SID, b.PUBLISH,quick_type); 337 mobileWebQuickmenuPosition(b,quick_type); 338 } else { 339 $(`.quick-menu-${b.SID}`).remove(); 340 } 341 } 342 } 343 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 344 if(typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 345 mobileWebfnavCheck(pgmove_vMode); 346 } 347 } 348 349 // ìíì´ì§, ê°¤ë¬ë¦¬ ìì¸íì´ì§ìì ë©ë´ í´ë¦ ì íì´ì§ ì´ë í í´ë¹ ë©ë´ë¡ ì´ëíì§ ìê³ ìë¨ ê³ ì Issue Fix (https://flow.team/l/1x7rX) 350 if(typeof b.SID != 'undefined' && b.SID && b.SID == 'ronixinc') { 351 if(location.hash) { 352 var hash = decodeURIComponent(location.hash.substring(1)); 353 console.log('í´ì ê°ì§:', hash); 354 355 setTimeout(function() { 356 var $block = $('.link-to-' + hash); 357 358 if($block.length > 0) { 359 var blockTop = $block.offset().top; 360 var currentScroll = $(window).scrollTop(); 361 var threshold = 100; 362 363 if(Math.abs(blockTop - currentScroll) > threshold) { 364 console.log('ì¤í¬ë¡¤ íì:', {current: currentScroll, target: blockTop}); 365 moveLinkPage(hash); 366 } else { 367 console.log('ì´ë¯¸ ê·¼ì²ì ìì, ì¤í¬ë¡¤ ìëµ'); 368 } 369 } else { 370 console.error('ë¸ë¡ ìì:', '.link-to-' + hash); 371 } 372 }, 500); 373 } 374 } 375 376 }, 500); 377 }); 378 379 if(typeof $.cookie('gallery-item') != 'undefined' && b.VIEW == '') { 380 setTimeout(function() { 381 moveGallery($.cookie('gallery-item')); 382 },500); 383 } else if(typeof $.cookie('gallery') != 'undefined' && b.VIEW == '') { 384 setTimeout(function() { 385 moveGallery($.cookie('gallery')); 386 },500); 387 } else if(typeof $.cookie('forum-item') != 'undefined' && b.VIEW == '') { 388 // console.log('fm_view', $.cookie('forum_content_view')); 389 setTimeout(function() { 390 if(typeof $.cookie('forum_content_view') != 'undefined'){ 391 var fm_view = $.cookie('forum_content_view'); 392 var fv = (fm_view !== undefined && fm_view)? fm_view.split('&'):array(); 393 var pid = (fv)? fv[0]:''; 394 var row_id = (fv)? fv[1]:''; 395 396 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"] .tpl-forum-list-title[data-id="'+row_id+'"]', 1000); 397 $.removeCookie('forum-item', { path: '/' }); 398 399 $('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="'+row_id+'"]').click(); 400 // $.removeCookie('forum_content_view', { path: '/', expires: 12 * 60 * 60 * 1000 }); 401 } else { 402 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"]', 1000); 403 $.removeCookie('forum-item', { path: '/' }); 404 } 405 }, 500); 406 } else { 407 var url = window.location; 408 setTimeout(function() { 409 moveScroll(0,url.href); 410 },300); 411 } 412 if(typeof b.SETTINGS.google != 'undefined' && b.SETTINGS.google.length > 0) { 413 var https_check = (location.protocol=='https:') ? 'https:' : 'http:', 414 host_url = b.URL + b.PAGE; 415 416 host_url = (b.PARENT && b.PARENT.mode=='project') ? (host_url.replace(/,/g,"/view/")) : host_url; 417 418 if(b.SETTINGS.google.indexOf('UA-') > -1) ga('send', 'pageview', location.pathname); 419 else if(b.SETTINGS.google.indexOf('G-') > -1) { 420 gtag('config', b.SETTINGS.google, { 421 page_title: b.TITLE, 422 page_location: https_check + '//'+ b.HOST + host_url, 423 page_path: host_url 424 }); 425 } 426 //else gtag('config', b.SETTINGS.google , {page_path : location.pathname}); 427 //console.log(https_check + '//'+ b.HOST + host_url); 428 // console.log('google analytics send, pageview'); 429 } 430 if(typeof b.SETTINGS.npay_setting != 'undefined' && b.SETTINGS.npay_setting.onoff == true && b.SETTINGS.npay_setting.naver_log.length > 0) { 431 wcs_do(); 432 // console.log('naverpay log'); 433 } else { 434 if(typeof b.SETTINGS.naver_log != 'undefined' && b.SETTINGS.naver_log.length > 0) { 435 wcs.inflow(); 436 wcs_do(_nasa); 437 // console.log('naver analytics send, pageview'); 438 } 439 } 440 if(typeof b.SETTINGS.gtag_event != 'undefined' && typeof b.SETTINGS.gtag_event.page != 'undefined' && b.SETTINGS.gtag_event.page.length > 0) { 441 if(typeof b.SETTINGS.gtag_event.type != 'undefined' && b.SETTINGS.gtag_event.type == 'event' && b.SETTINGS.gtag_event.page == b.PAGE) { 442 // console.log(b.SETTINGS.gtag_event); 443 var v0 = b.SETTINGS.gtag_event.val[0], 444 v1 = b.SETTINGS.gtag_event.val[1], 445 v2 = b.SETTINGS.gtag_event.val[2]; 446 447 gtag(b.SETTINGS.gtag_event.type,v0,{v1:v2}); 448 // gtag(b.SETTINGS.gtag_event.type, b.SETTINGS.gtag_event.val[0], { b.SETTINGS.gtag_event.val[1] : b.SETTINGS.gtag_event.val[2] }); 449 } 450 451 } 452 453 // menu ver3 : fheader 454 setTimeout(function() {
455 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 456 },400); 457 458 459 // favicon refresh 460 var favicon = b.RESOURCE + '/' + b.SID + '/' + b.SID + '-favicon.ico?_' + new Date().getTime(); 461 changeFavicon(favicon); 462 463 if(typeof pageMoveCallback == 'function') pageMoveCallback(); 464 formTranslate(LANG); 465 466 }; 467 468 loadPageMoveConf(b.PAGE, (s[0] == 'forum' && b.VIEW)).done(function(data) { 469 if(applyPageConf(data) === false) return false; 470 continuePageDraw(); 471 }).fail(function() { 472 $.processOFF(); 473 }); 474 } 475 }); 476 477 History.Adapter.bind(window, 'popstate', function() { // history.js suggests statechange but it has a bug with urls with hashes not firing statechange 478 var State = History.getState(), 479 cUrl = new getLocation(State.url), 480 bUrl = new getLocation(window.location.href); 481 482 if(b.ONE) { 483 if(cUrl.href!=window.location.href) { 484 if(b.PAGE!='index') { 485 var link = (!b.PUBLISH) ? '/render/index' : bUrl.pathname; 486 var url = new getLocation(link); 487 golink(_this,url); 488 history.pushState('', '', link + bUrl.hash); 489 } else { 490 // if(bUrl.hash) { 491 // var go = (bUrl.hash).replace('#',''); 492 // moveLinkPage(go); 493 // } 494 } 495 } 496 } 497 }); 498 499 })(window); 500 501 $('.dsgn-body').addClass('mode-render'); 502 //$.modalON(); 503 504 if(typeof b.SETTINGS == 'undefined') return; 505 // if(typeof b.SETTINGS.rightClick == 'undefined' || b.SETTINGS.rightClick === false) return; 506 if(!b.VALIDTYPE || b.VALIDTYPE == 'PK' || typeof b.SETTINGS.rightClick == 'undefined' || b.SETTINGS.rightClick === false) { 507 b.SETTINGS.rightClick = false; 508 return; 509 } 510 $('body').on('contextmenu', function(event){ return false; }); 511 $('body').on('selectstart', '.element, .forum-view, .comment-list', function(event){ return false; }); 512 $('body').on('dragstart', '.element, .forum-view, .comment-list', function(event){ return false; }); 513 514 }); 515 516 Pace.on('done', function() { 517 /*shopping more create*/ 518 if($('.shopping-wrap').length && $('.shopping-wrap').height() >= 800 && $('.shopping-more').length == 0) { 519 var more_txt = (LANG == 'ko') ? 'ìíì ë³´ ë보기' : 'MORE'; 520 var review_chk = ($('.cl-s-product-review').length > 0) ? true : false, 521 qna_chk = ($('.cl-s-product-qna').length > 0) ? true : false; 522 var colorSet = shopping_more_color, 523 sm_font = (!colorSet) ? '' : colorSet.color, 524 sm_bgColor = (!colorSet) ? '' : colorSet.background_color, 525 sm_border = (!colorSet) ? '' : colorSet.border_color; 526 $('.shopping-wrap').css('max-height','800px') 527 .css('overflow','hidden') 528 .after('<div class="shopping-more-wrap"><div class="shopping-more">'+more_txt+'</div></div>'); 529 $('.shopping-wrap').removeClass('open'); 530 if(sm_font) $('.shopping-more').css('color',sm_font);
531 if(sm_bgColor) $('.shopping-more').css('background-color',sm_bgColor); 532 if(sm_border) $('.shopping-more').css('border-color',sm_border); 533 if(!review_chk && !qna_chk) $('.shopping-more-wrap').css('padding-bottom','100px'); 534 } 535 536 var header_h = $('header').outerHeight(); 537 var menu_logo = $('.menu-logo-top'); 538 var menu_logo_h = (menu_logo.length > 0) ? menu_logo.outerHeight() : 0; 539 $('.dsgn-body')[0].style.setProperty('--menu-logo-height', menu_logo_h+'px'); 540 $('.dsgn-body')[0].style.setProperty('--header-height', header_h+'px'); 541 542 setTimeout(function() { 543 $('body').removeClass('pace-disable'); 544 },500); 545 if(typeof $.cookie('gallery-item') != 'undefined' && b.VIEW == '') { 546 moveGallery($.cookie('gallery-item')); 547 } 548 $.modalOFF(); 549 if(!property.ONE) { 550 moveScroll(0); 551 } else { 552 // onepage index movescroll 553 if(b.PAGE=='index' && b.MODE == 'publish' && !menuClickMove) { 554 var bUrl = new getLocation(window.location.href), 555 moveId = (bUrl.pathname).replace('/',''); 556 if(moveId != 'index') moveLinkPage(moveId); 557 } 558 } 559 560 $.each($('.element'), function(k,v) { 561 var checkNotSupported = false, 562 not_supported_mode = '', 563 check_video_version = true, 564 bg_vid_gfyposter = (typeof $(this).find('.bgvid source.display').attr('src') != 'undefined') ? $(this).find('.bgvid source.display').attr('src') : '', 565 vid_regex = /gfycat\.com/gi; 566 567 if($(this).attr('data-type') == 'video' && typeof $(this).attr('data-playtype') == 'undefined' && (vid_regex.test(bg_vid_gfyposter))) { 568 check_video_version = false; 569 checkNotSupported = true; 570 not_supported_mode = $(this).attr('data-type'), 571 el_seq = $(this).attr('data-id'); 572 573 if(checkNotSupported) { 574 var upgrade_check = (!check_video_version) ? false : true; 575 $.notSupported.set(property.SID, el_seq, not_supported_mode, upgrade_check); 576 } 577 } 578 }); 579 580 }); 581 582 // naverLogCallback(function() { 583 // if("naver_log" in b.SETTINGS) { 584 // if (!wcs_add) var wcs_add={}; 585 // wcs_add["wa"] = b.SETTINGS.naver_log; 586 // if (!_nasa) var _nasa={}; 587 // wcs_do(_nasa); 588 // } 589 // }); 590 591 if(typeof pageMoveCallback == 'function') pageMoveCallback(); 592 formTranslate(LANG); 593 594 $('.dsgn-body').addClass('mode-render'); 595 596 var is_templates = (typeof property.SID != 'undefined') ? checkTemplateSite(property.SID) : false; 597 598 //ê°¤ë¬ë¦¬ ë¸ëìì ì¹´í ê³ ë¦¬ê° ë¹ììµëë¤ ë¬¸êµ¬ê° ì문 í í릿ìì íê¸ë¡ ëì¤ë ì´ìë¡ ìë ì½ë ì¶ê°, 문ì ì ìì or ìì¹ë³ê²½ 599 if(is_templates && property.SID.indexOf('_en') > -1) LANG = 'en'; 600 601 if(property.VALIDPLAN || is_templates) { 602 $('body,.dsgn-body').removeClass('with-creatorlink'); 603 } else { 604 $('body,.dsgn-body').addClass('with-creatorlink'); 605 } 606 // $('button.navbar-toggle').addClass('hide'); 607 // (b.WRAP) ? $('.dsgn-body').addClass('tiny') : $('.dsgn-body').removeClass('tiny'); 608 609 var $tag = $('header'); 610 changeBrokenImages($tag); 611 612 $tag.removeClass('tpl-menu'); 613 if(b.ONE){ 614 if(b.VIEW) $tag.find('#site-home').attr('href',URI).removeClass('mini-home'); 615 else $tag.find('#site-home').attr('href','javascript:;').addClass('mini-home'); 616 } else $tag.find('#site-home').attr('href',URI).removeClass('mini-home'); 617 618 619 var isHeaderOldVer = !$.clnav.check(); 620 var isSidebar = $tag.hasClass('sidebar'); 621 var isSiteLock = b.SITELOCK; 622 if(isHeaderOldVer) { 623 if(isSidebar) { 624 $('.dsgn-body').addClass('sidebar'); 625 $('.header.el-menu').addClass('sidebar'); 626 } else if(b.HEADER) { 627 $('header.navbar').addClass('transparent'); 628 } 629 630 header_fixed = $('header.navbar').height(); 631 if($('header.navbar').css('background-color')=='rgba(0, 0, 0, 0)' 632 && $('header.navbar').css('background-image')=='none' 633 ) { 634 $('header.navbar').css('background-color',$('dsgn-body').css('background-color')); 635 } 636 } 637 638 639 if(isSidebar) { 640 if($tag.hasClass('hide') && $('.dsgn-body').hasClass('sidebar')) 641 $('.dsgn-body').removeClass('sidebar'); 642 643 // console.log(isSiteLock); 644 if(isSiteLock == 'true') { 645 $('.dsgn-body').addClass('site_lock'); 646 } else { 647 $('.dsgn-body').removeClass('site_lock'); 648 } 649 } 650 651 // footer 652 $('.footer-' + b.SID).addClass('el-footer').addClass('element').attr('data-type','footer'); 653 654 $(window).on('scroll',function() { 655 if($('.dsgn-body').hasClass('mobile-nav-active')) return false;
656 657 if($(this).scrollTop() > 200) { 658 $('#goto-top').addClass('show'); 659 } else { 660 $('#goto-top').removeClass('show'); 661 } 662 663 if($('.dsgn-body').hasClass('sidebar')==false) { 664 fixedMenu(); 665 } 666 667 if($(this).scrollTop() == 0 && $('header').hasClass('navbar-fheader')) { 668 setTimeout(function() { $.fheader.position(); }, 200); 669 } 670 scrollspy(); 671 672 //parallax(); 673 674 }); 675 676 $(window).on('orientationchange',function(){ 677 if($('.blueimp-gallery-display').length) { 678 var $slide = $('.blueimp-gallery .slides .slide'), 679 play = $('.blueimp-gallery-playing').length, 680 idx = 0; 681 $.each($slide, function(i,v) { 682 var trans = $(this).attr('style'); 683 if(trans.indexOf('translate(0px, 0px)') > 0) { 684 idx = $(this).attr('data-index'); 685 } 686 }); 687 688 var gallery = $('.blueimp-gallery-display').attr('id'); 689 690 $('#' + gallery + ' .close').click(); 691 $.processON(); 692 setTimeout(function() { 693 $.processOFF() ; 694 $('.gallery-item[data-index="' + idx + '"] a[data-gallery="#' + gallery + '"]').click(); 695 $('.layout-grid').eq(idx).find('a[data-gallery="#' + gallery + '"]').click(); 696 if(play) $('#' + gallery + ' .play-pause').click(); 697 }, 1000); 698 } 699 }); 700 701 var currentWindowWidth = $(window).width(); 702 $(window).resize(function () { 703 $('.config-image-view').hide(); 704 if($('body').width() <= 768 && $('.dsgn-body').hasClass('sidebar')) { 705 if($('header.navbar').hasClass('sidebar')) { 706 cssSidebar('off'); 707 } 708 //$('.dsgn-body').removeClass('sidebar').addClass('removed-sidebar'); 709 } else if ($('body').width() > 768 /*&& $('.dsgn-body').hasClass('removed-sidebar')*/) { 710 if($('header.navbar').hasClass('sidebar')) { 711 cssSidebar('on'); 712 } 713 //$('.dsgn-body').removeClass('removed-sidebar').addClass('sidebar'); 714 var top = ($('.creatorlink-header').length == 1) ? '55px' : '0px'; 715 $('.el_0').css('margin-top',top); 716 if($('.header-empty').length > 0) $('.header-empty').remove(); 717 } 718 719 if( $('.header-empty').length > 0 && $('.header-empty').height() != $('.el-menu').height() ) { 720 $('.header-empty').css('height',$('.el-menu').height()+'px'); 721 } 722 723 // menu ver3 : fheader 724 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 725 726 if($('body').width() <= 768) { 727 if($('#tpl-menu li.active.dropdown').length > 0) $('#tpl-menu li.active.dropdown').removeClass('active'); 728 } else { 729 if($('#tpl-menu li.active').closest('ul').hasClass('dropdown-menu')) $('#tpl-menu li.active').closest('li.dropdown').addClass('active'); 730 $('#tpl-menu ul.dropdown-menu').removeAttr('style'); 731 } 732 733 if($('.element[data-type="video"] .lyoption[data-lyh]').length > 0) setLayoutHeight(); 734 735 var vpmode_opt = $('.mobilepc_ch').attr('data-desktop-option'), 736 vpmode = vpmode_opt ? vpmode_opt : b.SETTINGS.viewportMode, 737 vpModeOnoff = (property.SETTINGS.vpMode_onoff === true) ? true : false, 738 checkFnav = ($('.fnav').length > 0 && vpmode=='mobile_web') ? true : false, 739 WebType = $.mpcWeb.mpcCheckWebType(); 740 741 if($('.fnav').length > 0) { 742 if($('body').width() <= 480) { 743 if($('#cl-music-player-icon').length > 0) $('#goto-top,#cl-music-player-icon').addClass('movedOne'); 744 } 745 } 746 747 if(vpModeOnoff && WebType == 'MOBILE') { 748 $.mpcWeb.mpcMusicandGoTop(checkFnav,vpmode); 749 var device_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 750 if(typeof $.quickmenu['quickmenu'] != 'undefined' && $.quickmenu['quickmenu']['img_type'][device_type.toLowerCase()]!='bottom_default') { 751 var mpc_height = $('.mobilepc_ch').innerHeight(), 752 add_height = ($('#cl-music-player-icon').length > 0) ? 45 : 30; 753 $(`.quick-menu-${b.sid}.quickmenu`).css('bottom', mpc_height + add_height); 754 } 755 } 756 757 fixedMenu(); 758 scrollspy(); 759 $('.element[data-type="video"], .element[data-type="others"]').each(function() { 760 resizeVideoIframe($(this)); 761 }); 762 763 //premium gallery setFixedscroll 764 if($('.element[data-feature*=fixedscroll]').length > 0) gjs01SetFixedscroll($('.element[data-feature*=fixedscroll]').eq(0)); 765 766 if($('.fr-view').length) { 767 setForumWrap(); 768 } 769 770 if($('.blueimp-gallery-display').length) { 771 if (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement) { 772 return; 773 } 774 775 var $slide = $('.blueimp-gallery .slides .slide'), 776 play = $('.blueimp-gallery-playing').length, 777 idx = 0; 778 $.each($slide, function(i,v) { 779 var trans = $(this).attr('style'); 780 if(trans.indexOf('translate(0px, 0px)') > 0) { 781 idx = $(this).attr('data-index'); 782 } 783 }); 784 785 var gallery = $('.blueimp-gallery-display').attr('id'); 786 787 $('#' + gallery + ' .close').click(); 788 $.processON(); 789 setTimeout(function() { 790 $.processOFF() ; 791 $('.gallery-item[data-index="' + idx + '"] a[data-gallery="#' + gallery + '"]').click(); 792 $('.layout-grid').eq(idx).find('a[data-gallery="#' + gallery + '"]').click(); 793 if(play) $('#' + gallery + ' .play-pause').click(); 794 }, 1000); 795 } 796 sitePopupResize(); 797 798 if($('.element[data-type="contact"][data-type2="franchise map"]').length > 0) { 799 let newWidth = $(window).width(); 800 if (currentWindowWidth !== newWidth) { 801 $('.element[data-type="contact"][data-type2="franchise map"]').each(function(idx, v){ 802 var el = $(v); 803 fmapMobilePaging(el); 804 }); 805 } 806 807 currentWindowWidth = newWidth; 808 } 809 810 // if(typeof b.SETTINGS.qm_onoff != 'undefined' && b.SETTINGS.qm_onoff==true) { 811 // var device_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 812 // alert('resize') 813 // $.quickmenu.setHTML($.quickmenu['quickmenu'], device_type); 814 // } 815 816 var header_h = $('header').outerHeight(); 817 $('.dsgn-body')[0].style.setProperty('--header-height', header_h+'px'); 818
819 var checkFixTypeMenu = (typeof $('header.navbar-fheader').attr('data-fixtype') != 'undefined' && $('header.navbar-fheader').attr('data-fixtype')) ? true : false; 820 if(b.VALIDPLAN && checkFixTypeMenu) { 821 if(window.innerWidth < 769) { 822 $('header.navbar[data-fixtype]').find('.navbar-brand').css('line-height',''); 823 return false; 824 } 825 setTimeout(function(){ 826 setFixedMenuCss(false); 827 },80); 828 } 829 if($('.element[data-aos]').length > 0) scheduleBlockAOSRefresh(); 830 }); 831 this.liveUpdate(b.SMENU); 832 833 var checkToggleShow = (!b.MENUCHECK.main && window.innerWidth > 768) ? false : true, 834 loc_pathname = window.location.pathname, 835 is_render = (loc_pathname.match(/^\/render/g)) ? true : false, 836 is_templates = (typeof b.SID != 'undefined') ? checkTemplateSite(b.SID) : false; 837 // if(is_render && !is_templates) { 838 // if(window.parent && window.parent != this && $('#previewmain', window.parent.document).length > 0) { 839 // if($('#previewmain', window.parent.document).find('.preview-hand .active').is('#desktop, #tablet') && !b.MENUCHECK.main) checkToggleShow = false; 840 // } 841 // } 842 // if(checkToggleShow) $('button.navbar-toggle').css('visibility','visible'); 843 844 //cross-origin ì¤ë¥ìì 845 if (is_render && !is_templates) { 846 try { 847 if (window.parent && window.parent !== window && $('#previewmain', window.parent.document).length > 0) { 848 if ($('#previewmain', window.parent.document).find('.preview-hand .active').is('#desktop, #tablet') && !b.MENUCHECK.main) { 849 checkToggleShow = false; 850 } 851 } 852 } catch (e) { 853 console.warn('parent document ì ê·¼ ë¶ê°(cross-origin)', e); 854 } 855 } 856 857 if (checkToggleShow) { 858 $('button.navbar-toggle').css('visibility', 'visible'); 859 } 860 861 862 if(b.PAGE == 'psearch') $.psearch.view(); 863 864 $('[data-imglink="true"][attr-link]').live('click',function(){ 865 if($(this).is('[attr-link=""]')) return false; 866 867 var imgtarget = $(this).attr('data-target'), 868 imgshlink = $(this).attr('data-shlink'), 869 imgblank = $(this).attr('data-blank'); 870 871 if(imgblank == '_blank') { 872 var openNewWindow = window.open('about:blank'); 873 openNewWindow.location.href=imgshlink; 874 } else { 875 location.href=imgshlink; 876 } 877 }); 878 879 $('.menu-inner').on('scroll', function() { 880 $(this).next('.fh-line').show(); 881 if($(this).scrollTop()==0) $(this).next('.fh-line').hide(); 882 }); 883 884 $("#mobile-nav #tpl-menu").on('scroll', function() { 885 $(this).next('.fh-line').show(); 886 if($(this).scrollTop()==0) $(this).next('.fh-line').hide(); 887 }); 888 889 $('.sitePopupTodayHide, .sitePopupClose').live({ 890 click: function() { 891 if($(this).hasClass('sitePopupTodayHide')) $(this).find('input').click(); 892 var selectedPopup = $(this).closest('.modal-popup').attr('id'); 893 $('#' + selectedPopup).find('.popup-close').click(); 894 } 895 }); 896 897 $('.popup-close').live({ 898 click: function() { 899 var selectedPopup = $(this).closest('.modal-popup').attr('id'), 900 idx = $(this).closest('.modal-popup').attr('data-idx'), 901 ptime = $(this).closest('.modal-popup').attr('data-time'), 902 isTodayHide = $(this).closest('.modal-popup').find('.sitePopupTodayHide input').prop('checked'), 903 date = new Date(); 904 905 var ptime_val = { 906 'always' : 0, 907 'onlyone' : 365 * 24 * 60 * 60 * 1000, 908 'week' : 7 * 24 * 60 * 60 * 1000, 909 'day' : 24 * 60 * 60 * 1000, 910 '12hour' : 12 * 60 * 60 * 1000, 911 '6hour' : 6 * 60 * 60 * 1000, 912 '2hour' : 2 * 60 * 60 * 1000, 913 '1hour' : 60 * 60 * 1000, 914 '30min' : 30 * 60 * 1000, 915 '10min' : 10 * 60 * 1000 916 }; 917 918 if(isTodayHide) { 919 date.setTime(date.getTime() + ptime_val['day']); 920 } else { 921 date.setTime(date.getTime() + ptime_val[ptime]); 922 } 923 $('#' + selectedPopup).fadeOut(); 924 if(isTodayHide || (typeof ptime !='undefined' && ptime != 'always' && ptime != '')) { $.cookie(selectedPopup, true, { path: '/', expires: date}); } 925 else { $.removeCookie(selectedPopup, { path: '/' }); } 926 } 927 }); 928 929 var decodeMoveScrollUrl = function(value) { 930 if(typeof value == 'undefined' || !value) return ''; 931 932 var url = String(value); 933 934 try { 935 var decoded = decodeURIComponent(url); 936 if(decoded !== url) return decoded; 937 } catch(e) {} 938 939 try { 940 var escaped = escape(url); 941 if(escaped.indexOf('%u') === -1) return decodeURIComponent(escaped); 942 } catch(e) {} 943 944 return url; 945 }; 946 947 var moveScroll = function(interval, loc) { 948 if(typeof $.cookie('forum_content_view') != 'undefined') { 949 if(window.location.href.indexOf('/forum/view/') == -1) $.removeCookie('forum_content_view', { path: '/', expires: 12 * 60 * 60 * 1000 }); 950 return false;
951 } 952 var this_url = (typeof loc == 'undefined') ? document.URL : loc; 953 var url = decodeMoveScrollUrl(this_url); 954 link = url.split('#').pop(); 955 956 if($.inArray(link,b.MENULINK) > -1 && b.ONE && !b.VIEW) { 957 moveLinkPage(link,interval); 958 $.removeCookie('gallery', { path: '/' }); 959 $.removeCookie('gallery-item', { path : '/' }); 960 } else if (url.match(/\@/g)) { 961 link = url.split('\@').pop(); 962 var bookmark_link = url.substr(url.lastIndexOf('/')+1); 963 if(link) moveLinkPage(bookmark_link,800,true); 964 } else { 965 $(window).scrollTop(0); 966 setTimeout(function() { 967 if(location.hash) { 968 var hashArr = location.hash.split('#'); 969 var hash = hashArr[1]; 970 var hashseq = hashArr[2]; 971 if(hash && $('.element[data-name="' + hash + '"]').length) { 972 var header_check = $("header").attr("data-fh-type"); 973 if (header_check != "sidebar") { var header_height = $("header").outerHeight(true); } 974 else {var header_height = 0;} 975 // $(window).scrollTop($('.element[data-name="' + hash + '"]').offset().top - header_height); 976 977 if($('.tpl-forum-list-cont[data-id="' + hashseq + '"]').length == 0) { 978 var offset_top = $('.element[data-name="' + hash + '"]').find('.list-item').offset().top; 979 var win = $(window); 980 var winHeight = win.height(); 981 win.scrollTop(offset_top - (winHeight / 2) + (header_height / 2)); 982 } else { 983 var offset_top = $('.tpl-forum-list-cont[data-id="' + hashseq + '"]').closest('.list-item').offset().top - header_height; 984 var screen_half = ($(window).height() - header_height) / 2; 985 // $(window).scrollTop(offset_top) 986 $(window).scrollTop(offset_top - screen_half) 987 } 988 989 // console.log($('.tpl-forum-list-cont[data-id="72334"]').length); 990 } 991 } 992 }); 993 } 994 } 995 996 var moveBookmark = function(page, bookmark, interval, target) { 997 var page_arr = (typeof page == 'undefined') ? new Array() : page.split('\,'); 998 var view = (page_arr.length > 1) ? page_arr[1] : ''; 999 1000 interval = (typeof interval == 'undefined') ? 1200 : interval; 1001 target = (typeof target == 'undefined') ? '' : target; 1002 1003 if( (view != '' && view == b.VIEW && !target) || (view == '' && !b.VIEW && page_arr[0] == b.PAGE && !target) ) { 1004 moveLinkPage(page_arr[0]+bookmark,interval,true); 1005 } else { 1006 var linkUrl = ''; 1007 if(b.ONE) { 1008 linkUrl = (view.length>0) ? '/index/view/' + view : '/index'; 1009 linkUrl = (!b.PUBLISH) ? '/render' + linkUrl + bookmark : linkUrl + bookmark; 1010 } else { 1011 var url_str = (view.length>0) ? page_arr[0] + '/view/' + view : page; 1012 linkUrl = (URI=='/') ? '/' + url_str + bookmark : URI + '/' + url_str + bookmark; 1013 } 1014 1015 if(target) { 1016 var openLinkPage = window.open('about:blank'); 1017 openLinkPage.location.href=linkUrl; 1018 } else { 1019 var url = new getLocation(linkUrl); 1020 golink(_this,url); 1021 // location.replace(linkUrl); 1022 } 1023 1024 } 1025 } 1026 1027 var moveLinkPage = function(link, interval, isblock) { 1028 link = decodeURIComponent(link); 1029 if(typeof interval == 'undefined') interval = 1200; 1030 if(typeof isblock == 'undefined') isblock = ''; 1031 1032 var isBookmark = false; 1033 var bookmark_arr = new Array(); 1034 if(link.match(/\@/g)) { 1035 isBookmark = true; 1036 bookmark_arr = link.split('\@'); 1037 1038 var check_link = true; 1039 var is_visible_menu = false; 1040 $.each(b.SMENU, function (idx, obj) { 1041 if(is_o_page == obj.name.replace(/ /g,'-')) { 1042 if(!obj.link) check_link = false; 1043 if(obj.display == 'on') is_visible_menu = false; 1044 } 1045 if(obj.children) { 1046 $.each(obj.children, function (i, v){ 1047 if(is_o_page == v.name.replace(/ /g,'-')) { 1048 if(!v.link) check_link = false; 1049 if(v.display == 'on') is_visible_menu = false; 1050 } 1051 }); 1052 } 1053 }); 1054 1055 var is_here = ($('.element[data-bookmark="' + bookmark_arr[1] + '"]').length > 0 ) ? true : false; 1056 var is_page = (b.PAGE.toLowerCase() == bookmark_arr[0].toLowerCase() || b.VIEW && b.VIEW == bookmark_arr[0]) ? true : false;
1057 var is_o_page = (bookmark_arr[0].indexOf(',') > -1 && !b.VIEW) ? bookmark_arr[0].substring(0, bookmark_arr[0].indexOf(',')) : (b.VIEW) ? 'index' : bookmark_arr[0]; 1058 // var is_visible_menu = ($.inArray(is_o_page,b.MENULINK)>-1) ? true : false; 1059 // var check_link = ( $('#tpl-menu li a[href*="'+is_o_page+'"]').length > 0 && $('#tpl-menu li a[href*="'+is_o_page+'"]').text().trim().replace(/ /gi,'-') == is_o_page ) ? false : true; 1060 var is_link = (check_link && is_visible_menu && is_o_page != 'INTRO') ? true : false; 1061 var is_visible = (check_link && is_visible_menu && is_o_page != 'INTRO') ? true : false; 1062 1063 if( ( !is_visible_menu && is_o_page!='index' ) || 1064 ( /*!is_page &&*/ ( is_link || is_visible ) ) || 1065 ( is_page && !is_here ) 1066 ) { 1067 if(is_visible_menu == false) ; 1068 else return false; 1069 } 1070 link = 'element[data-bookmark="' + bookmark_arr[1] + '"]'; 1071 1072 } else { 1073 link = (isblock == '') ? 'link-to-' + link : link; 1074 } 1075 1076 var moveTarget = $(`.${link}`); 1077 if(moveTarget.length == 0) return; 1078 1079 if($.clnav.check()) { 1080 goToElement(`.${link}`); 1081 } else { 1082 // oldver 1083 var header_fixed = ($('.dsgn-body').width() < 769) ? $('.el-menu .navbar-header').height() - 1 : $('#tpl-menu').height(); 1084 if ($('header').hasClass('navbar-fheader')) header_fixed = $('header.navbar').outerHeight() - 1; 1085 1086 var offset = ($('.dsgn-body').hasClass('sidebar')) ? 0 : -header_fixed; 1087 if ($('header.navbar').hasClass('disableOffset') && !$('.' + link).hasClass('el_0')) offset = 0; 1088 offset = (window.innerWidth > 768) ? offset : -header_fixed; 1089 1090 var sTop = moveTarget.offset().top + offset; 1091 if(moveTarget.is('[data-aos]') && !moveTarget.hasClass('aos-animate')) { 1092 const tr = moveTarget.css('transform'); 1093 let moveY = 0; 1094 if (tr && tr !== "none") { 1095 const vals = tr.match(/-?\d+\.?\d*/g); 1096 moveY = parseFloat(vals[13] || vals[5] || 0); // ì´ë¯¸ ìì/ìì í¬í¨ë¨ 1097 1098 sTop -= moveY; 1099 } 1100 } 1101 sTop = (isAosBlock && moveTarget.hasClass('el_0') == false && $('.menu-logo-top').length > 0 && $('.menu-logo-top').css('display')=='block') ? sTop + $('.menu-logo-top').outerHeight() : sTop; 1102 1103 var duration = (typeof $('#tpl-menu').attr('data-duration') != 'undefined') ? parseInt($('#tpl-menu').attr('data-duration')) : ((isBookmark) ? 500 : 1000); 1104 if(clCheckBrowser('safari') && clCheckBrowser('mobile') || moveTarget.hasClass('el_0')) duration = 0; 1105 $('html, body').stop(true, false).animate({ 1106 scrollTop: sTop 1107 }, duration, 'easeInOutQuart'); 1108 1109 var menuStr = (!isBookmark) ? link.replace('link-to-','') : bookmark_arr[0]; 1110 setTimeout(function() { 1111 $('header #tpl-menu li a[href=#' + menuStr + ']').closest('li').addClass('active').siblings().removeClass('active'); 1112 if($('#mobile-nav #tpl-menu li').length) $('#mobile-nav #tpl-menu li a[href=#' + menuStr + ']').closest('li').addClass('active').siblings().removeClass('active'); 1113 },1100); 1114 } 1115 } 1116 1117 var getParent = function(parent,id,page) { 1118 if(id) { 1119 parent = (parent == 'forum') ? parent : 'project'; 1120 $.ajax({ 1121 url:'/template/get/parent/' + parent + '/id/' + id + '/sid/' + _this.b.SID + '/page/' + encodeURIComponent(page) + _this.b.param, 1122 type:'get', 1123 async:false, 1124 cache: false, 1125 dataType:'json', 1126 success:function(data) { 1127 property.PRODINFO = (data.prod_onoff == "on") ? data.PRODINFO : ''; 1128 _this.b.PARENT = data.PARENT; 1129 _this.b.COUNT = data.COUNT; 1130 } 1131 }); 1132 } else { 1133 property.PRODINFO = ""; 1134 _this.b.PARENT = {}; 1135 _this.b.COUNT = 0; 1136 } 1137 } 1138 1139 var showPageCallback = function(func,callback) { 1140 func(b.MCSS, b.MSTYLE, b.MTAG, true); 1141 if(typeof callback=='function') { 1142 callback(); 1143 } 1144 } 1145 1146 var showPage = function (css, style, tag, prop) { 1147 if($('.fmcss').length > 0) $('.fmcss').remove(); 1148 $.each(style.children,function(k,v) { 1149 if(k!='.dsgn-body') { 1150 delete style.children[k]; 1151 } 1152 }); 1153 elFooter(); 1154 1155 var isSidebar = $('.el-menu > header').hasClass('sidebar'); 1156 var isHeaderOldVer = !$.clnav.check(); 1157 if(isHeaderOldVer) { 1158 if(b.HEADER && b.PARENT.mode == 'shopping') b.HEADER = false;
1159 if(b.HEADER && !b.VIEW && !isSidebar) $('header.navbar').addClass('transparent'); 1160 1161 header_fixed = $('header.navbar').height(); 1162 if($('header.navbar').css('background-color')=='rgba(0, 0, 0, 0)' 1163 && $('header.navbar').css('background-image')=='none' 1164 ) { 1165 $('header.navbar').css('background-color',$('dsgn-body').css('background-color')); 1166 } 1167 } 1168 1169 if(b.SETTINGS.sitePermit === 3) { 1170 var checkSiteLock = isSitePasswordLock(); 1171 } 1172 1173 var is_lock_block = 'active'; 1174 isMenuLock(function() { 1175 if(b.ISLOCK == 'true' && is_lock_block == '' || b.ISLOCK != 'true') elPush(prop); 1176 else { 1177 $('.el-footer').css('visibility', 'visible'); 1178 $.processOFF(); 1179 } 1180 }); 1181 1182 // menu active 1183 /* 190710 - menu or sub-menu ì¼ë¶ ê°ìë 첫ë²ì§¸ ë©ë´ì active error ì겨ì 주ì ì²ë¦¬. */ 1184 // if(b.PARENT.page) { 1185 // $('#tpl-menu li').find('a:contains("' + b.PARENT.page + '")').parent().addClass('active'); 1186 // } else { 1187 // if(b.ONE) { 1188 // if(b.SMENU[0].display == 'off') $('#tpl-menu li').first().addClass('active'); 1189 // } else if(b.PAGE) { 1190 // $('#tpl-menu li').find('a:contains("' + b.PAGE + '")').parent().addClass('active'); 1191 // } 1192 // }; 1193 1194 RENDER.setLoginout(b.LOGINOUT, b.SID, b.PUBLISH, b.PROFILEIMG); 1195 $('body,html').animate({scrollTop: 0}, 300,'easeInOutQuart'); 1196 } 1197 1198 var loadPush = function(data) { 1199 // console.log(' page draw 02:: loadPush'); 1200 window._blockMasonryResizeTargets = []; 1201 1202 $('body').removeAttr('data-gjs'); 1203 1204 var deferred = $.Deferred(); 1205 var pageID = b.PAGE.split(','); 1206 var chgBG = false; 1207 var tmpTag = ''; 1208 var currentPAGE = b.PAGE; 1209 var default_t_css = ''; 1210 var default_m_css = ''; 1211 1212 if(pageID.length === 1) $('.clViewPageStyle').remove(); 1213 1214 var is_templates = checkTemplateSite(b.SID); 1215 1216 var checkGalleryView = (b.VIEW && b.PAGE.match(/^forum,/g) === null) ? true : false; 1217 var checkShoppingView = (b.VIEW && b.PARENT.mode == 'shopping') ? true : false; 1218 var page_pos = 0; 1219 var site_settings = (typeof b.SETTINGS != 'undefined' && b.SETTINGS) ? b.SETTINGS : {}; 1220 1221 if($('body').hasClass('openPopupBanner') && b.MENULINK[0] != currentPAGE) { 1222 $.siteBanner.init(false,true); 1223 } 1224 if(typeof $.clnav.s != 'undefined') $.clnav.init(); 1225 1226 $('#el-empty').empty(); 1227 $('.gallery-popup, .psearch-block').remove(); 1228 b.COUNT = data.length; 1229 1230 var check_modoo = $('.dsgn-body').hasClass('modoo') ? true : false, 1231 fl_data = {}; 1232 1233 if(check_modoo) { 1234 fl_data = draw_floating(); 1235 } 1236 1237 function drawData(idx, val) { 1238 // console.log(`drawData(${idx}, ${val})`); 1239 page_pos += 1; 1240 var tag = htmlspecialchars_decode(val.eltag,'ENT_QUOTES'); 1241 var settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 1242 var block_lang = (typeof settings.blocklang != 'undefined' && settings.blocklang) ? settings.blocklang : LANG; 1243 var checkGalleryListSample = false; 1244 var checkGalleryListEmpty = true; 1245 var fontload = []; 1246 1247 if(val.type == 'project' && val.eltag.charAt(0) == '\<') tag = val.eltag; 1248 1249 if(typeof val.fonts != 'undefined') { 1250 $.each(val.fonts, function(i,v) { 1251 if(b.ELFONTS.indexOf(i) < 0 && v) { 1252 b.ELFONTS.push(i); 1253 $('#loadfonts').append(v); 1254 } 1255 }); 1256 } 1257 if(typeof val.webfonts != 'undefined' && val.webfonts) { 1258 $.each(val.webfonts, function(i2,v2) { 1259 if(b.ELFONTS.indexOf(i2) < 0 && v2) { 1260 b.ELFONTS.push(i2); 1261 WebFont.load({ google : { families : [ v2 ], display:'swap' }}); 1262 } 1263 }) 1264 } 1265 1266 if($.inArray(val.type, ['gallery','shopping']) > -1) { 1267 if($('#el-empty').length === 0) $('body').append('<div id="el-empty" class="opacity: 0;"></div>'); 1268 $('#el-empty').append($(tag)); 1269 $('#el-empty').find('[data-loop="true"]').html(''); 1270 1271 var nodes = $(tag).find('[data-loop="true"]').children('.grid'), 1272 p = $('#el-empty').children(), 1273 g = p.clone().removeClass().addClass('galleryPL'+val.seq).addClass('gallery-popup'), 1274 i = [], 1275 view = $(tag).find('[data-loop="true"]').data('view'), 1276 g_number = $(tag).find("[data-loop='true']").data('gallery-no'), 1277 total = 0; 1278 1279 var checkLoadmoreInLoop = ($(tag).find('[data-loop="true"] .loadmore-wrap').length) ? true : false;
1280 var glm = $(tag).find('.loadmore-wrap'); 1281 1282 $('#el-empty').after(g); 1283 $(g).after('<div class="gallery-empty"></div>'); 1284 1285 galleryEL[val.seq] = { 1286 'seq' : val.seq, 1287 'elname' : val.elname, 1288 'eltag' : tag, 1289 'folder' : val.folder, 1290 'mode' : val.mode, 1291 'elsettings' : val.elsettings, 1292 'feature' : val.feature, 1293 'type' : val.type, 1294 'type2' : val.type2, 1295 'searches' : val.searches 1296 }; 1297 1298 if(typeof view == 'undefined') view = 10; 1299 var cookie_page = 1, 1300 cookie_view = view, 1301 cookie_gallery_category = '', 1302 is_gc_cookie = (typeof $.cookie('gallery-category-'+val.seq) != 'undefined' && $.cookie('gallery-category-'+val.seq).length > 0) ? true : false; 1303 var cookie_gallery_orderby = 'recent'; 1304 1305 var category_onoff = (typeof settings.category_display != 'undefined' && settings.category_display) ? settings.category_display : 'OFF'; 1306 var gallery_sort = (typeof settings.gallery_sort != 'undefined' && settings.gallery_sort) ? settings.gallery_sort : 'default'; 1307 if(val.mode != 'shopping' && gallery_sort == 'product') gallery_sort = 'default'; 1308 // var adultonly_onoff = (typeof settings.adult_only != 'undefined' && settings.adult_only) ? settings.adult_only : 'OFF'; 1309 1310 if(typeof $.cookie('loadmore-' + val.seq) != 'undefined' && $.cookie('loadmore-' + val.seq).length > 0) { 1311 cookie_page = $.cookie('loadmore-'+val.seq); 1312 cookie_gallery_category = (typeof $.cookie('gallery-category-'+val.seq) != 'undefined') ? $.cookie('gallery-category-'+val.seq) : ''; 1313 cookie_gallery_orderby = (typeof $.cookie('gallery-orderby-' + val.seq) != 'undefined') ? $.cookie('gallery-orderby-' + val.seq) : ''; 1314 cookie_view = cookie_page * view; 1315 } else { 1316 var checkCateHomeHide = (category_onoff == 'ON' && 1317 typeof settings.category != 'undefined' && settings.category && 1318 typeof settings.category_home_hide != 'undefined' && settings.category_home_hide) ? true : false; 1319 if(checkCateHomeHide) { 1320 var gc = settings.category.replace(/\|/g,'').split(','); 1321 cookie_gallery_category = gc[0]; 1322 is_gc_cookie = true; 1323 1324 $.cookie('gallery-catehome-' + val.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 1325 } 1326 } 1327 1328 if(val.seq == 'all_products') { 1329 // cookie_page = (typeof $.cookie('gallery-page-all_products') !== 'undefined' && $.cookie('gallery-page-all_products') != '')? $.cookie('gallery-page-all_products') : 1; 1330 cookie_gallery_category = getAllProductsSortVal(settings); 1331 // cookie_view = cookie_page * view; 1332 } else { 1333 if(!property.VIEW) $.removeCookie('gallery-page-all_products', { path: '/' }); 1334 } 1335 1336 $.cookie('gallery-page-' + val.seq, cookie_page, { path : '/', expires: 12 * 60 * 60 * 1000 }); 1337 $.cookie('gallery-category-' + val.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 1338 $.cookie('gallery-orderby-' + val.seq, cookie_gallery_orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 1339 $.removeCookie('loadmore-' + val.seq, { path : '/' }); 1340 1341 var checkGallerySVG = ($(tag).find('.gimg-svg-wrap').length > 0) ? true : false, 1342 checkGFrameTitleOFF = (val.mode == 'gallery' && (typeof settings.gframe_title_visible != 'undefined' && settings.gframe_title_visible == 'OFF')) ? true : false; 1343 1344 var checkUseComment = checkUseCommentFunc(val.mode, val.eltag); 1345 var checkUseLike = checkUseLikeFunc(val.mode, val.eltag); 1346 1347 var uri = getSearchURL(); 1348 if (isObjectEmpty(uri) && _this.b.LUX && val.mode == 'shopping') { 1349 uri = val.searches.uri; 1350 } 1351 // if(uri.category_no == '') { 1352 // uri.category_no = (typeof settings.lux_category_no != 'undefined') ? settings.lux_category_no : ''; 1353 // } 1354 1355 var res; 1356 1357 $.ajax({ 1358 url: '/template/gallery/list/pid/' + val.seq + '/sid/' + b.SID + '/spage/' + currentPAGE + '/view/' + cookie_view + param, 1359 data: { g_mode: val.mode, visible: true, sfl: 'category', stx: cookie_gallery_category, uri : uri, only : val.only_category, orderby: cookie_gallery_orderby}, 1360 dataType: 'json', 1361 type: 'POST', 1362 async: false, 1363 cache: false, 1364 success: function (data) { 1365 var check_only_cate = (typeof data.only_category != 'undefined' && data.only_category === true) ? true : false;
1366 if(check_only_cate) { 1367 localStorage.setItem('searches',JSON.stringify(new Array(val.searches.uri[0]))); 1368 } 1369 1370 res = data; 1371 $.each(data.list, function (idx, v) { 1372 i.push(v); 1373 }); 1374 total = (typeof data.total.list_total == 'undefined') ? data.total : data.total.list_total; 1375 cookie_view = ( cookie_view > total ) ? total : cookie_view; 1376 // cookie_view = (cookie_view < total) ? cookie_view : total; 1377 1378 if( total > 0 ) checkGalleryListEmpty = false; 1379 if( i.length>0 || (i.length==0 && is_gc_cookie) ) { 1380 var loop_count = nodes.length, item_index = 0; 1381 var elem = []; 1382 $.each(data.list,function(index,v) { 1383 loop_pos = index%loop_count; 1384 c = nodes[loop_pos]; 1385 var isTitle = (v.title.length > 0) ? true:false; 1386 1387 $(c).find('.non_text').removeClass('non_text'); 1388 if(val.mode != 'shopping') { 1389 if(v.title.length==0) $(c).find('.figure.title').removeClass('non_text').addClass('non_text'); 1390 if(v.caption.length==0) $(c).find('.figure.caption').removeClass('non_text').addClass('non_text'); 1391 } 1392 1393 v.title = (v.title.length>0) ? v.title : $.lang[block_lang]['editor.block.gallery.sample.title']; 1394 v.caption = (v.caption.length>0) ? v.caption : $.lang[block_lang]['editor.block.gallery.sample.caption']; 1395 1396 $(c).addClass('gallery-item').attr('data-index',index).attr('data-seq',v.seq); 1397 1398 var vgsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}, 1399 img_path = (typeof vgsettings['storage'] != 'undefined') ? vgsettings['storage'] : _this.b.RESOURCE + '/' + _this.b.SID + '/', 1400 img_original = (typeof vgsettings['storage'] != 'undefined') ? img_path + '1920/' : img_path; 1401 1402 var folder = (val.folder == 0) ? '' : val.folder + '/', 1403 src = getServeImage(v.image,val.folder,img_path), 1404 src_s0 = getServeImage(v.image,'0',img_path); 1405 if($(c).find('img').length > 0) $(c).find('img').attr('src',src); 1406 if(val.mode == 'shopping') { 1407 if($(c).find('img').length > 0) $(c).find('img').attr('alt',v.title); 1408 } else { 1409 alt_replace = v.alt.replace(/\s+|\n+/g, '-'); 1410 alt_replace.replace(/-+/g, '-') 1411 if($(c).find('img').length > 0) $(c).find('img').attr('alt',alt_replace); 1412 } 1413 ensureGalleryResponsiveImageClass($(c)); 1414 if($(c).find('.g-img').length > 0) $(c).find('.g-img').css('background-image', 'url('+src+')'); 1415 1416 if(checkGallerySVG) { 1417 var gimgSVG = $(c).find('.gimg-svg-wrap svg'); 1418 gimgSVG.find('pattern').attr('id','gimgSvg_'+val.elname+'_'+index); 1419 gimgSVG.find('image').attr('xlink:href', src); 1420 gimgSVG.find('polygon, path').attr('fill', 'url(#gimgSvg_'+val.elname+'_'+index+')'); 1421 } 1422 1423 var glink = (typeof vgsettings['glink'] != 'undefined' && vgsettings['glink']) ? vgsettings['glink'] : '', 1424 glink_target = (typeof vgsettings['glink_target'] != 'undefined' && vgsettings['glink_target']) ? vgsettings['glink_target'] : ''; 1425 1426 if(glink) { 1427 if(glink.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 1428 var bookmark_seq = glink.replace(/^\@/g,''); 1429 if(typeof _this.b.SETTINGS.blockBookmarkList == 'undefined' || typeof _this.b.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 1430 glink = ''; 1431 glink_target = ''; 1432 } 1433 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 1434 glink_target = ''; 1435 } else if($.inArray(glink.replace(/^\//g,'').replace(/ /g,'-'),_this.b.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 1436 } else { // link-type: link-out ==> a[attr-link] 1437 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 1438 } 1439 } 1440 1441 $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 1442 if (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON' && property['SITEUM'] >= 1) { 1443 $(c).addClass('gallery-item').addClass('nonePrice'); 1444 $(c).find('a').attr('href', '#'); 1445 } else { 1446 if(glink) { 1447 var glink_val = makeLinkUrl(glink, b.ONE, b.VIEW); 1448 $(c).find('a').attr('href',glink_val); 1449 1450 if(glink.match(/^\@/g)) { 1451 $(c).find('a').attr('attr-bookmark',glink.replace(/^\@/g,'')); 1452 } else if(glink.match(/^flink\@[0-9]/g) !== null) { 1453 $(c).find('a').attr('attr-flink',glink.replace(/^flink\@/g,'')); 1454 // IE ERROR_includes__H.20210603 1455 // } else if(_this.b.MENULIST.includes(glink.replace(/ /g,'-'))) { 1456 } else if($.inArray(glink.replace(/ /g,'-'),_this.b.MENULIST) > -1) { 1457 $(c).find('a').attr('data-user-link',glink_val); 1458 } else { 1459 $(c).find('a').attr('attr-link',glink); 1460 } 1461 } else { 1462 if (val.mode == 'gallery') { 1463 src_s0 = src_s0 + '?gpos='+v.pos; 1464 1465 $(c).find('a').attr('href', src_s0); 1466 $(c).find('a').attr('data-gallery', '#gframe-' + val.seq); 1467 } else { 1468 if(val.seq == 'all_products') { 1469 $(c).find('a').attr('href', v.product_url); 1470 } else { 1471 if(_this.b.LUX) $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/_product/' + v.seq); 1472 else $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/' + v.seq); 1473 1474 // $(c).find('a').attr('href', ((URI=='/') ? '' : URI) + '/' + b.PAGE + '/view/' + v.seq); 1475 } 1476 } 1477 } 1478 } 1479 1480 if(glink_target == '_blank') $(c).find('a').attr('target','_blank'); 1481 else $(c).find('a').removeAttr('target'); 1482 1483 if(checkGFrameTitleOFF || !isTitle) $(c).find('a').attr('data-title', ''); 1484 else $(c).find('a').attr('data-title', v.title); 1485 1486 // if(adultonly_onoff == 'ON') $(c).addClass('adultonly'); 1487 1488 // caption 1489 var ftitle = $(c).find('h5.figure'), 1490 fcaption = $(c).find('p.figure').not('.comment'), 1491 fdatetime = $(c).find('.figure.datetime'), 1492 fhashtag = $(c).find('.figure.hashtag'), 1493 fbrand = $(c).find('.figure.brand'), 1494 fprice = $(c).find('.figure.price'), 1495 freview = $(c).find('.figure.review'), 1496 fcomment = $(c).find('.figure.comment'), 1497 flike = $(c).find('.figure.like'), 1498 fbasket = $(c).find('.figure.basket'); 1499 1500 $(c).find('figcaption').removeClass('hide'); 1501 if (v.title || v.caption) { 1502 var gallery_caption = v.caption; 1503 gallery_caption = gallery_caption.replace(/\n/g,'<br />'); 1504 1505 ftitle.html(v.title); 1506 fcaption.html(gallery_caption); 1507 if(fdatetime.length > 0) fdatetime.text(v.datetime); 1508 if(fhashtag.length > 0) fhashtag.text(v.hashtag); 1509 } 1510 1511 if(g_number) { 1512 var g_index = String(index + 1), 1513 g_num = g_index.padStart(g_number, '0');
1514 $(c).find('.figure.number').text(g_num); 1515 } 1516 1517 if(fbrand.length > 0) { 1518 var fbrand_name = (typeof v.brand_name != 'undefined' && v.brand_name) ? v.brand_name : ''; 1519 fbrand.html(v.brand_name); 1520 } 1521 1522 if(val.mode == 'shopping' || val.seq == 'all_products') { 1523 fcomment.addClass('hide'); 1524 flike.addClass('hide'); 1525 v.price = typeof v.price != 'undefined' ? parseFloat(v.price) : 0; 1526 v.sale = typeof v.sale != 'undefined' ? parseFloat(v.sale) : 0; 1527 var checkPriceHidden = (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON') ? true : false, 1528 gallery_price = (v.price && !checkPriceHidden) ? v.price : 0, 1529 gallery_sale_price = (typeof v.sale != 'undefined' && v.sale > 0 && v.sale > v.price && !checkPriceHidden) ? v.sale : 0, 1530 gallery_sale_per = (typeof v.sale_per != 'undefined' && v.sale_per && !checkPriceHidden) ? v.sale_per+'%' : '', 1531 product_soldout = 'íì ', 1532 product_no_sale = (typeof settings.sh_soldout == 'string') ? settings.sh_soldout : '구매ë¶ê°', 1533 product_status = ''; 1534 if(v.status == 'off' && !checkPriceHidden) { 1535 product_status = '<span class="cl-sh-soldout">' + product_no_sale + '</span>'; 1536 } else if(v.quantity_on == 'on' && v.quantity < 1 && !checkPriceHidden) { 1537 product_status = '<span class="cl-sh-soldout">' + product_soldout + '</span>'; 1538 } 1539 1540 $(c).find('.cl-sh-soldout').remove(); 1541 if(product_status != '') $(c).attr('data-soldout',true); 1542 else $(c).removeAttr('data-soldout'); 1543 1544 $(c).find('.product-badge').remove(); 1545 product_status += drawBadgeList(v.use_badge, data.badge_settings); 1546 1547 $(c).find('.cl-sh-limit').remove(); 1548 if(v.status == 'lim') { 1549 if(v.sale_now == false) { 1550 var product_limit = '<p class="cl-sh-limit">ìí 구매 ê°ë¥ 기ê°ì´ ìëëë¤.</p>'; 1551 if(freview.length > 0) { 1552 freview.after(product_limit); 1553 } else { 1554 $(c).find('figcaption:not(.top) .figure:last-child').after(product_limit); 1555 } 1556 } 1557 } 1558 1559 if($(c).find('ul.figure.price').length > 0) { 1560 // var price_off = (v.sale_price > 0 && v.sale_price > v.price) ? 100 - Math.floor((v.price / v.sale_price) * 100) : 0, 1561 // off_str = (price_off > 0) ? price_off + '% ' : '' 1562 var off_str = (v.sale_rate > 0) ? v.sale_rate + '% ' : ''; 1563 if(!_this.b.LUX) off_str = gallery_sale_per; 1564 //Ver2 1565 if(!checkPriceHidden) { 1566 $(c).find('ul.figure.price .price-val').html('₩' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 1567 $(c).find('ul.figure.price .price-val').removeClass('hide'); 1568 1569 if(gallery_sale_price > 0 && gallery_price < gallery_sale_price) { 1570 $(c).find('ul.figure.price .price-sale').html('₩' + gallery_sale_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 1571 $(c).find('ul.figure.price .price-sale-per').html(off_str); 1572 $(c).find('ul.figure.price .price-sale, ul.figure.price .price-sale-per').removeClass('hide'); 1573 if(_this.b.LUX && (v.hashtag).indexOf('í¹ê°ì¸ì¼') > -1 && $(c).find('ul.figure.price .sp-price').length == 0) { 1574 $(c).find('ul.figure.price .price-sale').after('<li class="sp-price">í¹ê°ì¸ì¼</li>'); 1575 } 1576 } else { 1577 $(c).find('ul.figure.price .price-sale, ul.figure.price .price-sale-per').addClass('hide').html(''); 1578 } 1579 1580 $(c).find('ul.figure.price .price-unit-pricing').remove(); 1581 if(v.product_unit_str) { 1582 $(c).find('ul.figure.price').append(`<li class="price-unit-pricing">${v.product_unit_str}</li>`); // ë¨ìë¹ ê°ê²© 1583 } 1584 } else { 1585 $(c).find('ul.figure.price .price-val').html('₩0'); 1586 $(c).find('ul.figure.price .price-val').addClass('hide'); 1587 } 1588 if(val.seq == 'all_products' && checkPriceHidden) $(c).find('ul.figure.price').html(''); 1589 if(product_status) $(c).find('ul.figure.price').append('<li>'+product_status+'</li>'); 1590 1591 var badge_size = getBadgeSize(data.badge_settings); 1592 $(c).find('.cl-sh-soldout').removeClass('badge-small badge-medium badge-large'); 1593 $(c).find('.cl-sh-limit').removeClass('badge-small badge-medium badge-large'); 1594 if(badge_size) { 1595 $(c).find('.cl-sh-soldout').addClass(badge_size); 1596 $(c).find('.cl-sh-limit').addClass(badge_size); 1597 } 1598 } else { 1599 //Ver1 1600 if(fprice.length == 0) fprice = fcaption; 1601 1602 if(checkPriceHidden) fprice.html(''); 1603 else fprice.html('<span class="figure-krw">₩</span>' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + product_status); 1604 } 1605 1606 if($(c).find('ul.figure.review').length > 0) { 1607 var gallery_review = (v.review_onoff && v.review_cnt) ? v.review_cnt : 0; 1608 if(gallery_review > 0) { 1609 $(c).find('ul.figure.review, ul.figure.review li').removeClass('hide'); 1610 $(c).find('ul.figure.review .figure-review-cnt').html(gallery_review); 1611 $(c).find('ul.figure.review .figure-review-score').html(v.review_score); 1612 } else { 1613 $(c).find('ul.figure.review, ul.figure.review li').addClass('hide'); 1614 $(c).find('ul.figure.review .figure-review-cnt, ul.figure.review .figure-review-score').html(''); 1615 } 1616 } 1617 1618 if(fbasket.length > 0) { 1619 var checkOldBlock = ($(c).find('.figure.basket[data-oldver="true"]').length > 0) ? true : false, 1620 checkOldverBasket = (typeof settings.field_oldver != 'undefined' && settings.field_oldver && settings.field_oldver.indexOf('basket') > -1) ? true : false, 1621 checkDisabledBasket = (typeof settings.field_disable != 'undefined' && settings.field_disable && settings.field_disable.indexOf('basket') > -1) ? true : false;
1622 if(v.basket_off) fbasket.addClass('cannotby hide'); 1623 else if(val.seq == 'all_products') fbasket.removeClass('hide'); 1624 else if(checkDisabledBasket || (!checkDisabledBasket && checkOldBlock && !checkOldverBasket)) fbasket.addClass('hide'); 1625 else if(property.VALIDTYPE != 'SM') fbasket.addClass('hide'); 1626 else fbasket.removeClass('hide'); 1627 } 1628 1629 } else { 1630 fbrand.addClass('hide'); 1631 fprice.addClass('hide'); 1632 freview.addClass('hide'); 1633 fbasket.addClass('hide'); 1634 1635 if ( checkUseComment 1636 && settings.comment_display == 'ON' 1637 && !(settings.field_disable !== undefined && settings.field_disable.indexOf('comment') > -1) 1638 && fcomment.length > 0 1639 && (typeof v.comment_cnt != 'undefined' && v.comment_cnt > 0) 1640 ) { 1641 fcomment.removeClass('hide'); 1642 fcomment.find('.figure-comment-cnt').html(v.comment_cnt); 1643 } else { 1644 fcomment.addClass('hide'); 1645 fcomment.find('.figure-comment-cnt').empty(); 1646 } 1647 1648 if ( checkUseLike 1649 && (settings.like_display !== undefined && settings.like_display != 'N') 1650 && !(settings.field_disable !== undefined && settings.field_disable.indexOf('like') > -1) 1651 && flike.length > 0 1652 ) { 1653 flike.removeClass('hide').find('.figure-like-cnt').html(0); 1654 if(v.like !== undefined) { 1655 flike.find('.figure-like-cnt').html(v.like.cnt); 1656 if (v.like.own && v.like.cnt > 0) flike.attr('data-like', v.seq).addClass('active'); 1657 } 1658 } else { 1659 flike.addClass('hide'); 1660 } 1661 } 1662 1663 if(val.mode == 'gallery') { 1664 if(index < cookie_view) { 1665 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 1666 } else { 1667 $(c).find('figure').remove(); 1668 $(g).find('[data-loop="true"]').append($(c)[0].outerHTML); 1669 } 1670 if (total == 2) { 1671 $(c).find('figure').remove(); 1672 $('.gallery-empty').append($(c)[0].outerHTML); 1673 } 1674 } else { 1675 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 1676 } 1677 1678 }); 1679 1680 } else { 1681 checkGalleryListSample = true; 1682 if(val.mode=='project' && b.TEMPLATE == false) { 1683 nodes.addClass('gallery-item'); 1684 nodes.find('a').attr('href', ((URI=='/') ? '' : URI) + '/' + b.PAGE + '/view/template').removeAttr('data-gallery').find('img').attr('data-index',0); 1685 } 1686 1687 if(b.TEMPLATE !== false) { 1688 if ( checkUseComment 1689 && settings.comment_display == 'ON' 1690 && !(settings.field_disable !== undefined && settings.field_disable.indexOf('comment') > -1) 1691 ) { 1692 nodes.find('.figure.comment').removeClass('hide'); 1693 } else { 1694 nodes.find('.figure.comment').addClass('hide'); 1695 } 1696 1697 if ( checkUseLike 1698 && (settings.like_display !== undefined && settings.like_display != 'N') 1699 && !(settings.field_disable !== undefined && settings.field_disable.indexOf('like') > -1) 1700 ) { 1701 nodes.find('.figure.like').removeClass('hide'); 1702 } else { 1703 nodes.find('.figure.like').addClass('hide'); 1704 } 1705 } 1706 1707 $(p).find('[data-loop="true"]').append(nodes); 1708 } 1709 if(checkLoadmoreInLoop) $(p).find('[data-loop="true"]').append(glm); 1710 1711 tag = $(p)[0].outerHTML; 1712 1713 if (val.mode == 'gallery' && total == 2) { 1714 $.each($('.gallery-empty').find('.gallery-item'), function(i,v) { 1715 $(g).find('[data-loop="true"]').append(v); 1716 }); 1717 } 1718 $('#el-empty').empty(); 1719 $('.gallery-empty').remove(); 1720 } 1721 }); 1722 } else { 1723 if(typeof pageID[1] != 'undefined' && idx==0 && pageID[1] != 'template' && b.COUNT==0) { 1724 d = document.createElement('div'); 1725 $(d).addClass('temp-element').html(tag); 1726 var pTitle = (b.PARENT.title) ? b.PARENT.title : $.lang[block_lang]['editor.block.gallery.sample.title']; 1727 pCaption = (b.PARENT.caption) ? b.PARENT.caption : $.lang[block_lang]['editor.block.gallery.sample.caption']; 1728 pCaption = pCaption.replace(/\n/g, '<br />'); 1729 1730 $(d).find('.data-date').text(b.PARENT.datetime); 1731 $(d).find('.data-category').text(b.PARENT.category); 1732 $(d).find('h5.figure').text(pTitle); 1733 $(d).find('p.figure').not('.comment').html(pCaption); 1734 1735 tag = $(d).html(); 1736 $(d).remove(); 1737 tmpTag = tag; 1738 } 1739 } 1740 1741 //add style 1742 var $style_tag = $('<style type="text/css"></style>'); 1743 $style_tag.attr('id','el_'+idx+'css'); 1744 if(typeof val.elcss != 'undefined') { 1745 $style_tag.html(htmlspecialchars_decode(val.elcss)); 1746 $('.header').before($style_tag); 1747 } 1748
1749 //change carousel id 1750 var $tag = $(tag); 1751 $tag.find('video').attr({'playsinline': '','webkit-playsinline': ''}); 1752 $.each($tag.find('[data-edit="true"]'), function(i,v) { 1753 var source = $(this).outerHTML(); 1754 source = source.replace(/< /g,'<').replace(/ >/g,'>').replace(/data-attr-bookmark/g,'attr-bookmark'); 1755 $(this).replaceWith(source); 1756 }); 1757 1758 if(typeof total == 'undefined') total = 0; 1759 1760 msny = (val.feature=='masonry') ? true : false; 1761 var blocklang = ''; 1762 1763 if(val.type == 'video') { 1764 if($tag.find('.video-gallery-url').length > 0) val.mode = 'zoom'; 1765 else val.mode = 'thumb'; 1766 resizeVideoIframe($tag); 1767 } 1768 1769 if (val.type == 'video' || val.type == 'others') { 1770 var checkFullscreen = (typeof settings.fullscreen != 'undefined' && settings.fullscreen == 'ON') ? true : false; 1771 if(checkFullscreen) { 1772 $tag.find('.video-wrap').addClass('video-fullscreen'); 1773 } 1774 } 1775 1776 slideEffectClassAdd($tag); 1777 1778 const $last_el = ($('.fnav').length) ? $('.fnav') : $('.el-footer'); 1779 $last_el.before(`<template class="elementAddPoint" data-id="${val.seq}"></template>`); 1780 1781 //íì´ì§ ì´ë 1782 $tag.addClass('el_' + idx) 1783 .attr('data-id', val.seq) 1784 .attr('data-el','el_' + idx) 1785 .attr('data-pos', idx+1) 1786 .attr('data-name', val.elname) 1787 .attr('data-case', settings?.blockorg || val.name) 1788 .attr('data-msny', msny) 1789 .attr('data-type', val.type) 1790 .attr('data-type2', val.type2) 1791 .attr('data-feature', val.feature) 1792 .attr('data-mode', val.mode) 1793 .attr('data-width', val.folder) 1794 .attr('data-overlap',val.overlap); 1795 if(val.type == 'form' && typeof val.form_done != 'undefined') $tag.attr('data-form-done', val.form_done); 1796 1797 setBlockAOS($tag,{block:settings, skipRefresh:true}); 1798 1799 if($tag.hasClass('modoo')) { 1800 if(window.innerWidth <= 768 && $tag.find('._spotHomesite').hasClass('is_bottom')) { 1801 $tag.find('._spotHomesite').removeClass('is_bottom'); 1802 } 1803 1804 if($tag.find('._sectionSpot').hasClass('type_full') && window.innerWidth > 768) { 1805 var A = $tag.find('._areaLogin').length ? true : false, 1806 C = window.innerHeight; 1807 1808 if (A) { 1809 C -= 50; 1810 } 1811 1812 $tag.find("._sectionSpot .swiper-wrapper").css("height", C); 1813 $tag.find("._sectionSpot .swiper-slide").css("height", C); 1814 $tag.find("._sectionSpot ._imgCover").css("height", C).each(function(F, G) { 1815 var D = $(G); 1816 var E = D.attr("data-lazy-background-img-src"); 1817 D.css({ 1818 backgroundImage: "url(" + E + ")", 1819 filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + E + '}", sizingMethod="scale")' 1820 }); 1821 }); 1822 if (!$tag.find("._spotHomesite").hasClass("is_bottom")) { 1823 $tag.find("._spotHomesite").css("height", C); 1824 } 1825 } 1826 1827 if($tag.find('.page-container-mobile').length > 0) { 1828 if(window.innerWidth <= 768) $tag.find('[data-role="page-container"]._content').hide(); 1829 else $tag.find('[data-role="page-container"]._content').show(); 1830 } 1831 1832 if($tag.parents('body').is('.clnav-overlap-OFF') && $tag.is('[data-el="el_0"]')) { 1833 $tag.find('._spotHomesite .site_info').append(fl_data.el_html); 1834 } 1835 } 1836 1837 var checkNotSupported = (!is_templates) ? $.notSupported.check(val.type,val.type2,val.feature) : false; 1838 if(checkNotSupported) { 1839 $tag.html('').attr('class',`hide element ${val.elname} el_${idx}`); 1840 $(`template.elementAddPoint[data-id="${val.seq}"]`).replaceWith($tag); 1841 $(`#el_${idx}css, #js_${idx}`).remove(); 1842 return Promise.resolve(); 1843 } 1844 1845 if(typeof settings.blocklang != 'undefined') { 1846 blocklang = settings.blocklang; 1847 $tag.attr('data-blocklang',blocklang); 1848 } 1849 1850 if(val.type == 'contact') { 1851 setContactSubmitSecurity($tag, val.seq, settings, block_lang); 1852 } 1853 1854 if (val.type == 'sync') { 1855 showHideSyncField($tag, settings); 1856 1857 var sync_list_total = (typeof val.sync !='undefined' && typeof val.sync.list != 'undefined' && (val.sync.list).length > 0) ? (val.sync.list).length : 0; 1858 if($tag.find('.slick-page-label').length > 0) { 1859 var page_label = sync_list_total; 1860 if(val.type2 == 'imgpitem' && sync_list_total == 0) page_label = $tag.find('.slick .item').length; 1861 1862 $tag.find('.slick-page-label .slick-page-now').text(1); 1863 $tag.find('.slick-page-label .slick-page-total').text(page_label); 1864 } 1865 1866 if($tag.find('.sync-option').length > 0) { 1867 var sync_css = CSSJSON.toJSON(htmlspecialchars_decode(val.elcss)), 1868 sync_s = style.get(sync_css,val.elname); 1869 if(typeof sync_s.__display_count != 'undefined') { 1870 var display_cnt = Number(sync_s.__display_count) || 10; 1871 $tag.find(`.sync-item:gt(${display_cnt-1}
1871)`).addClass('hide'); 1872 1873 if($tag.find('.sync-page-label').length > 0) { 1874 var sync_p_cnt = $tag.find('.sync-row .sync-item').length, 1875 sync_p_total = Math.ceil(sync_p_cnt / display_cnt); 1876 $tag.find('.sync-page .sync-page-now').text(1); 1877 $tag.find('.sync-page .sync-page-total').text(sync_p_total); 1878 1879 if(sync_p_total == 1) $tag.find('.sync-page-wrap').hide(); 1880 else $tag.find('.sync-page-wrap').show(); 1881 } 1882 } 1883 } 1884 1885 var sync_loadmore_lang = block_lang; 1886 if(typeof settings.loadmore_lang != 'undefined' && settings.loadmore_lang && $.inArray(settings.loadmore_lang.toLowerCase(), ['ko','en']) > -1) sync_loadmore_lang = settings.loadmore_lang.toLowerCase(); 1887 $tag.find('.sync-page-more-str').text($.lang[sync_loadmore_lang]['config.loadmore']); 1888 } 1889 1890 if(checkGalleryView) { 1891 if(val.page == 'fixedblock_'+b.PARENT.pid) $tag.addClass('el-fixedblock'); 1892 else $tag.removeClass('el-fixedblock'); 1893 1894 $tag.attr('data-pos', page_pos); 1895 // if(b.LUX && (val.orgpos == '1' || $tag.is('.lux-product-block'))) $tag.attr('data-ppos', (val.pos*1) + 1); 1896 // else $tag.attr('data-ppos', val.pos); 1897 $tag.attr('data-ppos', val.pos); 1898 $tag.attr('data-posby', val.elnew); 1899 } 1900 1901 if(val.type == 'contact' && val.page == 'fixedcontact') { 1902 $.fixedContact.init($tag); 1903 } 1904 1905 if(val.type=='forum' || val.type=='latest') $tag.addClass('preloading'); 1906 1907 var checkPageblock = (val.seq === 'all_products' || (val.orgpos == 1 && val.orgpage)) ? true : false; 1908 if(b.ONE && checkPageblock) { 1909 $tag.attr('data-pagename', val.orgpage); 1910 $tag.addClass('link-to-'+JSON.parse('"'+val.orgpage.replace(/ /g,'-')+'"')); 1911 } 1912 1913 $tag.addClass('element'); 1914 1915 1916 $(`template.elementAddPoint[data-id="${val.seq}"]`).replaceWith($tag.closest('.elem, .element')); 1917 setOldVerBlockView($tag,val); 1918 1919 if(val.type == 'calendar'){ 1920 var currentDate = new Date(), 1921 getYear = currentDate.getFullYear(), 1922 getMonth = String(currentDate.getMonth() + 1).padStart(2, "0"), 1923 yearMonth = getYear + '-' + getMonth; 1924 $.cl_calendar.init(val.sid, val.seq, yearMonth, val); 1925 } 1926 1927 if(val.type == 'sns' && typeof val.type2 != 'undefined' && val.type2 == 'feed') { 1928 $tag.find('.data-feed-load-more').attr('data-feed-el',val.elname); 1929 $tag.find('.data-feed-load-more').removeAttr('style'); 1930 $tag.find('.show-posts').removeClass('show-posts'); 1931 1932 if(val.mode == 'site') { 1933 if(!$.isEmptyObject(b.SOCIAL)) { 1934 var load_sns = {}; 1935 if(!$.isEmptyObject(b.SOCIAL.instagram) && typeof settings.sns_instagram != 'undefined' && settings.sns_instagram == 'ON') load_sns['instagram'] = b.SOCIAL.instagram; 1936 if(!$.isEmptyObject(b.SOCIAL.twitter) && typeof settings.sns_twitter != 'undefined' && settings.sns_twitter == 'ON') load_sns['twitter'] = b.SOCIAL.twitter; 1937 1938 if(!$.isEmptyObject(load_sns)) { 1939 loadingElement(val.elname,'loading posts...'); 1940 updateFeed(val.elname, load_sns, settings, function() { 1941 $('.'+val.elname+' .listprogress').remove(); 1942 }); 1943 } 1944 } 1945 } else { 1946 // SNS FEED:: before version 1947 if(typeof settings.sns != 'undefined' && settings.sns.twitter) { 1948 loadingElement(val.elname,'loading posts...'); 1949 updateFeed(val.elname,settings.sns); 1950 } 1951 } 1952 } 1953 1954 if(val.type == 'others' && typeof val.type2 != 'undefined' && val.type2 == 'countdown') { 1955 var el_dday = $tag.find('[data-dday="true"]'), 1956 cd_date = (el_dday.attr('data-countdown')) ? el_dday.attr('data-countdown') : new Date(), 1957 dateformat = { days : '%D', hours: '%H', minutes: '%M', seconds: '%S' }, 1958 dateendformat = { days : '00', hours: '00', minutes: '00', seconds: '00' }; 1959 1960 if( typeof settings.countdown != 'undefined' && settings.countdown ) { //set - block setting date 1961 cd_date = settings.countdown; 1962 } 1963 if( !el_dday.attr('data-countdown') && typeof countdown == 'object' ) { //set - example date 1964 cd_date.setTime(cd_date.getTime() + (35*24*60*60*1000)); 1965 } 1966 cd_date = moment(cd_date).format('YYYY/MM/DD HH:mm:ss'); 1967 1968 el_dday.countdown(cd_date, function(event) { 1969 $(this).find('.date-item[data-datetype]').each(function(i) { 1970 var dd_type = $(this).attr('data-datetype'), 1971 dd_format = $(this).attr('data-format'), 1972 dd_endformat = $(this).attr('data-finish'); 1973 1974 if(typeof dd_format == 'undefined' || !dd_format) dd_format = dateformat[dd_type]; 1975 if(typeof dd_endformat == 'undefined' || !dd_endformat) dd_endformat = dateendformat[dd_type]; 1976 1977 if(event.elapsed) $(this).text(dd_endformat); 1978 else $(this).text(event.strftime(dd_format)); 1979 }); 1980 }); 1981 1982 if($tag.find('[data-bg-video="true"]').length > 0) resizeVideoIframe($tag); 1983 } 1984 1985 if(typeof settings.bookmark != 'undefined' && settings.bookmark) { 1986 $tag.attr('data-bookmark',val.seq); 1987 } 1988 1989 if(val.type == 'gallery') { 1990 // gallery frame add 1991 if(val.mode == 'gallery' && total) tag = appendGalleryFrame($(tag), val.seq, val.type, val.elsettings); 1992
1993 (checkGalleryListEmpty) ? $tag.addClass('emptyGallery') : $tag.removeClass('emptyGallery'); 1994 1995 $tag.attr('data-category',category_onoff); 1996 $tag.attr('data-gallery-sort',gallery_sort); 1997 1998 if(category_onoff == 'ON'|| gallery_sort == 'product') { 1999 initGToolbar($tag, {id:val.seq, settings:settings}); 2000 } 2001 2002 var img_onoff = (typeof settings.img_original_display != 'undefined' && settings.img_original_display) ? settings.img_original_display : 'ON', 2003 title_onoff = (typeof settings.gframe_title_visible != 'undefined' && settings.gframe_title_visible == 'OFF') ? 'OFF' : 'ON'; 2004 like = (typeof settings.like_display != 'undefined' && settings.like_display) ? settings.like_display : 'N'; 2005 2006 $tag.find('[data-gallery]').attr({'data-img-original':img_onoff, 'data-gallery-title':title_onoff, 'data-gallery-like':like}); 2007 if(!title_onoff) $tag.find('[data-gallery]').attr('data-title',''); 2008 2009 if(typeof val.price_hidden != 'undefined' && val.price_hidden == 'ON') { 2010 $tag.find('.figure.price').html(''); 2011 } 2012 2013 showHideGalleryField($tag,settings); 2014 reloadBlockMasonry('init', $tag); 2015 2016 var $glmBtnWrap = $tag.find('.loadmore-wrap'), 2017 $glmBtn = $tag.find('.loadmore-wrap .gallery-loadmore'), 2018 checkLoadmore = (total > view && total > cookie_view && !checkGalleryListEmpty) ? true : false, 2019 glm_lang = LANG; 2020 2021 if(typeof settings.loadmore_lang != 'undefined' && settings.loadmore_lang && $.inArray(settings.loadmore_lang.toLowerCase(), ['ko','en']) > -1) glm_lang = settings.loadmore_lang.toLowerCase(); 2022 else if(typeof block_lang != 'undefined' && $.inArray(block_lang, ['ko','en']) > -1) glm_lang = block_lang; 2023 var glm_txt = $.lang[glm_lang]['config.loadmore']; 2024 2025 if($glmBtnWrap.length == 0) { 2026 // gallery loadmore btn - default (ver1) 2027 if(checkLoadmore) { 2028 var glm_class = (val.feature=='masonry') ? 'gallery-loadmore masonry-layout' : 'gallery-loadmore', 2029 glm_btn = '<div class="' + glm_class + '" data-loadmore="true" data-selector=".gallery-loadmore" data-total="' + total + '" data-id="' + val.seq + '" data-page="' + (Number(cookie_page)+1) + '" data-view="' + view + '" data-folder="' + val.folder + '" data-mode="' + val.mode + '">' + glm_txt +' (<span class="display">' + cookie_view + '</span> / ' + number_format(total) + ')</div>'; 2030 2031 if($tag.find('.gallery-loadmore[data-id="'+val.seq+'"]').length > 0) $('.gallery-loadmore[data-id="'+val.seq+'"]').replaceWith(glm_btn); 2032 else $tag.append(glm_btn); 2033 } else $tag.find('.gallery-loadmore').remove(); 2034 2035 } else { 2036 // gallery loadmore btn - custom (ver2) 2037 if(checkLoadmore) { 2038 if(val.feature=='masonry') $glmBtn.addClass('masonry-layout'); 2039 else $glmBtn.removeClass('masonry-layout'); 2040 $glmBtn.attr('data-loadmore','true').attr('data-id',val.seq).attr('data-total',total).attr('data-page',Number(cookie_page)+1).attr('data-view',view).attr('data-folder',val.folder).attr('data-mode',val.mode); 2041 $glmBtn.find('.label').text(glm_txt); 2042 $glmBtn.find('.display .view').text(cookie_view); 2043 $glmBtn.find('.display .total').text(total); 2044 $glmBtnWrap.removeClass('hide').fadeIn(); 2045 } else { 2046 $glmBtnWrap.fadeOut().addClass('hide'); 2047 $glmBtn.removeAttr('data-loadmore').removeAttr('data-id').removeAttr('data-total').removeAttr('data-page').removeAttr('data-view').removeAttr('data-folder').removeAttr('data-mode').removeClass('masonry-layout'); 2048 $glmBtn.find('.label').text(glm_txt); 2049 $glmBtn.find('.display .view').text('0'); 2050 $glmBtn.find('.display .total').text('0'); 2051 } 2052 } 2053 2054 //ê°¤ë¬ë¦¬ë¸ë 모ë°ì¼ ê°ë¡ ê°¯ì ì¤ì ì í´ëì¤ì¶ê° 2055 var gal_css = CSSJSON.toJSON(htmlspecialchars_decode(val.elcss)), 2056 gal_s = style.get(gal_css,val.elname), 2057 gal_case = $tag.attr('data-case'), 2058 gal_id = $tag.attr('data-id'), 2059 gal_name = $tag.attr('data-name'); 2060 if(gal_s.__layout_m_on == 1 && gal_case != 'gallery61') { 2061 $tag.addClass('el-col-m'+gal_s.__layout_col_mc); 2062 } else if(gal_s.__layout_m_on == 1 && gal_case == 'gallery61') { 2063 $tag.addClass('el-col-m'+gal_s.__swiper_view_mc); 2064 setTimeout(function() { 2065 elGalleryJS[gal_id].gjs_load(document.querySelector('.'+gal_name)); 2066 }); 2067 } 2068 } 2069 2070 if(val.type == 'sync') { 2071 var sync_source = _this.syncUpdate($tag, val); 2072 $tag.html(sync_source); 2073 2074 if($tag.find('[data-sync-loop="true"]').length > 0) { 2075 if(val.type2 == 'tab') $tag.find('[data-sync-loop="true"] > li[data-list-no="1"]').attr('data-list-no',''); 2076 if(val.type2 == 'imgpitem' && sync_list_total > 0) $tag.find('[data-sync-loop="true"] > li:not([data-idx])').remove(); 2077 $tag.find('[data-sync-loop="true"] > li').eq(0).addClass('active').siblings().removeClass('active'); 2078 } 2079 } 2080 2081 // tab block ì°ì ìì check 2082 if(val.type == 'tabs') { 2083 var $tabs = $tag.find(".tab-box .tab:not(.hover)"), 2084 $initial_tab = ($tabs.filter('.checked').length > 0) ? $tabs.filter('.checked').first() : $tabs.filter('.active').first(); 2085 if($initial_tab.length == 0) $initial_tab = $tabs.eq(0); 2086 if($tabs.filter('.checked').length > 0) { 2087 $tabs.removeClass('active'); 2088 $initial_tab.addClass('active'); 2089 $tag.find('.tab-editor').removeClass('active'); 2090 $tag.find('.tab-editor.tabs' + $initial_tab.attr('data-order')).addClass('active'); 2091 } 2092 var el = $tag.attr('data-name'), 2093 len = $tabs.length, 2094 motion_style = $tag.attr("tab-motion-style"), 2095 tab_counted = $tag.attr("tab-count"), 2096 mobile_tab_count = $tag.attr("mobile-tab-count"), 2097 tab_count = ($(window).width() < 991) ? ((typeof mobile_tab_count != 'undefined' && mobile_tab_count) ? mobile_tab_count : ((tab_counted > 4) ? 4 : tab_counted)) : tab_counted, 2098 mobile_tab_line = $tag.attr("mobile-tab-line"), 2099 tab_case = $tag.attr("data-case"), 2100 motion = $tag.attr("tab-motion"), 2101 priority = Number($initial_tab.attr('data-order')) || 1, 2102 navigation_use = $tag.attr("navigation-use"); 2103 tabArrow(el); 2104 if(navigation_use == '1' || ($(window).width() < 991 && mobile_tab_line == '1' && len > Number(tab_count))) { 2105 if(motion_style == 1) { 2106 var motion = (((priority + 1) - Number(tab_count)) >= 0) ? priority - Number(tab_count) : 0; 2107 } else { 2108 var motion = Math.ceil(Number(priority) / Number(tab_count)) - 1; 2109 } 2110 $tag.attr('tab-motion', motion); 2111 tabMotion(el, motion, "", len, motion_style, tab_count, tab_case); 2112 } 2113 } 2114 2115 if(val.seq == 'all_products') { 2116 if (b.ONE) $tag.addClass('link-to-ì ì²´ìí'); 2117 setGToolbarAllProducts($tag, settings, val.total.list_total); 2118 } 2119 2120 if($tag.has('input.gjs').length) { 2121 var gjs_status = (typeof elGalleryJS[val.seq] != 'undefined') ? 'reload-block' : 'load-block'; 2122 setGalleryJS(gjs_status,$tag); 2123 } 2124 2125 if(val.type == 'forum') { 2126 var view = $tag.find('[data-loop="true"]').attr('data-view'); 2127 if(typeof view == 'undefined') view = 10; 2128 if(typeof $.cookie('forum_' + val.seq) != 'undefined' && $.cookie('forum_' + val.seq)) { 2129 $.forum.init(val.seq,b.PAGE,view,$.cookie('forum_' + val.seq),$.cookie('forum_'+ val.seq +'_sfl'),$.cookie('forum_'+ val.seq +'_stx'),$.cookie('forum_'+ val.seq +'_scate')); 2130 } else { 2131 $.forum.init(val.seq,b.PAGE,view); 2132 } 2133 2134 $.removeCookie('forum', { path : '/' }); 2135 $.removeCookie('forum_'+val.seq, { path : '/' }); 2136 $.removeCookie('forum_'+val.seq+'_sfl', { path : '/' }); 2137 $.removeCookie('forum_'+val.seq+'_stx', { path : '/' }); 2138 $.removeCookie('forum_'+val.seq+'_scate', { path : '/' }); 2139 2140 if(val.type2 == 'guestbook') { 2141 if(settings.input_updown == 'U') { 2142 $tag.find('.default_top').removeClass('flex-value-order2').addClass('flex-value-order1'); 2143 $tag.find('.default_bottom').removeClass('flex-value-order1').addClass('flex-value-order2'); 2144 } 2145 else { 2146 if (typeof settings.input_updown == 'undefined') {//ë¸ë ì¶ê° ë¹ì ì¸í ê° ìì ë 2147 $tag.find('.default_top').removeClass('flex-value-order2').addClass('flex-value-order1'); 2148 $tag.find('.default_bottom').removeClass('flex-value-order1').addClass('flex-value-order2'); 2149 } else { 2150 $tag.find('.default_top').removeClass('flex-value-order1').addClass('flex-value-order2'); 2151 $tag.find('.default_bottom').removeClass('flex-value-order2').addClass('flex-value-order1'); 2152 } 2153 } 2154 } 2155 } 2156 2157 if(b.LUX && typeof res != 'undefined') { 2158 shopHeaderDisplay($tag.find('.shop-filter-header'),res); 2159 } 2160 2161 if(val.type == 'latest') { 2162 var latest_data = (typeof settings.latest_data != 'undefined' && settings.latest_data) ? settings.latest_data : {}; 2163 $.latest.init(val.seq, latest_data); 2164 $tag.removeClass('preloading'); 2165 } 2166 2167 if(val.type == 'review') { 2168 galleryEL[val.seq] = { 2169 'seq' : val.seq, 2170 'elname' : val.elname, 2171 'eltag' : tag, 2172 'folder' : val.folder, 2173 'mode' : val.mode, 2174 'elsettings' : val.elsettings, 2175 'feature' : val.feature, 2176 'type' : val.type, 2177 'type2' : val.type2, 2178 'searches' : val.searches 2179 }; 2180 var gallery_data = (typeof settings.gallery_data != 'undefined' && settings.gallery_data) ? settings.gallery_data : {}; 2181 $.reviewContents.init(val.seq, gallery_data); 2182 } 2183 2184 if(b.VIEW) { 2185 var img_onoff = (typeof settings.img_original_display != 'undefined' && settings.img_original_display) ? settings.img_original_display : 'OFF'; 2186 $tag.find('img[data-attach="true"]').attr('data-img-original',img_onoff); 2187 2188 setGalleryReturnItemCookie(b.PARENT); 2189 var c_g_p = (typeof $.cookie('gallery-page-' + b.PARENT.pid) != 'undefined') ? $.cookie('gallery-page-' + b.PARENT.pid) : 1; 2190 $.cookie('gallery',b.PARENT.pid, { path: '/', expires: 12 * 60 * 60 * 1000 }); 2191 $.cookie('loadmore-' + b.PARENT.pid, c_g_p, { path: '/', expires: 12 * 60 * 60 * 1000 }); 2192 if(typeof $.cookie('gallery-page-all_products') !== 'undefined' && $.cookie('gallery-page-all_products')) { 2193 c_g_p = (typeof $.cookie('gallery-page-all_products') != 'undefined') ? $.cookie('gallery-page-all_products') : 1; 2194 $.cookie('gallery','all_products', { path: '/', expires: 12 * 60 * 60 * 1000 }); 2195 $.cookie('loadmore-all_products', c_g_p, { path: '/', expires: 12 * 60 * 60 * 1000 }); 2196 } 2197 } 2198 2199 $tag.find('[data-fixed-width]').each(function() { 2200 $(this).css('width',$(this).attr('data-fixed-width')+'px'); 2201 }); 2202 2203 2204 $tag.find('[data-map="true"]:not(iframe)').each(function() { 2205 var map_url = $(this).attr('data-url'); 2206 if(typeof map_url != 'undefined' && map_url) { 2207 var map_iframe = getMapURL(map_url,'html'); 2208 $(this).replaceWith(map_iframe); 2209 if(map_iframe.indexOf('google-map disabled') === -1) $(this).next('.map-undefined').remove(); 2210 } 2211 }); 2212 2213 if(val.type == 'contact' && val.type2 == 'franchise map') { 2214 $.each($tag.find('[data-fmap-loop="true"] .item .item-name'), function(i, v) { 2215 let itemName = $(v).html(); 2216 itemName = itemName.replace(/< /g, '<').replace(/ >/g, '>'); 2217 $(v).html(itemName); 2218 }); 2219 2220 var $mapItem = $tag.find('[data-fmap-loop="true"] > .item.selected'); 2221 drawMap($mapItem, $tag); 2222 fmapMobilePaging($tag); 2223 } else { 2224 if($tag.find('[data-map_kind="kakao"]').length && (typeof kakao == 'undefined' || typeof kakao.maps == 'undefined' ||
2224kakao.maps == null || property.VALIDPLAN == '')) { 2225 $tag.find('[data-map_kind="kakao"]').html('ì§ëì°ê²°í´ì ë¨. Javascriptí¤ íì¸'); 2226 $tag.find('[data-map_kind="kakao"]').html('<iframe class="google-map" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3165.5659473821083!2d127.0282496015659!3d37.494568!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x357ca1598c361b2b%3A0xdbf9af292beff3c!2z6rCV64Ko!5e0!3m2!1sko!2skr!4v1637303748377!5m2!1sko!2skr" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"></iframe>'); 2227 } else { 2228 $tag.find('[data-map_kind="kakao"]').each(function() { 2229 var container = this; 2230 var lat = $(this).data("lat"); 2231 var lng = $(this).data("lng"); 2232 var zoomInOut = $(this).data("zoominout"); 2233 var mapTitle = $(this).data("maptitle"); 2234 var mapContent = $(this).data("mapcontent"); 2235 var useTitle = $(this).data("usetitle"); 2236 var useContent = $(this).data("usecontent"); 2237 2238 if (typeof zoomInOut == 'undefined' || !zoomInOut) zoomInOut = false; 2239 if (typeof mapTitle == 'undefined' || !mapTitle) mapTitle = ''; 2240 if (typeof mapContent == 'undefined' || !mapContent) mapContent = ''; 2241 if (typeof useTitle == 'undefined' || !useTitle) useTitle = false; 2242 if (typeof useContent == 'undefined' || !useContent) useContent = false; 2243 2244 var options = { center: new kakao.maps.LatLng(lat, lng), level: 3 }; 2245 var c_map = new kakao.maps.Map(container, options); 2246 var marker = new kakao.maps.Marker({ position: new kakao.maps.LatLng(lat, lng), map: c_map }); 2247 2248 if(zoomInOut == true) { 2249 // var mapTypeControl = new kakao.maps.MapTypeControl(); 2250 // c_map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT); 2251 // var zoomControl = new kakao.maps.ZoomControl(); 2252 // c_map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT); 2253 var zoomControlHtml = ''; 2254 zoomControlHtml += '\ 2255 <div class="zoom-control" style="margin-top: 8px; margin-right: 8px; right: 0; width: 30px; position: absolute; background-color: #fff; z-index: 1; border-radius: 3px; box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.16);">\ 2256 <div class="btn-zoom-control" data-inout="I" style="cursor: pointer; width: 30px; height: 30px;">\ 2257 <svg style="fill: #6b6b6b; margin: 3px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 11h-4V7c0-.55-.45-1-1-1s-1 .45-1 1v4H7c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1v-4h4c.55 0 1-.45 1-1s-.45-1-1-1z"/></svg>\ 2258 </div>\ 2259 <div class="slider-wrap-container" style="height: 130px;">\ 2260 <div class="slider-wrap small" style="text-align: center; height: 100%;">\ 2261 <div style="max-height: 100%;" class="zoom-control-slider"></div>\ 2262 </div>\ 2263 </div>\ 2264 <div class="btn-zoom-control" data-inout="O" style="cursor: pointer; width: 30px; height: 30px;">\ 2265 <svg style="fill: #6b6b6b; margin: 3px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 13H7c-.55 0-1-.45-1-1s.45-1 1-1h10c.55 0 1 .45 1 1s-.45 1-1 1z"/></svg>\ 2266 </div>\ 2267 </div>\ 2268 '; 2269 var $zoomController = $(zoomControlHtml); 2270 $(container).append($zoomController); 2271 var zoom_slider = $zoomController.find('.zoom-control-slider').slider({ 2272 'orientation': 'vertical', 2273 'min' : 1, 2274 'max' : 14, 2275 'step' : 1, 2276 'value' : 3, 2277 'handle' : '<div>dfafasdfas</div>', 2278 // 'reversed' : true, 2279 'tooltip' : 'hide', 2280 }).on('slide', function(data) { 2281 c_map.setLevel(data.value); 2282 c_map.setCenter(marker.getPosition()); 2283 }).on('slideStop', function(data) { 2284 c_map.setLevel(data.value); 2285 c_map.setCenter(marker.getPosition()); 2286 }); 2287 2288 $zoomController.find('.btn-zoom-control').on('click', function() { 2289 if($(this).data('inout') == 'I') { 2290 c_map.setLevel(c_map.getLevel() - 1); 2291 zoom_slider.slider('setValue', c_map.getLevel()); 2292 } else if($(this).data('inout' == 'O')) { 2293 c_map.setLevel(c_map.getLevel() + 1); 2294 zoom_slider.slider('setValue', c_map.getLevel()); 2295 } 2296 }); 2297 2298 kakao.maps.event.addListener(c_map, 'zoom_changed', function() { 2299 zoom_slider.slider('setValue', c_map.getLevel()); 2300 }); 2301 } 2302 2303 if((useTitle == true || useContent == true) && (mapTitle || mapContent)) { 2304 var iwContent = ''; 2305 if(useTitle == true && mapTitle) { 2306 iwContent = '<div class="title">' + mapTitle + '</div>'; 2307 } 2308 if(useContent == true && mapContent) { 2309 iwContent += '<div class="content">' + mapContent + '</div>'; 2310 } 2311 // var infowindow = new kakao.maps.InfoWindow({ 2312 // position: marker.getPosition(), 2313 // content : iwContent 2314 // }); 2315 // infowindow.open(c_map, marker); 2316 if(iwContent) { 2317 iwContent = '<div class="contact-map-info-window"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M8 0C4.69 0 2 2.69 2 6s1 4 6 10c5-6 6-6.69 6-10s-2.69-6-6-6zm0 8.3a2.3 2.3 0 1 1 0-4.6 2.3 2.3 0 0 1 0 4.6z"></path></svg>
2317' + iwContent + '</div>'; 2318 var infoWindow = $(iwContent); 2319 $(container).append(infoWindow); 2320 // infoWindow.css('bottom', 'calc(-100% + ' + (infoWindow.outerHeight() + 36) + 'px)'); 2321 } 2322 } 2323 $(window).on("resize", function() { 2324 c_map.setCenter(marker.getPosition()); 2325 }); 2326 }); 2327 } 2328 2329 if($tag.find('[data-map_kind="naver"]').length && (typeof naver == 'undefined' || typeof naver.maps == 'undefined' || naver.maps == null || property.VALIDPLAN == '')) { 2330 $tag.find('[data-map_kind="naver"]').html('ì§ëì°ê²°í´ì ë¨. Client ID íì¸'); 2331 $tag.find('[data-map_kind="naver"]').html('<iframe class="google-map" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3165.5659473821083!2d127.0282496015659!3d37.494568!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x357ca1598c361b2b%3A0xdbf9af292beff3c!2z6rCV64Ko!5e0!3m2!1sko!2skr!4v1637303748377!5m2!1sko!2skr" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"></iframe>'); 2332 } else { 2333 $tag.find('[data-map_kind="naver"]').each(function() { 2334 var container = this; 2335 var lat = $(this).data("lat"); 2336 var lng = $(this).data("lng"); 2337 var options = { center: new naver.maps.LatLng(lat, lng), zoom: 17}; 2338 var c_map = new naver.maps.Map(container, options); 2339 var marker = new naver.maps.Marker({ position: new naver.maps.LatLng(lat, lng), map: c_map}); 2340 var zoomInOut = $(this).data("zoominout"); 2341 var mapTitle = $(this).data("maptitle"); 2342 var mapContent = $(this).data("mapcontent"); 2343 var useTitle = $(this).data("usetitle"); 2344 var useContent = $(this).data("usecontent"); 2345 if(typeof zoomInOut == 'undefined' || !zoomInOut) zoomInOut = false; 2346 if(typeof mapTitle == 'undefined' || !mapTitle) mapTitle = ''; 2347 if(typeof mapContent == 'undefined' || !mapContent) mapContent = ''; 2348 if(typeof useTitle == 'undefined' || !useTitle) useTitle = false; 2349 if(typeof useContent == 'undefined' || !useContent) useContent = false; 2350 if(zoomInOut == true) { 2351 // options.zoomControl = true; 2352 var zoomControlHtml = ''; 2353 zoomControlHtml += '\ 2354 <div class="zoom-control" style="margin-top: 8px; margin-right: 8px; right: 0; width: 30px; position: absolute; background-color: #fff; z-index: 1; border-radius: 3px; box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.16);">\ 2355 <div class="btn-zoom-control" data-inout="I" style="cursor: pointer; width: 30px; height: 30px;">\ 2356 <svg style="fill: #6b6b6b; margin: 3px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 11h-4V7c0-.55-.45-1-1-1s-1 .45-1 1v4H7c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1v-4h4c.55 0 1-.45 1-1s-.45-1-1-1z"/></svg>\ 2357 </div>\ 2358 <div class="slider-wrap-container" style="height: 130px;">\ 2359 <div class="slider-wrap small" style="text-align: center; height: 100%;">\ 2360 <div style="max-height: 100%;" class="zoom-control-slider"></div>\ 2361 </div>\ 2362 </div>\ 2363 <div class="btn-zoom-control" data-inout="O" style="cursor: pointer; width: 30px; height: 30px;">\ 2364 <svg style="fill: #6b6b6b; margin: 3px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 13H7c-.55 0-1-.45-1-1s.45-1 1-1h10c.55 0 1 .45 1 1s-.45 1-1 1z"/></svg>\ 2365 </div>\ 2366 </div>\ 2367 '; 2368 var $zoomController = $(zoomControlHtml); 2369 $(container).append($zoomController); 2370 var zoom_slider = $zoomController.find('.zoom-control-slider').slider({ 2371 'orientation': 'vertical', 2372 'min' : 6, 2373 'max' : 21, 2374 'step' : 1, 2375 'value' : 17, 2376 'handle' : '<div>dfafasdfas</div>', 2377 'reversed' : true, 2378 'tooltip' : 'hide', 2379 }).on('slide', function(data) { 2380 c_map.setZoom(data.value); 2381 c_map.setCenter(marker.getPosition()); 2382 }).on('slideStop', function(data) { 2383 c_map.setZoom(data.value); 2384 c_map.setCenter(marker.getPosition()); 2385 }); 2386 $zoomController.find('.btn-zoom-control').on('click', function() { 2387 if($(this).data('inout') == 'I') { 2388 c_map.setZoom(c_map.getZoom() + 1); 2389 zoom_slider.slider('setValue', c_map.getZoom()); 2390 } else if($(this).data('inout' == 'O')) { 2391 c_map.setZoom(c_map.getZoom() - 1); 2392 zoom_slider.slider('setValue', c_map.getZoom()); 2393 } 2394 }); 2395 2396 naver.maps.Event.addListener(c_map, 'zoom_changed', function(zoom) { 2397 zoom_slider.slider('setValue', c_map.getZoom()); 2398 }); 2399 } 2400 2401 if((useTitle == true || useContent == true) && (mapTitle || mapContent)) { 2402 var iwContent = ''; 2403 if(useTitle == true && mapTitle) { 2404 iwContent = '<div class="title">' + mapTitle + '</div>'; 2405 } 2406 if(useContent == true && mapContent) { 2407 iwContent += '<div class="content">' + mapContent + '</div>'; 2408 } 2409 2410 if(iwContent) { 2411 iwContent = '<div class="contact-map-info-window"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M8 0C4.69 0 2 2.69 2 6s1 4 6 10c5-6 6-6.69 6-10s-2.69-6-6-6zm0 8.3a2.3 2.3 0 1 1 0-4.6 2.3 2.3 0 0 1 0 4.6z"></path></svg>
2411' + iwContent + '</div>'; 2412 var infoWindow = $(iwContent); 2413 $(container).append(infoWindow); 2414 // infoWindow.css('bottom', 'calc(-100% + ' + (infoWindow.outerHeight() + 36) + 'px)'); 2415 } 2416 // var infowindow = new naver.maps.InfoWindow({ 2417 // content : iwContent 2418 // }); 2419 // infowindow.open(c_map, marker); 2420 } 2421 $(window).on("resize", function() { 2422 c_map.setCenter(marker.getPosition()); 2423 }); 2424 }); 2425 } 2426 } 2427 2428 if(val.type == 'form' || (val.type == 'contact' && val.type2 == 'franchise bar')) { 2429 $.forms.init(val.seq); 2430 } 2431 2432 if(val.type == 'showcase') { 2433 if($tag.hasClass('carousel') && $tag.find('.item').length > 1 && $tag.find('.control-box .carousel-control').hasClass('hide')) { 2434 $tag.find('.control-box .carousel-control').removeClass('hide'); 2435 } 2436 } 2437 2438 //video block ::: gallery 2439 if(val.type == 'video') { 2440 if($tag.find('.video-gallery-url').length>0) { //ì¬ìë°©ì : íë보기 2441 $.each($tag.find('.item'),function(i,v){ 2442 if(val.mode=='zoom') appendGalleryFrame($(this).parents('.element'),val.seq,val.type); 2443 }); 2444 2445 // let lsw = document.querySelector('.element[data-id="' + val.seq + '"] .swiper'); 2446 // if(lsw && lsw.swiper) { 2447 // let slider_motion = $('.element[data-id="' + val.seq + '"]').attr('data-slider-motion'); 2448 2449 // $('#gframe-' + val.seq).on('opened', function(event, slide){ 2450 // console.log('gallery opend', slider_motion); 2451 // if(slider_motion != 'stop') { 2452 // lsw.swiper.autoplay.stop(); 2453 // } 2454 // }).on('closed', function (event){ 2455 // console.log('gallery closed'); 2456 // if(slider_motion != 'stop') { 2457 // lsw.swiper.autoplay.start(); 2458 // } 2459 // }); 2460 // } 2461 } 2462 2463 resizeVideoIframe($tag); 2464 } 2465 2466 //add script 2467 if(val.eljs){ 2468 var js_string = val.eljs; 2469 var $script_tag = $('<script type="text/javascript" id="js_' + idx + '"></script>'); 2470 $script_tag.html(js_string); 2471 $('.dsgn-body').append($script_tag); 2472 } 2473 2474 if($tag.find('.slick').length > 0) { 2475 if (val.type == 'sync' && typeof syncSlickFn == 'function') syncSlickFn('.' + val.elname); 2476 else if($tag.is('[data-clslick]') && typeof clSlickFn == 'function') clSlickFn('.' + val.elname); 2477 } 2478 2479 // log 2480 if(typeof settings['google_track'] != 'undefined') { 2481 $('.dsgn-body').append("<script type='text/javascript' src='//www.googleadservices.com/pagead/conversion_async.js'></script>"); 2482 } 2483 2484 //add style 2485 var jcss = CSSJSON.toJSON(val.elcss); 2486 2487 var element_mh = jcss?.children[`.${val.elname}`]?.attributes['min-height'] ?? ''; 2488 if (element_mh && /%$/.test(element_mh)) { 2489 const converted_mh = element_mh.replace('%', ''); 2490 $tag.css('min-height',`${converted_mh}vh`); 2491 } 2492 2493 var elpd = style.getPadding(jcss,val.elname); 2494 var pt = parseInt(elpd.top); 2495 var pb = parseInt(elpd.bottom); 2496 2497 if(pt>0||pb>0){ 2498 default_t_css = default_t_css + '\n .'+val.elname + '{'; 2499 if(Math.ceil(pt*0.8)>0) 2500 default_t_css = default_t_css + 'padding-top: '+Math.ceil(pt*0.8) + 'px!important;'; 2501 if(Math.ceil(pb*0.8)>0) 2502 default_t_css = default_t_css + 'padding-bottom: '+Math.ceil(pb*0.8) + 'px!important;'; 2503 default_t_css = default_t_css + '}'; 2504 2505 default_m_css = default_m_css + '\n .'+val.elname + '{'; 2506 if(Math.ceil(pt*0.5)>0) 2507 default_m_css = default_m_css + 'padding-top: '+Math.ceil(pt*0.5) + 'px!important;'; 2508 if(Math.ceil(pb*0.5)>0) 2509 default_m_css = default_m_css + 'padding-bottom: '+Math.ceil(pb*0.5) + 'px!important;'; 2510 default_m_css = default_m_css + '}'; 2511 } 2512 if(idx == data.length-1){ 2513 var css = '@media only screen and (max-width:767px) {' + default_t_css + '\n}\n'; 2514 css = css + '@media only screen and (max-width:480px) {' + default_m_css + '\n}'; 2515 2516 if($('#el-paddingcss').length == 0) $('.dsgn-body').find('#el_'+(data.length-1)+'css').after('<style id="el-paddingcss">'+css+'</style>'); 2517 else $('#el-paddingcss').append(css); 2518 } 2519 2520 if(val.type == 'product') { 2521 if(val.is_wishlist == true) { 2522 $('.product-detail-btn .btn-myfav .btn-myfav-icon').addClass('on'); 2523 } else { 2524 $('.product-detail-btn .btn-myfav .btn-myfav-icon').removeClass('on'); 2525 } 2526 } 2527 2528 if($.inArray(val.type, ['contents', 'text', 'image', 'video']) > -1) { 2529 let ecs = enableContentsSlider(val.seq, val.type, settings); 2530 if(typeof settings.list_type != 'undefined' && settings.list_type == 's' && ecs) { 2531 $.contentsSlider.ready(val.seq).then(() => {$.contentsSlider.init(val.seq, settings)}); 2532 } 2533 } 2534 2535 return new Promise(function(resolve) { setTimeout(resolve) }); 2536 } 2537 2538 if(check_modoo) { 2539 m_floating(fl_data); 2540 } 2541 var dataloop = async function(data) { 2542 var promises = data.map(async function(val, idx) { 2543 return await drawData(idx, val) 2544 }); 2545 return await Promise.all(promises); 2546 } 2547 2548 if(checkGalleryView) setViewPageStyle(); 2549 dataloop(data).then(function() { 2550 $('.el-footer').css('visibility', 'visible'); 2551 $.processOFF(); 2552 2553 document.querySelectorAll('.element video').forEach(function(video) { 2554 if(video.readyState > 0) video.classList.add('loaded'); 2555 video.addEventListener('loadeddata', function() { 2556 this.classList.add('loaded'); 2557 }); 2558 }); 2559 2560 $('.dsgn-body').fitVids(); 2561 $('.carousel').carousel({ 2562 pause: 'none' 2563 }); 2564 2565 changeBrokenImages('.element'); 2566 2567 $('.element').each(function(i,v){ 2568 var $tag = $(v); 2569 var elFonts = $tag.css('font-family'); 2570 elFonts = elFonts + ",'Nanum Gothic'"; 2571 elFonts = elFonts.replace(/"/g, '\''); 2572 $tag.css('font-family', ($tag.css('font-family') + ",'Nanum Gothic'").replace(/"/g, '\'')); 2573 }); 2574 $('html').toggleClass('gtoolbar-sticky-ON', $('.cl-gtoolbar[data-sticky="ON"]').length > 0 ? true : false); 2575 2576 if(b.VIEW) { 2577 // prev next
2578 $('.data-page-prev').addClass('active'); 2579 $('.data-page-next').addClass('active'); 2580 2581 if(b.PARENT.prev === null) $('.data-page-prev').removeClass('active'); 2582 if(b.PARENT.next === null) $('.data-page-next').removeClass('active'); 2583 2584 if(b.PARENT.mode == 'shopping') { 2585 $('.data-page-prev, .data-page-next').removeClass('active'); 2586 if(b.PARENT.prev) $('.data-page-prev').addClass('active'); 2587 if(b.PARENT.next) $('.data-page-next').addClass('active'); 2588 2589 if(typeof property.PRODINFO === 'object') $.products.display_info(); 2590 if($('#review-onoff').val() == 'true') $.products.review(b.VIEW,b.PAGE); 2591 if($('#qna-onoff').val() == 'true') $.products.qna(b.VIEW,b.PAGE); 2592 } else { 2593 if($(`.page-comments[data-id="${b.VIEW}"]`).length == 0) _this.displayComment(); 2594 2595 // initViewPageToolbar().then(function(pageToolbar){ 2596 // setViewPageToolbar(); 2597 // }); 2598 initViewPageBottom(); 2599 } 2600 } 2601 2602 var isPage = false; 2603 $.each(b.MENULIST, function(i,k) { 2604 isPage = (k.toUpperCase() == b.PAGE.toUpperCase()) ? true : isPage; 2605 }); 2606 2607 // if(!b.ONE && !b.VIEW && !isPage) location.replace(URL); 2608 2609 // menu ver3 : fheader 2610 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 2611 2612 // shopping wrap remove 2613 if($('.shopping-wrap').length || $('.shopping-more-wrap').length) { 2614 $('.shopping-wrap').remove(); 2615 $('.shopping-more-wrap').remove(); 2616 } 2617 2618 // shopping wrap create 2619 if(!$('.dsgn-body').hasClass('mode-config') && $('.cl-s-product-detail').length > 0 && $('div[data-el*="el_"]').length > 1) { 2620 if(shopping_more == 'ON') { 2621 var prod_content = $('div[data-el*="el_"]').not('.cl-s-product-detail').addClass('hide'); 2622 $('.product.cl-s-product-detail').after('<div class="shopping-wrap open"></div>'); 2623 $('.shopping-wrap').html(prod_content); 2624 $('div[data-el*="el_"]').each(function(idx, v) { 2625 $(this).removeClass('hide'); 2626 if($('.shopping-wrap').height() > 800) return false; 2627 }); 2628 } 2629 } 2630 /*shopping more create*/ 2631 if($('.shopping-wrap').length && $('.shopping-wrap').height() >= 800 && $('.shopping-more').length == 0) { 2632 var more_txt = (LANG == 'ko') ? 'ìíì ë³´ ë보기' : 'MORE'; 2633 var colorSet = shopping_more_color, 2634 sm_font = (!colorSet) ? '' : colorSet.color, 2635 sm_bgColor = (!colorSet) ? '' : colorSet.background_color, 2636 sm_border = (!colorSet) ? '' : colorSet.border_color; 2637 var review_chk = ($('.cl-s-product-review').length > 0) ? true : false, 2638 qna_chk = ($('.cl-s-product-qna').length > 0) ? true : false; 2639 2640 $('.shopping-wrap').css('max-height','800px') 2641 .css('overflow','hidden') 2642 .after('<div class="shopping-more-wrap"><div class="shopping-more">'+more_txt+'</div></div>'); 2643 $('.shopping-wrap').removeClass('open'); 2644 if(sm_font) $('.shopping-more').css('color',sm_font);
2645 if(sm_bgColor) $('.shopping-more').css('background-color',sm_bgColor); 2646 if(sm_border) $('.shopping-more').css('border-color',sm_border); 2647 if(!review_chk && !qna_chk) $('.shopping-more-wrap').css('padding-bottom','100px'); 2648 } 2649 2650 $('.el-footer').show(); 2651 2652 if($('.element a[data-popup][data-popup-name]').length > 0 && (!b.VALIDPLAN || b.VALIDTYPE == 'PK')) { 2653 $('.element a[data-popup][data-popup-name]').addClass('disabled'); 2654 } 2655 2656 if($('.element[data-layout]').length > 0) { 2657 setLayoutHeight(); 2658 } 2659 setBlockParallax($('.element')); 2660 if($('.element[data-aos]').length > 0) scheduleBlockAOSRefresh(100); 2661 2662 if(typeof fbq == 'function' && b.VALIDTYPE == 'SM') { 2663 if(b.VIEW) { 2664 var checkProduct = (b.PAGE.match(/^forum,/g) === null && typeof b.PARENT != 'undefined' && typeof b.PARENT.mode != 'undefined' && b.PARENT.mode == 'shopping') ? true : false, 2665 mn = (b.ONE) ? b.PARENT.opage : b.PARENT.ppage; 2666 if(checkProduct && typeof callbackEvtViewContent == 'function') callbackEvtViewContent(mn,b.PARENT.seq,b.PARENT.title,$('.total-price').text().replace(/[^0-9]/g,'')); 2667 } else { 2668 var checkProductList = ($('.element[data-type="gallery"][data-mode="shopping"]').length > 0) ? true : false; 2669 if(checkProductList && typeof callbackEvtLead == 'function') callbackEvtLead(b.PAGE); 2670 } 2671 } 2672 2673 deferred.resolve(); 2674 }); 2675 2676 return deferred.promise(); 2677 } 2678 2679 var elPush = function (prop) { 2680 /* prop - reorder list hide */ 2681 var pageID = b.PAGE.split(','), 2682 chgBG = false, 2683 tmpTag = '', 2684 currentPAGE = '', 2685 default_t_css = '', default_m_css = ''; 2686 var checkGalleryView = (b.VIEW && b.PAGE.match(/^forum,/g) === null) ? true : false; 2687 var block_display = (typeof b.SETTINGS.block_display != 'undefined' && b.SETTINGS.block_display) ? b.SETTINGS.block_display : {}, 2688 footer_display = (typeof block_display.footer_display != 'undefined' && block_display.footer_display) ? block_display.footer_display : 'ON', 2689 checkFooterDisplay = (footer_display != 'OFF') ? true : false; 2690 2691 currentPAGE = b.PAGE; 2692 var contentsParam = (currentPAGE=='index,template' && param.indexOf('/org/') == -1) ? param + '/org/' + b.PAGE : param; 2693 2694 if(b.VALIDPLAN && $.inArray(b.VALIDTYPE, ['BN','SM']) > -1 && b.CERT_USE == 'Y') { 2695 if(b.CERT_USE == 'Y') { 2696 if(b.UMEMBER.check_login == true) isUserCertified(history); 2697 } 2698 } 2699 if(pageID[0] == 'forum' && b.VIEW) { 2700 clearDsgnbody(); 2701 2702 var preloading = loadingScript({'forum':true}); 2703 preloading.done(function() { 2704 var ps_fmview = $.forum.view(b.VIEW); 2705 ps_fmview.done(function(data) { 2706 _this.displayComment(data); 2707 if(b.VIEW) setViewPageToolbar(); 2708 $('.el-footer').show().css('visibility', 'visible'); 2709 $.processOFF(); 2710 $('.dsgn-body').animate({scrollTop: 0}, 0,'easeInOutQuart'); 2711 }).fail(function(error_msg) { 2712 // console.log(error_msg); 2713 $.processOFF(); 2714 }); 2715 }); 2716 return false; 2717 } 2718 2719 if(b.pageContent.hasOwnProperty(currentPAGE)) { 2720 var loadCachedContents = function() { 2721 var loadingContents = loadPush(b.pageContent[currentPAGE]); 2722 loadingContents.then(function() { 2723 $('.el-footer').css('visibility', 'visible'); 2724 $.processOFF(); 2725 }); 2726 }; 2727 if(b.pageBlocksType.hasOwnProperty(currentPAGE)) { 2728 var preloading = loadingScript(b.pageBlocksType[currentPAGE]); 2729 preloading.then(loadCachedContents); 2730 } else { 2731 loadCachedContents(); 2732 } 2733 } else { 2734 contentsParam = (b.PUBLISH) ? contentsParam : contentsParam + '/render/true'; 2735 if(checkGalleryView) $('.el-footer').addClass('hide'); 2736 $.ajax({ 2737 url: '/template/contents/sid/' + b.SID + '/page/' + encodeURIComponent(currentPAGE) + contentsParam, 2738 data: { siteum: b.SITEUM }, 2739 dataType: 'json', 2740 type: 'GET', 2741 async: true, 2742 success: function(data) { 2743 if(typeof data.error != 'undefined' || data.error) { 2744 if(currentPAGE!='index,template') {
2745 alert($.lang[LANG]['page.not.found']); 2746 location.replace('/'); 2747 } 2748 } 2749 if(currentPAGE!='index,template') b.pageContent[currentPAGE] = data.contents; 2750 if(data.conf) b.pageConf[currentPAGE] = data.conf; 2751 if(typeof data.blocks_type != 'undefined') b.pageBlocksType[currentPAGE] = data.blocks_type; 2752 if(data.initContent !== undefined) property.INITPAGE = JSON.parse(data.initContent); 2753 2754 var preloading = loadingScript(data.blocks_type); 2755 preloading.then(function() { 2756 var loadingContents = loadPush(data.contents); 2757 loadingContents.then(function() { 2758 $('.el-footer').css('visibility', 'visible'); 2759 if(checkFooterDisplay && $('.el-footer').hasClass('hide')) $('.el-footer').removeClass('hide'); 2760 $.processOFF(); 2761 }); 2762 }); 2763 } 2764 }); 2765 } 2766 } 2767 2768 var scrollspy = function() { 2769 if(!b.ONE) return false; 2770 var top = 0, 2771 active = ''; 2772 2773 // top = ($('.dsgn-body').hasClass('sidebar')) ? 0 : $('.el-menu header').outerHeight(); 2774 2775 $.each(b.MENULINK,function(i,v) { 2776 2777 var $el = ($.inArray(v,property.MENULIST) > -1) ? $('.link-to-'+v) : ''; 2778 if($el.length>0) { 2779 var offset = $el.offset(); 2780 top = ($('.dsgn-body').hasClass('sidebar')) ? 0 : $('.el-menu header').outerHeight(); 2781 if((Math.floor(offset.top) - $(document).scrollTop())<= top) { 2782 active = v; 2783 } 2784 } 2785 2786 }); 2787 2788 2789 if(!$('#tpl-menu li a[href="#'+active+'"]').parent().hasClass('active')) { 2790 2791 $('#tpl-menu li').removeClass('active').removeClass('open'); 2792 2793 $('#tpl-menu li a[href="#'+active+'"]').parent().addClass('active'); 2794 if( $('#tpl-menu li a[href="#'+active+'"]').closest('.dropdown-menu').length>0 ) { 2795 if($('body').width() > 768) $('#tpl-menu li a[href="#'+active+'"]').closest('.dropdown').addClass('active'); 2796 else { 2797 //ìíì´ì§ì¼ ë 769~783 í´ìëìì ê°¤ë¬ë¦¬ ìì ë§ì°ì¤ ì¬ë¦¬ë©´ íìë©ë´ ì´ë¦¬ë íì ìì´ì 모ë°ì¼ììë§ open í´ëì¤ ì¶ê° ëëë¡ #mobile-nav ì½ë ì¶ê°. 2798 $('#mobile-nav #tpl-menu li a[href="#'+active+'"]').closest('.dropdown').addClass('open'); 2799 } 2800 } 2801 } 2802 2803 if($(document).scrollTop() + $('body').height() == $('body').prop('scrollHeight')) { 2804 2805 var last = b.MENULINK[b.MENULINK.length-1], 2806 $el = ($.inArray(last,property.MENULIST) > -1) ? $('.link-to-'+last) : ''; 2807 2808 if($el.length>0) { 2809 if($el.offset().top>top) { 2810 $('#tpl-menu li').removeClass('active').removeClass('open'); 2811 2812 if($(document).scrollTop()!=0) 2813 $('#tpl-menu li a[href="#'+last+'"]').parent().addClass('active'); 2814 2815 if($('#tpl-menu li a[href="#'+last+'"]').closest('.dropdown-menu').length>0) { 2816 if($('body').width() > 768) $('#tpl-menu li a[href="#'+last+'"]').closest('.dropdown').addClass('active'); 2817 else $('#tpl-menu li a[href="#'+last+'"]').closest('.dropdown').addClass('open'); 2818 } 2819 } 2820 } 2821 } 2822 2823 } 2824 2825 var fixedMenu = function() { 2826 if($.clnav.check()) return; 2827 2828 if($('header.navbar').hasClass('navbar-fheader')) { // menu ver3 : fheader 2829 if($('body').is('[data-gjs^="fixedscroll"]')) { 2830 return false; 2831 } 2832 2833 var isSidebar = $('.el-menu > header').hasClass('sidebar'); 2834 if($(document).scrollTop() > $('header.navbar').height()) { 2835 if(window.innerWidth > 768) { 2836 $('.menu-logo-top').hide(); 2837 $('.el-menu').addClass('fixed-fheader'); 2838 } 2839 if(b.HEADER && !isSidebar) $('header.navbar').removeClass('transparent'); 2840 } else if($(document).scrollTop() <= $('header.navbar').height()) { 2841 $('.el-menu').removeClass('fixed-fheader'); 2842 $('.menu-logo-top').show(); 2843 2844 if(b.HEADER && !b.VIEW && !isSidebar) { 2845 $('header.navbar').addClass('transparent'); 2846 $('.dsgn-body').css('padding-top','0px'); 2847 } 2848 } 2849 2850 return false; 2851 } 2852 2853 header_fixed = $('.header.el-menu').height(); 2854 var user_menu = $('.el-menu');
2855 var menu_color = $('header.navbar').css('background-color'); 2856 var menu_bg_img = (typeof $('header.navbar').css('background-image') != 'undefined') ? $('header.navbar').css('background-image') : 'none'; 2857 var menu_bg_position = (typeof $('header.navbar').css('background-position') != 'undefined') ? $('header.navbar').css('background-position') : 'center center'; 2858 var menu_bg_repeat = (typeof $('header.navbar').css('background-repeat') != 'undefined') ? $('header.navbar').css('background-repeat') : 'no-repeat'; 2859 var menu_bg_size = (typeof $('header.navbar').css('background-size') != 'undefined') ? $('header.navbar').css('background-size') : 'cover'; 2860 2861 if($(document).scrollTop() > header_fixed && user_menu.hasClass('fixed')==false && !$('.dsgn-body').hasClass('sidebar')) { 2862 user_menu.fadeOut('fast', function() { 2863 $(this).addClass('fixed').fadeIn('fast'); 2864 $('.fixed').addClass('fixed-position'); 2865 if(!b.HEADER || $('header.navbar').hasClass('sidebar') ) { 2866 var topval = ($('.creatorlink-header').length==1) ? '55px' : '0'; 2867 $('.el_0').css('margin-top',topval); 2868 var $header_empty = $('<div class="header-empty"></div>'); 2869 if($(".header-empty").length==0) { 2870 var topval = ($('.creatorlink-header').length==1) ? '55px' : '0'; 2871 $header_empty.css({ 2872 'background-color' : $('header.navbar').css('background-color'), 2873 'background-image' : menu_bg_img, 2874 'background-position' : menu_bg_position, 2875 'background-repeat' : menu_bg_repeat, 2876 'background-size' : menu_bg_size, 2877 //'position' : 'relative', 2878 'width' : '100%', 2879 'height' : header_fixed+'px', 2880 'top' : topval, 2881 'z-index' : '1' 2882 }); 2883 $('.dsgn-body').prepend($header_empty); 2884 } 2885 $('.header-empty').css('position','relative'); 2886 } else { 2887 $('header.navbar').removeClass('transparent'); 2888 } 2889 if(window.innerWidth > 768) $('.menu-logo-top').hide(); 2890 }); 2891 } else if($(document).scrollTop() < header_fixed && user_menu.hasClass('fixed') && !$('.dsgn-body').hasClass('sidebar')){ 2892 user_menu.fadeOut('fast', function(){ 2893 $('.header-empty').css('position','absolute'); 2894 $('.fixed').addClass('fixed-position'); 2895 user_menu.removeClass('fixed').fadeIn('fast'); 2896 if(!b.HEADER || $('header.navbar').hasClass('sidebar') ) { 2897 $('.el_0').css('top','0'); 2898 } else { 2899 $('header.navbar').addClass('transparent'); 2900 if($('.creatorlink-header').length == 1) $('div.header.fixed-position').addClass('top-zero'); 2901 } 2902 $('.menu-logo-top').show(); 2903 }); 2904 } 2905 } 2906 2907 var elFooter = function() { 2908 if(typeof b.pageContent[b.PAGE] == 'undefined' && $('.error_404.new_design').length > 0) $('.error_404.new_design').remove(); 2909 if($('.el-footer').length > 0) { 2910 setTimeout(function() { 2911 if($('.element:not(.el-footer)').length < 1 && !(b.MENULIST.indexOf(b.PAGE) > -1) && !b.ONE && !b.VIEW) { 2912 if($('.error_404.new_design').length == 0) { 2913 $('style#el-footercss').after(error_style); 2914 $('.element.el-footer').before(error_html); //404 error 2915 } 2916 } 2917 $('.el-footer').show(); 2918 }, 300); 2919 return false; 2920 } 2921 2922 if(b.FTAG == '') b.FTAG = '<div class="footer-' + b.SID + '"></div>'; 2923 $footer = $(b.FTAG); 2924 $footer.find('.link-site-home').prop('href',URI); 2925 $footer.addClass('element') 2926 .addClass('el-footer') 2927 .addClass('hide') 2928 .attr('data-type','footer') 2929 .attr('data-el','el-footer') 2930 .attr('data-id','footer') 2931 .attr('data-name','footer-' + b.SID); 2932 2933 $footer.appendTo($('.dsgn-body')); 2934 $('.dsgn-body').prepend('<style id="el-footercss">' + b.FCSS + '</style>'); 2935 2936 /*180822 add*/ 2937 // before v1 creatorlink-box remove 2938 if($('.el-footer').find('.creatorlink-box').length > 0 ) { 2939 if($('.el-footer').find('.creatorlink-box').prev().hasClass('col-md-10')) $('.el-footer').find('.creatorlink-box').prev().removeClass('col-md-10').addClass('col-md-12'); 2940 $('.el-footer').find('.creatorlink-box').remove(); 2941 } 2942 // before v2 creatorlink-footer remove 2943 if( $('.el-footer').find('.creatorlink-footer').length > 0) { 2944 $('.el-footer').find('.creatorlink-footer').remove(); 2945 } 2946 2947 // made it with Creatorlink 2948 if(!b.VALIDPLAN || b.VALIDTYPE == 'PK') { 2949 var is_templates = checkTemplateSite(b.SID); 2950 if(!is_templates) { 2951 $('.goto-top').addClass('moved'); 2952 setMadeWithCreatorlink(); 2953 } 2954 } 2955 2956 setCLEscrowFooter(b.SID, b.VALIDTYPE, b.SETTINGS.sm_escrow); 2957 2958 var isfooterAttach = typeof $footer.attr('data-flogo') == 'undefined' ? false : $footer.attr('data-flogo'),
2959 checkFixTypeMenu = (typeof $('header.navbar-fheader').attr('data-fixtype') != 'undefined' && $('header.navbar-fheader').attr('data-fixtype')) ? true : false; 2960 2961 if(isfooterAttach) { 2962 if(b.ONE){ 2963 if(b.VIEW) $footer.find('#site-home-footer').attr('href',URI).removeClass('mini-home'); 2964 else $footer.find('#site-home-footer').attr('href','javascript:;').addClass('mini-home'); 2965 } else $footer.find('#site-home-footer').attr('href',URI).removeClass('mini-home'); 2966 } 2967 2968 /*var block_display = (typeof b.SETTINGS.block_display != 'undefined' && b.SETTINGS.block_display) ? b.SETTINGS.block_display : {}, 2969 footer_display = (typeof block_display.footer_display != 'undefined' && block_display.footer_display) ? block_display.footer_display : 'ON'; 2970 2971 if(footer_display=='OFF') $('.footer-'+b.SID+'.el-footer').hide();*/ 2972 2973 /*180822 delete - powered by Creatorlink 2974 // before creatorlink-box remove 2975 if($('.el-footer').find('.creatorlink-box').length > 0 ) { 2976 if($('.el-footer').find('.creatorlink-box').prev().hasClass('col-md-10')) $('.el-footer').find('.creatorlink-box').prev().removeClass('col-md-10').addClass('col-md-12'); 2977 $('.el-footer').find('.creatorlink-box').remove(); 2978 } 2979 2980 if($('.el-footer').find('*[data-edit="true"]').first().closest('.row').children('div').length == 1 && 2981 $('.el-footer').find('*[data-edit="true"]').first().closest('.row').children('div').hasClass('col-md-10') ) { 2982 $('.el-footer').find('*[data-edit="true"]').first().closest('.row').children('div').removeClass('col-md-10').addClass('col-md-12'); 2983 } 2984 2985 if(typeof b.VALIDPLAN != 'undefined' && b.VALIDPLAN && b.VALIDTYPE != 'PK') { 2986 if( $('.el-footer').find('.creatorlink-footer').length > 0 ) $('.el-footer').find('.creatorlink-footer').remove(); 2987 } else { 2988 var el_f_style = $('.el-footer').attr('style'); 2989 if(typeof el_f_style != 'undefined' && 2990 (el_f_style.indexOf('display') > -1 || el_f_style.indexOf('opacity') > -1 || el_f_style.indexOf('z-index') > -1) ) $('.el-footer').removeAttr('style'); 2991 if($('.el-footer').css('display') == 'none') $('.el-footer').css('display','block'); 2992 if($('.el-footer').css('opacity') < 1) $('.el-footer').css('opacity',1); 2993 if($('.el-footer').css('z-index') != 'auto') $('.el-footer').css('opacity','auto'); 2994 2995 if( $('.el-footer').find('.creatorlink-footer').length == 0) setFooterCretorlinkBox(); 2996 setFooterLink(); 2997 } 2998 */ 2999 if($('.element:not(.el-footer)').length < 1 && !(b.MENULIST.indexOf(b.PAGE) > -1) && !b.ONE && !b.VIEW && b.PAGE != 'psearch') { 3000 show404(); 3001 } 3002 3003 changeBrokenImages($footer); 3004 3005 if(!b.FTAG || b.FOOTER) { 3006 // $footer.hide(); 3007 } else { 3008 if(b.VIEW && b.PARENT.mode == 'shopping' && $(document).width() < 768) { 3009 $('.el-footer').css('margin-bottom','55px'); 3010 } 3011 3012 var block_display = (typeof b.SETTINGS.block_display != 'undefined' && b.SETTINGS.block_display) ? b.SETTINGS.block_display : {}, 3013 footer_display = (typeof block_display.footer_display != 'undefined' && block_display.footer_display) ? block_display.footer_display : 'ON'; 3014 3015 if(footer_display!='OFF') { 3016 setTimeout(function() { 3017 $footer.removeClass('hide'); 3018 },300); 3019 } 3020 3021 setTimeout(function(){ 3022 if(checkFixTypeMenu) { 3023 if(b.VALIDPLAN) setFixedMenuCss(false); 3024 else { 3025 $('.el-menu header.navbar[data-fixtype]').find('#tpl-menu').css({ 3026 'width': '100%' 3027 }); 3028 } 3029 } 3030 },80); 3031 } 3032 } 3033 3034 function setDefaultValue(value) { 3035 return (typeof value == 'undefined') ? '' : value; 3036 } 3037 3038 function setDefaultValueEtc(type, el) { 3039 type = (typeof el.attr('data-contact-etc-type') != 'undefined' && el.attr('data-contact-etc-type') ) ? el.attr('data-contact-etc-type') : type; 3040 3041 var input_type = ['text','email','number','tel','url']; 3042 if($.inArray(type,input_type)) { 3043 return (typeof el.val() == 'undefined') ? '' : el.val(); 3044 } else if(type == 'checkbox') { 3045 return ( el.prop('checked') ) ? 'O' : 'X'; 3046 } else if(type == "radio") {
3047 return el.find('input:radio:checked').val(); 3048 } else if(type == 'selectbox') { 3049 var result = (el.find('option').length > 0 ) ? el.find('option:checked').val() : el.find('.active').find('.opval').text(); 3050 return result; 3051 } else { 3052 return 'etc article'; 3053 } 3054 } 3055 3056 $(document).off('contactSubmitSecurityUpdate.render').on('contactSubmitSecurityUpdate.render', function(e, $contactEL, pid, settings, blocklang) { 3057 setContactSubmitSecurity($contactEL, pid, settings, blocklang); 3058 }); 3059 3060 function setDefaultForm(el) { 3061 var ch_lang = getLang($(el + ' [form-idx]'), b.SID); 3062 var type2 = $(el).attr('data-type2'); 3063 3064 $(el + ' [form-idx]').val(''); 3065 $(el + ' [form-idx]').find('.form-date').val(''); 3066 $(el + ' [form-idx]').find('.form-date').removeAttr('style') 3067 $(el).find('input:checkbox').removeAttr('checked'); 3068 $(el).find('input:radio').removeAttr('checked'); 3069 $(el).find('.checkbox-inline').removeClass('checked'); 3070 $(el).find('.radio-inline').removeClass('checked'); 3071 $(el + ' [form-type="file.upload"]').find('label .file-uploaded-number').text('(0/10)'); 3072 $(el + ' [form-type="file.upload"]').find('input[type="file"]').val(''); 3073 $(el + ' [form-type="file.upload"]').find('input[type="text"]').val(''); 3074 $(el + ' [form-type="file.upload"]').find('.file-title').text($.lang[ch_lang]['form.file.nofile']); 3075 3076 if($(el + ' [form-type="file.upload"]').find('.file-row').length > 0) { 3077 $(el + ' [form-type="file.upload"]').find('.file-row').remove(); 3078 $(el + ' [form-type="file.upload"]').find('.file-uploaded-number').text('(0/10)'); 3079 $(el + ' [form-type="file.upload"]').find('.file-title').removeClass('hide'); 3080 } 3081 3082 if(type2 == 'form' && $(el).attr('data-captcha') != 'false' && $(el).find('input.input-captcha').length > 0) { 3083 $(el).find('input.input-captcha').val(''); 3084 load_form_kcaptcha($(el), $(el).attr('data-id')); 3085 } 3086 3087 if($(el).attr('data-type2') == 'franchise bar') { 3088 $(el).find('.view-privacy').removeClass('active'); 3089 $(el).find('.franchise-form-select').each(function() { 3090 var defaultText = $(this).attr('form-name') || $(this).find('select.franchise-form-select-native option:first').text(); 3091 $(this).find('select.franchise-form-select-native').val(''); 3092 $(this).find('.franchise-form-select-label').text(defaultText).removeClass('selected'); 3093 $(this).find('.dropdown-menu li').removeClass('active'); 3094 }); 3095 // $(el).find('.form-privacy textarea').hide(); 3096 } 3097 } 3098 3099 function setDefaultContactForm(el) { 3100 $(el + ' [data-contact-firstname]').val(''); 3101 $(el + ' [data-contact-lastname]').val(''); 3102 $(el + ' [data-contact-email]').val(''); 3103 $(el + ' [data-contact-website]').val(''); 3104 $(el + ' [data-contact-phone]').val(''); 3105 $(el + ' [data-contact-subject]').val(''); 3106 $(el + ' [data-contact-message]').val(''); 3107 $(el).find('input:checkbox').removeAttr('checked'); 3108 $(el).find('input:radio').removeAttr('checked'); 3109 $(el + ' [form-type="file.upload"]').find('input[type="file"]').val(''); 3110 $(el + ' [form-type="file.upload"]').find('input[type="text"]').val(''); 3111 $(el + ' [form-type="file.upload"]').find('.file-title').text("첨ë¶ë íì¼ì´ ììµëë¤."); 3112 3113 if($(el).attr('data-captcha') == 'true' && $(el).find('input.input-captcha').length > 0) { 3114 $(el).find('input.input-captcha').val(''); 3115 $(el).find('.form-captcha .error').remove(); 3116 load_form_kcaptcha($(el), $(el).attr('data-id')); 3117 } 3118 } 3119 3120 function setDefaultContactFormEtc(el) { 3121 $(el).find('[data-contact-etc]').each(function(i) { 3122 var type = (typeof $(this).attr('data-contact-etc-type') != 'undefined' && $(this).attr('data-contact-etc-type') ) ? $(this).attr('data-contact-etc-type') : $(this).attr('type'); 3123 3124 var input_type = ['text','email','number','tel','url']; 3125 if($.inArray(type,input_type)) { 3126 $(this).val(''); 3127 } else if(type == "checkbox") { 3128 $(this).removeAttr('checked'); 3129 } else if(type == "radio") {
3130 $(this).find('input:radio').first().click(); 3131 } else if(type == "selectbox") { 3132 if($(this).find('option').length > 0) { 3133 $(this).find('option:first').attr('selected','selected'); 3134 } else { 3135 $(this).find('.active').removeClass('active'); 3136 $(this).find('li').first().addClass('active'); 3137 } 3138 } 3139 }); 3140 } 3141 3142 var ieLineClamp = function() { 3143 if(isIE()) { 3144 $('[data-ie-clamp]').each(function(index, element) { 3145 var clamp = $(this).attr('data-ie-clamp').split(','), 3146 line = new Array(); 3147 3148 $.each(clamp,function(k,v) { 3149 line.push(v); 3150 }); 3151 3152 for(i=line.length; i<3; i++) line[i] = 0; 3153 var idx = getScreenIndex(); 3154 var apply = line[idx]; 3155 3156 // console.log($(element).text()); 3157 //safeClamp(element, apply); 3158 $clamp(element, {clamp:apply, useNativeClamp:false }); 3159 }); 3160 } 3161 } 3162 3163 var safeClamp = function (selector, lines) { 3164 lines = lines || 3; // a default 3165 $(selector).each( function() { 3166 if($(this).text()) { 3167 $clamp( this, { clamp: lines, useNativeClamp:false }); 3168 } 3169 }); 3170 } 3171 3172 $('.data-page-back, .toolbar-btn.back').live({ 3173 click : function() { 3174 var pPage = b.PARENT.page; 3175 var page = b.PAGE.split(','); 3176 var inMenu = ($.inArray(pPage,b.MENULIST) == -1 && page[0] != '_product') ? false : true; 3177 3178 if(!inMenu) { 3179 $(this).showModalFlat('INFORMATION','ì´ëí ì ììµëë¤',true,false,'','ok'); 3180 return false; 3181 } else { 3182 setGalleryReturnItemCookie(b.PARENT); 3183 if($.cookie('gallery') !== undefined && $.cookie('gallery') == 'all_products') { 3184 var c_g_p = (typeof $.cookie('gallery-page-all_products') != 'undefined') ? $.cookie('gallery-page-all_products') : 1; 3185 $.cookie('gallery', 'all_products', { path: '/', expires: 12 * 60 * 60 * 1000 }); 3186 $.cookie('loadmore-all_products', c_g_p, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3187 3188 var url_replace = (b.URL == '/') ? '' : b.URL; 3189 if(b.ONE) { 3190 _this.history.pushState(null,b.TITLE,url_replace + '/index#ì ì²´ìí'); 3191 } else { 3192 _this.history.pushState(null,b.TITLE,url_replace + '/ì ì²´ìí'); 3193 } 3194 } else { 3195 var c_g_p = (typeof $.cookie('gallery-page-' + b.PARENT.pid) != 'undefined') ? $.cookie('gallery-page-' + b.PARENT.pid) : 1; 3196 $.cookie('gallery',b.PARENT.pid, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3197 $.cookie('loadmore-' + b.PARENT.pid, c_g_p, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3198 3199 var url_replace = (b.URL == '/') ? '' : b.URL; 3200 if(b.ONE) { 3201 _this.history.pushState(null,b.TITLE,url_replace + '/index#' + b.PARENT.page); 3202 } else { 3203 var page = b.PAGE.split(','); 3204 if(page[1]=='template') { 3205 _this.history.pushState(null,b.TITLE,url_replace + '/' + page[0]); 3206 } else { 3207 _this.history.pushState(null,b.TITLE,url_replace + '/' + b.PARENT.page); 3208 } 3209 } 3210 } 3211 3212 } 3213 } 3214 }); 3215 3216 $('#config-mode-view').click(function() { 3217 location.href = '//' + b.HOST + b.REFERER; 3218 }); 3219 3220 $('body') 3221 .on('click','.mini-home, #goto-top, #quick-menu-top', function(event) { 3222 event.preventDefault(); 3223 $('body,html').animate({scrollTop: 0}, 900,'easeInOutQuart'); 3224 }) 3225 .on('click','#quick-menu-bottom', function(event) { 3226 event.preventDefault(); 3227 $('body,html').animate({scrollTop: document.body.scrollHeight}, 900,'easeInOutQuart'); 3228 }); 3229 3230 var moveGallerySibling = function(seq, gallerySettings, page) { 3231 var settings = {}; 3232 if(gallerySettings) { 3233 try { 3234 settings = (typeof gallerySettings == 'string') ? $.parseJSON(gallerySettings) : gallerySettings; 3235 } catch(e) { 3236 settings = {}; 3237 } 3238 } 3239 3240 var glink = (settings && settings.glink) ? settings.glink : ''; 3241 if(!glink || b.PARENT.mode != 'project') { 3242 var url_replace = (b.URL == '/') ? '' : b.URL; 3243 _this.history.pushState(null,b.TITLE,url_replace + '/' + page + '/view/' + seq); 3244 return; 3245 } 3246 3247 try { 3248 if(checkBase64Encode(decodeURIComponent(glink))) glink = Base64.decode(decodeURIComponent(glink)); 3249 else if(checkBase64Encode(glink)) glink = Base64.decode(glink); 3250 } catch(e) { 3251 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 3252 } 3253 3254 var target = (settings.glink_target == '_blank') ? '_blank' : ''; 3255 var linkModal = $(this).showModalFlat( 3256 $.lang[LANG]['config.information'], 3257 $.lang[LANG]['gallery.sibling.link.confirm'], 3258 true, 3259 true, 3260 function() { 3261 var linkUrl = makeLinkUrl(glink, b.ONE, b.VIEW); 3262 var $link = $('<a></a>').attr('href', linkUrl).css('display', 'none'); 3263 3264 if(glink.match(/^\@/g) !== null) { 3265 $link.attr('attr-bookmark', glink.replace(/^\@/g, '')); 3266 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { 3267 $link.attr('attr-flink', glink.replace(/^flink\@/gi, '')); 3268 } else if($.inArray(glink.replace(/^\//g, '').replace(/ /g, '-'), b.MENULIST) > -1) { 3269 $link.attr('data-user-link', linkUrl); 3270 } else { 3271 $link.attr('attr-link', glink); 3272 } 3273 3274 if(target) $link.attr('target', target); 3275 $('body').append($link); 3276 $link[0].click(); 3277 setTimeout(function() { $link.remove(); }, 0); 3278 linkModal.modal('hide'); 3279 }, 3280 'cancel', 3281 'ok' 3282 ); 3283 }; 3284
3285 $('.data-page-prev').live({ 3286 click : function(e) { 3287 var page = b.PAGE.split(','); 3288 if(!$(this).hasClass('active') || b.PARENT.prev === null) return false; 3289 if(typeof b.PARENT.page == 'string' && $.inArray(b.PARENT.page,b.MENULIST) == -1 && page[0] != '_product') return false; 3290 if(b.PARENT.prev) 3291 moveGallerySibling(b.PARENT.prev, b.PARENT.prev_gsettings, page[0]); 3292 } 3293 }); 3294 3295 $('.data-page-next').live({ 3296 click : function() { 3297 var page = b.PAGE.split(','); 3298 if(!$(this).hasClass('active') || b.PARENT.next === null) return false; 3299 if(typeof b.PARENT.page == 'string' && $.inArray(b.PARENT.page,b.MENULIST) == -1 && page[0] != '_product') return false; 3300 if(b.PARENT.next) 3301 moveGallerySibling(b.PARENT.next, b.PARENT.next_gsettings, page[0]); 3302 } 3303 }); 3304 3305 // [oldver Menu nav link] Click 3306 $(`#tpl-menu.nav > li:not(.siteUM,.siteLANG) a:not([href="javascript:;"]):not([href*="flink@"]), 3307 .cl-moption > .cl-moption-col > .cl-moption-row > a:not([href="javascript:;"]):not([href*="flink@"]), 3308 .el-menu header.navbar a#site-home 3309 `).live({ 3310 click : function(e) { 3311 e.preventDefault(); 3312 if(typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) { 3313 return false; 3314 } 3315 if(typeof $(this).attr('data-toggle') != 'undefined') { return false; } 3316 3317 $.each($.cookie(), function(i,v) { 3318 if(i.indexOf('gallery-category-') > -1) { 3319 var gallery_seq = i.replace('gallery-category-',''); 3320 var gcate_home = (typeof $.cookie('gallery-catehome-' + gallery_seq) == 'undefined') ? '' : $.cookie('gallery-catehome-' + gallery_seq); 3321 $.cookie(i, gcate_home, { path : '/', expires: 12 * 60 * 60 * 1000 }); 3322 } 3323 if(i.indexOf('gallery-page-') > -1) $.cookie(i, 1, { path : '/', expires: 12 * 60 * 60 * 1000 }); 3324 if(i.indexOf('loadmore-') > -1) $.cookie(i, 1, { path : '/', expires: 0 }); 3325 }); 3326 3327 $.removeCookie('gallery', { path: '/' }); 3328 $.removeCookie('gallery-item', { path : '/' }); 3329 $.removeCookie('forum', { path : '/' }); 3330 $.removeCookie('forum-item', { path : '/' }); 3331 3332 var isClickMoption = ($(this).closest('.cl-moption-col').length > 0) ? true : false; 3333 var isClickSiteHome = (typeof $(this).attr('id') != 'undefined' && $(this).attr('id') == 'site-home') ? true : false; 3334 3335 var menuVer06 = ($('.el-menu .cl-menu-option').length > 0) ? true : false; 3336 var menuVer03 = ($('.el-menu > header').hasClass('navbar-fheader')) ? true : false; 3337 var menuVer02 = (!menuVer03 && $('.el-menu > header').hasClass('navbar-simple')) ? true : false; 3338 var menuVer01 = (!menuVer03 && !menuVer02) ? true : false; 3339 3340 if($('body').width() < 769) { 3341 var clickNavbarToggle = ( (menuVer03 && $('.navbar-toggle').css('visibility') == 'hidden') && !isClickSiteHome || 3342 (menuVer02 && !isClickSiteHome) || 3343 menuVer01 3344 ) ? true : false; 3345 if(clickNavbarToggle) $('.navbar-toggle').click(); 3346 } 3347 3348 if(isClickMoption && !property.ONE) $(this).closest('header').find('.cl-menu-option').removeClass('open'); 3349 if(!isClickSiteHome) { 3350 if($(this).hasClass('loginout')) { 3351 if(b.URL == '/render') { 3352 $(this).showModalFlat('INFORMATION','미리보기ììë ì ê³µëì§ ììµëë¤.',true,false,'','ok'); 3353 return false; 3354 } 3355 $('#loginModal').modal('show'); 3356 $('#loginModal').css('z-index',1042); 3357 $('.modal-backdrop.fade.in').css('z-index', 1041); 3358 } else { 3359 $('#tpl-menu li').removeClass('active').removeClass('open'); 3360 $(this).parent().addClass('active'); 3361 3362 if($(this).closest('.dropdown-menu').length>0) { 3363 if($('body').width() > 768) { 3364 $(this).closest('.dropdown').addClass('active').siblings().removeClass('active'); 3365 } else { 3366 if(menuVer03) { 3367 $(this).closest('.menu-has-children').addClass('open').siblings().removeClass('open'); 3368 $('#tpl-menu .menu-has-children:not(.open) ul.dropdown-menu').hide(); 3369 } else { 3370 $(this).closest('.dropdown').addClass('open').siblings().removeClass('open'); 3371 $('#tpl-menu .dropdown:not(.open) ul.dropdown-menu').hide(); 3372 } 3373 } 3374 } else { 3375 if(menuVer03) $('#mobile-nav li.menu-has-children ul.dropdown-menu').hide(); 3376 else { 3377 if($('body').width() < 768) $('#tpl-menu li.dropdown ul.dropdown-menu').hide(); 3378 } 3379 } 3380 3381 if(menuVer06) { 3382 $('.el-menu .cl-moption-row').removeClass('active'); 3383 if($(this).is(':not([attr-bookmark])')) { 3384 $(this).closest('.cl-moption-row').addClass('active'); 3385 if($(this).closest('.cl-moption-row[data-parent]').length > 0) $(this).closest('.cl-moption-col').find('.cl-moption-row:not([data-parent])').addClass('active'); 3386 } 3387 } 3388 } 3389 } 3390 3391 var loc = $(this).attr('href'); 3392 var uri = (b.PUBLISH) ? loc : loc.replace('/render/',''); 3393 var bookmark = $(this).attr('attr-bookmark'); 3394 if(typeof bookmark !='undefined' && bookmark) return false;
3395 3396 var blank = $(this).attr('target'); 3397 if(typeof blank != 'undefined' && (blank == '_blank' || blank == 'blank')) { 3398 window.open(loc); 3399 e.stopPropagation(); 3400 return false; 3401 } 3402 3403 if(loc.match('^(mailto:|tel:|sms:|callto:|facetime:|skype:|sip:)')) { 3404 window.location.href = loc; 3405 return false; 3406 } 3407 3408 if(b.ONE!='1') { 3409 if(loc == 'javascript:;') return false; 3410 3411 if(uri == '/render' || uri == '/') { 3412 uri = b.MENULINK[0]; 3413 $('body,html').animate({scrollTop: 0}, 900,'easeInOutQuart'); 3414 } 3415 3416 if(loc.match(/\@/g) === null && loc.match(/\//g) === null || loc.match(/\?clgc\=/g) !== null) { 3417 window.location.href = loc; 3418 return false; 3419 } 3420 var url = new getLocation(loc); 3421 golink(_this,url); 3422 // _this.history.pushState(null,b.TITLE,(b.PUBLISH) ? "/" + uri : "/render/" + uri); 3423 } else { 3424 if(loc == 'javascript:;') loc = '#'; 3425 3426 var hash = ''; 3427 if(_this.b.PUBLISH) { 3428 if(loc.indexOf('/index/view/') > -1 && b.ONE) ; 3429 else loc = loc.replace('/index',''); 3430 } else { 3431 if(loc.indexOf('/index/view/') > -1 && b.ONE) ; 3432 else loc = loc.replace('/render/index',''); 3433 } 3434 hash = loc; 3435 3436 var fstr = loc.charAt(0); 3437 var pathname = window.location.pathname; 3438 switch(fstr) { 3439 case '#': 3440 if(_this.b.PAGE == 'index') { 3441 if(pathname.charAt(1) == '_' && pathname.match(/^\/\_lang\//gi) === null) { 3442 loc = (_this.b.PUBLISH) ? '/'+loc : '/render/'+loc; 3443 window.location.href = loc; 3444 } else { 3445 if($(this).hasClass('mini-home')) { 3446 $('body,html').animate({scrollTop: 0}, 900,'easeInOutQuart'); 3447 history.pushState('', '', hash); 3448 return false; 3449 } 3450 var urlType = (b.PUBLISH) ? '/index' : '/render'; 3451 _this.history.pushState(null,b.TITLE,urlType + hash); 3452 } 3453 } else { 3454 loc = (_this.b.PUBLISH) ? '/index' : '/render/index'; 3455 _this.history.pushState(null,b.TITLE,loc); 3456 history.pushState('', '', loc + hash); 3457 } 3458 break; 3459 case '@': 3460 3461 break; 3462 case '/': 3463 if(loc == '/render' || loc == '/') { 3464 loc = (_this.b.PUBLISH) ? '/index' : '/render/index'; 3465 $('body,html').animate({scrollTop: 0}, 900,'easeInOutQuart'); 3466 } 3467 3468 var url = new getLocation(loc); 3469 golink(_this,url); 3470 break; 3471 default: 3472 // var url = new getLocation(loc); 3473 // golink(_this,url); 3474 window.location.href = loc; 3475 break; 3476 } 3477 3478 // window.location.href = loc; 3479 } 3480 } 3481 }); 3482 3483 // [oldver Menu nav link] Click (onepage) 3484 $(`.nav li a[href*=#]:not([href="javascript:;"]), 3485 .cl-moption > .cl-moption-col > .cl-moption-row > a[href*=#]:not([href="javascript:;"]) 3486 `).live({ 3487 click : function(e) { 3488 if(typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) { 3489 e.preventDefault(); 3490 return false; 3491 } 3492 menuClickMove = true; 3493 3494 var link = $(this).attr('href').replace('#',''); 3495 if(link.substring(0,1) == '/') link = link.substring(1,link.length); 3496 if(b.MENULINK.indexOf(link) > -1) moveLinkPage(link); 3497 } 3498 }); 3499 3500 $('.navbar-simple .nav li a .fa').live('click', function(e) { 3501 if($(this).closest('header').hasClass('navbar-simple')) { 3502 $(this).closest('a').next('ul.dropdown-menu').slideToggle(200).closest('li').toggleClass('open').siblings().removeClass('open').find('ul.dropdown-menu').slideUp(200); 3503 e.preventDefault(); 3504 return false; 3505 } 3506 }); 3507 3508 $('.navbar-simple .nav li a.dropdown-toggle[href="javascript:;"]').live('click', function(e) { 3509 e.preventDefault(); 3510 if($('body').width() < 768) $(this).find('.fa').click(); 3511 return false; 3512 }); 3513 3514 $('body').on('click', '.micon', function(e) { $('#goto-top').removeClass('show'); }); 3515 3516 $('body').on('touchstart.dropdown.data-api, click','header .siteUM-dmenu-wrap, header .siteLANG-dmenu-wrap', function(e) { 3517 if(e.target.className.indexOf('siteUM-dmenu-wrap') > -1 || e.target.className.indexOf('siteLANG-dmenu-wrap') > -1) { 3518 if($(this).hasClass('open')) { 3519 $(this).removeClass('open'); 3520 $('#goto-top').addClass('show'); 3521 } 3522 } 3523 }); 3524
3525 $('body').on('touchstart.dropdown.data-api, click', 'header.navbar-simple .navbar-collapse.in', function(e) { 3526 if(e.target.className.indexOf('navbar-collapse') > -1) { 3527 $('.navbar-toggle').click(); 3528 } 3529 }); 3530 3531 3532 $('.fr-custom-button[data-external-link], .fr-fic[data-external-link]').live({ 3533 click: function() { 3534 if($(this).is('[data-external-link=""]')) return false; 3535 var link = $(this).attr('data-external-link'); 3536 if($(this).attr('target') != '_blank') { 3537 location.href = link; 3538 } else { 3539 window.open(link); 3540 } 3541 } 3542 }); 3543 3544 $('[data-type="gallery"] [data-loop="true"] > .grid').live({ 3545 touchstart: function() { 3546 galleryStartHover(); 3547 }, 3548 touchend: function() { 3549 galleryCloseHover(); 3550 }, 3551 click: function() { 3552 galleryMovelink(); 3553 } 3554 }); 3555 3556 $(document).on('click','.cl-gtoolbar .cl-gcate-item > a, .cl-gtoolbar .cl-gsort-item > a', function(e) { 3557 var $clickTarget = $(this); 3558 var $clickItem = $clickTarget.closest('.cl-gcate-item, .cl-gsort-item'); 3559 var $clickList = $clickTarget.closest('.cl-gcate-list, .cl-gsort-list'); 3560 var $clickNav = $clickTarget.closest('.cl-gcate, .cl-gsort'); 3561 var $clickGToolbar = $clickTarget.closest('.cl-gtoolbar'); 3562 var $clickBlock = ($clickGToolbar.closest('.elem').length > 0) ? $clickGToolbar.closest('.elem').find('.element[data-type="gallery"]') : $clickGToolbar.closest('.element[data-type="gallery"]'); 3563 3564 var isCategory = $clickNav.is('.cl-gcate'); 3565 var isSort = $clickNav.is('.cl-gsort'); 3566 3567 if ($clickItem.hasClass('active')) return; 3568 3569 if(isCategory) { 3570 if($clickNav.hasClass('empty')) { 3571 $clickTarget.blur(); 3572 return false; 3573 } 3574 3575 if($clickItem.hasClass('total')) { 3576 return false; 3577 } 3578 } 3579 3580 $clickItem.addClass('active').siblings().removeClass('active'); 3581 if(isSort) { 3582 var click_label = $clickTarget.text().trim(); 3583 $clickGToolbar.find('.cl-gsort-active').html(click_label); 3584 $clickNav.removeClass('open'); 3585 } 3586 3587 var pid = $clickBlock.attr('data-id'); 3588 var idx = $clickTarget.attr('data-idx'); 3589 var orderby = $clickGToolbar.find('.cl-gsort-item.active > a').attr('data-orderby') || 'recent'; 3590 var sfl = 'category'; 3591 var stx = $clickGToolbar.find('.cl-gcate-item.active > a').not('[data-idx="0"]').text() || ''; 3592 3593 if (pid == 'all_products') { 3594 sfl = 'orderby'; 3595 stx = $(this).attr('data-orderby'); 3596 orderby = stx; 3597 } 3598 3599 $('#el-empty').empty(); 3600 $('#el-empty').after('<div class="gallery-empty"></div>'); 3601 3602 var val = _this.galleryEL[pid]; 3603 var tag = htmlspecialchars_decode(val.eltag,'ENT_QUOTES'); 3604 var elsettings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 3605 var block_lang = ($(tag).attr('data-blocklang')) ? $(tag).attr('data-blocklang') : LANG; 3606 var checkGalleryListSample = false; 3607 var checkGalleryListEmpty = true; 3608 3609 $('#el-empty').append($(tag)); 3610 $('#el-empty').find('[data-loop="true"]').html(''); 3611 3612 var nodes = $(tag).find('[data-loop="true"]').children('.grid'); 3613 initGalleryField(nodes); 3614 3615 var g_number = $(tag).find("[data-loop='true']").data('gallery-no'); 3616 var view = $(tag).find('[data-loop="true"]').data('view'); 3617 var p = $('#el-empty').children(); 3618 var i = []; 3619 var total = 0; 3620 var display = 0; 3621 3622 var checkLoadmoreInLoop = ($(tag).find('[data-loop="true"] .loadmore-wrap').length) ? true : false; 3623 var glm = $(tag).find('.loadmore-wrap'); 3624 3625 if(typeof view == 'undefined') view = 10; 3626 var cookie_page = 1; 3627 var cookie_view = view; 3628 var cookie_gallery_category = (typeof stx != 'undefined') ? stx : ''; 3629 var is_gc_cookie = (typeof $.cookie('gallery-category-'+val.seq) != 'undefined' && $.cookie('gallery-category-'+val.seq).length > 0) ? true : false; 3630 var cookie_gallery_orderby = (typeof orderby != 'undefined')? orderby : 'recent'; 3631 3632 // $.cookie('gallery',val.seq, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3633 // $.cookie('loadmore-' + val.seq, cookie_page, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3634 $.cookie('gallery-page-' + val.seq, cookie_page, { path : '/', expires: 12 * 60 * 60 * 1000 }); 3635 $.cookie('gallery-category-' + val.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 3636 $.cookie('gallery-orderby-' + val.seq, cookie_gallery_orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3637 $.removeCookie('loadmore-' + val.seq, { path : '/' }); 3638 $.removeCookie('gallery', { path : '/' }); 3639 3640 $('.galleryPL'+val.seq).find('[data-loop="true"]').empty(); 3641 3642 var checkGallerySVG = ($(tag).find('.gimg-svg-wrap').length > 0) ? true : false;
3643 var checkGFrameTitleOFF = (val.mode == 'gallery' && (typeof elsettings.gframe_title_visible != 'undefined' && elsettings.gframe_title_visible == 'OFF')) ? true : false; 3644 3645 var checkUseComment = checkUseCommentFunc(val.mode, val.eltag); 3646 var checkUseLike = checkUseLikeFunc(val.mode, val.eltag); 3647 3648 $.ajax({ 3649 url: '/template/gallery/list/pid/' + val.seq + '/sid/' + b.SID + '/spage/' + b.PAGE + '/view/' + cookie_view + '/publish/' + b.PUBLISH + param, 3650 data: { g_mode: val.mode, visible: true, sfl: sfl, stx: stx, orderby: cookie_gallery_orderby }, 3651 dataType: 'json', 3652 type: 'POST', 3653 async: false, 3654 cache: false, 3655 success: function (data) { 3656 $.each(data.list, function (idx, value) { 3657 i.push(value); 3658 }); 3659 3660 total = (typeof data.total.list_total != 'undefined') ? data.total.list_total : data.total; 3661 display = data.list.length; 3662 3663 if( total > 0 ) checkGalleryListEmpty = false; 3664 if( i.length>0 || (i.length==0 && is_gc_cookie) ) { 3665 var loop_count = nodes.length, item_index = 0; 3666 var elem = []; 3667 $.each(data.list,function(index,v) { 3668 loop_pos = index%loop_count; 3669 c = nodes[loop_pos]; 3670 var isTitle = (v.title.length > 0) ? true:false; 3671 3672 $(c).find('.non_text').removeClass('non_text'); 3673 if(val.mode != 'shopping') { 3674 if(v.title.length==0) $(c).find('.figure.title').removeClass('non_text').addClass('non_text'); 3675 if(v.caption.length==0) $(c).find('.figure.caption').removeClass('non_text').addClass('non_text'); 3676 } 3677 3678 v.title = (v.title.length>0) ? v.title : $.lang[block_lang]['editor.block.gallery.sample.title']; 3679 v.caption = (v.caption.length>0) ? v.caption : $.lang[block_lang]['editor.block.gallery.sample.caption']; 3680 3681 $(c).addClass('gallery-item').attr('data-index',index).attr('data-seq',v.seq); 3682 3683 var vgsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}, 3684 img_path = (typeof vgsettings['storage'] != 'undefined') ? vgsettings['storage'] : _this.b.RESOURCE + '/' + _this.b.SID + '/', 3685 img_original = (typeof vgsettings['storage'] != 'undefined') ? img_path + '1920/' : img_path; 3686 3687 var folder = (val.folder == 0) ? '' : val.folder + '/', 3688 src = getServeImage(v.image,val.folder,img_path), 3689 src_s0 = getServeImage(v.image,'0',img_path); 3690 if($(c).find('img').length > 0) $(c).find('img').attr('src',src); 3691 ensureGalleryResponsiveImageClass($(c)); 3692 if($(c).find('.g-img').length > 0) $(c).find('.g-img').css('background-image', 'url('+src+')'); 3693 if(checkGallerySVG) { 3694 var gimgSVG = $(c).find('.gimg-svg-wrap svg'); 3695 gimgSVG.find('pattern').attr('id','gimgSvg_'+val.elname+'_'+index); 3696 gimgSVG.find('image').attr('xlink:href', src); 3697 gimgSVG.find('polygon, path').attr('fill', 'url(#gimgSvg_'+val.elname+'_'+index+')'); 3698 } 3699 3700 var glink = (typeof vgsettings['glink'] != 'undefined' && vgsettings['glink']) ? vgsettings['glink'] : '', 3701 glink_target = (typeof vgsettings['glink_target'] != 'undefined' && vgsettings['glink_target']) ? vgsettings['glink_target'] : ''; 3702 3703 if(glink) { 3704 if(glink.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 3705 var bookmark_seq = glink.replace(/^\@/g,''); 3706 if(typeof _this.b.SETTINGS.blockBookmarkList == 'undefined' || typeof _this.b.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 3707 glink = ''; 3708 glink_target = ''; 3709 } 3710 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 3711 glink_target = ''; 3712 } else if($.inArray(glink.replace(/^\//g,'').replace(/ /g,'-'),_this.b.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 3713 } else { // link-type: link-out ==> a[attr-link] 3714 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 3715 } 3716 } 3717 3718 $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 3719 if (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON' && property['SITEUM'] >= 1) { 3720 $(c).addClass('gallery-item').addClass('nonePrice'); 3721 $(c).find('a').attr('href', '#'); 3722 } else { 3723 if(glink) { 3724 var glink_val = makeLinkUrl(glink, b.ONE, b.VIEW); 3725 $(c).find('a').attr('href',glink_val); 3726 3727 if(glink.match(/^\@/g)) { 3728 $(c).find('a').attr('attr-bookmark',glink.replace(/^\@/g,'')); 3729 } else if(glink.match(/^flink\@[0-9]/g) !== null) { 3730 $(c).find('a').attr('attr-flink',glink.replace(/^flink\@/g,'')); 3731 // IE ERROR_includes__H.20210603 3732 // } else if(_this.b.MENULIST.includes(glink.replace(/ /g,'-'))) { 3733 } else if($.inArray(glink.replace(/ /g,'-'),_this.b.MENULIST) > -1) { 3734 $(c).find('a').attr('data-user-link',glink_val); 3735 } else { 3736 $(c).find('a').attr('attr-link',glink); 3737 } 3738 } else { 3739 if (val.mode == 'gallery') { 3740 src_s0 = src_s0 + '?gpos='+v.pos; 3741 3742 $(c).find('a').attr('href', src_s0); 3743 $(c).find('a').attr('data-gallery', '#gframe-' + val.seq); 3744 } else { 3745 if(val.seq == 'all_products') { 3746 $(c).find('a').attr('href', v.product_url); 3747 } else { 3748 if(_this.b.LUX) $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/_product/' + v.seq); 3749 else $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/' + v.seq); 3750 3751 // $(c).find('a').attr('href', ((URI=='/') ? '' : URI) + '/' + b.PAGE + '/view/' + v.seq); 3752 } 3753 } 3754 } 3755 } 3756 3757 if(glink_target == '_blank') $(c).find('a').attr('target','_blank'); 3758 else $(c).find('a').removeAttr('target'); 3759 3760 if(checkGFrameTitleOFF || !isTitle) $(c).find('a').attr('data-title', ''); 3761 else $(c).find('a').attr('data-title', v.title); 3762 3763 // caption 3764 var ftitle = $(c).find('h5.figure'), 3765 fcaption = $(c).find('p.figure').not('.comment'), 3766 fdatetime = $(c).find('.figure.datetime'), 3767 fhashtag = $(c).find('.figure.hashtag'), 3768 fbrand = $(c).find('.figure.brand'), 3769 fprice = $(c).find('.figure.price'), 3770 freview = $(c).find('.figure.review'), 3771 fcomment = $(c).find('.figure.comment'), 3772 flike = $(c).find('.figure.like'), 3773 fbasket = $(c).find('.figure.basket'); 3774 3775 $(c).find('figcaption').removeClass('hide'); 3776 if (v.title || v.caption) { 3777 var gallery_caption = v.caption; 3778 gallery_caption = gallery_caption.replace(/\n/g,'<br />'); 3779 3780 ftitle.html(v.title); 3781 fcaption.html(gallery_caption); 3782 if(fdatetime.length > 0) fdatetime.text(v.datetime); 3783 if(fhashtag.length > 0) fhashtag.text(v.hashtag); 3784 } 3785 3786 if(g_number) { 3787 var g_index = String(index + 1), 3788 g_num = g_index.padStart(g_number, '0');
3789 $(c).find('.figure.number').text(g_num); 3790 } 3791 3792 if(fbrand.length > 0) { 3793 var fbrand_name = (typeof v.brand_name != 'undefined' && v.brand_name) ? v.brand_name : ''; 3794 fbrand.html(v.brand_name); 3795 } 3796 3797 if(val.mode == 'shopping' || val.seq == 'all_products') { 3798 fcomment.addClass('hide'); 3799 flike.addClass('hide'); 3800 v.price = typeof v.price != 'undefined' ? parseFloat(v.price) : 0; 3801 v.sale = typeof v.sale != 'undefined' ? parseFloat(v.sale) : 0; 3802 var checkPriceHidden = (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON') ? true : false, 3803 gallery_price = (v.price && !checkPriceHidden) ? v.price : 0, 3804 gallery_sale_price = (typeof v.sale != 'undefined' && v.sale > 0 && v.sale > v.price && !checkPriceHidden) ? v.sale : 0, 3805 gallery_sale_per = (typeof v.sale_per != 'undefined' && v.sale_per && !checkPriceHidden) ? v.sale_per+'%' : '', 3806 product_soldout = 'íì ', 3807 product_no_sale = (typeof elsettings.sh_soldout == 'string') ? elsettings.sh_soldout : '구매ë¶ê°', 3808 product_status = ''; 3809 if(v.status == 'off' && !checkPriceHidden) { 3810 product_status = '<span class="cl-sh-soldout">' + product_no_sale + '</span>'; 3811 } else if(v.quantity_on == 'on' && v.quantity < 1 && !checkPriceHidden) { 3812 product_status = '<span class="cl-sh-soldout">' + product_soldout + '</span>'; 3813 } 3814 $(c).find('.cl-sh-soldout').remove(); 3815 if(product_status != '') $(c).attr('data-soldout',true); 3816 else $(c).removeAttr('data-soldout'); 3817 3818 $(c).find('.product-badge').remove(); 3819 product_status += drawBadgeList(v.use_badge, data.badge_settings); 3820 3821 $(c).find('.cl-sh-limit').remove(); 3822 if(v.status == 'lim') { 3823 if(v.sale_now == false) { 3824 var product_limit = '<p class="cl-sh-limit">ìí 구매 ê°ë¥ 기ê°ì´ ìëëë¤.</p>'; 3825 if(freview.length > 0) { 3826 freview.after(product_limit); 3827 } else { 3828 $(c).find('figcaption:not(.top) .figure:last-child').after(product_limit); 3829 } 3830 } 3831 } 3832 3833 if($(c).find('ul.figure.price').length > 0) { 3834 // var price_off = (v.sale_price > 0 && v.sale_price > v.price) ? 100 - Math.floor((v.price / v.sale_price) * 100) : 0, 3835 // off_str = (price_off > 0) ? price_off + '% ' : '' 3836 var off_str = (v.sale_rate > 0) ? v.sale_rate + '% ' : ''; 3837 if(!_this.b.LUX) off_str = gallery_sale_per; 3838 //Ver2 3839 if(!checkPriceHidden) { 3840 $(c).find('ul.figure.price .price-val').html('₩' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 3841 $(c).find('ul.figure.price .price-val').removeClass('hide'); 3842 3843 if(gallery_sale_price > 0 && gallery_price < gallery_sale_price) { 3844 $(c).find('ul.figure.price .price-sale').html('₩' + gallery_sale_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 3845 $(c).find('ul.figure.price .price-sale-per').html(off_str); 3846 $(c).find('ul.figure.price .price-sale, ul.figure.price .price-sale-per').removeClass('hide'); 3847 if(_this.b.LUX && (v.hashtag).indexOf('í¹ê°ì¸ì¼') > -1 && $(c).find('ul.figure.price .sp-price').length == 0) { 3848 $(c).find('ul.figure.price .price-sale').after('<li class="sp-price">í¹ê°ì¸ì¼</li>'); 3849 } 3850 } else { 3851 $(c).find('ul.figure.price .price-sale, ul.figure.price .price-sale-per').addClass('hide').html(''); 3852 } 3853 3854 $(c).find('ul.figure.price .price-unit-pricing').remove(); 3855 if(v.product_unit_str) { 3856 $(c).find('ul.figure.price').append(`<li class="price-unit-pricing">${v.product_unit_str}</li>`); // ë¨ìë¹ ê°ê²© 3857 } 3858 } else { 3859 $(c).find('ul.figure.price .price-val').html('₩0'); 3860 $(c).find('ul.figure.price .price-val').addClass('hide'); 3861 } 3862 if(val.seq == 'all_products' && checkPriceHidden) $(c).find('ul.figure.price').html(''); 3863 if(product_status) $(c).find('ul.figure.price').append('<li>'+product_status+'</li>'); 3864 3865 var badge_size = getBadgeSize(data.badge_settings); 3866 $(c).find('.cl-sh-soldout').removeClass('badge-small badge-medium badge-large'); 3867 $(c).find('.cl-sh-limit').removeClass('badge-small badge-medium badge-large'); 3868 if(badge_size) { 3869 $(c).find('.cl-sh-soldout').addClass(badge_size); 3870 $(c).find('.cl-sh-limit').addClass(badge_size); 3871 } 3872 } else { 3873 //Ver1 3874 if(fprice.length == 0) fprice = fcaption; 3875 3876 if(checkPriceHidden) fprice.html(''); 3877 else fprice.html('<span class="figure-krw">₩</span>' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + product_status); 3878 } 3879 3880 if($(c).find('ul.figure.review').length > 0) { 3881 var gallery_review = (v.review_onoff && v.review_cnt) ? v.review_cnt : 0; 3882 if(gallery_review > 0) { 3883 $(c).find('ul.figure.review, ul.figure.review li').removeClass('hide'); 3884 $(c).find('ul.figure.review .figure-review-cnt').html(gallery_review); 3885 $(c).find('ul.figure.review .figure-review-score').html(v.review_score); 3886 } else { 3887 $(c).find('ul.figure.review, ul.figure.review li').addClass('hide'); 3888 $(c).find('ul.figure.review .figure-review-cnt, ul.figure.review .figure-review-score').html(''); 3889 } 3890 } 3891 3892 if(fbasket.length > 0) { 3893 var checkOldBlock = ($(c).find('.figure.basket[data-oldver="true"]').length > 0) ? true : false, 3894 checkOldverBasket = (typeof elsettings.field_oldver != 'undefined' && elsettings.field_oldver && elsettings.field_oldver.indexOf('basket') > -1) ? true : false, 3895 checkDisabledBasket = (typeof elsettings.field_disable != 'undefined' && elsettings.field_disable && elsettings.field_disable.indexOf('basket') > -1) ? true : false;
3896 if(v.basket_off) fbasket.addClass('cannotby hide'); 3897 else if(val.seq == 'all_products') fbasket.removeClass('hide'); 3898 else if(checkDisabledBasket || (!checkDisabledBasket && checkOldBlock && !checkOldverBasket)) fbasket.addClass('hide'); 3899 else if(property.VALIDTYPE != 'SM') fbasket.addClass('hide'); 3900 else fbasket.removeClass('hide'); 3901 } 3902 3903 } else { 3904 fbrand.addClass('hide'); 3905 fprice.addClass('hide'); 3906 freview.addClass('hide'); 3907 fbasket.addClass('hide'); 3908 3909 if ( checkUseComment 3910 && elsettings.comment_display == 'ON' 3911 && !(elsettings.field_disable !== undefined && elsettings.field_disable.indexOf('comment') > -1) 3912 && fcomment.length > 0 3913 && (typeof v.comment_cnt != 'undefined' && v.comment_cnt > 0) 3914 ) { 3915 fcomment.removeClass('hide'); 3916 fcomment.find('.figure-comment-cnt').html(v.comment_cnt); 3917 } else { 3918 fcomment.addClass('hide'); 3919 fcomment.find('.figure-comment-cnt').empty(); 3920 } 3921 3922 if ( checkUseLike 3923 && (elsettings.like_display !== undefined && elsettings.like_display != 'N') 3924 && !(elsettings.field_disable !== undefined && elsettings.field_disable.indexOf('like') > -1) 3925 && flike.length > 0 3926 ) { 3927 flike.removeClass('hide').find('.figure-like-cnt').html(0); 3928 if(v.like !== undefined) { 3929 flike.find('.figure-like-cnt').html(v.like.cnt); 3930 if (v.like.own && v.like.cnt > 0) flike.attr('data-like', v.seq).addClass('active'); 3931 } 3932 } else { 3933 flike.addClass('hide'); 3934 } 3935 } 3936 3937 if(checkUseLike == false) flike.html(''); 3938 3939 if(val.mode == 'gallery') { 3940 if(index < cookie_view) { 3941 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 3942 } else { 3943 $(c).find('figure').remove(); 3944 $('.galleryPL'+val.seq).find('[data-loop="true"]').append($(c)[0].outerHTML); 3945 } 3946 if (total == 2) { 3947 $(c).find('figure').remove(); 3948 $('.gallery-empty').append($(c)[0].outerHTML); 3949 } 3950 } else { 3951 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 3952 } 3953 }); 3954 } else { 3955 if(idx == '0') { 3956 checkGalleryListSample = true; 3957 nodes.find('a') 3958 .addClass('emptyGalleryItem') 3959 .attr('href', '/config/page/' + b.PAGE + '/view/template') 3960 .removeAttr('data-gallery') 3961 .removeAttr('data-user-link') 3962 .removeAttr('attr-bookmark') 3963 .removeAttr('attr-flink') 3964 .removeAttr('attr-link') 3965 .find('img') 3966 .attr('data-index',0); 3967 $(p).find('[data-loop="true"]').append(nodes); 3968 } 3969 3970 $.cookie('gallery-category-'+val.seq,'',{ path: '/', expires: 12 * 60 * 60 * 1000 }); 3971 $.cookie('gallery-orderby-' + val.seq, '', { path: '/', expires: 12 * 60 * 60 * 1000 }); 3972 } 3973 if(checkLoadmoreInLoop) $(p).find('[data-loop="true"]').append(glm); 3974 tag = $(p)[0].outerHTML; 3975 3976 if (val.mode == 'gallery' && total == 2) { 3977 $.each($('.gallery-empty').find('.gallery-item'), function(i,v) { 3978 var gallerySeq = $(v).attr('data-seq'); 3979 if($('.galleryPL'+val.seq).find('.gallery-item[data-seq='+gallerySeq+']').length == 0) $('.galleryPL'+val.seq).find('[data-loop="true"]').append($(v).attr('data-index', i+2)); 3980 }); 3981 } 3982 3983 if (val.mode == 'gallery' && total) tag = appendGalleryFrame($(tag), val.seq, val.type, val.elsettings); 3984 $('#el-empty').empty(); 3985 $('.gallery-empty').remove(); 3986 } 3987 }); 3988 3989 var $tag = $(tag); 3990 var $galleryEL = $('.element[data-id="' + val.seq + '"]'); 3991 var g_settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 3992 3993 changeBrokenImages($tag); 3994 $.each($tag.find('[data-edit="true"]'), function() { 3995 var source = $(this).html(); 3996 source = source.replace(/< /g,'<').replace(/ >/g,'>'); 3997 $(this).html(source); 3998 }); 3999 4000 4001 if(total > 0) $galleryEL.find('[data-loop="true"]').replaceWith($tag.find('[data-loop="true"]')); 4002 else $galleryEL.find('[data-loop="true"]').empty(); 4003 if(checkGalleryListSample && total == 0) $gallery_items.find('.emptyGalleryItem').attr('data-gallery',''); 4004 showHideGalleryField($galleryEL, g_settings); 4005 reloadBlockMasonry('init',$galleryEL); 4006 4007 var $glmBtnWrap = $galleryEL.find('.loadmore-wrap'); 4008 var $glmBtn = $galleryEL.find('.loadmore-wrap .gallery-loadmore'); 4009 var checkLoadmore = (total > view && total > cookie_view && !checkGalleryListEmpty) ? true : false;
4010 var glm_lang = LANG; 4011 if(typeof g_settings.loadmore_lang != 'undefined' && g_settings.loadmore_lang && $.inArray(g_settings.loadmore_lang.toLowerCase(), ['ko','en']) > -1) glm_lang = g_settings.loadmore_lang.toLowerCase(); 4012 else if(typeof block_lang != 'undefined' && $.inArray(block_lang, ['ko','en']) > -1) glm_lang = block_lang; 4013 var glm_txt = $.lang[glm_lang]['config.loadmore']; 4014 4015 if($glmBtnWrap.length == 0) { 4016 // gallery loadmore btn - default (ver1) 4017 if(checkLoadmore) { 4018 var glm_class = (val.feature=='masonry') ? 'gallery-loadmore masonry-layout' : 'gallery-loadmore', 4019 glm_btn = '<div class="' + glm_class + '" data-loadmore="true" data-selector=".gallery-loadmore" data-total="' + total + '" data-id="' + val.seq + '" data-page="2" data-view="' + view + '" data-folder="' + val.folder + '" data-mode="' + val.mode + '">' + glm_txt +' (<span class="display">' + cookie_view + '</span> / ' + number_format(total) + ')</div>'; 4020 4021 if($galleryEL.find('.gallery-loadmore').length > 0) $galleryEL.find('.gallery-loadmore').replaceWith(glm_btn); 4022 else $galleryEL.append(glm_btn); 4023 } else $galleryEL.find('.gallery-loadmore').remove(); 4024 4025 } else { 4026 // gallery loadmore btn - custom (ver2) 4027 if(checkLoadmore) { 4028 if(val.feature=='masonry') $glmBtn.addClass('masonry-layout'); 4029 else $glmBtn.removeClass('masonry-layout'); 4030 $glmBtn.attr('data-loadmore','true').attr('data-id',val.seq).attr('data-total',total).attr('data-page',2).attr('data-view',view).attr('data-folder',val.folder).attr('data-mode',val.mode); 4031 $glmBtn.find('.label').text(glm_txt); 4032 $glmBtn.find('.display .view').text(cookie_view); 4033 $glmBtn.find('.display .total').text(total); 4034 $glmBtnWrap.removeClass('hide').fadeIn(); 4035 } else { 4036 $glmBtnWrap.fadeOut().addClass('hide'); 4037 $glmBtn.removeAttr('data-loadmore').removeAttr('data-id').removeAttr('data-total').removeAttr('data-page').removeAttr('data-view').removeAttr('data-folder').removeAttr('data-mode').removeClass('masonry-layout'); 4038 $glmBtn.find('.label').text(glm_txt); 4039 $glmBtn.find('.display .view').text('0'); 4040 $glmBtn.find('.display .total').text('0'); 4041 } 4042 } 4043 4044 if($galleryEL.has('input.gjs').length) setGalleryJS('change-loop',$galleryEL); 4045 4046 if($galleryEL.find('*[data-direffect="true"]').length > 0 ) { 4047 setTimeout(function() { 4048 $galleryEL.find('.grid').each(function() { 4049 $(this).hoverdir(); 4050 }); 4051 }, 400); 4052 } 4053 4054 setTimeout(function() { 4055 goToElement(`.${$galleryEL.attr('data-el')}`); 4056 }, 0); 4057 }); 4058 4059 $(':not(.review-sample-block) .review-sort-nav .toggle-dropdown').live({ 4060 click: function(e) { 4061 $(this).closest('.review-sort-nav').toggleClass('open'); 4062 } 4063 }); 4064 4065 $(':not(.review-sample-block) .review-sort-nav li a').live({ 4066 click: function() { 4067 if ($(this).closest('li').hasClass('active')) return; 4068 4069 var review_block_id = $(this).closest('.element').attr('data-id'); 4070 var idx = $(this).attr('data-idx'), 4071 orderby = $(this).attr('data-orderby'); 4072 $('.element[data-id="'+review_block_id+'"] .review-sort-nav li').removeClass('active'); 4073 $('.element[data-id="'+review_block_id+'"] .review-sort-nav li').eq(idx).addClass('active'); 4074 $('.element[data-id="'+review_block_id+'"] .review-sort-nav .active-sort').text($(this).text().trim()); 4075 $(this).closest('.review-sort-nav').removeClass('open'); 4076 4077 var val = _this.galleryEL[review_block_id]; 4078 var settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 4079 var gallery_data = (typeof settings.gallery_data != 'undefined' && settings.gallery_data) ? settings.gallery_data : {}; 4080 var cookie_review_orderby = (typeof orderby != 'undefined')? orderby : 'recent'; 4081 4082 $.cookie('review-orderby-' + review_block_id, cookie_review_orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 4083 $.reviewContents.init(review_block_id, gallery_data); 4084 } 4085 }); 4086 4087 $(':not(.review-sample-block) .review-data-loadmore').live({ 4088 click: function() { 4089 var review_block_id = $(this).attr('data-id'), 4090 page_num = (typeof $(this).attr('data-page') != 'undefined') ? Number($(this).attr('data-page')) : 1, 4091 view = (typeof $(this).attr('data-view') != 'undefined') ? Number($(this).attr('data-view')) : 6, 4092 $review_elLoadmore = $(this), 4093 $review_el = $('.element[data-id="' + review_block_id + '"]'), 4094 $rContainer = $review_el.find('.container'), 4095 $rLoop = $review_el.find('[data-loop="true"]'), 4096 $ro = $review_el.find('.review-sort-nav li.active a'), 4097 orderby = ($ro.length > 0) ? $ro.attr('data-orderby') : 'recent'; 4098 4099 var val = _this.galleryEL[review_block_id]; 4100 var settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 4101 var gallery_data = (typeof settings.gallery_data != 'undefined' && settings.gallery_data) ? settings.gallery_data : {}; 4102 // var cookie_review_orderby = (typeof orderby != 'undefined')? orderby : 'recent'; 4103 4104 $.cookie('review-orderby-' + review_block_id, orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 4105 $.reviewContents.update(review_block_id, gallery_data, orderby, page_num); 4106 } 4107 }); 4108 4109 // menu ver3 : fheader - #mobile-nav show/hide function 4110 $(document).on('click', 'ul li.siteSEARCH > a.psearch-btn, ul li.siteSEARCH .psearch-overlay.open, ul li.siteSEARCH .psearch-input', function(e) { 4111 e.preventDefault(); 4112 var taret_nav = $('.el-menu header'); 4113 if(window.innerWidth <= 768) taret_nav = $('#mobile-nav'); 4114 var check_psearch_area = (taret_nav.find('.psearch-wrap').is(e.target) || taret_nav.find('.psearch-wrap').has(e.target).length > 0) ? true : false;
4115 4116 if(!check_psearch_area) { 4117 taret_nav.find('.psearch-overlay').toggleClass('open'); 4118 setTimeout(function() { 4119 $.psearch.showSiteProjectSEARCH(false); 4120 taret_nav.find('.psearch-overlay').find('input.psearch-input').focus(); 4121 },300); 4122 } 4123 return false; 4124 }); 4125 $(document).on('click', '#fixed-menu li.siteCART > a[href="javascript:;"], #fixed-menu-sub li.siteCART > a[href="javascript:;"]', function(e) { 4126 e.preventDefault(); 4127 $(this).showModalFlat('INFORMATION',$.lang[LANG]['menu.cart.no-support.render'],true,false,'','ok'); 4128 return false; 4129 }); 4130 $(document).on('click', '.siteLANG ul a, .siteLANG-dmenu-wrap ul li a', function(e) { 4131 if(LANGLINK) return; 4132 e.preventDefault(); 4133 var sid = (typeof SID != 'undefined' && SID) ? SID : property.SID; 4134 var slang_code = $(this).attr('data-code'); 4135 var slang_str = $(this).text().trim(); 4136 4137 changeLanguage(slang_code); 4138 }); 4139 $(document).on('click', '#mobile-nav .login-content:not(.siteUM)', function(e) { 4140 e.preventDefault(); 4141 $('#mobile-nav #fixed-menu .siteUM a i').click(); 4142 return false; 4143 }); 4144 $(document).on('click', '#mobile-nav .nav li.menu-has-children > a[href="javascript:;"]', function(e) { 4145 e.preventDefault(); 4146 $(this).prev('.fa').click(); 4147 return false; 4148 }); 4149 $(document).on('click', '#mobile-nav ul li.menu-has-children i', function(e) { 4150 if($(this).closest('li.menu-has-children').hasClass('open')) { 4151 $(this).closest('li.menu-has-children').removeClass('open'); 4152 $(this).nextAll('ul').eq(0).slideToggle(200); 4153 // $(this).next().removeClass('menu-item-active'); 4154 $(this).toggleClass('fa-chevron-down fa-chevron-up'); 4155 } else { 4156 $(this).closest('li.menu-has-children').addClass('open').siblings('li.open').find('i').click(); 4157 $(this).nextAll('ul').eq(0).slideToggle(200); 4158 // $(this).next().toggleClass('menu-item-active'); 4159 $(this).toggleClass('fa-chevron-down fa-chevron-up'); 4160 } 4161 }); 4162 $(document).on('click', 'header.navbar-fheader .navbar-toggle', function(e) { 4163 if( window.innerWidth > 768 && 4164 $(this).closest('header').find('.cl-menu-option').length > 0 && 4165 $(this).closest('header').find('.cl-menu-option').is('[data-moption="ntoggle"],.nfullDrop') 4166 ) { 4167 e.preventDefault(); 4168 return false; 4169 } 4170 4171 if($('.dsgn-body').hasClass('mobile-nav-active')) { 4172 //close mobile menu 4173 $('header.navbar-fheader .navbar-toggle').css({'visibility':'visible'}); 4174 $('.dsgn-body').removeClass('mobile-nav-active'); 4175 $('#mobile-body-overly').removeClass('in'); 4176 $('#mobile-nav .siteLANG.cl-fixbtn').hide(); 4177 } else { 4178 //show mobile menu 4179 $('header.navbar-fheader .navbar-toggle').css({'visibility':'hidden'}); 4180 $('.dsgn-body').addClass('mobile-nav-active'); 4181 $('#mobile-body-overly').addClass('in'); 4182 $('#mobile-nav .siteLANG.cl-fixbtn').show(); 4183 } 4184 }); 4185 $(document).on('click', '#mobile-nav-toggle', function(e) { 4186 $('header.navbar-fheader .navbar-toggle').click(); 4187 }); 4188 4189 $('header.navbar-simple .navbar-toggle').live('click',function(e) { 4190 var check = $(this).hasClass('collapsed') ? false : true; 4191 if(check) { 4192 var p_t = $('.el-menu header').height() + 'px'; 4193 4194 $('.element').each(function(){ $(this).addClass('blur-filter'); }); 4195 $('.el-menu').addClass('blur-filter'); 4196 4197 if($('body').height() > ($('.el-menu').find('#tpl-menu').height() + 80)) $('.el-menu').find('#tpl-menu').addClass('center-position'); 4198 else $('.el-menu').find('#tpl-menu').removeClass('center-position'); 4199 4200 $('.dsgn-body').bind('touchmove'); 4201 $('#goto-top').removeClass('show'); 4202 } else { 4203 $('.element').each(function(){ $(this).removeClass('blur-filter'); }); 4204 $('.el-menu').removeClass('blur-filter'); 4205 $('.dsgn-body').unbind('touchmove'); 4206 $('#goto-top').addClass('show'); 4207 } 4208 }); 4209 4210 $('.element[data-type="gallery"]').live({ 4211 mouseenter : function() { 4212 $(this).find('[data-direffect="true"] .grid').each(function() { 4213 $(this).hoverdir(); 4214 }); 4215 } 4216 }); 4217 4218 $('.creatorlink-header .data-user > ul > li').live({ 4219 click : function() { 4220 $(this).closest('.pull-right').toggleClass('open'); 4221 if($(this).closest('.pull-right').hasClass('open')) { 4222 $('.popover').show(); 4223 } else { 4224 $('.popover').hide(); 4225 } 4226 } 4227 }); 4228 4229 /* [Input URL link] Click ==> link-type: link-out*/ 4230 $('a[href*=#][attr-link]').live({ 4231 click : function(e) { 4232 if($(this).is('[attr-link=""]') 4233 || $(this).is('[data-imglink="true"]') 4234 || (typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) 4235 ) { 4236 e.preventDefault(); 4237 return false;
4238 } 4239 4240 $.removeCookie('gallery', { path: '/' }); 4241 $.removeCookie('gallery-item', { path : '/' }); 4242 $.removeCookie('forum', { path : '/' }); 4243 $.removeCookie('forum-item', { path : '/' }); 4244 4245 if($(this).attr('target') != '_blank') { 4246 var link = $(this).attr('href').replace('#',''); 4247 if(link.length > 0 && link != '/') { 4248 var regex = /^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 4249 var regex2 = /^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 4250 var ismenulink = (b.MENULINK.indexOf(link) > -1) ? true : false; 4251 var isoutlink = (regex2.test(link) || regex.test(link)) ? true : false; 4252 if (ismenulink) { 4253 if ($('.dsgn-body').width() < 769) { 4254 setTimeout(function() { 4255 moveLinkPage(link); 4256 }, 250); 4257 } else { 4258 moveLinkPage(link); 4259 } 4260 } else if(!isoutlink && $('.' + link).length) { 4261 moveLinkPage(link, 1200, true); 4262 } 4263 4264 4265 if(b.MENULINK.indexOf(link) > -1) { 4266 if($('.dsgn-body').width() < 769) { 4267 setTimeout(function() { 4268 moveLinkPage(link); 4269 },250); 4270 } else { 4271 moveLinkPage(link); 4272 } 4273 } else if($('.' + link).length) { 4274 moveLinkPage(link,1200,true); 4275 } 4276 } 4277 } 4278 } 4279 4280 }); 4281 4282 /* [Menu link] Click ==> link-type: link-menu or link-inner*/ 4283 $('*[data-user-link]').live('click',function(e) { 4284 if( $.clnav.check() 4285 && $(this).parent().hasClass('cl-nav-item') 4286 && ($(this).closest('.clnav-nowrap-target').length > 0 || $(this).closest('.clnav-sidemobile').length > 0) 4287 ) { 4288 /* .cl-nav[data-behavior="overflow-nowrap"] */ 4289 if ($.clnav.d.isDrag) { 4290 e.preventDefault(); 4291 e.stopImmediatePropagation(); 4292 return false; 4293 } 4294 } 4295 4296 if( $(this).is('[data-user-link=""]') 4297 || (typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) 4298 ) { 4299 e.preventDefault(); 4300 return false; 4301 } 4302 4303 var $targetEle = $(this).closest('.element[data-el]'); 4304 var datatype = $targetEle.attr('data-type') ?? ''; 4305 var isimglink = $targetEle && $targetEle.length && $targetEle.hasClass('imglink'); 4306 var hasalink = $(this).hasClass('sha_link'); 4307 var isshlink = $(this).is('[data-shlink]'); 4308 4309 var userLink = ((datatype == 'showcase') && isimglink && isshlink) ? $(this).attr('data-shlink') : $(this).attr('href'); 4310 if (typeof userLink == 'undefined') return false; 4311 4312 var target = ''; 4313 if ((typeof $(this).attr('target') != 'undefined') 4314 || (typeof $(this).attr('data-blank') != 'undefined') 4315 ) { 4316 if ((datatype == 'showcase') && isimglink && isshlink) { 4317 target = $(this).attr('data-blank'); 4318 } else { 4319 target = $(this).attr('target'); 4320 } 4321 } 4322 4323 e.preventDefault(); 4324 $.removeCookie('gallery', { path: '/' }); 4325 $.removeCookie('gallery-item', { path: '/' }); 4326 $.removeCookie('forum', { path: '/' }); 4327 $.removeCookie('forum-item', { path: '/' }); 4328 4329 //latest block - table header click, set click table 4330 if(typeof $(this).attr('data-lt-header') != 'undefined') { 4331 var type = $(this).closest('.latest-table').attr('data-type'); 4332 var pid = $(this).closest('.latest-table').attr('data-pid'); 4333 var clickEL = (type == 'gallery') ? $('.gallery-item[data-seq="'+pid+'"]') : $('.element[data-id="' + pid + '"]'); 4334 var checkThisPage = (b.ONE && clickEL.length > 0) ? true : false; 4335 4336 if(checkThisPage) { 4337 if(type == 'forum') { 4338 scrollToBlock('.element[data-id="' + pid + '"]', 1000); 4339 return false; 4340 } else if(type == 'gallery') { 4341 moveGallery(pid); 4342 return false; 4343 } 4344 } else { 4345 $.cookie(type+'-item',pid, { path: '/' }); 4346 } 4347 } else { 4348 if (typeof $(this).attr('data-forum-type') !== 'undefined' && $(this).attr('data-forum-type') == 'qna') { 4349 var type = $(this).closest('.latest-table').attr('data-type'); 4350 var pid = $(this).closest('.latest-table').attr('data-pid'); 4351 var clickEL = $('.element[data-id="' + pid + '"]'); 4352 var checkThisPage = (b.ONE && clickEL.length > 0) ? true : false;
4353 var page_num = $(this).attr('data-page'); 4354 var row_id = $(this).closest('.latest-post-list-title').attr('data-id'); 4355 if (checkThisPage) { 4356 scrollToBlock('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="' + row_id + '"]', 1000); 4357 $('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="' + row_id + '"]').click(); 4358 // $.removeCookie('forum_content_view', { path: '/', expires: 12 * 60 * 60 * 1000 }); 4359 return false; 4360 } else { 4361 $.cookie(type + '-item', pid, { path: '/' }); 4362 $.cookie('forum_content_view', pid + '&' + row_id, { path: '/', expires: 12 * 60 * 60 * 1000 }); 4363 $.forum.setForumCookie(pid, page_num, '', '', ''); 4364 }; 4365 } 4366 } 4367 4368 //psearch - project item(pitem) click, set click parent 4369 if($(this).closest('.psearch-view').length > 0) { 4370 if(typeof $(this).attr('data-psearch-seq') != 'undefined') { 4371 $.cookie('gallery-item',$(this).attr('data-psearch-seq'), { path: '/' }); 4372 } else { 4373 $.cookie('gallery',$(this).attr('data-psearch-pid'), { path: '/' }); 4374 } 4375 4376 if(b.ONE && typeof $(this).attr('data-user-link') != 'undefined' && $(this).attr('data-user-link') == 'index') { 4377 location.replace('/'); 4378 return false; 4379 } 4380 } 4381 4382 if (b.ONE) { 4383 if (userLink.charAt(0) == '/') { 4384 var linkRegExp = /\/view\//gi; 4385 var linkMatch = userLink.match(linkRegExp); 4386 if (linkMatch && linkMatch[0]) { 4387 var url = ((b.URL == '/') ? '' : b.URL) + userLink; 4388 if (target == '_blank') { 4389 var openNewWindow = window.open('about:blank'); 4390 openNewWindow.location.href = url; 4391 } else { 4392 location.href = url; 4393 } 4394 return false; 4395 } 4396 4397 userLink = userLink.charAt(0).replace('/', '') + userLink.slice(1); 4398 if (b.VIEW || target == '_blank') { 4399 var url = ((b.URL == '/') ? '' : b.URL) + '#' + userLink; 4400 if (b.VIEW && target != '_blank') { 4401 // location.href = url; 4402 url = new getLocation(url); 4403 golink(_this,url); 4404 } else { 4405 var openNewWindow = window.open('about:blank'); 4406 openNewWindow.location.href = url; 4407 } 4408 } else { 4409 // if (b.ONE && b.MENULINK.indexOf(userLink) === -1) { 4410 // var modal = $(this).showModalFlat($.lang[LANG]['config.information'], $.lang[LANG]['editor.link.menu.invalid'], true, false, '', 'ok', '', 'cl-cmmodal cl-s-btn w560 cl-p130 cl-p0 cl-okbtn-pbt70'); 4411 // return false; 4412 // } 4413 moveLinkPage(userLink); 4414 } 4415 } else { 4416 alert('Invalid URL'); 4417 return false; 4418 } 4419 } else { 4420 var url = ((b.URL == '/') ? '' : b.URL) + userLink; 4421 if (target == '_blank' || target == 'blank') { 4422 var openNewWindow = window.open('about:blank'); 4423 openNewWindow.location.href = url; 4424 } else { 4425 // location.href = url; 4426 url = new getLocation(url); 4427 golink(_this,url); 4428 } 4429 } 4430 }); 4431 4432 /* [Block Bookmark link] Click ==> link-type: link-bookmark*/ 4433 $('a[attr-bookmark],*[data-imglink="true"][attr-bookmark],.fr-custom-button[attr-bookmark],.fr-fic[attr-bookmark],[data-type="showcase"] .item[attr-bookmark]').live({ 4434 click : function(e) { 4435 e.preventDefault(); 4436 4437 var checkSidemobile = ($(this).closest('.clnav-sidemobile').length > 0) ? true : false; 4438 if(checkSidemobile) $.clnav.setMode('sidemobile-open',false); 4439 4440 if($.clnav.check() 4441 && ($(this).closest('.clnav-nowrap-target').length > 0 || $(this).closest('.clnav-sidemobile').length > 0) 4442 ) { 4443 /* .cl-nav[data-behavior="overflow-nowrap"] */ 4444 if ($.clnav.d.isDrag) { 4445 e.stopImmediatePropagation(); 4446 return false; 4447 } 4448 } 4449 4450 if( $(this).is('[attr-bookmark=""]') 4451 || (typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) 4452 ) { 4453 return false; 4454 } 4455 4456 var $aEle = $(this); 4457 var $targetEle = $(this).closest('.element[data-el]'); 4458 var datatype = $targetEle.attr('data-type') ?? ''; 4459 var isimglink = $targetEle && $targetEle.length && $targetEle.hasClass('imglink'); 4460 var hasalink = $(this).hasClass('sha_link'); 4461 var isshlink = $(this).is('[data-shlink]'); 4462 4463 var link = ((datatype == 'showcase') && isimglink && isshlink) ? $(this).attr('data-shlink').replace(/^\@/g, '') : $(this).attr('href').replace(/^\@/g, ''); 4464 if(typeof link == 'undefined') return false;
4465 4466 var target = ''; 4467 if ((typeof $(this).attr('target') != 'undefined') 4468 || (typeof $(this).attr('data-blank') != 'undefined') 4469 ) { 4470 if ((datatype == 'showcase') && isimglink && isshlink) { 4471 target = $(this).attr('data-blank'); 4472 } else { 4473 target = $(this).attr('target'); 4474 } 4475 } 4476 4477 $.removeCookie('gallery', { path: '/' }); 4478 $.removeCookie('gallery-item', { path : '/' }); 4479 $.removeCookie('forum', { path : '/' }); 4480 $.removeCookie('forum-item', { path : '/' }); 4481 4482 var blockBookmarkList = (typeof b.SETTINGS.blockBookmarkList != 'undefined' && b.SETTINGS.blockBookmarkList) ? b.SETTINGS.blockBookmarkList : {}; 4483 var hideArray = blockBookmarkList?.hide || []; 4484 if (hideArray.length > 0 && hideArray.includes(link)) { 4485 return false; 4486 } 4487 4488 if (typeof $(this).attr('attr-bookmark') != 'undefined' && (link != $(this).attr('attr-bookmark'))) link = $(this).attr('attr-bookmark'); 4489 if($('.element[data-bookmark="' + link + '"]').length > 0 && target != '_blank') { 4490 moveLinkPage(b.PAGE + '\@' + link, 1200, true); 4491 } else { 4492 if (typeof b.SETTINGS.blockBookmarkList == 'undefined' || !b.SETTINGS.blockBookmarkList || typeof b.SETTINGS.blockBookmarkList['bookmark' + link] == 'undefined') { 4493 $aEle.find('img[data-attach="true"]').unwrap(); 4494 return false; 4495 } 4496 4497 $.post('/template/bookmarkBlock', {sid: b.SID, seq: link, publish : b.PUBLISH}, function(data) { 4498 if(data.length == 0) { 4499 // console.log('Block Link Click :( Undefined block'); 4500 return false; 4501 } 4502 4503 var d = data[0]; 4504 if(typeof d.orgpage == 'undefined' || d.orgpage.length == 0) d.orgpage = d.page; 4505 4506 var org_title = d.orgpage.replace(/-/g,' '); 4507 var bb_o_page = (d.page.match(/^index/g) !== null ) ? org_title : d.page; 4508 var bb_page = (bb_o_page.match(/\,/g) !== null) ? bb_o_page.substring(0,d.page.indexOf('\,')) : bb_o_page; 4509 4510 var check_link = true; 4511 var is_visible_menu = false; 4512 $.each(b.SMENU, function (idx, obj) { 4513 if(bb_page == obj.name.replace(/ /g,'-')) { 4514 if(!obj.link) check_link = false; 4515 if(obj.display == 'on') is_visible_menu = false; 4516 } 4517 if(obj.children) { 4518 $.each(obj.children, function (i, v){ 4519 if(bb_page == v.name.replace(/ /g,'-')) { 4520 if(!v.link) check_link = false; 4521 if(v.display == 'on') is_visible_menu = false; 4522 } 4523 }); 4524 } 4525 }); 4526 4527 var is_here = ($('.element[data-bookmark="' + link + '"]').length > 0 ) ? true : false; 4528 var is_page = (b.PAGE.toLowerCase()==d.page.toLowerCase()) ? true : false; 4529 // var is_visible_menu = ($.inArray(bb_page,b.MENULINK)>-1) ? true : false; 4530 // var check_link = ( $('#tpl-menu li a[href*="'+bb_page+'"]').length > 0 && $('#tpl-menu li a[href*="'+bb_page+'"]').text().trim().replace(/ /gi,'-') == bb_page ) ? false : true; 4531 var is_link = ( check_link && is_visible_menu && org_title != 'INTRO' ) ? true : false; 4532 var is_visible = (check_link && is_visible_menu && org_title != 'INTRO') ? true : false; 4533 var clearBookmarkGalleryCategory = function() { 4534 if(typeof d.gpid == 'undefined' || !d.gpid) return; 4535 4536 $.cookie('gallery-category-' + d.gpid, '', { path : '/', expires: 12 * 60 * 60 * 1000 }); 4537 }; 4538 4539 if( ( !is_visible_menu && bb_page!='index' ) || 4540 ( typeof d.glivisible!='undefined' && d.glivisible ) || 4541 ( /*( (is_here && target=='_blank') || !is_page ) &&*/ ( is_link || is_visible ) ) || 4542 ( !is_here && is_page ) 4543 ) { 4544 if(is_visible_menu == false) { 4545 if(b.SID == 'chansolpf') clearBookmarkGalleryCategory(); 4546 moveBookmark(d.page, '\@' + link, 1200, target); 4547 } else { 4548 $aEle.find('img[data-attach="true"]').unwrap(); 4549 return false; 4550 } 4551 } else { 4552 if(b.SID == 'chansolpf') clearBookmarkGalleryCategory(); 4553 moveBookmark(d.page, '\@' + link, 1200, target); 4554 } 4555 4556 }, 'json'); 4557 } 4558 4559 } 4560 }); 4561 4562 $('[data-type="showcase"] .item[attr-link]').live('click',function(e) { 4563 var link = $(this).attr('href'); 4564 var target = $(this).attr('target'); 4565 var $targetEle = $(this).closest('.element[data-el]'); 4566 var datatype = $targetEle.attr('data-type') ?? ''; 4567 4568 if ((datatype == 'showcase') && $(e.target).closest('button, a').length > 0) { 4569 return; 4570 } 4571 4572 if (link) { 4573 if (target === '_blank') { 4574 window.open(link); 4575 } else { 4576 location.href = link; 4577 } 4578 } 4579 }); 4580 /* [File link] Click ==> link-type: link-file*/ 4581 $('a[attr-flink], .fr-custom-button[attr-flink], .fr-fic[attr-flink]').live({ 4582 click : function(e) { 4583 e.preventDefault(); 4584 4585 if($.clnav.check() 4586 && ($(this).closest('.clnav-nowrap-target').length > 0 || $(this).closest('.clnav-sidemobile').length > 0) 4587 ) { 4588 /* .cl-nav[data-behavior="overflow-nowrap"] */ 4589 if ($.clnav.d.isDrag) { 4590 e.stopImmediatePropagation(); 4591 return false;
4592 } 4593 } 4594 4595 if( $(this).is('[attr-flink=""]') 4596 || (typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) 4597 || (!property.VALIDPLAN || property.VALIDTYPE == 'PK') 4598 ) { 4599 return false; 4600 } 4601 4602 var id = $(this).attr('attr-flink'); 4603 if(typeof id == 'undefined' || !id) { 4604 return false; 4605 } else { 4606 // direct download 4607 // var flink_url = location.protocol + '//' + location.host +'/down/flink/' + id; 4608 // window.open(flink_url); 4609 4610 // modal open 4611 $.getJSON('/down/flink/get/id/' + id , {}, function (data) { 4612 checkError(data); 4613 if(typeof data.data == 'object' && !$.isEmptyObject(data.data)) { 4614 var flink_link = data.data; 4615 var flinkDownModal = $(this).showModalFlat($.lang[LANG]['config.information'], $.lang[LANG]['editor.link.file.download.check'], true, true, function() { 4616 var flink_url = location.protocol + '//' + location.host +'/down/flink/' + id + '/sid/' + flink_link.sid + '/s/' + encodeURIComponent(flink_link.file) + '/name/' + encodeURIComponent(flink_link.name); 4617 window.open(flink_url); 4618 flinkDownModal.modal('hide'); 4619 }, 'cancel', 'ok'); 4620 } else { 4621 return false; 4622 } 4623 }, 'json'); 4624 } 4625 4626 } 4627 }); 4628 4629 $('.element img[data-attach="true"][data-img-original="ON"]').live({ 4630 click: function(e) { 4631 $(this).mouseenter(); 4632 }, 4633 mouseenter : function(e) { 4634 if(!selectEL || typeof selectEL == 'undefined') { 4635 selectEL = $(this).closest('.element').attr('data-el'); 4636 } 4637 if(typeof selectEL == 'undefined') return false; 4638 4639 var offset = $(this).offset(), 4640 left = $(this).width() + offset.left-25, 4641 top = offset.top; 4642 var index = $('.' + selectEL + ' img[data-attach="true"]').index(this); 4643 4644 if(b.VIEW) { 4645 var src = $(this).prop('src').split('/'), 4646 file = src[src.length-1]; 4647 if(src.indexOf('googleusercontent') > -1) { 4648 file = src; 4649 } 4650 $('.config-image-view').css({ top : top + 'px', left : left + 'px' }).attr('data-src',$(this).prop('src')).attr('data-index',index).show(); 4651 } 4652 }, 4653 mouseleave : function(e) { 4654 $('.config-image-view').hide(); 4655 } 4656 }); 4657 4658 $('.config-image-view').live({ 4659 mousemove : function(e) { $('.config-image-view').show(); }, 4660 mouseout : function(e) { $('.config-image-view').show(); } 4661 }); 4662 4663 $('.config-image-view').on({ 4664 click: function (e) { 4665 $('.config-image-view').hide(); 4666 4667 var src = $(this).attr('data-src').split('/'), 4668 file = src[src.length-1], 4669 free = (src[4]=='free') ? true : false; 4670 4671 var img_src = $(this).attr('data-src') 4672 if(img_src.indexOf('googleusercontent') > -1) { 4673 file = img_src; 4674 } 4675 file = Base64.encode(file); 4676 if(b.SID && file) { 4677 $('.tooltip.in').removeClass('in'); 4678 $(this).attr("href","/image/original/sid/" + b.SID + "/file/" + file + '/free/' + free); 4679 } else { 4680 // console.log('None:: sid or src'); 4681 return false; 4682 } 4683 } 4684 }); 4685 4686 $('[data-lock-password]').live({ 4687 'keydown.autocomplete': function(e) { 4688 if (e.keyCode == 13) { 4689 $('[data-lock-submit]').click(); 4690 } 4691 }, 4692 'keyup': function() { 4693 if ($(this).val()) { 4694 $('[data-lock-submit]').addClass('btn-primary'); 4695 } else { 4696 $('[data-lock-submit]').removeClass('btn-primary'); 4697 } 4698 } 4699 }); 4700 4701 $('.form-control[type="number"]').live('keydown', function(e) { 4702 if (e.keyCode == 109 || e.keyCode == 189) { 4703 return false; 4704 } 4705 }); 4706 4707 var getSubmitCaptchaLang = function($parent) { 4708 var blocklang = $parent.attr('data-blocklang') || $parent.data('blocklang') || LANG; 4709 if(typeof $.lang == 'undefined' || typeof $.lang[blocklang] == 'undefined') blocklang = LANG; 4710 return blocklang; 4711 } 4712 4713 var getSubmitCaptchaText = function(blocklang, key, fallback) { 4714 if(typeof $.lang != 'undefined' && typeof $.lang[blocklang] != 'undefined' && typeof $.lang[blocklang][key] != 'undefined') return $.lang[blocklang][key]; 4715 if(typeof $.lang != 'undefined' && typeof $.lang[LANG] != 'undefined' && typeof $.lang[LANG][key] != 'undefined') return $.lang[LANG][key]; 4716 return fallback; 4717 } 4718 4719 var isSubmitCaptchaUserLoggedIn = function() { 4720 var pageMode = (typeof PAGE_MODE != 'undefined') ? PAGE_MODE : '', 4721 umember = (pageMode == 'c') ? ((typeof UMEMBER != 'undefined') ? UMEMBER : {}) : ((typeof property != 'undefined' && typeof property.UMEMBER != 'undefined') ? property.UMEMBER : {}), 4722 umemberActivate = (pageMode == 'c') ? ((typeof UMEMBER_ACTIVATE != 'undefined') ? Number(UMEMBER_ACTIVATE) : 0) : ((typeof property != 'undefined' && typeof property.UMEMBER_ACTIVATE != 'undefined') ? Number(property.UMEMBER_ACTIVATE) : 0), 4723 checkLogin = (pageMode == 'c') ? true : !!umember.check_login; 4724 4725 if(pageMode == 's' && umemberActivate == 0 && umember.id_type == 'creatorlink') { 4726 checkLogin = (umember.id !== undefined && umember.id) ? true : false;
4727 } 4728 4729 return checkLogin; 4730 } 4731 4732 var isSubmitCaptchaRequired = function($parent) { 4733 if(isSubmitCaptchaUserLoggedIn()) return false; 4734 if($parent.attr('data-type') == 'form') return false; 4735 return ($parent.attr('data-captcha') == 'true'); 4736 } 4737 4738 var getInlineFormCaptcha = function($parent) { 4739 if($parent.attr('data-type') != 'form') return ''; 4740 if(isSubmitCaptchaUserLoggedIn()) return ''; 4741 return $.trim($parent.find('.form-captcha .input-captcha').val()); 4742 } 4743 4744 var getSubmitCaptchaHTML = function(blocklang) { 4745 var captchaTip = getSubmitCaptchaText(blocklang, 'form.item.captcha-tip', ''); 4746 4747 return '\ 4748 <div class="form-group form-captcha">\ 4749 <div class="kcaptcha-wrap display-flex">\ 4750 <div class="kcaptcha-box">\ 4751 <img src="//storage.googleapis.com/i.addblock.net/forum/captcha_sample_Img.jpg" class="kcaptcha-img" alt="' + captchaTip + '" title="' + captchaTip + '">\ 4752 </div>\ 4753 <div class="text-left kcaptcha-key-wrap">\ 4754 <input type="text" name="wr_key" class="col-xs-12 col-sm-12 col-md-12 ed input-bg-opacity input-captcha" placeholder="' + getSubmitCaptchaText(blocklang, 'form.item.captcha.placeholder', 'CAPTCHA') + '" autocomplete="off">\ 4755 <a href="#" class="kcaptcha-change hand small fsize12"><svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 12C4.33 12 2.92 11.42 1.75 10.25C0.58 9.08 0 7.67 0 6C0 4.33 0.58 2.92 1.75 1.75C2.92 0.58 4.33 0 6 0C6.9 0 7.74 0.19 8.51 0.56C9.28 0.93 9.94 1.44 10.5 2.06V0H12V5H7V3.5H9.73C9.33 2.89 8.8 2.4 8.15 2.04C7.5 1.68 6.78 1.5 6 1.5C4.75 1.5 3.69 1.94 2.81 2.81C1.93 3.68 1.5 4.75 1.5 6C1.5 7.25 1.94 8.31 2.81 9.19C3.68 10.07 4.75 10.5 6 10.5C7.17 10.5 8.17 10.11 9 9.34C9.83 8.57 10.31 7.62 10.44 6.5H11.98C11.85 8.06 11.22 9.36 10.08 10.42C8.94 11.48 7.58 12 6 12Z" fill="#8E9095"/></svg>
4755' + getSubmitCaptchaText(blocklang, 'form.item.captcha-change', 'Refresh') + '</a>\ 4756 </div>\ 4757 </div>\ 4758 </div>\ 4759 '; 4760 } 4761 4762 var showSubmitCaptchaError = function($modal, blocklang, errorKey) { 4763 if(!$modal || $modal.length == 0) return; 4764 4765 var message = getSubmitCaptchaText(blocklang, errorKey, ''); 4766 if(!message) message = getSubmitCaptchaText(blocklang, 'form.item.captcha.wrong', 'Invalid CAPTCHA code.'); 4767 4768 $modal.find('.form-captcha .error').remove(); 4769 $modal.find('.form-captcha').append('<div class="error">' + message + '</div>').addClass('required'); 4770 $modal.find('.input-captcha').focus(); 4771 } 4772 4773 var reloadSubmitCaptcha = function($modal, pid) { 4774 if(!$modal || $modal.length == 0) return; 4775 $modal.find('.input-captcha').val(''); 4776 $modal.find('.form-captcha .error').remove(); 4777 $modal.find('.form-captcha').removeClass('required'); 4778 load_form_kcaptcha($modal, pid); 4779 } 4780 4781 var hideSubmitCaptchaModal = function($modal) { 4782 if(!$modal || $modal.length == 0) return; 4783 $modal.find('input:focus, textarea:focus, select:focus').blur(); 4784 $modal.modal('hide'); 4785 } 4786 4787 var showSubmitCaptchaModal = function($parent, pid, callback) { 4788 var blocklang = getSubmitCaptchaLang($parent); 4789 var modal = $(document.body).showModalFlat( 4790 getSubmitCaptchaText(blocklang, 'form.item.captcha.title', 'ë³´ì íì¸'), 4791 getSubmitCaptchaHTML(blocklang), 4792 true, 4793 true, 4794 function() { 4795 var captcha = $.trim(modal.find('.input-captcha').val()); 4796 if(captcha == '') { 4797 showSubmitCaptchaError(modal, blocklang, 'config.wrong-captcha'); 4798 return false; 4799 } 4800 4801 if(typeof callback == 'function') callback(captcha, modal, blocklang); 4802 }, 4803 'cancel', 4804 'ok', 4805 'cl-cmmodal cl-s-btn w560 cl-p70 cl-p0 form-captcha-submit-modal', 4806 true 4807 ); 4808 4809 reloadSubmitCaptcha(modal, pid); 4810 modal.find('.kcaptcha-change').off('click.submitCaptcha').on('click.submitCaptcha', function(e) { 4811 e.preventDefault(); 4812 reloadSubmitCaptcha(modal, pid); 4813 }); 4814 modal.find('.input-captcha').off('keydown.submitCaptcha').on('keydown.submitCaptcha', function(e) { 4815 if(e.keyCode == 13) { 4816 modal.find('.ok-button-dialog').click(); 4817 return false; 4818 } 4819 }).focus(); 4820 4821 return modal; 4822 } 4823 4824 $('[data-form-submit]').live('click', function() { 4825 var is_templates = checkTemplateSite(b.SID), 4826 is_render = (window.location.pathname.match(/^\/render(\/|$)/) !== null); 4827 if(is_render && !isRenderFormSubmitAllowed()) return false; 4828 if($('#flat-modal').length || is_templates) return false; 4829 if($('#flat-modal').length) return; 4830 var $parent = $(this).closest('.element'), 4831 $items = $parent.find('[form-idx]'), 4832 values = {}, 4833 pid = $parent.attr('data-id'), 4834 submit = true, 4835 el = '.' + $(this).parents('.element').attr('data-name'); 4836 4837 if($parent.find('.required').length > 0) { 4838 $parent.find('.form-inline').removeClass('required required-mr required-privacy'); 4839 $parent.find('.form-group').removeClass('required'); 4840 } 4841 4842 $parent.find('.error').remove(); 4843 $.each($items, function(i,v) { 4844 var idx = $(this).attr('form-idx'), 4845 name = $(this).attr('form-name'), 4846 type = $(this).attr('form-type'), 4847 require = $(this).attr('form-require'), 4848 seq = $(this).attr('form-seq'); 4849 4850 switch(type) { 4851 case "radio": 4852 case "check": 4853 case "radio.image": 4854 case "check.image": 4855 if(type == 'radio' || type == 'radio.image') { 4856 var val = $(this).find(':radio[name]:checked').val(); 4857 values[seq] = (typeof val == 'undefined') ? '' : val; 4858 } else { 4859 values[seq] = $(this).find(':checkbox[name]:checked').map(function() { return this.value; } ).get().join(); 4860 } 4861 4862 if(typeof require != 'undefined' && require) { 4863 if(!values[seq]) { 4864 formRequireDisplay($(this),i+1); 4865 submit = false; 4866 } 4867 } 4868 break; 4869 case "date": 4870 var date = $(this).find('input').map(function() { return this.value.replace(/-/g, ''); } ).get(), 4871 valid = true; 4872 4873 $.each(date, function(k,d) { 4874 if(d=='') valid = false; 4875 }); 4876 4877 if(typeof require != 'undefined' && require) { 4878 if(valid == false) { 4879 formRequireDisplay($(this),i+1); 4880 submit = false;
4881 } 4882 } 4883 values[seq] = date.join(''); 4884 break; 4885 case "date2": 4886 var date = $(v).find('input').val(); 4887 if($(v).find('input').length > 1 && $(v).find('.date-yyyy').length > 0) { //old 4888 var ymd = $(v).find('.date-yyyy').val() + '-' + $(v).find('.date-mm').val() + '-' + $(v).find('.date-dd').val(); 4889 var time = $(v).find('.date-hh').val() + ':' + $(v).find('.date-ii').val(); 4890 date = ymd + ' ' + time; 4891 } 4892 values[seq] = date; 4893 if(typeof require != 'undefined' && require) { 4894 if(!values[seq]) { 4895 formRequireDisplay($(this),i+1); 4896 submit = false; 4897 } 4898 } 4899 4900 break; 4901 case "file.upload": 4902 var fileArr = new Array(); 4903 $(this).find('input[type="hidden"]').each(function(idx, v) { 4904 var f = '#FILE#||' + $(v).val(); 4905 fileArr.push(f); 4906 }); 4907 4908 var val = fileArr.join(','); 4909 values[seq] = (typeof val == 'undefined') ? '' : val; 4910 4911 if(typeof require != 'undefined' && require) { 4912 if(!values[seq].replace('#FILE#||', '')) { 4913 formRequireDisplay($(this),i+1); 4914 submit = false; 4915 } 4916 } 4917 break; 4918 default : 4919 var itemValue = $(this).hasClass('franchise-form-select') ? $(this).find('select.franchise-form-select-native').val() : $(this).val(); 4920 values[seq] = (typeof itemValue == 'undefined' || itemValue === null) ? '' : itemValue.toString().trim(); 4921 if(values[seq] && checkEmojis(values[seq])) { 4922 formRequireDisplay($(this),i+1,'emoji'); 4923 submit = false; 4924 } else if(typeof require != 'undefined' && require) { 4925 if(!values[seq]) { 4926 formRequireDisplay($(this),i+1); 4927 submit = false; 4928 } 4929 } 4930 break; 4931 } 4932 }); 4933 4934 var $privacy = $parent.find('.form-privacy'), 4935 check; 4936 4937 if($privacy.css('display')!='none') { 4938 check = $privacy.find('.check-privacy').prop('checked'); 4939 if(check === false) { 4940 formRequireDisplay($privacy.find('.check-privacy'),'privacy'); 4941 submit = false; 4942 } 4943 } 4944 4945 if($parent.attr('data-type') == 'form') { 4946 var $captcha = $parent.find('.form-captcha'); 4947 var formCaptcha = ''; 4948 4949 if($captcha.length > 0) { 4950 formCaptcha = $captcha.find('.input-captcha').val(); 4951 if(formCaptcha == '') { 4952 formRequireDisplay($captcha.find('.input-captcha'),'captcha'); 4953 submit = false; 4954 } 4955 } 4956 } else { 4957 var captcha_display = isSubmitCaptchaRequired($parent); 4958 $parent.find('.form-captcha').remove(); 4959 } 4960 4961 if(!$parent.hasClass('el-fixedcontact') && $('.form-inline .error').length > 0) { 4962 var $error = $parent.find('.error'); 4963 var header_height = $('.navbar-fheader').height(); 4964 $.each($error, function(i,v) { 4965 if(i==0) { 4966 var $form_group = $(v).parent().find('[form-type]'); 4967 var type = $form_group.attr('form-type'); 4968 var privacy = $(v).parent().hasClass('form-privacy'); 4969 if($.inArray(type, ['radio', 'check', 'radio.image', 'check.image']) > -1 || privacy) { 4970 var form_offset = $(v).parents('.form-group').offset(); 4971 $("html, body").animate({scrollTop: ($parent.attr('data-type') == 'form')? form_offset.top-header_height : $parent.offset().top-header_height}); 4972 } else { 4973 $(v).parent().find('.form-control').first().focus(); 4974 } 4975 } 4976 }); 4977 } 4978 4979 if(submit) { 4980 var completeSubmitForm = function(doneText) { 4981 var message = doneText; 4982 if(!message) message = $parent.attr('data-form-done'); 4983 if(!message && typeof $.lang != 'undefined' && typeof LANG != 'undefined' && $.lang[LANG]) { 4984 message = $.lang[LANG]['forms.submit.done']; 4985 } 4986 if(!message) message = (typeof LANG != 'undefined' && LANG == 'ko') ? 'ì ì² ìë£ëììµëë¤.' : 'Your submission has been received'; 4987 4988 $(this).showModalFlat('INFORMATION', message, true, false, '', 'ok', '', 'cl-modal cl-none-title cl-cmmodal cl-p130 cl-s-btn w560','','',function(){ 4989 if(typeof formCallback == 'function') formCallback(pid); 4990 }); 4991 4992 setDefaultForm(el); 4993 }; 4994 var submitForm = function(formCaptcha, captchaModal, captchaBlocklang) { 4995 $.processON(); 4996 $.ajax({ 4997 url: '/template/forms/submit', 4998 data: { sid : b.SID, pid : pid, values : values, check : check, captcha : formCaptcha, block_type: 'form' }, 4999 dataType: 'json', 5000 type: 'POST', 5001 async: true, 5002 cache: false, 5003 success: function (data) { 5004 checkError(data); 5005 5006 if(typeof data.error != 'undefined' && data.error != '') { 5007 // $(this).showModalFlat('', data.error,true,false,'','ok','','cl-cmmodal cl-s-btn w560 cl-p130 cl-t80 cl-modal cl-none-title cl-close-btn','','',function() { 5008 // $(document).on('keydown', function(e) { 5009 // if(e.keyCode == 27) modal.modal('hide'); 5010 // }); 5011 // }); 5012 return false;
5013 } 5014 5015 if(typeof data.captcha_error != 'undefined' && data.captcha_error != '') { 5016 if(captchaModal && captchaModal.length > 0) { 5017 reloadSubmitCaptcha(captchaModal, pid); 5018 showSubmitCaptchaError(captchaModal, captchaBlocklang, data.captcha_error); 5019 } else if($parent.attr('data-type') == 'form' && $parent.find('.form-captcha').length > 0) { 5020 reloadSubmitCaptcha($parent, pid); 5021 showSubmitCaptchaError($parent, getSubmitCaptchaLang($parent), data.captcha_error); 5022 } else { 5023 alert($.lang[LANG][data.captcha_error]); 5024 } 5025 return false; 5026 } 5027 5028 if(captchaModal && captchaModal.length > 0) hideSubmitCaptchaModal(captchaModal); 5029 completeSubmitForm.call(this, data.done); 5030 }, 5031 error: function(xhr) { 5032 // DB ì ì¥ í ì림 ë°ì¡ ì§ì°ì¼ë¡ 502ê° ë°íëë ê²½ì° ì ì¶ ìë£ ìíë¡ ì²ë¦¬íë¤. 5033 if(xhr && xhr.status == 502) { 5034 if(captchaModal && captchaModal.length > 0) hideSubmitCaptchaModal(captchaModal); 5035 completeSubmitForm.call(this); 5036 } 5037 }, 5038 complete: function() { 5039 $.processOFF(); 5040 } 5041 },'json'); 5042 }; 5043 5044 if(captcha_display) { 5045 showSubmitCaptchaModal($parent, pid, function(captcha, captchaModal, captchaBlocklang) { 5046 submitForm(captcha, captchaModal, captchaBlocklang); 5047 }); 5048 } else { 5049 submitForm(getInlineFormCaptcha($parent), null, getSubmitCaptchaLang($parent)); 5050 } 5051 } 5052 }); 5053 5054 var formRequireDisplay = function($obj,idx,error_type) { 5055 if(typeof error_type == 'undefined') error_type = ''; 5056 5057 var isModoo = $obj.parents('.element').hasClass('modoo'); 5058 5059 var blang = $obj.parents('.element').attr('data-lang'), 5060 sdefault = ''; 5061 5062 var $el = $obj.parents('.element'); 5063 5064 if(typeof property.SLANG.select != 'undefined') { 5065 var _lang = property.SLANG.select; 5066 if(_lang.indexOf('íêµì´') > -1) { 5067 sdefault = 'íì ì ë ¥ ì¬í'; 5068 } else if(_lang.indexOf('English') > -1) { 5069 sdefault = 'Required'; 5070 } else if(_lang.indexOf('æ¥æ¬èª') > -1) { 5071 sdefault = 'å¿ é '; 5072 } else { 5073 sdefault = 'Required'; 5074 } 5075 } else sdefault = 'íì ì ë ¥ ì¬í'; 5076 5077 5078 if(error_type == 'emoji') { 5079 sdefault = $.lang[LANG]['config.unable.emoji']; 5080 } 5081 5082 var $parent = (isModoo) ? $obj.parents('.box') : $obj.parents('.form-group'), 5083 $html = $('<div class="error">' + sdefault + '</div>'); 5084 $parent.append($html); 5085 if($obj.parents('.form-inline').find('.error').length==1) { 5086 if(isNumber(idx)) $('body').scrollTo($('[form-idx="' + idx + '"]'), 0, { offset : -150 } ); 5087 else $('body').scrollTo($parent, 0, { offset : -150 } ); 5088 } 5089 if($el.attr('data-type') == 'contact' && $el.attr('data-type2') == 'franchise bar') { 5090 $parent.addClass('required'); 5091 $el.find('.form-inline').addClass('required'); 5092 5093 if($parent.hasClass('form-privacy')) { 5094 $el.find('.form-inline').addClass('required-privacy'); 5095 } else { 5096 if(idx > 2) { 5097 $el.find('.form-inline').addClass('required-mr'); 5098 } 5099 } 5100 } 5101 } 5102 5103 $('.date-yyyy').live('keyup', function(e) { 5104 var val = $(this).val(); 5105 if(val.length>=4) { 5106 if((e.target.selectionStart).length) ; 5107 else { 5108 if(isNaN(parseInt(val))) { 5109 $(this).val('1900'); 5110 } 5111 $(this).parents('.form-group').find('.date-mm').focus(); 5112 } 5113 } 5114 }).live('blur', function(e) { 5115 var val = $(this).val(); 5116 if(isNaN(parseInt(val))) { 5117 $(this).val('1900'); 5118 } else { 5119 if(parseInt(val)<1900) { 5120 $(this).val('1900'); 5121 } 5122 } 5123 }); 5124 5125 $('.date-mm, .date-dd, .date-hh, .date-ii').live('keyup', function(e) { 5126 var val = $(this).val(); 5127 if(val.length>=2) { 5128 if((e.target.selectionStart).length) ; 5129 else { 5130 if(isNaN(parseInt(val))) { 5131 $(this).val('00'); 5132 } 5133 if($(this).hasClass('date-mm')) { 5134 $(this).parents('.form-group').find('.date-dd').focus(); 5135 } else if($(this).hasClass('date-dd')) { 5136 $(this).parents('.form-group').find('.date-hh').focus(); 5137 } else if($(this).hasClass('date-hh')) { 5138 $(this).parents('.form-group').find('.date-ii').focus(); 5139 } else if($(this).hasClass('date-ii')) { 5140 // $(this).parents('.form-group').next().find('input').focus(); 5141 } 5142 } 5143 } 5144 }).live('blur', function(e) { 5145 var val = $(this).val(); 5146 if(isNaN(parseInt(val))) { 5147 $(this).val('01'); 5148 } else { 5149 if(val.length==1) { 5150 $(this).val('0' + val); 5151 } else { 5152 if($(this).hasClass('date-mm') && parseInt(val)>12) { 5153 $(this).val('12'); 5154 } else if($(this).hasClass('date-dd') && parseInt(val)>31) { 5155 $(this).val('31'); 5156 } else if($(this).hasClass('date-hh') && parseInt(val)>23) { 5157 $(this).val('00'); 5158 } else if($(this).hasClass('date-ii') && parseInt(val)>59) { 5159 $(this).val('00'); 5160 } 5161 } 5162 } 5163 }); 5164 5165 $('[data-lock-submit]').live('click', function() { 5166 var el = $(this).closest('.form-inline'); 5167 var pw = el.find('[data-lock-password]').val().trim(); 5168 if(pw.length == 0 ) { 5169 el.find('[data-lock-password]').focus(); 5170 el.find('.error-text').text('! ' + $.lang[LANG]['config.enter-password']); 5171 return false;
5172 } 5173 5174 $.modalON(); 5175 let lockType = $(this).attr('data-lock'); 5176 var url = (lockType == 'site')? '/template/siteLockController/type/pw_check':'/template/menuLockController/type/pw_check'; 5177 $.post(url, {s: b.SMENU, sid: b.SID, page: b.PAGE, pw: pw, publish : b.PUBLISH}, function(data) { 5178 checkError(data); 5179 $.modalOFF(); 5180 if(data.result) { 5181 if(lockType == 'site' && data.ss_site_lock) { 5182 localStorage.setItem('ss_' + b.SID + '_site_lock', data.ss_site_lock); 5183 localStorage.setItem('last_activity', data.last_activity); 5184 } 5185 window.location.reload(true); 5186 } else { 5187 el.find('[data-lock-password]').focus(); 5188 el.find('.error-text').text('! ' + $.lang[LANG]['siteum.regexp.pw.invalid']); 5189 } 5190 }, 'json'); 5191 }); 5192 5193 $('[data-contact-submit]').live('click',function(e) { 5194 var is_templates = checkTemplateSite(b.SID), 5195 is_render = (window.location.pathname.match(/^\/render(\/|$)/) !== null); 5196 if(is_render && !isRenderFormSubmitAllowed()) return false; 5197 // if($('#flat-modal').length || window.location != window.parent.location) return; 5198 5199 //í í릿 ì¶ê° íë©´ììë§ ë²í¼ ëì ì ëê²ë ì²ë¦¬ 5200 if($('#flat-modal').length || is_templates) return; 5201 5202 $.modalON(); 5203 5204 var el = '.' + $(this).parents('.element').attr('data-name'), 5205 el_id = $(this).parents('.element').attr('data-id'), 5206 google_track = $(this).attr('data-google-track'), 5207 google_track_run = false, 5208 daum_track = $(this).attr('data-daum-track'), 5209 daum_track_run = false, 5210 naver_track = $(this).attr('data-naver-track'), 5211 naver_track_run = false; 5212 5213 var hasEmoji = false; 5214 $(el+' .form-group .form-control:not([readonly])').each(function() { 5215 if(checkEmojis($(this).val().trim())) { 5216 hasEmoji = true; 5217 return false; 5218 } 5219 }); 5220 5221 if(hasEmoji) { 5222 e.preventDefault(); 5223 $.modalOFF(); 5224 errorEmojisModal(); 5225 return false; 5226 } 5227 5228 google_track_run = (typeof google_track != 'undefined') ? true : false; 5229 daum_track_run = (typeof daum_track != 'undefined') ? true : false; 5230 naver_track_run = (typeof naver_track != 'undefined') ? true : false; 5231 5232 if($(el).length==0 || $(el).length>1) { 5233 alert('Invalid form data'); 5234 return false; 5235 } 5236 5237 5238 var firstname = ($(el + ' [data-contact-firstname]').length >0 ) ? setDefaultValue($(el + ' [data-contact-firstname]').val().trim()) : '', 5239 lastname = ($(el + ' [data-contact-lastname]').length > 0) ? setDefaultValue($(el + ' [data-contact-lastname]').val().trim()) : '', 5240 email = ($(el + ' [data-contact-email]').length > 0) ? setDefaultValue($(el + ' [data-contact-email]').val().trim()) : '', 5241 web = ($(el + ' [data-contact-website]').length > 0) ? setDefaultValue($(el + ' [data-contact-website]').val().trim()) : '', 5242 phone = ($(el + ' [data-contact-phone]').length > 0) ? setDefaultValue($(el + ' [data-contact-phone]').val().trim()) : '' , 5243 subject = ($(el + ' [data-contact-subject]').length > 0) ? setDefaultValue($(el + ' [data-contact-subject]').val().trim()) : '', 5244 message = ($(el + ' [data-contact-message]').length > 0) ? setDefaultValue($(el + ' [data-contact-message]').val().trim()) : '', 5245 etc = {}; 5246 $(el + ' [data-contact-etc]').each(function(i) { 5247 var key = $(this).attr('data-contact-etc'); 5248 etc[key] = setDefaultValueEtc($(this).attr('type'),$(this)); 5249 }); 5250 5251 var require_firstname = $(el + ' [data-contact-firstname]').attr('data-required'), 5252 require_lastname = $(el + ' [data-contact-lastname]').attr('data-required'), 5253 require_email = $(el + ' [data-contact-email]').attr('data-required'), 5254 require_web = $(el + ' [data-contact-website]').attr('data-required'), 5255 require_phone = $(el + ' [data-contact-phone]').attr('data-required'), 5256 require_subject = $(el + ' [data-contact-subject]').attr('data-required'); 5257 5258 /*default:: required[email,message] | optional[firstname,lastname,web,phone,subject] // data-optional='true'->optional, 'false'->required */ 5259 var optional_firstname = $(el + ' [data-contact-firstname]').attr('data-optional'), 5260 optional_lastname = $(el + ' [data-contact-lastname]').attr('data-optional'), 5261 optional_email = $(el + ' [data-contact-email]').attr('data-optional'), 5262 optional_web = $(el + ' [data-contact-web]').attr('data-optional'), 5263 optional_phone = $(el + ' [data-contact-phone]').attr('data-optional'), 5264 optional_subject = $(el + ' [data-contact-subject]').attr('data-optional'), 5265 optional_message = $(el + ' [data-contact-message]').attr('data-optional'); 5266 var optional_etc = {}; 5267 5268 $(el + ' [data-contact-etc]').each(function(i) { 5269 var key = $(this).attr('data-contact-etc'); 5270 optional_etc[key] = $(this).attr('data-optional'); 5271 }); 5272 5273 var $parent = $(this).parents('.element'), 5274 el = '.' + $(this).parents('.element').attr('data-name'), 5275 contprivacy = $(el+' .form-group.contact-privacy-area').css('display'), 5276 contprivacy_display = (typeof contprivacy == 'undefined' || contprivacy == 'none') ? false : true, 5277 privacy_check = $parent.find('.contact-checkbox-text'), 5278 privacy_chk = privacy_check.is(":checked"), 5279 captcha_display = isSubmitCaptchaRequired($parent), 5280 check = true, 5281 check_option = []; 5282 5283 $parent.find('.form-captcha').remove(); 5284 5285 if(!firstname) { 5286 var name_text = ($(el + ' [data-contact-lastname]').length > 0) ? 'first name' : 'name'; 5287 if(typeof optional_firstname != 'undefined' && optional_firstname == 'false') check = true; 5288 else if ($(el + ' [data-contact-firstname]').length == 0) check
5288= true; 5289 else check = false; 5290 5291 var str = ($(el + ' [data-contact-firstname]').length > 0 && $(el + ' [data-contact-firstname]').attr('data-contact-firstname').length > 0) ? $(el + ' [data-contact-firstname]').attr('data-contact-firstname') : name_text; 5292 if(!check) check_option.push(str); 5293 } 5294 5295 if($(el + ' [data-contact-lastname]').length > 0 && !lastname) { 5296 if(typeof optional_lastname != 'undefined' && optional_lastname == 'false') check = true; 5297 else if ($(el + ' [data-contact-lastname]').length == 0) check = true; 5298 else check = false; 5299 5300 var str = ($(el + ' [data-contact-lastname]').attr('data-contact-lastname').length > 0) ? $(el + ' [data-contact-lastname]').attr('data-contact-lastname') : 'last name'; 5301 if(!check) check_option.push(str); 5302 } 5303 5304 /*if((!firstname && typeof optional_firstname != 'undefined' && optional_firstname == "false") || (!lastname && typeof optional_lastname != 'undefined' && optional_lastname == "false")) { 5305 var str = ($(el + ' [data-contact-firstname]').attr('data-contact-firstname').length > 0) ? $(el + ' [data-contact-firstname]').attr('data-contact-firstname') : 'name'; 5306 check_option.push(str); 5307 }*/ 5308 5309 if(!web && typeof optional_web != 'undefined' && optional_web == 'false') { 5310 var str = ($(el + ' [data-contact-web]').attr('data-contact-web').length > 0) ? $(el + ' [data-contact-web]').attr('data-contact-web') : 'web'; 5311 check_option.push(str); 5312 } 5313 5314 if(!phone && typeof optional_phone != 'undefined' && optional_phone == 'false') { 5315 var str = ($(el + ' [data-contact-phone]').attr('data-contact-phone').length > 0) ? $(el + ' [data-contact-phone]').attr('data-contact-phone') : 'phone'; 5316 check_option.push(str); 5317 } 5318 5319 if(!subject && typeof optional_subject != 'undefined' && optional_subject == 'false') { 5320 var str = ($(el + ' [data-contact-subject]').attr('data-contact-subject').length > 0) ? $(el + ' [data-contact-subject]').attr('data-contact-subject') : 'subject'; 5321 check_option.push(str); 5322 } 5323 5324 if(!email) { 5325 if(typeof optional_email != 'undefined' && optional_email == 'true') check = true; 5326 else if ($(el + ' [data-contact-email]').length == 0) check = true; 5327 else check = false; 5328 5329 var str = ($(el + ' [data-contact-email]').attr('data-contact-email').length > 0) ? $(el + ' [data-contact-email]').attr('data-contact-email') : 'email'; 5330 if(!check) check_option.push(str); 5331 } 5332 if(!message) { 5333 if(typeof optional_message != 'undefined' && optional_message == 'true') check = true; 5334 else check = false; 5335 5336 var str = ($(el + ' [data-contact-message]').attr('data-contact-message').length > 0) ? $(el + ' [data-contact-message]').attr('data-contact-message') : 'message'; 5337 if(!check) check_option.push(str); 5338 } 5339 5340 $.each(etc,function(k,v){ 5341 if(!etc[k] && typeof optional_etc[k] != 'undefined' & optional_etc[k] == 'false') { 5342 check_option.push(k); 5343 } 5344 }); 5345 5346 check = ((check_option.length == 0) && ((contprivacy_display == false) || (privacy_chk == true))) ? true : false; 5347 5348 if(require_firstname == 'true' && !firstname) { 5349 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-firstname]').attr('placeholder') + $.lang[LANG]['check.required'], true, false, '', 'ok'); 5350 return false; 5351 } 5352 5353 if(require_lastname == 'true' && !lastname) { 5354 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-lastname]').attr('placeholder') + $.lang[LANG]['message.check.required'], true, false, '', 'ok'); 5355 return false; 5356 } 5357 5358 if(require_web == 'true' && !web) { 5359 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-website]').attr('placeholder') + $.lang[LANG]['message.check.required'], true, false, '', 'ok'); 5360 return false; 5361 } 5362 5363 if(require_phone == 'true' && !phone) { 5364 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-phone]').attr('placeholder') + $.lang[LANG]['message.check.required'], true, false, '', 'ok'); 5365 return false;
5366 } 5367 5368 if(require_subject == 'true' && !subject) { 5369 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-subject]').attr('placeholder') + $.lang[LANG]['message.check.required'], true, false, '', 'ok'); 5370 return false; 5371 } 5372 5373 if(check) { 5374 var submitContact = function(contactCaptcha, captchaModal, captchaBlocklang) { 5375 $.modalON(); 5376 $.post('/template/update/type/contact',{ 5377 id : b.SID, 5378 seq : el_id, 5379 s : 'message', 5380 firstname : firstname, 5381 lastname : lastname, 5382 email : email, 5383 web : web, 5384 phone : phone, 5385 subject : subject, 5386 message : message, 5387 etc : JSON.stringify(etc), 5388 captcha : contactCaptcha, 5389 block_type: 'contact', 5390 }, function(data) { 5391 checkError(data); 5392 if(typeof data.captcha_error != 'undefined' && data.captcha_error != '') { 5393 $.modalOFF(); 5394 if(captchaModal && captchaModal.length > 0) { 5395 reloadSubmitCaptcha(captchaModal, el_id); 5396 showSubmitCaptchaError(captchaModal, captchaBlocklang, data.captcha_error); 5397 } else { 5398 alert($.lang[LANG][data.captcha_error]); 5399 } 5400 return false; 5401 } 5402 5403 if(typeof data.error == 'undefined' || data.error == '') { 5404 var ch_lang = getLang($(el), b.SID), 5405 submit_txt = (typeof data.submitStr != 'undefined' && data.submitStr) ? data.submitStr : $.lang[ch_lang]['message.sent']; 5406 5407 if(captchaModal && captchaModal.length > 0) hideSubmitCaptchaModal(captchaModal); 5408 $(document.body).showModalFlat('INFORMATION',submit_txt,true,false, '', 'ok', '', 'cl-modal cl-none-title cl-cmmodal cl-p130 cl-s-btn w560'); 5409 setDefaultContactForm(el); 5410 setDefaultContactFormEtc(el); 5411 if(typeof contactCallback == 'function') 5412 contactCallback(el_id); 5413 } 5414 },'json'); 5415 setTimeout(function() { 5416 $.modalOFF(); 5417 },1000); 5418 }; 5419 5420 if(captcha_display) { 5421 $.modalOFF(); 5422 showSubmitCaptchaModal($parent, el_id, function(captcha, captchaModal, captchaBlocklang) { 5423 submitContact(captcha, captchaModal, captchaBlocklang); 5424 }); 5425 } else { 5426 submitContact('', null, getSubmitCaptchaLang($parent)); 5427 } 5428 } else { 5429 $.modalOFF(); 5430 var check_str = ''; 5431 $.each(check_option,function(k,v) { 5432 check_str = (check_str) ? check_str + ' / ': ''; 5433 check_str = check_str + v; 5434 }); 5435 5436 if(check_str) { 5437 var modal = $(this).showModalFlat('INFORMATION',check_str+ $.lang[LANG]['message.check.required'],true,false, '', 'ok', '', 'cl-modal cl-none-title cl-cmmodal cl-p130 cl-s-btn w560'); 5438 } else { 5439 var modal = $(this).showModalFlat('INFORMATION',$.lang[LANG]['message.privacy.check.required'],true,false, '', 'ok'); 5440 } 5441 5442 } 5443 }); 5444 5445 $('.contact-privacy-text').live('click',function() { 5446 var contactEL = $(this).parents('.element'), 5447 contactPriavcy = $(contactEL).find('.form-inline .contact-privacy-area .contact-privacy-box'), 5448 checkType = (typeof $(contactEL).attr('data-type') != 'undefined' && $(contactEL).attr('data-type') == 'contact') ? true : false; 5449 5450 if(checkType && contactPriavcy.length > 0) { 5451 if(contactPriavcy.css('display') == 'none') contactPriavcy.show(); 5452 else contactPriavcy.hide(); 5453 } 5454 }); 5455 5456 $('.element .gallery-loadmore').live({ 5457 click: function(e) { 5458 if(typeof $(this).data('id') == 'undefined' || typeof $(this).data('page') == 'undefined') { 5459 e.preventDefault(); 5460 return false; 5461 } 5462 5463 var $gLoadmoreBtn = $(this); 5464 var id = $gLoadmoreBtn.attr('data-id'); 5465 var mode = $gLoadmoreBtn.attr('data-mode'); 5466 var gpage = Number($gLoadmoreBtn.attr('data-page') || 1); 5467 var view = Number($gLoadmoreBtn.attr('data-view') || 6); 5468 5469 var $gEl = $('.element[data-id="' + id + '"]'); 5470 var $gContainer = $gEl.find('.container'); 5471 var $gLoop = $gEl.find('[data-loop="true"]'); 5472 var $gtoolbar = getGToolbar($gEl); 5473 var $gc = $gtoolbar.find('.cl-gcate-list .cl-gcate-item.active'); 5474 var $go = $gtoolbar.find('.cl-gsort-list .cl-gsort-item.active a'); 5475 var sfl = ($gc.index() > 0) ? 'category' : ''; 5476 var stx = (sfl) ? $gc.text().trim() : ''; 5477 var orderby = ($go.length > 0) ? $go.attr('data-orderby') : 'recent'; 5478 5479 var val = galleryEL[id]; 5480 var tag = htmlspecialchars_decode(val.eltag,'ENT_QUOTES'); 5481 var g_settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 5482 var folder = (typeof val.folder != 'undefined' && val.folder > 0) ? val.folder : ''; 5483 var isMasonry = $gLoadmoreBtn.hasClass('masonry-layout'); 5484 var block_lang = (typeof g_settings.blocklang != 'undefined') ? g_settings.blocklang : LANG; 5485 5486 var nodes = $gLoop.clone().children('.grid'); 5487 initGalleryField(nodes); 5488 5489 var g_number = $gLoop.data('gallery-no'); 5490 var total = 0; 5491 var items = 0; 5492 var gallery_item = ''; 5493 5494 var checkLoadmoreInLoop = ($(tag).find('[data-loop="true"] .loadmore-wrap').length) ? true : false;
5495 var glm = $(tag).find('.loadmore-wrap'); 5496 5497 var checkGallerySVG = ($(tag).find('.gimg-svg-wrap').length > 0) ? true : false; 5498 var checkGFrameTitleOFF = (val.mode == 'gallery' && (typeof g_settings.gframe_title_visible != 'undefined' && g_settings.gframe_title_visible == 'OFF')) ? true : false; 5499 5500 if(id == 'all_products') { 5501 sfl = 'orderby'; 5502 stx = (typeof $gc.find('a').attr('data-orderby') != 'undefined') ? $gc.find('a').attr('data-orderby') : $('.allProducts-sort-list>li:first-child').find('a').attr('data-orderby'); 5503 } 5504 5505 var checkUseComment = checkUseCommentFunc(val.mode, val.eltag); 5506 var checkUseLike = checkUseLikeFunc(val.mode, val.eltag); 5507 var uri = getSearchURL(); 5508 // if(uri.category_no == '') { 5509 // uri.category_no = (typeof g_settings.lux_category_no != 'undefined') ? g_settings.lux_category_no : ''; 5510 // } 5511 if (isObjectEmpty(uri) && _this.b.LUX) { 5512 uri = val.searches.uri; 5513 } 5514 5515 $.ajax({ 5516 url: '/template/gallery/list/pid/' + id + '/sid/' + property.SID + '/spage/' + property.PAGE + '/page/' + gpage + '/view/' + view + '/publish/' + property.PUBLISH, 5517 data: { g_mode: mode, visible: true, sfl: sfl, stx: stx, orderby: orderby, total: true, uri : uri }, 5518 dataType: 'json', 5519 type: 'POST', 5520 async: false, 5521 cache: false, 5522 success: function (data) { 5523 $.cookie('gallery-page-' + id, gpage, { path: '/', expires: 12 * 60 * 60 * 1000 }); 5524 $.cookie('gallery-category-' + id, stx, { path: '/', expires: 12 * 60 * 60 * 1000 }); 5525 $.cookie('gallery-orderby-' + id, orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 5526 if($gEl.is('[data-gjs]') && gpage > 1) setLoadmoreGalleryJS($gEl.attr('data-gjs'),id,true); 5527 5528 var loop_count = nodes.length; 5529 5530 total = (typeof data.total.list_total != 'undefined') ? data.total.list_total : data.total; 5531 items = data.list.length; 5532 5533 var g_popup_remove = $('.galleryPL'+id+'.gallery-popup').find('.gallery-item'); 5534 $.each(g_popup_remove,function(i,v) { 5535 if(items > i) $(this).remove(); 5536 }); 5537 5538 $.each(data.list,function(i,v) { 5539 loop_pos = i%loop_count; 5540 c = nodes[loop_pos]; 5541 item_index = ((gpage-1)*view) + i; 5542 var isTitle = (v.title.length > 0) ? true:false, 5543 isCaption = (v.caption.length > 0) ? true:false; 5544 5545 $(c).addClass('gallery-item').attr('data-index',item_index).attr('data-gpos',v.pos).attr('data-seq',v.seq); 5546 5547 var vgsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}; 5548 var img_path = (typeof vgsettings['storage'] != 'undefined') ? vgsettings['storage'] : _this.b.RESOURCE + '/' + _this.b.SID + '/'; 5549 var img_original = (typeof vgsettings['storage'] != 'undefined') ? img_path + '1920/' : img_path; 5550 5551 var src = getServeImage(v.image,val.folder,img_path), 5552 src_s0 = getServeImage(v.image,'0',img_path); 5553 if($(c).find('img').length > 0) $(c).find('img').attr('src',src); 5554 ensureGalleryResponsiveImageClass($(c)); 5555 if($(c).find('.g-img').length > 0) $(c).find('.g-img').css('background-image', 'url('+src+')'); 5556 if(checkGallerySVG) { 5557 var gimgSVG = $(c).find('.gimg-svg-wrap svg'); 5558 gimgSVG.find('pattern').attr('id','gimgSvg_'+val.elname+'_'+item_index); 5559 gimgSVG.find('image').attr('xlink:href', src); 5560 gimgSVG.find('polygon, path').attr('fill', 'url(#gimgSvg_'+val.elname+'_'+item_index+')'); 5561 } 5562 5563 var glink = (typeof vgsettings['glink'] != 'undefined' && vgsettings['glink']) ? vgsettings['glink'] : '', 5564 glink_target = (typeof vgsettings['glink_target'] != 'undefined' && vgsettings['glink_target']) ? vgsettings['glink_target'] : ''; 5565 5566 if(glink) { 5567 if(glink.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 5568 var bookmark_seq = glink.replace(/^\@/g,''); 5569 if(typeof _this.b.SETTINGS.blockBookmarkList == 'undefined' || typeof _this.b.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 5570 glink = ''; 5571 glink_target = ''; 5572 } 5573 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 5574 glink_target = ''; 5575 } else if($.inArray(glink.replace(/^\//g,'').replace(/ /g,'-'),_this.b.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 5576 } else { // link-type: link-out ==> a[attr-link] 5577 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 5578 } 5579 } 5580 5581 $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 5582 if (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON' && property['SITEUM'] >= 1) { 5583 $(c).addClass('gallery-item').addClass('nonePrice'); 5584 $(c).find('a').attr('href', '#'); 5585 } else { 5586 if(glink) { 5587 var glink_val = makeLinkUrl(glink, b.ONE, b.VIEW); 5588 $(c).find('a').attr('href',glink_val); 5589 5590 if(glink.match(/^\@/g)) { 5591 $(c).find('a').attr('attr-bookmark',glink.replace(/^\@/g,'')); 5592 } else if(glink.match(/^flink\@[0-9]/g)) { 5593 $(c).find('a').attr('attr-flink',glink.replace(/^flink\@/g,'')); 5594 // IE ERROR_includes__H.20210603 5595 // } else if(_this.b.MENULIST.includes(glink.replace(/ /g,'-'))) { 5596 } else if($.inArray(glink.replace(/ /g,'-'),_this.b.MENULIST) > -1) { 5597 $(c).find('a').attr('data-user-link',glink_val); 5598 } else { 5599 $(c).find('a').attr('attr-link',glink); 5600 } 5601 } else { 5602 if (val.mode == 'gallery') { 5603 src_s0 = src_s0 + '?gpos='+v.pos; 5604 5605 $(c).find('a').attr('href', src_s0); 5606 $(c).find('a').attr('data-gallery', '#gframe-' + val.seq); 5607 } else { 5608 if(val.seq == 'all_products') { 5609 $(c).find('a').attr('href', v.product_url); 5610 $(c).removeClass('nonePrice'); 5611 } else { 5612 if(_this.b.LUX) $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/_product/' + v.seq); 5613 else $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/' + v.seq); 5614 5615 // $(c).find('a').attr('href', ((b.URL=='/') ? '' : b.URL) + '/' + b.PAGE + '/view/' + v.seq); 5616 } 5617 } 5618 } 5619 } 5620 5621 if(glink_target == '_blank') $(c).find('a').attr('target','_blank'); 5622 else $(c).find('a').removeAttr('target'); 5623 5624 $(c).find('.non_text').removeClass('non_text'); 5625 5626 if(mode != 'shopping') { 5627 if(v.title.length==0) $(c).find('.figure.title').removeClass('non_text').addClass('non_text'); 5628 if(v.caption.length==0) $(c).find('.figure.caption').removeClass('non_text').addClass('non_text'); 5629 } 5630 5631 if(v.title.length==0) v.title = $.lang[block_lang]['editor.block.gallery.sample.title']; 5632 if(v.caption.length==0) v.caption = $.lang[block_lang]['editor.block.gallery.sample.caption']; 5633 5634 if(checkGFrameTitleOFF || !isTitle) $(c).find('a').attr('data-title', ''); 5635 else $(c).find('a').attr('data-title', v.title); 5636 5637 if(mode != 'shopping' && isCaption && $(c).find('p.figure.caption').length == 0) { 5638 var $captionParent = ($(c).find('.fig_price').length > 0) ? $(c).find('.fig_price').first() : $(c).find('figcaption').first(), 5639 captionClass = 'figure caption'; 5640 if($captionParent.length >
5640 0) $captionParent.prepend('<p class="' + captionClass + '"></p>'); 5641 } 5642 5643 // caption 5644 var ftitle = $(c).find('h5.figure'), 5645 fcaption = $(c).find('p.figure').not('.comment'), 5646 fdatetime = $(c).find('.figure.datetime'), 5647 fhashtag = $(c).find('.figure.hashtag'), 5648 fbrand = $(c).find('.figure.brand'), 5649 fprice = $(c).find('.figure.price'), 5650 freview = $(c).find('.figure.review'), 5651 fcomment = $(c).find('.figure.comment'), 5652 flike = $(c).find('.figure.like'), 5653 fbasket = $(c).find('.figure.basket'); 5654 5655 $(c).find('figcaption').removeClass('hide'); 5656 if(v.title || v.caption) { 5657 var gallery_caption = v.caption; 5658 gallery_caption = gallery_caption.replace(/\n/g,'<br />'); 5659 5660 ftitle.html(v.title); 5661 fcaption.html(gallery_caption); 5662 if(mode != 'shopping' && !isCaption) $(c).find('p.figure.caption').remove(); 5663 if(fdatetime.length > 0) fdatetime.text(v.datetime); 5664 if(fhashtag.length > 0) fhashtag.text(v.hashtag); 5665 } 5666 5667 if(g_number) { 5668 var g_index = String(item_index + 1), 5669 g_num = g_index.padStart(g_number, '0'); 5670 $(c).find('.figure.number').text(g_num); 5671 } 5672 5673 if(fbrand.length > 0) { 5674 var fbrand_name = (typeof v.brand_name != 'undefined' && v.brand_name) ? v.brand_name : ''; 5675 fbrand.html(v.brand_name); 5676 } 5677 5678 if(mode == 'shopping' || id == 'all_products') { 5679 fcomment.addClass('hide'); 5680 flike.addClass('hide'); 5681 5682 v.price = parseFloat(v.price); 5683 v.sale = parseFloat(v.sale); 5684 var checkPriceHidden = (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON') ? true : false, 5685 gallery_price = (v.price && !checkPriceHidden) ? v.price : 0, 5686 gallery_sale_price = (typeof v.sale != 'undefined' && v.sale > 0 && v.sale > v.price && !checkPriceHidden) ? v.sale : 0, 5687 gallery_sale_per = (typeof v.sale_per != 'undefined' && v.sale_per && !checkPriceHidden) ? v.sale_per+'%' : '', 5688 product_soldout = 'íì ', 5689 product_no_sale = (typeof g_settings.sh_soldout == 'string') ? g_settings.sh_soldout : '구매ë¶ê°', 5690 product_status = ''; 5691 if(v.status == 'off' && !checkPriceHidden) { 5692 product_status = '<span class="cl-sh-soldout">' + product_no_sale + '</span>'; 5693 } else if(v.quantity_on == 'on' && v.quantity < 1 && !checkPriceHidden) { 5694 product_status = '<span class="cl-sh-soldout">' + product_soldout + '</span>'; 5695 } 5696 5697 $(c).find('.cl-sh-soldout').remove(); 5698 if(product_status != '') $(c).attr('data-soldout',true); 5699 else $(c).removeAttr('data-soldout'); 5700 5701 $(c).find('.product-badge').remove(); 5702 product_status += drawBadgeList(v.use_badge, data.badge_settings); 5703 5704 $(c).find('.cl-sh-limit').remove(); 5705 if(v.status == 'lim') { 5706 if(v.sale_now == false) { 5707 var product_limit = '<p class="cl-sh-limit">ìí 구매 ê°ë¥ 기ê°ì´ ìëëë¤.</p>'; 5708 if(freview.length > 0) { 5709 freview.after(product_limit); 5710 } else { 5711 $(c).find('figcaption:not(.top) .figure:last-child').after(product_limit); 5712 } 5713 } 5714 } 5715 5716 if($(c).find('ul.figure.price').length > 0) { 5717 // var price_off = (v.sale_price > 0 && v.sale_price > v.price) ? 100 - Math.floor((v.price / v.sale_price) * 100) : 0, 5718 // off_str = (price_off > 0) ? price_off + '% ' : '' 5719 var off_str = (v.sale_rate > 0) ? v.sale_rate + '% ' : ''; 5720 if(!_this.b.LUX) off_str = gallery_sale_per; 5721 //Ver02 5722 if(!checkPriceHidden) { 5723 $(c).find('ul.figure.price .price-val').html('₩' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 5724 $(c).find('ul.figure.price .price-val').removeClass('hide'); 5725 5726 if(gallery_sale_price > 0 && gallery_price < gallery_sale_price) { 5727 $(c).find('ul.figure.price .price-sale').html('₩' + gallery_sale_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 5728 $(c).find('ul.figure.price .price-sale-per').html(off_str); 5729 $(c).find('ul.figure.price .price-sale, ul.figure.price .price-sale-per').removeClass('hide'); 5730 if(_this.b.LUX && (v.hashtag).indexOf('í¹ê°ì¸ì¼') > -1 && $(c).find('ul.figure.price .sp-price').length == 0) { 5731 $(c).find('ul.figure.price .price-sale').after('<li class="sp-price">í¹ê°ì¸ì¼</li>'); 5732 } 5733 } else { 5734 $(c).find('ul.figure.price .price-sale, ul.figure.price .price-sale-per').addClass('hide').html(''); 5735 } 5736 5737 $(c).find('ul.figure.price .price-unit-pricing').remove(); 5738 if(v.product_unit_str) { 5739 $(c).find('ul.figure.price').append(`<li class="price-unit-pricing">${v.product_unit_str}</li>`); // ë¨ìë¹ ê°ê²© 5740 } 5741 } else { 5742 $(c).find('ul.figure.price .price-val').html('₩0'); 5743 $(c).find('ul.figure.price .price-val').addClass('hide'); 5744 } 5745 if(id == 'all_products' && checkPriceHidden) $(c).find('ul.figure.price').html(''); 5746 if(product_status) $(c).find('ul.figure.price').append('<li>'+product_status+'</li>'); 5747 5748 var badge_size = getBadgeSize(data.badge_settings); 5749 $(c).find('.cl-sh-soldout').removeClass('badge-small badge-medium badge-large'); 5750 $(c).find('.cl-sh-limit').removeClass('badge-small badge-medium badge-large'); 5751 if(badge_size) { 5752 $(c).find('.cl-sh-soldout').addClass(badge_size); 5753 $(c).find('.cl-sh-limit').addClass(badge_size); 5754 } 5755 } else { 5756 //Ver01 5757 if(fprice.length == 0) fprice = fcaption; 5758 5759 if(checkPriceHidden) fprice.html(''); 5760 else fprice.html('<span class="figure-krw">₩</span>' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + product_status); 5761 } 5762 5763 if($(c).find('ul.figure.review').length > 0) { 5764 var gallery_review = (v.review_onoff && v.review_cnt) ? v.review_cnt : 0; 5765 if(gallery_review > 0) { 5766 $(c).find('ul.figure.review, ul.figure.review li').removeClass('hide'); 5767 $(c).find('ul.figure.review .figure-review-cnt').html(gallery_review); 5768 $(c).find('ul.figure.review .figure-review-score').html(v.review_score); 5769 } else { 5770 $(c).find('ul.figure.review, ul.figure.review li').addClass('hide'); 5771 $(c).find('ul.figure.review .figure-review-cnt, ul.figure.review .figure-review-score').html(''); 5772 } 5773 } 5774 5775 if(fbasket.length > 0) { 5776 var checkOldBlock = ($(c).find('.figure.basket[data-oldver="true"]').length > 0) ? true : false, 5777 checkOldverBasket = (typeof g_settings.field_oldver != 'undefined' && g_settings.field_oldver && g_settings.field_oldver.indexOf('basket') > -1) ? true : false, 5778 checkDisabledBasket = (typeof g_settings.field_disable != 'undefined' && g_settings.field_disable && g_settings.field_disable.indexOf('basket') > -1) ? true : false;
5779 if(v.basket_off) fbasket.addClass('cannotby hide'); 5780 else if(id == 'all_products') fbasket.removeClass('hide'); 5781 else if(checkDisabledBasket || (!checkDisabledBasket && checkOldBlock && !checkOldverBasket)) fbasket.addClass('hide'); 5782 else if(property.VALIDTYPE != 'SM') fbasket.addClass('hide'); 5783 else fbasket.removeClass('hide'); 5784 } 5785 5786 5787 } else { 5788 fbrand.addClass('hide'); 5789 fprice.addClass('hide'); 5790 freview.addClass('hide') 5791 fbasket.addClass('hide'); 5792 5793 if ( checkUseComment 5794 && g_settings.comment_display == 'ON' 5795 && !(g_settings.field_disable !== undefined && g_settings.field_disable.indexOf('comment') > -1) 5796 && fcomment.length > 0 5797 && (typeof v.comment_cnt != 'undefined' && v.comment_cnt > 0) 5798 ) { 5799 fcomment.removeClass('hide'); 5800 fcomment.find('.figure-comment-cnt').html(v.comment_cnt); 5801 } else { 5802 fcomment.addClass('hide'); 5803 fcomment.find('.figure-comment-cnt').empty(); 5804 } 5805 5806 if ( checkUseLike 5807 && (g_settings.like_display !== undefined && g_settings.like_display != 'N') 5808 && !(g_settings.field_disable !== undefined && g_settings.field_disable.indexOf('like') > -1) 5809 && flike.length > 0 5810 ) { 5811 flike.removeClass('hide').find('.figure-like-cnt').html(0); 5812 if(v.like !== undefined) { 5813 flike.find('.figure-like-cnt').html(v.like.cnt); 5814 if (v.like.own && v.like.cnt > 0) flike.attr('data-like', v.seq).addClass('active'); 5815 } 5816 } else { 5817 flike.addClass('hide'); 5818 } 5819 } 5820 5821 if(checkUseLike == false) flike.html(''); 5822 5823 if(isMasonry) { 5824 gallery_item = gallery_item + $(c)[0].outerHTML; 5825 } else { 5826 if(checkLoadmoreInLoop) $gLoop.find('.loadmore-wrap').before($(c)[0].outerHTML); 5827 else $gLoop.append($(c)[0].outerHTML); 5828 } 5829 }); 5830 } 5831 }); 5832 changeBrokenImages($gEl); 5833 5834 if(isMasonry) { 5835 $('.gallery-loadmore[data-id="' + id + '"]').before('<div class="gallery-loading-status"><div class="loading-dots"></div></div>'); 5836 showHideGalleryField($gEl,g_settings); 5837 reloadBlockMasonry('add',$gEl,$(gallery_item)); 5838 } else { 5839 showHideGalleryField($gEl,g_settings); 5840 } 5841 5842 var cookie_page = gpage; 5843 var new_view = (view > total) ? total : view; 5844 var cookie_view = ( (cookie_page*new_view) > total ) ? total : cookie_page*new_view; 5845 5846 $gEl.find('.display').text(cookie_view); 5847 5848 var $glmBtnWrap = $gLoadmoreBtn.closest('.loadmore-wrap'); 5849 var $glmBtn = $gEl.find('.loadmore-wrap .gallery-loadmore'); 5850 var checkLoadmore = (total > view && total > cookie_view) ? true : false; 5851 5852 if($glmBtnWrap.length == 0) { 5853 // gallery loadmore btn - default (ver1) 5854 if(checkLoadmore) $gLoadmoreBtn.attr('data-page', cookie_page + 1); 5855 else $gLoadmoreBtn.remove(); 5856 } else { 5857 // gallery loadmore btn - custom (ver2) 5858 if(checkLoadmore) { 5859 $glmBtn.attr('data-page', cookie_page + 1); 5860 $glmBtnWrap.removeClass('hide').fadeIn(); 5861 } else { 5862 $glmBtnWrap.fadeOut().addClass('hide'); 5863 $glmBtn.removeAttr('data-loadmore').removeAttr('data-id').removeAttr('data-total').removeAttr('data-page').removeAttr('data-view').removeAttr('data-folder').removeAttr('data-mode').removeClass('masonry-layout'); 5864 $glmBtn.find('.display .view').text('0'); 5865 $glmBtn.find('.display .total').text('0'); 5866 } 5867 } 5868 5869 if($gEl.has('input.gjs').length) setGalleryJS('add-loop',$gEl); 5870 5871 if($gEl.find('*[data-direffect="true"]').length > 0 ) { 5872 setTimeout(function() { 5873 $gEl.find('.grid').each(function() { 5874 $(this).hoverdir(); 5875 }); 5876 }, 400); 5877 } 5878 } 5879 }); 5880 5881 $('.gallery-loadmore, .data-feed-load-more').live('touchstart', function (e) { 5882 var g_color = $(this).css('color'), 5883 g_bgcolor = $(this).css('background-color'), 5884 g_bdcolor = $(this).css('border-color'); 5885 5886 if(isMobile()) { 5887 $(this).css('color', g_color); 5888 $(this).css('background-color', g_bgcolor); 5889 $(this).css('border-color', g_bdcolor); 5890 } 5891 }); 5892 5893 $('.gallery-item a[title]').live('mouseenter', function () { 5894 $(this).tooltip('destroy'); 5895 }); 5896 5897 $('.gallery-item a:not([attr-flink])').live({ 5898 click : function(e) { 5899 e.preventDefault(); 5900 if($(e.target).is('.figure.basket') || $(e.target).is('.basket-btn')) return false;
5901 5902 var loc = $(this).attr('href'), 5903 mode = $(this).attr('data-gallery'), 5904 menu_link = $(this).attr('data-user-link'), 5905 bookmark = $(this).attr('attr-bookmark'), 5906 blank = $(this).attr('target'), 5907 user_link = $(this).attr('attr-link'); 5908 5909 if( (typeof mode!='undefined' && mode.length>0) || 5910 (typeof menu_link!='undefined' && menu_link.length>0) || 5911 // (typeof user_link!='undefined' && user_link.length>0) || 5912 (typeof bookmark!='undefined' && bookmark.length>0) 5913 ) return; 5914 5915 if(typeof blank!='undefined' && blank.length) { 5916 var url = (typeof user_link != 'undefined' && user_link.match('^(tel:|mailto:|sms:)') === null) ? makeLinkUrl(user_link, b.ONE, b.VIEW) : loc; 5917 var openNewWindow = window.open(url); 5918 } else { 5919 if(typeof user_link != 'undefined' && user_link) { 5920 location.href=loc; 5921 } else { 5922 var url = new getLocation(loc); 5923 golink(_this,url); 5924 } 5925 } 5926 5927 // uri = (b.PUBLISH) ? loc : loc.replace('/render/',''), 5928 // attr = $(this).attr('attr-link'); 5929 5930 // if(typeof attr!='undefined' && attr) return; 5931 // _this.history.pushState(null,b.TITLE,(b.PUBLISH) ? '/' : '/render/' + uri); 5932 } 5933 }); 5934 $('.gallery-item .figure.like').live('click', function(e){ 5935 e.preventDefault(); 5936 return false; 5937 }); 5938 $('.gallery-item .figure.basket, .pitem .basket-box').live('click', function(e) { 5939 e.preventDefault(); 5940 var checkPsearch = ($(this).closest('.pitem').length > 0) ? true : false; 5941 if(b.PUBLISH) { 5942 if(!checkPsearch && $(this).closest('.gallery-item').hasClass('nonePrice')) { 5943 $(this).closest('.nonePrice').click(); 5944 return false; 5945 } 5946 5947 var tmp_pid = (checkPsearch) ? $(this).closest('.pitem').attr('data-pid') : $(this).closest('.element').attr('data-id'), 5948 tmp_seq = (checkPsearch) ? $(this).closest('.pitem').attr('data-gid') : $(this).closest('.gallery-item').attr('data-seq'); 5949 $.quickbasket.init(b.SID,tmp_pid,tmp_seq); 5950 } else { 5951 $(this).showModalFlat($.lang[LANG]['config.information'], $.lang[LANG]['manager.check.no-support.render-mode'], true, false, '', 'ok', '', 'cl-cmmodal cl-s-btn w560 cl-p70 cl-p0'); 5952 return false; 5953 } 5954 }); 5955 5956 // tab-box left-right button event 5957 $(document).on('click', '.left-arrow .arrow:not(.hide) .before', function(e){ 5958 var horizontal = $(this).closest('.tabs').attr('tab-horizontal'), 5959 motion = Number($(this).closest('.tabs').attr('tab-motion')), 5960 len = $(this).closest('.container').find('.tab-box .tab:not(.hover)').length, 5961 motion_style = $(this).closest('.tabs').attr('tab-motion-style'), 5962 tab_counted = $(this).closest('.tabs').attr('tab-count'), 5963 mobile_tab_count = $(this).closest('.tabs').attr('mobile-tab-count'), 5964 tab_interval_w = ($(window).width() < 768 && Number($(this).closest('.tabs').attr('tab-interval-w')) > 8) ? Number($(this).closest('.tabs').attr('tab-interval-w')) * 0.8 : $(this).closest('.tabs').attr('tab-interval-w'), 5965 w = $(window).width(), 5966 tab_count = (w < 991) ? ((typeof mobile_tab_count != 'undefined' && mobile_tab_count) ? mobile_tab_count : ((tab_counted > 4) ? 4 : tab_counted)) : $(this).closest('.tabs').attr('tab-count'), 5967 tab_case = $(this).closest('.tabs').attr('data-case'); 5968 5969 if(!$(this).closest('.tabs').attr('tab-motion') || $(this).closest('.tabs').attr('tab-motion') == 'undefined') return false; 5970 5971 if(horizontal == 1) { // ê°ë¡í 5972 var tab_each = Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth()) + Number(tab_interval_w), 5973 max_width = Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth(true)) * len, 5974 tab_width = (Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth()) + Number(tab_interval_w)) * tab_count, 5975 length = max_width / tab_width, 5976 mo = Number(len) - tab_count; 5977 // console.log('motion:' + motion + ', len: ' + len + ', tab_count: ' + tab_count + ', tab_each: ' + tab_each + ', max_width: ' + max_width + ', tab_width: ' + tab_width + ',length: ' + length + ',mo: ' + mo); 5978 } 5979 5980 if(motion_style == 1) { // íì¹¸ì© ì´ë 5981 motion = motion - 1; 5982 if(motion < 0) motion = 0; 5983 $('.'+$(this).closest('.tabs').attr('data-name')).attr('tab-motion', motion); 5984 5985 tabMotion($(this).closest('.tabs').attr('data-name'), motion, tab_each, len, motion_style, tab_count, tab_case, tab_counted); 5986 5987 } else { // ííì´ì§ì© ì´ë 5988 motion = motion - 1; 5989 if(motion < 0) motion = 0; 5990 $('.'+$(this).closest('.tabs').attr('data-name')).attr('tab-motion', motion); 5991 5992 tabMotion($(this).closest('.tabs').attr('data-name'), motion, tab_width, length, motion_style, tab_count, tab_case, tab_counted); 5993 } 5994 5995 }); 5996 $(document).on('click', '.right-arrow .arrow:not(.hide) .after', function(e){ 5997 var horizontal = $(this).closest('.tabs').attr('tab-horizontal'), 5998 motion = Number($(this).closest('.tabs').attr('tab-motion')), 5999 len = $(this).closest('.container').find('.tab-box .tab:not(.hover)').length, 6000 motion_style = $(this).closest('.tabs').attr('tab-motion-style'), 6001 tab_counted = $(this).closest('.tabs').attr('tab-count'), 6002 mobile_tab_count = $(this).closest('.tabs').attr('mobile-tab-count'), 6003 tab_interval_w = ($(window).width() < 768 && Number($(this).closest('.tabs').attr('tab-interval-w')) > 8) ? Number($(this).closest('.tabs').attr('tab-interval-w')) * 0.8 : $(this).closest('.tabs').attr('tab-interval-w'), 6004 w = $(window).width(), 6005 tab_count = (w < 991) ? ((typeof mobile_tab_count != 'undefined' && mobile_tab_count) ? mobile_tab_count : ((tab_counted > 4) ? 4 : tab_counted)) : $(this).closest('.tabs').attr('tab-count'), 6006 tab_case = $(this).closest('.tabs').attr('data-case'); 6007 6008 if(!$(this).closest('.tabs').attr('tab-motion') || $(this).closest('.tabs').attr('tab-motion') == 'undefined') return false;
6009 6010 if(horizontal == 1) { // ê°ë¡í 6011 var tab_each = Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth()) + Number(tab_interval_w), 6012 max_width = Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth(true)) * len, 6013 tab_width = (Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth()) + Number(tab_interval_w)) * tab_count, 6014 length = max_width / tab_width, 6015 mo = Number(len) - tab_count; 6016 // console.log('motion:' + motion + ', len: ' + len + ', tab_count: ' + tab_count + ', tab_each: ' + tab_each + ', max_width: ' + max_width + ', tab_width: ' + tab_width + ',length: ' + length + ',mo: ' + mo); 6017 } 6018 6019 if(motion_style == 1) { // íì¹¸ì© ì´ë 6020 motion = motion + 1; 6021 if(motion > mo) motion = mo; 6022 $('.'+$(this).closest('.tabs').attr('data-name')).attr('tab-motion', motion); 6023 6024 tabMotion($(this).closest('.tabs').attr('data-name'), motion, tab_each, len, motion_style, tab_count, tab_case, tab_counted); 6025 6026 } else { // ííì´ì§ì© ì´ë 6027 motion = motion + 1; 6028 if(motion >= length) motion = Math.ceil(length) - 1; 6029 $('.'+$(this).closest('.tabs').attr('data-name')).attr('tab-motion', motion); 6030 6031 tabMotion($(this).closest('.tabs').attr('data-name'), motion, tab_width, length, motion_style, tab_count, tab_case, tab_counted); 6032 } 6033 }); 6034 $(document).on('click', '.tab-box .tab', function(){ 6035 var w = $(document).outerWidth(), 6036 horizontal = $(this).closest('.tabs').attr('tab-horizontal'); 6037 if(w < 767 && $(this).find('.tab-editor').hasClass('active')) { 6038 $(this).find('.tab-editor').removeClass('active'); 6039 } else { 6040 var editor = $(this).index() + 1, 6041 order = $(this).attr('data-order'); 6042 // num = $('.tab-editor.active.t'+order).outerHeight(); 6043 6044 $(this).siblings().removeClass('active'); 6045 $(this).addClass('active'); 6046 6047 if(horizontal == 0) { // ì¸ë¡í 6048 $(this).closest('.tab-box').find('.tab .tab-editor').removeClass('active'); 6049 $(this).closest('.tab-box').find('.tab .tab-editor.tabs'+order).addClass('active'); 6050 } else { // ê°ë¡í 6051 $(this).closest('.tab-width').siblings('.editor-box').children('.tab-editor').removeClass('active'); 6052 $(this).closest('.tab-width').siblings('.editor-box').children('.tab-editor.tabs'+order).addClass('active'); 6053 } 6054 } 6055 }); 6056 6057 $('.tab-wrapper .tab-box .tab').live({ 6058 click: function() { 6059 $(this).removeClass('hover'); 6060 }, 6061 mouseover: function() { 6062 $('.tab-wrapper .tab-box .tab:not(.hide)').removeClass('hover'); 6063 if(!$(this).hasClass('active')) $(this).addClass('hover'); 6064 }, 6065 mouseout: function() { 6066 $('.tab-wrapper .tab-box .tab:not(.hide)').removeClass('hover'); 6067 } 6068 }); 6069 6070 $('.userELallProducts .cl-gsort-list li').live({ 6071 mouseover: function() { 6072 $(this).addClass('hover'); 6073 $(this).siblings().removeClass('hover'); 6074 }, 6075 mouseout: function() { 6076 $('.userELallProducts .cl-gsort-list li').removeClass('hover'); 6077 } 6078 }); 6079 6080 //calendar ë¸ë 6081 let currentDate = new Date(); 6082 let currentEvent = null; 6083 let lastEventsList = null; 6084 let lastEventsWeekday = null; 6085 let calendarElsettings = new Map(); 6086 let googleColor = new Map(); 6087 const monthCache = new Map(); 6088 const inflight = new Map(); 6089 6090 //calendar textarea// 6091 const SEL = '.calendar-modal-body .modal-field.content textarea'; 6092 function getMax() { 6093 const w = window.innerWidth || document.documentElement.clientWidth; 6094 if (w >= 1200) return 500; // 1200px ì´ì 6095 if (w >= 768) return 400; // 1199~768px 6096 return 320; // 767px ì´í 6097 } 6098 function fit($ta) { 6099 const el = $ta[0]; 6100 const min = parseFloat(getComputedStyle(el).minHeight) || 120; 6101 const MAX = getMax(); 6102 6103 $ta.css('height', 'auto'); 6104 6105 const sh = el.scrollHeight; 6106 const h = Math.max(min, Math.min(sh, MAX)); 6107 6108 $ta.css({ 6109 height: h + 'px', 6110 overflowY: sh > MAX ? 'auto' : 'hidden' 6111 }); 6112 } 6113 function refitAll() { 6114 $(SEL).filter(':visible').each(function () { 6115 fit($(this)); 6116 }); 6117 } 6118 function debounce(fn, wait = 120) { 6119 let t; 6120 return function () { 6121 clearTimeout(t); 6122 t = setTimeout(() => fn.apply(this, arguments), wait); 6123 }; 6124 } 6125 let lastMax = getMax(); 6126 $(window).on('resize.autogrow orientationchange.autogrow', debounce(function () { 6127 const curMax = getMax(); 6128 if (curMax !== lastMax) { 6129 lastMax = curMax; 6130 refitAll(); 6131 } 6132 })); 6133 $(document).on('input change', SEL, function () { 6134 fit($(this)); 6135 }); 6136 //////////////////////////////////////////////////////////////////////////////////// 6137 6138 $.cl_calendar = { 6139 active : '', 6140 events : [], 6141 instances : {}, 6142 // currentDate : new Date(), 6143 init : function(sid, pid, yearMonth, c) { 6144 if(typeof sid == 'undefined' || typeof pid == 'undefined') { 6145 alert('Undefined SID,PID'); 6146 return false;
6147 } 6148 6149 $(`[data-type="calendar"][data-id="${pid}"]`).removeClass('_calendar'); //_calendarê° htmlë¶ì´ë²ë¦´ê²½ì° 6150 6151 // pid ë³ë¡ ê´ë¦¬ëë ì¸ì¤í´ì¤ ìì± 6152 if(!$.cl_calendar.instances[pid]) { 6153 $.cl_calendar.instances[pid] = { 6154 currentDate: new Date(), 6155 events: [] 6156 }; 6157 } 6158 $.cl_calendar.instances[pid].config = c; 6159 6160 var instance = $.cl_calendar.instances[pid]; 6161 6162 if(typeof yearMonth !== 'undefined' && yearMonth != '') { 6163 var parts = yearMonth.split('-'); 6164 instance.currentDate = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, 1); 6165 } 6166 var data_type = ($('.userEL'+pid).attr('data-modoo-type')) ? $('.userEL'+pid).attr('data-modoo-type') : ''; 6167 var y = instance.currentDate.getFullYear(); 6168 var m = String(instance.currentDate.getMonth() + 1).padStart(2, '0'); 6169 var ym = (yearMonth && yearMonth !== '') ? yearMonth : (y + '-' + m); 6170 6171 if(data_type != '') { 6172 $.ajax({ 6173 url: '/template/get_calendar', 6174 data: { sid: sid, pid: pid, yearMonth: ym, data_type: data_type }, 6175 type: 'POST', 6176 dataType: 'json', 6177 success: function (data) { 6178 checkError(data); 6179 var inst = $.cl_calendar.instances[pid]; 6180 6181 var dataArr = Array.isArray(data) ? data : []; 6182 6183 inst.events = dataArr; 6184 $.cl_calendar.draw(pid, data_type, c); 6185 6186 // --- 모ë°ì¼ ì´ë²¤í¸ ë ëë§ (ì í ì 기ì¤) --- 6187 var $root = $('.element[data-id="' + pid + '"]'); 6188 if ($root.find('.mobile-events').length === 0) { 6189 $root.find('.notice').before('<div class="mobile-events"></div>'); 6190 } 6191 var $mobile = $root.find('.mobile-events').empty(); 6192 6193 var currentYear = inst.currentDate.getFullYear(); 6194 var currentMonth = inst.currentDate.getMonth() + 1; 6195 6196 var countThisMonth = 0; 6197 var eventMap = {}; 6198 6199 $.each(dataArr, function (i, v) { 6200 var d = new Date(v.s_date); 6201 var year = d.getFullYear(); 6202 var month = d.getMonth() + 1; 6203
6204 if (year === currentYear && month === currentMonth) { 6205 countThisMonth++; 6206 var dateKey = v.s_date; // 'YYYY-MM-DD' 6207 var time = (v.fulltime === 'Y') ? 'ì¢ ì¼' : (v.s_time + ' ~ ' + v.e_time); 6208 if (!eventMap[dateKey]) eventMap[dateKey] = []; 6209 eventMap[dateKey].push( 6210 '<div class="event-memo"><span class="event-time">' + time + '</span>' + (v.memo || '') + '</div>' 6211 ); 6212 } 6213 }); 6214 6215 var html = ''; 6216 if (countThisMonth === 0) { 6217 html += '' 6218 + '<div class="event-date"></div>' 6219 + '<div class="event-memo"><span class="event-time noschedule">ì´ë²ë¬ ì¼ì ì´ ììµëë¤.</span></div><br>'; 6220 } else { 6221 var sortedDates = Object.keys(eventMap).sort(); 6222 $.each(sortedDates, function (i, date) { 6223 html += '<div class="event-date">' + date_string(date) + '</div>'; 6224 $.each(eventMap[date], function (j, memoHtml) { html += memoHtml; }); 6225 html += '<br>'; 6226 }); 6227 } 6228 6229 $mobile.append(html); 6230 } 6231 }); 6232 } else { 6233 var elsettings = JSON.parse(c.elsettings); 6234 instance.readChmod = elsettings.read_chmod; 6235 // instance.canShowAll = calendarShow(elsettings); 6236 calendarElsettings.set(pid, calendarShow(elsettings)); 6237 fetchMonth(pid, ym, data_type) 6238 .then(function(evts) { 6239 $.cl_calendar.instances[pid].events = evts || []; 6240 monthCache.set(ym, evts || []); 6241 $.cl_calendar.draw(pid, data_type, c); 6242 }).catch(function() { 6243 $.cl_calendar.draw(pid, data_type, c); 6244 }); 6245 } 6246 6247 6248 6249 }, 6250 draw: function(pid, type, c) { 6251 if(type) { 6252 if (!$.cl_calendar.instances[pid]) { 6253 // console.error(`draw called but instance for pid=${pid} is not initialized yet`); 6254 return; 6255 } 6256 var instance = $.cl_calendar.instances[pid]; 6257 const year = instance.currentDate.getFullYear();
6258 const month = instance.currentDate.getMonth(); 6259 6260 const firstDay = new Date(year, month, 1); 6261 const lastDay = new Date(year, month + 1, 0); 6262 const firstDayOfWeek = firstDay.getDay(); 6263 const prevLastDay = new Date(year, month, 0).getDate(); 6264 $('.userEL'+pid+' .days').empty(); 6265 6266 for (let i = firstDayOfWeek - 1; i >= 0; i--) { 6267 const day = prevLastDay - i; 6268 const curDate = new Date(year, month - 1, day); 6269 const dateString = formatDate(curDate); 6270 const dayElement = createDayElement(curDate, dateString, true, pid); 6271 $('.userEL'+pid+' .days').append(dayElement); 6272 } 6273 6274 for (let i = 1; i <= lastDay.getDate(); i++) { 6275 const curDate = new Date(year, month, i); 6276 const dateString = formatDate(curDate); 6277 const dayElement = createDayElement(curDate, dateString, false, pid); 6278 $('.userEL'+pid+' .days').append(dayElement); 6279 } 6280 6281 const totalCellsNeeded = Math.ceil((firstDayOfWeek + lastDay.getDate()) / 7) * 7; 6282 const nextMonthschedule = totalCellsNeeded - (firstDayOfWeek + lastDay.getDate()); 6283 6284 for (let i = 1; i <= nextMonthschedule; i++) { 6285 const curDate = new Date(year, month + 1, i); 6286 const dateString = formatDate(curDate); 6287 const dayElement = createDayElement(curDate, dateString, true, pid); 6288 $('.userEL'+pid+' .days').append(dayElement); 6289 } 6290 6291 var data_case = $('.userEL'+pid).attr('data-case'); //calendar1 check 6292 if(data_case == 'calendar1') { 6293 $('.userEL'+pid+' .date_wrap').siblings('.date_bullet').remove(); 6294 $('.userEL'+pid+' .date_wrap').remove(); 6295 $('.userEL'+pid+' .controls').append('<div class="date_wrap"><a href="javascript:void(0)" class="date _selectedCalendar" data-type="yearMonth" data-val="'+(year+'.'+(month + 1))+'">'+(year+'.'+String(month + 1).padStart(2, "0"))+'</a></div>'); 6296 } 6297 } else { 6298 initCalendar(pid, c); 6299 } 6300 }, 6301 write: function(dateAttr, el) { 6302 selectedDate = dateAttr; 6303 openEventModal(dateAttr, el); 6304 }, 6305 modify: function(dateAttr, el, pid) { 6306 if (!$.cl_calendar.instances[pid]) { 6307 // console.error(`Calendar instance for pid=${pid} is not initialized yet`); 6308 return; 6309 } 6310 selectedDate = dateAttr; 6311 openEventList(dateAttr, $.cl_calendar.instances[pid].events, el); 6312 }, 6313 save: function(pid, el) { 6314 el = '.'+el+' '; 6315 const eventId = $(el+'#eventId').val(); 6316 const eventSeq = $(el+'#eventSeq').val(); 6317 const eventSid = $(el+'#eventSid').val(); 6318 const eventFulltime = ($(el+'#eventFulltime').val() != '' && $(el+'#eventFulltime').val() == 'Y') ? 'Y' : 'N'; 6319 const eventStartDate = $(el+'#eventStartDate').val(); 6320 const eventStartTime = ($(el+'#eventFulltime').val() != '' && $(el+'#eventFulltime').val() == 'Y') ? '' : $(el+'#eventStartTime').val(); 6321 const eventEndDate = $(el+'#eventEndDate').val(); 6322 const eventEndTime = ($(el+'#eventFulltime').val() != '' && $(el+'#eventFulltime').val() == 'Y') ? '' : $(el+'#eventEndTime').val(); 6323 const eventMemo = $(el+'#eventMemo').val(); 6324 6325 // ì í¨ì± ê²ì¬ 6326 if (!eventStartDate || (eventFulltime != 'Y' && !eventStartTime) || !eventEndDate || (eventFulltime != 'Y' && !eventEndTime) || !eventMemo) { 6327 alert('íì í목ì 모ë ì ë ¥í´ì£¼ì¸ì.'); 6328 return; 6329 } 6330 6331 // ì¢ ë£ì¼ìê° ììì¼ìë³´ë¤ ë¦ìì§ íì¸ 6332 const startDateTime = new Date(`${eventStartDate}T${eventStartTime}`); 6333 const endDateTime = new Date(`${eventEndDate}T${eventEndTime}`); 6334 6335 if (endDateTime <= startDateTime) { 6336 alert('ì¢ ë£ ì¼ìë ìì ì¼ìë³´ë¤ ëì¤ì´ì´ì¼ í©ëë¤.'); 6337 return; 6338 } 6339 6340 // ì´ë²¤í¸ ê°ì²´ ìì± 6341 const eventData = { 6342 sid: b.SID, 6343 seq: (eventSeq) ? eventSeq : '', 6344 pid: pid, 6345 month: eventStartDate.substring(0, 7), 6346 sdate: eventStartDate, 6347 stime: eventStartTime, 6348 edate: eventEndDate, 6349 etime: eventEndTime, 6350 fulltime: eventFulltime, 6351 notice: '', 6352 memo: eventMemo, 6353 check: 1 6354 }; 6355 6356 if(eventData['sid'] == '' || eventData['sid'] == undefined) return false;
6357 6358 var url = '/template/calendar'; 6359 // if(eventSeq) { 6360 // url = '/template/modify_calendar'; 6361 // } else { 6362 // url = '/template/calendar'; 6363 // } 6364 6365 var data_type = ($('.userEL'+pid).attr('data-modoo-type')) ? $('.userEL'+pid).attr('data-modoo-type') : ''; 6366 $.ajax({ 6367 url: url, 6368 data: { data: eventData }, 6369 type: 'POST', 6370 dataType: 'json', 6371 success: function(data) { 6372 checkError(data); 6373 $.cl_calendar.instances[pid].events = data || []; 6374 $.cl_calendar.draw(pid, data_type); 6375 }, 6376 error: function (xhr, status, error) { 6377 6378 } 6379 }); 6380 6381 // í¼ ì´ê¸°í 6382 $(el+'#eventForm')[0].reset(); 6383 $(el+'#eventId').val(''); 6384 $(el+'.modal-schedule').fadeOut(300); 6385 } 6386 } 6387 6388 // ë ì§ ì í´ë¦ ì´ë²¤í¸ (ëì ì¼ë¡ ìì±ë ììì ëí ì´ë²¤í¸ ì²ë¦¬) 6389 $(document).on('click', '.calendar .day_wrap', function() { 6390 // console.log(1212); 6391 var dateAttr = $(this).data('date'), 6392 isEvent = $(this).find('.event').length, 6393 el = '.' + $(this).closest('.calendar').attr('data-name'), 6394 pid = $(this).closest('.calendar').attr('data-id'); 6395 6396 var getYear = currentDate.getFullYear(), 6397 getMonth = String(currentDate.getMonth() + 1).padStart(2, "0"), // getMonthë 0~11ì´ë¯ë¡ +1 6398 yearMonth = getYear + '-' + getMonth; 6399 6400 if(isEvent > 0) { 6401 var parts = dateAttr.split('-'); 6402 var yearMonth = parts[0] + '-' + parts[1]; 6403 $.cl_calendar.init(b.SID, pid, yearMonth); 6404 $.cl_calendar.modify(dateAttr, el, pid); 6405 } 6406 }); 6407 6408 $(document).on('click', '.calendar ._prev_month_btn', function () { 6409 var pid = $(this).closest('.calendar').attr('data-id'); 6410 6411 // ì¬ê¸°! 6412 var instance = $.cl_calendar.instances[pid]; 6413 instance.currentDate.setMonth(instance.currentDate.getMonth() - 1); 6414 6415 var getYear = instance.currentDate.getFullYear(), 6416 getMonth = String(instance.currentDate.getMonth() + 1).padStart(2, "0"), 6417 yearMonth = getYear + '-' + getMonth, 6418 ym = getYear + '.' + getMonth; 6419 6420 $(this).siblings('.date_bullet').remove(); 6421 $(this).siblings('.date_wrap').remove(); 6422 $(this).parent('.controls').append('<div class="date_wrap"><a href="javascript:void(0)" class="date _selectedCalendar" data-type="yearMonth" data-val="'+ym+'">'+ym+'</a></div>'); 6423 6424 $.cl_calendar.init(b.SID, pid, yearMonth); 6425 }); 6426 6427 $(document).on('click', '.calendar ._next_month_btn', function () { 6428 var pid = $(this).closest('.calendar').attr('data-id'); 6429 6430 var instance = $.cl_calendar.instances[pid]; 6431 instance.currentDate.setMonth(instance.currentDate.getMonth() + 1); 6432 6433 var getYear = instance.currentDate.getFullYear(), 6434 getMonth = String(instance.currentDate.getMonth() + 1).padStart(2, "0"), 6435 yearMonth = getYear + '-' + getMonth, 6436 ym = getYear + '.' + getMonth; 6437 6438 $(this).siblings('.date_bullet').remove(); 6439 $(this).siblings('.date_wrap').remove(); 6440 $(this).parent('.controls').append('<div class="date_wrap"><a href="javascript:void(0)" class="date _selectedCalendar" data-type="yearMonth" data-val="'+ym+'">'+ym+'</a></div>'); 6441 6442 $.cl_calendar.init(b.SID, pid, yearMonth); 6443 }); 6444 6445 $(document).on('click', '.calendar ._today_btn', function() { 6446 var pid = $(this).closest('.calendar').attr('data-id'); 6447 var instance = $.cl_calendar.instances[pid]; 6448 instance.currentDate = new Date(); 6449 6450 var ym = instance.currentDate.getFullYear() + '.' + String(instance.currentDate.getMonth() + 1).padStart(2, "0"); 6451 $(this).parent('.calendar_btn_area').siblings('.date_bullet').remove(); 6452 $(this).parent('.calendar_btn_area').siblings('.date_wrap').remove(); 6453 $(this).closest('.controls').append('<div class="date_wrap"><a href="javascript:void(0)" class="date _selectedCalendar" data-type="yearMonth" data-val="'+ym+'">'+ym+'</a></div>'); 6454 6455 var yearMonth = instance.currentDate.getFullYear() + '-' + String(instance.currentDate.getMonth() + 1).padStart(2, "0"); 6456 $.cl_calendar.init(b.SID, pid, yearMonth); 6457 }); 6458 6459 // ëª¨ë¬ ë«ê¸° ë²í¼ í´ë¦ ì´ë²¤í¸ 6460 $(document).on('click','.calendar #cancelBtn, .calendar .modal-close', function() { 6461 closeEventModal(); 6462 }); 6463 6464 // ëª¨ë¬ ì¸ë¶ í´ë¦ ì ë«ê¸°
6465 $(document).on('click', '.calendar .modal-schedule', function(e) { 6466 if ($(e.target).hasClass('modal-schedule')) { 6467 closeEventModal(); 6468 } 6469 }); 6470 6471 $(document).on('click','.calendar .date._selectedCalendar',function(){ 6472 var el = '.userEL' + $(this).closest('.calendar').attr('data-id'); 6473 6474 // íì¬ ì íë ë ì ì¶ì¶ 6475 var currentYM = $(this).attr('data-val'); 6476 var parts = currentYM.split('.'); 6477 var selectedYear = parts[0]; 6478 var selectedMonth = parts[1].padStart(2, '0'); 6479 6480 // ì´ë¯¸ ì´ë ¤ìë¤ë©´ ì ê±° 6481 if($('.date_list_area._yearMonthList').length > 0){ 6482 $('.date_list_area._yearMonthList').remove(); 6483 return; 6484 } 6485 6486 // ì¼ìª½ ì°ë 리ì¤í¸ 6487 let currentYear = currentDate.getFullYear(); 6488 let startYear = currentYear - 8; 6489 let endYear = currentYear + 8; 6490 6491 let years = ''; 6492 for(let year = startYear; year <= endYear; year++) { 6493 let isSelected = (year == selectedYear) ? ' selected' : ''; 6494 years += `<div class="year_item${isSelected}" data-year="${year}">${year}</div>`; 6495 } 6496 6497 let months = ''; 6498 for(let month=1; month<=12; month++){ 6499 let mm = month.toString().padStart(2, '0'); 6500 let isSelected = (mm == selectedMonth) ? ' selected' : ''; 6501 months += `<a href="#" class="month_item${isSelected}" data-month="${mm}" data-year="${selectedYear}">${mm}</a>`; 6502 } 6503 6504 // HTML ëì ì½ì 6505 let html = ` 6506 <div class="mobile_back"><button class="mobile_close">â</button></div> 6507 <div class="date_list_area _calendarList _yearMonthList"> 6508 <div class="year_month_wrap"> 6509 <div class="year_list">${years}</div> 6510 <div class="month_list">${months}</div> 6511 </div> 6512 <div class="calendar_confirm_area"> 6513 <button type="button" class="btn_cancel">ì·¨ì</button> 6514 <button type="button" class="btn_confirm">íì¸</button> 6515 </div> 6516 </div>`; 6517 6518 $(this).after(html); 6519 6520 // ì°ë 리ì¤í¸ ì¤í¬ë¡¤ ì¤ì 6521 var selectedYearEl = $(el+' .year_item.selected')[0]; 6522 if(selectedYearEl) { 6523 selectedYearEl.scrollIntoView({block: "center", behavior: "smooth"}); 6524 } 6525 6526 // ì 리ì¤í¸ ì¤í¬ë¡¤ ì¤ì 6527 var selectedMonthEl = $(el+' .month_item.selected')[0]; 6528 if(selectedMonthEl) { 6529 selectedMonthEl.scrollIntoView({block: "center", behavior: "smooth"}); 6530 } 6531 6532 // ì°ë í´ë¦íë©´ ì 리ì¤í¸ ê°±ì 6533 $(el+' .year_item').on('click', function(){ 6534 let selectedYear = $(this).data('year'); 6535 $(el+' .year_item').removeClass('selected'); 6536 $(this).addClass('selected'); 6537 6538 let monthsHtml = ''; 6539 for(let month=1; month<=12; month++){ 6540 let mm = month.toString().padStart(2, '0'); 6541 monthsHtml += `<a href="#" class="month_item" data-month="${mm}" data-year="${selectedYear}">${mm}</a>`; 6542 } 6543 $(el+' .month_list').html(monthsHtml); 6544 6545 // ì í´ë¦ ë¤ì ë°ì¸ë© 6546 bindMonthClick(); 6547 }); 6548 6549 function bindMonthClick(){ 6550 $(el+' .month_item').on('click', function(e){ 6551 e.preventDefault(); 6552 $(el+' .month_item').removeClass('selected'); 6553 $(this).addClass('selected'); 6554 $(el+' .date._selectedCalendar').data('tempYear', $(this).data('year')); 6555 $(el+' .date._selectedCalendar').data('tempMonth', $(this).data('month')); 6556 }); 6557 } 6558 bindMonthClick(); 6559 6560 // ì·¨ì 6561 $(el+' .btn_cancel, '+el+' .mobile_close').on('click', function(){ 6562 $(el+' .mobile_back').remove(); 6563 $(el+' .date_list_area._yearMonthList').remove(); 6564 }); 6565 6566 // íì¸ 6567 $(el+' .btn_confirm').on('click', function(){ 6568 let year = $(el+' .date._selectedCalendar').data('tempYear'); 6569 let month = $(el+' .date._selectedCalendar').data('tempMonth'); 6570 var pid = $(this).closest('.calendar').attr('data-id'), 6571 yearMonth = year + '-' + month; 6572 6573 if(year && month){ 6574 $(el+' .date._selectedCalendar').text(`${year}.${month}`).attr('data-val', `${year}-${month}`); 6575 } 6576 $(el+' .date_list_area._yearMonthList').remove(); 6577 6578 $.cl_calendar.init(b.SID, pid, yearMonth); 6579 }); 6580 }); 6581 6582 // ë ì§/ìê°ì í ampm 6583 $(document).off('click.clockToggle').on('click.clockToggle', '.calendar .calendarModal .timeselector .select:not(.ampm) .selector', function(e){ 6584 e.preventDefault(); 6585 e.stopPropagation(); 6586 const $sel = $(this).closest('.select'); 6587 const $field = $sel.closest('.modal-field'); 6588 6589 // â ëë¡ ë«íì ì ì ë¬´ë ¥ííë ë½ 6590 $field.data('dropOpenLock', true); 6591 setTimeout(()=>{ $field.removeData('dropOpenLock'); }, 150); 6592 6593 $sel.find('.drop').toggle(); 6594 $sel.siblings('.select').children('.drop').hide(); 6595 }); 6596 $(document).on('click.clockCloseOnPick', '.calendar .calendarModal .timeselector .select .drop li', function (e) { 6597 e.stopPropagation(); 6598 const $sel = $(this).closest('.select'); 6599 setTimeout(() => { $sel.find('.drop').hide(); }, 0); 6600 }); 6601 $(document).on('click.clockWidgetArea', '.calendar .bootstrap-datetimepicker-widget', function (e) { 6602 if ($(e.target).closest('.custom-clock .select').length === 0) { 6603 $(this).find('.custom-clock .select .drop').hide(); 6604 } 6605 }); 6606 $(document).on('click', '.calendar .calendarModal .timeselector .select.ampm .selector', function () { 6607 const $sel = $(this); 6608 const $field = $sel.closest('.modal-field'); 6609 const $input = $field.find('input.daytime'); 6610 const dp = getDp($field, $input); 6611 if (!dp) return; 6612 6613 const m = dp.date() ? dp.date().clone() : moment(); 6614 const curType = ($sel.attr('data-value') || $sel.attr('data-type') || (m.hour() >= 12 ? 'pm' : 'am')).toLowerCase(); 6615 const nextType = (curType === 'am') ? 'pm' : 'am'; 6616 6617 let H = m.hour(); 6618 if (nextType === 'am') { if (H >= 12) H -= 12; } else { if (H < 12) H += 12; } 6619 m.hour(H).second(0); 6620 dp.date(m); 6621 6622 $sel.text(($.lang?.[$field.closest('.calendar').hasClass('en')?'en':'ko']?.['sc.banner.'+nextType]) || nextType.toUpperCase()) 6623 .attr({'data-value': nextType, 'data-type': nextType}); 6624 6625 $sel.closest('.custom-clock').find('.select .drop').hide(); 6626 }); 6627 $(document).on('click', '.calendar .calendarModal .timeselector .select.hour .drop li', function () { 6628 const $li = $(this); 6629 const $field = $li.closest('.modal-field'); 6630 const $input = $field.find('input.daytime'); 6631 const dp = getDp($field, $input); 6632 if (!dp) return; 6633 6634 const m = dp.date() ? dp.date().clone() : moment(); 6635 6636 const $ampmSel = $li.closest('.timeselector').find('.select.ampm .selector'); 6637 const ampm = ($ampmSel.attr('data-value') || $ampmSel.attr('data-type') || (m.hour() >= 12 ? 'pm' : 'am')).toLowerCase(); 6638 6639 const hourStr = $li.attr('data-value') || $li.text().trim(); 6640 const h12 = parseInt(hourStr, 10) || 12; 6641 const h24 = (ampm === 'pm') ? (h12 % 12) + 12 : (h12 % 12); 6642 6643 m.hour(h24).second(0); 6644 dp.date(m); 6645 6646 const pad = (n)=> (n<10 ? '0'+n : ''+n); 6647 $li.closest('.select.hour').children('.selector').text(pad((h24 % 12) || 12)) 6648 .attr('data-type', hourStr); 6649 6650 $li.closest('.custom-clock').find('.select .drop').hide(); 6651 }); 6652 $(document).on('click', '.calendar .calendarModal .timeselector .select.minute .drop li', function () { 6653 const $li = $(this); 6654 const $field = $li.closest('.modal-field'); 6655 const $input = $field.find('input.daytime'); 6656 const dp = getDp($field, $input); 6657 if (!dp) return; 6658 6659 const minStr = $li.attr('data-value') || $li.text().trim();
6660 let mm = parseInt(minStr, 10); if (isNaN(mm)) mm = 0; 6661 6662 const m = dp.date() ? dp.date().clone() : moment(); 6663 m.minute(Math.max(0, Math.min(59, mm))).second(0); 6664 dp.date(m); 6665 6666 const pad = (n)=> (n<10 ? '0'+n : ''+n); 6667 $li.closest('.select.minute').children('.selector').text(pad(mm)).attr('data-type', pad(mm)); 6668 6669 // $li.closest('.custom-clock').find('.select .select .drop').hide(); 6670 $li.closest('.custom-clock').find('.select .drop').hide(); 6671 }); 6672 6673 6674 /////// calendar2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 6675 function calendarOverlayIn(pid) { 6676 $('.userEL'+pid).addClass('modal-open'); 6677 } 6678 function calendarOverlayOut(pid) { 6679 $('.userEL'+pid).removeClass('modal-open'); 6680 } 6681 function nowTime(){ return new Date(); } 6682 6683 function readMomentFromField($field){ 6684 const $input = $field.find('input.daytime'); 6685 const dp = getDp($field, $input); 6686 if (dp && dp.date && dp.date()) return dp.date().clone(); 6687 const raw = $input.attr('data-raw') || $input.val(); 6688 return raw ? moment(parseToDate(raw)) : null; 6689 } 6690 6691 /** End íëì 커ì¤í clockìì Startë³´ë¤ ì´ì ìê°ë¤ì disabled ì²ë¦¬ */ 6692 function applyEndTimeDisables($endField){ 6693 const $overlay = $endField.closest('.calendar-modal-overlay'); 6694 const $sField = $overlay.find('.modal-field.sdate'); 6695 const start = readMomentFromField($sField); 6696 if (!start) return; // ììì´ ìì¼ë©´ ì í ìì 6697 6698 const $endInput = $endField.find('input.daytime'); 6699 const dpEnd = getDp($endField, $endInput); 6700 const end = dpEnd && dpEnd.date ? dpEnd.date().clone() : null; 6701 6702 // 1) minDateë 'ë ì§ ë¨ì'ë¡, 'ë³ê²½ë ëë§' ì¸í (ë¶íìí 리ë ë ë°©ì§) 6703 if (dpEnd && typeof dpEnd.minDate === 'function') { 6704 const wantMin = start.clone().startOf('day'); 6705 let curMin = null; 6706 try { curMin = dpEnd.minDate && dpEnd.minDate(); } catch(e){} 6707 if (!curMin || !moment.isMoment(curMin) || !curMin.isSame(wantMin, 'day')) { 6708 dpEnd.minDate(wantMin); 6709 } 6710 } 6711 6712 const $clock = $endField.find('.custom-clock'); 6713 if (!$clock.length) return; 6714 6715 const ampmSel = ($clock.find('.select.ampm .selector').attr('data-type') || ((end && end.hour()>=12) ? 'pm' : 'am')).toLowerCase(); 6716 const h12Sel = parseInt($clock.find('.select.hour .selector').text(), 10) || 12; 6717 const mSel = parseInt($clock.find('.select.minute .selector').text(), 10) || 0; 6718 const sameDay = end ? end.isSame(start, 'day') : true; 6719 const toH24 = (h12, ap) => (ap==='pm' ? (h12%12)+12 : (h12%12)); 6720 6721 // 2) equal-case ê°ì 리íì¸í¸ë 'ìê°/ë¶ ëë¡ì´ ì´ë ¤ ìì ëë§' 6722 // (= ë ì§(day) ì í´ë¦ ì¤ì ì ë ì¤ííì§ ìì) 6723 const timeDropOpen = $endField.find('.custom-clock .select .drop:visible').length > 0; 6724 if (dpEnd && end && start && end.isSame(start) && timeDropOpen) { 6725 $endField.data('suppressDropAutoHide', true); 6726 if (typeof dpEnd.viewDate === 'function') dpEnd.viewDate(end.clone()); 6727 dpEnd.date(end.clone().add(1,'ms')); 6728 dpEnd.date(end.clone()); 6729 setTimeout(() => { $endField.removeData('suppressDropAutoHide'); }, 80); 6730 } 6731 6732 // 1) AM/PM ëë¡ í목 6733 $clock.find('.select.ampm .drop li').each(function(){ 6734 const v = ($(this).attr('data-value')||'am').toLowerCase(); 6735 const h24 = toH24(h12Sel, v); 6736 const cand = (end ? end.clone() : start.clone()).hour(h24).minute(mSel).second(0); 6737 const dis = sameDay && cand.isBefore(start); 6738 $(this).toggleClass('disabled', dis).attr('aria-disabled', dis ? 'true' : null); 6739 }); 6740 6741 // 2) ìê° ëë¡ í목 6742 $clock.find('.select.hour .drop li').each(function(){ 6743 const h12 = parseInt($(this).attr('data-value') || $(this).text(), 10) || 12; 6744 const h24 = toH24(h12, ampmSel); 6745 const cand = (end ? end.clone() : start.clone()).hour(h24).minute(mSel).second(0); 6746 const dis = sameDay && cand.isBefore(start); 6747 $(this).toggleClass('disabled', dis).attr('aria-disabled', dis ? 'true' : null); 6748 }); 6749 6750 // 3) ë¶ ëë¡ í목 6751 $clock.find('.select.minute .drop li').each(function(){ 6752 const mm = parseInt($(this).attr('data-value') || $(this).text(), 10) || 0; 6753 const h24 = toH24(h12Sel, ampmSel); 6754 const cand = (end ? end.clone() : start.clone()).hour(h24).minute(mm).second(0); 6755 const dis = sameDay && cand.isBefore(start); 6756 $(this).toggleClass('disabled', dis).attr('aria-disabled', dis ? 'true' : null); 6757 }); 6758 } 6759
6760 function isAllDayByField($hostField){ 6761 const $overlay = $hostField.closest('.calendar-modal-overlay'); 6762 return $overlay.find('.all .all-day').is(':checked'); 6763 } 6764 6765 function ensureCustomClock($hostField, locale) { 6766 const $overlay = $hostField.closest('.calendar-modal-overlay'); 6767 if (!$overlay.length || !$overlay.is(':visible')) return; 6768 6769 const dp = getDp($hostField, $hostField.find('input.daytime')); 6770 6771 let $widget = null; 6772 if (dp) { 6773 try { 6774 const w = (typeof dp.widget === 'function') ? dp.widget() : dp.widget; 6775 if (w) $widget = (w.jquery ? w : $(w)); 6776 } catch (e) { /* no-op */ } 6777 } 6778 if (!$widget || !$widget.length) { 6779 $widget = $hostField.find('.bootstrap-datetimepicker-widget:visible').last(); 6780 if (!$widget.length) $widget = $('.bootstrap-datetimepicker-widget:visible').last(); 6781 } 6782 if (!$widget || !$widget.length || !$widget.is(':visible')) return; 6783 6784 let $list = $widget.find('ul.list-unstyled').first(); 6785 let $timeArea = $widget.find('li.timepicker, .timepicker').last(); 6786 if (!$list.length && $timeArea.length) $list = $timeArea.closest('ul.list-unstyled'); 6787 if (!$list.length) $list = $widget; 6788 6789 // ì´ë¯¸ ìì±ëì´ ìì¼ë©´ ì¢ ë£ 6790 if ($list.find('.custom-clock-li, .custom-clock').length) return; 6791 6792 const allDay = isAllDayByField($hostField); 6793 6794 // ìì ¯ì 기본 timepicker DOMì all-dayë©´ ì¨ê²¨ë¡ëë¤ 6795 if ($timeArea.length) $timeArea.remove(); 6796 6797 const cur = (dp && dp.date) ? dp.date() : moment(); 6798 const H = cur.hour(), M = cur.minute(); 6799 const LANG = locale; 6800 const amLabel = ($.lang?.[LANG]?.['sc.banner.am']) || 'AM'; 6801 const pmLabel = ($.lang?.[LANG]?.['sc.banner.pm']) || 'PM'; 6802 const ampmType = (H >= 12) ? 'pm' : 'am'; 6803 const h12 = ((H % 12) || 12); 6804 const pad = (n)=> (n<10 ? '0'+n : ''+n); 6805 6806 // ê³µíµ: ì·¨ì/ì ì¥ ë²í¼ ë¸ë (ìê³ ì 무 ìê´ìì´ íì) 6807 const buttonsHtml = ` 6808 <tr> 6809 <td class="btnbox"> 6810 <div class="calendar-period-btn"> 6811 <span class="calendar-period-close">${($.lang?.[LANG]?.['config.cancel']) || 'Cancel'}</span> 6812 </div> 6813 <div class="calendar-period-btn"> 6814 <span class="calendar-period-save">${($.lang?.[LANG]?.['config.save']) || 'Save'}</span> 6815 </div> 6816 </td> 6817 </tr>`; 6818 6819 let bodyHtml = ''; 6820 if (!allDay) { 6821 // ââ ìê³ + ë²í¼ (기존과 ëì¼) 6822 let lisHour = ''; for (let i=1;i<=12;i++) lisHour += `<li data-value="${pad(i)}">${pad(i)}</li>`; 6823 let lisMin = ''; for (let j=0;j<=59;j++) lisMin += `<li data-value="${pad(j)}">${pad(j)}</li>`; 6824 bodyHtml = ` 6825 <tr class="timeselector"> 6826 <td class="btnbox"> 6827 <div> 6828 <ul class="select ampm"> 6829 <li class="selector" data-type="${ampmType}">${ampmType==='pm'?pmLabel:amLabel}</li> 6830 <ul class="drop"><li data-value="am">${amLabel}</li><li data-value="pm">${pmLabel}</li></ul> 6831 </ul> 6832 <ul class="select hour"> 6833 <li class="selector">${pad(h12)}</li> 6834 <ul class="drop">${lisHour}</ul> 6835 </ul> 6836 <ul class="separator"> : </ul> 6837 <ul class="select minute"> 6838 <li class="selector">${pad(M)}</li> 6839 <ul class="drop">${lisMin}</ul> 6840 </ul> 6841 </div> 6842 </td> 6843 </tr> 6844 ${buttonsHtml}`; 6845 } else { 6846 // ââ ë²í¼ë§ (ë¬ë ¥ + ë²í¼) 6847 bodyHtml = buttonsHtml; 6848 } 6849 6850 const clockLi = $(` 6851 <li class="custom-clock-li"> 6852 <div class="custom-clock ${allDay ? 'clock-compact' : 'clock-full'}"> 6853 <table class="table-condensed"> 6854 ${bodyHtml} 6855 </table> 6856 </div> 6857 </li>`); 6858 6859 const $timeLi = $list.find('li.timepicker, .timepicker').last(); 6860 if ($timeLi.length) $timeLi.after(clockLi); else $list.append(clockLi); 6861 6862 const $clock = clockLi.find('.custom-clock'); 6863 6864 // ë²í¼ ëì 6865 $clock.off('click.clockBtns') 6866 .on('click.clockBtns', '.calendar-period-save', function () { 6867 const $hostField = $(this).closest('.modal-field'); 6868 const $input = $hostField.find('input.daytime'); 6869 const $overlay = $hostField.closest('.calendar-modal-overlay'); 6870 const locale = $overlay.closest('.calendar').hasClass('en') ? 'en' : 'ko'; 6871 const dpStart = getDp($hostField, $input);
6872 const isAllDay = isAllDayByField($hostField); 6873 6874 if (dpStart && dpStart.date()) { 6875 $hostField.data('commitFlag', true); 6876 6877 // ì ì¥ ì íì/ë°ì´í° íì ë¶ê¸° 6878 let m = dpStart.date().clone(); 6879 if (isAllDay) m = m.startOf('day'); // ë ì§ë§ ì미 6880 6881 // start ì ì¥ ë¡ì§ ì ì§ + end ë³´ì 6882 if ($hostField.hasClass('sdate')) { 6883 const $endField = $overlay.find('.modal-field.edate'); 6884 const $endInput = $endField.find('input.daytime'); 6885 const dpEnd = getDp($endField, $endInput); 6886 6887 // end ê° ì½ê¸° 6888 let end = dpEnd && dpEnd.date() ? dpEnd.date().clone() : null; 6889 if (!end) { 6890 const rawEnd = $endInput.attr('data-raw') || $endInput.val(); 6891 if (rawEnd) end = moment(parseToDate(rawEnd)); 6892 } 6893 6894 // start > endì´ë©´ end ìë ë³´ì (all-dayë©´ ê°ì ë ì§, ìê°ì ì미 ìì) 6895 if (!end || m.isAfter(end)) { 6896 // const newEnd = isAllDay ? m.clone() : m.clone().add(1, 'hours'); 6897 const newEnd = isAllDay ? m.clone() : m.clone(); 6898 if (dpEnd && typeof dpEnd.date === 'function') dpEnd.date(newEnd.clone()); 6899 6900 const rawStrEnd = isAllDay ? newEnd.format('YYYY-MM-DD') : newEnd.format('YYYY-MM-DD HH:mm'); 6901 const dispEndHTML = formatDateLocalized(rawStrEnd, locale, 1); 6902 const dispEndTEXT = formatDateLocalized(rawStrEnd, locale); 6903 6904 $endInput.attr('data-raw', rawStrEnd).val(dispEndTEXT).removeClass('empty'); 6905 6906 const $endView = $endField.find('.daytime-html'); 6907 if ($endView.length) { 6908 $endView.attr('data-raw', rawStrEnd).html(dispEndHTML); 6909 } 6910 6911 $endField.data('commitFlag', true); 6912 } 6913 } else if ($hostField.hasClass('edate')) { 6914 const $startField = $overlay.find('.modal-field.sdate'); 6915 const $startInput = $startField.find('input.daytime'); 6916 const dpStartInstance = getDp($startField, $startInput); // sdate 6917 const $endField = $overlay.find('.modal-field.edate'); 6918 const $endInput = $endField.find('input.daytime'); 6919 const dpEnd = dpStart; // hostField=edate 6920 6921 // 1) ìì(moment) ì½ê¸° 6922 let start = dpStartInstance && dpStartInstance.date() ? dpStartInstance.date().clone() : null; 6923 if (!start) { 6924 const rawStart = $startInput.attr('data-raw') || $startInput.val(); 6925 if (rawStart) start = moment(parseToDate(rawStart)); 6926 } 6927 6928 // 2) end í보를 "커ì¤í ìê³ ì íê°"ì¼ë¡ ì§ì 조립 6929 const isAllDay = isAllDayByField($hostField); 6930 const gran = isAllDay ? 'day' : 'minute'; 6931 const norm = d => d ? d.clone().seconds(0).milliseconds(0) : null; 6932 6933 let endCandidate; 6934 if (isAllDay) { 6935 // ì¢ ì¼ì ë ì§ë§ ë¹êµíë©´ ëë¯ë¡, dpì ë ì§(ëë start)ë¡ ì¡°ë¦½ 6936 endCandidate = (dpEnd && dpEnd.date ? dpEnd.date().clone() : (start || moment())).startOf('day'); 6937 } else { 6938 // 커ì¤í ìê³ìì AM/PM, ì, ë¶ ì½ê¸° 6939 const $clock = $hostField.find('.custom-clock'); 6940 const ap = ($clock.find('.select.ampm .selector').attr('data-type') || 'am').toLowerCase(); 6941 const h12Str = $clock.find('.select.hour .selector').text().trim() || '12'; 6942 const minStr = $clock.find('.select.minute .selector').text().trim() || '00'; 6943 const toH24 = (h12, ap) => ap==='pm' ? (h12%12)+12 : (h12%12); 6944 const h24 = toH24(parseInt(h12Str,10)||12, ap); 6945 const mm = Math.max(0, Math.min(59, parseInt(minStr,10)||0)); 6946 6947 // ê°ì "ë ì§" ìì ìê°ë§ ë®ì´ì°ê¸° (dpEndê° ìì¼ë©´ ê·¸ ë ì§ ì¬ì©, ìì¼ë©´ start ë ì§ ì¬ì©) 6948 const base = (dpEnd && dpEnd.date ? dpEnd.date().clone() : (start || moment())); 6949 endCandidate = base.clone().hours(h24).minutes(mm).seconds(0).milliseconds(0); 6950 } 6951 6952 const startNorm = norm(start); 6953 const endNorm = norm(endCandidate); 6954 6955 // 3) ì ì¥ ìì ë³´ì : end < startë©´ end = start 6956 const correctedEnd = (startNorm && endNorm && endNorm.isBefore(startNorm, gran)) 6957 ? startNorm.clone() 6958 : endNorm.clone(); 6959 6960 // 4) ìì ¯/ë·° ê°±ì ì correctedEnd ê¸°ì¤ 6961 if (dpEnd && typeof dpEnd.date === 'function') { 6962 $hostField.data('suppressHide', true); 6963 if (typeof dpEnd.minDate === 'function') dpEnd.minDate(startNorm ? startNorm.clone().startOf('day') : false); 6964 if (typeof dpEnd.viewDate === 'function') dpEnd.viewDate(correctedEnd.clone()); 6965 dpEnd.date(correctedEnd.clone()); // (íìì 1ms íë¤ê¸° ì¶ê° ê°ë¥) 6966 setTimeout(() => { $hostField.removeData('suppressHide'); }, 0); 6967 } 6968 6969 // 5) í기/ì ì¥ë correctedEndë§ ì¬ì©
6970 const rawStrEnd = isAllDay ? correctedEnd.format('YYYY-MM-DD') 6971 : correctedEnd.format('YYYY-MM-DD HH:mm'); 6972 const dispEndHTML = formatDateLocalized(rawStrEnd, locale, 1); 6973 const dispEndTEXT = formatDateLocalized(rawStrEnd, locale); 6974 6975 $endInput.attr('data-raw', rawStrEnd).val(dispEndTEXT).removeClass('empty'); 6976 const $endView = $hostField.find('.daytime-html'); 6977 if ($endView.length) $endView.attr('data-raw', rawStrEnd).html(dispEndHTML); 6978 6979 try { applyEndTimeDisables($hostField); } catch(e){} 6980 try { if (typeof paintActiveDay === 'function') paintActiveDay($hostField, correctedEnd.clone()); } catch(e){} 6981 6982 $hostField.data('commitFlag', true); 6983 } 6984 6985 // íì¬ ì´ë ¤ìë ì´ í¼ì»¤ ë«ê¸° 6986 if (dpStart && dpStart.hide) dpStart.hide(); 6987 } 6988 }) 6989 .on('click.clockBtns', '.calendar-period-close', function () { 6990 const $hostField = $(this).closest('.modal-field'); 6991 $hostField.data('commitFlag', false); 6992 const dp = getDp($hostField, $hostField.find('input.daytime')); 6993 dp && dp.hide && dp.hide(); 6994 }); 6995 } 6996 6997 function closeOtherPickers($overlay, $currentField){ 6998 $overlay.find('.modal-field').each(function(){ 6999 if (this === $currentField[0]) return; 7000 const dp = $(this).data('DateTimePicker'); 7001 if (dp && typeof dp.hide === 'function') dp.hide(); 7002 }); 7003 $overlay.find('.custom-clock .select .drop').hide(); 7004 } 7005 7006 function getDp($field, $input){ 7007 return $field.data('DateTimePicker') || $input.data('DateTimePicker'); 7008 } 7009 7010 $(document).on('click', '.calendar .modal-field .daytime', function(e) { 7011 e.stopPropagation(); 7012 const $input = $(this); 7013 const $field = $input.closest('.modal-field'); 7014 const $overlay = $input.closest('.calendar-modal-overlay'); 7015 const $cal = $input.closest('.calendar'); 7016 const locale = $cal.hasClass('en') ? 'en' : 'ko'; 7017 const lang = locale; 7018 7019 closeOtherPickers($overlay, $field); 7020 7021 var allDay = $field.siblings('.all').find('.all-day').is(':checked'); 7022 const periodOptions = { 7023 format: allDay ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm', 7024 dayViewHeaderFormat: 'YYYY. MM', 7025 minDate: false, 7026 disabledDates: false, 7027 useCurrent: false, 7028 focusOnShow: false, 7029 keepOpen: true, 7030 debug: true, 7031 allowInputToggle: true, 7032 sideBySide: false, 7033 locale: lang, 7034 ignoreReadonly: true, 7035 widgetParent: $field, 7036 widgetPositioning: { horizontal: 'auto', vertical: 'bottom' } 7037 }; 7038 7039 let dp = $field.data('DateTimePicker'); 7040 if (dp) { 7041 if (typeof dp.show === 'function') dp.show(); 7042 else { try { $field.datetimepicker('show'); } catch(e){} } 7043 ensureCustomClock($field, locale); 7044 return; 7045 } 7046 7047 if (typeof $field.datetimepicker !== 'function') { 7048 console.error('bootstrap-datetimepickerê° ë¡ëëì§ ìììµëë¤.'); 7049 return; 7050 } 7051 7052 $field.datetimepicker(periodOptions) 7053 .on('dp.show', function(){ 7054 if (!$('.calendar-dp-overlay').length) { 7055 $('<div class="calendar-dp-overlay"></div>').appendTo('.calendar-modal-body'); 7056 } 7057 7058 closeOtherPickers($overlay, $field); 7059 7060 const dp = $field.data('DateTimePicker'); 7061 const raw = $input.attr('data-raw'); 7062 const origDisplay = $input.val(); 7063 const origRaw = raw || ''; 7064 const base = raw ? moment(parseToDate(raw)) : (dp && dp.date() ? dp.date().clone() : moment(nowTime())); 7065 7066 $field.data('origDisplay', origDisplay); 7067 $field.data('origRaw', origRaw); 7068 $field.data('origDate', base.clone()); 7069 $field.data('commitFlag', false); 7070 7071 if (dp && (!dp.date() || !dp.date().isSame(base))) dp.date(base.clone()); 7072 7073 setTimeout(() => { 7074 ensureCustomClock($field, locale); 7075 if ($field.hasClass('edate')) applyEndTimeDisables($field); 7076 }, 0); 7077 }) 7078 7079 .on('dp.change', function(){ 7080 const $field = $(this); 7081 const locale = $field.closest('.calendar').hasClass('en') ? 'en' : 'ko'; 7082 7083 setTimeout(() => { 7084 ensureCustomClock($field, locale); 7085 if ($field.hasClass('edate')) applyEndTimeDisables($field); 7086 7087 // â íë¡ê·¸ë¨ì ë³ê²½(equals 리íì¸í¸) or ëë¡ ë°©ê¸ ì´ë¦¼ â ë«ê¸° ì¤íµ 7088 if ($field.data('suppressDropAutoHide') || $field.data('dropOpenLock')) return; 7089 7090 // íììë ë«ê¸° 7091 $field.find('.custom-clock .select .drop').hide(); 7092 }, 0); 7093 }) 7094 7095 .on('dp.hide', function(){ 7096 const $field = $(this); 7097 const $input = $field.find('input.daytime'); 7098 const $view = $field.find('.daytime-html'); // íìì© span 7099 const dp = $field.data('DateTimePicker'); 7100 const committed = !!$field.data('commitFlag'); 7101 const origDate = $field.data('origDate'); 7102 const origDisp = $field.data('origDisplay'); 7103 const origRaw = $field.data('origRaw'); 7104 7105 const localeCur = $field.closest('.calendar').hasClass('en') ? 'en' : 'ko'; 7106 7107 $('.calendar-dp-overlay').remove(); 7108 7109 if (!committed) { 7110 if (dp && origDate) dp.date(origDate.clone()); 7111
7112 const isAllDayNow = isAllDayByField($field); 7113 const rollbackIso = origRaw || (origDate ? (isAllDayNow ? origDate.format('YYYY-MM-DD') : origDate.format('YYYY-MM-DD HH:mm')) : null); 7114 7115 if (rollbackIso) { 7116 // â¬â¬ ì¬ê¸°: HTML/í ì¤í¸ë¥¼ í¨ìì 3ë²ì§¸ ì¸ìë¡ ì§ì ë¶ê¸° 7117 const dispHTML = formatDateLocalized(rollbackIso, localeCur, 1); // spanì©(HTML) 7118 const dispTEXT = formatDateLocalized(rollbackIso, localeCur); // inputì©(í ì¤í¸) 7119 7120 $input.attr('data-raw', rollbackIso).val(dispTEXT).removeClass('empty'); 7121 if ($view.length) $view.attr('data-raw', rollbackIso).html(dispHTML); 7122 7123 } else { 7124 if (typeof origDisp !== 'undefined') $input.val(origDisp); 7125 if (typeof origRaw !== 'undefined') $input.attr('data-raw', origRaw); 7126 7127 if ($view.length) { 7128 if (typeof origRaw !== 'undefined') { 7129 // â¬â¬ ì¬ê¸°: íìì©ì HTMLë¡ 7130 const dispHTML0 = formatDateLocalized(origRaw, localeCur, 1); 7131 $view.attr('data-raw', origRaw).html(dispHTML0); 7132 } else if (typeof origDisp !== 'undefined') { 7133 $view.text(origDisp); 7134 } else { 7135 $view.text(''); 7136 } 7137 } 7138 } 7139 } else { 7140 const m = dp && dp.date() ? dp.date().clone() : null; 7141 if (m) { 7142 const isAllDayNow = isAllDayByField($field); 7143 const iso = isAllDayNow ? m.format('YYYY-MM-DD') : m.format('YYYY-MM-DD HH:mm'); 7144 const dispHTML = formatDateLocalized(iso, localeCur, 1); // spanì©(HTML) 7145 const dispTEXT = formatDateLocalized(iso, localeCur); // inputì©(í ì¤í¸) 7146 7147 $input.attr('data-raw', iso).val(dispTEXT).removeClass('empty'); 7148 if ($view.length) $view.attr('data-raw', iso).html(dispHTML); 7149 } 7150 } 7151 7152 $field.removeData('origDisplay') 7153 .removeData('origRaw') 7154 .removeData('origDate') 7155 .removeData('commitFlag'); 7156 7157 $field.find('.custom-clock .select .drop').hide(); 7158 }); 7159 7160 const inst = $field.data('DateTimePicker'); 7161 if (inst && typeof inst.show === 'function') inst.show(); 7162 else { try { $field.datetimepicker('show'); } catch(e){} } 7163 }); 7164 7165 $(document).on('click', '.calendar .col-box', function(e) { 7166 var isOpen = $(this).closest('.cfull-box').hasClass('open'); 7167 if(isOpen) { 7168 $(this).closest('.cfull-box').removeClass('open'); 7169 } else { 7170 $(this).closest('.cfull-box').addClass('open'); 7171 } 7172 }); 7173 7174 $(document).on('click', '.calendar .scheduleColor', function() { 7175 var colorpick = $(this).attr('data-color'); 7176 $(this).closest('.ccol-box').siblings('.col-box').find('.scheduleColorPicker').css('background-color', colorpick).attr('data-color', colorpick); 7177 $(this).closest('.cfull-box').removeClass('open'); 7178 }); 7179 7180 $(document).on('click', function(e) { 7181 if (!$(e.target).closest('.col-box').length) { 7182 $('.cfull-box').removeClass('open'); 7183 } 7184 }); 7185 7186 // ë«ê¸° ë²í¼ 7187 $(document).on('click', '.calendar .modal-close', function(){ 7188 var pid = $(this).closest('.calendar').attr('data-id'); 7189 $(this).closest(".calendar-modal-overlay").fadeOut(200, function(){ 7190 $(this).remove(); 7191 }); 7192 calendarOverlayOut(pid); 7193 }); 7194 7195 $(document).on('click', '.calendar .all-day', function(e) { 7196 e.stopPropagation(); 7197 var checked = ($(this).is(':checked')) ? true : false, 7198 $overlay = $(this).closest('.calendar-modal-overlay'), 7199 locale = ($(this).closest('.calendar').hasClass('en')) ? 'en' : 'ko', 7200 sdate1 = $overlay.find('.sdate .start').val(), 7201 sdate2 = $overlay.find('.sdate .start').attr('data-raw'), 7202 edate1 = $overlay.find('.edate .end').val(), 7203 edate2 = $overlay.find('.edate .end').attr('data-raw'), 7204 sdate1_only = sdate1 ? (sdate1.split(' ')[0] + ' ' + sdate1.split(' ')[1]) : '', 7205 sdate2_only = sdate2 ? sdate2.split(' ')[0] : '', 7206 edate1_only = edate1 ? (edate1.split(' ')[0] + ' ' + edate1.split(' ')[1]) : '', 7207 edate2_only = edate2 ? edate2.split(' ')[0] : '', 7208 time_lang_start = (locale == 'en') ? ' 12:00 PM' : ' ì¤í 12:00'; 7209 time_lang_end = (locale == 'en') ? ' 1:00 PM' : ' ì¤í 1:00'; 7210 7211 // 1) íì 문ìì´/ììê° ë기í (기존 ë¡ì§ ì ì§) 7212 if(checked) {
7213 $overlay.find('.sdate .start').val(sdate1_only); 7214 $overlay.find('.sdate .start').attr('data-raw', sdate2_only); 7215 $overlay.find('.edate .end').val(edate1_only); 7216 $overlay.find('.edate .end').attr('data-raw', edate2_only); 7217 $overlay.find('.stimepicker .tt').remove(); 7218 $overlay.find('.etimepicker .tt').remove(); 7219 } else { 7220 $overlay.find('.sdate .start').val(sdate1_only + time_lang_start); 7221 $overlay.find('.sdate .start').attr('data-raw', sdate2_only + ' 12:00'); 7222 $overlay.find('.edate .end').val(edate1_only + time_lang_end); 7223 $overlay.find('.edate .end').attr('data-raw', edate2_only + ' 13:00'); 7224 $overlay.find('.stimepicker').append('<span class="tt">' + time_lang_start + '</span>'); 7225 $overlay.find('.etimepicker').append('<span class="tt">' + time_lang_end + '</span>'); 7226 } 7227 7228 $overlay.find('.modal-field.sdate, .modal-field.edate').each(function(){ 7229 const $field = $(this); 7230 const $input = $field.find('input.daytime'); 7231 const dp = getDp($field, $input); 7232 7233 if (!dp) return; 7234 7235 // ìì ¯ ì»ê¸° 7236 let $widget = null; 7237 try { 7238 const w = (typeof dp.widget === 'function') ? dp.widget() : dp.widget; 7239 if (w) $widget = (w.jquery ? w : $(w)); 7240 } catch (err) {} 7241 7242 // íì¬ ìì ¯ì´ íë©´ì ë ìì ëë§ ensureCustomClockì¼ë¡ ìê°ìì íì/ì¨ê¹ ë°ì 7243 if ($widget && $widget.length && $widget.is(':visible')) { 7244 ensureCustomClock($field, locale); 7245 } 7246 }); 7247 }); 7248 7249 $(document).on('click', '.calendar .schedule_list .del, .calendar .modal-delete', function() { 7250 var mode = $(this).hasClass('modal-delete'), 7251 locale = ($(this).closest('.calendar').hasClass('en')) ? 'en' : 'ko'; 7252 7253 if (confirm($.lang[locale]['config.calendar.delete'])) { 7254 if(mode) { 7255 var sid = b.SID, 7256 pid = $(this).closest('.calendar').attr('data-id'), 7257 seq = $(this).closest('.calendar-modal-container').find('.calendar-modal-body').find('.seq').val(), 7258 yearMonth = $(this).closest('.calendar-modal-overlay').find('.calendar-modal-container.view .calendar-modal-body .sdate .start').attr('data-raw').substring(0, 7); 7259 } else { 7260 var sid = $(this).siblings('.sid').val(), 7261 seq = $(this).siblings('.seq').val(), 7262 pid = $(this).siblings('.pid').val(), 7263 yearMonth = $('.schedule_list .sdate').val().substring(0, 7); 7264 } 7265 var data_type = ($('.userEL'+pid).attr('data-modoo-type')) ? $('.userEL'+pid).attr('data-modoo-type') : ''; 7266 7267 $.ajax({ 7268 url: '/template/delete_calendar', 7269 data: { sid: sid, pid: pid, seq: seq, yearMonth: yearMonth }, 7270 type: 'POST', 7271 dataType: 'json', 7272 success: function(data) { 7273 checkError(data); 7274 const instance = $.cl_calendar.instances[pid]; 7275 // instance.events = data || []; 7276 if (mode) { 7277 $(".calendar-modal-overlay").fadeOut(300); 7278 } else { 7279 $('.modal-overlay-modify').fadeOut(300); 7280 } 7281 7282 if (data_type !== '') { 7283 $.cl_calendar.init(b.SID, pid, yearMonth); 7284 } else { 7285 // â íµì¬: ìì ìí¥ê¶(ì /ë¹/ë¤ìë¬)ë§ ìºì 무í¨í 7286 invalidateAround(pid, yearMonth); 7287 7288 //ìë²ê° ëë ¤ì¤ ìµì data(3ê°ìì¹)를 ì¦ì ìºìì ë³í© 7289 upsertMonthCacheFromServer(pid, data); 7290 7291 // â ëì events ìì¤ë¥¼ ì ì§í ì±ë¡ ìµì ë°ì´í° ë¤ì ìì² 7292 if (instance && instance.calendar) { 7293 const v = instance.calendar.view; 7294 const needKeys = monthsInRange(v.currentStart, v.currentEnd); 7295 const pidMap = monthCache.get(pid) || new Map(); 7296 const missing = needKeys.filter(k => !pidMap.has(k)); 7297 const dt = ($('.userEL'+pid).attr('data-modoo-type')) || ''; 7298 const after = () => instance.calendar.refetchEvents(); 7299 7300 if (missing.length) { 7301 Promise.all(missing.map(k =>
7301 fetchMonth(pid, k, dt))).finally(after); 7302 } else { 7303 after(); 7304 } 7305 } else { 7306 initCalendar(pid); 7307 } 7308 } 7309 calendarOverlayOut(pid); 7310 } 7311 }); 7312 } 7313 }); 7314 7315 $(document).on('click', '.calendar .go-modify', function() { 7316 var pid = $(this).closest('.calendar-modal-container').find('.pid').val(); 7317 if(currentEvent) showCalendarModalEdit(pid, 1, currentDate, currentEvent); 7318 else console.log('ì íë ì´ë²¤í¸ ìì'); 7319 }); 7320 7321 // ì ì¥ ë²í¼ 7322 let isSaving = false; 7323 $(document).on('click', '.calendar .modal-save, .calendar .modal-modify', function(e) { 7324 e.preventDefault(); 7325 e.stopImmediatePropagation(); 7326 7327 if (isSaving) return false; 7328 7329 const locale = ($(this).closest('.calendar').hasClass('en')) ? 'en' : 'ko'; 7330 const $btn = $(this); 7331 const $overlay = $btn.closest('.calendar-modal-overlay'); 7332 7333 if ($overlay.data('saving') === true) return false; 7334 7335 $overlay.data('saving', true); 7336 const $buttons = $overlay.find('.modal-save, .modal-modify').prop('disabled', true).addClass('is-disabled'); 7337 7338 var mode = $btn.hasClass('modal-modify'), 7339 pid = $btn.closest('.calendar').attr('data-id'), 7340 data_type = ($('.userEL'+pid).attr('data-modoo-type')) ? $('.userEL'+pid).attr('data-modoo-type') : ''; 7341 7342 var title = $btn.closest('.calendar-modal-container').find('.modal-title .ctitle').val(), 7343 color = $btn.closest('.calendar-modal-container').find('.scheduleColorPicker').attr('data-color'), 7344 seq = $btn.parent().siblings('.calendar-modal-body').find('.seq').val(), 7345 sdate = $btn.parent().siblings('.calendar-modal-body').find('.sdate .start').attr('data-raw'), 7346 edate = $btn.parent().siblings('.calendar-modal-body').find('.edate .end').attr('data-raw'), 7347 fulltime = ($btn.parent().siblings('.calendar-modal-body').find('.all .all-day').prop('checked')) ? 'Y' : 'N', 7348 content = $btn.parent().siblings('.calendar-modal-body').find('.content textarea').val(), 7349 pass = $btn.parent().siblings('.calendar-modal-body').find('.pass').val(); 7350 7351 if (!title) { 7352 alert($.lang[locale]['config.calendar.enter-title']); 7353 $overlay.data('saving', false); 7354 $buttons.prop('disabled', false).removeClass('is-disabled'); 7355 return false; 7356 } 7357 if (pass == 'N') { 7358 alert($.lang[locale]['config.calendar.enter-date']); 7359 $overlay.data('saving', false); 7360 $buttons.prop('disabled', false).removeClass('is-disabled'); 7361 return false; 7362 } 7363 7364 var timeRegex = /\s\d{1,2}:\d{2}$/; 7365 if (fulltime === 'N' && (!timeRegex.test(sdate) || !timeRegex.test(edate))) { 7366 alert($.lang[locale]['config.calendar.enter-time']); 7367 $overlay.data('saving', false); 7368 $buttons.prop('disabled', false).removeClass('is-disabled'); 7369 return false; 7370 } 7371 7372 isSaving = true; 7373 $buttons.prop('disabled', true).addClass('is-disabled'); 7374 7375 $(".calendar-modal-overlay").fadeOut(200, function() { $(this).remove(); }); 7376 calendarOverlayOut(pid); 7377 7378 const eventData = { 7379 sid: b.SID, 7380 seq: seq, 7381 pid: pid, 7382 month: sdate.substring(0, 7), 7383 sdate: sdate, 7384 stime: (sdate.split(' ')[1]) ? sdate.split(' ')[1] : '00:00', 7385 edate: edate, 7386 etime: (edate.split(' ')[1]) ? edate.split(' ')[1] : '00:00', 7387 fulltime: fulltime, 7388 memo: content, 7389 title: title, 7390 color: color, 7391 check: 2 7392 }; 7393 7394 $.ajax({ 7395 url: '/template/calendar', 7396 data: { data: eventData, mode: mode, yearMonth: eventData['month'], data_type : data_type }, 7397 type: 'POST', 7398 dataType: 'json', 7399 success: function(data) { 7400 checkError(data); 7401 const instance = $.cl_calendar.instances[pid]; 7402 instance.events = data || []; 7403 7404 if (data_type != '') { 7405 $.cl_calendar.init(b.SID, pid, sdate.substring(0, 7)); 7406 } else { 7407 // â íµì¬: ìì ìí¥ê¶(ì /ë¹/ë¤ìë¬)ë§ ìºì 무í¨í 7408 invalidateAround(pid, sdate.substring(0, 7)); 7409 7410 // ìë²ê° ëë ¤ì¤ ìµì data(3ê°ìì¹)를 ì¦ì ìºìì ë³í© 7411 upsertMonthCacheFromServer(pid, data); 7412 7413 // â ëì events ìì¤ë¥¼ ì ì§í ì±ë¡ ìµì ë°ì´í° ë¤ì ìì² 7414 if (instance && instance.calendar) { 7415 const v = instance.calendar.view; 7416 const needKeys = monthsInRange(v.currentStart, v.currentEnd); 7417 const pidMap = monthCache.get(pid) || new Map(); 7418 const missing = needKeys.filter(k => !pidMap.has(k)); 7419 const dt = ($('.userEL'+pid).attr('data-modoo-type')) || ''; 7420 if (missing.length) { 7421 Promise.all(missing.map(k =>
7421 fetchMonth(pid, k, dt))) 7422 .finally(() => instance.calendar.refetchEvents()); 7423 } else { 7424 instance.calendar.refetchEvents(); 7425 } 7426 } else { 7427 initCalendar(pid); 7428 } 7429 isSaving = false; 7430 $buttons.prop('disabled', false).removeClass('is-disabled'); 7431 } 7432 7433 $(".calendar-modal-overlay").fadeOut(200, function() { $(this).remove(); }); 7434 calendarOverlayOut(pid); 7435 }, 7436 error: function(xhr, status, error) { 7437 console.error("ì´ë²¤í¸ ì ì¥ ì¤í¨:", error); 7438 } 7439 }); 7440 }); 7441 7442 function openEventModal(dateString) { 7443 selectedDate = dateString; 7444 7445 // í¼ ì´ê¸°í 7446 $('#eventForm')[0].reset(); 7447 $('#eventId').val(''); 7448 $('#eventStartDate').val(dateString); 7449 $('#eventEndDate').val(dateString); 7450 7451 // ì¢ ë£ì¼ì ììì¼ ì´íë§ ì í ê°ë¥íëë¡ ì¤ì 7452 $('#eventEndDate').attr('min', dateString); 7453 7454 // ëª¨ë¬ íì 7455 $('#eventModal').fadeIn(300); 7456 } 7457 7458 function htmlEscape(str) { 7459 return String(str) 7460 .replace(/&/g, "&") 7461 .replace(/</g, "<") 7462 .replace(/>/g, ">") 7463 .replace(/"/g, """) 7464 .replace(/'/g, "'"); 7465 } 7466 7467 // ëª¨ë¬ ì´ê¸°(ê°ì´ ììë) 7468 function openEventList(dateString, eventData, el) { 7469 var dayOfWeek = getDayOfWeek(dateString); 7470 7471 var match = []; 7472 for(var i=0; i < eventData.length; i++) { 7473 if(dateString == eventData[i].s_date) { 7474 match.push(eventData[i]); 7475 } 7476 } 7477 7478 var html = '', 7479 itemCount = 0; 7480 html += '\ 7481 <div class="modal-container">\ 7482 <div class="modal-header">\ 7483 <div class="modal-title">'+ dateString +' '+ dayOfWeek +'</div>\ 7484 <button class="modal-close">×</button>\ 7485 </div>\ 7486 <hr>\ 7487 <div class="modal-body">\ 7488 <ul class="scd_list">\ 7489 '; 7490 if(match.length == 1) { 7491 var stime = match[0].s_time.substring(0,5), 7492 etime = match[0].e_time.substring(0,5), 7493 fulltime = (match[0].fulltime == 'N') ? stime +' ~ '+ etime : ''; 7494 html += '<li data-index="" data-seq="" data-pid="" class="schedule_list _schedule_list">\ 7495 <div class="info">\ 7496 <span class="datetime">'+ dateString +'('+ dayOfWeek +') '+ fulltime +'</span>\ 7497 <input type="hidden" name="sid" class="sid" value="'+ match[0].sid +'">\ 7498 <input type="hidden" name="seq" class="seq" value="'+ match[0].seq +'">\ 7499 <input type="hidden" name="pid" class="pid" value="'+ match[0].pid +'">\ 7500 <input type="hidden" name="sdate" class="sdate" value="'+ match[0].s_date +'">\ 7501 <input type="hidden" name="stime" class="stime" value="'+ match[0].s_time +'">\ 7502 <input type="hidden" name="edate" class="edate" value="'+ match[0].e_date +'">\ 7503 <input type="hidden" name="etime" class="etime" value="'+ match[0].e_time +'">\ 7504 <input type="hidden" name="memo" class="memo" value="'+ htmlEscape(match[0].memo) +'">\ 7505 <input type="hidden" name="fulltime" class="fulltime" value="'+ match[0].fulltime +'">\ 7506 </div>\ 7507 <p class="txt">'+ htmlEscape(match[0].memo) +'</p>\ 7508 </li>'; 7509 itemCount = 1; 7510 } else if(match.length > 1) { 7511 for(var j=0; j < match.length; j++) { 7512 var stime = match[j].s_time.substring(0,5), 7513 etime = match[j].e_time.substring(0,5), 7514 fulltime = (match[j].fulltime == 'N') ? stime +' ~ '+ etime : ''; 7515 html += '<li data-index="" data-seq="" data-pid="" class="schedule_list _schedule_list">\ 7516 <div class="info">\ 7517 <span class="datetime">'+ dateString +'('+ dayOfWeek +') '+ fulltime +'</span>\ 7518 <input type="hidden" name="sid" class="sid" value="'+ match[j].sid +'">\ 7519 <input type="hidden" name="seq" class="seq" value="'+ match[j].seq +'">\ 7520 <input type="hidden" name="pid" class="pid" value="'+ match[j].pid +'">\ 7521 <input type="hidden" name="sdate" class="sdate" value="'+ match[j].s_date +'">\ 7522 <input type="hidden" name="stime" class="stime" value="'+ match[j].s_time +'">\ 7523 <input type="hidden" name="edate" class="edate" value="'+ match[j].e_date +'">\ 7524 <input type="hidden" name="etime" class="etime" value="'+ match[j].e_time +'">\ 7525 <input type="hidden" name="memo" class="memo" value="'+ htmlEscape(match[j].memo) +'">\ 7526 <input type="hidden" name="fulltime" class="fulltime" value="'+ match[j].fulltime +'">\ 7527 </div>\ 7528 <p class="txt">'+ htmlEscape(match[j].memo) +'</p>\ 7529 </li>'; 7530 itemCount++; 7531 } 7532 } 7533 html += '</ul></div>\ 7534 </div>\ 7535 '; 7536 if (itemCount <= 1) { 7537 $(el + ' #eventModalModify').addClass('few-items'); 7538 } else if (itemCount <= 3) { 7539 $(el + ' #eventModalModify').addClass('mid-items'); 7540 } else { 7541 $(el + ' #eventModalModify').addClass('many-items'); 7542 } 7543 $(el+' #eventModalModify').empty(); 7544 $(el+' #eventModalModify').html(html); 7545 $(el+' #eventModalModify').fadeIn(300); 7546 } 7547 7548 // ëª¨ë¬ ë«ê¸° í¨ì 7549 function closeEventModal() { 7550 $('.modal-schedule').fadeOut(300); 7551 selectedDate = null; 7552 currentEventId = null; 7553 } 7554 7555 function formatDate(date) { 7556 const year = date.getFullYear();
7557 const month = String(date.getMonth() + 1).padStart(2, '0'); 7558 const day = String(date.getDate()).padStart(2, '0'); 7559 return `${year}-${month}-${day}`; 7560 } 7561 7562 function getDayOfWeek(dateString) { 7563 const days = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼']; 7564 const date = new Date(dateString); // 문ìì´ì Date ê°ì²´ë¡ ë³í 7565 return days[date.getDay()]; // 0(ì¼) ~ 6(í )ì í´ë¹íë ìì¼ ë°í 7566 } 7567 7568 function createDayElement(date, dateString, isOtherMonth, pid) { 7569 if (!$.cl_calendar.instances[pid]) { 7570 // console.error(`draw called but instance for pid=${pid} is not initialized yet`); 7571 return; 7572 } 7573 var mode = $('.userEL'+pid).attr('data-type2'); 7574 const day = date.getDate(); 7575 const dayOfWeek = date.getDay(); 7576 const isToday = date.toDateString() === new Date().toDateString(); // ìì ììë 3ì 18ì¼ì´ ì¤ë 7577 let className = 'day_wrap _day_wrap'; 7578 if (dayOfWeek === 0) className += ' sunday'; 7579 if (dayOfWeek === 6) className += ' saturday'; 7580 if (isOtherMonth) className += ' other-month'; 7581 if (isToday) className += ' today'; 7582 7583 const today_class = (isToday) ? 'today' : ''; 7584 const today_themebg = (isToday && mode != 'mwd') ? 'theme_background' : ''; 7585 const today_themebd = (isToday) ? 'theme_border' : ''; 7586 7587 const dayElement = $('<div>', { 7588 class: className, 7589 'data-date': dateString 7590 }); 7591 7592 // ì¼ì íì 7593 const dayNumber = $('<span>', { 7594 class: `num _dateNum ${today_themebg}`, 7595 text: day 7596 }); 7597 7598 // ì¤ë íì 7599 if (isToday) { 7600 if(mode == 'mwd') dayNumber.html(`${day}`); 7601 else dayNumber.html(`<div class="today-indicator">${day}</div>`); 7602 } 7603 // console.log(today_class); 7604 dayElement.append(dayNumber); 7605 dayElement.find('._dateNum').wrap(`<a class="day_num ${today_class} ${today_themebd}"></a>`); 7606 // dayElement.find('.day_num').append('<span class="theme_border"></span>'); 7607 7608 var count = 0; 7609 const events = $.cl_calendar.instances[pid].events; 7610 for (var i = 0; i < events.length; i ++) { 7611 if(dateString == events[i].s_date) { 7612 var time = '', 7613 settings = JSON.parse(events[i].settings || '{}'); 7614 if(events[i].fulltime == 'Y') time = 'ì¢ ì¼ì¼ì '; 7615 else time = events[i].s_time.substring(0, 5) + '-' + events[i].e_time.substring(0, 5); 7616 if(mode == 'mwd') { 7617 dayElement.find('.day_num').append('<div class="event-item" data-seq="'+ events[i].seq +'" style="background-color:'+ settings.color+';">'+ settings.title +'</div>'); 7618 } else { 7619 dayElement.find('.day_num').append('<div class="event">'+ time +'</div>'); 7620 dayElement.find('.day_num').append('<div class="event_memo">'+ events[i].memo +'</div>'); 7621 } 7622 count++; 7623 } 7624 } 7625 if(mode != 'mwd') { 7626 7627 if(count == 1) { 7628 dayElement.find('.day_num').append('<div class="event_mobile">'+ count +'</div>'); 7629 } else if(count > 1) { 7630 dayElement.find('.day_num .event').remove(); 7631 dayElement.find('.day_num .event_memo').remove(); 7632 dayElement.find('.day_num').append('<div class="event more">ì¼ì '+ count +'</div>'); 7633 dayElement.find('.day_num').append('<div class="event_mobile">' + count +'</div>'); 7634 } 7635 } 7636 7637 return dayElement; 7638 } 7639 7640 function showCalendarModalView(pid, data, fromList) { 7641 var locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 7642 $(".calendar-modal-overlay").remove(); 7643 7644 var isGoogle = !!(data.extendedProps && data.extendedProps.isGoogle); 7645 let fulltime = data.extendedProps.fulltime; 7646 if (isGoogle && (fulltime === undefined || fulltime === '' || fulltime === null)) { 7647 // extendedPropsì ìì¼ë©´ event ê°ì²´ì allDayë¡ ë¤ì ë³´ì 7648 fulltime = data.allDay ? 'Y' : 'N'; 7649 } 7650 7651 let timeShow = '', startShow = '', endShow = '', rawStart = '', rawEnd = ''; 7652 if (data.allDay) { 7653 if (data.extendedProps.fulltime === 'Y') { // ì¢ ì¼ ë²ì 7654 rawStart = data.extendedProps.start_date; // "YYYY-MM-DD" 7655 rawEnd = data.extendedProps.end_date; // "YYYY-MM-DD" 7656 timeShow = formatRangeLocalized(rawStart, rawEnd, locale, { allDay: true }); 7657 startShow = formatDateLocalized(rawStart, locale); 7658 endShow = formatDateLocalized(rawEnd, locale); 7659 } else { // ì°ì ì¼ì (ìê° í¬í¨) 7660 rawStart = `${data.extendedProps.start_date} ${data.extendedProps.s_time}`; 7661 rawEnd = `${data.extendedProps.end_date} ${data.extendedProps.e_time}`; 7662 timeShow = formatRangeLocalized(rawStart, rawEnd, locale); 7663 startShow = formatDateLocalized(rawStart, locale); 7664 endShow = formatDateLocalized(rawEnd, locale); 7665 } 7666 } else { // í루 ì¼ì (ìê° ì§ì ) 7667 rawStart = `${data.extendedProps.start_date} ${data.extendedProps.s_time}`; 7668 rawEnd = `${data.extendedProps.end_date} ${data.extendedProps.e_time}`; 7669 timeShow = formatRangeLocalized(rawStart, rawEnd, locale); 7670 startShow = formatDateLocalized(rawStart, locale); 7671 endShow = formatDateLocalized(rawEnd, locale); 7672 } 7673 7674 const displayStartText = formatDateLocalized(rawStart, locale, 1); 7675 const displayEndText = formatDateLocalized(rawEnd, locale, 1); 7676 7677 let backButtonHtml = fromList ? `<button class="back-button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M14.35 17.29 7.06 10l7.29-7.29-.7-.71-8 8 .7.71 7.3 7.29.7-.71z"/></svg></button>` : ``; 7678 let modalHeaderClass = fromList ? '' : 'no-back'; 7679 var footerButtonsHtml = '', 7680 textTitle = ''; 7681 if (!isGoogle) { 7682 footerButtonsHtml = `
7683 <button class="modal-delete">${$.lang[locale]['config.delete']}</button> 7684 <button class="go-modify">${$.lang[locale]['config.modify']}</button> 7685 `; 7686 textTitle = data._def.title; 7687 } else { 7688 textTitle = (data._def.title == 'undefined') ? (locale == 'ko') ? '(ì 목 ìì)' : '(No title)' : data._def.title; 7689 } 7690 7691 let modalHtml = ` 7692 <div class="calendar-modal-overlay" style="display:none;"> 7693 <div class="calendar-modal-container view"> 7694 <div class="calendar-modal-header"> 7695 ${backButtonHtml} 7696 <button class="modal-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M17.85 17.15 10.7 10l7.15-7.15c.2-.19.2-.51.01-.71-.19-.2-.51-.2-.71-.01l-.01.01-7.15 7.15-7.14-7.14a.504.504 0 0 0-.71.01c-.19.19-.19.5 0 .69L9.29 10l-7.15 7.15c-.2.19-.2.51-.01.71.19.2.51.2.71.01l.01-.01L10 10.71l7.15 7.15c.19.2.51.2.71.01.2-.19.2-.51.01-.71l-.01-.01Z"/></svg></button> 7697 </div> 7698 <div class="calendar-modal-body"> 7699 <input type="hidden" class="pid" value="${pid}"> 7700 <input type="hidden" class="seq" value="${data.extendedProps.seq}"> 7701 <input type="hidden" id='sale-start-datetime' value=""> 7702 <div class="col-box"> 7703 <input type="text" class="scheduleColorPicker" data-color="${data.backgroundColor}" style="background-color: ${data.backgroundColor}" readonly> 7704 <span class="modal-title">${textTitle}</span> 7705 </div> 7706 <div class="date-box"> 7707 <label><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M14 9.5h-3.5V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v5c0 .28.22.5.5.5h4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5Z" style="fill:#cool-grey ;"/><path d="M10 2c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8Zm0 15c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7c0 3.86-3.14 7-7 7Z" style="fill:#cool-grey ;"/></svg></label> 7708 <div class="modal-field sdate"> 7709 <span class="daytime daytime-html start stimepicker" data-raw="${rawStart}" readonly>${displayStartText}</span> 7710 </div> 7711 <span class="middle"> ~ </span> 7712 <div class="modal-field edate"> 7713 <span class="daytime daytime-html end etimepicker" data-raw="${rawEnd}" readonly>${displayEndText}</span> 7714 </div> 7715 </div> 7716 <div class="modal-field content"> 7717 <label><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M2 5h16v1H2z"/><path d="M2 9h16v1H2z"/><path d="M2 13h8v1H2z"/><path d="M50 9.5h-3.5V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v5c0 .28.22.5.5.5h4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5"/><path d="M46 3c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.14-7-7 3.14-7 7-7m0-1c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8Z"/></svg></label> 7718 <span>${nl2br(data.extendedProps.memo) || ' '}</span> 7719 </div> 7720 </div>`; 7721 if(property.UMEMBER.check_adm || property.UMEMBER.check_uadm) { 7722 modalHtml += ` 7723 <div class="calendar-modal-footer"> 7724 ${footerButtonsHtml} 7725 </div>`; 7726 } 7727 modalHtml += ` 7728 </div> 7729 <div class="calendar-modal-container mobile"> 7730 <div class="calendar-modal-header ${modalHeaderClass}"> 7731 ${fromList ? `<button class="back-button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="m17.35 2.71-.7-.71-9.3 9.29-.7.71 10 10 .7-.71L8.06 12l9.29-9.29z"/></svg></button>` : ``} 7732 <div class="text-right">`; 7733 if(property.UMEMBER.check_adm || property.UMEMBER.check_uadm) { 7734 if(!isGoogle) { 7735 modalHtml += `<button class="mod go-modify"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="m21.27 2.95-.21-.21c-.47-.47-1.1-.73-1.77-.73-.66 0-1.3.26-1.77.73L3.25 17 2 22l5-1.25L21.27 6.48c.98-.98.98-2.56 0-3.53ZM6.43 19.75l-2.91.73.73-2.91L15.56 6.26l2.18 2.18-11.3 11.3ZM20.48 5.7l-2.04 2.04-2.18-2.18 2.04-2.04c.26-.26.61-.41.98-.41s.72.15.98.41l.21.21c.54.54.54 1.42 0 1.96Z"/></svg></button> 7736 <button class="del modal-delete"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M16.17 4.5V2H7.83v2.5h-5v1.25H4.5v12.92C4.5 20.51 5.99 22 7.83 22h8.33c1.84 0 3.33-1.49 3.33-3.33V5.75h1.67V4.5h-5ZM9.08 3.25h5.83V4.5H9.08V3.25Zm9.17 15.42c0 1.15-.93 2.08-2.08 2.08H7.83c-1.15 0-2.08-.93-2.08-2.08V5.75h12.5v12.92Z" class="st0"/><path d="M9.08 8.67h1.25v9.17H9.08zM13.67 8.67h1.25v9.17h-1.25z"/></svg></button> 7737 `; 7738 } 7739 } 7740 modalHtml += `<button class="modal-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
7740<path d="M21 3.71 20.29 3 12 11.29 3.71 3 3 3.71 11.29 12 3 20.29l.71.71L12 12.71 20.29 21l.71-.71L12.71 12 21 3.71z"/></svg></button> 7741 </div> 7742 </div> 7743 <div class="calendar-modal-body"> 7744 <input type="hidden" class="pid" value="${pid}"> 7745 <input type="hidden" class="seq" value="${data.extendedProps.seq}"> 7746 <div class="title"> 7747 <div class="title-left ${(property.UMEMBER.check_adm || property.UMEMBER.check_uadm) ? '' : 'notadm'}"> 7748 <input type="text" class="scheduleColorPicker" data-color="${data.backgroundColor}" style="background-color: ${data.backgroundColor}" readonly> 7749 <span class="modal-title">${textTitle}</span> 7750 </div> 7751 </div> 7752 <div class="modal-field mdate"> 7753 <label><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M14 9.5h-3.5V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v5c0 .28.22.5.5.5h4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5Z" style="fill:#cool-grey ;"/><path d="M10 2c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8Zm0 15c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7c0 3.86-3.14 7-7 7Z" style="fill:#cool-grey ;"/></svg></label> 7754 <div class="date-box"> 7755 <div class="modal-field sdate"> 7756 <span class="daytime daytime-html start stimepicker" data-raw="${rawStart}" readonly>${displayStartText}</span> 7757 </div> 7758 <span class="middle"> ~ </span> 7759 <div class="modal-field edate"> 7760 <span class="daytime daytime-html end etimepicker" data-raw="${rawEnd}" readonly>${displayEndText}</span> 7761 </div> 7762 </div> 7763 </div> 7764 <div class="modal-field mcontent"> 7765 <label><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M2 5h16v1H2z"/><path d="M2 9h16v1H2z"/><path d="M2 13h8v1H2z"/><path d="M50 9.5h-3.5V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v5c0 .28.22.5.5.5h4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5"/><path d="M46 3c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.14-7-7 3.14-7 7-7m0-1c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8Z"/></svg></label> 7766 <span>${nl2br(data.extendedProps.memo) || ' '}</span> 7767 </div> 7768 </div> 7769 </div> 7770 </div>`; 7771 7772 const $modalWrapper = $('.userEL' + pid).find(".calendarModal"); 7773 $modalWrapper.append(modalHtml); 7774 calendarOverlayIn(pid); 7775 $modalWrapper.find(".calendar-modal-overlay").fadeIn(200); 7776 7777 if (fromList) { 7778 $modalWrapper.off('click', '.back-button').on('click', '.back-button', function () { 7779 $(".calendar-modal-overlay").remove(); 7780 if (lastEventsList) { 7781 openMoreEventsModal(pid, lastEventsList, lastEventsWeekday); 7782 } 7783 }); 7784 } 7785 } 7786 7787 function parseToDate(str) { 7788 if (!str) return new Date(); 7789 if (str.includes('T')) return new Date(str); 7790 const [d, t] = str.trim().split(' '); 7791 const [yy, mm, dd] = d.split('-').map(Number); 7792 if (!t) return new Date(yy, mm - 1, dd, 0, 0); 7793 const [HH, MM] = t.split(':').map(Number); 7794 return new Date(yy, mm - 1, dd, HH, MM); 7795 } 7796 7797 function formatDateLocalized(rawStr, locale, isInput) { 7798 isInput = (isInput == undefined || isInput == '') ? false : true; 7799 const dt = parseToDate(rawStr); 7800 const year = dt.getFullYear();
7801 const month = String(dt.getMonth() + 1).padStart(2, '0'); 7802 const day = String(dt.getDate()).padStart(2, '0'); 7803 const koDays = ['ì¼','ì','í','ì','목','ê¸','í ']; 7804 const enDays = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 7805 const weekday = (locale === 'en') ? enDays[dt.getDay()] : koDays[dt.getDay()]; 7806 const hasTime = String(rawStr).includes(':') || String(rawStr).includes('T'); 7807 7808 const dateStr = (locale === 'en') 7809 ? `${month}.${day}.${year}` 7810 : `${year}.${month}.${day}`; 7811 7812 if (!hasTime) return `${dateStr} (${weekday})`; 7813 7814 let H = dt.getHours(); 7815 const mm = String(dt.getMinutes()).padStart(2, '0'); 7816 let h12 = H % 12; if (h12 === 0) h12 = 12; 7817 7818 if (locale === 'en') { 7819 const ampm = (H < 12) ? 'AM' : 'PM'; 7820 if(isInput) return `${weekday} ${dateStr} <span class='tt'>${h12}:${mm} ${ampm}</span>`; 7821 else return `${weekday} ${dateStr} ${h12}:${mm} ${ampm}`; 7822 } else { 7823 const ampm = (H < 12) ? 'ì¤ì ' : 'ì¤í'; 7824 if(isInput) return `${dateStr} (${weekday}) <span class='tt'>${ampm} ${h12}:${mm}</span>`; 7825 else return `${dateStr} (${weekday}) ${ampm} ${h12}:${mm}`; 7826 } 7827 } 7828 7829 function formatTimeOnly(rawStr, locale) { 7830 const dt = parseToDate(rawStr); 7831 let H = dt.getHours(); 7832 const mm = String(dt.getMinutes()).padStart(2, '0'); 7833 let h12 = H % 12; if (h12 === 0) h12 = 12; 7834 7835 if (locale === 'en') { 7836 const ampm = (H < 12) ? 'AM' : 'PM'; 7837 return `${h12}:${mm} ${ampm}`; 7838 } else { 7839 const ampm = (H < 12) ? 'ì¤ì ' : 'ì¤í'; 7840 return `${ampm} ${h12}:${mm}`; 7841 } 7842 } 7843 7844 // ë²ì í¬ë§·: ê°ì ë ì´ë©´ "ì¼ìª½=ì ì²´, ì¤ë¥¸ìª½=ìê°ë§", ë¤ë¥¸ ë ì´ë©´ ì쪽 모ë ì ì²´ 7845 function formatRangeLocalized(startRaw, endRaw, locale, {allDay=false} = {}) { 7846 const s = parseToDate(startRaw); 7847 const e = parseToDate(endRaw); 7848 7849 const sameDay = (s.getFullYear() === e.getFullYear() && 7850 s.getMonth() === e.getMonth() && 7851 s.getDate() === e.getDate()); 7852 7853 if (allDay) { 7854 // ì¢ ì¼ ë²ì: ë ì§ë§ 7855 const left = formatDateLocalized(startRaw.split(' ')[0], locale); 7856 const right = formatDateLocalized(endRaw.split(' ')[0], locale); 7857 return `${left} ~ ${right}`; 7858 } 7859 7860 if (sameDay) { 7861 const left = formatDateLocalized(startRaw, locale); 7862 const right = formatTimeOnly(endRaw, locale); 7863 return `${left} ~ ${right}`; 7864 } else { 7865 const left = formatDateLocalized(startRaw, locale); 7866 const right = formatDateLocalized(endRaw, locale); 7867 return `${left} ~ ${right}`; 7868 } 7869 } 7870 7871 function swallowNextTapOnce(ttl = 400){ 7872 const stop = (e) => { 7873 e.preventDefault(); 7874 e.stopPropagation(); 7875 e.stopImmediatePropagation && e.stopImmediatePropagation(); 7876 cleanup(); 7877 }; 7878 const cleanup = () => { 7879 document.removeEventListener('click', stop, true); 7880 document.removeEventListener('pointerup', stop, true); 7881 document.removeEventListener('touchend', stop, true); 7882 }; 7883 document.addEventListener('click', stop, true); 7884 document.addEventListener('pointerup', stop, true); 7885 document.addEventListener('touchend', stop, true); 7886 setTimeout(cleanup, ttl); 7887 } 7888 7889 function showCalendarModalEdit(pid, mode, date, data) { 7890 // console.log('edit'); 7891 swallowNextTapOnce(); 7892 var locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 7893 var data = (typeof data != 'undefined') ? data : ''; 7894 7895 $(".calendar-modal-overlay").remove(); 7896 7897 if(mode == 0) { 7898 // console.log(date); 7899 var startDate = '', 7900 endDate = '', 7901 checked = ''; 7902 startDate = date[0]; 7903 endDate = date[1]; 7904 checked = (date[2] == 1) ? 'checked' : ''; 7905 7906 const displayStart = formatDateLocalized(startDate, locale); 7907 const displayEnd = formatDateLocalized(endDate, locale); 7908 const displayStartText = formatDateLocalized(startDate, locale, 1); 7909 const displayEndText = formatDateLocalized(endDate, locale, 1); 7910 7911 var modalHtml = ` 7912 <div class="calendar-modal-overlay" style="display:none;"> 7913 <div class="calendar-modal-container"> 7914 <div class="calendar-modal-header"> 7915 <div class="cfull-box"> 7916 <div class="col-box"><input type="text" class="scheduleColorPicker" data-color="#fcbf54" style="background-color: #fcbf54;" readonly></div> 7917 <div class="ccol-box"> 7918 <input type="text" data-color="#ff6f61" class="scheduleColor sc1" readonly> 7919 <input type="text" data-color="#f63824" class="scheduleColor sc2" readonly> 7920 <input type="text" data-color="#ee6c3b" class="scheduleColor sc3" readonly> 7921 <input type="text" data-color="#fcbf54" class="scheduleColor sc4" readonly> 7922 <input type="text" data-color="#14c285" class="scheduleColor sc5" readonly>
7923 <input type="text" data-color="#1d9f54" class="scheduleColor sc6" readonly><br> 7924 <input type="text" data-color="#3498db" class="scheduleColor sc7" readonly> 7925 <input type="text" data-color="#022b79" class="scheduleColor sc8" readonly> 7926 <input type="text" data-color="#9b59b6" class="scheduleColor sc9" readonly> 7927 <input type="text" data-color="#e91e63" class="scheduleColor sc10" readonly> 7928 <input type="text" data-color="#566573" class="scheduleColor sc11" readonly> 7929 <input type="text" data-color="#95a5a6" class="scheduleColor sc12" readonly> 7930 </div> 7931 </div> 7932 <span class="modal-title"><input type="text" class="ctitle" value="" placeholder="${$.lang[locale]['config.calendar.title.placeholder']}" maxlength="200"></span> 7933 <button class="modal-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M21 3.71 20.29 3 12 11.29 3.71 3 3 3.71 11.29 12 3 20.29l.71.71L12 12.71 20.29 21l.71-.71L12.71 12 21 3.71z"/></svg></button> 7934 </div> 7935 <div class="calendar-modal-body"> 7936 <input type="hidden" class="pass" value="Y"> 7937 <input type="hidden" id='sale-start-datetime' value=""> 7938 <div class="modal-field all"> 7939 <label><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M14 9.5h-3.5V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v5c0 .28.22.5.5.5h4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5Z" style="fill:#cool-grey ;"/><path d="M10 2c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8Zm0 15c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7c0 3.86-3.14 7-7 7Z" style="fill:#cool-grey ;"/></svg></label> 7940 <label for="all-day">${$.lang[locale]['config.calendar.fulltime']}</label> 7941 <span class="bc-tp-btn switch-wrap"> 7942 <label class="switch prop-wrap"> 7943 <input type="checkbox" class="switch-input all-day" id="all-day" data-el="${selectEL}" ${checked}> 7944 <span class="switch-label" data-on="On" data-off="Off"></span> 7945 <span class="switch-handle"></span> 7946 </label> 7947 </span> 7948 </div> 7949 <div class="date-box"> 7950 <div class="modal-field sdate"> 7951 <label> </label> 7952 <input class="daytime start" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" value="${displayStart}" data-raw="${startDate}" readonly> 7953 <span class="daytime daytime-html start stimepicker" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" data-raw="${startDate}" readonly>${displayStartText}</span> 7954 </div> 7955 <span class="middle"> ~ </span> 7956 <div class="modal-field edate"> 7957 <input class="daytime end" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" value="${displayEnd}" data-raw="${endDate}" readonly> 7958 <span class="daytime daytime-html end etimepicker" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" data-raw="${endDate}" readonly>${displayEndText}</span> 7959 </div> 7960 </div> 7961 <div class="modal-field content"> 7962 <label><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M2 5h16v1H2z"/><path d="M2 9h16v1H2z"/><path d="M2 13h8v1H2z"/><path d="M50 9.5h-3.5V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v5c0 .28.22.5.5.5h4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5"/><path d="M46 3c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.14-7-7 3.14-7 7-7m0-1c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8Z"/></svg></label> 7963 <textarea placeholder="${$.lang[locale]['config.calendar.content.placeholder']}"></textarea> 7964 </div> 7965 </div> 7966 <div class="calendar-modal-footer"> 7967 <button class="modal-save">${$.lang[locale]['config.save']}</button> 7968 </div> 7969 </div> 7970 </div>`; 7971 7972 } else { 7973 var startDate, endDate; 7974 if(data.extendedProps.fulltime == 'Y') { 7975 startDate = data.extendedProps.start_date; 7976 endDate = data.extendedProps.end_date; 7977 } else { 7978 startDate = data.extendedProps.start_date + ' ' + data.extendedProps.s_time, 7979 endDate = data.extendedProps.end_date + ' ' + data.extendedProps.e_time; 7980 } 7981 7982 const displayStart = formatDateLocalized(startDate, locale); 7983 const displayEnd = formatDateLocalized(endDate, locale); 7984 const displayStartText = formatDateLocalized(startDate, locale, 1); 7985 const displayEndText = formatDateLocalized(endDate, locale, 1); 7986 7987 var modalHtml = ` 7988 <div class="calendar-modal-overlay" style="display:none;"> 7989 <div class="calendar-modal-container"> 7990 <div class="calendar-modal-header"> 7991 <button class="back-button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
7991<path d="m17.35 2.71-.7-.71-9.3 9.29-.7.71 10 10 .7-.71L8.06 12l9.29-9.29z"/></svg></button> 7992 <button class="modal-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M21 3.71 20.29 3 12 11.29 3.71 3 3 3.71 11.29 12 3 20.29l.71.71L12 12.71 20.29 21l.71-.71L12.71 12 21 3.71z"/></svg></button> 7993 </div> 7994 <div class="calendar-modal-body"> 7995 <input type="hidden" class="pass" value="Y"> 7996 <input type="hidden" class="seq" value="${data.extendedProps.seq}"> 7997 <input type="hidden" id='sale-start-datetime' value=""> 7998 <div class="title-modify"> 7999 <div class="cfull-box"> 8000 <div class="col-box"><input type="text" class="scheduleColorPicker" data-color="${data.backgroundColor}" style="background-color:${data.backgroundColor};" readonly></div> 8001 <div class="ccol-box"> 8002 <input type="text" data-color="#ff6f61" class="scheduleColor sc1" readonly> 8003 <input type="text" data-color="#f63824" class="scheduleColor sc2" readonly> 8004 <input type="text" data-color="#ee6c3b" class="scheduleColor sc3" readonly> 8005 <input type="text" data-color="#fcbf54" class="scheduleColor sc4" readonly> 8006 <input type="text" data-color="#14c285" class="scheduleColor sc5" readonly> 8007 <input type="text" data-color="#1d9f54" class="scheduleColor sc6" readonly><br> 8008 <input type="text" data-color="#3498db" class="scheduleColor sc7" readonly> 8009 <input type="text" data-color="#022b79" class="scheduleColor sc8" readonly> 8010 <input type="text" data-color="#9b59b6" class="scheduleColor sc9" readonly> 8011 <input type="text" data-color="#e91e63" class="scheduleColor sc10" readonly> 8012 <input type="text" data-color="#566573" class="scheduleColor sc11" readonly> 8013 <input type="text" data-color="#95a5a6" class="scheduleColor sc12" readonly> 8014 </div> 8015 </div> 8016 <span class="modal-title"><input type="text" class="ctitle" value="${data._def.title}" placeholder="${$.lang[locale]['config.calendar.title.placeholder']}" maxlength="200"></span> 8017 </div> 8018 <div class="modal-field all"> 8019 <label><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M14 9.5h-3.5V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v5c0 .28.22.5.5.5h4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5Z" style="fill:#cool-grey ;"/><path d="M10 2c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8Zm0 15c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7c0 3.86-3.14 7-7 7Z" style="fill:#cool-grey ;"/></svg></label> 8020 <label for="all-day">${$.lang[locale]['config.calendar.fulltime']}</label> 8021 <span class="bc-tp-btn switch-wrap"> 8022 <label class="switch prop-wrap"> 8023 <input type="checkbox" class="switch-input all-day" id="all-day" data-el="${selectEL}" ${(data.extendedProps.fulltime == 'Y') ? 'checked' : ''}> 8024 <span class="switch-label" data-on="On" data-off="Off"></span> 8025 <span class="switch-handle"></span> 8026 </label> 8027 </span> 8028 </div> 8029 <div class="date-box"> 8030 <div class="modal-field sdate"> 8031 <label> </label> 8032 <input class="daytime start" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" value="${displayStart}" data-raw="${startDate}" readonly> 8033 <span class="daytime daytime-html start stimepicker" placeholder="${$.lang[locale]['config.calendar.datetime']}" data-raw="${startDate}" readonly>${displayStartText}</span> 8034 </div> 8035 <span class="middle"> ~ </span> 8036 <div class="modal-field edate"> 8037 <input class="daytime end" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" value="${displayEnd}" data-raw="${endDate}" readonly> 8038 <span class="daytime daytime-html end etimepicker" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" data-raw="${endDate}" readonly>${displayEndText}</span> 8039 </div> 8040 </div> 8041 <div class="modal-field content"> 8042 <label><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M2 5h16v1H2z"/><path d="M2 9h16v1H2z"/><path d="M2 13h8v1H2z"/><path d="M50 9.5h-3.5V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v5c0 .28.22.5.5.5h4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5"/><path d="M46 3c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.14-7-7 3.14-7 7-7m0-1c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8Z"/></svg></label> 8043 <textarea placeholder="${$.lang[locale]['config.calendar.content.placeholder']}">${data.extendedProps.memo}</textarea> 8044 </div> 8045 </div> 8046 <div class="calendar-modal-footer"> 8047 <button class="modal-modify">${$.lang[locale]['config.save']}</button> 8048 </div> 8049 </div> 8050 </div>`; 8051 } 8052 8053 $('.userEL'+pid).find(".calendarModal").append(modalHtml); 8054 calendarOverlayIn(pid); 8055 $('.userEL'+pid).find(".calendar-modal-overlay").fadeIn(200); 8056 $('.userEL'+pid).find('.ctitle').focus(); 8057 refitAll(); 8058 } 8059 8060 function formatTime(time, locale) { 8061 let [hour, minute] = time.split(':').map(Number); 8062 8063 let period = hour < 12 ? $.lang[locale]['config.calendar.am'] : $.lang[locale]['config.calendar.pm']; 8064 let hour12 = hour % 12 || 12; 8065 let minuteText = minute.toString().padStart(2, '0'); 8066 8067 return `${period} ${hour12}:${minuteText}`; 8068 } 8069 8070 function toDateStr(d) { 8071 if (!d) return '';
8072 const y = d.getFullYear(); 8073 const m = String(d.getMonth() + 1).padStart(2, '0'); 8074 const day = String(d.getDate()).padStart(2, '0'); 8075 return `${y}-${m}-${day}`; 8076 } 8077 8078 function fmtHMFromDate(d, locale) { 8079 if (!d) return ''; 8080 const hour = d.getHours(); 8081 const minute = String(d.getMinutes()).padStart(2,'0'); 8082 if (locale === 'ko') { 8083 const period = hour < 12 ? $.lang[locale]['config.calendar.am'] : $.lang[locale]['config.calendar.pm']; 8084 const hour12 = hour % 12 || 12; 8085 return `${period} ${hour12}:${minute}`; 8086 } 8087 return new Intl.DateTimeFormat(locale, { hour: 'numeric', minute: '2-digit' }).format(d); 8088 } 8089 8090 function openMoreEventsModal(pid, events, weekday) { 8091 var locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 8092 if (!Array.isArray(events)) { 8093 events = [events]; 8094 } 8095 8096 lastEventsList = events; 8097 lastEventsWeekday = weekday; 8098 const dayNum = weekday[0].getDate(); 8099 8100 const filteredEvents = events.filter(ev => !(ev.classNames && ev.classNames.includes('holiday-event'))); 8101 8102 const sorted = filteredEvents.slice().sort((a, b) => { 8103 const isMulti = (ev) => { 8104 const sd = ev.extendedProps?.start_date; 8105 const ed = ev.extendedProps?.end_date; 8106 if (sd && ed && sd !== ed) return true; 8107 if (ev.allDay && ev.start && ev.end) return (ev.end - ev.start) >= 86400000; 8108 return false; 8109 }; 8110 8111 const am = isMulti(a), bm = isMulti(b); 8112 if (am !== bm) return am ? -1 : 1; 8113 8114 const as = a.start ? a.start.getTime() : 0; 8115 const bs = b.start ? b.start.getTime() : 0; 8116 if (as !== bs) return as - bs; 8117 8118 const ae = a.end ? a.end.getTime() : Number.POSITIVE_INFINITY; 8119 const be = b.end ? b.end.getTime() : Number.POSITIVE_INFINITY; 8120 if (ae !== be) return ae - be; 8121 8122 return (a.title || '').localeCompare(b.title || ''); 8123 }); 8124 8125 const googleColorRaw = (googleColor && googleColor.get(pid)) || ''; 8126 const googleColorHex = googleColorRaw ? (googleColorRaw.startsWith('#') ? googleColorRaw : ('#' + googleColorRaw)) : ''; 8127 8128 $(".calendar-modal-overlay").remove(); 8129 let modalHtml = ` 8130 <div class="calendar-modal-overlay" style="display:none;"> 8131 <div class="calendar-modal-container"> 8132 <div class="calendar-modal-header"> 8133 <h4>${dayNum} <span>${weekday[1]}</span></h4> 8134 <button class="modal-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M17.85 17.15 10.7 10l7.15-7.15c.2-.19.2-.51.01-.71-.19-.2-.51-.2-.71-.01l-.01.01-7.15 7.15-7.14-7.14a.504.504 0 0 0-.71.01c-.19.19-.19.5 0 .69L9.29 10l-7.15 7.15c-.2.19-.2.51-.01.71.19.2.51.2.71.01l.01-.01L10 10.71l7.15 7.15c.19.2.51.2.71.01.2-.19.2-.51.01-.71l-.01-.01Z"/></svg></button> 8135 </div> 8136 <div class="calendar-modal-body"> 8137 <input type="hidden" id='sale-start-datetime' value=""> 8138 <div class="schedule-list"> 8139 <ul> 8140 `; 8141 8142 for (let i = 0; i < sorted.length; i++) { 8143 var ev = sorted[i]; 8144 const locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 8145 8146 let sdate = ev.extendedProps?.start_date || ''; 8147 let edate = ev.extendedProps?.end_date || ''; 8148 let fulltimeFlag = ev.extendedProps?.fulltime; // 'Y' ëë 'N' 기ë 8149 8150 const isAllDay = (fulltimeFlag === 'Y') || (!!ev.allDay); 8151 8152 if (!sdate && ev.start) sdate = toDateStr(ev.start); 8153 8154 if (!edate) { 8155 if (ev.end) { 8156 if (isAllDay) { 8157 const d = new Date(ev.end); 8158 d.setDate(d.getDate() - 1); 8159 edate = toDateStr(d); 8160 } else { 8161 edate = toDateStr(ev.end); 8162 } 8163 } else { 8164 edate = sdate; // ëì´ ìì¼ë©´ ììê³¼ ëì¼ 8165 } 8166 } 8167 8168 let schedule_time = ''; 8169 if (sdate !== edate) { 8170 if (isAllDay) { 8171 schedule_time = `${sdate.slice(5)} ~ ${edate.slice(5)}`; 8172 } else { 8173 schedule_time = `${sdate.slice(5)} ${fmtHMFromDate(ev.start, locale)} ~ ${edate.slice(5)} ${fmtHMFromDate(ev.end, locale)}`; 8174 } 8175 } else { 8176 schedule_time = isAllDay ? '' : `${fmtHMFromDate(ev.start, locale)} ~ ${fmtHMFromDate(ev.end, locale)}`; 8177 } 8178 8179 const isFullLabel = isAllDay ? $.lang[locale]['config.calendar.fulltime'] : fmtHMFromDate(ev.start, locale); 8180 const isGoogle = !!ev.extendedProps?.isGoogle; 8181 const noTitleText = (locale === 'ko') ? '(ì 목 ìì)' : '(No title)';
8182 const rawTitle = (typeof ev.title === 'string' && ev.title) || (ev._def && typeof ev._def.title === 'string' && ev._def.title) || (ev.extendedProps && typeof ev.extendedProps.summary === 'string' && ev.extendedProps.summary) || ''; 8183 const titleSafe = rawTitle.trim() !== 'undefined' ? rawTitle : noTitleText; 8184 const bgColor = (() => { 8185 const own = ev.backgroundColor || ev.borderColor || ''; 8186 if (isGoogle) { 8187 return own || googleColorHex || '#4789e7'; 8188 } 8189 return own || '#4789e7'; 8190 })(); 8191 8192 modalHtml += ` 8193 <li class="schedule-view" data-index="${i}"> 8194 <div class="left-wrap"> 8195 <input type="text" class="scheduleColorPicker color2" 8196 data-color="${bgColor}" 8197 style="background-color:${bgColor}" readonly> 8198 <span>${isFullLabel}</span> 8199 </div> 8200 <div class="right-wrap"> 8201 <div class="schedule-title">${titleSafe} ${isGoogle ? '' : ''}</div> 8202 <div class="schedule-time">${schedule_time}</div> 8203 </div> 8204 </li> 8205 `; 8206 } 8207 8208 modalHtml += ` 8209 </ul> 8210 </div> 8211 </div>`; 8212 if (property.UMEMBER.check_adm || property.UMEMBER.check_uadm) { 8213 modalHtml += `<div class="schedule-plus-box"> 8214 <button class="schedule-plus pc">${$.lang[locale]['config.calendar.schedule-plus']}</button> 8215 <button class="schedule-plus mobile"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M18 9h-7V2H9v7H2v2h7v7h2v-7h7V9z"/></svg></button> 8216 </div>`; 8217 } 8218 modalHtml += `</div></div>`; 8219 8220 const $modalWrapper = $('.userEL' + pid).find(".calendarModal"); 8221 $modalWrapper.append(modalHtml); 8222 calendarOverlayIn(pid); 8223 $modalWrapper.find(".calendar-modal-overlay").fadeIn(200); 8224 8225 $modalWrapper.off('click', '.schedule-view').on('click', '.schedule-view', function () { 8226 const index = $(this).data('index'); 8227 const eventData = sorted[index]; 8228 currentEvent = eventData; 8229 8230 showCalendarModalView(pid, eventData, true); 8231 }); 8232 8233 $modalWrapper.off('click', '.schedule-plus').on('click', '.schedule-plus', function () { 8234 const year = weekday[0].getFullYear();
8235 const month = String(weekday[0].getMonth() + 1).padStart(2, '0'); 8236 const day = String(weekday[0].getDate()).padStart(2, '0'); 8237 var startDate = `${year}-${month}-${day} 12:00`; 8238 var endDate = `${year}-${month}-${day} 13:00`; 8239 var date = [startDate, endDate]; 8240 showCalendarModalEdit(pid, 0, date); 8241 }); 8242 } 8243 8244 // function openMoreEventsModal(pid, events, weekday) { 8245 // var locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 8246 // if (!Array.isArray(events)) { 8247 // events = [events]; 8248 // } 8249 8250 // lastEventsList = events; 8251 // lastEventsWeekday = weekday; 8252 // const dayNum = weekday[0].getDate(); 8253 8254 // const filteredEvents = events.filter(ev => !(ev.classNames && ev.classNames.includes('holiday-event'))); 8255 8256 // const sorted = filteredEvents.slice().sort((a, b) => { 8257 // const isMulti = (ev) => { 8258 // const sd = ev.extendedProps?.start_date; 8259 // const ed = ev.extendedProps?.end_date; 8260 // if (sd && ed && sd !== ed) return true; 8261 // if (ev.allDay && ev.start && ev.end) return (ev.end - ev.start) >= 86400000; 8262 // return false; 8263 // }; 8264 8265 // const am = isMulti(a), bm = isMulti(b); 8266 // if (am !== bm) return am ? -1 : 1; 8267 8268 // const as = a.start ? a.start.getTime() : 0; 8269 // const bs = b.start ? b.start.getTime() : 0; 8270 // if (as !== bs) return as - bs; 8271 8272 // const ae = a.end ? a.end.getTime() : Number.POSITIVE_INFINITY; 8273 // const be = b.end ? b.end.getTime() : Number.POSITIVE_INFINITY; 8274 // if (ae !== be) return ae - be; 8275 8276 // return (a.title || '').localeCompare(b.title || ''); 8277 // }); 8278 8279 // $(".calendar-modal-overlay").remove(); 8280 // let modalHtml = ` 8281 // <div class="calendar-modal-overlay" style="display:none;"> 8282 // <div class="calendar-modal-container"> 8283 // <div class="calendar-modal-header"> 8284 // <h4>${dayNum} <span>${weekday[1]}</span></h4> 8285 // <button class="modal-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M17.85 17.15 10.7 10l7.15-7.15c.2-.19.2-.51.01-.71-.19-.2-.51-.2-.71-.01l-.01.01-7.15 7.15-7.14-7.14a.504.504 0 0 0-.71.01c-.19.19-.19.5 0 .69L9.29 10l-7.15 7.15c-.2.19-.2.51-.01.71.19.2.51.2.71.01l.01-.01L10 10.71l7.15 7.15c.19.2.51.2.71.01.2-.19.2-.51.01-.71l-.01-.01Z"/></svg></button> 8286 // </div> 8287 // <div class="calendar-modal-body"> 8288 // <input type="hidden" id='sale-start-datetime' value=""> 8289 // <div class="schedule-list"> 8290 // <ul> 8291 // `; 8292 8293 // for (let i = 0; i < sorted.length; i++) { 8294 // var ev = sorted[i], 8295 // sdate = ev.extendedProps.start_date, 8296 // edate = ev.extendedProps.end_date, 8297 // schedule_time = ''; 8298 // if(sdate != edate) { 8299 // schedule_time = sdate.split('-')[1] + '.' + sdate.split('-')[2] + ' ' + formatTime(ev.extendedProps.s_time, locale) +' ~ ' + edate.split('-')[1] + '.' + edate.split('-')[2] + ' ' + formatTime(ev.extendedProps.e_time, locale); 8300 // } else { 8301 // schedule_time = (ev.extendedProps.fulltime == 'Y') ? '' : `${formatTime(ev.extendedProps.s_time, locale)} ~ ${formatTime(ev.extendedProps.e_time, locale)}`; 8302 // } 8303 // const isFull = (ev.extendedProps.fulltime == 'Y') ? $.lang[locale]['config.calendar.fulltime'] : formatTime(ev.extendedProps.s_time, locale); 8304 8305 // modalHtml += ` 8306 // <li class="schedule-view" data-index="${i}"> 8307 // <div class="left-wrap"> 8308 // <input type="text" class="scheduleColorPicker color2" 8309 // data-color="${ev.backgroundColor}" 8310 // style="background-color: ${ev.backgroundColor}" readonly> 8311 // <span>${isFull}</span> 8312 // </div> 8313 // <div class="right-wrap"> 8314 // <div class="schedule-title">${ev._def.title}</div> 8315 // <div class="schedule-time"> 8316 // ${schedule_time} 8317 // </div> 8318 // </div> 8319 // </li> 8320 // `; 8321 // } 8322 8323 // modalHtml += ` 8324 // </ul> 8325 // </div> 8326 // </div>`; 8327 // if (property.UMEMBER.check_adm || property.UMEMBER.check_uadm) { 8328 // modalHtml += `<div class="schedule-plus-box"> 8329 // <button class="schedule-plus pc">${$.lang[locale]['config.calendar.schedule-plus']}</button> 8330 // <button class="schedule-plus mobile"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20"><path d="M18 9h-7V2H9v7H2v2h7v7h2v-7h7V9z"/></svg></button> 8331 // </div>`; 8332 // } 8333 // modalHtml += `</div></div>`; 8334 8335 // const $modalWrapper = $('.userEL' + pid).find(".calendarModal"); 8336 // $modalWrapper.append(modalHtml);
8337 // calendarOverlayIn(pid); 8338 // $modalWrapper.find(".calendar-modal-overlay").fadeIn(200); 8339 8340 // $modalWrapper.off('click', '.schedule-view').on('click', '.schedule-view', function () { 8341 // const index = $(this).data('index'); 8342 // const eventData = sorted[index]; 8343 // currentEvent = eventData; 8344 8345 // showCalendarModalView(pid, eventData, true); 8346 // }); 8347 8348 // $modalWrapper.off('click', '.schedule-plus').on('click', '.schedule-plus', function () { 8349 // const year = weekday[0].getFullYear(); 8350 // const month = String(weekday[0].getMonth() + 1).padStart(2, '0'); 8351 // const day = String(weekday[0].getDate()).padStart(2, '0'); 8352 // var startDate = `${year}-${month}-${day} 12:00`; 8353 // var endDate = `${year}-${month}-${day} 13:00`; 8354 // var date = [startDate, endDate]; 8355 // showCalendarModalEdit(pid, 0, date); 8356 // }); 8357 // } 8358 8359 function buildFcEvents(events) { 8360 function addDaysStr(ymd, days) { 8361 // ymdê° ìê±°ë ì´ìíë©´ ì¤ëì 기ì¤ì¼ë¡ ë³´ì 8362 if (!ymd || typeof ymd !== 'string' || ymd.length < 8) { 8363 const t = new Date(); 8364 t.setDate(t.getDate() + (days || 0)); 8365 const yy = t.getFullYear(); 8366 const mm = String(t.getMonth() + 1).padStart(2, '0'); 8367 const dd = String(t.getDate()).padStart(2, '0'); 8368 return `${yy}-${mm}-${dd}`; 8369 } 8370 const [y, m, d] = ymd.split('-').map(Number); 8371 const dt = new Date((y || new Date().getFullYear()), (m ? m - 1 : 0), (d || 1)); 8372 dt.setDate(dt.getDate() + (days || 0)); 8373 const yy = dt.getFullYear(); 8374 const mm = String(dt.getMonth() + 1).padStart(2, '0'); 8375 const dd = String(dt.getDate()).padStart(2, '0'); 8376 return `${yy}-${mm}-${dd}`; 8377 } 8378 8379 // íì©: "9:05", "23:45", "23:45:00" (ìë¤ ê³µë°± íì©) 8380 const TIME_RX = /^\s*\d{1,2}:\d{2}(?::\d{2})?\s*$/; 8381 const toHM = (t) => { 8382 if (!t || typeof t !== 'string') return '00:00'; 8383 const parts = t.trim().split(':'); // ["HH","mm"] ëë ["HH","mm","ss"] 8384 const Hn = parseInt(parts[0], 10); 8385 const Mn = parseInt(parts[1] ?? '0', 10); 8386 const HH = isFinite(Hn) ? String(Hn).padStart(2, '0') : '00'; 8387 const MM = isFinite(Mn) ? String(Mn).padStart(2, '0') : '00'; 8388 return `${HH}:${MM}`; 8389 }; 8390 8391 const mapped = (events || []).map(e => { 8392 let settings = {}; 8393 try { settings = JSON.parse(e?.settings || '{}'); } catch {} 8394 8395 const isHoliday = e?.seq && String(e.seq).startsWith('holiday_'); 8396 8397 // ë ì§ íë³´: s_date/e_date â start/end â ì¤ë 8398 let sDate = (e?.s_date || '').slice(0, 10); 8399 let eDate = (e?.e_date || '').slice(0, 10); 8400 8401 if (!sDate && typeof e?.start === 'string') sDate = e.start.slice(0, 10); 8402 if (!eDate && typeof e?.end === 'string') eDate = e.end.slice(0, 10); 8403 if (!sDate) { 8404 const t = new Date(); 8405 sDate = `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, '0')}-${String(t.getDate()).padStart(2, '0')}`; 8406 } 8407 if (!eDate) eDate = sDate; 8408 8409 // ìê° ì ê·í 8410 const sHasTime = TIME_RX.test(e?.s_time || ''); 8411 const eHasTime = TIME_RX.test(e?.e_time || ''); 8412 const sTime = sHasTime ? toHM(e.s_time) : '00:00'; 8413 const eTime = eHasTime ? toHM(e.e_time) : (sHasTime ? toHM(e.s_time) : '00:00'); 8414 8415 // fulltime íëê·¸ 8416 const fullTFlag = (e?.fulltime === 'Y'); 8417 8418 // ìê°ì´ ë ë¤ ìì¼ë©´ 무조건 timed, ìëë©´ fullTFlag/ë ì§ ë²ìë¡ all-day 8419 const isTimed = (sHasTime && eHasTime) && !fullTFlag; 8420 const fullT = !isTimed && (fullTFlag || sDate < eDate); 8421 8422 // ââ ê³µí´ì¼(ë°°ê²½) 8423 if (isHoliday) { 8424 const endPlus1 = addDaysStr(eDate, 1); 8425 return { 8426 id: `holiday_${sDate}_${settings.title || e.title}`, 8427 title: e?.title || settings.title || '', 8428 start: `${sDate}T00:00`, 8429 end: `${endPlus1}T00:00`, 8430 allDay: true, 8431 display: 'background', 8432 classNames: ['holiday-event'], 8433 start_date: sDate, 8434 end_date: eDate, 8435 }; 8436 } 8437 8438 let startISO, endISO, allDayFlag; 8439 8440 if (isTimed) { 8441 allDayFlag = false; 8442 startISO = `${sDate}T${sTime}`; 8443 endISO = `${eDate}T${eTime}`; 8444 8445 // Invalid Date ë°©ì§: ì í¨íì§ ìì¼ë©´ ë³´ì 8446 let s = new Date(startISO); 8447 let t = new Date(endISO); 8448 if (isNaN(s.getTime())) s = new Date(`${sDate}T00:00`); 8449 if (isNaN(t.getTime())) t = new Date(`${eDate}T${eTime || '00:00'}`); 8450 8451 // end < start â ëì¼ ìê°(0-duration) 8452 if (t.getTime() < s.getTime()) t = new Date(s.getTime()); 8453 8454 // ê°ì ë ì§ì¸ë° endê° ë¤ìë 00:00 ê²½ê³ë¡ ëì´ê°ë©´ 23:59ë¡ í´ë¨í 8455 const sameYMD = (a, b) => a.getFullYear()===b.getFullYear() && a.getMonth()===b.getMonth() && a.getDate()===b.getDate(); 8456 if (!sameYMD(s, t) && sDate === eDate && t.getHours() === 0 && t.getMinutes() === 0) { 8457 t = new Date(s); t.setHours(23, 59, 0, 0); 8458 } 8459 8460 // (ì í) 0-duration ë ë 꼬ì ë°©ì§ +1ë¶ 8461 if (t.getTime() === s.getTime()) t = new Date(t.getTime() + 60 * 1000); 8462 8463 // ISO ì¬ì¡°ë¦½ 8464 const yy = t.getFullYear(); 8465 const mm = String(t.getMonth() + 1).padStart(2, '0'); 8466 const dd = String(t.getDate()).padStart(2, '0'); 8467 const HH = String(t.getHours()).padStart(2, '0'); 8468 const MI = String(t.getMinutes()).padStart(2, '0'); 8469 endISO = `${yy}-${mm}-${dd}T${HH}:${MI}`; 8470 } else { 8471 // all-day: endë ìµì¤í´ë£¨ìë¸(+1ì¼) 8472 allDayFlag = true; 8473 startISO = `${sDate}T00:00`; 8474 const endPlus1 = addDaysStr(eDate, 1); 8475 endISO = `${endPlus1}T00:00`; 8476 } 8477 8478 const isMulti = (sDate && eDate && sDate !== eDate) || (allDayFlag && sDate !== eDate); 8479 8480 return { 8481 title: e?.title || settings.title || '', 8482 start: startISO, 8483 end: endISO, 8484 allDay: allDayFlag, 8485 color: settings.color || '#4789e7', 8486 multiOrder: isMulti ? 0 : 1, 8487 memo: e?.memo, 8488 pid: e?.pid, 8489 seq: e?.seq, 8490 s_time: e?.s_time, 8491 e_time: e?.e_time, 8492 start_date: sDate, 8493 end_date: eDate, 8494 fulltime: e?.fulltime, 8495 classNames: [] 8496 }; 8497 }); 8498 8499 // ì¸í°íì´ì¤ ì ì§ 8500 // console.log(calendarElsettings) 8501 let pid = null; 8502 8503 if (Array.isArray(events) && events.length > 0) { 8504 pid = events[0].pid || null; 8505 } 8506 8507 const calendarFlag = (pid && calendarElsettings.get(pid) === true); 8508 return calendarFlag ? mapped : mapped.filter(ev => ev.classNames.includes('holiday-event')); 8509 } 8510 8511 function getClickedDateStrAccurate(info) { 8512 const stack = (info.jsEvent && document.elementsFromPoint) 8513 ? document.elementsFromPoint(info.jsEvent.clientX, info.jsEvent.clientY) 8514 : []; 8515 8516 const cell = stack.find(el => el && el.getAttribute && el.getAttribute('data-date')); 8517 8518 if (cell) return cell.getAttribute('data-date'); 8519
8520 const byClosest = info.el.closest('.fc-daygrid-day[data-date], .fc-timegrid-col[data-date], [data-date]'); 8521 if (byClosest) return byClosest.getAttribute('data-date'); 8522 8523 return (info.event.startStr || '').split('T')[0]; 8524 } 8525 8526 function ymKey(d){ return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`; } 8527 8528 function ymAdd(ym, delta) { 8529 const [y, m] = ym.split('-').map(Number); 8530 const n = y * 12 + (m - 1) + delta; 8531 const yy = Math.floor(n / 12), mm = (n % 12) + 1; 8532 return `${yy}-${String(mm).padStart(2, '0')}`; 8533 } 8534 8535 function monthsBetweenInclusive(sYmd, eYmd) { 8536 const out = []; 8537 const [sy, sm] = sYmd.split('-').map(Number); 8538 const [ey, em] = eYmd.split('-').map(Number); 8539 let y = sy, m = sm; 8540 while (y < ey || (y === ey && m <= em)) { 8541 out.push(`${y}-${String(m).padStart(2, '0')}`); 8542 m++; 8543 if (m === 13) { m = 1; y++; } 8544 } 8545 return out; 8546 } 8547 8548 function invalidateAround(pid, ym) { // ym: 'YYYY-MM' 8549 const pidMap = monthCache.get(pid); 8550 if (!pidMap) return; 8551 8552 const [y, m] = ym.split('-').map(Number); 8553 const prev = new Date(y, m - 2, 1); 8554 const cur = new Date(y, m - 1, 1); 8555 const next = new Date(y, m, 1); 8556 8557 [prev, cur, next].forEach(d => { 8558 const key = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`; 8559 pidMap.delete(key); 8560 }); 8561 } 8562 8563 // ìë²ìì ë´ë ¤ì¨ 3ê°ìì¹ data를 ë¬ë³ë¡ ë¶ë°°í´ì ë³í© 8564 function upsertMonthCacheFromServer(pid, serverEvents) { 8565 if (!serverEvents) return; 8566 let pidMap = monthCache.get(pid); 8567 if (!pidMap) { 8568 pidMap = new Map(); 8569 monthCache.set(pid, pidMap); 8570 } 8571 8572 const mapped = buildFcEvents(serverEvents) || []; // â ëì¼ í¬ë§·ì¼ë¡ ë§ì¶¤ 8573 const bucket = new Map(); // key: 'YYYY-MM' -> ev[] 8574 for (const ev of mapped) { 8575 // ìì/ë ê³ì° (all-day ë° 00:00 ê²½ê³ ë³´ì ) 8576 const s0 = new Date(ev.start); 8577 const e0 = new Date(ev.end); 8578 const s = new Date(s0); 8579 const e = new Date(e0); 8580 8581 // ì¢ ì¼(Y) ëë endê° 00:00:00ì¸ ê²½ì° íìì© inclusive ë³´ì 8582 if (ev.fulltime === 'Y' || ev.allDay) { 8583 e.setDate(e.getDate() - 1); 8584 } else if (e0.getHours() === 0 && e0.getMinutes() === 0 && e0.getSeconds() === 0) { 8585 e.setMilliseconds(e.getMilliseconds() - 1); 8586 } 8587 8588 const cur = new Date(s.getFullYear(), s.getMonth(), 1); 8589 const last = new Date(e.getFullYear(), e.getMonth(), 1); 8590 while (cur <= last) { 8591 const key = ymKey(cur); 8592 if (!bucket.has(key)) bucket.set(key, []); 8593 bucket.get(key).push(ev); 8594 cur.setMonth(cur.getMonth() + 1); 8595 } 8596 } 8597 8598 for (const [key, arr] of bucket.entries()) { 8599 const prev = pidMap.get(key) || []; 8600 const seen = new Set(); 8601 const merged = []; 8602 for (const item of [...prev, ...arr]) { 8603 const k = `${item.id || item.seq || item.title}|${item.start}|${item.end}|${item.allDay ? 1 : 0}`; 8604 if (!seen.has(k)) { seen.add(k); merged.push(item); } 8605 } 8606 pidMap.set(key, merged); 8607 } 8608 } 8609 8610 function monthsAround(ym) { 8611 const [y, m] = ym.split('-').map(Number); 8612 const prev = new Date(y, m - 2, 1); 8613 const cur = new Date(y, m - 1, 1); 8614 const next = new Date(y, m, 1); 8615 return [prev, cur, next].map(d => `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`); 8616 } 8617 8618 // ì /ë¹/ë¤ì ë¬ ìºì 무í¨í
8619 function invalidateAround(pid, ym) { 8620 const pidMap = monthCache.get(pid); 8621 if (!pidMap) return; 8622 8623 const [y, m] = ym.split('-').map(Number); 8624 const prev = new Date(y, m - 2, 1); // ì ì 8625 const cur = new Date(y, m - 1, 1); // ë¹ì 8626 const next = new Date(y, m, 1); // ë¤ìì 8627 8628 [prev, cur, next].forEach(d => { 8629 const key = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`; 8630 pidMap.delete(key); 8631 }); 8632 } 8633 8634 function monthsInRange(start, end){ 8635 const arr = []; 8636 const d = new Date(start.getFullYear(), start.getMonth(), 1); 8637 while (d <= end) { arr.push(ymKey(d)); d.setMonth(d.getMonth()+1); } 8638 return arr; 8639 } 8640 8641 // ì¸ ë¬(ì ì/í´ë¹ì/ë¤ìì)ì í ë²ì ë°ì ìºìì ë¶ì° ì ì¥ 8642 function fetchMonth(pid, yearMonth, data_type) { 8643 let pidCache = monthCache.get(pid); 8644 let pidInflight = inflight.get(pid); 8645 if (!pidCache) { pidCache = new Map(); monthCache.set(pid, pidCache); } 8646 if (!pidInflight) { pidInflight = new Map(); inflight.set(pid, pidInflight); } 8647 8648 // ì´ë¯¸ ìºìëì´ ìì¼ë©´ ì¬ì¬ì© 8649 if (pidCache.has(yearMonth)) return Promise.resolve(pidCache.get(yearMonth)); 8650 // ëì¼ YMì ëí ì§íì¤ ìì²ì´ ìì¼ë©´ ê·¸ê²ì ê³µì 8651 if (pidInflight.has(yearMonth)) return pidInflight.get(yearMonth); 8652 8653 const prevYM = ymAdd(yearMonth, -1); 8654 const nextYM = ymAdd(yearMonth, +1); 8655 8656 // ð¹ ë³í© ì í¸ 8657 const dedupe = (list) => { 8658 const seen = new Set(); 8659 const out = []; 8660 for (const ev of list) { 8661 const k = `${ev.id || ev.seq || ev.title}|${ev.start}|${ev.end}|${ev.allDay ? 1 : 0}`; 8662 if (!seen.has(k)) { seen.add(k); out.push(ev); } 8663 } 8664 return out; 8665 }; 8666 const mergeSet = (cache, ym, arr) => { 8667 const prev = cache.get(ym) || []; 8668 const merged = dedupe(prev.concat(arr || [])); 8669 cache.set(ym, merged); 8670 }; 8671 8672 const p = new Promise((resolve, reject) => { 8673 $.ajax({ 8674 url: '/template/get_calendar', 8675 type: 'POST', 8676 dataType: 'json', 8677 data: { sid: b.SID, pid, yearMonth, data_type }, 8678 success: function(raw) { 8679 checkError(raw); 8680 // ìë² â FC ì´ë²¤í¸ë¡ ë³í 8681 const all = buildFcEvents(raw) || []; 8682 8683 // ð¹ ì ë²í·í 8684 const buckets = new Map(); 8685 const put = (ym, ev) => { 8686 if (!buckets.has(ym)) buckets.set(ym, []); 8687 buckets.get(ym).push(ev); 8688 }; 8689 8690 for (const ev of all) { 8691 const sStr = ev.start_date || (ev.start?.slice(0, 10)) || ''; 8692 let eStr = ev.end_date || ''; 8693 8694 if (!sStr) continue; 8695 8696 // end ë³´ì (ì¢ ì¼: exclusive â inclusive / 00:00 ê²½ê³ ë³´ì ) 8697 if (!eStr) { 8698 if (ev.allDay && ev.end) eStr = addDaysStr(ev.end.slice(0, 10), -1); 8699 else if (ev.end) eStr = ev.end.slice(0, 10); 8700 else eStr = sStr; 8701 } else { 8702 // ì í: ìë² end_dateê° 'YYYY-MM-DD' 00:00:00 ì미ë¼ë©´ í루 빼기 8703 // ë§ì½ ìë² end_dateê° ì´ë¯¸ inclusiveë¼ë©´ ì´ ë¸ë¡ì ì ê±°íì¸ì. 8704 // (íì¬ ë¡ì§ì allDayììë§ -1 ì²ë¦¬íë¯ë¡ ê·¸ëë¡ ëë ê² ìì ) 8705 } 8706 8707 // ð¹ s~e ì¬ì´ 모ë YM ë²í·ì í¸ì 8708 const sYM = sStr.slice(0, 7); 8709 const eYM = eStr.slice(0, 7); 8710 for (const ym of monthsBetweenInclusive(sYM, eYM)) { 8711 put(ym, ev); 8712 } 8713 } 8714 8715 // ð¹ set â mergeSet ë¡ ë³ê²½ (ë®ì´ì°ê¸° ê¸ì§) 8716 mergeSet(pidCache, prevYM, buckets.get(prevYM)); 8717 mergeSet(pidCache, yearMonth, buckets.get(yearMonth)); 8718 mergeSet(pidCache, nextYM, buckets.get(nextYM)); 8719 8720 // inflight í´ì (ìì² ê³µì íë 3ê°ì í¤ ëª¨ë ì ê±°) 8721 pidInflight.delete(prevYM); 8722 pidInflight.delete(yearMonth); 8723 pidInflight.delete(nextYM); 8724 8725 resolve(pidCache.get(yearMonth)); 8726 }, 8727 error: function(xhr, status, err) { 8728 pidInflight.delete(prevYM); 8729 pidInflight.delete(yearMonth); 8730 pidInflight.delete(nextYM); 8731 reject(err); 8732 } 8733 }); 8734 }); 8735 8736 // ëì¼ ìì² ê³µì (3ê°ì 모ë ê°ì Promise ê³µì ) 8737 pidInflight.set(prevYM, p); 8738 pidInflight.set(yearMonth, p); 8739 pidInflight.set(nextYM, p); 8740 8741 return p; 8742 } 8743 8744 function calendarShow(elsettings) { 8745 return ( 8746 property.UMEMBER.check_adm == true || 8747 property.UMEMBER.check_uadm == true || 8748 elsettings.read_chmod == 'all' || 8749 (elsettings.read_chmod == 'admin' && property.UMEMBER.check_adm == true) || 8750 (elsettings.read_chmod == 'admin' && property.UMEMBER.check_uadm == true) || 8751 (elsettings.read_chmod == 'member' && property.UMEMBER.check_login == true) 8752 ); 8753 } 8754 8755 // 주/ì¼ ìºë¦°ë ê³µí´ì¼ ì¶ê° 8756 function headerRoot(view) { 8757 if (view && view.calendar && view.calendar.el) return view.calendar.el; 8758 if (view && view.el) return view.el; 8759 return document; 8760 } 8761 function fmtDate(d) { 8762 const y = d.getFullYear();
8763 const m = String(d.getMonth() + 1).padStart(2, '0'); 8764 const dd = String(d.getDate()).padStart(2, '0'); 8765 return `${y}-${m}-${dd}`; 8766 } 8767 function stripTime(d) { 8768 if (!(d instanceof Date)) return null; 8769 return new Date(d.getFullYear(), d.getMonth(), d.getDate()); 8770 } 8771 function clearHolidayHeaderLabels(view) { 8772 const root = headerRoot(view); 8773 const header = root.querySelector('.fc-col-header'); 8774 if (!header) return; 8775 header.querySelectorAll('.holiday-label').forEach(n => n.remove()); 8776 header.querySelectorAll('.fc-col-header-cell-cushion.holiday-box') 8777 .forEach(el => el.classList.remove('holiday-box')); 8778 } 8779 function addHolidayHeaderLabel(view, dateStr, title) { 8780 const root = headerRoot(view); 8781 const header = root.querySelector('.fc-col-header'); 8782 if (!header) return; 8783 8784 const th = header.querySelector(`[data-date="${dateStr}"]`); 8785 if (!th) return; 8786 8787 const inner = th.querySelector('.fc-scrollgrid-sync-inner') || th; 8788 8789 const cushion = 8790 inner.querySelector('.fc-col-header-cell-cushion') || 8791 th.querySelector('.fc-col-header-cell-cushion') || 8792 inner; 8793 if (cushion && !cushion.classList.contains('holiday-box')) { 8794 cushion.classList.add('holiday-box'); 8795 } 8796 8797 const exists = Array.from(inner.querySelectorAll('.holiday-label')) 8798 .some(el => el.textContent === (title || '')); 8799 if (!exists) { 8800 const label = document.createElement('span'); 8801 label.className = 'holiday-label'; 8802 label.textContent = title || ''; 8803 inner.appendChild(label); 8804 } 8805 } 8806 function isHolidayEvent(ev) { 8807 const classes = ev.classNames || ev.extendedProps?.classNames || []; 8808 const hasHoliday = Array.isArray(classes) ? classes.includes('holiday-event') : (typeof classes === 'string' && classes.indexOf('holiday-event') > -1); 8809 return hasHoliday && ev.display === 'background'; 8810 } 8811 function rebuildHolidayHeaderLabels(calendar) { 8812 const view = calendar.view; 8813 const vt = view?.type; 8814 if (!(vt === 'timeGridWeek' || vt === 'timeGridDay')) { 8815 clearHolidayHeaderLabels(view); 8816 return; 8817 } 8818 8819 const visibleStart = stripTime(view.activeStart); 8820 const visibleEnd = stripTime(view.activeEnd); 8821 if (!visibleStart || !visibleEnd) return; 8822 8823 clearHolidayHeaderLabels(view); 8824 8825 const map = {}; 8826 8827 calendar.getEvents().forEach(ev => { 8828 if (!isHolidayEvent(ev)) return; 8829 8830 const evStart = stripTime(ev.start); 8831 if (!evStart) return; 8832 8833 let evEnd = stripTime(ev.end); 8834 if (!evEnd) { 8835 evEnd = new Date(evStart); 8836 evEnd.setDate(evEnd.getDate() + 1); 8837 } 8838 8839 const s = new Date(Math.max(evStart.getTime(), visibleStart.getTime())); 8840 const e = new Date(Math.min(evEnd.getTime(), visibleEnd.getTime())); 8841 if (s >= e) return; 8842 8843 for (let d = new Date(s); d < e; d.setDate(d.getDate() + 1)) { 8844 const dateStr = fmtDate(d); 8845 (map[dateStr] ||= new Set()).add(ev.title || ''); 8846 } 8847 }); 8848 8849 Object.entries(map).forEach(([dateStr, titles]) => {
8850 titles.forEach(title => addHolidayHeaderLabel(view, dateStr, title)); 8851 }); 8852 } 8853 function setupHolidayHeaderHooks(calendar) { 8854 let t; 8855 const refresh = () => { 8856 clearTimeout(t); 8857 t = setTimeout(() => requestAnimationFrame(() => { 8858 rebuildHolidayHeaderLabels(calendar); 8859 rebuildMonthHolidayBoxes(calendar); 8860 }), 30); 8861 }; 8862 8863 calendar.on('datesSet', refresh); 8864 calendar.on('eventAdd', refresh); 8865 calendar.on('eventChange',refresh); 8866 calendar.on('eventRemove',refresh); 8867 calendar.on('loading', (isLoading) => { if (!isLoading) refresh(); }); 8868 8869 requestAnimationFrame(refresh); 8870 } 8871 //ìê° ê³µí´ì¼ 8872 function clearMonthHolidayBoxes(view) { 8873 const root = headerRoot(view); 8874 if (!root) return; 8875 root.querySelectorAll('.fc-daygrid-day-top.holiday-box') 8876 .forEach(n => n.classList.remove('holiday-box')); 8877 } 8878 8879 function rebuildMonthHolidayBoxes(calendar) { 8880 const view = calendar.view; 8881 if (!view || !view.type.startsWith('dayGrid')) { 8882 clearMonthHolidayBoxes(view); 8883 return; 8884 } 8885 8886 const locale = calendar.getOption("locale"); 8887 if (locale != "ko") { 8888 clearMonthHolidayBoxes(view); 8889 return; 8890 } 8891 8892 const visibleStart = stripTime(view.activeStart); 8893 const visibleEnd = stripTime(view.activeEnd); 8894 if (!visibleStart || !visibleEnd) return; 8895 8896 clearMonthHolidayBoxes(view); 8897 8898 const hasHolidayMap = {}; 8899 calendar.getEvents().forEach(ev => { 8900 if (!isHolidayEvent(ev) || !ev.start) return; 8901 8902 const evStart = stripTime(ev.start); 8903 let evEnd = stripTime(ev.end); 8904 if (!evEnd) { evEnd = new Date(evStart); evEnd.setDate(evEnd.getDate() + 1); } 8905 8906 const s = new Date(Math.max(evStart.getTime(), visibleStart.getTime())); 8907 const e = new Date(Math.min(evEnd.getTime(), visibleEnd.getTime())); 8908 if (s >= e) return; 8909 8910 for (let d = new Date(s); d < e; d.setDate(d.getDate() + 1)) { 8911 hasHolidayMap[fmtDate(d)] = true; 8912 } 8913 }); 8914 8915 const root = headerRoot(view); 8916 root.querySelectorAll('.fc-daygrid-day').forEach(td => { 8917 const dateStr = td.getAttribute('data-date'); 8918 if (!dateStr) return; 8919 const top = td.querySelector('.fc-daygrid-day-top'); 8920 if (!top) return; 8921 if (hasHolidayMap[dateStr]) top.classList.add('holiday-box'); 8922 }); 8923 } 8924 8925 function fmt(dt) { 8926 const y = dt.getFullYear(); 8927 const m = String(dt.getMonth() + 1).padStart(2, '0'); 8928 const d = String(dt.getDate()).padStart(2, '0'); 8929 const hh = String(dt.getHours()).padStart(2, '0'); 8930 const mm = String(dt.getMinutes()).padStart(2, '0'); 8931 return `${y}-${m}-${d} ${hh}:${mm}`; 8932 } 8933 8934 function toYMDLocal(d) { 8935 if (!d) return ''; 8936 const yy = d.getFullYear(); 8937 const mm = String(d.getMonth() + 1).padStart(2, '0'); 8938 const dd = String(d.getDate()).padStart(2, '0'); 8939 return `${yy}-${mm}-${dd}`; 8940 } 8941 8942 8943 function initCalendar(pid, c, retryCount = 0) { 8944 var c = (typeof c != 'undefined') ? c : ''; 8945 // console.log(pid); 8946 const MAX_RETRIES = 5; 8947 var containerEl = document.querySelector('.userEL' + pid + ' .calendar-container'); 8948 var lang = document.querySelector('.calendar[data-id="' + pid + '"]').classList.contains('en'); 8949 8950 var language = 'ko'; 8951 if(lang) language = 'en'; 8952 else language = 'ko'; 8953 8954 if (!containerEl) { 8955 if (retryCount < MAX_RETRIES) { 8956 setTimeout(() => initCalendar(pid, c, retryCount + 1), 300); 8957 } else { 8958 console.warn('initCalendar: containerElì ì°¾ì ì ìì´ ì´ê¸°í를 ì¤ë¨í©ëë¤.'); 8959 } 8960 return; 8961 } 8962 8963 containerEl.innerHTML = ''; 8964 8965 var calendarEl = document.createElement('div'); 8966 calendarEl.id = 'fc-calendar-' + pid; 8967 containerEl.appendChild(calendarEl); 8968 8969 var instance = $.cl_calendar.instances[pid], 8970 maxEvent = parseInt(containerEl.getAttribute('data-view')), 8971 elsettings = '', 8972 view_mode = 'dayGridMonth'; // ê¸°ë³¸ê° 8973 8974 elsettings = JSON.parse(c.elsettings); 8975 if(elsettings.open_mwd == 'month') view_mode = 'dayGridMonth'; 8976 else if(elsettings.open_mwd == 'week') view_mode = 'timeGridWeek'; 8977 else if(elsettings.open_mwd == 'day') view_mode = 'timeGridDay'; 8978 8979 const color = elsettings.google_color ? elsettings.google_color.trim() : '#4789e7'; 8980 googleColor.set(pid, color); 8981 // console.log(`pid:${pid} => color:${color}`); 8982 8983 if(view_mode == 'timeGridWeek' && window.innerWidth < 768) { 8984 view_mode = 'dayGridMonth'; 8985 } 8986 8987 //구ê¸ìºë¦°ë ì°ë 8988 const googleShow = (calendarElsettings.get(pid) === true); 8989 const eventSources = [ 8990 function(fetchInfo, success, failure) { 8991 const data_type = ($('.userEL' + pid).attr('data-modoo-type')) || '';
8992 const keys = monthsInRange(fetchInfo.start, fetchInfo.end); // YYYY-MM ë°°ì´ 8993 8994 // ê° ìì fetchMonthë¡ ë³´ì¥(ìºìê° ìì¼ë©´ ë´ë¶ìì ì¤íµíê² êµ¬í) 8995 Promise.all( 8996 keys.map(k => fetchMonth(pid, k, data_type)) 8997 ) 8998 .then(() => { 8999 // ìºììì í´ë¹ ë²ìì ì´ë²¤í¸ ì ë¶ ëª¨ì¼ê¸° 9000 const pidCache = monthCache.get(pid) || new Map(); 9001 const all = []; 9002 keys.forEach(k => { 9003 const arr = pidCache.get(k); 9004 if (arr && arr.length) all.push(...arr); 9005 }); 9006 9007 const src = all; 9008 9009 const seen = new Set(); 9010 const uniq = []; 9011 for (const ev of src) { 9012 const key = `${ev.id || ev.seq || ev.title}|${ev.start}|${ev.end}|${ev.allDay ? 1 : 0}`; 9013 if (!seen.has(key)) { 9014 seen.add(key); 9015 uniq.push(ev); 9016 } 9017 } 9018 9019 success(uniq); 9020 }) 9021 .catch(failure); 9022 } 9023 ]; 9024 9025 // â 2ï¸â£ 조건문ì¼ë¡ êµ¬ê¸ ìºë¦°ë/ê³µí´ì¼ ìºë¦°ë를 ì¶ê° 9026 const userCalendarId = elsettings.google_id; // ì¬ì©ì ì ë ¥ ëë DBê° 9027 const google_color = elsettings.google_color; 9028 const holidayCalendarId = 'ko.south_korea#[email protected]'; 9029 const apiKey = elsettings.google_api; 9030 const googleSyncOn = String(elsettings.google_sync || '0') === '1'; 9031 9032 function fmtHHMM(date) { 9033 if (!date) return ''; 9034 const hh = String(date.getHours()).padStart(2, '0'); 9035 const mm = String(date.getMinutes()).padStart(2, '0'); 9036 return `${hh}:${mm}`; 9037 } 9038 9039 if (googleSyncOn && userCalendarId && userCalendarId.trim() !== '' && apiKey && googleShow) { 9040 eventSources.push({ 9041 // ð¹ gcal íë¬ê·¸ì¸ ëì ì§ì Google Calendar API í¸ì¶ 9042 events: function(fetchInfo, success, failure) { 9043 const params = new URLSearchParams({ 9044 key: apiKey, 9045 timeMin: fetchInfo.startStr, 9046 timeMax: fetchInfo.endStr, 9047 singleEvents: 'true', 9048 orderBy: 'startTime' 9049 }); 9050 9051 const url = `https://www.googleapis.com/calendar/v3/calendars/${ 9052 encodeURIComponent(userCalendarId) 9053 }/events?${params.toString()}`; 9054 9055 fetch(url) 9056 .then(res => { 9057 if (!res.ok) throw new Error('Google Calendar API error: ' + res.status); 9058 return res.json(); 9059 }) 9060 .then(data => { 9061 const items = data.items || []; 9062 const googleColorHex = google_color || '#4789e7'; 9063 9064 const fcEvents = items 9065 .filter(ev => ev.visibility !== 'private') // ë¹ê³µê°ë ìì ì ì¸ 9066 .map(ev => { 9067 const isAllDay = !!ev.start.date; 9068 const startStr = ev.start.dateTime || ev.start.date; 9069 const endStr = (ev.end && (ev.end.dateTime || ev.end.date)) || startStr; 9070 9071 const start = startStr ? new Date(startStr) : null; 9072 const end = endStr ? new Date(endStr) : null; 9073 9074 let start_date = '', 9075 end_date = '', 9076 s_time = '', 9077 e_time = '', 9078 fulltime = isAllDay ? 'Y' : 'N', 9079 memo = ''; 9080 9081 if (start) { 9082 start_date = fmtDate(start); 9083 9084 if (isAllDay) { 9085 if (end) { 9086 const d = new Date(end); 9087 d.setDate(d.getDate() - 1); 9088 end_date = fmtDate(d); 9089 } else { 9090 end_date = start_date; 9091 } 9092 s_time = ''; 9093 e_time = ''; 9094 } else { 9095 end_date = end ? fmtDate(end) : start_date; 9096 s_time = fmtHHMM(start); 9097 e_time = end ? fmtHHMM(end) : ''; 9098 } 9099 } 9100 9101 // ð¹ ì 목 ìë ì´ë²¤í¸ ì²ë¦¬ 9102 const hasTitle = ev.summary && ev.summary.trim().length > 0; 9103 const title = hasTitle ? ev.summary.trim() : (language == 'ko') ? '(ì 목 ìì)' : '(No title)'; 9104 9105 // description â memo 9106 memo = (ev.description && typeof ev.description === 'string') 9107 ? ev.description 9108 : ''; 9109 9110 const googleColorHex = google_color || '#4789e7'; 9111 9112 return { 9113 id: ev.id, 9114 title, // â ì¬ê¸°ì (ì 목 ìì)ê¹ì§ ì¸í 9115 start: startStr, 9116 end: endStr, 9117 allDay: isAllDay, 9118 backgroundColor: googleColorHex, 9119 borderColor: googleColorHex, 9120 extendedProps: { 9121 ...ev, 9122 isGoogle: true, 9123 start_date, 9124 end_date, 9125 s_time, 9126 e_time, 9127 fulltime, 9128 memo, 9129 backgroundColor: googleColorHex 9130 } 9131 }; 9132 }); 9133 9134 success(fcEvents); 9135 }) 9136 .catch(err => { 9137 console.error('Google Calendar fetch error', err); 9138 failure(err); 9139 }); 9140 }, 9141 9142 // ìë ìµì ë¤ì ê·¸ëë¡ ì ì§í´ë ë¨ 9143 color: google_color || '#4789e7', 9144 className: 'personal-events' 9145 }); 9146 } 9147 9148 var calendar = new FullCalendar.Calendar(calendarEl, { 9149 initialView: view_mode, 9150 eventSources: eventSources, 9151 locale: language, 9152 locales: [ 9153 { 9154 code: 'en', 9155 buttonText: { 9156 today: 'Today', 9157 month: 'Month', 9158 week: 'Week', 9159 day: 'Day', 9160 list: 'List', 9161 // ë·°ë³ë¡ ë 구체íë ê°ë¥ 9162 dayGridMonth: 'Month', 9163 timeGridWeek: 'Week', 9164 timeGridDay: 'Day', 9165 listWeek: 'List', 9166 } 9167 }, 9168 { 9169 code: 'ko', 9170 buttonText: { 9171 today: 'ì¤ë', 9172 month: 'ì', 9173 week: '주', 9174 day: 'ì¼', 9175 list: '목ë¡', 9176 dayGridMonth: 'ì', 9177 timeGridWeek: '주', 9178 timeGridDay: 'ì¼', 9179 listWeek: '목ë¡', 9180 } 9181 } 9182 ], 9183 selectable: true, 9184 fixedWeekCount: false, 9185 showNonCurrentDates: true, 9186 eventDisplay: 'block', 9187 contentHeight: 'auto', 9188 expandRows: true, 9189 headerToolbar: { 9190 left: 'dayGridMonth,timeGridWeek,timeGridDay', 9191 center: 'prev,title,next', 9192 right: 'today' 9193 }, 9194 nowIndicator: true, 9195 windowResize: function(arg) { 9196 const cal = arg.view.calendar; 9197 const isWeek = arg.view.type === 'timeGridWeek'; 9198 const w = window.innerWidth; 9199 9200 if (w <= 768 && isWeek) { 9201 cal.changeView('dayGridMonth'); 9202 } 9203 }, 9204 views: { 9205 dayGridMonth: { 9206 // dayMaxEventRows: maxEvent, 9207 dayMaxEvents: maxEvent, 9208 moreLinkDidMount: function(args) { args.el.removeAttribute('title'); }, 9209 moreLinkContent: function(args) { 9210 var locale = args.view.calendar.getOption("locale"); 9211 if (locale === "ko") { 9212 return { html: `+${args.num}ê°<span class="more"> ë보기</span>` }; 9213 } else { 9214 return { html: `+${args.num} <span class="more">more</span>` }; 9215 } 9216 }, 9217 moreLinkClick: function(info) { 9218 var locale = info.view.dateEnv.locale.codes[0]; 9219 info.jsEvent.preventDefault(); 9220 info.jsEvent.stopPropagation(); 9221 const dateObj = info.date; 9222 var weekdayStr = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼'][dateObj.getDay()]; 9223 if(locale == 'ko') weekdayStr = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼'][dateObj.getDay()]; 9224 else weekdayStr = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][dateObj.getDay()]; 9225 var weekday = [dateObj, weekdayStr]; 9226 const events = info.allSegs.map(seg => seg.event); 9227 9228 openMoreEventsModal(pid, events, weekday); 9229 9230 }, 9231 }, 9232 timeGridWeek: { 9233 slotEventOverlap: false, 9234 eventOverlap: false, 9235 eventMaxStack: 10, 9236 moreLinkContent() { return { html: '' } }, 9237 titleFormat: function(arg) { 9238 const start = new Date(arg.date.marker); 9239 const end = new Date(start); 9240 end.setDate(end.getDate() + 6); 9241 end.setHours(23, 59, 59, 999); 9242 9243 const now = new Date(); 9244 9245 const baseDate = (now >= start && now <= end) ? now : start; 9246 9247 const locale = (arg.localeCodes && arg.localeCodes[0]) || "en"; 9248 9249 if (locale === "ko") { 9250 const y = baseDate.getFullYear();
9251 const m = String(baseDate.getMonth() + 1).padStart(2, "0"); 9252 return `${y}ë ${m}ì`; 9253 } else { 9254 return new Intl.DateTimeFormat(locale, { 9255 month: "long", 9256 year: "numeric", 9257 }).format(baseDate); 9258 } 9259 }, 9260 dayHeaderContent: function(arg) { 9261 var d = arg.date?.marker || arg.date; 9262 var locale = arg.view.dateEnv.locale.codes[0]; 9263 if (locale == 'ko') { 9264 const dayNumber = d.getDate(); 9265 const weekDayKo = new Intl.DateTimeFormat('ko', { weekday: 'short' }).format(d); 9266 return { 9267 html: `<span class="round">${dayNumber}</span> ${weekDayKo}`, 9268 }; 9269 } else { 9270 const dayNumber = d.getDate(); 9271 const weekDayEn = new Intl.DateTimeFormat('en', { weekday: 'short' }).format(d); 9272 return { 9273 html: `<span class="round">${dayNumber}</span> ${weekDayEn}`, 9274 }; 9275 } 9276 } 9277 }, 9278 timeGridDay: { 9279 slotEventOverlap: false, 9280 eventOverlap: false, 9281 eventMaxStack: 10, 9282 moreLinkContent() { return { html: '' } }, 9283 titleFormat: { year: 'numeric', month: 'long' }, 9284 dayHeaderContent: function(arg) { 9285 const dateObj = arg.date; 9286 const dayNumber = dateObj.getDate(); 9287 9288 var locale = arg.view.dateEnv.locale.codes[0]; 9289 if (locale === "ko") { 9290 const weekNames = ["ì¼", "ì", "í", "ì", "목", "ê¸", "í "]; 9291 const weekDay = weekNames[dateObj.getDay()]; 9292 return { 9293 html: `<span class="round">${dayNumber}</span> ${weekDay}`, 9294 }; 9295 } else { 9296 const weekDay = new Intl.DateTimeFormat("en", { weekday: "short" }).format(dateObj); 9297 return { 9298 html: `<span class="round">${dayNumber}</span> ${weekDay}`, 9299 }; 9300 } 9301 } 9302 }, 9303 timeGrid: { 9304 allDayText: (!lang) ? 'íë£¨ì¢ ì¼' : 'All day' 9305 } 9306 }, 9307 // events: function(fetchInfo, success, failure) { 9308 // const data_type = ($('.userEL' + pid).attr('data-modoo-type')) || ''; 9309 // const keys = monthsInRange(fetchInfo.start, fetchInfo.end); // YYYY-MM ë°°ì´ 9310 9311 // // ê° ìì fetchMonthë¡ ë³´ì¥(ìºìê° ìì¼ë©´ ë´ë¶ìì ì¤íµíê² êµ¬í) 9312 // Promise.all( 9313 // keys.map(k =>
9313 fetchMonth(pid, k, data_type)) 9314 // ) 9315 // .then(() => { 9316 // // ìºììì í´ë¹ ë²ìì ì´ë²¤í¸ ì ë¶ ëª¨ì¼ê¸° 9317 // const pidCache = monthCache.get(pid) || new Map(); 9318 // const all = []; 9319 // keys.forEach(k => { 9320 // const arr = pidCache.get(k); 9321 // if (arr && arr.length) all.push(...arr); 9322 // }); 9323 9324 // const src = all; 9325 9326 // const seen = new Set(); 9327 // const uniq = []; 9328 // for (const ev of src) { 9329 // const key = `${ev.id || ev.seq || ev.title}|${ev.start}|${ev.end}|${ev.allDay ? 1 : 0}`; 9330 // if (!seen.has(key)) { 9331 // seen.add(key); 9332 // uniq.push(ev); 9333 // } 9334 // } 9335 9336 // success(uniq); 9337 // }) 9338 // .catch(failure); 9339 // }, 9340 eventOrder: ['multiOrder', 'start', 'duration', 'title'], 9341 // eventOrder: 'start', 9342 eventDidMount: function(info) { 9343 // êµ¬ê¸ ì´ë²¤í¸ë§ ì ë§ì¹ 9344 if (info.event.extendedProps?.isGoogle) { 9345 const col = (googleColor && googleColor.get(pid)) || ''; 9346 if (col) { 9347 info.el.style.backgroundColor = col; 9348 info.el.style.borderColor = col; 9349 9350 // ìê° ë·°ì ìì ì ìë ë°ì (dot 모ëì¼ ê²½ì°) 9351 const dot = info.el.querySelector('.fc-daygrid-event-dot'); 9352 if (dot) { 9353 dot.style.backgroundColor = col; 9354 dot.style.borderColor = col; 9355 } 9356 } 9357 } 9358 9359 if (info.event.display === 'background' && info.event.classNames.includes('holiday-event')) { 9360 const viewType = info.view.type; 9361 if (viewType === 'timeGridWeek' || viewType === 'timeGridDay') { 9362 const start = new Date(info.event.start); 9363 const end = new Date(info.event.end); 9364 for (let d = new Date(start); d < end; d.setDate(d.getDate() + 1)) { 9365 const y = d.getFullYear(); 9366 const m = String(d.getMonth() + 1).padStart(2, '0'); 9367 const day = String(d.getDate()).padStart(2, '0'); 9368 const dateStr = `${y}-${m}-${day}`; 9369 addHolidayHeaderLabel(info.view.el, dateStr, info.event.title || ''); 9370 } 9371 } 9372 9373 const cell = info.el.closest('.fc-daygrid-day'); 9374 if (cell) { 9375 const harnessCount = cell.querySelectorAll('.fc-daygrid-bg-harness').length; 9376 if (harnessCount > 1) { 9377 const labels = cell.querySelectorAll('.holiday-label'); 9378 labels.forEach((label, idx) => { label.classList.add(`multi_${idx + 1}`); }); 9379 } 9380 } 9381 } 9382 9383 if (info.event.extendedProps.seq) { 9384 info.el.setAttribute('data-seq', info.event.extendedProps.seq); 9385 } 9386 9387 const durationHours = (info.event.end - info.event.start) / (1000 * 60 * 60); 9388 if (durationHours > 1) { 9389 const afterDiv = document.createElement('div'); 9390 afterDiv.classList.add('event-overlay'); 9391 afterDiv.style.position = 'absolute'; 9392 afterDiv.style.top = '50px'; 9393 afterDiv.style.left = '0'; 9394 afterDiv.style.right = '0'; 9395 afterDiv.style.height = `calc(100% - 50px)`; 9396 // afterDiv.style.backgroundColor = '#4789e71a'; 9397 afterDiv.style.pointerEvents = 'none'; 9398 info.el.appendChild(afterDiv); 9399 } 9400 }, 9401 dateClick: function(info) { 9402 // console.log('dateClick'); 9403 9404 //íì¬ìê°ê¸°ì¤ 30ë¶ë¨ìë¡ ìììê° ì¤ì 9405 const STEP_MIN = 30; 9406 9407 function ceilToNextSlot(base, stepMin) { 9408 const d = new Date(base); 9409 d.setSeconds(0,0); 9410 let m = d.getMinutes(); 9411 const r = m % stepMin; 9412 if (r !== 0) m += (stepMin - r); 9413 else m += stepMin; 9414 if (m >= 60) { d.setHours(d.getHours()+1); m -= 60; } 9415 d.setMinutes(m); 9416 return d; 9417 } 9418 9419 const start = new Date(info.date); 9420 let time; 9421 9422 if (info.view.type === 'dayGridMonth') { 9423 const next = ceilToNextSlot(new Date(), STEP_MIN); 9424 const s = new Date( 9425 start.getFullYear(), start.getMonth(), start.getDate(), 9426 next.getHours(), next.getMinutes(), 0, 0 9427 ); 9428 const e = new Date(s); e.setHours(e.getHours() + 1); 9429 time = [fmt(s), fmt(e), 0]; 9430 } else { 9431 const s = new Date(info.start); 9432 const e = new Date(info.start); e.setMinutes(e.getMinutes() + 30); 9433 const isAllDay = (info.startStr.includes('T')) ? 0 : 1; 9434 time = isAllDay ? [info.startStr, info.startStr, 1] : [fmt(s), fmt(e), 0]; 9435 } 9436 if(isMobile() && (property.UMEMBER.check_adm || property.UMEMBER.check_uadm)) showCalendarModalEdit(pid, 0, time); 9437 }, 9438 select: function(info) { 9439 // console.log('select'); 9440 9441 //íì¬ìê°ê¸°ì¤ 30ë¶ë¨ìë¡ ìììê° ì¤ì 9442 const STEP_MIN = 30; 9443 9444 function ceilToNextSlot(base, stepMin) { 9445 const d = new Date(base); 9446 d.setSeconds(0,0); 9447 let m = d.getMinutes(); 9448 const r = m % stepMin; 9449 if (r !== 0) m += (stepMin - r); 9450 else m += stepMin; 9451 if (m >= 60) { d.setHours(d.getHours()+1); m -= 60; } 9452 d.setMinutes(m); 9453 return d; 9454 } 9455 9456 const start = new Date(info.start); 9457 let time; 9458 9459 if (info.view.type === 'dayGridMonth') { 9460 const next = ceilToNextSlot(new Date(), STEP_MIN); 9461 const s = new Date( 9462 start.getFullYear(), start.getMonth(), start.getDate(), 9463 next.getHours(), next.getMinutes(), 0, 0 9464 ); 9465 const e = new Date(s); e.setHours(e.getHours() + 1); 9466 time = [fmt(s), fmt(e), 0]; 9467 } else { 9468 const s = new Date(info.start); 9469 const e = new Date(info.start); e.setMinutes(e.getMinutes() + 30); 9470 const isAllDay = (info.startStr.includes('T')) ? 0 : 1; 9471 time = isAllDay ? [info.startStr, info.startStr, 1] : [fmt(s), fmt(e), 0]; 9472 } 9473 if(!isMobile() && property.UMEMBER.check_adm || property.UMEMBER.check_uadm) showCalendarModalEdit(pid, 0, time); 9474 }, 9475 eventClick: function(info) { 9476 info.jsEvent.preventDefault(); 9477 info.jsEvent.stopPropagation(); 9478 var locale = info.view.dateEnv.locale.codes[0]; 9479 const clickedDateStr = getClickedDateStrAccurate(info); 9480 const clickedDate = new Date(clickedDateStr); 9481 var weekdayStr = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼'][clickedDate.getDay()]; 9482 if(locale == 'ko') weekdayStr = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼'][clickedDate.getDay()]; 9483 else weekdayStr = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][clickedDate.getDay()]; 9484 const weekday = [clickedDate, weekdayStr]; 9485 9486 const calendar = info.view.calendar; 9487 const allEvents = calendar.getEvents(); 9488 9489 const eventsOnSameDay = allEvents.filter(ev => { 9490 9491 const isGoogle = !!ev.extendedProps?.isGoogle; 9492 9493 if (isGoogle) { 9494 // ---- êµ¬ê¸ ì´ë²¤í¸ ì ì© ë ì§ ê³ì° (ë¡ì»¬ 기ì¤) ---- 9495 const s = ev.start ? new Date(ev.start) : null; 9496 let e = ev.end ? new Date(ev.end) : null; 9497 9498 if (!s) return false;
9499 9500 // end ìì¼ë©´ startì ê°ì ë ë¡ ì·¨ê¸ 9501 if (!e) e = new Date(s); 9502 9503 // allDay ì¸ ê²½ì°, FullCalendarë end를 "exclusive"ë¡ ì°ë¯ë¡ ë§ì§ë§ ë = end - 1ì¼ 9504 if (ev.allDay && ev.end) { 9505 e.setDate(e.getDate() - 1); 9506 } 9507 9508 const startStr = toYMDLocal(s); // â ë¡ì»¬ ë ì§ 9509 const endStr = toYMDLocal(e); // â ë¡ì»¬ ë ì§ 9510 9511 return (clickedDateStr >= startStr && clickedDateStr <= endStr); 9512 } 9513 9514 // ---- 기존(ë´ë¶) ì´ë²¤í¸ ë¡ì§ ê·¸ëë¡ ì ì§, ë ì§ ê³ì°ë§ toYMDLocalë¡ ì 리 ---- 9515 const startStrBase = (ev.extendedProps.start_date || ev.startStr || '').split('T')[0]; 9516 9517 let startStr = startStrBase; 9518 if (!startStr && ev.start) { 9519 startStr = toYMDLocal(ev.start); // ìì ì¥ì¹ 9520 } 9521 9522 let endInclStr; 9523 if (ev.extendedProps.end_date) { 9524 endInclStr = ev.extendedProps.end_date; 9525 } else if (ev.allDay) { 9526 if (ev.end) { 9527 const dayDiff = Math.ceil((ev.end - ev.start) / 86400000); 9528 if (dayDiff >= 2) { 9529 const d = new Date(ev.end); 9530 d.setDate(d.getDate() - 1); 9531 endInclStr = toYMDLocal(d); // â ì¬ê¸°ìë toISOString ëì ë¡ì»¬ 9532 } else { 9533 endInclStr = startStr; 9534 } 9535 } else { 9536 endInclStr = startStr; 9537 } 9538 } else if (ev.end) { 9539 // timed ì´ë²¤í¸ë endStrë ë¡ì»¬ 기ì¤ì¼ë¡ 9540 endInclStr = toYMDLocal(ev.end); 9541 } else { 9542 endInclStr = startStr; 9543 } 9544 9545 return clickedDateStr >= startStr && clickedDateStr <= endInclStr; 9546 }); 9547 9548 openMoreEventsModal(pid, eventsOnSameDay, weekday); 9549 }, 9550 eventContent: function(arg) { 9551 var locale = arg.view.dateEnv.locale.codes[0]; 9552 const noTitleText = (locale === 'ko') ? '(ì 목 ìì)' : '(No title)'; 9553 9554 if (arg.event.classNames.includes('holiday-event')) { 9555 if (locale === 'ko') { 9556 const titleText = (arg.event.title && arg.event.title.trim() !== '') ? arg.event.title : noTitleText; 9557 return { html: `<div class="holiday-label">${titleText}</div>` }; 9558 } else { 9559 return { html: '' }; 9560 } 9561 } 9562 9563 const cal = arg.view.calendar; 9564 let timeText = ''; 9565 9566 if (!arg.event.allDay) { 9567 const start = arg.event.start; 9568 const end = arg.event.end; 9569 const fmtOpts = { 9570 hour: 'numeric', 9571 minute: '2-digit', 9572 meridiem: 'short', 9573 hour12: true 9574 }; 9575 9576 if (end && end.getTime() !== (start?.getTime() ?? 0)) { 9577 timeText = cal.formatRange(start, end, fmtOpts); 9578 } else if (start) { 9579 timeText = cal.formatDate(start, fmtOpts); 9580 } 9581 } 9582 9583 const rawTitle = (typeof arg.event.title === 'string') ? arg.event.title : ''; 9584 const titleText = rawTitle.trim() !== 'undefined' ? rawTitle : noTitleText; 9585 9586 return { 9587 html: ` 9588 <div class="fc-event-custom"> 9589 <div class="fc-event-title">${titleText}</div> 9590 ${timeText ? `<div class="fc-event-time">${timeText}</div>` : ''} 9591 </div> 9592 ` 9593 }; 9594 }, 9595 dayCellContent: function(arg) { return arg.date.getDate(); }, 9596 dayCellDidMount: function(arg) { 9597 // const dayEvents = arg.view.calendar.getEvents().filter(event => { 9598 // return moment(event.start).format('YYYY-MM-DD') === moment(arg.date).format('YYYY-MM-DD') 9599 // && event.classNames.includes('holiday-event'); 9600 // }); 9601 9602 // if (dayEvents.length > 0) { 9603 // const eventsContainer = arg.el.querySelector('.fc-daygrid-day-top'); 9604 // if (eventsContainer) { 9605 // eventsContainer.classList.add('holiday-box'); 9606 // } 9607 // } 9608 }, 9609 datesSet: function(arg) { 9610 clearHolidayHeaderLabels(arg.view.el); 9611 9612 if (arg.view.type === 'timeGridWeek' || arg.view.type === 'timeGridDay') { 9613 const events = arg.view.calendar.getEvents().filter(ev => 9614 ev.display === 'background' && ev.classNames.includes('holiday-event') 9615 ); 9616 for (const ev of events) { 9617 const start = new Date(ev.start); 9618 const end = new Date(ev.end); 9619 for (let d = new Date(start); d < end; d.setDate(d.getDate() + 1)) { 9620 const y = d.getFullYear();
9621 const m = String(d.getMonth() + 1).padStart(2, '0'); 9622 const day = String(d.getDate()).padStart(2, '0'); 9623 addHolidayHeaderLabel(arg.view.el, `${y}-${m}-${day}`, ev.title || ''); 9624 } 9625 } 9626 } 9627 } 9628 }); 9629 9630 calendar.on('datesSet', (arg) => { //ì ì´ê¸° ë ¸ì¶ ê°ì 9631 // â¼ ë¶ì¡± ì í리íì¹ (prev/next ì´ë ì ìºìì ìë ë¬ë§ ë³´ì¶©) 9632 if (!calendar.__prefetching) { 9633 const keys = monthsInRange(arg.start, arg.end); // ['YYYY-MM', ...] 9634 const pidMap = monthCache.get(pid) || new Map(); 9635 const missing = keys.filter(k => !pidMap.has(k)); 9636 9637 if (missing.length) { 9638 calendar.__prefetching = true; 9639 const dt = ($('.userEL'+pid).attr('data-modoo-type')) || ''; 9640 Promise.all(missing.map(k => fetchMonth(pid, k, dt))) 9641 .then(() => arg.view.calendar.refetchEvents()) 9642 .finally(() => { calendar.__prefetching = false; }); 9643 } 9644 } 9645 }); 9646 9647 calendar.render(); 9648 setupHolidayHeaderHooks(calendar); 9649 $.cl_calendar.instances[pid].calendar = calendar; 9650 9651 $(`[data-type="calendar"][data-id="${pid}"]`).addClass('_calendar'); 9652 }//calendar end 9653 9654 // $('.gallery-item').live('click', function(e) { 9655 // if($(this).find('[attr-flink]').length > 0 ) { 9656 // e.preventDefault(); 9657 // return false; 9658 // } 9659 9660 // if($(e.target).hasClass('like') || $(e.target).closest('.figure').hasClass('like')) { 9661 // e.preventDefault(); 9662 // return false; 9663 // } 9664 9665 // var $el = $(this).parents('.element'); 9666 // var pid = $el.attr('data-id'); 9667 // $('.blueimp-gallery').addClass('blueimp-gallery-controls'); 9668 // $('.blueimp-gallery a.zoom-in').remove(); 9669 // $('.blueimp-gallery a.gallery-like').addClass('hide').removeClass('active').removeAttr('data-like'); 9670 9671 // var gid = $(this).find('a').attr('data-gallery'); 9672 // var totalSlide = $(gid).find('.slide').length; 9673 // $('.blueimp-gallery .slide-index .total-slide').text(totalSlide); 9674 9675 // if($(this).find('a').attr('data-img-original') == 'ON') { 9676 // $('.blueimp-gallery a.close').after('<a class="zoom-in" data-id="' + pid + '"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M24 22.94l-6.42-6.42C19.08 14.76 20 12.49 20 10c0-5.52-4.48-10-10-10S0 4.48 0 10s4.48 10 10 10c2.49 0 4.76-0.92 6.52-2.42L22.94 24 24 22.94zM1.5 10c0-4.69 3.81-8.5 8.5-8.5 4.69 0 8.5 3.81 8.5 8.5s-3.81 8.5-8.5 8.5C5.31 18.5 1.5 14.69 1.5 10z"/><polygon points="10.75 6 9.25 6 9.25 9.25 6 9.25 6 10.75 9.25 10.75 9.25 14 10.75 14 10.75 10.75 14 10.75 14 9.25 10.75 9.25 "/></svg></a>'); 9677 // } 9678 9679 // $(gid).off('slide').off('slideend'); 9680 // $(gid).on('slide', function (event, index, slide) { 9681 // if($(this).find('a').attr('data-gallery-like') != 'N') $('.blueimp-gallery a.gallery-like').removeAttr('data-like').addClass('hide'); 9682 // }).on('slideend', function(event, index, slide){ 9683 // $('.blueimp-gallery .slide-index .current-slide').text(index+1); 9684 // if($(this).find('a').attr('data-gallery-like') != 'N') { 9685 // var itemSeq = $el.find('.gallery-item').eq(index).attr('data-seq'); 9686 // if(itemSeq == undefined) { 9687 // itemSeq = $('.galleryPL'+pid+'.gallery-popup .gallery-item[data-index='+index+']').attr('data-seq'); 9688 // } 9689 // var l_position = setTimeout(function(){ 9690 // if(!$(slide).hasClass('slide-loading')) { 9691 // galleryLikePosition(gid, slide, itemSeq); 9692 // clearTimeout(l_position); 9693 // } 9694 // }, 600); 9695 // } 9696 // }); 9697 // $('.blueimp-gallery').find('h3.title').html($(this).find('a').attr('data-title')); 9698 9699 // $.cookie('gallery-item', $(this).attr('data-seq'), { path : '/', expires: 12 * 60 * 60 * 1000 }); 9700 // if(b.PARENT.prev != null) $('.data-page-prev').addClass('active'); 9701 // if(b.PARENT.next != null) $('.data-page-next').addClass('active'); 9702 // e.stopPropagation(); 9703 // }); 9704 9705 // $('body').on('click','.blueimp-gallery a.zoom-in', function(e) { 9706 // var idx = 0, 9707 // eid = $(this).attr('data-id'); 9708 // $('#gframe-' + eid + ' .slide').each(function(i,v) { 9709 // var trans = $(v).attr('style'); 9710 // if(trans.indexOf('translate(0px, 0px)') > -1 || trans.indexOf('transform: translate(0px) translateZ(0px)') > -1) { 9711 // idx=i; 9712 // } 9713 // }); 9714 // // var src = $('#gframe-' + eid + ' .slide[data-index="' + idx + '"] > img').attr('src'); 9715 9716 // // $('.blueimp-gallery a.zoom-in').attr('href',src).attr('target','_blank'); 9717 // e.stopPropagation(); 9718 // }); 9719`` 9720 $('.element[data-type="contact"] .google-map .gm-fullscreen-control').live('click', function(e) { 9721 $(this).toggleClass('gm-open'); 9722 9723 if(!$(this).hasClass('gm-open')) { 9724 var el = $(this).closest('.element').attr('data-el'); 9725 scrollToBlock('.'+el,300); 9726 } 9727 }); 9728 9729 $('#mobile-nav .siteLANG.cl-fixbtn.cl-visible .cl-lang').live({ 9730 click: function(e) { 9731 if($('#mobile-nav .siteLANG.cl-fixbtn.cl-visible .dropdown-menu-wrap').hasClass('open')) { 9732 $('#mobile-nav #tpl-menu').css({ 9733 'position':'relative', 9734 'z-index':'-1' 9735 }); 9736 } else { 9737 $('#mobile-nav #tpl-menu').css({ 9738 'position':'', 9739 'z-index':'' 9740 }); 9741 } 9742 } 9743 }); 9744 9745 $('#mobile-nav .dropdown-menu-wrap.open').live({ 9746 click: function(e) { 9747 $('#mobile-nav .menu-has-children .dropdown-menu a').css('pointer-events',''); 9748 $('#mobile-nav .menu-has-children i.fa-chevron-down').css('z-index','') 9749 } 9750 }); 9751 9752 9753 /* page count */ 9754 if(Object.keys(b.CONTENTS).length) { 9755 var ps_elupdate = this.contentUpdate(b.CONTENTS); 9756 var vpmode = (typeof $('.mobilepc_ch').attr('data-desktop-option') != 'undefined') ? $('.mobilepc_ch').attr('data-desktop-option') : b.SETTINGS.viewportMode; 9757 9758 ps_elupdate.done(function(r_data) { 9759 elFooter(); 9760 if(typeof r_data != 'undefined' && typeof r_data.showOnlyFooter != 'undefined' && r_data.showOnlyFooter) { 9761 return false;
9762 } 9763 if(b.COUNT) { 9764 if(b.PARENT.mode == 'shopping') { 9765 if(typeof property.PRODINFO === 'object') $.products.display_info(); 9766 if($('#review-onoff').val() == 'true') $.products.review(b.VIEW,b.PAGE); 9767 if($('#qna-onoff').val() == 'true') $.products.qna(b.VIEW,b.PAGE); 9768 } else { 9769 if(b.VIEW) _this.displayComment(); 9770 } 9771 } 9772 }).then(function() { 9773 if(b.VIEW && b.PARENT.mode != 'shopping') { 9774 // initViewPageToolbar().then(function(pageToolbar){ 9775 // setViewPageToolbar(); 9776 // }); 9777 initViewPageBottom(); 9778 } 9779 }).then(function() { 9780 if(typeof b.SETTINGS.hideScrollTop != 'undefined' && b.SETTINGS.hideScrollTop == true) $('#goto-top').addClass('hide'); 9781 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 9782 var ismodeSm = ($('.cl-s-page').hasClass('mode-shopping')) ? true : false; 9783 if(!ismodeSm && b.ONE && !b.VIEW || b.PAGE == b.MENULINK[0] && !b.VIEW) setSitePopup(); 9784 $.siteBanner.init(true,true); 9785 9786 if(b.VALIDTYPE == 'BN' || b.VALIDTYPE == 'SM') { 9787 if(typeof b.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(b.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) { 9788 $.fnav.draw(b.SETTINGS.fnav); 9789 } 9790 9791 if(typeof b.SETTINGS.qm_onoff != 'undefined' && b.SETTINGS.qm_onoff==true) { 9792 var quick_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 9793 9794 if(!(b.PARENT.page != null && (quick_type=='mobile'))) { 9795 if($('.menu-lock-block').length>0) return false; 9796 if(!(ismodeSm && (quick_type=='mobile'))) { 9797 $.quickmenu.init(b.SID, b.PUBLISH,quick_type); 9798 mobileWebQuickmenuPosition(b,quick_type); 9799 } 9800 9801 } 9802 } 9803 9804 } 9805 } 9806 9807 if(typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 9808 mobileWebfnavCheck(vpmode); 9809 } 9810 9811 if($('#page-loading-css').length > 0) { 9812 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 9813 $('#page-loading-css').remove(); 9814 } 9815 }); 9816 } 9817 else { 9818 var checkUrl = b.PAGE.split(","), 9819 vpmode = ''; 9820 vpmode = $.mpcWeb.mpcGetVpmode(vpmode,b.SETTINGS); 9821 9822 isMenuLock(function() { 9823 if(b.SETTINGS.noError404 === true && !(b.MENULIST.indexOf(b.PAGE) > -1) && !b.ONE && !b.VIEW) { // refresh 9824 window.location.href = '/'; 9825 return false; 9826 } 9827 9828 if($('#page-loading-css').length > 0) { 9829 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 9830 $('#page-loading-css').remove(); 9831 } 9832 9833 if(property.ISLOCK == 'false') { 9834 if(property.COUNT==0) { 9835 elFooter(); 9836 if(checkUrl[0] == "forum" && b.VIEW) { 9837 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 9838 $.mpcWeb.mpcWebhtml(vpmode,b.CONTENTS,b.SETTINGS.zoom); 9839 } 9840 var ps_fmview = $.forum.view(b.VIEW); 9841 ps_fmview.done(function(data) { 9842 if($(`.page-comments[data-id="${b.VIEW}"]`).length == 0) _this.displayComment(data); 9843 9844 setTimeout(function() { 9845 if(b.VIEW) setViewPageToolbar(); 9846 if(b.VALIDPLAN && (b.VALIDTYPE == 'BN' || b.VALIDTYPE == 'SM')) { 9847 if(typeof b.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(b.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) $.fnav.draw(b.SETTINGS.fnav); 9848 } 9849 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 9850 $.mpcWeb.mpcWebhtml(vpmode,'',b.SETTINGS.zoom); 9851 mobileWebfnavCheck(vpmode); 9852 } 9853 }, 100); 9854 9855 }).fail(function(error_msg) { 9856 // console.log(error_msg); 9857 }); 9858 } 9859 9860 if(property.PAGE == 'psearch') { 9861 vpmode = $.mpcWeb.mpcGetVpmode(vpmode,property.SETTINGS); 9862 9863 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof property.SETTINGS.viewportMode != 'undefined' && property.SETTINGS.vpMode_onoff===true) $.mpcWeb.mpcWebhtml(vpmode,property.CONTENTS,property.SETTINGS.zoom); 9864 9865 setTimeout(function() { 9866 if(property.VALIDPLAN && (property.VALIDTYPE == 'BN' || property.VALIDTYPE == 'SM')) { 9867 if(typeof property.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(property.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) $.fnav.draw(property.SETTINGS.fnav); 9868 } 9869 if(typeof property.SETTINGS.viewportMode != 'undefined' && property.SETTINGS.vpMode_onoff===true) { 9870 mobileWebfnavCheck(vpmode); 9871 } 9872 }, 500); 9873 } 9874 9875 var ismodeSm = ($('.cl-s-page').hasClass('mode-shopping')) ? true : false;
9876 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 9877 if(!ismodeSm && b.ONE && !b.VIEW || b.PAGE == b.MENULINK[0] && !b.VIEW) setSitePopup(); 9878 $.siteBanner.init(true,true); 9879 } 9880 if(b.VALIDPLAN && (b.VALIDTYPE == 'BN' || b.VALIDTYPE == 'SM')) { 9881 if(typeof b.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(b.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) { 9882 $.fnav.draw(b.SETTINGS.fnav); 9883 } 9884 9885 if(typeof b.SETTINGS.qm_onoff != 'undefined' && b.SETTINGS.qm_onoff==true) { 9886 var quick_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 9887 if(!(b.PARENT.page != null && (quick_type=='mobile'))) $.quickmenu.init(b.SID, b.PUBLISH,quick_type); 9888 } 9889 } 9890 9891 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 9892 $.mpcWeb.mpcWebhtml(vpmode,'',b.SETTINGS.zoom); 9893 mobileWebfnavCheck(vpmode); 9894 } 9895 9896 } 9897 } else { 9898 elFooter(); 9899 } 9900 }); 9901 } 9902 9903 window._musicUserInteracted = false; 9904 $(document).one('click scroll touchstart keydown', function() { 9905 window._musicUserInteracted = true; 9906 }); 9907 9908 $(window).load(function() { 9909 9910 $('#no-fouc').css('opacity','1'); 9911 if(typeof $.cookie('gallery-item') != 'undefined' && b.VIEW == '') { 9912 moveGallery($.cookie('gallery-item')); 9913 } 9914 9915 if(typeof $.cookie('forum_content_view') == 'undefined'){ 9916 moveScroll(0); 9917 } 9918 _this.loaded(); 9919 9920 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 9921 var musicPlay = true; 9922 if(typeof b.SETTINGS.musicStop != 'undefined' && (b.SETTINGS.musicStop === true || b.SETTINGS.musicStop == 'true')) 9923 musicPlay = false; 9924 9925 if(typeof b.SETTINGS.musicUse != 'undefined' && (b.SETTINGS.musicUse === true || b.SETTINGS.musicUse == 'true')){ 9926 if( (typeof b.SITELOCK != 'undefined' && b.SITELOCK == 'true' ) || b.certOpenChk == true) { 9927 musicPlay = false; 9928 } else { 9929 $.musicON(musicPlay); 9930 } 9931 } 9932 9933 // JH 주ì1 : ì ë´ì© 주ì í ìë 주ì í기 9934 // if(typeof b.SETTINGS.musicUse != 'undefined' && (b.SETTINGS.musicUse === true || b.SETTINGS.musicUse == 'true')) 9935 // $.musicON(musicPlay); 9936 9937 if(musicPlay == false) $.musicPause(); 9938 } 9939 9940 var used_disk_value = b.USED_DISK / 1024, 9941 used_disk = Math.ceil(used_disk_value); // byteì¼ë¡ ê°ì ¸ìì megsabyteì¼ë¡ ë³íë¤ 9942 9943 if(Number(b.DISK_SPACE) != -1 && (used_disk > b.DISK_SPACE) && (b.MB_LEVEL != 10)) setlimitdiskPopup(); 9944 9945 // menu sidebar - height overflow 9946 if($('body').width() > 768) { 9947 $('header.navbar-li:not([data-fixtype]) #fixed-menu > li.dropdown').live({ 9948 mouseenter: function(e) { 9949 var this_bottom = $(this).find('.cl-icon').position().top + $(this).find('.cl-icon').height(); 9950 $(this).find('.dropdown-menu').css({ 9951 'top': this_bottom+'px', 9952 }); 9953 }, 9954 mouseleave: function(e) { 9955 $(this).find('.dropdown-menu').removeAttr('style'); 9956 } 9957 }); 9958 9959 $('header.navbar-li[data-fixtype] #fixed-menu > li.dropdown').live({ 9960 mouseenter: function(e) { 9961 var dropdown_cover = '<div class="dropdown_cover"></div>', 9962 this_bottom = 0, 9963 is_fhAlign = (typeof $('.el-menu header.navbar[data-fixtype]').find('.container').attr('data-fh-align') != 'undefined') ? true : false, 9964 checkSidebar = ($('.el-menu header.navbar').hasClass('sidebar')) ? true : false, 9965 $cl_fixbtn = ($('header.navbar[data-fixtype] .cl-fixed-menu .cl-fixbtn.cl-visible').length>0) ? $('header.navbar[data-fixtype] .cl-fixed-menu .cl-fixbtn.cl-visible') : '', 9966 visible_aHght = ($(this).find(' > a:visible').length>0) ? $(this).parents('.cl-fixed-menu').find('li.cl-fixbtn').height() : 10; 9967 9968 var height_arr = [], 9969 height_max = ''; 9970 9971 $cl_fixbtn.find('> a:visible').each(function(){ 9972 var fixbtn_height = ($(this).find('.cl-icon').length>0) ? $(this).find('.cl-icon').height() : $(this).height(), 9973 fixbtn_fsize = Number($(this).css('font-size').replace(/px/gi,'')); 9974 9975 // console.log($(this).height()); 9976 // console.log($(this).parents('li.cl-fixbtn').height()); 9977 if($(this).height() != $(this).parents('li.cl-fixbtn').height()) { 9978 fixbtn_height = ($(this).find('.cl-icon').height() > $(this).height()) ? $(this).find('.cl-icon').height() : 9979 (($(this).find('.cl-icon').height() + fixbtn_fsize < $(this).height()) ? fixbtn_fsize : $(this).outerHeight()); 9980 } 9981 9982 height_arr.push(fixbtn_height); 9983 }); 9984 9985 height_max = Math.max(...height_arr); 9986 9987 var li_Hght = 0; 9988 $(this).parents('.cl-fixed-menu').find('li.cl-fixbtn').each(function(i,v){ 9989 var li_display = $(this).css('display'); 9990 if(li_display!='none') { 9991 li_Hght = Number($(this).height()); 9992 return false;
9993 } 9994 }); 9995 9996 var li_Hght_half = Number((li_Hght/2).toFixed(0)), 9997 height_max_half = Number((height_max/2).toFixed(0)), 9998 ul_height_max_cal = li_Hght_half - height_max_half; 9999 10000 ul_height_max_cal = (ul_height_max_cal <= 0 && ul_height_max_cal>-3) ? 0 : ul_height_max_cal; 10001 this_bottom = ul_height_max_cal + Number(height_max.toFixed(0)) + 5; 10002 10003 //if(!is_fhAlign && !checkSidebar && $(this).hasClass('siteLANG')) { this_bottom -= ul_height_max_cal;} 10004 10005 if(checkSidebar) { 10006 var fixtype = $('.el-menu header.navbar').attr('data-fixtype'), 10007 fixtype_check_arr = ['01','02','03','08']; 10008 this_bottom = ($.inArray(fixtype,fixtype_check_arr)>-1) ? this_bottom : visible_aHght; 10009 } 10010 10011 if(!checkSidebar) { 10012 $(this).find('.dropdown-menu').before(dropdown_cover); 10013 } 10014 10015 $(this).find('.dropdown-menu').css({ 10016 'top': this_bottom+'px' 10017 }); 10018 10019 10020 }, 10021 mouseleave: function(e) { 10022 $(this).find('.dropdown-menu').removeAttr('style'); 10023 $(this).find('.dropdown_cover').remove(); 10024 } 10025 }); 10026 10027 $('.sidebar .nav li.dropdown').live({ 10028 mouseenter: function(e) { 10029 var checkSubMenuPosition = $(this).find('.dropdown-menu').css('position'); 10030 if(checkSubMenuPosition == 'absolute') { 10031 var this_top = $(this).offset().top - $(document).scrollTop(); 10032 if($(this).closest('header').parent('#element-display').length > 0) this_top -= $(this).closest('header').parent('#element-display').offset().top; 10033 10034 $(this).find('.dropdown-menu').css({ 10035 'position': 'fixed', 10036 'top': this_top+'px', 10037 'left': '260px' 10038 }); 10039 } 10040 }, 10041 mouseleave: function(e) { 10042 $(this).find('.dropdown-menu').removeAttr('style'); 10043 } 10044 }); 10045 } else { 10046 $('header.navbar-li #fixed-menu > li.dropdown').find('.dropdown-menu').removeAttr('style'); 10047 $('header.sidebar #tpl-menu > li.dropdown').find('.dropdown-menu').removeAttr('style'); 10048 } 10049 10050 10051 if(typeof $.cookie('ci_goto-gallery') != 'undefined' && $.cookie('ci_goto-gallery')) { 10052 var goto_gallery = '.element[data-id="' + $.cookie('ci_goto-gallery') + '"]', 10053 cookie_domain = (property.HOST.indexOf(':') > -1) ? property.HOST.substring(0,property.HOST.indexOf(':')) : property.HOST; 10054 if($(goto_gallery).length > 0) { 10055 scrollToBlock(goto_gallery, 1000); 10056 } 10057 $.cookie('ci_goto-gallery', '', { domain: '.' + cookie_domain,expires: -1 }); 10058 $.cookie('ci_goto-gallery-cate', '', { domain: '.' + cookie_domain,expires: -1 }); 10059 } 10060 10061 if(typeof fbq == 'function' && b.VALIDTYPE == 'SM') { 10062 if(b.VIEW) { 10063 var checkProduct = (b.PAGE.match(/^forum,/g) === null && typeof b.PARENT != 'undefined' && typeof b.PARENT.mode != 'undefined' && b.PARENT.mode == 'shopping') ? true : false, 10064 mn = (b.ONE) ? b.PARENT.opage : b.PARENT.ppage; 10065 if(checkProduct && typeof callbackEvtViewContent == 'function') callbackEvtViewContent(mn,b.PARENT.seq,b.PARENT.title,$('.total-price').text().replace(/[^0-9]/g,'')); 10066 } else { 10067 var checkProductList = ($('.element[data-type="gallery"][data-mode="shopping"]').length > 0) ? true : false; 10068 if(checkProductList && typeof callbackEvtLead == 'function') callbackEvtLead(b.PAGE); 10069 } 10070 } 10071 10072 }); 10073 }, 10074 contentUpdate : function(contents) { 10075 // console.log(' page draw 01:: contentUpdate'); 10076 var deferred = $.Deferred(); 10077 var b = this.b, 10078 _this = this, 10079 idx = 0; 10080 10081 var checkSiteLock = isSitePasswordLock(); 10082 checkSiteLock.then(function() { 10083 isMenuLock(function() { 10084 var default_t_css = '', default_m_css = ''; 10085 var checkGalleryView = (b.VIEW && b.PAGE.match(/^forum,/g) === null) ? true : false; 10086 var page_pos = 0; 10087 var site_settings = (typeof b.SETTINGS != 'undefined' && b.SETTINGS) ? b.SETTINGS : {}; 10088 var vpmode = ''; 10089 var is_templates = checkTemplateSite(b.SID); 10090 vpmode = $.mpcWeb.mpcGetVpmode(vpmode,b.SETTINGS); 10091 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 10092 $.mpcWeb.mpcWebhtml(vpmode,b.CONTENTS,b.SETTINGS.zoom); 10093 } 10094 10095 if(checkGalleryView) setViewPageStyle(); 10096 10097 var check_modoo = $('.dsgn-body').hasClass('modoo') ? true : false, 10098 fl_data = {}; 10099 10100 if(check_modoo || property?.SETTINGS?.modoo?.floating ) { 10101 fl_data = draw_floating(); 10102 } 10103 10104 $.each(contents, function(i,v) { 10105 page_pos += 1; 10106 // console.log(`i: ${i}, v: `);console.log(v); 10107 var c = v.element; 10108 var $el = $('.' + c.elname); 10109 var settings = (c.elsettings == '' || typeof c.elsettings == 'undefined') ? {} : $.parseJSON(c.elsettings); 10110 var block_lang = (typeof settings.blocklang != 'undefined') ? settings.blocklang : LANG; 10111 var msny = (c.feature=='masonry') ? true : false;
10112 10113 if(c.type == 'video') { 10114 c.mode = ($el.find('.video-gallery-url').length > 0) ? 'zoom' : 'thumb'; 10115 } 10116 10117 //ì²ì ì ì ì 10118 $el.addClass('el_' + idx) 10119 .addClass('element') 10120 .attr('data-id', c.seq) 10121 .attr('data-el','el_' + idx) 10122 .attr('data-pos', c.pos) 10123 .attr('data-name', c.elname) 10124 .attr('data-case', settings?.blockorg || c.name) 10125 .attr('data-msny', msny) 10126 .attr('data-type', c.type) 10127 .attr('data-type2', c.type2) 10128 .attr('data-feature', c.feature) 10129 .attr('data-mode', c.mode) 10130 .attr('data-width', c.folder) 10131 .attr('data-overlap',c.overlap); 10132 if(c.type == 'form' && typeof c.form_done != 'undefined') $el.attr('data-form-done', c.form_done); 10133 10134 setBlockAOS($el,{block:settings, skipRefresh:true}); 10135 10136 if($el.hasClass('modoo')) { 10137 if(window.innerWidth <= 768 && $el.find('._spotHomesite').hasClass('is_bottom')) { 10138 $el.find('._spotHomesite').removeClass('is_bottom'); 10139 } 10140 10141 if($el.find('._sectionSpot').hasClass('type_full') && window.innerWidth > 768) { 10142 var A = $el.find('._areaLogin').length ? true : false, 10143 C = window.innerHeight; 10144 10145 if (A) { 10146 C -= 50; 10147 } 10148 10149 $el.find("._sectionSpot .swiper-wrapper").css("height", C); 10150 $el.find("._sectionSpot .swiper-slide").css("height", C); 10151 $el.find("._sectionSpot ._imgCover").css("height", C).each(function(F, G) { 10152 var D = $(G); 10153 var E = D.attr("data-lazy-background-img-src"); 10154 D.css({ 10155 backgroundImage: "url(" + E + ")", 10156 filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + E + '}", sizingMethod="scale")' 10157 }); 10158 }); 10159 if (!$el.find("._spotHomesite").hasClass("is_bottom")) { 10160 $el.find("._spotHomesite").css("height", C); 10161 } 10162 } 10163 if($el.find('.page-container-mobile').length > 0) { 10164 if(window.innerWidth <= 768) $el.find('[data-role="page-container"]._content').hide(); 10165 else $el.find('[data-role="page-container"]._content').show(); 10166 } 10167 10168 if($el.parents('body').is('.clnav-overlap-OFF') && $el.is('[data-el="el_0"]')) { 10169 $el.find('._spotHomesite .site_info').append(fl_data.el_html); 10170 } 10171 } 10172 10173 if(c.type == 'contact') { 10174 setContactSubmitSecurity($el, c.seq, settings, block_lang); 10175 } 10176 10177 10178 var checkPageblock = (c.seq === 'all_products' || (c.orgpos == 1 && c.orgpage)) ? true : false; 10179 if(b.ONE && checkPageblock) { 10180 $el.attr('data-pagename', JSON.parse('"' + c.orgpage + '"')); 10181 $el.addClass('link-to-'+JSON.parse('"'+c.orgpage.replace(/ /g,'-')+'"')); 10182 } 10183 10184 var checkNotSupported = (!is_templates) ? $.notSupported.check(v.element.type,v.element.type2,v.element.feature) : false; 10185 if(checkNotSupported) { 10186 $(`.${v.element.elname}`).html('').attr('class',`hide element ${v.element.elname} el_${idx}`); 10187 $(`#el_${idx}css, #js_${idx}`).remove(); 10188 idx++; 10189 return; 10190 } 10191 10192 $el.find('video').attr({'playsinline': '','webkit-playsinline': ''}); 10193 if(c.type == 'video' || c.type == 'others') { 10194 var checkFullscreen = (typeof settings.fullscreen != 'undefined' && settings.fullscreen == 'ON') ? true : false; 10195 if(checkFullscreen) $el.find('.video-wrap').addClass('video-fullscreen'); 10196 } 10197 10198 if($el.length > 1 && c.type == 'showcase') { 10199 $($el).each(function(i, v) { 10200 if(i>0) v.dataset['el'] = ''; 10201 }); 10202 } 10203 10204 var blocklang = ''; 10205 if(typeof settings.blocklang != 'undefined') { 10206 blocklang = settings.blocklang; 10207 $el.attr('data-blocklang',blocklang); 10208 } 10209 10210 if (c.type == 'sync') { 10211 showHideSyncField($el, settings); 10212 10213 var sync_list_total = (typeof v.element.sync !='undefined' && typeof v.element.sync.list != 'undefined' && (v.element.sync.list).length > 0) ? (v.element.sync.list).length : 0; 10214 if($el.find('.slick-page-label').length > 0) { 10215 var page_label = sync_list_total; 10216 if(c.type2 == 'imgpitem' && sync_list_total == 0) page_label = $el.find('.slick .item').length; 10217 10218 $el.find('.slick-page-label .slick-page-now').text(1); 10219 $el.find('.slick-page-label .slick-page-total').text(page_label); 10220 } 10221 10222 if($el.find('.sync-option').length > 0) { 10223 var sync_css = CSSJSON.toJSON(htmlspecialchars_decode(c.elcss)), 10224 sync_s = style.get(sync_css,c.elname); 10225 if(typeof sync_s.__display_count != 'undefined') { 10226 var display_cnt = Number(sync_s.__display_count) || 10; 10227 $el.find(`.sync-item:gt(${display_cnt-1}
10227)`).addClass('hide'); 10228 10229 if($el.find('.sync-page-label').length > 0) { 10230 var sync_p_cnt = $el.find('.sync-row .sync-item').length, 10231 sync_p_total = Math.ceil(sync_p_cnt / display_cnt); 10232 $el.find('.sync-page .sync-page-now').text(1); 10233 $el.find('.sync-page .sync-page-total').text(sync_p_total); 10234 10235 if(sync_p_total == 1) $el.find('.sync-page-wrap').hide(); 10236 else $el.find('.sync-page-wrap').show(); 10237 } 10238 } 10239 } 10240 10241 var sync_loadmore_lang = block_lang; 10242 if(typeof settings.loadmore_lang != 'undefined' && settings.loadmore_lang && $.inArray(settings.loadmore_lang.toLowerCase(), ['ko','en']) > -1) sync_loadmore_lang = settings.loadmore_lang.toLowerCase(); 10243 $el.find('.sync-page-more-str').text($.lang[sync_loadmore_lang]['config.loadmore']); 10244 } 10245 10246 if(checkGalleryView) { 10247 if(c.page == 'fixedblock_'+b.PARENT.pid) $el.addClass('el-fixedblock'); 10248 else $el.removeClass('el-fixedblock'); 10249 10250 $el.attr('data-pos', page_pos); 10251 // if(b.LUX && (c.orgpos == '1' || $el.is('.lux-product-block'))) $el.attr('data-ppos', (c.pos*1) + 1); 10252 // else $el.attr('data-ppos', c.pos); 10253 $el.attr('data-ppos', c.pos); 10254 $el.attr('data-posby', c.elnew); 10255 } 10256 10257 if(c.type == 'contact' && c.page == 'fixedcontact') { 10258 $.fixedContact.init($el); 10259 } 10260 10261 // b.ISLOCK = (!b.VALIDPLAN) ? 'false' : b.ISLOCK; 10262 if(b.ISLOCK == 'false') $el.removeClass('hide'); 10263 else $el.addClass('locked'); 10264 10265 if(c.type == 'forum' || c.type == 'latest' || c.type == 'sync') $el.addClass('preloading'); 10266 10267 var elFonts = $el.css('font-family'); 10268 elFonts = elFonts + ",'Nanum Gothic'"; 10269 var reFonts = elFonts.replace(/"/g, "\'"); 10270 $el.css('font-family',reFonts); 10271 10272 //add style 10273 var jcss = CSSJSON.toJSON(c.elcss); 10274 10275 var element_mh = jcss?.children[`.${c.elname}`]?.attributes['min-height'] ?? ''; 10276 if (element_mh && /%$/.test(element_mh)) { 10277 const converted_mh = element_mh.replace('%', ''); 10278 $el.css('min-height',`${converted_mh}vh`); 10279 } 10280 10281 var elpd = style.getPadding(jcss,c.elname); 10282 var pt = parseInt(elpd.top); 10283 var pb = parseInt(elpd.bottom); 10284 10285 if(pt>0||pb>0){ 10286 default_t_css = default_t_css + '\n .'+c.elname + '{'; 10287 if(Math.ceil(pt*0.8)>0) 10288 default_t_css = default_t_css + 'padding-top: '+Math.ceil(pt*0.8) + 'px!important;'; 10289 if(Math.ceil(pb*0.8)>0) 10290 default_t_css = default_t_css + 'padding-bottom: '+Math.ceil(pb*0.8) + 'px!important;'; 10291 default_t_css = default_t_css + '}'; 10292 10293 default_m_css = default_m_css + '\n .'+c.elname + '{'; 10294 if(Math.ceil(pt*0.5)>0) 10295 default_m_css = default_m_css + 'padding-top: '+Math.ceil(pt*0.5) + 'px!important;'; 10296 if(Math.ceil(pb*0.5)>0) 10297 default_m_css = default_m_css + 'padding-bottom: '+Math.ceil(pb*0.5) + 'px!important;'; 10298 default_m_css = default_m_css + '}'; 10299 } 10300 10301 if(idx == Object.keys(b.CONTENTS).length-1){ 10302 var css = '@media only screen and (max-width:767px) {' + default_t_css + '\n}\n'; 10303 css = css + '@media only screen and (max-width:480px) {' + default_m_css + '\n}'; 10304 10305 if($('#el-paddingcss').length == 0) $('.dsgn-body').find('#el_'+(Object.keys(b.CONTENTS).length-1)+'css').after('<style id="el-paddingcss">'+css+'</style>'); 10306 else $('#el-paddingcss').append(css); 10307 } 10308 10309 var settings = (c.elsettings == '' || typeof c.elsettings == 'undefined') ? {} : $.parseJSON(c.elsettings); 10310 10311 if(typeof settings.bookmark != 'undefined' && settings.bookmark) { 10312 $el.attr('data-bookmark',c.seq); 10313 } 10314 10315 if(b.VIEW && (c.type == 'project' || c.type == 'product')) { 10316 $el.find('.data-page-prev').addClass('active'); 10317 $el.find('.data-page-next').addClass('active'); 10318 10319 if(b.PARENT.prev == null) $el.find('.data-page-prev').removeClass('active'); 10320 if(b.PARENT.next == null) $el.find('.data-page-next').removeClass('active'); 10321 10322 //ìì¸íì´ì§ ë°°ê²½ style ì¶ê° 10323 // if(c.type == 'project') setGalleryProjectCss(b.PARENT,b.PARENT['elcss']); 10324 } 10325 10326 if(b.VIEW) { 10327 var img_onoff = (typeof settings.img_original_display != 'undefined' && settings.img_original_display) ? settings.img_original_display : 'OFF'; 10328 $el.find('img[data-attach="true"]').attr('data-img-original',img_onoff); 10329 } 10330 10331 //video block ::: gallery 10332 if(c.type == 'video') { 10333 if($el.find('.video-gallery-url').length > 0) { //ì¬ìë°©ì : íë보기 10334 $.each($el.find('.item'),function(i,v){ 10335 if(c.mode=='zoom') appendGalleryFrame($(this).parents('.element'),c.seq,c.type); 10336 }); 10337 10338 // let lsw = document.querySelector('.element[data-id="' + c.seq + '"] .swiper'); 10339 // if(lsw && lsw.swiper) { 10340 // let slider_motion = $('.element[data-id="' + c.seq + '"]').attr('data-sli
10340der-motion'); 10341 10342 // $('#gframe-' + c.seq).on('opened', function(event){ 10343 // console.log('gallery opend', $(this).data('gallery'), typeof $(this).data('gallery').index); 10344 // if(slider_motion != 'stop') { 10345 // lsw.swiper.autoplay.stop(); 10346 // } 10347 // }).on('closed', function (event){ 10348 // console.log('gallery closed'); 10349 // if(slider_motion != 'stop') { 10350 // lsw.swiper.autoplay.start(); 10351 // } 10352 // }); 10353 // } 10354 } 10355 10356 resizeVideoIframe($el); 10357 } 10358 10359 if(c.type == 'forum') { 10360 var page_num = 1 10361 if (typeof $.cookie('forum_' + v.element.seq) != 'undefined' && $.cookie('forum_' + v.element.seq)) { 10362 page_num = $.cookie('forum_' + v.element.seq); 10363 } 10364 _this.forumUpdate(v.element.seq, page_num, v.view, c.page, v.list); 10365 } else if(c.type == 'gallery') { 10366 _this.galleryEL[c.seq] = { 10367 'seq' : c.seq, 10368 'elname' : c.elname, 10369 'eltag' : c.eltag, 10370 'folder' : c.folder, 10371 'mode' : c.mode, 10372 'elsettings' : c.elsettings, 10373 'feature' : c.feature, 10374 'type' : c.type, 10375 'type2' : c.type2, 10376 'searches' : c.searches 10377 }; 10378 10379 _this.galleryUpdate(c,v); 10380 if(c.only_category) { 10381 localStorage.setItem('searches',JSON.stringify(new Array(c.searches.uri[0]))); 10382 } 10383 10384 if (typeof c.price_hidden != 'undefined' && c.price_hidden == 'ON') { 10385 $el.find('.figure.price').html(''); 10386 } 10387 10388 //ê°¤ë¬ë¦¬ë¸ë 모ë°ì¼ ê°ë¡ ê°¯ì ì¤ì ì í´ëì¤ì¶ê° 10389 var gal_css = CSSJSON.toJSON(htmlspecialchars_decode(c.elcss)), 10390 gal_s = style.get(gal_css,c.elname), 10391 gal_case = $el.attr('data-case'); 10392 if(gal_s.__layout_m_on == 1 && gal_case != 'gallery61') { 10393 $el.addClass('el-col-m'+gal_s.__layout_col_mc); 10394 } else if(gal_s.__layout_m_on == 1 && gal_case == 'gallery61') { 10395 $el.addClass('el-col-m'+gal_s.__swiper_view_mc); 10396 } 10397 } else if(c.type == 'sync') { 10398 var sync_source = _this.syncUpdate($el,v.element); 10399 $el.html(sync_source); 10400 10401 if($el.find('[data-sync-loop="true"]').length > 0) { 10402 if(c.type2 == 'tab') $el.find('[data-sync-loop="true"] > li[data-list-no="1"]').attr('data-list-no',''); 10403 if(c.type2 == 'imgpitem' && sync_list_total > 0) $el.find('[data-sync-loop="true"] > li:not([data-idx])').remove(); 10404 $el.find('[data-sync-loop="true"] > li').eq(0).addClass('active').siblings().removeClass('active'); 10405 } 10406 10407 } else if(c.type == 'tabs') { 10408 // tab block ì°ì ìì check 10409 var $tabs = $el.find(".tab-box .tab:not(.hover)"), 10410 $initial_tab = ($tabs.filter('.checked').length > 0) ? $tabs.filter('.checked').first() : $tabs.filter('.active').first(); 10411 if($initial_tab.length == 0) $initial_tab = $tabs.eq(0); 10412 if($tabs.filter('.checked').length > 0) { 10413 $tabs.removeClass('active'); 10414 $initial_tab.addClass('active'); 10415 $el.find('.tab-editor').removeClass('active'); 10416 $el.find('.tab-editor.tabs' + $initial_tab.attr('data-order')).addClass('active'); 10417 } 10418 var el = $el.attr('data-name'), 10419 len = $tabs.length, 10420 motion_style = $el.attr("tab-motion-style"), 10421 tab_counted = $el.attr("tab-count"), 10422 mobile_tab_count = $el.attr("mobile-tab-count"), 10423 tab_count = ($(window).width() < 991) ? ((typeof mobile_tab_count != 'undefined' && mobile_tab_count) ? mobile_tab_count : ((tab_counted > 4) ? 4 : tab_counted)) : tab_counted, 10424 mobile_tab_line = $el.attr("mobile-tab-line"), 10425 tab_case = $el.attr("data-case"), 10426 motion = $el.attr("tab-motion"), 10427 priority = Number($initial_tab.attr('data-order')) || 1, 10428 navigation_use = $el.attr("navigation-use"); 10429 tabArrow(el); 10430 if(navigation_use == '1' || ($(window).width() < 991 && mobile_tab_line == '1' && len > Number(tab_count))) { 10431 if(motion_style == 1) { 10432 var motion = (((priority + 1) - Number(tab_count)) >= 0) ? priority - Number(tab_count) : 0; 10433 } else { 10434 var motion = Math.ceil(Number(priority) / Number(tab_count)) - 1; 10435 } 10436 $el.attr('tab-motion', motion); 10437 tabMotion(el, motion, "", len, motion_style, tab_count, tab_case); 10438 } 10439 10440 } else if(c.type == 'sns' && c.type2 == 'feed') { 10441 $el.find('.data-feed-load-more').attr('data-feed-el',c.elname); 10442 $el.find('.data-feed-load-more').removeAttr('style'); 10443 $el.find('.show-posts').removeClass('show-posts'); 10444 10445 if(c.mode == 'site') { 10446 if(!$.isEmptyObject(b.SOCIAL)) { 10447 var load_sns = {}; 10448 if(!$.isEmptyObject(b.SOCIAL.instagram) && typeof settings.sns_instagram != 'undefined' && settings.sns_instagram == 'ON') load_sns['instagram'] = b.SOCIAL.instagram; 10449 if(!$.isEmptyObject(b.SOCIAL.twitter) && typeof settings.sns_twitter != 'undefined' && settings.sns_twitter == 'ON') load_sns['twitter'] = b.SOCIAL.twitter; 10450 10451 if(!$.isEmptyObject(load_sns)) { 10452 loadingElement(c.elname,'loading posts...'); 10453 updateFeed(c.elname, load_sns, settings, function() { 10454 $('.'+c.elname+' .listprogress').remove(); 10455 }); 10456 } 10457 } 10458 } else { 10459 // SNS FEED:: before version 10460 if(typeof settings.sns != 'undefined' && settings.sns.twitter) { 10461 loadingElement(c.elname,'loading posts...'); 10462 updateFeed(c.elname,settings.sns); 10463 } 10464 } 10465 10466 } else if(c.type == 'others' && c.type2 == 'countdown') { 10467 var el_dday = $el.find('[data-dday="true"]'), 10468 cd_date = (el_dday.attr('data-countdown')) ? el_dday.attr('data-countdown') : new Date(), 10469 dateformat = { days : '%D', hours: '%H', minutes: '%M', seconds: '%S' }, 10470 dateendformat = { days : '00', hours: '00', minutes: '00', seconds: '00' }; 10471 10472 if( typeof settings.countdown != 'undefined' && settings.countdown ) { //set - block setting date 10473 cd_date = settings.countdown; 10474 } 10475 if( !el_dday.attr('data-countdown') && typeof cd_date == 'object' ) { //set - example date 10476 cd_date.setTime(cd_date.getTime() + (35*24*60*60*1000)); 10477 } 10478 cd_date = moment(cd_date).format('YYYY/MM/DD HH:mm:ss'); 10479 10480 el_dday.countdown(cd_date, function(event) { 10481 $(this).find('.date-item[data-datetype]').each(function(i) { 10482 var dd_type = $(this).attr('data-datetype'), 10483 dd_format = $(this).attr('data-format'), 10484 dd_endformat = $(this).attr('data-finish'); 10485 10486 if(typeof dd_format == 'undefined' || !dd_format) dd_format = dateformat[dd_type]; 10487 if(typeof dd_endformat == 'undefined' || !dd_endformat) dd_endformat = dateendformat[dd_type]; 10488 10489 if(event.elapsed) $(this).text(dd_endformat); 10490 else $(this).text(event.strftime(dd_format)); 10491 }); 10492 }); 10493 if($el.find('[data-bg-video="true"]').length > 0) resizeVideoIframe($el); 10494 }
10494 else if (c.type == 'latest') { 10495 var latest_data = (typeof settings.latest_data != 'undefined' && settings.latest_data) ? settings.latest_data : {}; 10496 $.latest.init(c.seq,latest_data); 10497 } else if (c.type == 'review') { 10498 _this.galleryEL[c.seq] = { 10499 'seq' : c.seq, 10500 'elname' : c.elname, 10501 'eltag' : c.eltag, 10502 'folder' : c.folder, 10503 'mode' : c.mode, 10504 'elsettings' : c.elsettings, 10505 'feature' : c.feature, 10506 'type' : c.type, 10507 'type2' : c.type2, 10508 'searches' : c.searches 10509 }; 10510 var gallery_data = (typeof settings.gallery_data != 'undefined' && settings.gallery_data) ? settings.gallery_data : {}; 10511 $.reviewContents.init(c.seq, gallery_data); 10512 } else if (c.type == 'form' || (c.type == 'contact' && c.type2 == 'franchise bar')) { 10513 $.forms.init(c.seq); 10514 } else if (c.type == 'contact') { 10515 if(c.type2 == 'franchise map') { 10516 $.each($el.find('[data-fmap-loop="true"] .item .item-name'), function(i, v) { 10517 let itemName = $(v).html(); 10518 itemName = itemName.replace(/< /g, '<').replace(/ >/g, '>'); 10519 $(v).html(itemName); 10520 }); 10521 10522 var $mapItem = $el.find('[data-fmap-loop="true"] > .item.selected'); 10523 drawMap($mapItem, $el); 10524 fmapMobilePaging($el); 10525 } 10526 } else if (c.type == 'calendar') { 10527 var currentDate = new Date(), 10528 getYear = currentDate.getFullYear(), 10529 getMonth = String(currentDate.getMonth() + 1).padStart(2, "0"), 10530 yearMonth = getYear + '-' + getMonth; 10531 $.cl_calendar.init(c.sid, c.seq, yearMonth, c); 10532 } else if (c.type == 'showcase') { 10533 if($el.hasClass('carousel') && $el.find('.item').length > 1 && $el.find('.control-box .carousel-control').hasClass('hide')) { 10534 $el.find('.control-box .carousel-control').removeClass('hide'); 10535 } 10536 10537 slideEffectClassAdd($el); 10538 } 10539 10540 if($el.find('.slick').length > 0) { 10541 if (c.type == 'sync' && typeof syncSlickFn == 'function') syncSlickFn('.' + c.elname); 10542 else if($el.is('[data-clslick]') && typeof clSlickFn == 'function') clSlickFn('.' + c.elname); 10543 } 10544 10545 if($.inArray(c.type, ['contents', 'text', 'image', 'video', 'sns']) > -1) { 10546 let ecs = enableContentsSlider(c.seq, c.type, settings); 10547 if(typeof settings.list_type != 'undefined' && settings.list_type == 's' && ecs) { 10548 // console.log('enable slider'); 10549 $.contentsSlider.ready(c.seq).then(() => {$.contentsSlider.init(c.seq, settings)}); 10550 } 10551 } 10552 10553 changeBrokenImages($el); 10554 10555 idx++; 10556 }); 10557 10558 // $('.tag.preloading').replaceWith(function () { 10559 // return $(this).html(); 10560 // }); 10561 10562 if(check_modoo) { 10563 m_floating(fl_data); 10564 } else if (property?.SETTINGS?.modoo?.floating) { // 모ë ì¬ì´í¸ ë©ë´ ëìì¸ ë³ê²½ ì dsgn-bodyì modooê° í¬í¨ëì§ ìì 모ë°ì¼ìì íµë©ë´ ì ë³´ì´ë 문ì í´ê²° 10565 m_floating(fl_data); 10566 } 10567 10568 $('.preloading').removeClass('preloading'); 10569 document.querySelectorAll('.element video').forEach(function(video) { 10570 if(video.readyState > 0) video.classList.add('loaded'); 10571 video.addEventListener('loadeddata', function() { 10572 this.classList.add('loaded'); 10573 }); 10574 }); 10575 10576 // b.ISLOCK = (!b.VALIDPLAN) ? 'false' : b.ISLOCK; 10577 if(b.ISLOCK == 'true') { 10578 $('.locked').remove(); 10579 return deferred.resolve({'showOnlyFooter':true}); 10580 } 10581 10582 if($('.element:not([data-type2="franchise map"]) [data-map_kind="kakao"]').length && (typeof kakao == 'undefined' || typeof kakao.maps == 'undefined' || kakao.maps == null || property.VALIDPLAN == '')) { 10583 $('.element:not([data-type2="franchise map"]) [data-map_kind="kakao"]').html('ì§ëì°ê²°í´ì ë¨. Javascriptí¤ íì¸'); 10584 $('.element:not([data-type2="franchise map"]) [data-map_kind="kakao"]').html('<iframe class="google-map" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3165.5659473821083!2d127.0282496015659!3d37.494568!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x357ca1598c361b2b%3A0xdbf9af292beff3c!2z6rCV64Ko!5e0!3m2!1sko!2skr!4v1637303748377!5m2!1sko!2skr" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"></iframe>'); 10585 } else { 10586 $('.element:not([data-type2="franchise map"]) [data-map_kind="kakao"]').each(function() { 10587 var container = this; 10588 var lat = $(this).data("lat"); 10589 var lng = $(this).data("lng"); 10590 var zoomInOut = $(this).data("zoominout"); 10591 var mapTitle = $(this).data("maptitle"); 10592 var mapContent = $(this).data("mapcontent"); 10593 var useTitle = $(this).data("usetitle"); 10594 var useContent = $(this).data("usecontent"); 10595 10596 if (typeof zoomInOut == 'undefined' || !zoomInOut) zoomInOut = false;
10597 if (typeof mapTitle == 'undefined' || !mapTitle) mapTitle = ''; 10598 if (typeof mapContent == 'undefined' || !mapContent) mapContent = ''; 10599 if (typeof useTitle == 'undefined' || !useTitle) useTitle = false; 10600 if (typeof useContent == 'undefined' || !useContent) useContent = false; 10601 10602 var options = { center: new kakao.maps.LatLng(lat, lng), level: 3 }; 10603 var c_map = new kakao.maps.Map(container, options); 10604 var marker = new kakao.maps.Marker({ position: new kakao.maps.LatLng(lat, lng), map: c_map }); 10605 10606 if(zoomInOut == true) { 10607 var zoomControlHtml = ''; 10608 zoomControlHtml += '\ 10609 <div class="zoom-control" style="margin-top: 8px; margin-right: 8px; right: 0; width: 30px; position: absolute; background-color: #fff; z-index: 1; border-radius: 3px; box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.16);">\ 10610 <div class="btn-zoom-control" data-inout="I" style="cursor: pointer; width: 30px; height: 30px;">\ 10611 <svg style="fill: #6b6b6b; margin: 3px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 11h-4V7c0-.55-.45-1-1-1s-1 .45-1 1v4H7c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1v-4h4c.55 0 1-.45 1-1s-.45-1-1-1z"/></svg>\ 10612 </div>\ 10613 <div class="slider-wrap-container" style="height: 130px;">\ 10614 <div class="slider-wrap small" style="text-align: center; height: 100%;">\ 10615 <div style="max-height: 100%;" class="zoom-control-slider"></div>\ 10616 </div>\ 10617 </div>\ 10618 <div class="btn-zoom-control" data-inout="O" style="cursor: pointer; width: 30px; height: 30px;">\ 10619 <svg style="fill: #6b6b6b; margin: 3px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 13H7c-.55 0-1-.45-1-1s.45-1 1-1h10c.55 0 1 .45 1 1s-.45 1-1 1z"/></svg>\ 10620 </div>\ 10621 </div>\ 10622 '; 10623 var $zoomController = $(zoomControlHtml); 10624 $(container).append($zoomController); 10625 var zoom_slider = $zoomController.find('.zoom-control-slider').slider({ 10626 'orientation': 'vertical', 10627 'min' : 1, 10628 'max' : 14, 10629 'step' : 1, 10630 'value' : 3, 10631 'handle' : '<div>dfafasdfas</div>', 10632 // 'reversed' : true, 10633 'tooltip' : 'hide', 10634 }).on('slide', function(data) { 10635 c_map.setLevel(data.value); 10636 c_map.setCenter(marker.getPosition()); 10637 }).on('slideStop', function(data) { 10638 c_map.setLevel(data.value); 10639 c_map.setCenter(marker.getPosition()); 10640 }); 10641 10642 $zoomController.find('.btn-zoom-control').on('click', function() { 10643 if($(this).data('inout') == 'I') { 10644 c_map.setLevel(c_map.getLevel() - 1); 10645 zoom_slider.slider('setValue', c_map.getLevel()); 10646 } else if($(this).data('inout' == 'O')) { 10647 c_map.setLevel(c_map.getLevel() + 1); 10648 zoom_slider.slider('setValue', c_map.getLevel()); 10649 } 10650 }); 10651 10652 kakao.maps.event.addListener(c_map, 'zoom_changed', function() { 10653 zoom_slider.slider('setValue', c_map.getLevel()); 10654 }); 10655 } 10656 10657 if((useTitle == true || useContent == true) && (mapTitle || mapContent)) { 10658 var iwContent = ''; 10659 if(useTitle == true && mapTitle) { 10660 iwContent = '<div class="title">' + mapTitle + '</div>'; 10661 } 10662 if(useContent == true && mapContent) { 10663 iwContent += '<div class="content">' + mapContent + '</div>'; 10664 } 10665 if(iwContent) { 10666 iwContent = '<div class="contact-map-info-window"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M8 0C4.69 0 2 2.69 2 6s1 4 6 10c5-6 6-6.69 6-10s-2.69-6-6-6zm0 8.3a2.3 2.3 0 1 1 0-4.6 2.3 2.3 0 0 1 0 4.6z"></path></svg>
10666' + iwContent + '</div>'; 10667 var infoWindow = $(iwContent); 10668 $(container).append(infoWindow); 10669 } 10670 } 10671 $(window).on("resize", function() { 10672 c_map.relayout(); 10673 c_map.setCenter(marker.getPosition()); 10674 }); 10675 }); 10676 } 10677 10678 if($('.element:not([data-type2="franchise map"]) [data-map_kind="naver"]').length && (typeof naver == 'undefined' || typeof naver.maps == 'undefined' || naver.maps == null || property.VALIDPLAN == '')) { 10679 $('.element:not([data-type2="franchise map"]) [data-map_kind="naver"]').html('ì§ëì°ê²°í´ì ë¨. Client ID íì¸'); 10680 $('.element:not([data-type2="franchise map"]) [data-map_kind="naver"]').html('<iframe class="google-map" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3165.5659473821083!2d127.0282496015659!3d37.494568!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x357ca1598c361b2b%3A0xdbf9af292beff3c!2z6rCV64Ko!5e0!3m2!1sko!2skr!4v1637303748377!5m2!1sko!2skr" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"></iframe>'); 10681 } else { 10682 $('.element:not([data-type2="franchise map"]) [data-map_kind="naver"]').each(function() { 10683 var container = this; 10684 var lat = $(this).data("lat"); 10685 var lng = $(this).data("lng"); 10686 var options = { center: new naver.maps.LatLng(lat, lng), zoom: 17}; 10687 var zoomInOut = $(this).data("zoominout"); 10688 var zoom = $(this).data("zoom"); 10689 var mapTitle = $(this).data("maptitle"); 10690 var mapContent = $(this).data("mapcontent"); 10691 var useTitle = $(this).data("usetitle"); 10692 var useContent = $(this).data("usecontent"); 10693 if(typeof zoomInOut == 'undefined' || !zoomInOut) zoomInOut = false; 10694 if(typeof mapTitle == 'undefined' || !mapTitle) mapTitle = ''; 10695 if(typeof mapContent == 'undefined' || !mapContent) mapContent = ''; 10696 if(typeof useTitle == 'undefined' || !useTitle) useTitle = false; 10697 if(typeof useContent == 'undefined' || !useContent) useContent = false; 10698 var c_map = new naver.maps.Map(container, options); 10699 var marker = new naver.maps.Marker({ position: new naver.maps.LatLng(lat, lng), map: c_map}); 10700 10701 if(zoomInOut == true) { 10702 var zoomControlHtml = ''; 10703 zoomControlHtml += '\ 10704 <div class="zoom-control" style="margin-top: 8px; margin-right: 8px; right: 0; width: 30px; position: absolute; background-color: #fff; z-index: 1; border-radius: 3px; box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.16);">\ 10705 <div class="btn-zoom-control" data-inout="I" style="cursor: pointer; width: 30px; height: 30px;">\ 10706 <svg style="fill: #6b6b6b; margin: 3px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 11h-4V7c0-.55-.45-1-1-1s-1 .45-1 1v4H7c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1v-4h4c.55 0 1-.45 1-1s-.45-1-1-1z"/></svg>\ 10707 </div>\ 10708 <div class="slider-wrap-container" style="height: 130px;">\ 10709 <div class="slider-wrap small" style="text-align: center; height: 100%;">\ 10710 <div style="max-height: 100%;" class="zoom-control-slider"></div>\ 10711 </div>\ 10712 </div>\ 10713 <div class="btn-zoom-control" data-inout="O" style="cursor: pointer; width: 30px; height: 30px;">\ 10714 <svg style="fill: #6b6b6b; margin: 3px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 13H7c-.55 0-1-.45-1-1s.45-1 1-1h10c.55 0 1 .45 1 1s-.45 1-1 1z"/></svg>\ 10715 </div>\ 10716 </div>\ 10717 '; 10718 var $zoomController = $(zoomControlHtml); 10719 $(container).append($zoomController); 10720 var zoom_slider = $zoomController.find('.zoom-control-slider').slider({ 10721 'orientation': 'vertical', 10722 'min' : 6, 10723 'max' : 21, 10724 'step' : 1, 10725 'value' : 17, 10726 'handle' : '<div>dfafasdfas</div>', 10727 'reversed' : true, 10728 'tooltip' : 'hide', 10729 }).on('slide', function(data) { 10730 c_map.setZoom(data.value); 10731 c_map.setCenter(marker.getPosition()); 10732 }).on('slideStop', function(data) { 10733 c_map.setZoom(data.value); 10734 c_map.setCenter(marker.getPosition()); 10735 }); 10736 10737 $zoomController.find('.btn-zoom-control').on('click', function() { 10738 if($(this).data('inout') == 'I') { 10739 c_map.setZoom(c_map.getZoom() + 1); 10740 zoom_slider.slider('setValue', c_map.getZoom()); 10741 } else if($(this).data('inout' == 'O')) { 10742 c_map.setZoom(c_map.getZoom() - 1); 10743 zoom_slider.slider('setValue', c_map.getZoom()); 10744 } 10745 }); 10746 10747 naver.maps.Event.addListener(c_map, 'zoom_changed', function(zoom) { 10748 zoom_slider.slider('setValue', c_map.getZoom()); 10749 }); 10750 } 10751 10752 if((useTitle == true || useContent == true) && (mapTitle || mapContent)) { 10753 var iwContent = ''; 10754 if(useTitle == true && mapTitle) { 10755 iwContent = '<div class="title">' + mapTitle + '</div>'; 10756 } 10757 if(useContent == true && mapContent) { 10758 iwContent += '<div class="content">' + mapContent + '</div>'; 10759 } 10760 if(iwContent) { 10761 iwContent = '<div class="contact-map-info-window"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M8 0C4.69 0 2 2.69 2 6s1 4 6 10c5-6 6-6.69 6-10s-2.69-6-6-6zm0 8.3a2.3 2.3 0 1 1 0-4.6 2.3 2.3 0 0 1 0 4.6z"></path></svg>
10761' + iwContent + '</div>'; 10762 var infoWindow = $(iwContent); 10763 $(container).append(infoWindow); 10764 } 10765 } 10766 $(window).on("resize", function() { 10767 // c_map.relayout(); 10768 c_map.setCenter(marker.getPosition()); 10769 }); 10770 }); 10771 } 10772 10773 $('.element [data-map="true"]:not(iframe)').each(function() { 10774 var map_url = $(this).attr('data-url'); 10775 if(typeof map_url != 'undefined' && map_url) { 10776 var map_iframe = getMapURL(map_url,'html'); 10777 $(this).replaceWith(map_iframe); 10778 if(map_iframe.indexOf('google-map disabled') === -1) $(this).next('.map-undefined').remove(); 10779 } 10780 }); 10781 10782 if($('.element a[data-popup][data-popup-name]').length > 0 && (!b.VALIDPLAN || b.VALIDTYPE == 'PK')) { 10783 $('.element a[data-popup][data-popup-name]').addClass('disabled'); 10784 } 10785 if($('.element[data-layout]').length > 0) { 10786 setLayoutHeight(); 10787 } 10788 setBlockParallax($('.element')); 10789 10790 $('.dsgn-body').fitVids(); 10791 10792 if($('.element[data-aos]').length > 0) scheduleBlockAOSRefresh(); 10793 $('html').toggleClass('gtoolbar-sticky-ON', $('.cl-gtoolbar[data-sticky="ON"]').length > 0 ? true : false); 10794 deferred.resolve(); 10795 }); 10796 }); 10797 //parallax(); 10798 return deferred.promise(); 10799 }, 10800 setLoginout : function (show, sid, site, profileimg) { 10801 if(show=='1') { 10802 $.getJSON('/template/checkLogin', function(data) { 10803 if(data.user && site) { 10804 if($('#tpl-menu').find('.loginout')) $('#tpl-menu').find('.loginout').remove(); 10805 setLoginoutNav(sid, function() { 10806 getProfileMember(); 10807 getProfileAuthor(sid,profileimg); 10808 $('.el_0').css('margin-top','55px'); 10809 }); 10810 } else { 10811 $('#tpl-menu').append('<li class="loginout"><a href="javascript:;" title="CREATORLINK login"><i class="fa fa-user"></i></a></li>'); 10812 } 10813 }); 10814 } 10815 }, 10816 liveUpdate : function(obj) { 10817 // console.log('liveUpdate'); 10818 10819 var b = this.b; 10820 10821 var checkSidebar = $('.el-menu > header').hasClass('sidebar'); 10822 var checkClnav = $.clnav.check(); 10823 var menu_class = { 10824 'navlist': (checkClnav) ? 'cl-nav-list ' : '', 10825 'navitem': (checkClnav) ? 'cl-nav-item ' : '', 10826 'subnavlist': (checkClnav) ? 'cl-subnav-list ' : '', 10827 'subnavitem': (checkClnav) ? 'cl-subnav-item ' : '', 10828 }; 10829 var menu = (checkClnav) ? $('.el-menu > header.cl-nav .cl-nav-list') : $('#tpl-menu'); 10830 var idx = 0; 10831 var regex = /^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 10832 var regex2 = /^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 10833 menu.empty(); 10834 10835 if($('.fmcss').length > 0) $('.fmcss').remove(); //forum background css 10836 10837 $.each(obj, function (idx, obj) { 10838 if(obj.name == 'ì ì²´ìí') { 10839 if(b.LUX || b.VALIDTYPE != 'SM' || !b.SLANG || (typeof b.SLANG.select_code !== 'undefined' && b.SLANG.select_code != 'ko')){ 10840 return true; 10841 } 10842 } 10843 10844 b.MENULIST.push(obj.name.replace(/ /g,'-')); 10845 if(obj.children) { 10846 $.each(obj.children, function (idx, obj){ 10847 b.MENULIST.push(obj.name.replace(/ /g,'-')); 10848 }); 10849 } 10850 }); 10851 10852 if(b.ONE) { 10853 linkUrl = (b.VIEW) ? '/#' : '#'; 10854 linkUrl = (b.VIEW && !b.PUBLISH) ? '/render/index#' : linkUrl; 10855 } else { 10856 linkUrl = (b.URL=='/') ? '/' : b.URL + '/'; 10857 } 10858 10859 for (i = 0; i < obj.length; i++) { 10860 var link = obj[i].name; 10861 if(b.MENULIST.includes(link.replace(/ /g, '-'))) link = link.replace(/ /g, '-'); 10862 10863 if(link == 'ì ì²´ìí') { 10864 if(b.LUX || b.VALIDTYPE != 'SM' || !b.SLANG || (typeof b.SLANG.select_code !== 'undefined' && b.SLANG.select_code != 'ko')) { 10865 continue; 10866 } 10867 } 10868 10869 var parent = b.PAGE.split(','); 10870 var link_text = ''; 10871 var target = ''; 10872 var name = (checkClnav) ? `<span class="cl-nav-name">${obj[i].name}</span>` : obj[i].name; 10873 var isInner = ''; 10874 var isBookmark = ''; 10875 var isFlink = ''; 10876 var isFolder = ''; 10877 10878 if(i==0) { 10879 if(obj[i].display=='on') { 10880 b.MENUCHECK.intro = true; 10881 b.MENULINK.push(link); 10882 } 10883 continue; 10884 } 10885 10886 if(obj[i].name =='ì ì²´ìí') { 10887 obj[i].link = ''; 10888 } 10889 10890 var active = (link == b.PAGE || link == parent[0]) ? 'active' : ''; 10891 var sub = obj[i].children.length; 10892 10893 if (obj[i].display == 'on') { 10894 b.MENUCHECK.main = true; 10895 10896 var menuoption_child = []; 10897 var menuLink = (typeof obj[i].link != 'undefined') ? obj[i].link : ''; 10898 var checkLink = (menuLink) ? true : false;
10899 var checkLinkInner = (checkLink && $.inArray(menuLink.replace(/ /g,'-'), b.MENULIST) > -1) ? true : false; 10900 var checkLinkBookmark = (menuLink.match(/^\@/g) !== null) ? true : false; 10901 var checkLinkFile = (menuLink.match(/^flink\@[0-9]/gi) !== null) ? true : false; 10902 var checkLinkFolder = (menuLink === 'folder-menu') ? true : false; 10903 10904 link = (checkLink) ? ((checkLinkInner) ? menuLink.replace(/ /g,'-') : menuLink) : link; 10905 isInner = (checkLinkInner) ? menuLink.replace(/ /g,'-') : ''; 10906 isBookmark = (checkLinkBookmark) ? ` attr-bookmark="${link.replace(/^\@/g,'')}"` : ''; 10907 isFlink = (checkLinkFile) ? ` attr-flink="${link.replace(/^flink\@/gi,'')}"` : ''; 10908 isFolder = (checkLinkFolder) ? ` attr-folder="true"` : ''; 10909 target = (obj[i].ltarget == '_blank') ? 'target="_blank"' : ''; 10910 10911 if(checkLink && !checkLinkInner && !checkLinkBookmark) { // link-type: link-out ==> a[attr-link] 10912 if(checkBase64Encode(link)) link = Base64.decode(link); 10913 } 10914 10915 if(link == 'folder-menu') { 10916 link_text = 'javascript:;'; 10917 target = ''; 10918 if(typeof menu.closest('.navbar-menu-'+b.SID).attr('data-submenu') != 'undefined') target = ' data-toggle="dropdown" aria-expanded="false" data-submenu="true" '; 10919 } else { 10920 if(!checkLink) b.MENULINK.push(link); 10921 link_text = (b.MENULIST.includes(link)) ? linkUrl + link : (!regex2.test(link) && regex.test(link)) ? '//' + link : link; 10922 } 10923 10924 if (sub) { 10925 var sub_menu = ''; 10926 var sub_show = 0; 10927 10928 sub_menu = `<ul class="${menu_class['subnavlist']} dropdown-menu">\r\n`; 10929 for (j = 0; j < obj[i].children.length; j++) { 10930 var child = obj[i].children; 10931 var childMenuLink = (typeof child[j].link != 'undefined') ? child[j].link : ''; 10932 var checkChildLink = (childMenuLink) ? true : false; 10933 var checkChildLinkInner = (checkChildLink && b.MENULIST.includes(childMenuLink.replace(/ /g, '-'))) ? true : false; 10934 var checkChildLinkBookmark = (childMenuLink.match(/^\@/g) !== null) ? true : false; 10935 var checkChildLinkFile = (childMenuLink.match(/^flink\@[0-9]/gi) !== null) ? true : false; 10936 var child_link = (checkChildLink) ? ((checkChildLinkInner) ? childMenuLink.replace(/ /g,'-') : childMenuLink) : ''; 10937 var child_isInner = (checkChildLinkInner) ? childMenuLink.replace(/ /g,'-') : ''; 10938 var child_isBookmark = (checkChildLinkBookmark) ? ` attr-bookmark="${child_link.replace(/^\@/g,'')}"` : ''; 10939 var child_isFlink = (checkChildLinkFile) ? ` attr-flink="${child_link.replace(/^flink\@/gi,'')}"` : ''; 10940 var sub_link = (child_link) ? child_link : child[j].name.replace(/ /g, "-"); 10941 var sub_target = (child[j].ltarget == '_blank') ? 'target="_blank"' : ''; 10942 var sub_name = (checkClnav) ? `<span class="cl-subnav-name">${child[j].name}</span>` : child[j].name; 10943 var sub_active = ''; 10944 var sub_link_text = ''; 10945 10946 if(checkChildLink && !checkChildLinkInner && !checkChildLinkBookmark) { // link-type: link-out ==> a[attr-link] 10947 if(checkBase64Encode(child_link)) sub_link = Base64.decode(child_link); 10948 } 10949 10950 var page_arr = (b.VIEW) ? b.PAGE.split(',') : [b.PAGE]; 10951 if (!active && (sub_link == page_arr[0] || link == parent[0])) { 10952 sub_active = 'active'; 10953 active = 'open'; 10954 if(!checkClnav && $('body').width() > 768) active = 'active'; 10955 } 10956 10957 if (child[j].display == 'on') { 10958 b.MENUCHECK.sub = true; 10959 if(!checkChildLink) b.MENULINK.push(child[j].name.replace(/ /g, '-')); 10960 sub_link_text = ($.inArray(sub_link,b.MENULIST) > -1) ? linkUrl+sub_link : (!regex2.test(sub_link) && regex.test(sub_link)) ? '//'+sub_link : sub_link; 10961 sub_menu += ` 10962 <li class="${menu_class['subnavitem'] + sub_active}"><a href="${sub_link_text}" ${sub_target + child_isBookmark + child_isFlink}>${sub_name}</a></li>\r\n 10963 `; 10964 sub_show++; 10965 10966 menuoption_child.push({ 10967 'idx0': b.MENUOPTION.length, 10968 'idx1': menuoption_child.length, 10969 'name': child[j].name, 10970 'active': sub_active, 10971 'href': sub_link_text, 10972 'target': sub_target, 10973 'isinner': child_isInner, 10974 'isbookmark': child_isBookmark, 10975 'isflink': child_isFlink, 10976 'depth': 1, 10977 'topmobile': child[j].topmobile, 10978 }); 10979 } 10980 } 10981 sub_menu = sub_menu +'</ul>\r\n';
10982 var caret = (checkSidebar) ? ' <i class="fa fa-caret-right fa-1" aria-hidden="true"></i>' : ' <i class="fa fa-caret-down fa-1" aria-hidden="true"></i>'; 10983 10984 if (sub_show) { 10985 var sub_menu_open = (typeof menu.closest('.navbar-menu-'+b.SID).attr('data-submenu') != 'undefined' && menu.closest('.navbar-menu-'+b.SID).attr('data-submenu') == 'open' && active != 'open') ? 'open' : ''; 10986 menu.append(`\r\n<li class="${menu_class['navitem'] + active + sub_menu_open} dropdown"><a href="${link_text}" class="dropdown-toggle" ${target + isBookmark + isFlink}>${name + caret}</a></li>\r\n`); 10987 } else { 10988 menu.append(`\r\n<li class="${menu_class['navitem'] + active}"><a href="${link_text}" ${target + isBookmark + isFlink}>${name}</a></li>\r\n`); 10989 } 10990 if(sub_show) menu.find('.dropdown:last').append(sub_menu); 10991 } else { 10992 menu.append(`\r\n<li class="${menu_class['navitem'] + active}"><a href="${link_text}" ${target + isBookmark + isFlink}>${name}</a></li>\r\n`); 10993 } 10994 10995 b.MENUOPTION.push({ 10996 'idx0': b.MENUOPTION.length, 10997 'name': obj[i].name, 10998 'active': active, 10999 'href': link_text, 11000 'target': target, 11001 'isinner': isInner, 11002 'isbookmark': isBookmark, 11003 'isflink': isFlink, 11004 'isfolder': isFolder, 11005 'depth': 0, 11006 'children': menuoption_child, 11007 'topmobile': obj[i].topmobile, 11008 }); 11009 11010 idx++; 11011 } 11012 } 11013 11014 11015 // menu ver3 : fheader 11016 // - Add #fixed-menu, #mobile-nav 11017 // - Set mobile-design 11018 if ($.clnav.check()) $.clnav.init(); 11019 else if ($('header.navbar').hasClass('navbar-fheader')) $.fheader.init(); 11020 11021 if( typeof b.VALIDPLAN != 'undefined' && b.VALIDPLAN && 11022 typeof b.VALIDTYPE != 'undefined' && b.VALIDTYPE != 'PK' 11023 ) { 11024 if(b.VALIDTYPE == 'SM') { 11025 $.umember.init(b.SITEUM,b.SITEUMLANG,b.SITEUMDISPLAY, function() { 11026 $.psearch.init();
11027 $.shopping.init(); 11028 $.slang.init(b.SLANG); 11029 }); 11030 } else if(b.VALIDTYPE == 'BN') { 11031 $.umember.init(b.SITEUM,b.SITEUMLANG,b.SITEUMDISPLAY, function() { 11032 $.slang.init(b.SLANG); 11033 }); 11034 } else { 11035 $.slang.init(b.SLANG); 11036 } 11037 } else { 11038 $.slang.init(); 11039 } 11040 11041 // menu ver3 : fheader 11042 // - Set site page top padding 11043 // - Set menu config btn position 11044 if ($('header.navbar').hasClass('navbar-fheader')) $.fheader.set(); 11045 11046 $('header .navbar-nav').removeClass('hide').removeClass('preloading'); 11047 $('body,html').animate({scrollTop: 0}, 300,'easeInOutQuart'); 11048 11049 property.MENU_BREADCRUMB_MAP = $.psearch.buildMenuBreadcrumbMap(b.MENUOPTION); 11050 11051 }, 11052 syncUpdate : function($el,data) { 11053 $('#el-empty').empty().append($el.outerHTML()); 11054 var $sync = $('#el-empty'), 11055 nodes = $sync.find('.item'), 11056 $sync_row = ($sync.find('.sync-option').length > 0) ? $sync.find('.sync-row') : $sync.find('.slick'), 11057 $sync_loop = $sync.find('[data-sync-loop="true"]'), 11058 checkSyncGalleryFrame = false, 11059 checkSyncHtmlReplace = false, 11060 sync_gallery = {}, 11061 p = _this.b.RESOURCE + '/' + _this.b.SID + '/'; 11062 11063 checkSyncHtmlReplace = ($sync.find('input.sync-option').length > 0 && $sync.find('.layout-container').length == 0) ? true : false; 11064 setOldVerBlockView($sync,data); 11065 11066 if(typeof data.sync !='undefined' && typeof data.sync.list != 'undefined' && (data.sync.list).length) { 11067 $sync_row.empty(); 11068 var nodes_count = nodes.length; 11069 $.each(data.sync.list, function(i,v) { 11070 var nodes_pos = i % nodes_count, 11071 $item = $(nodes[nodes_pos]); 11072 var imgbg_check = (typeof $item.find('.img-bg').attr('style') == 'undefined') ? false : true, 11073 href = '/' + v.page + '/view/' + v.seq, 11074 alink = (_this.b.PUBLISH) ? href : '/render' + href; 11075 11076 switch(v.type) { 11077 case "gallery": 11078 var img = getServeImage(v.image,'0',p); 11079 (v.mode == 'project') ? 11080 $item.find('a').attr('href', alink) : 11081 $item.find('a').attr('href', img).attr('data-gallery','').attr('data-title',v.title); 11082 break; 11083 case "shopping": 11084 if(typeof data.sync.member_only[v.pid] != 'undefined' && data.sync.member_only[v.pid] == 'ON') { 11085 if(_this.b.UMEMBER.check_login == true) { 11086 $item.find('a').attr('href',alink); 11087 } else { 11088 $item.find('a').attr('href','javascript:member_only_item();'); 11089 } 11090 } else $item.find('a').attr('href',alink); 11091 break; 11092 11093 case "lux": 11094 $item.find('a').attr('href',(_this.b.PUBLISH) ? '/_product/' + v.seq : '/render/_product/' + v.seq); 11095 break; 11096 } 11097 var brand_name = (v.brand_name != 'undefined' && v.brand_name && v.brand_name != '-') ? v.brand_name : ''; 11098 $item.find('img').attr('src',v.image); 11099 $item.find('.brand').html(brand_name); 11100 $item.find('.name').html(v.title); 11101 $item.find('.caption').html(v.caption); 11102 11103 if(v.type == 'gallery' && v.mode == 'gallery') { 11104 checkSyncGalleryFrame = true; 11105 sync_gallery.elsettings = v.elsettings; 11106 sync_gallery.type = 'gallery'; 11107 } 11108 if(typeof data.sync.member_only[v.pid] != 'undefined' && data.sync.member_only[v.pid] == 'ON' && _this.b.UMEMBER.check_login == false) { 11109 $item.find('.price').addClass('hidden'); 11110 $item.find('.sale').addClass('hidden'); 11111 $item.find('.price-sale').addClass('hidden'); 11112 } else { 11113 (v.price != '') ? $item.find('.price').text('â©'+number_format(v.price)) : $item.find('.price').text('â©0'); 11114 11115 if(v.sale_rate > 0) $item.find('.sale').removeClass('hide').text(v.sale_rate + '%'); 11116 else { 11117 if($item.find('.sale').parent().hasClass('img-content')) $item.find('.sale').addClass('hide'); 11118 $item.find('.sale').text(''); 11119 } 11120 11121 $item.find('.price-unit-pricing').remove(); 11122 if(v.product_unit_str) { 11123 var tmp_unit_selector = ($item.find('ul.price-wrap').length > 0) ? `ul.price-wrap` : `.content`; 11124 var tmp_unit_wrap = ($item.find('ul.price-wrap').length > 0) ? `li` : `div`; 11125 $item.find(tmp_unit_selector).append(`<${tmp_unit_wrap} class="price-unit-pricing">${v.product_unit_str}</${tmp_unit_wrap}>`); // ë¨ìë¹ ê°ê²© 11126 } 11127 11128 if(v.sale > 0 && v.sale > v.price) $item.find('.price-sale').text('â©'+number_format(v.sale)); 11129 else $item.find('.price-sale').addClass('hidden'); 11130 } 11131 11132 if(imgbg_check) $item.find('.img-bg').attr('style','background-image: url("' + v.image + '"'); 11133 if($item.find('.sync-label-number').length > 0) $item.find('.sync-label-number').text(i+1); 11134 if(v.soldout) $item.find('.soldout').removeClass('hidden'); 11135 $sync_row.append($item.outerHTML()); 11136 11137 if(data.type2 == 'imgpitem' && $sync_loop.length > 0) { 11138 if($sync_loop.children('li').eq(i).length == 0) $sync_loop.append($sync_loop.children('li').eq(0).clone().removeClass('active')); 11139 $sync_loop.children('li').eq(i).attr('data-idx',i); 11140 } 11141 checkSyncHtmlReplace = true; 11142 }); 11143 11144 if(checkSyncGalleryFrame && typeof sync_gallery.type != 'undefined') { 11145 appendGalleryFrame($sync, data.seq, sync_gallery.type, sync_gallery.elsettings); 11146 } 11147 if(checkSyncHtmlReplace) tag = $sync.html(); 11148 } 11149 var r = $('#el-empty > .element:eq(0)').html(); 11150 $('#el-empty').empty(); 11151 // console.log(r); 11152 return r; 11153 }, 11154 galleryUpdate : function(el,data) { 11155 // console.log(`galleryUpdate: el`,el); 11156 var _this = this; 11157 $('#el-empty').append($(data.source)); 11158 $('#el-empty').find('[data-loop="true"]').html(''); 11159 11160 var checkGalleryListSample = false, 11161 checkGalleryListEmpty = true, 11162 source = data.source, 11163 nodes = $(source).find('[data-loop="true"]').children('.grid'), 11164 p = $('#el-empty').children(), 11165 g = p.clone().removeClass().addClass('galleryPL'+el.seq).addClass('gallery-popup'), 11166 i = [], 11167 view = $(source).find('[data-loop="true"]').data('view'), 11168 g_number = $(tag).find("[data-loop='true']").data('gallery-no'),
11169 total = (typeof data.total != 'undefined' && data.total) ? data.total : 0; 11170 11171 $('#el-empty').after(g); 11172 $(g).after('<div class="gallery-empty"></div>'); 11173 11174 if(typeof view == 'undefined') view = 10; 11175 11176 var g_settings = (typeof el.elsettings == 'undefined' || el.elsettings == '') ? {} : $.parseJSON(el.elsettings), 11177 cookie_page = 1, 11178 cookie_view = view, 11179 cookie_gallery_category = '', 11180 is_gc_cookie = (typeof $.cookie('gallery-category-'+el.seq) != 'undefined' && $.cookie('gallery-category-'+el.seq).length > 0) ? true : false, 11181 block_lang = (typeof g_settings.blocklang != 'undefined') ? g_settings.blocklang : LANG, 11182 field_oldver = (typeof g_settings.field_oldver != 'undefined' && g_settings.field_oldver.length > 0) ? g_settings.field_oldver : []; 11183 field_disable = (typeof g_settings.field_disable != 'undefined' && g_settings.field_disable.length > 0) ? g_settings.field_disable : []; 11184 var cookie_gallery_orderby = 'recent'; 11185 11186 var category_onoff = (typeof g_settings.category_display != 'undefined' && g_settings.category_display) ? g_settings.category_display : 'OFF'; 11187 var gallery_sort = (typeof g_settings.gallery_sort != 'undefined' && g_settings.gallery_sort) ? g_settings.gallery_sort : 'default'; 11188 if(el.mode != 'shopping' && gallery_sort == 'product') gallery_sort = 'default'; 11189 11190 // var adultonly_onoff = (typeof g_settings.adult_only != 'undefined' && g_settings.adult_only) ? g_settings.adult_only : 'OFF'; 11191 if( category_onoff == 'ON' && 11192 typeof $.cookie('ci_goto-gallery') != 'undefined' && $.cookie('ci_goto-gallery') == el.seq && 11193 typeof $.cookie('ci_goto-gallery-cate') != 'undefined' && g_settings.category.indexOf('|' + $.cookie('ci_goto-gallery-cate') + '|') > -1 && 11194 typeof g_settings.category != 'undefined' && g_settings.category 11195 ) { 11196 cookie_gallery_category = $.cookie('ci_goto-gallery-cate'); 11197 is_gc_cookie = true; 11198 } else if($.cookie('loadmore-' + el.seq)) { 11199 cookie_page = $.cookie('loadmore-'+el.seq); 11200 cookie_gallery_category = (typeof $.cookie('gallery-category-'+el.seq) != 'undefined') ? $.cookie('gallery-category-'+el.seq) : ''; 11201 cookie_gallery_orderby = (typeof $.cookie('gallery-orderby-' + el.seq) != 'undefined') ? $.cookie('gallery-orderby-' + el.seq) : ''; 11202 cookie_view = cookie_page * view; 11203 } else { 11204 var checkCateHomeHide = (category_onoff == 'ON' && 11205 typeof g_settings.category != 'undefined' && g_settings.category && 11206 typeof g_settings.category_home_hide != 'undefined' && g_settings.category_home_hide) ? true : false; 11207 if(checkCateHomeHide) { 11208 var gc = g_settings.category.replace(/\|/g,'').split(','); 11209 cookie_gallery_category = gc[0]; 11210 is_gc_cookie = true; 11211 11212 $.cookie('gallery-catehome-' + el.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 11213 } 11214 } 11215 11216 if(el.seq == 'all_products') { 11217 // cookie_page = (typeof $.cookie('gallery-page-all_products') !== 'undefined' && $.cookie('gallery-page-all_products') != '')? $.cookie('gallery-page-all_products') : 1; 11218 cookie_gallery_category = getAllProductsSortVal(g_settings); 11219 // cookie_view = cookie_page * view; 11220 } else { 11221 if(!property.VIEW) $.removeCookie('gallery-page-all_products', { path: '/' }); 11222 } 11223 11224 $.cookie('gallery-page-' + el.seq, cookie_page, { path : '/', expires: 12 * 60 * 60 * 1000 }); 11225 $.cookie('gallery-category-' + el.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 11226 $.cookie('gallery-orderby-' + el.seq, cookie_gallery_orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 11227 $.removeCookie('loadmore-' + el.seq, { path : '/' }); 11228 11229 var checkLoadmoreInLoop = ($(source).find('[data-loop="true"] .loadmore-wrap').length) ? true : false; 11230 var glm = $(source).find('.loadmore-wrap'); 11231 11232 var checkGallerySVG = ($(source).find('.gimg-svg-wrap').length > 0) ? true : false, 11233 checkGFrameTitleOFF = (el.mode == 'gallery' && (typeof g_settings.gframe_title_visible != 'undefined' && g_settings.gframe_title_visible == 'OFF')) ? true : false;
11234 11235 var param = (el.page=='index,template' && property.param.indexOf('/org/') == -1) ? property.param + '/org/' + el.page : property.param; 11236 var post_data = { g_mode: el.mode, visible: true, sfl: 'category', stx: cookie_gallery_category }; 11237 11238 if(el.seq == 'all_products') { 11239 post_data = { g_mode: el.mode, visible: true, sfl: 'orderby', stx: cookie_gallery_category }; 11240 } 11241 11242 var g_data = { 11243 'list' : property.CONTENTS['el' + el.seq]['list'], 11244 'total' : property.CONTENTS['el' + el.seq]['total'] 11245 } 11246 11247 var checkUseComment = checkUseCommentFunc(el.mode, el.eltag); 11248 var checkUseLike = checkUseLikeFunc(el.mode, el.eltag); 11249 11250 $.each(g_data.list, function (idx, v) { 11251 i.push(v); 11252 }); 11253 11254 total = (typeof g_data.total.list_total != 'undefined') ? g_data.total.list_total : g_data.total; 11255 // total = (typeof g_data.total.list_total != 'undefined') ? g_data.total.list_total : 0; 11256 cookie_view = (cookie_view < total) ? cookie_view : total; 11257 11258 if( total > 0 ) checkGalleryListEmpty = false; 11259 if( i.length>0 || (i.length==0 && is_gc_cookie) ) { 11260 var loop_count = nodes.length, item_index = 0, elem = []; 11261 $.each(g_data.list,function(index,v) { 11262 loop_pos = index%loop_count; 11263 c = nodes[loop_pos]; 11264 var isTitle = (v.title.length > 0) ? true:false; 11265 $(c).find('.non_text').removeClass('non_text'); 11266 11267 if(el.mode != 'shopping') { 11268 if(v.title.length==0) $(c).find('.figure.title').removeClass('non_text').addClass('non_text'); 11269 if(v.caption.length==0) $(c).find('.figure.caption').removeClass('non_text').addClass('non_text'); 11270 } 11271 11272 v.title = (v.title.length>0) ? v.title : $.lang[block_lang]['editor.block.gallery.sample.title']; 11273 v.caption = (v.caption.length>0) ? v.caption : $.lang[block_lang]['editor.block.gallery.sample.caption']; 11274 11275 $(c).addClass('gallery-item').attr('data-index',index).attr('data-seq',v.seq); 11276 11277 11278 var vgsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}, 11279 img_path = (typeof vgsettings['storage'] != 'undefined') ? vgsettings['storage'] : _this.b.RESOURCE + '/' + _this.b.SID + '/', 11280 img_original = (typeof vgsettings['storage'] != 'undefined') ? img_path + '1920/' : img_path; 11281 11282 var folder = (typeof data.element.folder == 'undefined' || data.element.folder == 0) ? '' : data.element.folder + '/', 11283 src = getServeImage(v.image,data.element.folder,img_path), 11284 src_s0 = getServeImage(v.image,'0',img_path); 11285 if($(c).find('img').length > 0) $(c).find('img').attr('src',src); 11286 11287 if(el.mode == 'shopping') { 11288 if($(c).find('img').length > 0) $(c).find('img').attr('alt',v.title); 11289 } else if(typeof v.alt != 'undefined') { 11290 alt_replace = v.alt.replace(/\s+|\n+/g, '-'); 11291 alt_replace.replace(/-+/g, '-') 11292 if($(c).find('img').length > 0) $(c).find('img').attr('alt',alt_replace); 11293 } 11294 ensureGalleryResponsiveImageClass($(c)); 11295 11296 if($(c).find('.g-img').length > 0) $(c).find('.g-img').css('background-image', 'url('+src+')'); 11297 if(checkGallerySVG) { 11298 var gimgSVG = $(c).find('.gimg-svg-wrap svg'); 11299 gimgSVG.find('pattern').attr('id','gimgSvg_'+el.elname+'_'+index); 11300 gimgSVG.find('image').attr('xlink:href', src); 11301 gimgSVG.find('polygon, path').attr('fill', 'url(#gimgSvg_'+el.elname+'_'+index+')'); 11302 } 11303 11304 var glink = (typeof vgsettings['glink'] != 'undefined' && vgsettings['glink']) ? vgsettings['glink'] : '', 11305 glink_target = (typeof vgsettings['glink_target'] != 'undefined' && vgsettings['glink_target']) ? vgsettings['glink_target'] : ''; 11306 11307 if(glink) { 11308 if(glink.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 11309 var bookmark_seq = glink.replace(/^\@/g,''); 11310 if(typeof _this.b.SETTINGS.blockBookmarkList == 'undefined' || typeof _this.b.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 11311 glink = ''; 11312 glink_target = ''; 11313 } 11314 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 11315 glink_target = ''; 11316 } else if($.inArray(glink.replace(/^\//g,'').replace(/ /g,'-'),_this.b.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 11317 } else { // link-type: link-out ==> a[attr-link] 11318 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 11319 } 11320 } 11321 11322 $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 11323 if (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON' && property['SITEUM'] >= 1) { 11324 $(c).addClass('gallery-item').addClass('nonePrice'); 11325 $(c).find('a').attr('href', '#'); 11326 } else { 11327 if(glink) { 11328 var glink_val = makeLinkUrl(glink, _this.b.ONE, _this.b.VIEW); 11329 $(c).find('a').attr('href',glink_val); 11330 11331 if(glink.match(/^\@/g) !== null) { 11332 $(c).find('a').attr('attr-bookmark',glink.replace(/^\@/g,'')); 11333 } else if(glink.match(/^flink\@[0-9]/g) !== null) { 11334 $(c).find('a').attr('attr-flink',glink.replace(/^flink\@/g,'')); 11335 // IE ERROR_includes__H.20210603 11336 // } else if(_this.b.MENULIST.includes(glink.replace(/ /g,'-'))) { 11337 } else if($.inArray(glink.replace(/ /g,'-'),_this.b.MENULIST) > -1) { 11338 $(c).find('a').attr('data-user-link',glink_val); 11339 } else { 11340 $(c).find('a').attr('attr-link',glink); 11341 } 11342 } else { 11343 if (el.mode == 'gallery') { 11344 src_s0 = src_s0 + '?gpos='+v.pos; 11345 11346 $(c).find('a').attr('href', src_s0); 11347 $(c).find('a').attr('data-gallery', '#gframe-' + el.seq); 11348 } else { 11349 if(el.seq == "all_products") { 11350 $(c).find('a').attr('href', v.product_url); 11351 } else { 11352 if(typeof URI == 'function') URI = '/'; 11353 if(_this.b.LUX && el.mode == 'shopping') $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/_product/' + v.seq); 11354 else $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/' + v.seq); 11355 } 11356 } 11357 } 11358 } 11359 11360 if(glink_target == '_blank') $(c).find('a').attr('target','_blank'); 11361 else $(c).find('a').removeAttr('target'); 11362 11363 if(checkGFrameTitleOFF || !isTitle) $(c).find('a').attr('data-title', ''); 11364 else $(c).find('a').attr('data-title', v.title); 11365 11366 // if(adultonly_onoff == 'ON') $(c).addClass('adultonly'); 11367 11368 // caption 11369 var ftitle = $(c).find('h5.figure'), 11370 fcaption = $(c).find('p.figure').not('.comment'), 11371 fdatetime = $(c).find('.figure.datetime'), 11372 fhashtag = $(c).find('.figure.hashtag'), 11373 fbrand = $(c).find('.figure.brand'), 11374 fprice = $(c).find('.figure.price'), 11375 freview = $(c).find('.figure.review'), 11376 fcomment = $(c).find('.figure.comment'), 11377 flike = $(c).find('.figure.like'), 11378 fbasket = $(c).find('.figure.basket'); 11379 11380 $(c).find('figcaption').removeClass('hide'); 11381 11382 if (v.title || v.caption) { 11383 var gallery_caption = v.caption; 11384 gallery_caption = gallery_caption.trim().replace(/\n/g,'<br />'); 11385 11386 ftitle.html(v.title); 11387 fcaption.html(gallery_caption); 11388 if(fdatetime.length > 0) fdatetime.text(v.datetime); 11389 if(fhashtag.length > 0) fhashtag.text(v.hashtag); 11390 } 11391 11392 if(g_number) { 11393 var g_index = String(index + 1), 11394 g_num = g_index.padStart(g_number, '0');
11395 $(c).find('.figure.number').text(g_num); 11396 } 11397 11398 if(fbrand.length > 0) { 11399 var fbrand_name = (typeof v.brand_name != 'undefined' && v.brand_name) ? v.brand_name : ''; 11400 fbrand.html(v.brand_name); 11401 } 11402 11403 if(el.mode == 'shopping' || el.seq == 'all_products') { 11404 fcomment.addClass('hide'); 11405 flike.addClass('hide'); 11406 11407 v.price = typeof v.price != 'undefined' ? parseFloat(v.price) : 0; 11408 v.sale = typeof v.sale != 'undefined' ? parseFloat(v.sale) : 0; 11409 11410 var checkPriceHidden = (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON') ? true : false, 11411 gallery_price = (v.price && !checkPriceHidden) ? v.price : 0, 11412 gallery_sale_price = (typeof v.sale != 'undefined' && v.sale > 0 && v.sale > v.price && !checkPriceHidden) ? v.sale : 0, 11413 gallery_sale_per = (typeof v.sale_per != 'undefined' && v.sale_per && !checkPriceHidden) ? v.sale_per+'%' : '', 11414 product_soldout = 'íì ', 11415 product_no_sale = (typeof g_settings.sh_soldout == 'string') ? g_settings.sh_soldout : '구매ë¶ê°', 11416 product_status = ''; 11417 if(v.status == 'off' && !checkPriceHidden) { 11418 product_status = '<span class="cl-sh-soldout">' + product_no_sale + '</span>'; 11419 } else if(v.quantity_on == 'on' && v.quantity < 1 && !checkPriceHidden) { 11420 product_status = '<span class="cl-sh-soldout">' + product_soldout + '</span>'; 11421 } 11422 11423 $(c).find('.cl-sh-soldout').remove(); 11424 if(product_status != '') $(c).attr('data-soldout',true); 11425 else $(c).removeAttr('data-soldout'); 11426 11427 $(c).find('.product-badge').remove(); 11428 product_status += drawBadgeList(v.use_badge, data.badge_settings); 11429 11430 $(c).find('.cl-sh-limit').remove(); 11431 if(v.status == 'lim') { 11432 if(v.sale_now == false) { 11433 var product_limit = '<p class="cl-sh-limit">ìí 구매 ê°ë¥ 기ê°ì´ ìëëë¤.</p>'; 11434 if(freview.length > 0) { 11435 freview.after(product_limit); 11436 } else { 11437 $(c).find('figcaption:not(.top) .figure:last-child').after(product_limit); 11438 } 11439 } 11440 } 11441 11442 if($(c).find('ul.figure.price').length > 0) { 11443 // var price_off = (v.sale_price > 0 && v.sale_price > v.price) ? 100 - Math.floor((v.price / v.sale_price) * 100) : 0, 11444 // off_str = (price_off > 0) ? price_off + '% ' : '' 11445 var off_str = (v.sale_rate > 0) ? v.sale_rate + '% ' : ''; 11446 if(!_this.b.LUX) off_str = gallery_sale_per; 11447 //Ver2 11448 if(!checkPriceHidden) { 11449 $(c).find('ul.figure.price .price-val').html('₩' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 11450 $(c).find('ul.figure.price .price-val').removeClass('hide'); 11451 11452 if(gallery_sale_price > 0 && gallery_price < gallery_sale_price) { 11453 $(c).find('ul.figure.price .price-sale').html('₩' + gallery_sale_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 11454 $(c).find('ul.figure.price .price-sale-per').html(off_str); 11455 $(c).find('ul.figure.price .price-sale, ul.figure.price .price-sale-per').removeClass('hide'); 11456 if(_this.b.LUX && (v.hashtag).indexOf('í¹ê°ì¸ì¼') > -1 && $(c).find('ul.figure.price .sp-price').length == 0) { 11457 $(c).find('ul.figure.price .price-sale').after('<li class="sp-price">í¹ê°ì¸ì¼</li>'); 11458 } 11459 } else { 11460 $(c).find('ul.figure.price .price-sale, ul.figure.price .price-sale-per').addClass('hide').html(''); 11461 } 11462 11463 $(c).find('ul.figure.price .price-unit-pricing').remove(); 11464 if(v.product_unit_str) { 11465 $(c).find('ul.figure.price').append(`<li class="price-unit-pricing">${v.product_unit_str}</li>`); // ë¨ìë¹ ê°ê²© 11466 } 11467 } else { 11468 $(c).find('ul.figure.price .price-val').html('₩0'); 11469 $(c).find('ul.figure.price .price-val').addClass('hide'); 11470 } 11471 if(el.seq == 'all_products' && checkPriceHidden) $(c).find('ul.figure.price').html(''); 11472 if(product_status) $(c).find('ul.figure.price').append('<li>'+product_status+'</li>'); 11473 11474 var badge_size = getBadgeSize(data.badge_settings); 11475 $(c).find('.cl-sh-soldout').removeClass('badge-small badge-medium badge-large'); 11476 $(c).find('.cl-sh-limit').removeClass('badge-small badge-medium badge-large'); 11477 if(badge_size) { 11478 $(c).find('.cl-sh-soldout').addClass(badge_size); 11479 $(c).find('.cl-sh-limit').addClass(badge_size); 11480 } 11481 } else { 11482 //Ver1 11483 if(fprice.length == 0) fprice = fcaption; 11484 if(checkPriceHidden) fprice.html(''); 11485 else fprice.html('<span class="figure-krw">₩</span>' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + product_status); 11486 } 11487 11488 if($(c).find('ul.figure.review').length > 0) { 11489 var gallery_review = (v.review_onoff && v.review_cnt) ? v.review_cnt : 0; 11490 if(gallery_review > 0) { 11491 $(c).find('ul.figure.review, ul.figure.review li').removeClass('hide'); 11492 $(c).find('ul.figure.review .figure-review-cnt').html(gallery_review); 11493 $(c).find('ul.figure.review .figure-review-score').html(v.review_score); 11494 } else { 11495 $(c).find('ul.figure.review, ul.figure.review li').addClass('hide'); 11496 $(c).find('ul.figure.review .figure-review-cnt, ul.figure.review .figure-review-score').html(''); 11497 } 11498 } 11499 11500 if(fbasket.length > 0) { 11501 var checkOldBlock = ($(c).find('.figure.basket[data-oldver="true"]').length > 0) ? true : false, 11502 checkOldverBasket = (typeof field_oldver != 'undefined' && field_oldver && field_oldver.indexOf('basket') > -1) ? true : false, 11503 checkDisabledBasket = (typeof field_disable != 'undefined' && field_disable && field_disable.indexOf('basket') > -1) ? true : false;
11504 if(v.basket_off) fbasket.addClass('cannotby hide'); 11505 else if(el.seq == 'all_products') fbasket.removeClass('hide'); 11506 else if(checkDisabledBasket || (!checkDisabledBasket && checkOldBlock && !checkOldverBasket)) fbasket.addClass('hide'); 11507 else if(property.VALIDTYPE != 'SM') fbasket.addClass('hide'); 11508 else fbasket.removeClass('hide'); 11509 } 11510 11511 } else { 11512 fbrand.addClass('hide'); 11513 fprice.addClass('hide'); 11514 freview.addClass('hide'); 11515 fbasket.addClass('hide'); 11516 11517 if ( checkUseComment 11518 && g_settings.comment_display == 'ON' 11519 && !(field_disable !== undefined && field_disable.indexOf('comment') > -1) 11520 && fcomment.length > 0 11521 && (typeof v.comment_cnt != 'undefined' && v.comment_cnt > 0) 11522 ) { 11523 fcomment.removeClass('hide'); 11524 fcomment.find('.figure-comment-cnt').html(v.comment_cnt); 11525 } else { 11526 fcomment.addClass('hide'); 11527 fcomment.find('.figure-comment-cnt').empty(); 11528 } 11529 11530 if ( checkUseLike 11531 && (g_settings.like_display !== undefined && g_settings.like_display != 'N') 11532 && !(field_disable !== undefined && field_disable.indexOf('like') > -1) 11533 && flike.length > 0 11534 ) { 11535 flike.removeClass('hide').find('.figure-like-cnt').html(0); 11536 if(v.like !== undefined) { 11537 flike.find('.figure-like-cnt').html(v.like.cnt); 11538 if (v.like.own && v.like.cnt > 0) flike.attr('data-like', v.seq).addClass('active'); 11539 } 11540 } else { 11541 flike.addClass('hide'); 11542 } 11543 } 11544 11545 if(checkUseLike == false) flike.html(''); 11546 11547 if(el.mode == 'gallery') { 11548 if(index < data.view) { 11549 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 11550 } else { 11551 $(c).find('figure').remove(); 11552 $(g).find('[data-loop="true"]').append($(c)[0].outerHTML); 11553 } 11554 if (total == 2) { 11555 $(c).find('figure').remove(); 11556 $('.gallery-empty').append($(c)[0].outerHTML); 11557 } 11558 } else { 11559 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 11560 } 11561 }); 11562 } else { 11563 checkGalleryListSample = true; 11564 if(el.mode=='project' && _this.b.TEMPLATE == false) { 11565 nodes.addClass('gallery-item'); 11566 nodes.find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/template').removeAttr('data-gallery').find('img').attr('data-index',0); 11567 } 11568 if(_this.b.TEMPLATE !== false) { 11569 if ( checkUseComment 11570 && g_settings.comment_display == 'ON' 11571 && !(g_settings.field_disable !== undefined && g_settings.field_disable.indexOf('comment') > -1) 11572 ) { 11573 nodes.find('.figure.comment').removeClass('hide'); 11574 } else { 11575 nodes.find('.figure.comment').addClass('hide'); 11576 } 11577 11578 if ( checkUseLike 11579 && (g_settings.like_display !== undefined && g_settings.like_display != 'N') 11580 && !(g_settings.field_disable !== undefined && g_settings.field_disable.indexOf('like') > -1) 11581 ) { 11582 nodes.find('.figure.like').removeClass('hide'); 11583 } else { 11584 nodes.find('.figure.like').addClass('hide'); 11585 } 11586 } 11587 $(p).find('[data-loop="true"]').append(nodes); 11588 11589 if(_this.b.LUX) { 11590 category_onoff = 'ON'; 11591 checkGalleryListSample = false; 11592 } 11593 } 11594 if(checkLoadmoreInLoop) $(p).find('[data-loop="true"]').append(glm); 11595 11596 var tag = $(p)[0].outerHTML; 11597 var $galleryEL = $('.element[data-id="' + el.seq + '"]'); 11598 11599 if (el.mode == 'gallery' && total == 2) { 11600 $.each($('.gallery-empty').find('.gallery-item'), function(i,v) { 11601 $(g).find('[data-loop="true"]').append(v); 11602 }); 11603 } 11604 11605 if (el.mode == 'gallery' && total) tag = appendGalleryFrame($(tag), el.seq, el.type, g_settings); 11606 $galleryEL.html($(tag).html()).removeClass('preloading'); 11607 setOldVerBlockView($galleryEL,el); 11608 11609 $('#el-empty').empty(); 11610 $('.gallery-empty').remove(); 11611 11612 var $tag = $galleryEL.find('.shop-filter-header'); 11613 if($tag.length) shopHeaderDisplay($tag,data); 11614 11615 $galleryEL.attr('data-category',category_onoff); 11616 $galleryEL.attr('data-gallery-sort',gallery_sort); 11617 11618 if(category_onoff == 'ON' || gallery_sort == 'product') { 11619 initGToolbar($galleryEL, {id:el.seq, settings:g_settings}); 11620 } 11621 11622 showHideGalleryField($galleryEL,g_settings); 11623 reloadBlockMasonry('init',$galleryEL); 11624 11625 var $glmBtnWrap = $galleryEL.find('.loadmore-wrap'); 11626 var $glmBtn = $galleryEL.find('.loadmore-wrap .gallery-loadmore'); 11627 var checkLoadmore = (total > view && total > cookie_view && !checkGalleryListEmpty) ? true : false;
11628 var glm_lang = LANG; 11629 11630 if(typeof g_settings.loadmore_lang != 'undefined' && g_settings.loadmore_lang && $.inArray(g_settings.loadmore_lang.toLowerCase(), ['ko','en']) > -1) glm_lang = g_settings.loadmore_lang.toLowerCase(); 11631 else if(typeof block_lang != 'undefined' && $.inArray(block_lang, ['ko','en']) > -1) glm_lang = block_lang; 11632 var glm_txt = $.lang[glm_lang]['config.loadmore']; 11633 11634 if($glmBtnWrap.length == 0) { 11635 // gallery loadmore btn - default (ver1) 11636 if(checkLoadmore) { 11637 var glm_class = (el.feature=='masonry') ? 'gallery-loadmore masonry-layout' : 'gallery-loadmore', 11638 glm_btn = '<div class="' + glm_class + '" data-loadmore="true" data-selector=".gallery-loadmore" data-total="' + total + '" data-id="' + el.seq + '" data-page="' + (Number(cookie_page)+1) + '" data-view="' + view + '" data-folder="' + el.folder + '" data-mode="' + el.mode + '">' + glm_txt +' (<span class="display">' + cookie_view + '</span> / ' + number_format(total) + ')</div>'; 11639 11640 if($galleryEL.find('.gallery-loadmore').length > 0) $galleryEL.find('.gallery-loadmore').replaceWith(glm_btn); 11641 else $galleryEL.append(glm_btn); 11642 } else $galleryEL.find('.gallery-loadmore').remove(); 11643 11644 } else { 11645 // gallery loadmore btn - custom (ver2) 11646 if(checkLoadmore) { 11647 if(el.feature=='masonry') $glmBtn.addClass('masonry-layout'); 11648 else $glmBtn.removeClass('masonry-layout'); 11649 $glmBtn.attr('data-loadmore','true').attr('data-id',el.seq).attr('data-total',total).attr('data-page',Number(cookie_page)+1).attr('data-view',view).attr('data-folder',el.folder).attr('data-mode',el.mode); 11650 $glmBtn.find('.label').text(glm_txt); 11651 $glmBtn.find('.display .view').text(cookie_view); 11652 $glmBtn.find('.display .total').text(total); 11653 $glmBtnWrap.removeClass('hide').fadeIn(); 11654 } else { 11655 $glmBtnWrap.fadeOut().addClass('hide'); 11656 $glmBtn.removeAttr('data-loadmore').removeAttr('data-id').removeAttr('data-total').removeAttr('data-page').removeAttr('data-view').removeAttr('data-folder').removeAttr('data-mode').removeClass('masonry-layout'); 11657 $glmBtn.find('.label').text(glm_txt); 11658 $glmBtn.find('.display .view').text('0'); 11659 $glmBtn.find('.display .total').text('0'); 11660 } 11661 } 11662 11663 if(el.seq == 'all_products') { 11664 if(property.ONE) $galleryEL.addClass('link-to-ì ì²´ìí'); 11665 setGToolbarAllProducts($galleryEL, g_settings, el.total.list_total); 11666 } 11667 11668 if($galleryEL.has('input.gjs').length) setGalleryJS('load-loop',$galleryEL); 11669 }, 11670 forumUpdate : function(pid,page_num,view,page,data) { 11671 if(page_num > 1) { 11672 $.forum.init(pid, page, view, page_num,'', '', ''); 11673 } else { 11674 $.forum.set(pid, page_num, view, page, '', '', '',data); 11675 } 11676 }, 11677 displayComment : function(viewData) { 11678 if (typeof viewData == 'undefined' || !viewData) viewData = {}; 11679 var checkUrl = this.b.PAGE.split(','); 11680 var type = (checkUrl[0] == 'forum') ? 'F' : 'P'; 11681 var check_view_empty = (this.b.VIEW && this.b.COUNT == 1 && $('.error_404.element[data-name="error_404"]').length == 1) ? true : false; 11682 if(type == "P" 11683 && (this.b.COUNT == 0 || check_view_empty) 11684 ) { 11685 $('.error_404.element[data-name="error_404"] *[data-lang]').each(function() { 11686 $(this).html($.lang[LANG][$(this).attr('data-lang')]); 11687 }); 11688 return false; 11689 } 11690 11691 var option = (this.b.PARENT.settings) ? jQuery.parseJSON(this.b.PARENT.settings) : {}; 11692 11693 if(type == 'F') { 11694 if($.isEmptyObject(viewData) && this.b.PARENT.settings) viewData = {elsettings: jQuery.parseJSON(this.b.PARENT.settings)}; 11695 let tmp_elsettings = getOrDefault(viewData,'elsettings',{}); 11696 let tmp_fmsettings = getOrDefault(viewData,'fm_settings',{}); 11697 11698 let comment_display = 'ON'; 11699 if(getOrDefault(tmp_fmsettings,'comment_display','') != '') comment_display = tmp_fmsettings.comment_display; 11700 else if(getOrDefault(tmp_elsettings,'comment_display','') != '') comment_display = tmp_elsettings.comment_display; 11701 11702 if(comment_display == 'OFF') return false; 11703 } else { 11704 if(typeof option.comment_display == 'undefined' || option.comment_display == 'OFF') return false; 11705 } 11706 11707 $.comment.init(); 11708 }, 11709 loaded : function() { 11710 var b = _this.b; 11711 if($('body').width() <= 768 && $('.dsgn-body').hasClass('sidebar')) {
11712 if($('header.navbar').hasClass('sidebar')) { 11713 cssSidebar('off'); 11714 } 11715 //$('.dsgn-body').removeClass('sidebar').addClass('removed-sidebar'); 11716 } else if ($('body').width() > 768 /*&& $('.dsgn-body').hasClass('removed-sidebar')*/) { 11717 if($('header.navbar').hasClass('sidebar')) { 11718 cssSidebar('on'); 11719 } 11720 //$('.dsgn-body').removeClass('removed-sidebar').addClass('sidebar'); 11721 } 11722 11723 $('.carousel').live('click',function(){ 11724 $('.carousel').carousel('cycle'); 11725 }); 11726 11727 $('.carousel').live({ 11728 click: function() { 11729 $('.carousel').carousel('cycle'); 11730 }, 11731 hover: function(){ 11732 $('.carousel').carousel('cycle'); 11733 } 11734 }); 11735 11736 $('.carousel').carousel({ 11737 pause: 'none' 11738 }); 11739 11740 $('[data-fixed-width]').each(function() { 11741 $(this).css('width',$(this).attr('data-fixed-width')+'px'); 11742 }); 11743 11744 SCREEN = getScreen(); 11745 var targetUrl = document.URL, 11746 isMoveLink = targetUrl.match(/#/g); 11747 11748 $('.menu-logo-top').show(); 11749 11750 if(typeof $.cookie('gallery-item') != 'undefined' && b.VIEW == '') { 11751 moveGallery($.cookie('gallery-item')); 11752 } else if(typeof $.cookie('forum-item') != 'undefined' && b.VIEW == '') { 11753 // console.log('loaded', 'fm_view', $.cookie('forum_content_view')); 11754 if(typeof $.cookie('forum_content_view') != 'undefined'){ 11755 var fm_view = $.cookie('forum_content_view'); 11756 var fv = (fm_view !== undefined && fm_view)? fm_view.split('&'):array(); 11757 var pid = (fv)? fv[0]:''; 11758 var row_id = (fv)? fv[1]:''; 11759 11760 setTimeout(function(){ 11761 scrollToBlock('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="'+row_id+'"]', 1000); 11762 }, 500); 11763 $.removeCookie('forum-item', { path : '/' }); 11764 11765 // $('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="'+row_id+'"]').click(); 11766 } else { 11767 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"]', 1000); 11768 $.removeCookie('forum-item', { path : '/' }); 11769 } 11770 } 11771 11772 if($('body').width() > 768) { 11773 $('.form-date').attr('type','text'); 11774 $('.form-date').attr('maxlength','2'); 11775 $('.date-yyyy').attr('maxlength','4'); 11776 } 11777 11778 $.modalOFF(); 11779 }, 11780 loadPage : function(page) { 11781 11782 } 11783} 11784 11785 11786var mobileWebfnavCheck = function(vpmode) { 11787 var checkFnav = ($('.fnav').length > 0 && vpmode=="mobile_web") ? true : false, 11788 WebType = isMobile(); 11789 11790 if(checkFnav && WebType) { 11791 $('.fnav.fnav-mobile-fnav').css('margin-bottom','53px'); 11792 $('.element.el-footer').css('margin-bottom','100px'); 11793 } else { 11794 $('.mobilepc_ch').css('margin-bottom','0px'); 11795 $('.element.el-footer').css('margin-bottom','0px'); 11796 } 11797 11798 if(WebType) { 11799 $('.element.el-footer').addClass('mpcwebheight'); 11800 $.mpcWeb.mpcMusicandGoTop(checkFnav,vpmode); 11801 } 11802} 11803var mobileProductBtnPosition = function(property,device_type) { 11804 var quick_height = $(`.quick-menu-${property.SID}.quickmenu`).innerHeight(); 11805 11806 if(device_type=='mobile') { 11807 var quick_height = $(`.quick-menu-${property.SID}.quickmenu`).innerHeight(), 11808 productBtn_height = $('.m-product-btn').innerHeight(), 11809 productBtn_position = ($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') ? quick_height : ''; 11810 11811 if($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') $('.m-product-btn, .product-detail-btn').css('bottom',productBtn_position); 11812 else $(`.quick-menu-${property.SID}.quickmenu`).css('bottom',productBtn_height+30); 11813 11814 } 11815} 11816 11817var mobileWebQuickmenuPosition = function(property,device_type) { 11818 var check_music = (typeof property.SETTINGS.musicUse != 'undefined' && (property.SETTINGS.musicUse === true || property.SETTINGS.musicUse == 'true')) ? true : false, 11819 el_fixedheight = (typeof $.cookie(`fixedcontact-${property.SID}`) != 'undefined' && $.cookie(`fixedcontact-${property.SID}`) == 'off') ? 0 : $('.element.el-fixedcontact').innerHeight(), 11820 el_fixedonoffHeight = 22, 11821 quick_height = $(`.quick-menu-${property.SID}.quickmenu`).innerHeight(), 11822 mpc_height = (typeof property.SETTINGS.viewportMode != 'undefined' && property.SETTINGS.vpMode_onoff===true) ? $('.mobilepc_ch').innerHeight() : 0, 11823 check_mpc = (typeof property.SETTINGS.viewportMode != 'undefined' && property.SETTINGS.vpMode_onoff===true) ? true : false, 11824 quick_position = 12, 11825 gotop_position = 0, 11826 gotoTop_position = ''; 11827 11828 el_fixedblockheight = el_fixedheight + el_fixedonoffHeight; 11829 11830 if($('.element.el-fixedcontact').length>0) { 11831 if(device_type=='pc') { 11832 gotop_position = el_fixedblockheight + 33; 11833 } else { 11834 var fixed_position = ($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') ? quick_height : ''; 11835 quick_position = (check_music) ? el_fixedblockheight + 45 : el_fixedblockheight + 30; 11836 quick_position = ($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') ? 0 : quick_position; 11837 11838 if(check_mpc) { 11839 var webtype = $.mpcWeb.mpcCheckWebType(); 11840 if(webtype=='MOBILE') { 11841 quick_position = (check_music) ? mpc_height + el_fixedblockheight + 45 : mpc_height + el_fixedblockheight + 10; 11842 if($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') { 11843 quick_position = mpc_height; 11844 fixed_position = fixed_position + mpc_height; 11845 } 11846 } 11847 } 11848 $('.element.el-fixedcontact').css('bottom',fixed_position); 11849 } 11850 } else { 11851 gotop_position = (device_type=='pc') ? 42 : gotop_position; 11852 quick_position = ''; 11853 if(check_mpc) { 11854 var webtype = $.mpcWeb.mpcCheckWebType(); 11855 if(webtype=='MOBILE') { 11856 if($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') { 11857 quick_position = mpc_height; 11858 } 11859 else quick_position = (check_music) ? mpc_height + 45 : mpc_height + 30; 11860 } 11861 } 11862 } 11863 11864 if(device_type=='pc') { 11865 $('#goto-top').css('bottom',gotop_position); 11866 quick_position = gotop_position + $('#goto-top').outerHeight() + 30; 11867 11868 if(check_mpc) { 11869 var webtype = $.mpcWeb.mpcCheckWebType(); 11870 if(device_type=='pc' && webtype=='MOBILE') { 11871 quick_position = quick_position + mpc_height; 11872 $('.element.el-fixedcontact').css('bottom',''); 11873 $('#goto-top').css('bottom',gotop_position + mpc_height); 11874 } 11875 } 11876 11877 } 11878 11879 $(`.quick-menu-${property.SID}.quickmenu`).css('bottom',quick_position); 11880} 11881 11882var quickMenuMusicPosition = function(property) { 11883 var sid = (typeof property != 'undefined') ? property.SID : SID, 11884 vpModeOnoff = (property.SETTINGS.vpMode_onoff === true) ? true : false, 11885 webType = $.mpcWeb.mpcCheckWebType(), 11886 quick_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 11887
11888 var el_fixedheight = (typeof $.cookie(`fixedcontact-${sid}`) != 'undefined' && $.cookie(`fixedcontact-${sid}`) == 'off') ? 0 : $('.element.el-fixedcontact').innerHeight(), 11889 mpc_height = (vpModeOnoff && webType == 'MOBILE') ? $('.mobilepc_ch').innerHeight() : 0, 11890 el_fixedonoffHeight = 22, 11891 el_fixedblockheight = 0, 11892 quick_position = 0, 11893 music_position = 5; 11894 11895 el_fixedblockheight = el_fixedheight + el_fixedonoffHeight; 11896 11897 11898 if($('.element.el-fixedcontact').length > 0) { 11899 if(quick_type=='pc') { 11900 music_position = el_fixedheight + 5; 11901 } else { 11902 var quick_height = (typeof $.quickmenu['quickmenu'] != 'undefined' && $.quickmenu['quickmenu']['img_type'][quick_type]=='bottom_default') ? $(`.quick-menu-${sid}.quickmenu`).innerHeight() : 0; 11903 music_position = quick_height + el_fixedblockheight + 5; 11904 quick_position = music_position + $('#cl-music-player-icon').outerHeight() + 5; 11905 11906 if(vpModeOnoff && webType == 'MOBILE') { 11907 quick_position = mpc_height + quick_position; 11908 } 11909 11910 if(typeof $.quickmenu['quickmenu'] != 'undefined' && $.quickmenu['quickmenu']['img_type'][quick_type]!='bottom_default') $(`.quick-menu-${sid}.quickmenu`).css('bottom',quick_position); 11911 } 11912 11913 if(vpModeOnoff && webType == 'MOBILE') { 11914 music_position = music_position + mpc_height; 11915 quick_position = mpc_height + quick_position; 11916 } 11917 } 11918 $('#cl-music-player-icon, #cl-music-container').css('bottom',music_position); 11919} 11920 11921var setlimitdiskPopup = function() { 11922 var icon = '<i class="site-space-icon fa fa-exclamation-circle"></i>', 11923 str = '<div class="site-space-disk">\ 11924 <p>'+$.lang[LANG]['plan.disk-space.popup.limit.contents']+'</p>\ 11925 </div>\ 11926 '; 11927 11928 $(this).showModalFlat(icon + $.lang[LANG]['plan.disk-space.popup.limit.title'], str,false,false).addClass('flat-site-spacelimit-modal'); 11929 $('.modal-backdrop.in').css('opacity','0'); 11930} 11931 11932var setSitePopup = function() { 11933 if(typeof property.SETTINGS != 'undefined' && property.SETTINGS.showPopup === true && typeof property.SETTINGS.sitePopup != 'undefined' && property.SITELOCK != 'true') { 11934 sitePopupOpen(); 11935 } 11936} 11937 11938var sitePopupOpen = function(idx,data) { 11939 var site_popup = (typeof data != 'undefined' & data) ? data : new Array(); 11940 if(site_popup.length == 0) site_popup = (typeof property.SETTINGS.sitePopup != 'undefined' && property.SETTINGS.sitePopup) ? property.SETTINGS.sitePopup : site_popup; 11941 if(site_popup.length > 0) { 11942 $('.refresh-popup').show().removeAttr('style'); 11943 var isShow = true; 11944 11945 if(typeof idx != 'undefined') { 11946 if($('#'+property.SID+'Popup'+idx).length == 0) isShow = false; 11947 else $('#'+property.SID+'Popup'+idx).fadeIn(); 11948 } else { 11949 11950 if($('.site-popup .modal-popup').length > 0) { 11951 $('.site-popup .modal-popup').fadeIn(); 11952 } else { 11953 isShow = false; 11954 } 11955 } 11956 11957 if(!isShow) { 11958 var modal = $(this).showPopupModal(site_popup,property.SID); 11959 return modal; 11960 } 11961 } 11962} 11963 11964var sitePopupResize = function() { 11965 11966 if($('.popup').find('.modal-popup').length == 0) return false; 11967 11968 var img_w = new Array(), 11969 total_w = 0, 11970 add_w = 0, 11971 d_m = ($('.popup-modal').hasClass('popupimg-overflow-y')) ? 30 : 15; 11972 d_top = $('.header.el-menu').outerHeight() + 15, 11973 d_left = 0, 11974 x = 0, y = 0, y_r = 0; 11975 11976 $('.modal-popup').each(function(i) { 11977 if($(this).css('display') != 'none') { 11978 img_w[i] = $(this).width(); 11979 total_w += img_w[i] + d_m; 11980 } 11981 }); 11982 11983 11984 var isOverflow = ($('.dsgn-body').width() < (Number($('.popup-modal').children().eq(0).css('left').replace('px',''))+total_w)) ? true : false, 11985 display_i = -1; 11986 11987 if(isOverflow) { $('.popup-modal').addClass('popupimg-overflow-y'); 11988 } else { $('.popup-modal').removeClass('popupimg-overflow-y'); } 11989 11990 $('.modal-popup').each(function(i) { 11991 if($(this).css('display') != 'none') { 11992 display_i++; 11993 11994 if(isOverflow) { 11995 x = (display_i==0) ? d_top : d_top + (display_i*30); 11996 y = d_left + ((display_i+1)*30); 11997 y_r = 120 - y; 11998 11999 img_w[i] = 'auto'; 12000 } else { 12001 d_left = ($('.dsgn-body').width() - total_w)/2; 12002 12003 x = d_top; 12004 y = d_left + add_w + (i*15); 12005 } 12006 add_w = add_w + $(this).width(); 12007 12008 var css_val = (isOverflow) ? {'top': x +'px', 'left': y+'px', 'right': y_r+'px', 'margin-left': '0px', 'width': img_w[i], 'max-width': $(this).width()} : {'top': x +'px', 'left': y+'px' , 'width': img_w[i]}; 12009 $(this).css(css_val); 12010 } 12011 }); 12012 12013} 12014 12015 12016var activeEL = function(el) { 12017 if(typeof el == 'undefined' || el=='') return;
12018 // header_fixed = $('header.navbar').height(); 12019 // var offset = ($('.dsgn-body').hasClass('sidebar')) ? 0 : -header_fixed; 12020 // $('body').scrollTo('.'+el,0,{offset:offset}); 12021 scrollToBlock('.'+el); 12022} 12023 12024var setLoginoutNav = function (sid, callback) { 12025 $('.creatorlink-header').remove(); 12026 $('#tpl-menu li.loginout').remove(); 12027 var str = '<div class="creatorlink-header">\n'; 12028 str = str + '<div class="logo-text col-md-4 col-sm-6">\n'; 12029 str = str + ' <a href="http://creatorlink.net"><img src="https://storage.googleapis.com/i.addblock.net/main/site_creatorlink_logo.png" alt="" /></a>\n'; 12030 str = str + '</div>\n'; 12031 str = str + '<div class="data-site col-md-4 col-sm-6 col-xs-6">\n'; 12032 str = str + ' <ul>\n'; 12033 str = str + ' <li class="profile-img"></li>\n'; 12034 str = str + ' <li><span class="text">' + sid + '</span></li>\n'; 12035 str = str + ' </ul>\n'; 12036 str = str + '</div>\n'; 12037 str = str + '<div class="data-user col-md-4 col-sm-6 col-xs-6">\n'; 12038 str = str + ' <ul class="pull-right">\n'; 12039 str = str + ' <li class="profile-img"></li>\n'; 12040 str = str + ' <li><span class="caret"></span></li>\n'; 12041 str = str + ' </ul>\n'; 12042 str = str + ' <div class="message"></div>\n'; 12043 str = str + '</div>\n'; 12044 str = str + '</div>\n'; 12045 str = str + '\n'; 12046 str = str + '\n'; 12047 $('.header.el-menu').before(str); 12048 var top = ($('header').hasClass('transparent')) ? '0' : '55px'; 12049 $('.header.el-menu').css('top',top); 12050 if(top == '0') $('.creatorlink-header + .popover + .fixed-position').css('top','0'); 12051 12052 if(typeof callback == 'function') callback(); 12053} 12054 12055var getProfileAuthor = function(sid,img) { 12056 var imgstr = (img == 'https://storage.googleapis.com/i.addblock.net/member/profile_default.jpg') ? 'https://storage.googleapis.com/i.addblock.net/member/profile_default_top.png' : img; 12057 var str = '<span class="hexagon">\n'; 12058 str = str + ' <svg viewBox="0 0 32 32">\n'; 12059 str = str + ' <pattern id="pfimg-" + sid +"" patternUnits="userSpaceOnUse" width="32" height="32">\n'; 12060 str = str + ' <image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=""+imgstr+"" x="-2px" y="-2px" width="36" height="36"></image>\n'; 12061 str = str + ' </pattern>\n'; 12062 str = str + ' <polygon points="16 0 30 8 30 24 16 32 2 24 2 8" fill="url(#pfimg-" + sid +")"></polygon>\n'; 12063 str = str + ' </svg>\n'; 12064 str = str + '</span>\n'; 12065 $('.data-site .profile-img').append(str); 12066} 12067 12068var getProfileMember = function() { 12069 $.getJSON('/template/checkLogin', function(data) { 12070 // if(!data.user) { } 12071 var imgstr = (data.myimg == 'https://storage.googleapis.com/i.addblock.net/member/profile_default.jpg') ? 'https://storage.googleapis.com/i.addblock.net/member/profile_default_top.png' : data.myimg; 12072 var str = '<span class="hexagon">\n'; 12073 str = str + ' <svg viewBox="0 0 32 32">\n'; 12074 str = str + ' <pattern id="pfimg-" + data.user +"" patternUnits="userSpaceOnUse" width="32" height="32">\n'; 12075 str = str + ' <image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=""+imgstr+"" x="-2px" y="-2px" width="36" height="36"></image>\n'; 12076 str = str + ' </pattern>\n'; 12077 str = str + ' <polygon points="16 0 30 8 30 24 16 32 2 24 2 8" fill="url(#pfimg-" + data.user +")"></polygon>\n'; 12078 str = str + ' </svg>\n'; 12079 str = str + '</span>\n'; 12080 $('.data-user .profile-img').append(str); 12081 $('.data-user .profile-img').addClass('user-'+data.name); 12082 $('.data-user .user-name').append('<span>'+data.name+'</span>'); 12083 // $('.data-user .logoutlink').before('<span>You're logged in as '+data.name+' </span>'); 12084 12085 var str3_mysite = ''; 12086 if($('.data-site ul li span.text').text() == data.sid) { 12087 $('.data-site').text(''); 12088 var isNewmessage = (data.newCount == 0 ) ? false : true; 12089 var str2 = '<ul class="sub-menu pull-right">\n'; 12090 str2 = str2 + ' <li class="newCount">\n'; 12091 str2 = str2 + ' <a href="/message/lists"><i class="fa fa-envelope"></i>\n'; 12092 if(isNewmessage) str2 = str2 + '<span class="badge">"+data.newCount+"</span>\n'; 12093 str2 = str2 + '</a>\n'; 12094 str2 = str2 + ' </li>\n'; 12095 str2 = str2 + '</ul>\n'; 12096 $(".data-user .message").append(str2); 12097 } else { 12098 str3_mysite = ' <div class="item"><a href="http://'+data.sid+'.creatorlink.net"><img src="https://storage.googleapis.com/i.addblock.net/main/icon_mysite.png"/><img src="https://storage.googleapis.com/i.addblock.net/main/icon_mysite_active.png" class="active"/>'+ $.lang[LANG]['header.mysite'] + '</a></div>\n'; 12099 } 12100 12101 var str3 = '<div class="popover bottom" id="pop"+data.name+"">\n'; 12102 str3 = str3 + ' <div class="arrow"></div>\n'; 12103 str3 = str3 + ' <div class="popover-content">\n'; 12104 str3 = str3 + ' <div class="user-name">"+data.name+"</div>\n'; 12105 str3 = str3 + str3_mysite; 12106 str3 = str3 + ' <div class="item"><a href="http://creatorlink.net"><img src="https://storage.googleapis.com/i.addblock.net/main/icon_dashboard.png"/><img src="https://storage.googleapis.com/i.addblock.net/main/icon_dashboard_active.png" class="active"/>'+ $.lang[LANG]['header.dashboard'] + '</a></div>\n'; 12107 str3 = str3 + ' <div class="item"><a href="/mypage" ><img src="https://storage.googleapis.com/i.addblock.net/main/icon_acc.png"/><img src="https://storage.googleapis.com/i.addblock.net/main/icon_acc_active.png" class="active"/>'+ $.lang[LANG]['header.mypage'] +'</a></div>\n'; 12108 str3 = str3 + ' <div class="item"><a href="/profile/myboard" ><img src="https://storage.googleapis.com/i.addblock.net/main/icon_qna.png"/><img src="https://storage.googleapis.com/i.addblock.net/main/icon_qna_active.png" class="active"/>'+ $.lang[LANG]['header.cts'] +'</a></div>\n'; 12109 str3 = str3 + ' <div class="item user-logout"><a href="/member/login/out" class="logoutlink"><img src="https://storage.googleapis.com/i.addblock.net/main/icon_logout.png"/><img src="https://storage.googleapis.com/i.addblock.net/main/icon_logout_active.png" class="active"/>'+ $.lang[LANG]['header.logout'] + '</a></div>\n'; 12110 str3 = str3 + ' </div>\n'; 12111 str3 = str3 + ' </div>\n'; 12112 $('.creatorlink-header').after(str3); 12113 12114 }); 12115} 12116 12117var pageHeight = function() { 12118 $('.page-comments').css('margin-top','0px'); 12119 $('.el-footer').css('margin-top','0px'); 12120 var docHeight = $('.dsgn-body').height(); 12121 $('.dsgn-body').wrapInner('<div class="dsgn-body-wrap"></div>'); 12122 var dsgnHeight = $('.dsgn-body-wrap').height(); 12123 var diff = docHeight - dsgnHeight; 12124 $('.dsgn-body > .dsgn-body-wrap').contents().unwrap(); 12125 return (diff>0) ? diff : 0; 12126} 12127 12128var setHeight = function(height) { 12129 if(typeof property.VIEW == 'undefined' || property.VIEW == "") return false;
12130 if(height>0) { 12131 height = (typeof MODE == 'undefined') ? height : height-35; 12132 if($('.page-comments').length) { 12133 $('.page-comments').css('margin-top',height+'px'); 12134 } else if($('.page-bottomlist').length) { 12135 $('.page-bottomlist').css('margin-top',height+'px'); 12136 } else if($('.el-footer').length) { 12137 $('.el-footer').css('margin-top',height+'px'); 12138 } 12139 } 12140} 12141 12142var makeLinkUrl = function(link, one, view) { 12143 var link_url = '', 12144 link_val = '', 12145 is_menu = ($.inArray(link.replace(/^\//g, '').replace(/ /g, '-'), property.MENULIST) > -1) ? true : false, 12146 regex = /^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/, 12147 regex2 = /^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 12148 12149 if (one) { 12150 link_url = (view) ? '/#' : '#'; 12151 link_url = (view && !property.PUBLISH) ? '/render/index#' : link_url; 12152 if(is_menu) link_url = '/'; 12153 } else { 12154 link_url = (property.URI=='/' || is_menu) ? '/' : property.URI + '/'; 12155 } 12156 12157 if (link) { 12158 if (link.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 12159 var bookmark_seq = link.replace(/^\@/g, ''); 12160 if (typeof property.SETTINGS.blockBookmarkList == 'undefined' || typeof property.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 12161 return ''; 12162 } 12163 } else if (link.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 12164 return link; 12165 } else if ($.inArray(link.replace(/^\//g, '').replace(/ /g, '-'), property.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 12166 link_val = link_url + link.replace(/ /g, '-'); 12167 } else { // link-type: link-out ==> a[attr-link] 12168 if(checkBase64Encode(decodeURIComponent(link))) link = Base64.decode(decodeURIComponent(link)); 12169 else if (checkBase64Encode(link)) link = Base64.decode(link); 12170 12171 if(!regex2.test(link) && regex.test(link)) link_val = '//' + link; 12172 } 12173 12174 if(link_val == '') link_val = link; 12175 } 12176 return link_val; 12177} 12178 12179var checkError = function(data) { 12180 if(typeof data.error != 'undefined' && data.error) { 12181 alert(data.error); 12182 if(data.error=='No user data') { 12183 location.href='/member/login'; 12184 } 12185 return true; 12186 } 12187 return false; 12188} 12189 12190var funcCallback = function(func,callback) { 12191 func(); 12192 if(typeof callback=='function') { 12193 callback(); 12194 } 12195} 12196 12197var closeClnavMega = function() { 12198 if(typeof $.clnav == 'undefined') return; 12199 if($('.cl-nav[data-layout="meganav"]').length == 0) return; 12200 if(!$('body').is('[data-clnav-mega="open"]')) return; 12201 12202 $.clnav.setMode('mega-open', false); 12203} 12204 12205var cssSidebar = function(onoff) { 12206 var width = (onoff == 'on') ? '260px' : '', 12207 dsgn_css = CSSJSON.toJSON($('#dsgn-body').text()); 12208 12209 if(width) { 12210 if(typeof dsgn_css['children']['.dsgn-body.sidebar'] == 'undefined') { 12211 dsgn_css['children']['.dsgn-body.sidebar'] = {'children' : {}, 'attributes' : { 'padding-left' : width, 'padding-top': '0px' }}; 12212 } 12213 } else { 12214 if(typeof dsgn_css['children']['.dsgn-body.sidebar'] != 'undefined') { 12215 delete dsgn_css['children']['.dsgn-body.sidebar']; 12216 } 12217 } 12218 12219 $('#dsgn-body').text(CSSJSON.toCSS(dsgn_css)); 12220} 12221 12222var getScreen = function() { 12223 var wid = window.innerWidth; 12224 12225 var screen_size = 0; 12226 if (0 < wid && wid < 480) { 12227 screen_size = 320; 12228 } else if(wid <= 480 && wid <768) { 12229 screen_size = 480; 12230 } else if (768 <= wid && wid < 992) { 12231 screen_size = 768; 12232 } else if (992 <= wid && wid < 1200 ) { 12233 screen_size = 992; 12234 } else if (wid >= 1200) { 12235 screen_size = 1200; 12236 } 12237 12238 return screen_size; 12239} 12240 12241var getScreenIndex = function() { 12242 var idx = 0; 12243 switch(SCREEN) { 12244 case 320: 12245 case 480: 12246 idx = 2; 12247 break; 12248 case 769: 12249 idx = 1; 12250 break; 12251 12252 case 992: 12253 case 1200: 12254 idx = 0; 12255 break; 12256 12257 default : idx = 0; break; 12258 } 12259 return idx; 12260} 12261var setGalleryReturnItemCookie = function(parent) { 12262 if(typeof parent == 'undefined' || !parent) return; 12263 var mode = (typeof parent.mode != 'undefined') ? parent.mode : '', 12264 seq = (typeof parent.seq != 'undefined') ? parent.seq : ''; 12265 12266 if($.inArray(mode, ['project', 'shopping']) == -1 || !seq) return; 12267 $.cookie('gallery-item', seq, { path: '/', expires: 12 * 60 * 60 * 1000 }); 12268} 12269var moveGallery = function(element) { 12270 var $item = $(`.gallery-item[data-seq="${element}"]`); 12271 if ($item.length == 0) { 12272 if($(`.element[data-id="${element}"]`).length > 0) $item = $(`.element[data-id="${element}"]`); 12273 else return; 12274 } 12275 12276 if($.clnav.check()) { 12277 goToElement($item); 12278 } else {
12279 var header_fixed = $('header.navbar').height(); 12280 var offset = ($('.dsgn-body').hasClass('sidebar')) ? 0 : -header_fixed; 12281 if($('header.navbar').hasClass('disableOffset') && !$item.hasClass('el_0')) offset = 0; 12282 12283 if (property.SID != 'undefined' && property.SID == 'kdomeshelter'){ 12284 offset -= 300; 12285 } 12286 12287 var sTop = $item.offset().top + offset; 12288 $('html, body').animate({scrollTop: sTop}, 500, 'easeInOutQuart'); 12289 12290 $.removeCookie('gallery', { path: '/' }); 12291 $.removeCookie('gallery-item', { path : '/' }); 12292 } 12293} 12294 12295var scrollToBlock = function(el, duration) { 12296 if(typeof duration == 'undefined') duration = 1200; 12297 if(typeof el == 'undefined' || !el || $(el).length == 0) return; 12298 12299 if($.clnav.check()) { 12300 goToElement(el); 12301 } else { 12302 var header_fixed = $('header.navbar').outerHeight(); 12303 var offset = $('.dsgn-body').scrollTop(); 12304 if(!$('.dsgn-body').hasClass('sidebar') && !$('header.navbar').hasClass('disableOffset')) offset -= header_fixed; 12305 var sTop = $(el).offset().top + offset; 12306 $('html, body').animate({ scrollTop: sTop }, duration, 'easeInOutQuart'); 12307 } 12308} 12309 12310var clearDsgnbody = function() { 12311 closeClnavMega(); 12312 12313 const removeSelectors = [ 12314 'style[id^="el_"]:not([id*=el__])', 12315 'script[id^="js_"]:not([id*=el__])', 12316 '.element[data-id="all_products"]', 12317 '.psearch-view', 12318 '.menu-lock-block', 12319 '.site-lock-block', 12320 '.config-image-view', 12321 '.forum-view', 12322 '.page-toolbars', 12323 '.page-comments', 12324 '.page-bottomlist', 12325 ].join(','); 12326 $(removeSelectors).remove(); 12327 $('.el-footer').hide(); 12328 12329 var element = $('div.element[class*="el_"]:not([class*=el__]):not(.el-footer)'); 12330 element.each(function() { 12331 const $el = $(this); 12332 const $parentElem = $el.closest('.elem'); 12333 12334 if($parentElem.length) { 12335 $parentElem.remove(); 12336 } else { 12337 $el.remove(); 12338 } 12339 }); 12340} 12341 12342var ensureGalleryResponsiveImageClass = function($scope) { 12343 $scope.find('img').each(function() { 12344 var removeAttrs = []; 12345 if(this.attributes) { 12346 $.each(this.attributes, function(i, attr) { 12347 if(attr && attr.name !== 'class' && attr.name.indexOf('img-responsive') > -1) removeAttrs.push(attr.name); 12348 }); 12349 } 12350 for(var i = 0; i < removeAttrs.length; i++) this.removeAttribute(removeAttrs[i]); 12351 $(this).addClass('img-responsive'); 12352 }); 12353} 12354 12355var golink = function(_this,link) { 12356 var wloc = window.location, 12357 local_link = (wloc.hostname == link.hostname) ? true : false, 12358 local_arr = ['/_register', '/_login']; 12359 12360 if(local_link && $.inArray(link.pathname,local_arr) == -1) { 12361 var loc = link.pathname, 12362 uri = (_this.b.PUBLISH) ? loc : loc.replace('/render/',''); 12363 12364 if((uri == '/render' || uri == '/') && !_this.b.ONE) { 12365 uri = ''; 12366 $.each(_this.b.SMENU,function(i,v) { 12367 var menu_name = (v.name).replace(' ','-'); 12368 var checkMenuName = (uri == menu_name) ? true : false, 12369 checkMenuLink = (typeof v.link != 'undefined' && v.link) ? true : false; 12370 12371 if(checkMenuName && checkMenuLink) { 12372 uri = (v.link).replace(' ','-'); 12373 } 12374 }); 12375 12376 } 12377 12378 var go = (_this.b.PUBLISH) ? '/' + uri + link.hash: '/render/' + uri + link.hash; 12379 // ëª í ì¼í ê²ì íë¼ë¯¸í° ì²ë¦¬ 12380 if((link.search).length) go = go + link.search; 12381 _this.history.pushState(null,_this.b.TITLE,go); 12382 12383 if(typeof $.cookie('forum-item') != 'undefined') { 12384 // console.log('fm_view', $.cookie('forum_content_view')); 12385 setTimeout(function() { 12386 if(typeof $.cookie('forum_content_view') != 'undefined'){ 12387 var fm_view = $.cookie('forum_content_view'); 12388 var fv = (fm_view !== undefined && fm_view)? fm_view.split('&'):array(); 12389 var pid = (fv)? fv[0]:''; 12390 var row_id = (fv)? fv[1]:''; 12391 12392 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"] .tpl-forum-list-title[data-id="'+row_id+'"]', 1000); 12393 $.removeCookie('forum-item', { path : '/' }); 12394 12395 $('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="'+row_id+'"]').click(); 12396 // $.removeCookie('forum_content_view', { path: '/', expires: 12 * 60 * 60 * 1000 }); 12397 } else { 12398 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"]', 1000); 12399 $.removeCookie('forum-item', { path : '/' }); 12400 } 12401 }, 300); 12402 } 12403 } else { 12404 location.href = link.href; 12405 } 12406} 12407 12408 12409function draw_floating() { 12410 var fl_section_html = '', 12411 fl_bottom_html = '', 12412 fl_circle_html = '', 12413 el_html = '', 12414 data = {}; 12415 12416 $.each($('.floating_item li'), function(fi, fv){ 12417 var fl_class = $(this).find('.icon').attr('class'), 12418 cid = ($(this).find('a').attr('data-cid')) ? $(this).find('a').attr('data-cid') : '', 12419 fl_link = ($(this).find('a').attr('data-link')) ? $(this).find('a').attr('data-link') : '', 12420 type = ($(this).find('a').attr('data-type')) ? $(this).find('a').attr('data-type') : '', 12421 data = ($(this).find('a').attr('data-data')) ? $(this).find('a').attr('data-data') : '', 12422 name = ($(this).find('a').attr('data-name')) ? $(this).find('a').attr('data-name') : '', 12423 regexp = /[0-9]+/, 12424 fl_url = (type=='defaultPhone') ? 'tel:'+property.TEL_LINK : data; 12425 12426 if(type=='top') return true; 12427 fl_icon_num = (type=='defaultPhone') ? '' : `${regexp.exec(fl_class)}`; 12428 // fl_link = (type=='address' || type=='page_move' || type=='storefarm') ? fl_link : ''; 12429 fl_url = (type=='defaultPhone') ? fl_url : fl_link; 12430 fl_url = (type=='link') ? data : fl_url; 12431 fl_url = (type=='email') ? 'mailto:'+data : fl_url; 12432 fl_url = (type=='reservation') ? data : fl_url; 12433 fl_url = (type=='page_move' && data=='í') ? '/' : fl_url; 12434 fl_url = (type=='sms') ? 'tel:'+ data : fl_url; 12435 fl_url = (type=='defaultPhone2') ? 'tel:'+ data : fl_url; 12436 if(fl_url.includes('pf.kakao')) { 12437 fl_url = (fl_url.includes('http://pf.kakao') || fl_url.includes('https://pf.kakao')) ? fl_url : fl_url = 'https://' + fl_url; 12438 } 12439 12440 fl_section_html += ` 12441 <li class="" data-type="${type}" data-name="${name}" data-cid="${cid}" data-link="${fl_url}"> 12442 <a class="btn btn_ic${fl_icon_num}" href="${fl_url}"> 12443 <div class="in">${name}
12444 <span class="ic theme_background"></span> 12445 </div> 12446 </a> 12447 </li> 12448 `; 12449 12450 var floating_open_sid = ['hyundae09']; // modoo 모ë°ì¼ íë¡í ë©ë´ openìì² 12451 if($.inArray(property.SID, floating_open_sid) > -1) { 12452 fl_icon_num = (type=='defaultPhone') ? '1' : fl_icon_num; 12453 fl_bottom_html += ` 12454 <a class="link_item _button_navi" href="${fl_url}" data-type="${type}"> 12455 <span class=" icon icon${fl_icon_num}"></span> 12456 </a> 12457 `; 12458 fl_circle_html += ` 12459 <a class="link_item _button_navi _bizPhone float-navi-button" href="${fl_url}" data-type="${type}"> 12460 <span class=" icon icon${fl_icon_num} theme_background"></span> 12461 </a> 12462 `; 12463 12464 } else { 12465 fl_icon_num = (type=='defaultPhone') ? '1' : fl_icon_num; 12466 fl_bottom_html += ` 12467 <a class="link_item _button_navi" href="${fl_url}" data-type="${type}"> 12468 <span class=" text _text">${name}</span><span class=" icon icon${fl_icon_num}"></span> 12469 </a> 12470 `; 12471 fl_circle_html += ` 12472 <a class="link_item _button_navi _bizPhone float-navi-button mfl_hide" href="${fl_url}" data-type="${type}"> 12473 <span class="text _text">${name}</span><span class=" icon icon${fl_icon_num} theme_background"></span> 12474 </a> 12475 `; 12476 } 12477 12478 // console.log(fl_url); 12479 }); 12480 12481 el_html += ` 12482 <div class="btn_wrap m_floating"> 12483 <ul class="btn_list"> 12484 ${fl_section_html} 12485 </ul> 12486 </div> 12487 `; 12488 12489 data = { 12490 'fl_bottom_html' : fl_bottom_html, 12491 'fl_circle_html' : fl_circle_html, 12492 'el_html' : el_html 12493 } 12494 12495 // ë©ë´ ëìì¸ ë³ê²½ì 모ë íµë©ë´ë 기존 íë²í¼ ìì¹ ê²¹ì¹ë 문ì ë°ìíì¬ ê¸°ì¡´ í¬ë§ íë²í¼ ì¨ê¹ì²ë¦¬ 12496 if(!$('._floating').hasClass('hide') && $('.floating_item li').length > 0) { 12497 $('.goto-top').hide().addClass('hide').css('pointer-events','none'); 12498 12499 } 12500 return data; 12501} 12502 12503 12504function m_floating(fl_data) { 12505 if($.isEmptyObject(fl_data)) return false; 12506 var settings = (typeof property.SETTINGS !='undefined' && property.SETTINGS) ? property.SETTINGS : {}, 12507 settings_modoo = (typeof settings.modoo !='undefined' && settings.modoo) ? settings.modoo : {}, 12508 settings_mfloating = (typeof settings_modoo.mfloating !='undefined' && settings_modoo.mfloating) ? settings_modoo.mfloating : ''; 12509 12510 if(settings_mfloating!='' && settings_mfloating && $('ul.floating_item._floating.modoo').length>0 && !$('._floating').hasClass('hide')) { 12511 var modoo_fnav_html = (settings_mfloating=='bottom') ? ` 12512 <div class="floating_area _floating_area modoo" data-mfltype="${settings_mfloating}"> 12513 <div class="floating_item floating_bottom _float_buttons"> 12514 ${fl_data.fl_bottom_html} 12515 <button type="button" class="btn_top _top_btn" data-type="top"> 12516 <span class="blind">TOP</span><span class="icon_top"></span> 12517 </button> 12518 </div> 12519 </div> 12520 ` : ` 12521 <div class="floating_area _floating_area modoo" data-mfltype="${settings_mfloating}"> 12522 <div class="dimmed _bg_dimmed"></div> 12523 <div class="floating_item _float_buttons"> 12524 ${fl_data.fl_circle_html} 12525 <button type="button" class="btn_menu _toggle_btn" style="-webkit-tap-highlight-color: transparent;"> 12526 <span class="icon nicon_more4 _icon_area theme_background"></span> 12527 </button> 12528 </div> 12529 </div>` 12530 ; 12531 12532 12533 var floating_open_sid = ['hyundae09']; // modoo 모ë°ì¼ íë¡í ë©ë´ openìì² 12534 if($.inArray(property.SID, floating_open_sid) > -1) { 12535 modoo_fnav_html = ` 12536 <div class="floating_area _floating_area modoo" data-mfltype="${settings_mfloating}"> 12537 <div class="floating_item _float_buttons"> 12538 ${fl_data.fl_circle_html} 12539 <button type="button" class="btn_menu _toggle_btn" style="-webkit-tap-highlight-color: transparent;"> 12540 <span class="icon nicon_more4 _icon_area theme_background"></span> 12541 </button> 12542 </div> 12543 </div>`; 12544 } 12545 //$('.dsgn-body.modoo').append(modoo_fnav_html); 기존 ì½ë 12546 12547 if ($('.dsgn-body.modoo').length > 0) { 12548 $('.dsgn-body.modoo').append(modoo_fnav_html); 12549 } else if (property?.SETTINGS?.modoo?.floating) { // 모ë ì¬ì´í¸ ë©ë´ ëìì¸ ë³ê²½ ì dsgn-bodyì modooê° í¬í¨ëì§ ìì 모ë°ì¼ìì íµë©ë´ ì ë³´ì´ë 문ì í´ê²° 12550 $('.dsgn-body').append(modoo_fnav_html); 12551 } 12552
12553 } 12554 12555} 12556 12557function isMenuLock(callback) { 12558 var deferred = $.Deferred(); 12559 var is_lock_block = 'active', r; 12560 var display_target = (property.VIEW) ? '.cl-s-product-detail, .lux-product-block, .cl-s-product-review, .cl-s-product-qna, .page-comments, .page-bottomlist' : ''; 12561 12562 // if(property.VALIDPLAN && property.ISLOCK == 'true') { 12563 if(property.ISLOCK == 'true') { 12564 r = $.post('/template/menuLockController/type/lock_check', {s: property.SMENU, sid: property.SID, page: property.PAGE, publish : property.PUBLISH}, function(data) { 12565 var lock_type = data.lock_type, 12566 lock_error_type = (typeof data.error_data != 'undefined' && data.error_data.type) ? '.' + data.error_data.type : ''; 12567 12568 if(!data.error && data.result) { 12569 property.ISLOCK = 'false'; 12570 } else { 12571 // var checkGotoURL = ''; 12572 // if((property.SITEUM == '1' || property.SITEUM == '2') && lock_error_type == '') checkGotoURL = '/_login'; 12573 // else if(property.SITEUM == '2'&& $.inArray(lock_error_type,['.unlikesite','.creatorlink']) > -1) checkGotoURL = '/_register'; 12574 // if(checkGotoURL) { 12575 // location.href = checkGotoURL; 12576 // return false; 12577 // } 12578 12579 var text = $.lang[LANG]['render.menu-lock.' + lock_type + '.text']; 12580 if (typeof data.menuLockMsg !== 'undefined' && data.menuLockMsg) { 12581 text = data.menuLockMsg; 12582 } 12583 12584 if (lock_type=='umlevel') { 12585 if(lock_error_type == '' && property.SITEUM == '1') lock_error_type = '.onlylogin'; 12586 12587 text = $.lang[LANG]['render.menu-lock.' + lock_type + '.text' + lock_error_type ]; 12588 if(lock_error_type == '.lowerlevel') text = text.replace(/\#/gi, data.error_data.umlevel); 12589 } 12590 12591 var str = '\ 12592 <div class="menu-lock-block">\ 12593 <div class="inner-box text-center">\ 12594 <div class="form-inline" role="form">\ 12595 <div class="text">\ 12596 <p> ' + text + ' </p>\ 12597 </div>'; 12598 if(lock_type=='password') { 12599 str = str + '\ 12600 <div class="form-group">\ 12601 <input class="form-control" type="password" placeholder="password" data-lock-password=""/>\ 12602 <label class="error-text"></label>\ 12603 </div>\ 12604 <div class="form-group">\ 12605 <span class="btn" data-edit="true" data-selector=".btn" data-lock-submit="">'+$.lang[LANG]['render.lock.password.submit']+'</span>\ 12606 </div>\ 12607 '; 12608 } 12609 str = str + '\ 12610 </div>\ 12611 </div>\ 12612 </div>\ 12613 '; 12614 if($.clnav.check()) { 12615 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 12616 } else { 12617 $('.header.el-menu').after(htmlspecialchars_decode(str)); 12618 } 12619 $('#page-loading-css').remove(); 12620 } 12621 if(typeof callback == 'function') { 12622 callback(); 12623 12624 if(display_target) { 12625 setTimeout(function() { 12626 if(property.ISLOCK == 'true') $(display_target).addClass('hide'); 12627 else $(display_target).removeClass('hide'); 12628 },20); 12629 } 12630 } 12631 12632 },'json'); 12633 } else { 12634 if(typeof callback == 'function') { 12635 callback(); 12636 setTimeout(function() { 12637 $('.header.el-menu.hide').removeClass('hide'); 12638 if(display_target) $(display_target).removeClass('hide'); 12639 },20); 12640 } 12641 } 12642 12643 deferred.resolve(); 12644 return deferred.promise(); 12645} 12646 12647function isSitePasswordLock() { 12648 var deferred = $.Deferred(); 12649 let last_activity = localStorage.getItem("last_activity"); 12650 let ss_site_lock = localStorage.getItem('ss_' + property.SID + '_site_lock'); 12651 12652 if (last_activity && ss_site_lock) { 12653 let timeDiff = Math.floor(Date.now() / 1000) - Number(last_activity); 12654 // console.log(Math.floor(Date.now() / 1000), Number(last_activity), timeDiff); 12655 if (timeDiff > 3600) { 12656 // console.log('localStorage clear'); 12657 localStorage.removeItem('last_activity'); 12658 localStorage.removeItem('ss_' + property.SID + '_site_lock'); 12659 setTimeout(function(){ 12660 location.href = '/'; 12661 }); 12662 } 12663 } 12664 12665 if(property.SETTINGS.sitePermit == undefined) { 12666 property.SETTINGS.sitePermit = 1; 12667 } 12668 12669 if(property.SETTINGS.sitePermit == 3) { 12670 let pw = (ss_site_lock)? ss_site_lock : ''; 12671 r = $.post('/template/siteLockController/type/lock_check', {sid: property.SID, publish : property.PUBLISH, pw: pw}, function(data) { 12672 var lock_error_type = (typeof data.error_data != 'undefined' && data.error_data.type) ? '.' + data.error_data.type : ''; 12673 if(!data.error && data.result) { 12674 property.SETTINGS.sitePermit = 1; 12675 } else { 12676 var str = '\ 12677 <div class="site-lock-block passwordonly">\ 12678 <div class="inner-box text-center">\ 12679 <div class="form-inline" role="form">\ 12680 <div class="text">\ 12681 <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="625 326 116 116" width="114" height="114"><path d="M700.5 379.5h-36v-12c0-9.92 8.08-18 18-18s18 8.08 18 18v12zm-34-2h32v-10c0-8.82-7.18-16-16-16s-16 7.18-16 16v10z"/><path d="M700.88 415.5h-36.75c-4.2 0-7.63-3.42-7.63-7.63v-22.75c0-4.2 3.42-7.63 7.63-7.63h1.38v2h-1.38c-3.1 0-5.63 2.52-5.63 5.63v22.75c0 3.1 2.52 5.63 5.63 5.63h36.75c3.1 0 5.63-2.52 5.63-5.63v-22.75c0-3.1-2.52-5.63-5.63-5.63h-1.38v-2h1.38c4.2 0 7.63 3.42 7.63 7.63v22.75c-.01 4.21-3.43 7.63-7.63 7.63z"/>
12681<path d="M665.5 377.5h34v2h-34z"/><path d="M683 442c-31.98 0-58-26.02-58-58s26.02-58 58-58 58 26.02 58 58-26.02 58-58 58zm0-114c-30.88 0-56 25.12-56 56s25.12 56 56 56 56-25.12 56-56-25.12-56-56-56z"/><circle cx="683" cy="393" r="4"/><path d="M683 403c-.55 0-1-.45-1-1v-9c0-.55.45-1 1-1s1 .45 1 1v9c0 .55-.45 1-1 1z"/></svg>'; 12682 if(typeof data.sitelock_text != 'undefined' && data.sitelock_text) { 12683 str += '<p class="title">'+data.sitelock_text+'</p>'; 12684 } else { 12685 str += '<p class="title">'+$.lang[LANG]['render.site-lock.password.text']+'</p>'; 12686 } 12687 str += '</div>\ 12688 <div class="form-group">\ 12689 <div>\ 12690 <input type="password" placeholder="'+$.lang[LANG]['render.site-lock.password.placeholder']+'" data-lock-password=""/>\ 12691 <label class="error-text"></label>\ 12692 </div>\ 12693 <span class="btn" data-edit="true" data-selector=".btn" data-lock="site" data-lock-submit="">\ 12694 <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="676 378.59 13 9.41" width="13" height="9"><path d="m681 388-5-5 1.41-1.41 3.59 3.58 6.59-6.58L689 380z"></path></svg>\ 12695 </span>\ 12696 </div>\ 12697 </div>\ 12698 </div>\ 12699 </div>\ 12700 '; 12701 if($.clnav.check()) { 12702 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 12703 } else { 12704 $('.header.el-menu').after(htmlspecialchars_decode(str)); 12705 } 12706 } 12707 if(data.reload === true && data.result) { 12708 setTimeout(function(){ 12709 location.reload(); 12710 }); 12711 } 12712 }, 'json'); 12713 } 12714 12715 deferred.resolve(); 12716 return deferred.promise(); 12717} 12718 12719function isUserCertified(history) { 12720 var referrer = (document.referrer !== undefined)? document.referrer.replace(/^https?:\/\//, ''):''; 12721 var seg = referrer.split('/'); 12722 12723 if(property.CERT_USE == 'A' && property.VALIDTYPE != 'BN' && property.VALIDTYPE != 'SM') { //ìê¸ì ë§ë£ 12724 var str = '\ 12725 <div class="site-lock-block">\ 12726 <div class="inner-box text-center">\ 12727 <div class="form-inline">\ 12728 <div class="text">\ 12729 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 118 118" width="118" height="118"><path d="M76.88 52.5h-.38v-10c0-9.92-8.08-18-18-18s-18 8.08-18 18v10h-.38c-4.2 0-7.62 3.42-7.62 7.62v22.75c0 4.2 3.42 7.62 7.62 7.62h36.75c4.2 0 7.62-3.42 7.62-7.62V60.12c.01-4.2-3.41-7.62-7.61-7.62zm-34.38-10c0-8.82 7.18-16 16-16s16 7.18 16 16v10h-32v-10zm40 40.38c0 3.1-2.52 5.62-5.62 5.62H40.12c-3.1 0-5.62-2.52-5.62-5.62V60.12c0-3.1 2.52-5.62 5.62-5.62h36.76c3.1 0 5.62 2.52 5.62 5.62v22.76z"/><path d="M59 1C27.02 1 1 27.02 1 59s26.02 58 58 58 58-26.02 58-58S90.98 1 59 1zm0 114C28.12 115 3 89.88 3 59S28.12 3 59 3s56 25.12 56 56-25.12 56-56 56z"/><path d="M59 64c-2.21 0-4 1.79-4 4 0 1.86 1.28 3.41 3 3.86V77c0 .55.45 1 1 1s1-.45 1-1v-5.14c1.72-.45 3-2 3-3.86 0-2.21-1.79-4-4-4z"/></svg>\ 12730 <p class="title">'+$.lang[LANG]['siteum.site.access.limit']+'</p>\ 12731 </div>\ 12732 </div>\ 12733 </div>\ 12734 </div>\ 12735 '; 12736 12737 if($.clnav.check()) { 12738 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 12739 } else { 12740 $('.header.el-menu').after(htmlspecialchars_decode(str)); 12741 } 12742 return false; 12743 } 12744 12745 r = $.post('/template/isUserCertified', {sid: property.SID, publish : property.PUBLISH}, function(data) { 12746 var cert_form = ''; 12747 12748 // JH 주ì2 : 문ì ì ìë 주ì 12749 if(property.CERT_USE == 'A' && typeof data.cert_adult != 'undefined' && data.cert_adult == 'N') { 12750 _this.b.certOpenChk = true; 12751 } 12752 12753 12754 if((property.CERT_USE == 'Y' && data.cert != 'Y') || (property.CERT_USE == 'A' && data.cert_adult != 'Y')) { 12755 // V2: ordr_idxxë ìë²(cert_req)ìì ìì± â íë°í¸ init_orderid() ë¶íì 12756 cert_form = '\ 12757 <form name="form_auth" method="post" action="/cert_req">\ 12758 <input type="hidden" name="param_opt_1" value="myinfo"/>\ 12759 <input type="hidden" name="param_opt_2" value="'+data.userid+'"/>\ 12760 </form>\ 12761 <form name="myinfo_form" method="post" action="/_myinfo_proc">\ 12762 <input type="hidden" id="cert_data" name="cert_data" value="">\ 12763 <input type="hidden" id="input-name" name="name" value="'+data.name+'">\ 12764 <input type="hidden" id="input-birth" name="birth" value="'+data.birth+'">\ 12765 <input type="hidden" id="input-tel" name="tel" value="'+data.tel+'">\ 12766 <input type="hidden" id="input-gender" name="gender" value="'+data.gender+'">\ 12767 <input type="hidden" id="input-email" name="email" value="'+data.email+'">\ 12768 <input type="hidden" id="input-id" name="id" value="'+data.userid+'">\ 12769 </form>\ 12770 '; 12771 12772 if(property.CERT_USE == 'Y'){ 12773 if(property.SETTINGS.sitePermit == '2Y') { 12774 if(!data.userid){ 12775 if(property.ONE && !property.VIEW) { //onepage site 12776 var onpage_seq = property.pageContent.index[0]['seq']; 12777 if(onpage_seq!='login' && onpage_seq!='register' && onpage_seq!='forgot'){ 12778 location.href='/_login'; 12779 } 12780 } else { 12781 if(property.PAGE!='_login' && property.PAGE!='_register' && property.PAGE!='_forgot') { 12782 location.href='/_login'; 12783 } 12784 } 12785 12786 } else { 12787 var str = '\ 12788 <div class="site-lock-block useronly">\ 12789 <div class="inner-box text-center">\ 12790 <div class="form-inline">\ 12791 <div class="text">\ 12792 '+cert_form+'\ 12793 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120" width="120" height="120"><defs/><g><circle cx="-220.9" cy="60" r="24" class="cls-9"/></g><g/><g><circle cx="60" cy="24" r="22" style="fill:#dbdbdb;"/><path d="M54 52h12c16.56 0 30 13.44 30 30v12c0 4.42-3.58 8-8 8H32c-4.42 0-8-3.58-8-8V82c0-16.56 13.44-30 30-30Z" style="fill:#dbdbdb;"/><path d="m97.34 71.03 3.8 2.58c.67.46 1.43.77 2.23.92l4.51.86a5.95 5.95 0 0 1 4.73 4.73l.86 4.51c.15.8.47 1.56.92 2.23l2.58 3.8a5.942 5.942 0 0 1 0 6.68l-2.58 3.8c-.46.67-.77 1.43-.92 2.23l-.86 4.51a5.95 5.95 0 0 1-4.73 4.73l-4.51.86c-.8.15-1.56.47-2.23.92l-3.8 2.58a5.942 5.942 0 0 1-6.68 0l-3.8-2.58c-.67-.46-1.43-.77-2.23-.92l-4.51-.86a5.95 5.95 0 0 1-4.73-4.73l-.86-4.51c-.15-.8-.47-1.56-.92-2.23l-2.58-3.8a5.942 5.942 0 0 1 0-6.68l2.58-3.8c.46-.67.77-1.43.92-2.23l.86-4.51a5.95 5.95 0 0 1 4.73-4.73l4.51-.86c.8-.15 1.56-.47 2.23-.92l3.8-2.58a5.942 5.942 0 0 1 6.68 0Z" style="fill:#4D94FA"/><path d="M94 74c.39 0 .77.12 1.09.34l3.8 2.58c1.13.77 2.39 1.29 3.74 1.55l4.51.86c.79.15 1.39.76 1.54 1.54l.86 4.51c.26 1.35.78 2.6 1.55 3.74l2.58 3.8c.45.66.45 1.52 0 2.18l-2.58 3.8a9.941 9.941 0 0 0-1.55 3.74l-.86 4.51c-.15.79-.76 1.39-1.54 1.54l-4.51.86c-1.35.26-2.6.78-3.74 1.55l-3.8 2.58c-.32.22-.7.34-1.09.34s-.77-.12-1.09-.34l-3.8-2.58a9.941 9.941 0 0 0-3.74-1.55l-4.51-.86c-.79-.15-1.39-.76-1.54-1.54l-.86-4.51c-.26-1.35-.78-2.6-1.55-3.74l-2.58-3.8c-.45-.66-.45-1.52 0-2.18l2.58-3.8a9.941 9.941 0 0 0 1.55-3.74l.86-4.51c.15-.79.76-1.39 1.54-1.54l4.51-.86c1.35-.26 2.6-.78 3.74-1.55l3.8-2.58c.32-.22.7-.34 1.09-.34m0-4c-1.17 0-2.33.34-3.34 1.03l-3.8 2.58c-.67.46-1.43.77-2.23.92l-4.51.86a5.95 5.95 0 0 0-4.73 4.73l-.86 4.51c-.15.8-.47 1.56-.92 2.23l-2.58 3.8a5.942 5.942 0 0 0 0 6.68l2.58 3.8c.46.67.77 1.43.92 2.23l.86 4.51a5.95 5.95 0 0 0 4.73 4.73l4.51.86c.8.15 1.56.47 2.23.92l3.8 2.58c1.01.69 2.18 1.03 3.34 1.03s2.33-.34 3.34-1.03l3.8-2.58c.67-.46 1.43-.77 2.23-.92l4.51-.86a5.95 5.95 0 0 0 4.73-4.73l.86-4.51c.15-.8.47-1.56.92-2.23l2.58-3.8a5.942 5.942 0 0 0 0-6.68l-2.58-3.8c-.46-.67-.77-1.43-.92-2.23l-.86-4.51a5.95 5.95 0 0 0-4.73-4.73l-4.51-.86c-.8-.15-1.56-.47-2.23-.92l-3.8-2.58A5.919 5.919 0 0 0 94 70Z" style="fill: #4789e7;"/><path d="M91.59 101.71c-.51 0-1.02-.2-1.41-.59l-6.59-6.59c-.78-.78-.78-2.05 0-2.83s2.05-.78 2.83 0l5.17 5.17 10-10c.78-.78 2.05-.78 2.83 0s.78 2.05 0 2.83l-11.41 11.41c-.39.39-.9.59-1.41.59Z" style="fill:#fff"/></g></svg>\ 12794 <p class="title">'+$.lang[LANG]['siteum.cert.user']+'</p>\ 12795 '+$.lang[LANG]['siteum.cert.user.txt']+'\ 12796 <button class="btn cl-s-btn cl-s-btn-full btn-cert" onclick="return auth_type_check(true);">\ 12797 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
12797<path d="M22 0H10C7.79 0 6 1.79 6 4v24c0 2.21 1.79 4 4 4h12c2.21 0 4-1.79 4-4V4c0-2.21-1.79-4-4-4zm2 28c0 1.1-.9 2-2 2H10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h12c1.1 0 2 .9 2 2v24z"/><path d="M18 4h-4c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1z"/></svg>\ 12798 '+$.lang[LANG]['siteum.cert.user.btn']+'</button>\ 12799 <a class="btn cl-s-btn cl-s-btn-primary cl-s-btn-full logout" href="javascript:;">'+ $.lang[LANG]['siteum.cert.user.exit'] +'</a>\ 12800 </div>\ 12801 </div>\ 12802 </div>\ 12803 </div>\ 12804 '; 12805 if($.clnav.check()) { 12806 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 12807 } else { 12808 $('.header.el-menu').after(htmlspecialchars_decode(str)); 12809 } 12810 12811 $(document).on('click', '.btn.logout', function(e){ 12812 e.preventDefault(); 12813 $.getJSON('/umember/login/out', function(r) { 12814 if($.cookie('cert_popup') !== undefined) { 12815 $.removeCookie('cert_popup', true, { path: '/', expires: 12 * 60 * 60 * 1000 }); 12816 } 12817 location.reload(); 12818 },'json'); 12819 }); 12820 } 12821 } else { 12822 if($.inArray(property.PAGE, ['_register', '_login', '_forgot', '_mypost', '_myinfo']) == -1) { 12823 var modal_content = '<p class="text-center">' + $.lang[LANG]['siteum.cert.identify.verification.txt.1'] + '</p>\ 12824 <div class="info">\ 12825 ' + $.lang[LANG]['siteum.cert.identify.verification.txt.2'] + '\ 12826 </div>'; 12827 12828 if(data.cert == 'N') { 12829 modal_content += cert_form; 12830 $(this).showModalFlat($.lang[LANG]['siteum.cert.identify.verification'], modal_content, true, true, function() { 12831 auth_type_check(true); 12832 }, $.lang[LANG]['siteum.cert.identify.colse.btn'], $.lang[LANG]['siteum.cert.identify.verification.btn'],'modal-dialog cl-cmmodal cl-s-btn w560 cl-p70 cl-modal cl-close-btn user-not-cert-modal', false, function(){ //close 12833 $.getJSON('/umember/login/out', function(r) { 12834 location.href = r.url; 12835 // location.href = '/'; 12836 },'json'); 12837 }, '', function() { //hide 12838 $.getJSON('/umember/login/out', function(r) { 12839 location.href = r.url; 12840 // location.href = '/'; 12841 },'json'); 12842 }); 12843 } 12844 } 12845 } 12846 } else if(property.CERT_USE == 'A') { 12847 if(!data.userid){ 12848 if(property.ONE && !property.VIEW) { //onepage site 12849 var onpage_seq = property.pageContent.index[0]['seq']; 12850 if(onpage_seq!='login' && onpage_seq!='register' && onpage_seq!='forgot'){ 12851 location.href='/_login'; 12852 } 12853 } else { 12854 if(property.PAGE!='_login' && property.PAGE!='_register' && property.PAGE!='_forgot') { 12855 location.href='/_login'; 12856 } 12857 } 12858 12859 } else { 12860 var str = '\ 12861 <div class="site-lock-block adultonly">\ 12862 <div class="inner-box text-center">\ 12863 <div class="form-inline">\ 12864 <div class="text">\ 12865 '+cert_form+'\ 12866 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120" width="120" height="120"><path class="st54" d="M49.68 82.35h-4.82V41.79l-8 4.89v-4.76l8.57-5.52h4.25v45.95z"/><path class="st54" d="M80.58 44.77c.42 1.35.78 3.33 1.08 5.94.3 2.6.44 5.83.44 9.68 0 2.71-.18 5.34-.54 7.9-.36 2.56-.98 4.92-1.87 7.08-.97 2.24-2.34 4.04-4.09 5.4-1.76 1.35-3.99 2.03-6.7 2.03-1.86 0-3.54-.31-5.05-.92-1.5-.61-2.74-1.38-3.71-2.32a9.926 9.926 0 0 1-2.13-3.43c-.49-1.31-.73-2.52-.73-3.62h5.65c0 .51.1 1.2.29 2.06.19.87.52 1.6.98 2.19.46.59 1.11 1.1 1.94 1.52.83.42 1.79.63 2.89.63 1.48 0 2.78-.53 3.9-1.59s1.98-2.41 2.57-4.06c.59-1.65 1.03-3.37 1.3-5.17s.41-3.5.41-5.11v-2.41c-.85 1.23-1.9 2.22-3.17 2.98-1.61.97-3.28 1.46-5.01 1.46-2.12 0-3.9-.32-5.36-.95-1.46-.63-2.76-1.61-3.9-2.92-1.06-1.27-1.86-2.86-2.41-4.76s-.83-3.87-.83-5.9c0-1.99.29-3.92.86-5.81.57-1.88 1.39-3.48 2.44-4.79 1.14-1.27 2.55-2.21 4.22-2.83 1.67-.61 3.33-.92 4.98-.92 1.61 0 3.24.32 4.89.95s3.05 1.59 4.19 2.86c1.06 1.32 1.88 2.93 2.47 4.83zm-19.17 5.78c0 1.44.17 2.8.51 4.09.34 1.29.85 2.42 1.52 3.4.68.97 1.5 1.71 2.48 2.22.97.51 1.99.76 3.05.76 1.02 0 2.01-.25 2.98-.76.97-.51 1.82-1.25 2.54-2.22.63-.97 1.13-2.1 1.49-3.4.36-1.29.54-2.66.54-4.09 0-1.44-.18-2.8-.54-4.09-.36-1.29-.86-2.42-1.49-3.4a8.128 8.128 0 0 0-2.54-2.19c-.97-.53-1.97-.79-2.98-.79-1.06 0-2.07.26-3.05.79a7.51 7.51 0 0 0-2.48 2.19c-.68.97-1.19 2.11-1.52 3.4a15.97 15.97 0 0 0-.51 4.09z"/><path class="st54" d="M119 58h-9v-9h-4v9h-9v4h9v9h4v-9h9z"/><path d="M100.91 81C93.26 95.83 77.8 106 60 106c-25.36 0-46-20.64-46-46s20.64-46 46-46c17.8 0 33.26 10.17 40.91 25h4.47C97.44 21.88 80.11 10 60 10c-27.61 0-50 22.39-50 50s22.39 50 50 50c20.11 0 37.44-11.88 45.38-29h-4.47z" fill="#e00"/></svg>\ 12867 <p class="title">'+$.lang[LANG]['siteum.cert.adult']+'</p>\ 12868 '+$.lang[LANG]['siteum.cert.adult.txt']+'\ 12869 <button class="btn cl-s-btn cl-s-btn-full btn-cert" onclick="return auth_type_check(true);">\ 12870 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
12870<path d="M22 0H10C7.79 0 6 1.79 6 4v24c0 2.21 1.79 4 4 4h12c2.21 0 4-1.79 4-4V4c0-2.21-1.79-4-4-4zm2 28c0 1.1-.9 2-2 2H10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h12c1.1 0 2 .9 2 2v24z"/><path d="M18 4h-4c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1z"/></svg>\ 12871 '+$.lang[LANG]['siteum.cert.adult.btn']+'</button>\ 12872 <a class="btn cl-s-btn cl-s-btn-primary cl-s-btn-full logout" href="javascript:;">'+ $.lang[LANG]['manager.site-um.logout'] +'</a>\ 12873 </div>\ 12874 </div>\ 12875 </div>\ 12876 </div>\ 12877 '; 12878 if($.clnav.check()) { 12879 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 12880 } else { 12881 $('.header.el-menu').after(htmlspecialchars_decode(str)); 12882 } 12883 12884 $(document).on('click', '.btn.logout', function(e){ 12885 e.preventDefault(); 12886 $.getJSON('/umember/login/out', function(r) { 12887 if($.cookie('cert_popup') !== undefined) { 12888 $.removeCookie('cert_popup', true, { path: '/', expires: 12 * 60 * 60 * 1000 }); 12889 } 12890 location.reload(); 12891 },'json'); 12892 }); 12893 } 12894 } 12895 } 12896 }, 'json'); 12897} 12898 12899function call_auth_data(frm) { 12900 auth_data(frm); 12901} 12902 12903var fonts_ko = ["@Korean", "IBM Plex Sans KR", "KoPub Batang", "Black Han Sans", "Gmarket Sans", "Godo", "Kukdetopokki", "Nanum Gothic", "Nanum Gothic Coding", "Nanum Myeongjo", "Nanum Barun Gothic", "Nanum Pen Script", "Nanum Barun Pen", "Nanum Brush Script", "Nanum Square", "Nanum Square Round", "Daraehand", "Dohyeon", "Recipekorea", "Monsori", "Noto Sans KR", "Noto Serif CJK KR", "BB Tree Gothic","BB Tree Namu", "BB Tree Hand", "Seoul Namsan", "Seoul Hangang", "Suit", "Spoqa Han Sans", "S CoreDream", "Yeonsung", "Oseong and HanEum", "Iropke Batang", "EASTARJET", "Jalnan", "Jeju Gothic", "Jeju Myeongjo", "Jeju Hallasan", "Jua", "Youth", "Pretendard", "Hangyule", "Hanna"], 12904 fonts_en = ["@English", "Abel", "Abril Fatface", "Alegreya", "Aliquam", "Archivo", "Belleza", "Cardo", "Chakra Petch", "Caveat", "Cookie", "Cutive Mono", "Dancing Script", "Dosis", "Fredoka One", "Great Vibes", "Ibarra Real Nova", "Inter", "Jost", "Krona One", "Lato", "League Spartan", "Libre Baskerville", "Lora", "Montserrat", "Muli", "Nixie One", "Noto Sans", "Open sans", "Oswald", "Parisienne", "Playball", "Playfair Display", "Poppins", "PT Sans", "PT Serif", "Questrial", "Quicksand", "Raleway", "Roboto", "Roboto Slab", "Space Mono", "Source Code Pro", "Staatliches", "Stalemate", "Titillium Web"], 12905 fonts_ja = ["@Japanese", "Hannari", "Hokkori", "IoEI", "JKG", "MS Gothic", "MS Mincho", "Noto Sans JP", "Noto Serif JP"], 12906 fonts_th = ["@Thai", "Cyclin", "Hai Heritage Pro", "HFF Thai Dye", "Owah Tagu Siam NF"], 12907 fonts_ar = ["@Arabic", "Aceh Darusalam", "Amiri", "ArabDances", "Boecklins Universe", "Catharsis Bedouin", "Himchuli", "Kanisah", "Satyajit"], 12908 fonts_cr = ["@Cyrillic", "20db", "Alpha Echo", "Anonymous Pro", "Arsenal", "Bebas Neue", "Bitter", "Charis SIL", "Fira Mono", "Lato CR"], 12909 fonts_he = ["@Hebrew", "Alef", "Ezra SIL", "MendelSiddurMW"], 12910 fonts_ch = ["@Chinese", "cwTeXHei", "cwTeXKai", "cwTeXMing", "cwTeXYen", "Noto Sans SC", "Noto Sans TC", "Noto Serif SC", "Noto Serif TC"], 12911 fonts_vi = ["@Vietnamese", "Han Nom Gothic"]; 12912 FONTS = []; 12913 12914for(i=0; i<UFONTS.length; i++){ 12915 var fonts = eval('fonts_'+UFONTS[i]); 12916 FONTS = arrayUnique(fonts.concat(FONTS)); 12917} 12918 12919function galleryStartHover() { 12920 $(this).find('figure').addClass('hover'); 12921}; 12922function galleryCloseHover() { 12923 $(this).find('figure').removeClass('hover'); 12924}; 12925function galleryMovelink() { 12926 $(this).find('a').click(); 12927}; 12928 12929$(function () { 12930 $(document).on('click', '.modoo._floating_area[data-mfltype^="ci"] ._toggle_btn', function(){ 12931 var navi_btn = $('.modoo._floating_area[data-mfltype^="ci"]').find('.float-navi-button'); 12932 12933 if(navi_btn.hasClass('mfl_hide')) { 12934 $('.modoo._floating_area[data-mfltype^="ci"]').removeClass('fl_open').addClass('fl_open'); 12935 $('.modoo._floating_area[data-mfltype^="ci"]').find('.float-navi-button').removeClass('mfl_hide'); 12936 $(this).removeClass('float-navi-open').addClass('float-navi-open'); 12937 $(this).find('._icon_area').removeClass('nicon_more4').addClass('nicon_close'); 12938 } else { 12939 $('.modoo._floating_area[data-mfltype^="ci"]').removeClass('fl_open'); 12940 $('.modoo._floating_area[data-mfltype^="ci"]').find('.float-navi-button').addClass('mfl_hide'); 12941 $(this).removeClass('float-navi-open'); 12942 $(this).find('._icon_area').removeClass('nicon_close').addClass('nicon_more4'); 12943 } 12944 12945 }); 12946 12947 $(document).on('click', '.nonePrice', function () { 12948 alert('ë¡ê·¸ì¸ í ì´ì©ì´ ê°ë¥í©ëë¤.'); 12949 if (property['VALIDTYPE'] != 'SM') { 12950 $('.login .cl_icon_profile').click(); 12951 } else { 12952 location.href='/_login'; 12953 } 12954 return false;
12955 }); 12956 12957}); 12958 12959var naverLogCallback = function(callback) { 12960 if($('#naverLogload').length == 0) { 12961 var head= document.getElementsByTagName('head')[0]; 12962 var script= document.createElement('script'); 12963 script.type= 'text/javascript'; 12964 script.id= 'naverLogload'; 12965 script.src= '//wcs.naver.net/wcslog.js'; 12966 script.addEventListener('load', callback); 12967 head.appendChild(script) 12968 } else { 12969 if(typeof callback == 'function') { 12970 callback(); 12971 } 12972 } 12973} 12974 12975var member_only_item = function() { 12976 alert('ë¡ê·¸ì¸ í ì´ì©ì´ ê°ë¥í©ëë¤'); 12977 location.href = "/_login"; 12978}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.