1var isAosBlock = false; 2var isgalleryView = false; 3var pageLoad = true; 4var menuClickMove = false; 5 6function parseShoppingGradeSettings(settings) { 7 if (!settings) return {}; 8 if (typeof settings === 'object') return settings; 9 if (typeof settings === 'string') { 10 try { 11 return JSON.parse(settings); 12 } catch (e) { 13 return {}; 14 } 15 } 16 return {}; 17} 18 19function normalizeShoppingGradeChmod(chmod) { 20 if (typeof chmod === 'string') { 21 try { 22 chmod = JSON.parse(chmod); 23 } catch (e) { 24 chmod = chmod ? chmod.split(',') : []; 25 } 26 } 27 return $.isArray(chmod) ? $.map(chmod, function(v) { return String(v); }) : []; 28} 29 30function isShoppingGradeAdminMember(member) { 31 return member && (member.check_adm == 1 || member.check_uadm == 1); 32} 33 34function isShoppingGradeBlocked(product, blockSettings, property) { 35 var isAdmin = isShoppingGradeAdminMember(property && property.UMEMBER ? property.UMEMBER : null) || isShoppingGradeAdminPreview(); 36 var isShoppingGradePlan = property && property.VALIDPLAN && property.VALIDTYPE == 'SM'; 37 var settings = parseShoppingGradeSettings(blockSettings); 38 var parentSettings = parseShoppingGradeSettings(product && product.parent_elsettings); 39 var blockMemberOnly = settings.member_only == 'ON'; 40 var parentMemberOnly = parentSettings.member_only == 'ON'; 41 var chmod = []; 42 var userGrades = []; 43 44 if (blockMemberOnly) chmod = chmod.concat(normalizeShoppingGradeChmod(settings.gallery_page_chmod)); 45 if (parentMemberOnly) chmod = chmod.concat(normalizeShoppingGradeChmod(parentSettings.gallery_page_chmod)); 46 chmod = $.map(chmod, function(v) { return String(v); }); 47 48 if (property && property.UMGRADE) { 49 if (typeof property.UMGRADE.seq != 'undefined' && property.UMGRADE.seq !== null) userGrades.push(String(property.UMGRADE.seq)); 50 if (typeof property.UMGRADE.grade_id != 'undefined' && property.UMGRADE.grade_id !== null) userGrades.push(String(property.UMGRADE.grade_id)); 51 } 52 53 if (isAdmin) return false; 54 if (!isShoppingGradePlan) return false; 55 if (product && product.shopping_grade_hidden == 'ON') return true; 56 if (!chmod.length) return false; 57 58 for (var i = 0; i < userGrades.length; i++) { 59 if ($.inArray(userGrades[i], chmod) > -1) return false; 60 } 61 62 return true; 63} 64 65function getShoppingGradeBlockedMessage(product) { 66 var msg = product && product.shopping_grade_hidden_msg ? product.shopping_grade_hidden_msg : 'í´ë¹ ë±ê¸ ê³ ê° ì ì© ìíì ëë¤.'; 67 return normalizeShoppingGradeBlockedMessage(msg); 68} 69 70function normalizeShoppingGradeBlockedMessage(msg) { 71 if (!msg) return 'í´ë¹ ë±ê¸ ê³ ê° ì ì© ìíì ëë¤.'; 72 msg = msg.replace(/,\s*/g, ' '); 73 return msg; 74} 75 76function isShoppingGradeEditorPreview() { 77 return property 78 && property.PUBLISH === false 79 && property.LOAD === 'RENDER' 80 && property.VALIDTYPE === 'SM'; 81} 82 83function isShoppingGradeAdminPreview() { 84 return isShoppingGradeEditorPreview() 85 && property.UMEMBER 86 && isShoppingGradeAdminMember(property.UMEMBER); 87} 88 89function hasShoppingGradeDiscount(grade) { 90 return grade && String(grade.discount_use) == '1' && Number(grade.discount_value || 0) > 0; 91} 92 93function getBestShoppingGradePreviewDiscountGrade(grades) { 94 var rateGrade = null, 95 rateValue = null, 96 fixedGrade = null, 97 fixedValue = null; 98 99 $.each(grades || [], function(i, grade) { 100 if(!hasShoppingGradeDiscount(grade)) return true; 101 102 var discountValue = Number(grade.discount_value || 0); 103 if(String(grade.discount_type) == '0') { 104 if(rateValue === null || discountValue > rateValue) { 105 rateValue = discountValue; 106 rateGrade = grade; 107 } 108 } else if(fixedValue === null || discountValue > fixedValue) { 109 fixedValue = discountValue; 110 fixedGrade = grade; 111 } 112 }); 113 114 var selectedGrade = rateGrade || fixedGrade; 115 if(!selectedGrade) return null; 116 117 selectedGrade = $.extend({}, selectedGrade); 118 selectedGrade.__preview_ignore_min = 'Y'; 119 return selectedGrade; 120} 121 122function getShoppingGradePreviewDiscountGrade(fallbackGrade) { 123 if (hasShoppingGradeDiscount(property && property.UMGRADE ? property.UMGRADE : null)) return property.UMGRADE; 124 if (!isShoppingGradeAdminPreview()) { 125 return (!$.isArray(fallbackGrade) && hasShoppingGradeDiscount(fallbackGrade)) ? fallbackGrade : null; 126 } 127 128 if ($.isArray(fallbackGrade)) { 129 return getBestShoppingGradePreviewDiscountGrade(fallbackGrade); 130 } 131 132 return hasShoppingGradeDiscount(fallbackGrade) ? $.extend({}, fallbackGrade, {__preview_ignore_min:'Y'}) : null; 133} 134 135function getShoppingGradeProductGradeOnOff(product) { 136 if(!product) return 'OFF'; 137 if(typeof product.grade_onoff != 'undefined' && product.grade_onoff !== null && product.grade_onoff !== '') { 138 return product.grade_onoff == 'ON' ? 'ON' : 'OFF'; 139 } 140 141 var settings = parseShoppingGradeSettings(product.gsettings); 142 return (typeof settings.grade_onoff != 'undefined' && settings.grade_onoff == 'ON') ? 'ON' : 'OFF'; 143} 144 145function isShoppingGradeProductGradePriceEnabled(product) {
146 return getShoppingGradeProductGradeOnOff(product) == 'ON'; 147} 148 149function calcShoppingGradeDisplayPrice(price, grade) { 150 if (!hasShoppingGradeDiscount(grade) || price <= 0) return null; 151 if (grade.__preview_ignore_min != 'Y' && price < Number(grade.discount_amount || 0)) return null; 152 153 var discountAmount = 0; 154 if (String(grade.discount_type) === '0') { 155 discountAmount = Math.floor(price * (Number(grade.discount_value || 0) / 100)); 156 if (Number(grade.discount_max || 0) > 0 && discountAmount > Number(grade.discount_max || 0)) { 157 discountAmount = Number(grade.discount_max || 0); 158 } 159 } else { 160 discountAmount = Number(grade.discount_value || 0); 161 } 162 163 var gradePrice = price - discountAmount; 164 if (gradePrice < 0) gradePrice = 0; 165 return (discountAmount > 0 && gradePrice < price) ? gradePrice : null; 166} 167 168function isShoppingGradePriceHidden(item) { 169 return item && item.price_hidden == 'ON' && !isShoppingGradeAdminPreview(); 170} 171 172var RENDER = { 173 init: function (property) { 174 var History = window.History; 175 var b = property, 176 URI = (b.PUBLISH) ? '/' : '/render', 177 param = (b.PUBLISH) ? '/publish/true' : '', 178 selectEL = '', 179 galleryEL = new Object(); 180 var CERT_USERID = ''; 181 182 this.b = b; 183 this.b.pageContent = {}; 184 this.b.pageContent[b.PAGE] = b.INITPAGE; 185 this.b.pageConf = {}; 186 this.b.pageConf[b.PAGE] = b.PAGECONF || { 187 islock: b.ISLOCK, 188 overlay: b.HEADER, 189 pageScript: '', 190 meta: null, 191 og_others: null 192 }; 193 this.b.pageBlocksType = {}; 194 this.b.URL = URI; 195 this.b.param = param; 196 this.history = window.History; 197 this.b.MENULIST = []; 198 this.galleryEL = galleryEL; 199 this.b.certOpenChk = false; 200 _this = this; 201 202 var applyPageConf = function(data) { 203 if(!data) return true; 204 if(typeof data.url != 'undefined' && data.url) { 205 location.href = data.url; 206 return false; 207 } 208 209 if(typeof data.islock != 'undefined') b.ISLOCK = data.islock; 210 if(typeof data.overlay != 'undefined') b.HEADER = (data.overlay) ? true : false; 211 212 var isSidebar = $('.el-menu > header').hasClass('sidebar'); 213 var isHeaderOldVer = !$.clnav.check(); 214 if(isHeaderOldVer) { 215 if(b.HEADER && !b.VIEW && !isSidebar) { 216 $('.header-empty').css('height',0); 217 $('.header.el-menu').removeClass('fixed'); 218 $('header.navbar').addClass('transparent'); 219 } else { 220 $('header.navbar').removeClass('transparent'); 221 } 222 } 223 224 if(typeof data.pageScript != 'undefined') { 225 $('#pageScript').remove(); 226 if(data.pageScript) $('body').append(data.pageScript); 227 } 228 if(data.meta != null) { 229 $.each(data.meta, function(k,v) { 230 $('meta[name="' + k + '"]').attr('content',v); 231 if(k == 'title') { 232 $(document).prop('title', htmlspecialchars_decode(v)); 233 } 234 }); 235 } 236 if(data.og_others != null) { 237 $.each(data.og_others, function(ok,ov) { 238 var og_property = ok.replace(/\_\_/gi,':'); 239 if(ov != '') { 240 if($('meta[property="' + og_property + '"]').length > 0) $('meta[property="' + og_property + '"]').attr('content',ov); 241 else $('meta[property^="og:"]').eq($('meta[property^="og:"]').length - 1).after('<meta property="' + og_property + '" content="' + ov + '" data-dynamic="true"/>'); 242 } else { 243 if($('meta[property="' + og_property + '"]').length > 0) $('meta[property="' + og_property + '"]').remove(); 244 } 245 }); 246 } 247 248 return true; 249 }; 250 251 var getPageContentsUrl = function(page) { 252 var contentsParam = param; 253 contentsParam = (page == 'index,template' && contentsParam.indexOf('/org/') == -1) ? contentsParam + '/org/' + page : contentsParam; 254 contentsParam = (b.PUBLISH) ? contentsParam : contentsParam + '/render/true'; 255 return '/template/contents/sid/' + b.SID + '/page/' + encodeURIComponent(page) + contentsParam; 256 }; 257 258 var isRenderFormSubmitAllowed = function() { 259 if(window.location.pathname.match(/^\/render(\/|$)/) === null) return true; 260 return (b.PREVIEW_FORM_SUBMIT === true || b.PREVIEW_FORM_SUBMIT === 'true'); 261 }; 262 263 var cachePageContentsResult = function(page, data) { 264 if(!data) return; 265 if(data.conf) b.pageConf[page] = data.conf; 266 if(typeof data.blocks_type != 'undefined') b.pageBlocksType[page] = data.blocks_type; 267 if(typeof data.contents != 'undefined' && page != 'index,template') b.pageContent[page] = data.contents; 268 if(data.initContent !== undefined) property.INITPAGE = JSON.parse(data.initContent); 269 }; 270 271 var loadPageMoveConf = function(page, isForumView) { 272 var deferred = $.Deferred(); 273 if(b.pageConf.hasOwnProperty(page)) { 274 deferred.resolve(b.pageConf[page]); 275 return deferred.promise(); 276 } 277 278 if(!isForumView) { 279 $.ajax({ 280 url: getPageContentsUrl(page), 281 data: { siteum: b.SITEUM }, 282 dataType: 'json', 283 type: 'GET', 284 async: true, 285 cache: false, 286 success: function(data) { 287 if(typeof data.url != 'undefined' && data.url) { 288 deferred.resolve(data); 289 return false;
290 } 291 if(typeof data.error != 'undefined' && data.error) { 292 deferred.resolve({}); 293 return false; 294 } 295 296 cachePageContentsResult(page, data); 297 deferred.resolve(data.conf || {}); 298 }, 299 error: function() { 300 deferred.reject(); 301 } 302 }); 303 } else { 304 $.ajax({ 305 url: '/template/conf', 306 data: { sid : b.SID, page : page, publish : b.PUBLISH, siteum : b.SITEUM }, 307 dataType: 'json', 308 type: 'POST', 309 async: true, 310 cache: false, 311 success: function(data) { 312 if(!(typeof data.url != 'undefined' && data.url)) b.pageConf[page] = data; 313 deferred.resolve(data); 314 }, 315 error: function() { 316 deferred.reject(); 317 } 318 }); 319 } 320 321 return deferred.promise(); 322 }; 323 $(window).ready(function() { 324 if(b.VALIDPLAN && $.inArray(b.VALIDTYPE, ['BN','SM']) > -1 && (b.CERT_USE == 'Y' || b.CERT_USE == 'A')) { 325 if(b.CERT_USE == 'Y') { 326 if(b.UMEMBER.check_login == true) isUserCertified(history); 327 } else { 328 isUserCertified(history); 329 } 330 } 331 332 if(!b.VALIDPLAN && b.CERT_USE == 'A') { 333 isUserCertified(history); 334 } 335 336 var checkIOS = ((navigator.userAgent.indexOf('iPhone') != -1) || (navigator.userAgent.indexOf('iPod') != -1) || (navigator.userAgent.indexOf('iPad') != -1)) ? true : false; 337 if(checkIOS) $('body').addClass('ios-bg-attachment-scroll'); 338 339 (function(window){ 340 var History = window.History; 341 if ( !History.enabled ) { 342 return false; 343 } 344 345 History.Adapter.bind(window,'statechange',function(){ 346 $('.error_404.new_design').remove(); 347 348 var State = History.getState(), 349 cUrl = new getLocation(State.url), 350 loc = cUrl.pathname, 351 uri = (b.PUBLISH) ? loc.replace(/^\//,'').replace(/\/$/,'') : loc.replace(/\/*(render)\/*/,''), 352 uri = uri.replace('/view/',','), 353 s = uri.split(','), 354 bookmark = ''; 355 356 if (b && b.MODOO === true) { 357 const inSubmenu = Array.isArray(b.SMENU) && 358 b.SMENU.some(menu => 359 Array.isArray(menu.children) && 360 menu.children.some(child => 361 child.name.replace(/ /g, "-") === decodeURI(uri) 362 ) 363 ); 364 if (inSubmenu) { 365 //console.log('íì¬ íì´ì§ ìë¸ë©ë´ ì¡´ì¬'); 366 $('.cl-nav-section.sub').show(); 367 } else { 368 //console.log('íì¬ íì´ì§ ìë¸ë©ë´ ìì'); 369 $('.cl-nav-section.sub').hide(); 370 } 371 } 372 373 if(uri.match(/^(psearch|\_checkout|\_forgot|\_mypayment|\_lang)\//gi) !== null) { 374 location.href = '/'+uri; 375 return false; 376 } 377 378 if(uri.match(/^_product\//gi) !== null) { 379 uri = (b.PUBLISH) ? uri : 'render/' + uri; 380 location.href = '/'+uri; 381 return false; 382 } 383 // naverLogCallback(function() { 384 // if("naver_log" in b.SETTINGS) { 385 // if (!wcs_add) var wcs_add={}; 386 // wcs_add["wa"] = b.SETTINGS.naver_log; 387 // if (!_nasa) var _nasa={}; 388 // wcs_do(_nasa); 389 // } 390 // }); 391 if($('.cl-flat-modal').length > 0) $('.cl-flat-modal .modal').modal('hide'); 392 393 if(uri == b.URL || uri == '') { 394 uri = (b.ONE) ? 'index' : b.MENULINK[0]; 395 } 396 397 (typeof s[1] != 'undefined') ? b.VIEW = s[1] : b.VIEW = ''; 398 b.PAGE = decodeURI(uri); 399 if(b.PAGE.indexOf('@')>-1) { 400 var tmp = b.PAGE.split('@'); 401 b.PAGE = tmp[0]; 402 bookmark = tmp[1]; 403 } 404 405 if((b.PAGE).indexOf(',')>-1) { 406 var tmp = b.PAGE.split(','); 407 b.VIEW = tmp[1]; 408 } 409 410 $('.el-footer').css('visibility', 'hidden'); 411 $.processON(); 412 413 getParent(s[0],b.VIEW,b.PAGE); 414 var pageMove = true; 415 416 if(b.VIEW && s[0] != 'forum' && s[0] != 'psearch' && b.COUNT == 0 && !b.PUBLISH) { 417 $(this).showModalFlat('INFORMATION','Page not found',true,false,'','ok'); 418 History.back(); 419 pageMove = false;
420 } 421 if(pageMove) { 422 clearDsgnbody(); 423 pageLoad = true; 424 var is_templates = checkTemplateSite(b.SID), 425 menuVer06 = ($('.el-menu .cl-menu-option').length > 0) ? true : false; 426 427 var menu_name = (b.VIEW) ? b.PAGE.split(',') : [b.PAGE], 428 tmp_url = (is_templates || b.PUBLISH === false) ? '/render' : '', 429 tmp_href = 'a[href="'+tmp_url+'/' + menu_name[0]+'"]', 430 pagemenu_link = '#tpl-menu.nav li '+tmp_href; 431 432 if(!$(pagemenu_link).parent().hasClass('active')) { 433 $('#tpl-menu li').removeClass('active').removeClass('open'); 434 435 $(pagemenu_link).parent().addClass('active'); 436 if($(pagemenu_link).closest('.dropdown-menu').length>0) { 437 if($('body').width() > 768) { 438 $(pagemenu_link).closest('.dropdown').addClass('active'); 439 } else { 440 $(pagemenu_link).closest('.dropdown').addClass('open'); 441 } 442 } else { 443 if($('.el-menu > header').hasClass('navbar-fheader')) $('#mobile-nav li.menu-has-children ul.dropdown-menu').hide(); 444 else { 445 if($('body').width() <= 768) $('#tpl-menu li.dropdown ul.dropdown-menu').hide(); 446 } 447 } 448 } 449 450 if(menuVer06) { 451 $('.el-menu .cl-moption-row').removeClass('active'); 452 $('.el-menu .cl-moption-row '+tmp_href).closest('.cl-moption-row').addClass('active'); 453 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'); 454 455 $('#mobile-nav li.menu-has-children').removeClass('open'); 456 $('#mobile-nav li.menu-has-children ul.dropdown-menu').hide(); 457 $('#mobile-nav '+tmp_href).closest('li.menu-has-children').addClass('open'); 458 $('#mobile-nav '+tmp_href).closest(' ul.dropdown-menu').show(); 459 } 460 461 462 if($('.shopping-more-wrap').length > 0) $('.shopping-more-wrap').remove(); 463 // console.log('pageMove', $.cookie('prev-forum-view')); 464 if(s[0] != 'forum' && $.cookie('prev-forum-view') === undefined) { 465 // console.log('forum cookie'); 466 $.each(document.cookie.split(';'), function(index, cookie) { 467 var name = cookie.split('=')[0].trim(); 468 if (name.indexOf('forum_') === 0) { 469 $.removeCookie(name, {path:'/'}) 470 // document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 471 } 472 }); 473 } 474 $.removeCookie('prev-forum-view', {path:'/'}); 475 var continuePageDraw = function() { 476 $('body').find('.galProjectCss').remove(); 477 if($('.popup').length) $('.popup').remove(); //clear Popup; 478 if(b.SETTINGS.noError404 === true && !(b.MENULIST.indexOf(b.PAGE) > -1) && !b.ONE && !b.VIEW) { // page move 479 window.location.href = '/'; 480 return false; 481 } 482 showPageCallback(showPage, function() { 483 var pgmove_vMode = (typeof $('.mobilepc_ch').attr('data-desktop-option')!='undefined') ? $('.mobilepc_ch').attr('data-desktop-option') : ''; 484 pgmove_vMode = $.mpcWeb.mpcGetVpmode(pgmove_vMode,b.SETTINGS); 485 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 486 if(typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) $.mpcWeb.mpcWebhtml(pgmove_vMode,b.pageContent[b.PAGE],b.SETTINGS.zoom,'pagemove'); 487 } 488 489 setTimeout(function() { 490 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 491 if(b.ONE && !b.VIEW || (b.PAGE == b.MENULINK[0]) && !b.VIEW) setSitePopup(); 492 $.siteBanner.init(true,true); 493 } 494 495 if(b.VALIDPLAN && (b.VALIDTYPE == 'BN' || b.VALIDTYPE == 'SM')) { 496 if(typeof b.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(b.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) { 497 $.fnav.draw(b.SETTINGS.fnav); 498 } 499 if(typeof b.SETTINGS.qm_onoff != 'undefined' && b.SETTINGS.qm_onoff==true) { 500 var quick_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 501 if(!(b.PARENT.page != null && (quick_type=='mobile'))) { 502 $.quickmenu.init(b.SID, b.PUBLISH,quick_type); 503 mobileWebQuickmenuPosition(b,quick_type); 504 } else { 505 $(`.quick-menu-${b.SID}`).remove(); 506 } 507 } 508 } 509 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 510 if(typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 511 mobileWebfnavCheck(pgmove_vMode); 512 } 513 } 514 515 // ìíì´ì§, ê°¤ë¬ë¦¬ ìì¸íì´ì§ìì ë©ë´ í´ë¦ ì íì´ì§ ì´ë í í´ë¹ ë©ë´ë¡ ì´ëíì§ ìê³ ìë¨ ê³ ì Issue Fix (https://flow.team/l/1x7rX) 516 if(typeof b.SID != 'undefined' && b.SID && b.SID == 'ronixinc') { 517 if(location.hash) { 518 var hash = decodeURIComponent(location.hash.substring(1)); 519 console.log('í´ì ê°ì§:', hash); 520 521 setTimeout(function() { 522 var $block = $('.link-to-' + hash); 523 524 if($block.length > 0) { 525 var blockTop = $block.offset().top; 526 var currentScroll = $(window).scrollTop(); 527 var threshold = 100; 528 529 if(Math.abs(blockTop - currentScroll) > threshold) { 530 console.log('ì¤í¬ë¡¤ íì:', {current: currentScroll, target: blockTop}); 531 moveLinkPage(hash); 532 } else { 533 console.log('ì´ë¯¸ ê·¼ì²ì ìì, ì¤í¬ë¡¤ ìëµ'); 534 } 535 } else { 536 console.error('ë¸ë¡ ìì:', '.link-to-' + hash); 537 } 538 }, 500); 539 } 540 } 541 542 }, 500); 543 }); 544 545 if(typeof $.cookie('gallery-item') != 'undefined' && b.VIEW == '') { 546 setTimeout(function() { 547 moveGallery($.cookie('gallery-item')); 548 },500); 549 } else if(typeof $.cookie('gallery') != 'undefined' && b.VIEW == '') { 550 setTimeout(function() { 551 moveGallery($.cookie('gallery')); 552 },500); 553 } else if(typeof $.cookie('forum-item') != 'undefined' && b.VIEW == '') { 554 // console.log('fm_view', $.cookie('forum_content_view')); 555 setTimeout(function() { 556 if(typeof $.cookie('forum_content_view') != 'undefined'){ 557 var fm_view = $.cookie('forum_content_view'); 558 var fv = (fm_view !== undefined && fm_view)? fm_view.split('&'):array(); 559 var pid = (fv)? fv[0]:''; 560 var row_id = (fv)? fv[1]:''; 561 562 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"] .tpl-forum-list-title[data-id="'+row_id+'"]', 1000); 563 $.removeCookie('forum-item', { path: '/' }); 564 565 $('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="'+row_id+'"]').click(); 566 // $.removeCookie('forum_content_view', { path: '/', expires: 12 * 60 * 60 * 1000 }); 567 } else { 568 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"]', 1000); 569 $.removeCookie('forum-item', { path: '/' }); 570 } 571 }, 500); 572 } else { 573 var url = window.location; 574 setTimeout(function() { 575 moveScroll(0,url.href); 576 },300); 577 } 578 if(typeof b.SETTINGS.google != 'undefined' && b.SETTINGS.google.length > 0) { 579 var https_check = (location.protocol=='https:') ? 'https:' : 'http:', 580 host_url = b.URL + b.PAGE; 581 582 host_url = (b.PARENT && b.PARENT.mode=='project') ? (host_url.replace(/,/g,"/view/")) : host_url; 583 584 if(b.SETTINGS.google.indexOf('UA-') > -1) ga('send', 'pageview', location.pathname); 585 else if(b.SETTINGS.google.indexOf('G-') > -1) { 586 gtag('config', b.SETTINGS.google, { 587 page_title: b.TITLE, 588 page_location: https_check + '//'+ b.HOST + host_url, 589 page_path: host_url 590 }); 591 } 592 //else gtag('config', b.SETTINGS.google , {page_path : location.pathname}); 593 //console.log(https_check + '//'+ b.HOST + host_url); 594 // console.log('google analytics send, pageview'); 595 } 596 if(typeof b.SETTINGS.npay_setting != 'undefined' && b.SETTINGS.npay_setting.onoff == true && b.SETTINGS.npay_setting.naver_log.length > 0) { 597 wcs_do(); 598 // console.log('naverpay log'); 599 } else { 600 if(typeof b.SETTINGS.naver_log != 'undefined' && b.SETTINGS.naver_log.length > 0) { 601 wcs.inflow(); 602 wcs_do(_nasa); 603 // console.log('naver analytics send, pageview'); 604 } 605 } 606 if(typeof b.SETTINGS.gtag_event != 'undefined' && typeof b.SETTINGS.gtag_event.page != 'undefined' && b.SETTINGS.gtag_event.page.length > 0) { 607 if(typeof b.SETTINGS.gtag_event.type != 'undefined' && b.SETTINGS.gtag_event.type == 'event' && b.SETTINGS.gtag_event.page == b.PAGE) { 608 // console.log(b.SETTINGS.gtag_event); 609 var v0 = b.SETTINGS.gtag_event.val[0], 610 v1 = b.SETTINGS.gtag_event.val[1], 611 v2 = b.SETTINGS.gtag_event.val[2]; 612 613 gtag(b.SETTINGS.gtag_event.type,v0,{v1:v2}); 614 // gtag(b.SETTINGS.gtag_event.type, b.SETTINGS.gtag_event.val[0], { b.SETTINGS.gtag_event.val[1] : b.SETTINGS.gtag_event.val[2] }); 615 } 616 617 } 618 619 // menu ver3 : fheader 620 setTimeout(function() {
621 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 622 },400); 623 624 625 // favicon refresh 626 var favicon = b.RESOURCE + '/' + b.SID + '/' + b.SID + '-favicon.ico?_' + new Date().getTime(); 627 changeFavicon(favicon); 628 629 if(typeof pageMoveCallback == 'function') pageMoveCallback(); 630 formTranslate(LANG); 631 632 }; 633 634 loadPageMoveConf(b.PAGE, (s[0] == 'forum' && b.VIEW)).done(function(data) { 635 if(applyPageConf(data) === false) return false; 636 continuePageDraw(); 637 }).fail(function() { 638 $.processOFF(); 639 }); 640 } 641 }); 642 643 History.Adapter.bind(window, 'popstate', function() { // history.js suggests statechange but it has a bug with urls with hashes not firing statechange 644 var State = History.getState(), 645 cUrl = new getLocation(State.url), 646 bUrl = new getLocation(window.location.href); 647 648 if(b.ONE) { 649 if(cUrl.href!=window.location.href) { 650 if(b.PAGE!='index') { 651 var link = (!b.PUBLISH) ? '/render/index' : bUrl.pathname; 652 var url = new getLocation(link); 653 golink(_this,url); 654 history.pushState('', '', link + bUrl.hash); 655 } else { 656 // if(bUrl.hash) { 657 // var go = (bUrl.hash).replace('#',''); 658 // moveLinkPage(go); 659 // } 660 } 661 } 662 } 663 }); 664 665 })(window); 666 667 $('.dsgn-body').addClass('mode-render'); 668 //$.modalON(); 669 670 if(typeof b.SETTINGS == 'undefined') return; 671 // if(typeof b.SETTINGS.rightClick == 'undefined' || b.SETTINGS.rightClick === false) return; 672 if(!b.VALIDTYPE || b.VALIDTYPE == 'PK' || typeof b.SETTINGS.rightClick == 'undefined' || b.SETTINGS.rightClick === false) { 673 b.SETTINGS.rightClick = false; 674 return; 675 } 676 $('body').on('contextmenu', function(event){ return false; }); 677 $('body').on('selectstart', '.element, .forum-view, .comment-list', function(event){ return false; }); 678 $('body').on('dragstart', '.element, .forum-view, .comment-list', function(event){ return false; }); 679 680 // MutationObserverì ì½ë°± í¨ì ì ì 681 const observerCallback = function(mutationsList) { 682 for (const mutation of mutationsList) { 683 if (mutation.type === 'childList') { 684 // DOM ë³íê° ê°ì§ëë©´ AOS.refresh í¸ì¶ 685 AOS.refresh(); 686 } 687 } 688 }; 689 // MutationObserver ì¸ì¤í´ì¤ ìì± 690 const observer = new MutationObserver(observerCallback); 691 // ê´ì°°í ìµì ì ì 692 const config = { 693 childList: true, 694 subtree: true 695 }; 696 // ê°ì§í ìì ì í 697 const targetNode = document.querySelector('.dsgn-body'); 698 if (targetNode) { 699 observer.observe(targetNode, config); 700 } 701 }); 702 703 Pace.on('done', function() { 704 /*shopping more create*/ 705 if($('.shopping-wrap').length && $('.shopping-wrap').height() >= 800 && $('.shopping-more').length == 0) { 706 var more_txt = (LANG == 'ko') ? 'ìíì ë³´ ë보기' : 'MORE'; 707 var review_chk = ($('.cl-s-product-review').length > 0) ? true : false, 708 qna_chk = ($('.cl-s-product-qna').length > 0) ? true : false; 709 var colorSet = shopping_more_color, 710 sm_font = (!colorSet) ? '' : colorSet.color, 711 sm_bgColor = (!colorSet) ? '' : colorSet.background_color, 712 sm_border = (!colorSet) ? '' : colorSet.border_color; 713 $('.shopping-wrap').css('max-height','800px') 714 .css('overflow','hidden') 715 .after('<div class="shopping-more-wrap"><div class="shopping-more">'+more_txt+'</div></div>'); 716 $('.shopping-wrap').removeClass('open'); 717 if(sm_font) $('.shopping-more').css('color',sm_font);
718 if(sm_bgColor) $('.shopping-more').css('background-color',sm_bgColor); 719 if(sm_border) $('.shopping-more').css('border-color',sm_border); 720 if(!review_chk && !qna_chk) $('.shopping-more-wrap').css('padding-bottom','100px'); 721 } 722 723 var header_h = $('header').outerHeight(); 724 var menu_logo = $('.menu-logo-top'); 725 var menu_logo_h = (menu_logo.length > 0) ? menu_logo.outerHeight() : 0; 726 $('.dsgn-body')[0].style.setProperty('--menu-logo-height', menu_logo_h+'px'); 727 $('.dsgn-body')[0].style.setProperty('--header-height', header_h+'px'); 728 729 setTimeout(function() { 730 $('body').removeClass('pace-disable'); 731 },500); 732 if(typeof $.cookie('gallery-item') != 'undefined' && b.VIEW == '') { 733 moveGallery($.cookie('gallery-item')); 734 } 735 $.modalOFF(); 736 if(!property.ONE) { 737 moveScroll(0); 738 } else { 739 // onepage index movescroll 740 if(b.PAGE=='index' && b.MODE == 'publish' && !menuClickMove) { 741 var bUrl = new getLocation(window.location.href), 742 moveId = (bUrl.pathname).replace('/',''); 743 if(moveId != 'index') moveLinkPage(moveId); 744 } 745 } 746 747 $.each($('.element'), function(k,v) { 748 var checkNotSupported = false, 749 not_supported_mode = '', 750 check_video_version = true, 751 bg_vid_gfyposter = (typeof $(this).find('.bgvid source.display').attr('src') != 'undefined') ? $(this).find('.bgvid source.display').attr('src') : '', 752 vid_regex = /gfycat\.com/gi; 753 754 if($(this).attr('data-type') == 'video' && typeof $(this).attr('data-playtype') == 'undefined' && (vid_regex.test(bg_vid_gfyposter))) { 755 check_video_version = false; 756 checkNotSupported = true; 757 not_supported_mode = $(this).attr('data-type'), 758 el_seq = $(this).attr('data-id'); 759 760 if(checkNotSupported) { 761 var upgrade_check = (!check_video_version) ? false : true; 762 $.notSupported.set(property.SID, el_seq, not_supported_mode, upgrade_check); 763 } 764 } 765 }); 766 767 }); 768 769 // naverLogCallback(function() { 770 // if("naver_log" in b.SETTINGS) { 771 // if (!wcs_add) var wcs_add={}; 772 // wcs_add["wa"] = b.SETTINGS.naver_log; 773 // if (!_nasa) var _nasa={}; 774 // wcs_do(_nasa); 775 // } 776 // }); 777 778 if(typeof pageMoveCallback == 'function') pageMoveCallback(); 779 formTranslate(LANG); 780 781 $('.dsgn-body').addClass('mode-render'); 782 783 var is_templates = (typeof property.SID != 'undefined') ? checkTemplateSite(property.SID) : false; 784 785 //ê°¤ë¬ë¦¬ ë¸ëìì ì¹´í ê³ ë¦¬ê° ë¹ììµëë¤ ë¬¸êµ¬ê° ì문 í í릿ìì íê¸ë¡ ëì¤ë ì´ìë¡ ìë ì½ë ì¶ê°, 문ì ì ìì or ìì¹ë³ê²½ 786 if(is_templates && property.SID.indexOf('_en') > -1) LANG = 'en'; 787 788 if(property.VALIDPLAN || is_templates) { 789 $('body,.dsgn-body').removeClass('with-creatorlink'); 790 } else { 791 $('body,.dsgn-body').addClass('with-creatorlink'); 792 } 793 // $('button.navbar-toggle').addClass('hide'); 794 // (b.WRAP) ? $('.dsgn-body').addClass('tiny') : $('.dsgn-body').removeClass('tiny'); 795 796 var $tag = $('header'); 797 798 // ì¤ë³µë .header.el-menu ëí¼ê° ì´ë¯¸ ì¡´ì¬íëì§ íì¸ 799 var $parent = $tag.parent(); 800 if ($parent.is('.header.el-menu')) { 801 // ì´ë¯¸ header를 ê°ì¸ê³ ìëë° ë .header.el-menuê° ê°ì¸ê³ ìë¤ë©´, ì¸ë¶ .header.el-menu ì ê±° 802 if ($parent.parent().is('.header.el-menu')) { 803 $parent.unwrap(); 804 } 805 } else { 806 // ê°ì¸ë divê° ìì ê²½ì°ë§ ìë¡ ê°ì 807 var _ready = (!$.isEmptyObject(property.SETTINGS.modoo || {})) ? '_ready' : ''; 808 var _elmenu = $('<div>', { 809 'class': 'header el-menu ' + _ready, 810 'data-el': 'el-menu', 811 'data-id': 'menu', 812 'data-name': 'menu' 813 }); 814 $tag.wrap(_elmenu); 815 } 816 817 if($tag.is('.cl-nav')) $('.dsgn-body').before($('.header.el-menu')); 818 819 changeBrokenImages($tag); 820 821 $tag.removeClass('tpl-menu'); 822 if(b.ONE){ 823 if(b.VIEW) $tag.find('#site-home').attr('href',URI).removeClass('mini-home'); 824 else $tag.find('#site-home').attr('href','javascript:;').addClass('mini-home'); 825 } else $tag.find('#site-home').attr('href',URI).removeClass('mini-home'); 826 827 828 var isHeaderOldVer = !$.clnav.check(); 829 var isSidebar = $tag.hasClass('sidebar'); 830 var isSiteLock = b.SITELOCK; 831 if(isHeaderOldVer) { 832 if(isSidebar) { 833 $('.dsgn-body').addClass('sidebar'); 834 $('.header.el-menu').addClass('sidebar'); 835 } else if(b.HEADER) {
836 $('header.navbar').addClass('transparent'); 837 } 838 839 header_fixed = $('header.navbar').height(); 840 if($('header.navbar').css('background-color')=='rgba(0, 0, 0, 0)' 841 && $('header.navbar').css('background-image')=='none' 842 ) { 843 $('header.navbar').css('background-color',$('dsgn-body').css('background-color')); 844 } 845 } 846 847 848 if(isSidebar) { 849 if($tag.hasClass('hide') && $('.dsgn-body').hasClass('sidebar')) 850 $('.dsgn-body').removeClass('sidebar'); 851 852 // console.log(isSiteLock); 853 if(isSiteLock == 'true') { 854 $('.dsgn-body').addClass('site_lock'); 855 } else { 856 $('.dsgn-body').removeClass('site_lock'); 857 } 858 } 859 860 // footer 861 $('.footer-' + b.SID).addClass('el-footer').addClass('element').attr('data-type','footer'); 862 863 $(window).on('scroll',function() { 864 if($('.dsgn-body').hasClass('mobile-nav-active')) return false; 865 866 if($(this).scrollTop() > 200) { 867 $('#goto-top').addClass('show'); 868 } else { 869 $('#goto-top').removeClass('show'); 870 } 871 872 if($('.dsgn-body').hasClass('sidebar')==false) { 873 fixedMenu(); 874 } 875 876 if($(this).scrollTop() == 0 && $('header').hasClass('navbar-fheader')) { 877 setTimeout(function() { $.fheader.position(); }, 200); 878 } 879 scrollspy(); 880 881 //parallax(); 882 883 }); 884 885 $(window).on('orientationchange',function(){ 886 if($('.blueimp-gallery-display').length) { 887 var $slide = $('.blueimp-gallery .slides .slide'), 888 play = $('.blueimp-gallery-playing').length, 889 idx = 0; 890 $.each($slide, function(i,v) { 891 var trans = $(this).attr('style'); 892 if(trans.indexOf('translate(0px, 0px)') > 0) { 893 idx = $(this).attr('data-index'); 894 } 895 }); 896 897 var gallery = $('.blueimp-gallery-display').attr('id'); 898 899 $('#' + gallery + ' .close').click(); 900 $.processON(); 901 setTimeout(function() { 902 $.processOFF() ; 903 $('.gallery-item[data-index="' + idx + '"] a[data-gallery="#' + gallery + '"]').click(); 904 $('.layout-grid').eq(idx).find('a[data-gallery="#' + gallery + '"]').click(); 905 if(play) $('#' + gallery + ' .play-pause').click(); 906 }, 1000); 907 } 908 }); 909 910 var currentWindowWidth = $(window).width(); 911 $(window).resize(function () { 912 $('.config-image-view').hide(); 913 if($('body').width() <= 768 && $('.dsgn-body').hasClass('sidebar')) { 914 if($('header.navbar').hasClass('sidebar')) { 915 cssSidebar('off'); 916 } 917 //$('.dsgn-body').removeClass('sidebar').addClass('removed-sidebar'); 918 } else if ($('body').width() > 768 /*&& $('.dsgn-body').hasClass('removed-sidebar')*/) { 919 if($('header.navbar').hasClass('sidebar')) { 920 cssSidebar('on'); 921 } 922 //$('.dsgn-body').removeClass('removed-sidebar').addClass('sidebar'); 923 var top = ($('.creatorlink-header').length == 1) ? '55px' : '0px'; 924 $('.el_0').css('margin-top',top); 925 if($('.header-empty').length > 0) $('.header-empty').remove(); 926 } 927 928 if( $('.header-empty').length > 0 && $('.header-empty').height() != $('.el-menu').height() ) { 929 $('.header-empty').css('height',$('.el-menu').height()+'px'); 930 } 931 932 // menu ver3 : fheader 933 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 934 935 if($('body').width() <= 768) { 936 if($('#tpl-menu li.active.dropdown').length > 0) $('#tpl-menu li.active.dropdown').removeClass('active'); 937 } else { 938 if($('#tpl-menu li.active').closest('ul').hasClass('dropdown-menu')) $('#tpl-menu li.active').closest('li.dropdown').addClass('active'); 939 $('#tpl-menu ul.dropdown-menu').removeAttr('style'); 940 } 941 942 if($('.element[data-type="video"] .lyoption[data-lyh]').length > 0) setLayoutHeight(); 943 944 var vpmode_opt = $('.mobilepc_ch').attr('data-desktop-option'), 945 vpmode = vpmode_opt ? vpmode_opt : b.SETTINGS.viewportMode, 946 vpModeOnoff = (property.SETTINGS.vpMode_onoff === true) ? true : false, 947 checkFnav = ($('.fnav').length > 0 && vpmode=='mobile_web') ? true : false, 948 WebType = $.mpcWeb.mpcCheckWebType(); 949 950 if($('.fnav').length > 0) { 951 if($('body').width() <= 480) { 952 if($('#cl-music-player-icon').length > 0) $('#goto-top,#cl-music-player-icon').addClass('movedOne'); 953 } 954 } 955 956 if(vpModeOnoff && WebType == 'MOBILE') { 957 $.mpcWeb.mpcMusicandGoTop(checkFnav,vpmode); 958 var device_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 959 if(typeof $.quickmenu['quickmenu'] != 'undefined' && $.quickmenu['quickmenu']['img_type'][device_type.toLowerCase()]!='bottom_default') { 960 var mpc_height = $('.mobilepc_ch').innerHeight(), 961 add_height = ($('#cl-music-player-icon').length > 0) ? 45 : 30; 962 $(`.quick-menu-${b.sid}.quickmenu`).css('bottom', mpc_height + add_height); 963 } 964 } 965 966 fixedMenu(); 967 scrollspy(); 968 $('.element[data-type="video"], .element[data-type="others"]').each(function() { 969 resizeVideoIframe($(this)); 970 }); 971 972 //premium gallery setFixedscroll 973 if($('.element[data-feature*=fixedscroll]').length > 0) gjs01SetFixedscroll($('.element[data-feature*=fixedscroll]').eq(0)); 974 975 if($('.fr-view').length) { 976 setForumWrap(); 977 } 978 979 if($('.blueimp-gallery-display').length) { 980 if (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement) { 981 return; 982 } 983 984 var $slide = $('.blueimp-gallery .slides .slide'), 985 play = $('.blueimp-gallery-playing').length, 986 idx = 0; 987 $.each($slide, function(i,v) { 988 var trans = $(this).attr('style'); 989 if(trans.indexOf('translate(0px, 0px)') > 0) { 990 idx = $(this).attr('data-index'); 991 } 992 }); 993 994 var gallery = $('.blueimp-gallery-display').attr('id'); 995 996 $('#' + gallery + ' .close').click(); 997 $.processON(); 998 setTimeout(function() { 999 $.processOFF() ; 1000 $('.gallery-item[data-index="' + idx + '"] a[data-gallery="#' + gallery + '"]').click(); 1001 $('.layout-grid').eq(idx).find('a[data-gallery="#' + gallery + '"]').click(); 1002 if(play) $('#' + gallery + ' .play-pause').click(); 1003 }, 1000); 1004 } 1005 sitePopupResize(); 1006 1007 if($('.element[data-type="contact"][data-type2="franchise map"]').length > 0) { 1008 let newWidth = $(window).width(); 1009 if (currentWindowWidth !== newWidth) { 1010 $('.element[data-type="contact"][data-type2="franchise map"]').each(function(idx, v){ 1011 var el = $(v); 1012 fmapMobilePaging(el); 1013 }); 1014 } 1015 1016 currentWindowWidth = newWidth; 1017 } 1018 1019 // if(typeof b.SETTINGS.qm_onoff != 'undefined' && b.SETTINGS.qm_onoff==true) { 1020 // var device_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 1021 // alert('resize') 1022 // $.quickmenu.setHTML($.quickmenu['quickmenu'], device_type); 1023 // } 1024 1025 var header_h = $('header').outerHeight(); 1026 $('.dsgn-body')[0].style.setProperty('--header-height', header_h+'px'); 1027
1028 var checkFixTypeMenu = (typeof $('header.navbar-fheader').attr('data-fixtype') != 'undefined' && $('header.navbar-fheader').attr('data-fixtype')) ? true : false; 1029 if(b.VALIDPLAN && checkFixTypeMenu) { 1030 if(window.innerWidth < 769) { 1031 $('header.navbar[data-fixtype]').find('.navbar-brand').css('line-height',''); 1032 return false; 1033 } 1034 setTimeout(function(){ 1035 setFixedMenuCss(false); 1036 },80); 1037 } 1038 if($('.element[data-aos]').length > 0) scheduleBlockAOSRefresh(); 1039 }); 1040 this.liveUpdate(b.SMENU); 1041 1042 var checkToggleShow = (!b.MENUCHECK.main && window.innerWidth > 768) ? false : true, 1043 loc_pathname = window.location.pathname, 1044 is_render = (loc_pathname.match(/^\/render/g)) ? true : false, 1045 is_templates = (typeof b.SID != 'undefined') ? checkTemplateSite(b.SID) : false; 1046 // if(is_render && !is_templates) { 1047 // if(window.parent && window.parent != this && $('#previewmain', window.parent.document).length > 0) { 1048 // if($('#previewmain', window.parent.document).find('.preview-hand .active').is('#desktop, #tablet') && !b.MENUCHECK.main) checkToggleShow = false; 1049 // } 1050 // } 1051 // if(checkToggleShow) $('button.navbar-toggle').css('visibility','visible'); 1052 1053 //cross-origin ì¤ë¥ìì 1054 if (is_render && !is_templates) { 1055 try { 1056 if (window.parent && window.parent !== window && $('#previewmain', window.parent.document).length > 0) { 1057 if ($('#previewmain', window.parent.document).find('.preview-hand .active').is('#desktop, #tablet') && !b.MENUCHECK.main) { 1058 checkToggleShow = false; 1059 } 1060 } 1061 } catch (e) { 1062 console.warn('parent document ì ê·¼ ë¶ê°(cross-origin)', e); 1063 } 1064 } 1065 1066 if (checkToggleShow) { 1067 $('button.navbar-toggle').css('visibility', 'visible'); 1068 } 1069 1070 1071 if(b.PAGE == 'psearch') $.psearch.view(); 1072 1073 $('[data-imglink="true"][attr-link]').live('click',function(){ 1074 if($(this).is('[attr-link=""]')) return false; 1075 1076 var imgtarget = $(this).attr('data-target'), 1077 imgshlink = $(this).attr('data-shlink'), 1078 imgblank = $(this).attr('data-blank'); 1079 1080 if(imgblank == '_blank') { 1081 var openNewWindow = window.open('about:blank'); 1082 openNewWindow.location.href=imgshlink; 1083 } else { 1084 location.href=imgshlink; 1085 } 1086 }); 1087 1088 $('.menu-inner').on('scroll', function() { 1089 $(this).next('.fh-line').show(); 1090 if($(this).scrollTop()==0) $(this).next('.fh-line').hide(); 1091 }); 1092 1093 $("#mobile-nav #tpl-menu").on('scroll', function() { 1094 $(this).next('.fh-line').show(); 1095 if($(this).scrollTop()==0) $(this).next('.fh-line').hide(); 1096 }); 1097 1098 $('.sitePopupTodayHide, .sitePopupClose').live({ 1099 click: function() { 1100 if($(this).hasClass('sitePopupTodayHide')) $(this).find('input').click(); 1101 var selectedPopup = $(this).closest('.modal-popup').attr('id'); 1102 $('#' + selectedPopup).find('.popup-close').click(); 1103 } 1104 }); 1105 1106 $('.popup-close').live({ 1107 click: function() { 1108 var selectedPopup = $(this).closest('.modal-popup').attr('id'), 1109 idx = $(this).closest('.modal-popup').attr('data-idx'), 1110 ptime = $(this).closest('.modal-popup').attr('data-time'), 1111 isTodayHide = $(this).closest('.modal-popup').find('.sitePopupTodayHide input').prop('checked'), 1112 date = new Date(); 1113 1114 var ptime_val = { 1115 'always' : 0, 1116 'onlyone' : 365 * 24 * 60 * 60 * 1000, 1117 'week' : 7 * 24 * 60 * 60 * 1000, 1118 'day' : 24 * 60 * 60 * 1000, 1119 '12hour' : 12 * 60 * 60 * 1000, 1120 '6hour' : 6 * 60 * 60 * 1000, 1121 '2hour' : 2 * 60 * 60 * 1000, 1122 '1hour' : 60 * 60 * 1000, 1123 '30min' : 30 * 60 * 1000, 1124 '10min' : 10 * 60 * 1000 1125 }; 1126 1127 if(isTodayHide) { 1128 date.setTime(date.getTime() + ptime_val['day']); 1129 } else { 1130 date.setTime(date.getTime() + ptime_val[ptime]); 1131 } 1132 $('#' + selectedPopup).fadeOut(); 1133 if(isTodayHide || (typeof ptime !='undefined' && ptime != 'always' && ptime != '')) { $.cookie(selectedPopup, true, { path: '/', expires: date}); } 1134 else { $.removeCookie(selectedPopup, { path: '/' }); } 1135 } 1136 }); 1137 1138 var decodeMoveScrollUrl = function(value) { 1139 if(typeof value == 'undefined' || !value) return ''; 1140 1141 var url = String(value); 1142 1143 try { 1144 var decoded = decodeURIComponent(url); 1145 if(decoded !== url) return decoded; 1146 } catch(e) {} 1147 1148 try { 1149 var escaped = escape(url); 1150 if(escaped.indexOf('%u') === -1) return decodeURIComponent(escaped); 1151 } catch(e) {} 1152 1153 return url; 1154 }; 1155 1156 function moveScroll(interval, loc) { 1157 if(typeof $.cookie('forum_content_view') != 'undefined') { 1158 if(window.location.href.indexOf('/forum/view/') == -1) $.removeCookie('forum_content_view', { path: '/', expires: 12 * 60 * 60 * 1000 }); 1159 return false;
1160 } 1161 var this_url = (typeof loc == 'undefined') ? document.URL : loc; 1162 var url = decodeMoveScrollUrl(this_url); 1163 link = url.split('#').pop(); 1164 1165 if($.inArray(link,b.MENULINK) > -1 && b.ONE && !b.VIEW) { 1166 moveLinkPage(link,interval); 1167 $.removeCookie('gallery', { path: '/' }); 1168 $.removeCookie('gallery-item', { path : '/' }); 1169 } else if (url.match(/\@/g)) { 1170 link = url.split('\@').pop(); 1171 var bookmark_link = url.substr(url.lastIndexOf('/')+1); 1172 if(link) moveLinkPage(bookmark_link,800,true); 1173 } else { 1174 $(window).scrollTop(0); 1175 setTimeout(function() { 1176 if(location.hash) { 1177 var hashArr = location.hash.split('#'); 1178 var hash = hashArr[1]; 1179 var hashseq = hashArr[2]; 1180 if(hash && $('.element[data-name="' + hash + '"]').length) { 1181 var header_check = $("header").attr("data-fh-type"); 1182 if (header_check != "sidebar") { var header_height = $("header").outerHeight(true); } 1183 else {var header_height = 0;} 1184 // $(window).scrollTop($('.element[data-name="' + hash + '"]').offset().top - header_height); 1185 1186 if($('.tpl-forum-list-cont[data-id="' + hashseq + '"]').length == 0) { 1187 var offset_top = $('.element[data-name="' + hash + '"]').find('.list-item').offset().top; 1188 var win = $(window); 1189 var winHeight = win.height(); 1190 win.scrollTop(offset_top - (winHeight / 2) + (header_height / 2)); 1191 } else { 1192 var offset_top = $('.tpl-forum-list-cont[data-id="' + hashseq + '"]').closest('.list-item').offset().top - header_height; 1193 var screen_half = ($(window).height() - header_height) / 2; 1194 // $(window).scrollTop(offset_top) 1195 $(window).scrollTop(offset_top - screen_half) 1196 } 1197 1198 // console.log($('.tpl-forum-list-cont[data-id="72334"]').length); 1199 } 1200 } 1201 }); 1202 } 1203 } 1204 1205 var moveBookmark = function(page, bookmark, interval, target) { 1206 var page_arr = (typeof page == 'undefined') ? new Array() : page.split('\,'); 1207 var view = (page_arr.length > 1) ? page_arr[1] : ''; 1208 1209 interval = (typeof interval == 'undefined') ? 1200 : interval; 1210 target = (typeof target == 'undefined') ? '' : target; 1211 1212 if( (view != '' && view == b.VIEW && !target) || (view == '' && !b.VIEW && page_arr[0] == b.PAGE && !target) ) { 1213 moveLinkPage(page_arr[0]+bookmark,interval,true); 1214 } else { 1215 var linkUrl = ''; 1216 if(b.ONE) { 1217 linkUrl = (view.length>0) ? '/index/view/' + view : '/index'; 1218 linkUrl = (!b.PUBLISH) ? '/render' + linkUrl + bookmark : linkUrl + bookmark; 1219 } else { 1220 var url_str = (view.length>0) ? page_arr[0] + '/view/' + view : page; 1221 linkUrl = (URI=='/') ? '/' + url_str + bookmark : URI + '/' + url_str + bookmark; 1222 } 1223 1224 if(target) { 1225 var openLinkPage = window.open('about:blank'); 1226 openLinkPage.location.href=linkUrl; 1227 } else { 1228 var url = new getLocation(linkUrl); 1229 golink(_this,url); 1230 // location.replace(linkUrl); 1231 } 1232 1233 } 1234 } 1235 1236 var moveLinkPage = function(link, interval, isblock) { 1237 link = decodeURIComponent(link); 1238 if(typeof interval == 'undefined') interval = 1200; 1239 if(typeof isblock == 'undefined') isblock = ''; 1240 1241 var isBookmark = false; 1242 var bookmark_arr = new Array(); 1243 if(link.match(/\@/g)) { 1244 isBookmark = true; 1245 bookmark_arr = link.split('\@'); 1246 1247 var check_link = true; 1248 var is_visible_menu = false; 1249 $.each(b.SMENU, function (idx, obj) { 1250 if(is_o_page == obj.name.replace(/ /g,'-')) { 1251 if(!obj.link) check_link = false; 1252 if(obj.display == 'on') is_visible_menu = false; 1253 } 1254 if(obj.children) { 1255 $.each(obj.children, function (i, v){ 1256 if(is_o_page == v.name.replace(/ /g,'-')) { 1257 if(!v.link) check_link = false; 1258 if(v.display == 'on') is_visible_menu = false; 1259 } 1260 }); 1261 } 1262 }); 1263 1264 var is_here = ($('.element[data-bookmark="' + bookmark_arr[1] + '"]').length > 0 ) ? true : false; 1265 var is_page = (b.PAGE.toLowerCase() == bookmark_arr[0].toLowerCase() || b.VIEW && b.VIEW == bookmark_arr[0]) ? true : false;
1266 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]; 1267 // var is_visible_menu = ($.inArray(is_o_page,b.MENULINK)>-1) ? true : false; 1268 // 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; 1269 var is_link = (check_link && is_visible_menu && is_o_page != 'INTRO') ? true : false; 1270 var is_visible = (check_link && is_visible_menu && is_o_page != 'INTRO') ? true : false; 1271 1272 if( ( !is_visible_menu && is_o_page!='index' ) || 1273 ( /*!is_page &&*/ ( is_link || is_visible ) ) || 1274 ( is_page && !is_here ) 1275 ) { 1276 if(is_visible_menu == false) ; 1277 else return false; 1278 } 1279 link = 'element[data-bookmark="' + bookmark_arr[1] + '"]'; 1280 1281 } else { 1282 link = (isblock == '') ? 'link-to-' + link : link; 1283 } 1284 1285 var moveTarget = $(`.${link}`); 1286 if(moveTarget.length == 0) return; 1287 1288 if($.clnav.check()) { 1289 goToElement(`.${link}`); 1290 } else { 1291 // oldver 1292 var header_fixed = ($('.dsgn-body').width() < 769) ? $('.el-menu .navbar-header').height() - 1 : $('#tpl-menu').height(); 1293 if ($('header').hasClass('navbar-fheader')) header_fixed = $('header.navbar').outerHeight() - 1; 1294 1295 var offset = ($('.dsgn-body').hasClass('sidebar')) ? 0 : -header_fixed; 1296 if ($('header.navbar').hasClass('disableOffset') && !$('.' + link).hasClass('el_0')) offset = 0; 1297 offset = (window.innerWidth > 768) ? offset : -header_fixed; 1298 1299 var sTop = moveTarget.offset().top + offset; 1300 if(moveTarget.is('[data-aos]') && !moveTarget.hasClass('aos-animate')) { 1301 const tr = moveTarget.css('transform'); 1302 let moveY = 0; 1303 if (tr && tr !== "none") { 1304 const vals = tr.match(/-?\d+\.?\d*/g); 1305 moveY = parseFloat(vals[13] || vals[5] || 0); // ì´ë¯¸ ìì/ìì í¬í¨ë¨ 1306 1307 sTop -= moveY; 1308 } 1309 } 1310 sTop = (isAosBlock && moveTarget.hasClass('el_0') == false && $('.menu-logo-top').length > 0 && $('.menu-logo-top').css('display')=='block') ? sTop + $('.menu-logo-top').outerHeight() : sTop; 1311 1312 var duration = (typeof $('#tpl-menu').attr('data-duration') != 'undefined') ? parseInt($('#tpl-menu').attr('data-duration')) : ((isBookmark) ? 500 : 1000); 1313 if(clCheckBrowser('safari') && clCheckBrowser('mobile') || moveTarget.hasClass('el_0')) duration = 0; 1314 $('html, body').stop(true, false).animate({ 1315 scrollTop: sTop 1316 }, duration, 'easeInOutQuart', function() { 1317 if(isAosBlock) { 1318 $.each($('.element'), function() { 1319 var aos = $(this).attr('data-aos-ch'); 1320 $(this).attr('data-aos',aos); 1321 $(this).removeAttr('data-aos-ch'); 1322 }); 1323 } 1324 }); 1325 1326 var menuStr = (!isBookmark) ? link.replace('link-to-','') : bookmark_arr[0]; 1327 setTimeout(function() { 1328 $('header #tpl-menu li a[href=#' + menuStr + ']').closest('li').addClass('active').siblings().removeClass('active'); 1329 if($('#mobile-nav #tpl-menu li').length) $('#mobile-nav #tpl-menu li a[href=#' + menuStr + ']').closest('li').addClass('active').siblings().removeClass('active'); 1330 },1100); 1331 } 1332 } 1333 1334 var getParent = function(parent,id,page) { 1335 if(id) { 1336 parent = (parent == 'forum') ? parent : 'project'; 1337 $.ajax({ 1338 url:'/template/get/parent/' + parent + '/id/' + id + '/sid/' + _this.b.SID + '/page/' + encodeURIComponent(page) + _this.b.param, 1339 type:'get', 1340 async:false, 1341 cache: false, 1342 dataType:'json', 1343 success:function(data) { 1344 property.PRODINFO = (data.prod_onoff == "on") ? data.PRODINFO : ''; 1345 _this.b.PARENT = data.PARENT; 1346 _this.b.COUNT = data.COUNT; 1347 } 1348 }); 1349 } else { 1350 property.PRODINFO = ""; 1351 _this.b.PARENT = {}; 1352 _this.b.COUNT = 0; 1353 } 1354 } 1355 1356 var showPageCallback = function(func,callback) { 1357 func(b.MCSS, b.MSTYLE, b.MTAG, true); 1358 if(typeof callback=='function') { 1359 callback(); 1360 } 1361 } 1362 1363 var showPage = function (css, style, tag, prop) { 1364 if($('.fmcss').length > 0) $('.fmcss').remove(); 1365 $.each(style.children,function(k,v) { 1366 if(k!='.dsgn-body') { 1367 delete style.children[k]; 1368 } 1369 }); 1370 elFooter(); 1371 1372 var isSidebar = $('.el-menu > header').hasClass('sidebar'); 1373 var isHeaderOldVer = !$.clnav.check(); 1374 if(isHeaderOldVer) { 1375 if(b.HEADER && b.PARENT.mode == 'shopping') b.HEADER = false;
1376 if(b.HEADER && !isSidebar) $('header.navbar').addClass('transparent'); 1377 1378 header_fixed = $('header.navbar').height(); 1379 if($('header.navbar').css('background-color')=='rgba(0, 0, 0, 0)' 1380 && $('header.navbar').css('background-image')=='none' 1381 ) { 1382 $('header.navbar').css('background-color',$('dsgn-body').css('background-color')); 1383 } 1384 } 1385 1386 if(b.SETTINGS.sitePermit === 3) { 1387 var checkSiteLock = isSitePasswordLock(); 1388 } 1389 1390 var is_lock_block = 'active'; 1391 isMenuLock(function() { 1392 if(b.ISLOCK == 'true' && is_lock_block == '' || b.ISLOCK != 'true') elPush(prop); 1393 else { 1394 $('.el-footer').css('visibility', 'visible'); 1395 $.processOFF(); 1396 } 1397 }); 1398 1399 // menu active 1400 /* 190710 - menu or sub-menu ì¼ë¶ ê°ìë 첫ë²ì§¸ ë©ë´ì active error ì겨ì 주ì ì²ë¦¬. */ 1401 // if(b.PARENT.page) { 1402 // $('#tpl-menu li').find('a:contains("' + b.PARENT.page + '")').parent().addClass('active'); 1403 // } else { 1404 // if(b.ONE) { 1405 // if(b.SMENU[0].display == 'off') $('#tpl-menu li').first().addClass('active'); 1406 // } else if(b.PAGE) { 1407 // $('#tpl-menu li').find('a:contains("' + b.PAGE + '")').parent().addClass('active'); 1408 // } 1409 // }; 1410 1411 RENDER.setLoginout(b.LOGINOUT, b.SID, b.PUBLISH, b.PROFILEIMG); 1412 $('body,html').animate({scrollTop: 0}, 300,'easeInOutQuart'); 1413 } 1414 1415 var loadPush = function(data) { 1416 // console.log(' page draw 02:: loadPush'); 1417 window._blockMasonryResizeTargets = []; 1418 1419 // premium block 1420 $('body,html').removeClass('aos-height aos-overflowX'); 1421 $('body').removeClass('overflow-hidden'); 1422 $('body').removeAttr('data-gjs'); 1423 1424 var deferred = $.Deferred(); 1425 var pageID = b.PAGE.split(','), 1426 chgBG = false, 1427 tmpTag = '', 1428 currentPAGE = b.PAGE, 1429 default_t_css = '', default_m_css = ''; 1430 1431 var is_templates = checkTemplateSite(b.SID); 1432 1433 var checkGalleryView = (b.VIEW && b.PAGE.match(/^forum,/g) === null) ? true : false, 1434 checkShoppingView = (b.VIEW && b.PARENT.mode == 'shopping') ? true : false, 1435 page_pos = 0, 1436 site_settings = (typeof b.SETTINGS != 'undefined' && b.SETTINGS) ? b.SETTINGS : {}; 1437 1438 if($('body').hasClass('openPopupBanner') && b.MENULINK[0] != currentPAGE) { 1439 $.siteBanner.init(false,true); 1440 } 1441 if(typeof $.clnav.s != 'undefined') $.clnav.init(); 1442 1443 $('#el-empty').empty(); 1444 $('.gallery-popup, .psearch-block').remove(); 1445 b.COUNT = data.length; 1446 1447 var check_modoo = $('.dsgn-body').hasClass('modoo') ? true : false, 1448 fl_data = {}; 1449 1450 if(check_modoo) { 1451 fl_data = draw_floating(); 1452 } 1453 1454 function drawData(idx, val) { 1455 // console.log(`drawData(${idx}, ${val})`); 1456 page_pos += 1; 1457 var tag = htmlspecialchars_decode(val.eltag,'ENT_QUOTES'); 1458 var settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 1459 var block_lang = (typeof settings.blocklang != 'undefined' && settings.blocklang) ? settings.blocklang : LANG; 1460 var checkGalleryListSample = false; 1461 var checkGalleryListEmpty = true; 1462 var fontload = []; 1463 1464 if(val.type == 'project' && val.eltag.charAt(0) == '\<') tag = val.eltag; 1465 1466 if(typeof val.fonts != 'undefined') { 1467 $.each(val.fonts, function(i,v) { 1468 if(b.ELFONTS.indexOf(i) < 0 && v) { 1469 b.ELFONTS.push(i); 1470 $('#loadfonts').append(v); 1471 } 1472 }); 1473 } 1474 if(typeof val.webfonts != 'undefined' && val.webfonts) { 1475 $.each(val.webfonts, function(i2,v2) { 1476 if(b.ELFONTS.indexOf(i2) < 0 && v2) { 1477 b.ELFONTS.push(i2); 1478 WebFont.load({ google : { families : [ v2 ], display:'swap' }}); 1479 } 1480 }) 1481 } 1482 1483 if($.inArray(val.type, ['gallery','shopping']) > -1) { 1484 if($('#el-empty').length === 0) $('body').append('<div id="el-empty" class="opacity: 0;"></div>'); 1485 $('#el-empty').append($(tag)); 1486 $('#el-empty').find('[data-loop="true"]').html(''); 1487 1488 var nodes = $(tag).find('[data-loop="true"]').children('.grid'), 1489 p = $('#el-empty').children(), 1490 g = p.clone().removeClass().addClass('galleryPL'+val.seq).addClass('gallery-popup'), 1491 i = [], 1492 view = $(tag).find('[data-loop="true"]').data('view'), 1493 g_number = $(tag).find("[data-loop='true']").data('gallery-no'), 1494 total = 0; 1495 1496 var checkLoadmoreInLoop = ($(tag).find('[data-loop="true"] .loadmore-wrap').length) ? true : false;
1497 var glm = $(tag).find('.loadmore-wrap'); 1498 1499 $('#el-empty').after(g); 1500 $(g).after('<div class="gallery-empty"></div>'); 1501 1502 galleryEL[val.seq] = { 1503 'seq' : val.seq, 1504 'elname' : val.elname, 1505 'eltag' : tag, 1506 'folder' : val.folder, 1507 'mode' : val.mode, 1508 'elsettings' : val.elsettings, 1509 'feature' : val.feature, 1510 'type' : val.type, 1511 'type2' : val.type2, 1512 'searches' : val.searches 1513 }; 1514 1515 if(typeof view == 'undefined') view = 10; 1516 var cookie_page = 1, 1517 cookie_view = view, 1518 cookie_gallery_category = '', 1519 is_gc_cookie = (typeof $.cookie('gallery-category-'+val.seq) != 'undefined' && $.cookie('gallery-category-'+val.seq).length > 0) ? true : false; 1520 var cookie_gallery_orderby = 'recent'; 1521 1522 var category_onoff = (typeof settings.category_display != 'undefined' && settings.category_display) ? settings.category_display : 'OFF'; 1523 var gallery_sort = (typeof settings.gallery_sort != 'undefined' && settings.gallery_sort) ? settings.gallery_sort : 'default'; 1524 if(val.mode != 'shopping' && gallery_sort == 'product') gallery_sort = 'default'; 1525 // var adultonly_onoff = (typeof settings.adult_only != 'undefined' && settings.adult_only) ? settings.adult_only : 'OFF'; 1526 1527 if(typeof $.cookie('loadmore-' + val.seq) != 'undefined' && $.cookie('loadmore-' + val.seq).length > 0) { 1528 cookie_page = $.cookie('loadmore-'+val.seq); 1529 cookie_gallery_category = (typeof $.cookie('gallery-category-'+val.seq) != 'undefined') ? $.cookie('gallery-category-'+val.seq) : ''; 1530 cookie_gallery_orderby = (typeof $.cookie('gallery-orderby-' + val.seq) != 'undefined') ? $.cookie('gallery-orderby-' + val.seq) : ''; 1531 cookie_view = cookie_page * view; 1532 } else { 1533 var checkCateHomeHide = (category_onoff == 'ON' && 1534 typeof settings.category != 'undefined' && settings.category && 1535 typeof settings.category_home_hide != 'undefined' && settings.category_home_hide) ? true : false; 1536 if(checkCateHomeHide) { 1537 var gc = settings.category.replace(/\|/g,'').split(','); 1538 cookie_gallery_category = gc[0]; 1539 is_gc_cookie = true; 1540 1541 $.cookie('gallery-catehome-' + val.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 1542 } 1543 } 1544 1545 if(val.seq == 'all_products') { 1546 // cookie_page = (typeof $.cookie('gallery-page-all_products') !== 'undefined' && $.cookie('gallery-page-all_products') != '')? $.cookie('gallery-page-all_products') : 1; 1547 cookie_gallery_category = getAllProductsSortVal(settings); 1548 // cookie_view = cookie_page * view; 1549 } else { 1550 if(!property.VIEW) $.removeCookie('gallery-page-all_products', { path: '/' }); 1551 } 1552 1553 $.cookie('gallery-page-' + val.seq, cookie_page, { path : '/', expires: 12 * 60 * 60 * 1000 }); 1554 $.cookie('gallery-category-' + val.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 1555 $.cookie('gallery-orderby-' + val.seq, cookie_gallery_orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 1556 $.removeCookie('loadmore-' + val.seq, { path : '/' }); 1557 1558 var checkGallerySVG = ($(tag).find('.gimg-svg-wrap').length > 0) ? true : false, 1559 checkGFrameTitleOFF = (val.mode == 'gallery' && (typeof settings.gframe_title_visible != 'undefined' && settings.gframe_title_visible == 'OFF')) ? true : false; 1560 1561 var checkUseComment = checkUseCommentFunc(val.mode, val.eltag); 1562 var checkUseLike = checkUseLikeFunc(val.mode, val.eltag); 1563 1564 var uri = getSearchURL(); 1565 if (isObjectEmpty(uri) && _this.b.LUX && val.mode == 'shopping') { 1566 uri = val.searches.uri; 1567 } 1568 // if(uri.category_no == '') { 1569 // uri.category_no = (typeof settings.lux_category_no != 'undefined') ? settings.lux_category_no : ''; 1570 // } 1571 1572 var res; 1573 1574 $.ajax({ 1575 url: '/template/gallery/list/pid/' + val.seq + '/sid/' + b.SID + '/spage/' + currentPAGE + '/view/' + cookie_view + param, 1576 data: { g_mode: val.mode, visible: true, sfl: 'category', stx: cookie_gallery_category, uri : uri, only : val.only_category, orderby: cookie_gallery_orderby}, 1577 dataType: 'json', 1578 type: 'POST', 1579 async: false, 1580 cache: false, 1581 success: function (data) { 1582 var check_only_cate = (typeof data.only_category != 'undefined' && data.only_category === true) ? true : false;
1583 if(check_only_cate) { 1584 localStorage.setItem('searches',JSON.stringify(new Array(val.searches.uri[0]))); 1585 } 1586 1587 res = data; 1588 $.each(data.list, function (idx, v) { 1589 i.push(v); 1590 }); 1591 total = (typeof data.total.list_total == 'undefined') ? data.total : data.total.list_total; 1592 cookie_view = ( cookie_view > total ) ? total : cookie_view; 1593 // cookie_view = (cookie_view < total) ? cookie_view : total; 1594 1595 if( total > 0 ) checkGalleryListEmpty = false; 1596 if( i.length>0 || (i.length==0 && is_gc_cookie) ) { 1597 var loop_count = nodes.length, item_index = 0; 1598 var elem = []; 1599 $.each(data.list,function(index,v) { 1600 loop_pos = index%loop_count; 1601 c = nodes[loop_pos]; 1602 var isTitle = (v.title.length > 0) ? true:false; 1603 1604 $(c).find('.non_text').removeClass('non_text'); 1605 if(val.mode != 'shopping') { 1606 if(v.title.length==0) $(c).find('.figure.title').removeClass('non_text').addClass('non_text'); 1607 if(v.caption.length==0) $(c).find('.figure.caption').removeClass('non_text').addClass('non_text'); 1608 } 1609 1610 v.title = (v.title.length>0) ? v.title : $.lang[block_lang]['editor.block.gallery.sample.title']; 1611 v.caption = (v.caption.length>0) ? v.caption : $.lang[block_lang]['editor.block.gallery.sample.caption']; 1612 1613 $(c).addClass('gallery-item').attr('data-index',index).attr('data-seq',v.seq); 1614 1615 var vgsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}, 1616 img_path = (typeof vgsettings['storage'] != 'undefined') ? vgsettings['storage'] : _this.b.RESOURCE + '/' + _this.b.SID + '/', 1617 img_original = (typeof vgsettings['storage'] != 'undefined') ? img_path + '1920/' : img_path; 1618 1619 var folder = (val.folder == 0) ? '' : val.folder + '/', 1620 src = getServeImage(v.image,val.folder,img_path), 1621 src_s0 = getServeImage(v.image,'0',img_path); 1622 if($(c).find('img').length > 0) $(c).find('img').attr('src',src); 1623 if(val.mode == 'shopping') { 1624 if($(c).find('img').length > 0) $(c).find('img').attr('alt',v.title); 1625 } else { 1626 alt_replace = v.alt.replace(/\s+|\n+/g, '-'); 1627 alt_replace.replace(/-+/g, '-') 1628 if($(c).find('img').length > 0) $(c).find('img').attr('alt',alt_replace); 1629 } 1630 ensureGalleryResponsiveImageClass($(c)); 1631 if($(c).find('.g-img').length > 0) $(c).find('.g-img').css('background-image', 'url('+src+')'); 1632 1633 if(checkGallerySVG) { 1634 var gimgSVG = $(c).find('.gimg-svg-wrap svg'); 1635 gimgSVG.find('pattern').attr('id','gimgSvg_'+val.elname+'_'+index); 1636 gimgSVG.find('image').attr('xlink:href', src); 1637 gimgSVG.find('polygon, path').attr('fill', 'url(#gimgSvg_'+val.elname+'_'+index+')'); 1638 } 1639 1640 var glink = (typeof vgsettings['glink'] != 'undefined' && vgsettings['glink']) ? vgsettings['glink'] : '', 1641 glink_target = (typeof vgsettings['glink_target'] != 'undefined' && vgsettings['glink_target']) ? vgsettings['glink_target'] : ''; 1642 1643 if(glink) { 1644 if(glink.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 1645 var bookmark_seq = glink.replace(/^\@/g,''); 1646 if(typeof _this.b.SETTINGS.blockBookmarkList == 'undefined' || typeof _this.b.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 1647 glink = ''; 1648 glink_target = ''; 1649 } 1650 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 1651 glink_target = ''; 1652 } else if($.inArray(glink.replace(/^\//g,'').replace(/ /g,'-'),_this.b.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 1653 } else { // link-type: link-out ==> a[attr-link] 1654 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 1655 } 1656 } 1657 1658 var entry = (property && property.CONTENTS && property.CONTENTS['el' + v.pid]) || (property && property.CONTENTS && property.CONTENTS[String(v.pid)]) || null; 1659 var elsettingsRaw = entry && entry.element ? entry.element.elsettings : null; 1660 var elsettingsObj = elsettingsRaw; 1661 1662 if (typeof elsettingsRaw === 'string') { 1663 try { elsettingsObj = JSON.parse(elsettingsRaw); } 1664 catch (e) { console.error('[ERR] elsettings JSON íì± ì¤í¨:', e, elsettingsRaw); elsettingsObj = {}; } 1665 } 1666 1667 var gallery_page_chmod = elsettingsObj && elsettingsObj.gallery_page_chmod || null; 1668 var umgrade = property && property.UMGRADE ? (property.UMGRADE.seq || property.UMGRADE.grade_id || null) : null; 1669 if (typeof gallery_page_chmod === 'string') { 1670 try { gallery_page_chmod = JSON.parse(gallery_page_chmod); } 1671 catch (e) { gallery_page_chmod = gallery_page_chmod ? gallery_page_chmod.split(',') : []; } 1672 } 1673 gallery_page_chmod = $.isArray(gallery_page_chmod) ? $.map(gallery_page_chmod, function(v) { return String(v); }) : []; 1674 umgrade = (umgrade !== null && typeof umgrade != 'undefined') ? String(umgrade) : null; 1675 1676 // console.log({ gallery_page_chmod, umgrade }); 1677 1678 $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 1679 $(c).removeClass('noneShoppingGrade').removeAttr('data-shopping-grade-msg'); 1680 if (isShoppingGradePriceHidden(v) && property['SITEUM'] >= 1) { 1681 $(c).addClass('gallery-item').addClass('nonePrice'); 1682 $(c).find('a').attr('href', '#'); 1683 } else { 1684 if(isShoppingGradeBlocked(v, val.seq == 'all_products' ? settings : elsettingsObj, property)) { //ì¼íë±ê¸ 1685 $(c).addClass('gallery-item').addClass('noneShoppingGrade');
1686 $(c).attr('data-shopping-grade-msg', getShoppingGradeBlockedMessage(v)); 1687 $(c).find('a').attr('href', '#'); 1688 } else { 1689 if(glink) { 1690 var glink_val = makeLinkUrl(glink, b.ONE, b.VIEW); 1691 $(c).find('a').attr('href',glink_val); 1692 1693 if(glink.match(/^\@/g)) { 1694 $(c).find('a').attr('attr-bookmark',glink.replace(/^\@/g,'')); 1695 } else if(glink.match(/^flink\@[0-9]/g) !== null) { 1696 $(c).find('a').attr('attr-flink',glink.replace(/^flink\@/g,'')); 1697 // IE ERROR_includes__H.20210603 1698 // } else if(_this.b.MENULIST.includes(glink.replace(/ /g,'-'))) { 1699 } else if($.inArray(glink.replace(/ /g,'-'),_this.b.MENULIST) > -1) { 1700 $(c).find('a').attr('data-user-link',glink_val); 1701 } else { 1702 $(c).find('a').attr('attr-link',glink); 1703 } 1704 } else { 1705 if (val.mode == 'gallery') { 1706 src_s0 = src_s0 + '?gpos='+v.pos; 1707 1708 $(c).find('a').attr('href', src_s0); 1709 $(c).find('a').attr('data-gallery', '#gframe-' + val.seq); 1710 } else { 1711 if(val.seq == 'all_products') { 1712 $(c).find('a').attr('href', v.product_url); 1713 } else { 1714 if(_this.b.LUX) $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/_product/' + v.seq); 1715 else $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/' + v.seq); 1716 1717 // $(c).find('a').attr('href', ((URI=='/') ? '' : URI) + '/' + b.PAGE + '/view/' + v.seq); 1718 } 1719 } 1720 } 1721 } 1722 } 1723 1724 if(glink_target == '_blank') $(c).find('a').attr('target','_blank'); 1725 else $(c).find('a').removeAttr('target'); 1726 1727 if(checkGFrameTitleOFF || !isTitle) $(c).find('a').attr('data-title', ''); 1728 else $(c).find('a').attr('data-title', v.title); 1729 1730 // if(adultonly_onoff == 'ON') $(c).addClass('adultonly'); 1731 1732 // caption 1733 var ftitle = $(c).find('h5.figure'), 1734 fcaption = $(c).find('p.figure').not('.comment'), 1735 fdatetime = $(c).find('.figure.datetime'), 1736 fhashtag = $(c).find('.figure.hashtag'), 1737 fbrand = $(c).find('.figure.brand'), 1738 fprice = $(c).find('.figure.price'), 1739 freview = $(c).find('.figure.review'), 1740 fcomment = $(c).find('.figure.comment'), 1741 flike = $(c).find('.figure.like'), 1742 fbasket = $(c).find('.figure.basket'); 1743 1744 $(c).find('figcaption').removeClass('hide'); 1745 if (v.title || v.caption) { 1746 var gallery_caption = v.caption; 1747 gallery_caption = gallery_caption.replace(/\n/g,'<br />'); 1748 1749 ftitle.html(v.title); 1750 fcaption.html(gallery_caption); 1751 if(fdatetime.length > 0) fdatetime.text(v.datetime); 1752 if(fhashtag.length > 0) fhashtag.text(v.hashtag); 1753 } 1754 1755 if(g_number) { 1756 var g_index = String(index + 1), 1757 g_num = g_index.padStart(g_number, '0'); 1758 $(c).find('.figure.number').text(g_num); 1759 } 1760 1761 if(fbrand.length > 0) { 1762 var fbrand_name = (typeof v.brand_name != 'undefined' && v.brand_name) ? v.brand_name : ''; 1763 fbrand.html(v.brand_name); 1764 } 1765 1766 if(val.mode == 'shopping' || val.seq == 'all_products') { 1767 fcomment.addClass('hide'); 1768 flike.addClass('hide'); 1769 v.price = typeof v.price != 'undefined' ? parseFloat(v.price) : 0; 1770 v.sale = typeof v.sale != 'undefined' ? parseFloat(v.sale) : 0; 1771 var productGradeOnOff = getShoppingGradeProductGradeOnOff(v); 1772 $(c).attr('data-editor-grade-price-enabled', productGradeOnOff).attr('data-config-grade-price-enabled', productGradeOnOff); 1773 var checkPriceHidden = isShoppingGradePriceHidden(v), 1774 base_gallery_price = (v.price && !checkPriceHidden) ? v.price : 0, 1775 base_gallery_sale_price = (typeof v.sale != 'undefined' && v.sale > 0 && v.sale > v.price && !checkPriceHidden) ? v.sale : 0, 1776 gallery_price = base_gallery_price, 1777 gallery_sale_price = base_gallery_sale_price, 1778 gallery_sale_per = (typeof v.sale_per != 'undefined' && v.sale_per && !checkPriceHidden) ? v.sale_per+'%' : '', 1779 grade_price_display = settings.grade_price_display == 'ON', 1780 grade_discount_grade = getShoppingGradePreviewDiscountGrade(data.grade), 1781 grade_discount_applied = false, 1782 grade_gallery_price = 0, 1783 product_soldout = 'íì ',
1784 product_no_sale = (typeof settings.sh_soldout == 'string') ? settings.sh_soldout : '구매ë¶ê°', 1785 product_status = ''; 1786 if ( 1787 !checkPriceHidden && 1788 isShoppingGradeProductGradePriceEnabled(v) 1789 ) { 1790 grade_gallery_price = calcShoppingGradeDisplayPrice(base_gallery_price, grade_discount_grade); 1791 grade_discount_applied = grade_gallery_price !== null; 1792 } 1793 if(v.status == 'off' && !checkPriceHidden) { 1794 product_status = '<span class="cl-sh-soldout">' + product_no_sale + '</span>'; 1795 } else if(v.quantity_on == 'on' && v.quantity < 1 && !checkPriceHidden) { 1796 product_status = '<span class="cl-sh-soldout">' + product_soldout + '</span>'; 1797 } 1798 1799 $(c).find('.cl-sh-soldout').remove(); 1800 if(product_status != '') $(c).attr('data-soldout',true); 1801 else $(c).removeAttr('data-soldout'); 1802 1803 $(c).find('.product-badge').remove(); 1804 product_status += drawBadgeList(v.use_badge, data.badge_settings); 1805 1806 $(c).find('.cl-sh-limit').remove(); 1807 if(v.status == 'lim') { 1808 if(v.sale_now == false) { 1809 var product_limit = '<p class="cl-sh-limit">ìí 구매 ê°ë¥ 기ê°ì´ ìëëë¤.</p>'; 1810 if(freview.length > 0) { 1811 freview.after(product_limit); 1812 } else { 1813 $(c).find('figcaption:not(.top) .figure:last-child').after(product_limit); 1814 } 1815 } 1816 } 1817 1818 if($(c).find('ul.figure.price').length > 0) { 1819 // var price_off = (v.sale_price > 0 && v.sale_price > v.price) ? 100 - Math.floor((v.price / v.sale_price) * 100) : 0, 1820 // off_str = (price_off > 0) ? price_off + '% ' : '' 1821 var off_str = (v.sale_rate > 0) ? v.sale_rate + '% ' : ''; 1822 if(!_this.b.LUX) off_str = gallery_sale_per; 1823 if(!off_str && gallery_sale_price > 0 && gallery_price > 0 && gallery_price < gallery_sale_price) { 1824 var price_off = Math.round(((gallery_sale_price - gallery_price) / gallery_sale_price) * 100); 1825 off_str = (price_off > 0) ? price_off + '% ' : ''; 1826 } 1827 //Ver2 1828 if(!checkPriceHidden) { 1829 var $priceWrap = $(c).find('ul.figure.price'), 1830 $priceVal = $priceWrap.find('.price-val'), 1831 $priceSale = $priceWrap.find('.price-sale'), 1832 $priceSalePer = $priceWrap.find('.price-sale-per'); 1833 $priceWrap.find('.sp-price, .grade-discount-price').remove(); 1834 if($priceSale.length > 0 && $priceSalePer.length == 0) { 1835 $priceSale.after('<li class="price-sale-per hide"></li>'); 1836 $priceSalePer = $priceWrap.find('.price-sale-per'); 1837 } 1838 $priceWrap.css({display:'', flexDirection:'', alignItems:''}); 1839 $priceVal.css({order:'', display:''}); 1840 $priceSale.css({order:'', display:'', marginRight:''}); 1841 $priceSalePer.css({order:'', display:'', marginLeft:'', marginTop:''}); 1842 $priceVal.html('₩' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 1843 $priceVal.removeClass('hide'); 1844 1845 if(gallery_sale_price > 0 && gallery_price < gallery_sale_price) { 1846 $priceSale.html('₩' + gallery_sale_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 1847 $priceSalePer.html(off_str); 1848 $priceSale.removeClass('hide'); 1849 $priceSalePer.removeClass('hide'); 1850 if(!grade_discount_applied && _this.b.LUX && (v.hashtag).indexOf('í¹ê°ì¸ì¼') > -1 && $(c).find('ul.figure.price .sp-price').length == 0) { 1851 $(c).find('ul.figure.price .price-sale').after('<li class="sp-price">í¹ê°ì¸ì¼</li>'); 1852 } 1853 } else { 1854 $priceSale.addClass('hide').html('');
1855 $priceSalePer.addClass('hide').html(''); 1856 1857 } 1858 1859 if(grade_price_display && grade_discount_applied) { 1860 $priceWrap.append('<li class="grade-discount-price"><span class="grade-discount-price-value">₩' + grade_gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + '</span><span class="grade-discount-price-label">ëì í ì¸ê°</span></li>'); 1861 } 1862 1863 $(c).find('ul.figure.price .price-unit-pricing').remove(); 1864 if(v.product_unit_str) { 1865 $(c).find('ul.figure.price').append(`<li class="price-unit-pricing">${v.product_unit_str}</li>`); // ë¨ìë¹ ê°ê²© 1866 } 1867 } else { 1868 $(c).find('ul.figure.price .price-val').html('₩0'); 1869 $(c).find('ul.figure.price .price-val').addClass('hide'); 1870 } 1871 if(val.seq == 'all_products' && checkPriceHidden) $(c).find('ul.figure.price').html(''); 1872 if(product_status) $(c).find('ul.figure.price').append('<li>'+product_status+'</li>'); 1873 1874 var badge_size = getBadgeSize(data.badge_settings); 1875 $(c).find('.cl-sh-soldout').removeClass('badge-small badge-medium badge-large'); 1876 $(c).find('.cl-sh-limit').removeClass('badge-small badge-medium badge-large'); 1877 if(badge_size) { 1878 $(c).find('.cl-sh-soldout').addClass(badge_size); 1879 $(c).find('.cl-sh-limit').addClass(badge_size); 1880 } 1881 } else { 1882 //Ver1 1883 if(fprice.length == 0) fprice = fcaption; 1884 1885 if(checkPriceHidden) fprice.html(''); 1886 else fprice.html('<span class="figure-krw">₩</span>' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + product_status); 1887 } 1888 1889 if($(c).find('ul.figure.review').length > 0) { 1890 var gallery_review = (v.review_onoff && v.review_cnt) ? v.review_cnt : 0; 1891 if(gallery_review > 0) { 1892 $(c).find('ul.figure.review, ul.figure.review li').removeClass('hide'); 1893 $(c).find('ul.figure.review .figure-review-cnt').html(gallery_review); 1894 $(c).find('ul.figure.review .figure-review-score').html(v.review_score); 1895 } else { 1896 $(c).find('ul.figure.review, ul.figure.review li').addClass('hide'); 1897 $(c).find('ul.figure.review .figure-review-cnt, ul.figure.review .figure-review-score').html(''); 1898 } 1899 } 1900 1901 if(fbasket.length > 0) { 1902 var checkOldBlock = ($(c).find('.figure.basket[data-oldver="true"]').length > 0) ? true : false, 1903 checkOldverBasket = (typeof settings.field_oldver != 'undefined' && settings.field_oldver && settings.field_oldver.indexOf('basket') > -1) ? true : false, 1904 checkDisabledBasket = (typeof settings.field_disable != 'undefined' && settings.field_disable && settings.field_disable.indexOf('basket') > -1) ? true : false; 1905 if(v.basket_off || v.shopping_grade_hidden == 'ON') fbasket.addClass('cannotby hide'); 1906 else if(val.seq == 'all_products') fbasket.removeClass('hide'); 1907 else if(checkDisabledBasket || (!checkDisabledBasket && checkOldBlock && !checkOldverBasket)) fbasket.addClass('hide'); 1908 else if(property.VALIDTYPE != 'SM') fbasket.addClass('hide'); 1909 else fbasket.removeClass('hide'); 1910 } 1911 1912 } else { 1913 fbrand.addClass('hide'); 1914 fprice.addClass('hide'); 1915 freview.addClass('hide'); 1916 fbasket.addClass('hide'); 1917 1918 if ( checkUseComment 1919 && settings.comment_display == 'ON' 1920 && !(settings.field_disable !== undefined && settings.field_disable.indexOf('comment') > -1) 1921 && fcomment.length > 0 1922 && (typeof v.comment_cnt != 'undefined' && v.comment_cnt > 0) 1923 ) { 1924 fcomment.removeClass('hide'); 1925 fcomment.find('.figure-comment-cnt').html(v.comment_cnt); 1926 } else { 1927 fcomment.addClass('hide'); 1928 fcomment.find('.figure-comment-cnt').empty(); 1929 } 1930 1931 if ( checkUseLike
1932 && (settings.like_display !== undefined && settings.like_display != 'N') 1933 && !(settings.field_disable !== undefined && settings.field_disable.indexOf('like') > -1) 1934 && flike.length > 0 1935 ) { 1936 flike.removeClass('hide').find('.figure-like-cnt').html(0); 1937 if(v.like !== undefined) { 1938 flike.find('.figure-like-cnt').html(v.like.cnt); 1939 if (v.like.own && v.like.cnt > 0) flike.attr('data-like', v.seq).addClass('active'); 1940 } 1941 } else { 1942 flike.addClass('hide'); 1943 } 1944 } 1945 1946 if(val.mode == 'gallery') { 1947 if(index < cookie_view) { 1948 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 1949 } else { 1950 $(c).find('figure').remove(); 1951 $(g).find('[data-loop="true"]').append($(c)[0].outerHTML); 1952 } 1953 if (total == 2) { 1954 $(c).find('figure').remove(); 1955 $('.gallery-empty').append($(c)[0].outerHTML); 1956 } 1957 } else { 1958 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 1959 } 1960 1961 }); 1962 1963 } else { 1964 checkGalleryListSample = true; 1965 if(val.mode=='project' && b.TEMPLATE == false) { 1966 nodes.addClass('gallery-item'); 1967 nodes.find('a').attr('href', ((URI=='/') ? '' : URI) + '/' + b.PAGE + '/view/template').removeAttr('data-gallery').find('img').attr('data-index',0); 1968 } 1969 1970 if(b.TEMPLATE !== false) { 1971 if ( checkUseComment 1972 && settings.comment_display == 'ON' 1973 && !(settings.field_disable !== undefined && settings.field_disable.indexOf('comment') > -1) 1974 ) { 1975 nodes.find('.figure.comment').removeClass('hide'); 1976 } else { 1977 nodes.find('.figure.comment').addClass('hide'); 1978 } 1979 1980 if ( checkUseLike 1981 && (settings.like_display !== undefined && settings.like_display != 'N') 1982 && !(settings.field_disable !== undefined && settings.field_disable.indexOf('like') > -1) 1983 ) { 1984 nodes.find('.figure.like').removeClass('hide'); 1985 } else { 1986 nodes.find('.figure.like').addClass('hide'); 1987 } 1988 } 1989 1990 $(p).find('[data-loop="true"]').append(nodes); 1991 } 1992 if(checkLoadmoreInLoop) $(p).find('[data-loop="true"]').append(glm); 1993 1994 tag = $(p)[0].outerHTML; 1995 1996 if (val.mode == 'gallery' && total == 2) { 1997 $.each($('.gallery-empty').find('.gallery-item'), function(i,v) { 1998 $(g).find('[data-loop="true"]').append(v); 1999 }); 2000 } 2001 $('#el-empty').empty(); 2002 $('.gallery-empty').remove(); 2003 } 2004 }); 2005 } else { 2006 if(typeof pageID[1] != 'undefined' && idx==0 && pageID[1] != 'template' && b.COUNT==0) { 2007 d = document.createElement('div'); 2008 $(d).addClass('temp-element').html(tag); 2009 var pTitle = (b.PARENT.title) ? b.PARENT.title : $.lang[block_lang]['editor.block.gallery.sample.title']; 2010 pCaption = (b.PARENT.caption) ? b.PARENT.caption : $.lang[block_lang]['editor.block.gallery.sample.caption']; 2011 pCaption = pCaption.replace(/\n/g, '<br />'); 2012 2013 $(d).find('.data-date').text(b.PARENT.datetime); 2014 $(d).find('.data-category').text(b.PARENT.category); 2015 $(d).find('h5.figure').text(pTitle); 2016 $(d).find('p.figure').not('.comment').html(pCaption); 2017 2018 tag = $(d).html(); 2019 $(d).remove(); 2020 tmpTag = tag; 2021 } 2022 } 2023 2024 //add style 2025 var $style_tag = $('<style type="text/css"></style>'); 2026 $style_tag.attr('id','el_'+idx+'css'); 2027 if(typeof val.elcss != 'undefined') { 2028 $style_tag.html(htmlspecialchars_decode(val.elcss)); 2029 $('.header').before($style_tag); 2030 } 2031 2032 //change carousel id 2033 var $tag = $(tag); 2034 $tag.find('video').attr({'playsinline': '','webkit-playsinline': ''}); 2035 $.each($tag.find('[data-edit="true"]'), function(i,v) { 2036 var source = $(this).outerHTML(); 2037 source = source.replace(/< /g,'<').replace(/ >/g,'>').replace(/data-attr-bookmark/g,'attr-bookmark'); 2038 $(this).replaceWith(source); 2039 }); 2040 2041 if(typeof total == 'undefined') total = 0; 2042 2043 msny = (val.feature=='masonry') ? true : false;
2044 var blocklang = ''; 2045 2046 if(val.type == 'video') { 2047 if($tag.find('.video-gallery-url').length > 0) val.mode = 'zoom'; 2048 else val.mode = 'thumb'; 2049 resizeVideoIframe($tag); 2050 } 2051 2052 if (val.type == 'video' || val.type == 'others') { 2053 var checkFullscreen = (typeof settings.fullscreen != 'undefined' && settings.fullscreen == 'ON') ? true : false; 2054 if(checkFullscreen) { 2055 $tag.find('.video-wrap').addClass('video-fullscreen'); 2056 } 2057 } 2058 2059 slideEffectClassAdd($tag); 2060 2061 let $last_el = ($('.fnav').length) ? $('.fnav') : $('.el-footer'); 2062 $last_el.before(`<template class="elementAddPoint" data-id="${val.seq}"></template>`); 2063 2064 //íì´ì§ ì´ë 2065 $tag.addClass('el_' + idx) 2066 .attr('data-id', val.seq) 2067 .attr('data-el','el_' + idx) 2068 .attr('data-pos', idx+1) 2069 .attr('data-name', val.elname) 2070 .attr('data-msny', msny) 2071 .attr('data-type', val.type) 2072 .attr('data-type2', val.type2) 2073 .attr('data-feature', val.feature) 2074 .attr('data-mode', val.mode) 2075 .attr('data-width', val.folder) 2076 .attr('data-overlap',val.overlap) 2077 .attr('data-case', settings?.blockorg || val.name); 2078 if(val.type == 'form' && typeof val.form_done != 'undefined') $tag.attr('data-form-done', val.form_done); 2079 2080 setBlockAOS($tag,{block:settings, skipRefresh:true}); 2081 2082 if($tag.hasClass('modoo')) { 2083 if(window.innerWidth <= 768 && $tag.find('._spotHomesite').hasClass('is_bottom')) { 2084 $tag.find('._spotHomesite').removeClass('is_bottom'); 2085 } 2086 2087 if($tag.find('._sectionSpot').hasClass('type_full') && window.innerWidth > 768) { 2088 var A = $tag.find('._areaLogin').length ? true : false, 2089 C = window.innerHeight; 2090 2091 if (A) { 2092 C -= 50; 2093 } 2094 2095 $tag.find("._sectionSpot .swiper-wrapper").css("height", C); 2096 $tag.find("._sectionSpot .swiper-slide").css("height", C); 2097 $tag.find("._sectionSpot ._imgCover").css("height", C).each(function(F, G) { 2098 var D = $(G); 2099 var E = D.attr("data-lazy-background-img-src"); 2100 D.css({ 2101 backgroundImage: "url(" + E + ")", 2102 filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + E + '}", sizingMethod="scale")' 2103 }); 2104 }); 2105 if (!$tag.find("._spotHomesite").hasClass("is_bottom")) { 2106 $tag.find("._spotHomesite").css("height", C); 2107 } 2108 } 2109 2110 if($tag.find('.page-container-mobile').length > 0) { 2111 if(window.innerWidth <= 768) $tag.find('[data-role="page-container"]._content').hide(); 2112 else $tag.find('[data-role="page-container"]._content').show(); 2113 } 2114 2115 if($tag.parents('body').is('.clnav-overlap-OFF') && $tag.is('[data-el="el_0"]')) { 2116 $tag.find('._spotHomesite .site_info').append(fl_data.el_html); 2117 } 2118 } 2119 2120 var checkNotSupported = (!is_templates) ? $.notSupported.check(val.type,val.type2,val.feature) : false; 2121 if(checkNotSupported) { 2122 $tag.html('').attr('class',`hide element ${val.elname} el_${idx}`); 2123 $last_el = ($('.fnav').length) ? $('.fnav').before($tag) : $('.el-footer').before($tag); 2124 $(`#el_${idx}css, #js_${idx}`).remove(); 2125 return Promise.resolve(); 2126 } 2127 2128 if(typeof settings.blocklang != 'undefined') { 2129 blocklang = settings.blocklang; 2130 $tag.attr('data-blocklang',blocklang); 2131 } 2132 2133 if(val.type == 'contact') { 2134 setContactSubmitSecurity($tag, val.seq, settings, block_lang); 2135 } 2136 2137 if (val.type == 'sync') { 2138 showHideSyncField($tag, settings); 2139 2140 var sync_list_total = (typeof val.sync !='undefined' && typeof val.sync.list != 'undefined' && (val.sync.list).length > 0) ? (val.sync.list).length : 0; 2141 if($tag.find('.slick-page-label').length > 0) { 2142 var page_label = sync_list_total; 2143 if(val.type2 == 'imgpitem' && sync_list_total == 0) page_label = $tag.find('.slick .item').length; 2144 2145 $tag.find('.slick-page-label .slick-page-now').text(1); 2146 $tag.find('.slick-page-label .slick-page-total').text(page_label); 2147 } 2148 2149 if($tag.find('.sync-option').length > 0) { 2150 var sync_css = CSSJSON.toJSON(htmlspecialchars_decode(val.elcss)), 2151 sync_s = style.get(sync_css,val.elname); 2152 if(typeof sync_s.__display_count != 'undefined') { 2153 var display_cnt = Number(sync_s.__display_count) || 10; 2154 $tag.find(`.sync-item:gt(${display_cnt-1}
2154)`).addClass('hide'); 2155 2156 if($tag.find('.sync-page-label').length > 0) { 2157 var sync_p_cnt = $tag.find('.sync-row .sync-item').length, 2158 sync_p_total = Math.ceil(sync_p_cnt / display_cnt); 2159 $tag.find('.sync-page .sync-page-now').text(1); 2160 $tag.find('.sync-page .sync-page-total').text(sync_p_total); 2161 2162 if(sync_p_total == 1) $tag.find('.sync-page-wrap').hide(); 2163 else $tag.find('.sync-page-wrap').show(); 2164 } 2165 } 2166 } 2167 2168 var sync_loadmore_lang = block_lang; 2169 if(typeof settings.loadmore_lang != 'undefined' && settings.loadmore_lang && $.inArray(settings.loadmore_lang.toLowerCase(), ['ko','en']) > -1) sync_loadmore_lang = settings.loadmore_lang.toLowerCase(); 2170 $tag.find('.sync-page-more-str').text($.lang[sync_loadmore_lang]['config.loadmore']); 2171 } 2172 2173 if(checkGalleryView) { 2174 if(val.page == 'fixedblock_'+b.PARENT.pid) $tag.addClass('el-fixedblock'); 2175 else $tag.removeClass('el-fixedblock'); 2176 2177 $tag.attr('data-pos', page_pos); 2178 // if(b.LUX && (val.orgpos == '1' || $tag.is('.lux-product-block'))) $tag.attr('data-ppos', (val.pos*1) + 1); 2179 // else $tag.attr('data-ppos', val.pos); 2180 $tag.attr('data-ppos', val.pos); 2181 $tag.attr('data-posby', val.elnew); 2182 } 2183 2184 if(val.type == 'contact' && val.page == 'fixedcontact') { 2185 $.fixedContact.init($tag); 2186 } 2187 2188 if(val.type=='forum' || val.type=='latest') $tag.addClass('preloading'); 2189 2190 var checkPageblock = (val.seq === 'all_products' || (val.orgpos == 1 && val.orgpage)) ? true : false; 2191 if(b.ONE && checkPageblock) { 2192 $tag.attr('data-pagename', val.orgpage); 2193 $tag.addClass('link-to-'+JSON.parse('"'+val.orgpage.replace(/ /g,'-')+'"')); 2194 } 2195 2196 $tag.addClass('element'); 2197 $last_el = ($('.fnav').length) ? $('.fnav') : $('.el-footer'); 2198 2199 if($tag.hasClass('error_404')==false) { 2200 if($tag.hasClass('el-footer')==false) { 2201 if($tag.hasClass('cl-s-product-detail')==false) { 2202 if(typeof setBlockAOS == 'function') setBlockAOS($tag,{block:settings, skipRefresh:true}); 2203 else aosAddblock(site_settings,settings,$tag); 2204 } 2205 } 2206 } 2207 2208 var data_aos_attr = ''; 2209 if($tag.is('[data-aos]')) { 2210 data_aos_attr = $tag.attr('data-aos'); 2211 $tag.removeAttr('data-aos'); 2212 $tag.addClass('aos-init') 2213 } 2214 2215 $last_el.before($tag); 2216 setOldVerBlockView($tag,val); 2217 2218 if(data_aos_attr) { 2219 $tag.removeClass('aos-animate'); 2220 $tag.addClass('render-aos'); 2221 2222 $tag.attr('data-aos-dummy', data_aos_attr); 2223 } 2224 2225 if(val.type == 'calendar'){ 2226 var currentDate = new Date(), 2227 getYear = currentDate.getFullYear(), 2228 getMonth = String(currentDate.getMonth() + 1).padStart(2, "0"), 2229 yearMonth = getYear + '-' + getMonth; 2230 $.cl_calendar.init(val.sid, val.seq, yearMonth, val); 2231 } 2232 2233 if(val.type == 'sns' && typeof val.type2 != 'undefined' && val.type2 == 'feed') { 2234 $tag.find('.data-feed-load-more').attr('data-feed-el',val.elname); 2235 $tag.find('.data-feed-load-more').removeAttr('style'); 2236 $tag.find('.show-posts').removeClass('show-posts'); 2237 2238 if(val.mode == 'site') { 2239 if(!$.isEmptyObject(b.SOCIAL)) { 2240 var load_sns = {}; 2241 if(!$.isEmptyObject(b.SOCIAL.instagram) && typeof settings.sns_instagram != 'undefined' && settings.sns_instagram == 'ON') load_sns['instagram'] = b.SOCIAL.instagram; 2242 if(!$.isEmptyObject(b.SOCIAL.twitter) && typeof settings.sns_twitter != 'undefined' && settings.sns_twitter == 'ON') load_sns['twitter'] = b.SOCIAL.twitter; 2243 2244 if(!$.isEmptyObject(load_sns)) { 2245 loadingElement(val.elname,'loading posts...'); 2246 updateFeed(val.elname, load_sns, settings, function() { 2247 $('.'+val.elname+' .listprogress').remove(); 2248 }); 2249 } 2250 } 2251 } else { 2252 // SNS FEED:: before version 2253 if(typeof settings.sns != 'undefined' && settings.sns.twitter) { 2254 loadingElement(val.elname,'loading posts...'); 2255 updateFeed(val.elname,settings.sns); 2256 } 2257 } 2258 } 2259 2260 if(val.type == 'others' && typeof val.type2 != 'undefined' && val.type2 == 'countdown') { 2261 var el_dday = $tag.find('[data-dday="true"]'), 2262 cd_date = (el_dday.attr('data-countdown')) ? el_dday.attr('data-countdown') : new Date(), 2263 dateformat = { days : '%D', hours: '%H', minutes: '%M', seconds: '%S' }, 2264 dateendformat = { days : '00', hours: '00', minutes: '00', seconds: '00' }; 2265 2266 if( typeof settings.countdown != 'undefined' && settings.countdown ) { //set - block setting date 2267 cd_date = settings.countdown; 2268 } 2269 if( !el_dday.attr('data-countdown') && typeof countdown == 'object' ) { //set - example date 2270 cd_date.setTime(cd_date.getTime() + (35*24*60*60*1000)); 2271 } 2272 cd_date = moment(cd_date).format('YYYY/MM/DD HH:mm:ss'); 2273 2274 el_dday.countdown(cd_date, function(event) { 2275 $(this).find('.date-item[data-datetype]').each(function(i) { 2276 var dd_type = $(this).attr('data-datetype'), 2277 dd_format = $(this).attr('data-format'), 2278 dd_endformat = $(this).attr('data-finish'); 2279 2280 if(typeof dd_format == 'undefined' || !dd_format) dd_format = dateformat[dd_type]; 2281 if(typeof dd_endformat == 'undefined' || !dd_endformat) dd_endformat = dateendformat[dd_type]; 2282 2283 if(event.elapsed) $(this).text(dd_endformat); 2284 else $(this).text(event.strftime(dd_format)); 2285 }); 2286 }); 2287 2288 if($tag.find('[data-bg-video="true"]').length > 0) resizeVideoIframe($tag); 2289 } 2290 2291 if(typeof settings.bookmark != 'undefined' && settings.bookmark) { 2292 $tag.attr('data-bookmark',val.seq); 2293 } 2294 2295 if(val.type == 'gallery') { 2296 // gallery frame add 2297 if(val.mode == 'gallery' && total) tag = appendGalleryFrame($(tag), val.seq, val.type, val.elsettings); 2298
2299 (checkGalleryListEmpty) ? $tag.addClass('emptyGallery') : $tag.removeClass('emptyGallery'); 2300 2301 $tag.attr('data-category',category_onoff); 2302 $tag.attr('data-gallery-sort',gallery_sort); 2303 2304 if(category_onoff == 'ON'|| gallery_sort == 'product') { 2305 initGToolbar($tag, {id:val.seq, settings:settings}); 2306 } 2307 2308 var img_onoff = (typeof settings.img_original_display != 'undefined' && settings.img_original_display) ? settings.img_original_display : 'ON', 2309 title_onoff = (typeof settings.gframe_title_visible != 'undefined' && settings.gframe_title_visible == 'OFF') ? 'OFF' : 'ON'; 2310 like = (typeof settings.like_display != 'undefined' && settings.like_display) ? settings.like_display : 'N'; 2311 2312 $tag.find('[data-gallery]').attr({'data-img-original':img_onoff, 'data-gallery-title':title_onoff, 'data-gallery-like':like}); 2313 if(!title_onoff) $tag.find('[data-gallery]').attr('data-title',''); 2314 2315 if(isShoppingGradePriceHidden(val)) { 2316 $tag.find('.figure.price').html(''); 2317 } 2318 2319 showHideGalleryField($tag,settings); 2320 reloadBlockMasonry('init', $tag); 2321 2322 var $glmBtnWrap = $tag.find('.loadmore-wrap'), 2323 $glmBtn = $tag.find('.loadmore-wrap .gallery-loadmore'), 2324 checkLoadmore = (total > view && total > cookie_view && !checkGalleryListEmpty) ? true : false, 2325 glm_lang = LANG; 2326 2327 if(typeof settings.loadmore_lang != 'undefined' && settings.loadmore_lang && $.inArray(settings.loadmore_lang.toLowerCase(), ['ko','en']) > -1) glm_lang = settings.loadmore_lang.toLowerCase(); 2328 else if(typeof block_lang != 'undefined' && $.inArray(block_lang, ['ko','en']) > -1) glm_lang = block_lang; 2329 var glm_txt = $.lang[glm_lang]['config.loadmore']; 2330 2331 if($glmBtnWrap.length == 0) { 2332 // gallery loadmore btn - default (ver1) 2333 if(checkLoadmore) { 2334 var glm_class = (val.feature=='masonry') ? 'gallery-loadmore masonry-layout' : 'gallery-loadmore', 2335 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>'; 2336 2337 if($tag.find('.gallery-loadmore[data-id="'+val.seq+'"]').length > 0) $('.gallery-loadmore[data-id="'+val.seq+'"]').replaceWith(glm_btn); 2338 else $tag.append(glm_btn); 2339 } else $tag.find('.gallery-loadmore').remove(); 2340 2341 } else { 2342 // gallery loadmore btn - custom (ver2) 2343 if(checkLoadmore) { 2344 if(val.feature=='masonry') $glmBtn.addClass('masonry-layout'); 2345 else $glmBtn.removeClass('masonry-layout'); 2346 $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); 2347 $glmBtn.find('.label').text(glm_txt); 2348 $glmBtn.find('.display .view').text(cookie_view); 2349 $glmBtn.find('.display .total').text(total); 2350 $glmBtnWrap.removeClass('hide').fadeIn(); 2351 } else { 2352 $glmBtnWrap.fadeOut().addClass('hide'); 2353 $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'); 2354 $glmBtn.find('.label').text(glm_txt); 2355 $glmBtn.find('.display .view').text('0'); 2356 $glmBtn.find('.display .total').text('0'); 2357 } 2358 } 2359 2360 //ê°¤ë¬ë¦¬ë¸ë 모ë°ì¼ ê°ë¡ ê°¯ì ì¤ì ì í´ëì¤ì¶ê° 2361 var gal_css = CSSJSON.toJSON(htmlspecialchars_decode(val.elcss)), 2362 gal_s = style.get(gal_css,val.elname), 2363 gal_case = $tag.attr('data-case'), 2364 gal_id = $tag.attr('data-id'), 2365 gal_name = $tag.attr('data-name'); 2366 if(gal_s.__layout_m_on == 1 && gal_case != 'gallery61') { 2367 $tag.addClass('el-col-m'+gal_s.__layout_col_mc); 2368 } else if(gal_s.__layout_m_on == 1 && gal_case == 'gallery61') { 2369 $tag.addClass('el-col-m'+gal_s.__swiper_view_mc); 2370 setTimeout(function() { 2371 elGalleryJS[gal_id].gjs_load(document.querySelector('.'+gal_name)); 2372 }); 2373 } 2374 } 2375 2376 if(val.type == 'sync') { 2377 var sync_source = _this.syncUpdate($tag, val); 2378 $tag.html(sync_source); 2379 2380 if($tag.find('[data-sync-loop="true"]').length > 0) { 2381 if(val.type2 == 'tab') $tag.find('[data-sync-loop="true"] > li[data-list-no="1"]').attr('data-list-no',''); 2382 if(val.type2 == 'imgpitem' && sync_list_total > 0) $tag.find('[data-sync-loop="true"] > li:not([data-idx])').remove(); 2383 $tag.find('[data-sync-loop="true"] > li').eq(0).addClass('active').siblings().removeClass('active'); 2384 } 2385 } 2386 2387 // tab block ì°ì ìì check 2388 if(val.type == 'tabs') { 2389 var $tabs = $tag.find(".tab-box .tab:not(.hover)"), 2390 $initial_tab = ($tabs.filter('.checked').length > 0) ? $tabs.filter('.checked').first() : $tabs.filter('.active').first(); 2391 if($initial_tab.length == 0) $initial_tab = $tabs.eq(0); 2392 if($tabs.filter('.checked').length > 0) { 2393 $tabs.removeClass('active'); 2394 $initial_tab.addClass('active'); 2395 $tag.find('.tab-editor').removeClass('active'); 2396 $tag.find('.tab-editor.tabs' + $initial_tab.attr('data-order')).addClass('active'); 2397 } 2398 var el = $tag.attr('data-name'), 2399 len = $tabs.length, 2400 motion_style = $tag.attr("tab-motion-style"), 2401 tab_counted = $tag.attr("tab-count"), 2402 mobile_tab_count = $tag.attr("mobile-tab-count"), 2403 tab_count = ($(window).width() < 991) ? ((typeof mobile_tab_count != 'undefined' && mobile_tab_count) ? mobile_tab_count : ((tab_counted > 4) ? 4 : tab_counted)) : tab_counted, 2404 mobile_tab_line = $tag.attr("mobile-tab-line"), 2405 tab_case = $tag.attr("data-case"), 2406 motion = $tag.attr("tab-motion"), 2407 priority = Number($initial_tab.attr('data-order')) || 1, 2408 navigation_use = $tag.attr("navigation-use"); 2409 tabArrow(el); 2410 if(navigation_use == '1' || ($(window).width() < 991 && mobile_tab_line == '1' && len > Number(tab_count))) { 2411 if(motion_style == 1) { 2412 var motion = (((priority + 1) - Number(tab_count)) >= 0) ? priority - Number(tab_count) : 0; 2413 } else { 2414 var motion = Math.ceil(Number(priority) / Number(tab_count)) - 1; 2415 } 2416 $tag.attr('tab-motion', motion); 2417 tabMotion(el, motion, "", len, motion_style, tab_count, tab_case); 2418 } 2419 } 2420 2421 if(val.seq == 'all_products') { 2422 if (b.ONE) $tag.addClass('link-to-ì ì²´ìí'); 2423 setGToolbarAllProducts($tag, settings, val.total.list_total); 2424 } 2425 2426 if($tag.has('input.gjs').length) { 2427 var gjs_status = (typeof elGalleryJS[val.seq] != 'undefined') ? 'reload-block' : 'load-block'; 2428 setGalleryJS(gjs_status,$tag); 2429 } 2430 2431 if(val.type == 'forum') { 2432 var view = $tag.find('[data-loop="true"]').attr('data-view'); 2433 if(typeof view == 'undefined') view = 10; 2434 if(typeof $.cookie('forum_' + val.seq) != 'undefined' && $.cookie('forum_' + val.seq)) { 2435 $.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')); 2436 } else { 2437 $.forum.init(val.seq,b.PAGE,view); 2438 } 2439 2440 $.removeCookie('forum', { path : '/' }); 2441 $.removeCookie('forum_'+val.seq, { path : '/' }); 2442 $.removeCookie('forum_'+val.seq+'_sfl', { path : '/' }); 2443 $.removeCookie('forum_'+val.seq+'_stx', { path : '/' }); 2444 $.removeCookie('forum_'+val.seq+'_scate', { path : '/' }); 2445 2446 if(val.type2 == 'guestbook') { 2447 if(settings.input_updown == 'U') { 2448 $tag.find('.default_top').removeClass('flex-value-order2').addClass('flex-value-order1'); 2449 $tag.find('.default_bottom').removeClass('flex-value-order1').addClass('flex-value-order2'); 2450 } 2451 else { 2452 if (typeof settings.input_updown == 'undefined') {//ë¸ë ì¶ê° ë¹ì ì¸í ê° ìì ë 2453 $tag.find('.default_top').removeClass('flex-value-order2').addClass('flex-value-order1'); 2454 $tag.find('.default_bottom').removeClass('flex-value-order1').addClass('flex-value-order2'); 2455 } else { 2456 $tag.find('.default_top').removeClass('flex-value-order1').addClass('flex-value-order2'); 2457 $tag.find('.default_bottom').removeClass('flex-value-order2').addClass('flex-value-order1'); 2458 } 2459 } 2460 } 2461 } 2462 2463 if(b.LUX && typeof res != 'undefined') { 2464 shopHeaderDisplay($tag.find('.shop-filter-header'),res); 2465 } 2466 2467 if(val.type == 'latest') { 2468 var latest_data = (typeof settings.latest_data != 'undefined' && settings.latest_data) ? settings.latest_data : {}; 2469 $.latest.init(val.seq, latest_data); 2470 $tag.removeClass('preloading'); 2471 } 2472 2473 if(val.type == 'review') { 2474 galleryEL[val.seq] = { 2475 'seq' : val.seq, 2476 'elname' : val.elname, 2477 'eltag' : tag, 2478 'folder' : val.folder, 2479 'mode' : val.mode, 2480 'elsettings' : val.elsettings, 2481 'feature' : val.feature, 2482 'type' : val.type, 2483 'type2' : val.type2, 2484 'searches' : val.searches 2485 }; 2486 var gallery_data = (typeof settings.gallery_data != 'undefined' && settings.gallery_data) ? settings.gallery_data : {}; 2487 $.reviewContents.init(val.seq, gallery_data); 2488 } 2489 2490 if(b.VIEW) { 2491 var img_onoff = (typeof settings.img_original_display != 'undefined' && settings.img_original_display) ? settings.img_original_display : 'OFF'; 2492 $tag.find('img[data-attach="true"]').attr('data-img-original',img_onoff); 2493 2494 setGalleryReturnItemCookie(b.PARENT); 2495 var c_g_p = (typeof $.cookie('gallery-page-' + b.PARENT.pid) != 'undefined') ? $.cookie('gallery-page-' + b.PARENT.pid) : 1; 2496 $.cookie('gallery',b.PARENT.pid, { path: '/', expires: 12 * 60 * 60 * 1000 }); 2497 $.cookie('loadmore-' + b.PARENT.pid, c_g_p, { path: '/', expires: 12 * 60 * 60 * 1000 }); 2498 if(typeof $.cookie('gallery-page-all_products') !== 'undefined' && $.cookie('gallery-page-all_products')) { 2499 c_g_p = (typeof $.cookie('gallery-page-all_products') != 'undefined') ? $.cookie('gallery-page-all_products') : 1; 2500 $.cookie('gallery','all_products', { path: '/', expires: 12 * 60 * 60 * 1000 }); 2501 $.cookie('loadmore-all_products', c_g_p, { path: '/', expires: 12 * 60 * 60 * 1000 }); 2502 } 2503 } 2504 2505 $tag.find('[data-fixed-width]').each(function() { 2506 $(this).css('width',$(this).attr('data-fixed-width')+'px'); 2507 }); 2508 2509 2510 $tag.find('[data-map="true"]:not(iframe)').each(function() { 2511 var map_url = $(this).attr('data-url'); 2512 if(typeof map_url != 'undefined' && map_url) { 2513 var map_iframe = getMapURL(map_url,'html'); 2514 $(this).replaceWith(map_iframe); 2515 if(map_iframe.indexOf('google-map disabled') === -1) $(this).next('.map-undefined').remove(); 2516 } 2517 }); 2518 2519 if(val.type == 'contact' && val.type2 == 'franchise map') { 2520 $.each($tag.find('[data-fmap-loop="true"] .item .item-name'), function(i, v) { 2521 let itemName = $(v).html(); 2522 itemName = itemName.replace(/< /g, '<').replace(/ >/g, '>'); 2523 $(v).html(itemName); 2524 }); 2525 2526 var $mapItem = $tag.find('[data-fmap-loop="true"] > .item.selected'); 2527 drawMap($mapItem, $tag); 2528 fmapMobilePaging($tag); 2529 } else { 2530 if($tag.find('[data-map_kind="kakao"]').length && (typeof kakao == 'undefined' || typeof kakao.maps == 'undefined' ||
2530kakao.maps == null || property.VALIDPLAN == '')) { 2531 $tag.find('[data-map_kind="kakao"]').html('ì§ëì°ê²°í´ì ë¨. Javascriptí¤ íì¸'); 2532 $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>'); 2533 } else { 2534 $tag.find('[data-map_kind="kakao"]').each(function() { 2535 var container = this; 2536 var lat = $(this).data("lat"); 2537 var lng = $(this).data("lng"); 2538 var zoomInOut = $(this).data("zoominout"); 2539 var mapTitle = $(this).data("maptitle"); 2540 var mapContent = $(this).data("mapcontent"); 2541 var useTitle = $(this).data("usetitle"); 2542 var useContent = $(this).data("usecontent"); 2543 2544 if (typeof zoomInOut == 'undefined' || !zoomInOut) zoomInOut = false; 2545 if (typeof mapTitle == 'undefined' || !mapTitle) mapTitle = ''; 2546 if (typeof mapContent == 'undefined' || !mapContent) mapContent = ''; 2547 if (typeof useTitle == 'undefined' || !useTitle) useTitle = false; 2548 if (typeof useContent == 'undefined' || !useContent) useContent = false; 2549 2550 var options = { center: new kakao.maps.LatLng(lat, lng), level: 3 }; 2551 var c_map = new kakao.maps.Map(container, options); 2552 var marker = new kakao.maps.Marker({ position: new kakao.maps.LatLng(lat, lng), map: c_map }); 2553 2554 if(zoomInOut == true) { 2555 // var mapTypeControl = new kakao.maps.MapTypeControl(); 2556 // c_map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT); 2557 // var zoomControl = new kakao.maps.ZoomControl(); 2558 // c_map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT); 2559 var zoomControlHtml = ''; 2560 zoomControlHtml += '\ 2561 <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);">\ 2562 <div class="btn-zoom-control" data-inout="I" style="cursor: pointer; width: 30px; height: 30px;">\ 2563 <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>\ 2564 </div>\ 2565 <div class="slider-wrap-container" style="height: 130px;">\ 2566 <div class="slider-wrap small" style="text-align: center; height: 100%;">\ 2567 <div style="max-height: 100%;" class="zoom-control-slider"></div>\ 2568 </div>\ 2569 </div>\ 2570 <div class="btn-zoom-control" data-inout="O" style="cursor: pointer; width: 30px; height: 30px;">\ 2571 <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>\ 2572 </div>\ 2573 </div>\ 2574 '; 2575 var $zoomController = $(zoomControlHtml); 2576 $(container).append($zoomController); 2577 var zoom_slider = $zoomController.find('.zoom-control-slider').slider({ 2578 'orientation': 'vertical', 2579 'min' : 1, 2580 'max' : 14, 2581 'step' : 1, 2582 'value' : 3, 2583 'handle' : '<div>dfafasdfas</div>', 2584 // 'reversed' : true, 2585 'tooltip' : 'hide', 2586 }).on('slide', function(data) { 2587 c_map.setLevel(data.value); 2588 c_map.setCenter(marker.getPosition()); 2589 }).on('slideStop', function(data) { 2590 c_map.setLevel(data.value); 2591 c_map.setCenter(marker.getPosition()); 2592 }); 2593 2594 $zoomController.find('.btn-zoom-control').on('click', function() { 2595 if($(this).data('inout') == 'I') { 2596 c_map.setLevel(c_map.getLevel() - 1); 2597 zoom_slider.slider('setValue', c_map.getLevel()); 2598 } else if($(this).data('inout' == 'O')) { 2599 c_map.setLevel(c_map.getLevel() + 1); 2600 zoom_slider.slider('setValue', c_map.getLevel()); 2601 } 2602 }); 2603 2604 kakao.maps.event.addListener(c_map, 'zoom_changed', function() { 2605 zoom_slider.slider('setValue', c_map.getLevel()); 2606 }); 2607 } 2608 2609 if((useTitle == true || useContent == true) && (mapTitle || mapContent)) { 2610 var iwContent = ''; 2611 if(useTitle == true && mapTitle) { 2612 iwContent = '<div class="title">' + mapTitle + '</div>'; 2613 } 2614 if(useContent == true && mapContent) { 2615 iwContent += '<div class="content">' + mapContent + '</div>'; 2616 } 2617 // var infowindow = new kakao.maps.InfoWindow({ 2618 // position: marker.getPosition(), 2619 // content : iwContent 2620 // }); 2621 // infowindow.open(c_map, marker); 2622 if(iwContent) { 2623 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>
2623' + iwContent + '</div>'; 2624 var infoWindow = $(iwContent); 2625 $(container).append(infoWindow); 2626 // infoWindow.css('bottom', 'calc(-100% + ' + (infoWindow.outerHeight() + 36) + 'px)'); 2627 } 2628 } 2629 $(window).on("resize", function() { 2630 c_map.setCenter(marker.getPosition()); 2631 }); 2632 }); 2633 } 2634 2635 if($tag.find('[data-map_kind="naver"]').length && (typeof naver == 'undefined' || typeof naver.maps == 'undefined' || naver.maps == null || property.VALIDPLAN == '')) { 2636 $tag.find('[data-map_kind="naver"]').html('ì§ëì°ê²°í´ì ë¨. Client ID íì¸'); 2637 $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>'); 2638 } else { 2639 $tag.find('[data-map_kind="naver"]').each(function() { 2640 var container = this; 2641 var lat = $(this).data("lat"); 2642 var lng = $(this).data("lng"); 2643 var options = { center: new naver.maps.LatLng(lat, lng), zoom: 17}; 2644 var c_map = new naver.maps.Map(container, options); 2645 var marker = new naver.maps.Marker({ position: new naver.maps.LatLng(lat, lng), map: c_map}); 2646 var zoomInOut = $(this).data("zoominout"); 2647 var mapTitle = $(this).data("maptitle"); 2648 var mapContent = $(this).data("mapcontent"); 2649 var useTitle = $(this).data("usetitle"); 2650 var useContent = $(this).data("usecontent"); 2651 if(typeof zoomInOut == 'undefined' || !zoomInOut) zoomInOut = false; 2652 if(typeof mapTitle == 'undefined' || !mapTitle) mapTitle = ''; 2653 if(typeof mapContent == 'undefined' || !mapContent) mapContent = ''; 2654 if(typeof useTitle == 'undefined' || !useTitle) useTitle = false; 2655 if(typeof useContent == 'undefined' || !useContent) useContent = false; 2656 if(zoomInOut == true) { 2657 // options.zoomControl = true; 2658 var zoomControlHtml = ''; 2659 zoomControlHtml += '\ 2660 <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);">\ 2661 <div class="btn-zoom-control" data-inout="I" style="cursor: pointer; width: 30px; height: 30px;">\ 2662 <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>\ 2663 </div>\ 2664 <div class="slider-wrap-container" style="height: 130px;">\ 2665 <div class="slider-wrap small" style="text-align: center; height: 100%;">\ 2666 <div style="max-height: 100%;" class="zoom-control-slider"></div>\ 2667 </div>\ 2668 </div>\ 2669 <div class="btn-zoom-control" data-inout="O" style="cursor: pointer; width: 30px; height: 30px;">\ 2670 <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>\ 2671 </div>\ 2672 </div>\ 2673 '; 2674 var $zoomController = $(zoomControlHtml); 2675 $(container).append($zoomController); 2676 var zoom_slider = $zoomController.find('.zoom-control-slider').slider({ 2677 'orientation': 'vertical', 2678 'min' : 6, 2679 'max' : 21, 2680 'step' : 1, 2681 'value' : 17, 2682 'handle' : '<div>dfafasdfas</div>', 2683 'reversed' : true, 2684 'tooltip' : 'hide', 2685 }).on('slide', function(data) { 2686 c_map.setZoom(data.value); 2687 c_map.setCenter(marker.getPosition()); 2688 }).on('slideStop', function(data) { 2689 c_map.setZoom(data.value); 2690 c_map.setCenter(marker.getPosition()); 2691 }); 2692 $zoomController.find('.btn-zoom-control').on('click', function() { 2693 if($(this).data('inout') == 'I') { 2694 c_map.setZoom(c_map.getZoom() + 1); 2695 zoom_slider.slider('setValue', c_map.getZoom()); 2696 } else if($(this).data('inout' == 'O')) { 2697 c_map.setZoom(c_map.getZoom() - 1); 2698 zoom_slider.slider('setValue', c_map.getZoom()); 2699 } 2700 }); 2701 2702 naver.maps.Event.addListener(c_map, 'zoom_changed', function(zoom) { 2703 zoom_slider.slider('setValue', c_map.getZoom()); 2704 }); 2705 } 2706 2707 if((useTitle == true || useContent == true) && (mapTitle || mapContent)) { 2708 var iwContent = ''; 2709 if(useTitle == true && mapTitle) { 2710 iwContent = '<div class="title">' + mapTitle + '</div>'; 2711 } 2712 if(useContent == true && mapContent) { 2713 iwContent += '<div class="content">' + mapContent + '</div>'; 2714 } 2715 2716 if(iwContent) { 2717 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>
2717' + iwContent + '</div>'; 2718 var infoWindow = $(iwContent); 2719 $(container).append(infoWindow); 2720 // infoWindow.css('bottom', 'calc(-100% + ' + (infoWindow.outerHeight() + 36) + 'px)'); 2721 } 2722 // var infowindow = new naver.maps.InfoWindow({ 2723 // content : iwContent 2724 // }); 2725 // infowindow.open(c_map, marker); 2726 } 2727 $(window).on("resize", function() { 2728 c_map.setCenter(marker.getPosition()); 2729 }); 2730 }); 2731 } 2732 } 2733 2734 if(val.type == 'form' || (val.type == 'contact' && val.type2 == 'franchise bar')) { 2735 $.forms.init(val.seq); 2736 } 2737 2738 if(val.type == 'showcase') { 2739 if($tag.hasClass('carousel') && $tag.find('.item').length > 1 && $tag.find('.control-box .carousel-control').hasClass('hide')) { 2740 $tag.find('.control-box .carousel-control').removeClass('hide'); 2741 } 2742 } 2743 2744 //video block ::: gallery 2745 if(val.type == 'video') { 2746 if($tag.find('.video-gallery-url').length>0) { //ì¬ìë°©ì : íë보기 2747 $.each($tag.find('.item'),function(i,v){ 2748 if(val.mode=='zoom') appendGalleryFrame($(this).parents('.element'),val.seq,val.type); 2749 }); 2750 2751 // let lsw = document.querySelector('.element[data-id="' + val.seq + '"] .swiper'); 2752 // if(lsw && lsw.swiper) { 2753 // let slider_motion = $('.element[data-id="' + val.seq + '"]').attr('data-slider-motion'); 2754 2755 // $('#gframe-' + val.seq).on('opened', function(event, slide){ 2756 // console.log('gallery opend', slider_motion); 2757 // if(slider_motion != 'stop') { 2758 // lsw.swiper.autoplay.stop(); 2759 // } 2760 // }).on('closed', function (event){ 2761 // console.log('gallery closed'); 2762 // if(slider_motion != 'stop') { 2763 // lsw.swiper.autoplay.start(); 2764 // } 2765 // }); 2766 // } 2767 } 2768 2769 resizeVideoIframe($tag); 2770 } 2771 2772 //add script 2773 if(val.eljs){ 2774 var js_string = val.eljs; 2775 var $script_tag = $('<script type="text/javascript" id="js_' + idx + '"></script>'); 2776 $script_tag.html(js_string); 2777 $('.dsgn-body').append($script_tag); 2778 } 2779 2780 if($tag.find('.slick').length > 0) { 2781 if (val.type == 'sync' && typeof syncSlickFn == 'function') syncSlickFn('.' + val.elname); 2782 else if($tag.is('[data-clslick]') && typeof clSlickFn == 'function') clSlickFn('.' + val.elname); 2783 } 2784 2785 // log 2786 if(typeof settings['google_track'] != 'undefined') { 2787 $('.dsgn-body').append("<script type='text/javascript' src='//www.googleadservices.com/pagead/conversion_async.js'></script>"); 2788 } 2789 2790 //add style 2791 var jcss = CSSJSON.toJSON(val.elcss); 2792 2793 var element_mh = jcss?.children[`.${val.elname}`]?.attributes['min-height'] ?? ''; 2794 if (element_mh && /%$/.test(element_mh)) { 2795 const converted_mh = element_mh.replace('%', ''); 2796 $tag.css('min-height',`${converted_mh}vh`); 2797 } 2798 2799 var elpd = style.getPadding(jcss,val.elname); 2800 var pt = parseInt(elpd.top); 2801 var pb = parseInt(elpd.bottom); 2802 2803 if(pt>0||pb>0){ 2804 default_t_css = default_t_css + '\n .'+val.elname + '{'; 2805 if(Math.ceil(pt*0.8)>0) 2806 default_t_css = default_t_css + 'padding-top: '+Math.ceil(pt*0.8) + 'px!important;'; 2807 if(Math.ceil(pb*0.8)>0) 2808 default_t_css = default_t_css + 'padding-bottom: '+Math.ceil(pb*0.8) + 'px!important;'; 2809 default_t_css = default_t_css + '}'; 2810 2811 default_m_css = default_m_css + '\n .'+val.elname + '{'; 2812 if(Math.ceil(pt*0.5)>0) 2813 default_m_css = default_m_css + 'padding-top: '+Math.ceil(pt*0.5) + 'px!important;'; 2814 if(Math.ceil(pb*0.5)>0) 2815 default_m_css = default_m_css + 'padding-bottom: '+Math.ceil(pb*0.5) + 'px!important;'; 2816 default_m_css = default_m_css + '}'; 2817 } 2818 if(idx == data.length-1){ 2819 var css = '@media only screen and (max-width:767px) {' + default_t_css + '\n}\n'; 2820 css = css + '@media only screen and (max-width:480px) {' + default_m_css + '\n}'; 2821 2822 if($('#el-paddingcss').length == 0) $('.dsgn-body').find('#el_'+(data.length-1)+'css').after('<style id="el-paddingcss">'+css+'</style>'); 2823 else $('#el-paddingcss').append(css); 2824 } 2825 2826 if(val.type == 'product') { 2827 if(val.is_wishlist == true) { 2828 $('.product-detail-btn .btn-myfav .btn-myfav-icon').addClass('on'); 2829 } else { 2830 $('.product-detail-btn .btn-myfav .btn-myfav-icon').removeClass('on'); 2831 } 2832 } 2833 2834 if($.inArray(val.type, ['contents', 'text', 'image', 'video']) > -1) { 2835 let ecs = enableContentsSlider(val.seq, val.type, settings); 2836 if(typeof settings.list_type != 'undefined' && settings.list_type == 's' && ecs) { 2837 $.contentsSlider.ready(val.seq).then(() => {$.contentsSlider.init(val.seq, settings)}); 2838 } 2839 } 2840 2841 return new Promise(function(resolve) { setTimeout(resolve) }); 2842 } 2843 2844 if(check_modoo) { 2845 m_floating(fl_data); 2846 } 2847 var dataloop = async function(data) { 2848 var promises = data.map(async function(val, idx) { 2849 return await drawData(idx, val) 2850 }); 2851 return await Promise.all(promises); 2852 } 2853 2854 if(checkGalleryView) setViewPageStyle(); 2855 dataloop(data).then(function() { 2856 $('.el-footer').css('visibility', 'visible'); 2857 $.processOFF(); 2858 2859 document.querySelectorAll('.element video').forEach(function(video) { 2860 if(video.readyState > 0) video.classList.add('loaded'); 2861 video.addEventListener('loadeddata', function() { 2862 this.classList.add('loaded'); 2863 }); 2864 }); 2865 2866 $('.dsgn-body').fitVids(); 2867 $('.carousel').carousel({ 2868 pause: 'none' 2869 }); 2870 2871 $('[data-aos-dummy]').each(function() { 2872 $(this).attr('data-aos', $(this).attr('data-aos-dummy')).removeAttr('data-aos-dummy'); 2873 }); 2874 setTimeout(function() { 2875 $('.element[data-aos]').removeClass('render-aos').addClass('aos-animate'); 2876 AOS.init({ disableMutationObserver: true }); 2877 }); 2878 changeBrokenImages('.element'); 2879 2880 $('.element').each(function(i,v){ 2881 var $tag = $(v); 2882 var elFonts = $tag.css('font-family'); 2883 elFonts = elFonts + ",'Nanum Gothic'"; 2884 elFonts = elFonts.replace(/"/g, '\''); 2885 $tag.css('font-family', ($tag.css('font-family') + ",'Nanum Gothic'").replace(/"/g, '\'')); 2886 }); 2887 $('html').toggleClass('gtoolbar-sticky-ON', $('.cl-gtoolbar[data-sticky="ON"]').length > 0 ? true : false); 2888 2889 if(b.VIEW) { 2890 // prev next
2891 $('.data-page-prev').addClass('active'); 2892 $('.data-page-next').addClass('active'); 2893 2894 if(b.PARENT.prev === null) $('.data-page-prev').removeClass('active'); 2895 if(b.PARENT.next === null) $('.data-page-next').removeClass('active'); 2896 2897 if(b.PARENT.mode == 'shopping') { 2898 $('.data-page-prev, .data-page-next').removeClass('active'); 2899 if(b.PARENT.prev) $('.data-page-prev').addClass('active'); 2900 if(b.PARENT.next) $('.data-page-next').addClass('active'); 2901 2902 if(typeof property.PRODINFO === 'object') $.products.display_info(); 2903 if($('#review-onoff').val() == 'true') $.products.review(b.VIEW,b.PAGE); 2904 if($('#qna-onoff').val() == 'true') $.products.qna(b.VIEW,b.PAGE); 2905 } else { 2906 if($(`.page-comments[data-id="${b.VIEW}"]`).length == 0) _this.displayComment(); 2907 2908 // initViewPageToolbar().then(function(pageToolbar){ 2909 // setViewPageToolbar(); 2910 // }); 2911 initViewPageBottom(); 2912 } 2913 } 2914 2915 var isPage = false; 2916 $.each(b.MENULIST, function(i,k) { 2917 isPage = (k.toUpperCase() == b.PAGE.toUpperCase()) ? true : isPage; 2918 }); 2919 2920 // if(!b.ONE && !b.VIEW && !isPage) location.replace(URL); 2921 2922 // menu ver3 : fheader 2923 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 2924 2925 // shopping wrap remove 2926 if($('.shopping-wrap').length || $('.shopping-more-wrap').length) { 2927 $('.shopping-wrap').remove(); 2928 $('.shopping-more-wrap').remove(); 2929 } 2930 2931 // shopping wrap create 2932 if(!$('.dsgn-body').hasClass('mode-config') && $('.cl-s-product-detail').length > 0 && $('div[data-el*="el_"]').length > 1) { 2933 if(shopping_more == 'ON') { 2934 var prod_content = $('div[data-el*="el_"]').not('.cl-s-product-detail').addClass('hide'); 2935 $('.product.cl-s-product-detail').after('<div class="shopping-wrap open"></div>'); 2936 $('.shopping-wrap').html(prod_content); 2937 $('div[data-el*="el_"]').each(function(idx, v) { 2938 $(this).removeClass('hide'); 2939 if($('.shopping-wrap').height() > 800) return false; 2940 }); 2941 } 2942 } 2943 /*shopping more create*/ 2944 if($('.shopping-wrap').length && $('.shopping-wrap').height() >= 800 && $('.shopping-more').length == 0) { 2945 var more_txt = (LANG == 'ko') ? 'ìíì ë³´ ë보기' : 'MORE'; 2946 var colorSet = shopping_more_color, 2947 sm_font = (!colorSet) ? '' : colorSet.color, 2948 sm_bgColor = (!colorSet) ? '' : colorSet.background_color, 2949 sm_border = (!colorSet) ? '' : colorSet.border_color; 2950 var review_chk = ($('.cl-s-product-review').length > 0) ? true : false, 2951 qna_chk = ($('.cl-s-product-qna').length > 0) ? true : false; 2952 2953 $('.shopping-wrap').css('max-height','800px') 2954 .css('overflow','hidden') 2955 .after('<div class="shopping-more-wrap"><div class="shopping-more">'+more_txt+'</div></div>'); 2956 $('.shopping-wrap').removeClass('open'); 2957 if(sm_font) $('.shopping-more').css('color',sm_font);
2958 if(sm_bgColor) $('.shopping-more').css('background-color',sm_bgColor); 2959 if(sm_border) $('.shopping-more').css('border-color',sm_border); 2960 if(!review_chk && !qna_chk) $('.shopping-more-wrap').css('padding-bottom','100px'); 2961 } 2962 2963 $('.el-footer').show(); 2964 2965 if($('.element a[data-popup][data-popup-name]').length > 0 && (!b.VALIDPLAN || b.VALIDTYPE == 'PK')) { 2966 $('.element a[data-popup][data-popup-name]').addClass('disabled'); 2967 } 2968 2969 if($('.element[data-layout]').length > 0) { 2970 setLayoutHeight(); 2971 } 2972 // if($('.element[data-parallax="true"]').length > 0) setParallax(); 2973 if(typeof setBlockParallax == 'function') setBlockParallax($('.element')); 2974 if($('.element[data-aos]').length > 0) scheduleBlockAOSRefresh(100); 2975 2976 if(typeof fbq == 'function' && b.VALIDTYPE == 'SM') { 2977 if(b.VIEW) { 2978 var checkProduct = (b.PAGE.match(/^forum,/g) === null && typeof b.PARENT != 'undefined' && typeof b.PARENT.mode != 'undefined' && b.PARENT.mode == 'shopping') ? true : false, 2979 mn = (b.ONE) ? b.PARENT.opage : b.PARENT.ppage; 2980 if(checkProduct && typeof callbackEvtViewContent == 'function') callbackEvtViewContent(mn,b.PARENT.seq,b.PARENT.title,$('.total-price').text().replace(/[^0-9]/g,'')); 2981 } else { 2982 var checkProductList = ($('.element[data-type="gallery"][data-mode="shopping"]').length > 0) ? true : false; 2983 if(checkProductList && typeof callbackEvtLead == 'function') callbackEvtLead(b.PAGE); 2984 } 2985 } 2986 2987 deferred.resolve(); 2988 }); 2989 2990 return deferred.promise(); 2991 } 2992 2993 var elPush = function (prop) { 2994 /* prop - reorder list hide */ 2995 var pageID = b.PAGE.split(','), 2996 chgBG = false, 2997 tmpTag = '', 2998 currentPAGE = '', 2999 default_t_css = '', default_m_css = ''; 3000 var checkGalleryView = (b.VIEW && b.PAGE.match(/^forum,/g) === null) ? true : false; 3001 var block_display = (typeof b.SETTINGS.block_display != 'undefined' && b.SETTINGS.block_display) ? b.SETTINGS.block_display : {}, 3002 footer_display = (typeof block_display.footer_display != 'undefined' && block_display.footer_display) ? block_display.footer_display : 'ON', 3003 checkFooterDisplay = (footer_display != 'OFF') ? true : false; 3004 3005 currentPAGE = b.PAGE; 3006 var contentsParam = (currentPAGE=='index,template' && param.indexOf('/org/') == -1) ? param + '/org/' + b.PAGE : param; 3007 3008 if(b.VALIDPLAN && $.inArray(b.VALIDTYPE, ['BN','SM']) > -1 && b.CERT_USE == 'Y') { 3009 if(b.CERT_USE == 'Y') { 3010 if(b.UMEMBER.check_login == true) isUserCertified(history); 3011 } 3012 } 3013 if(pageID[0] == 'forum' && b.VIEW) { 3014 clearDsgnbody(); 3015 3016 var preloading = loadingScript({'forum':true}); 3017 preloading.done(function() { 3018 var ps_fmview = $.forum.view(b.VIEW); 3019 ps_fmview.done(function(data) { 3020 _this.displayComment(data); 3021 if(b.VIEW) setViewPageToolbar(); 3022 $('.el-footer').show().css('visibility', 'visible'); 3023 $.processOFF(); 3024 $('.dsgn-body').animate({scrollTop: 0}, 0,'easeInOutQuart'); 3025 }).fail(function(error_msg) { 3026 // console.log(error_msg); 3027 $.processOFF(); 3028 }); 3029 }); 3030 return false; 3031 } 3032 3033 if(b.pageContent.hasOwnProperty(currentPAGE)) { 3034 var loadCachedContents = function() { 3035 var loadingContents = loadPush(b.pageContent[currentPAGE]); 3036 loadingContents.then(function() { 3037 $('.el-footer').css('visibility', 'visible'); 3038 $.processOFF(); 3039 }); 3040 }; 3041 if(b.pageBlocksType.hasOwnProperty(currentPAGE)) { 3042 var preloading = loadingScript(b.pageBlocksType[currentPAGE]); 3043 preloading.then(loadCachedContents); 3044 } else { 3045 loadCachedContents(); 3046 } 3047 } else { 3048 contentsParam = (b.PUBLISH) ? contentsParam : contentsParam + '/render/true'; 3049 if(checkGalleryView) $('.el-footer').addClass('hide'); 3050 $.ajax({ 3051 url: '/template/contents/sid/' + b.SID + '/page/' + encodeURIComponent(currentPAGE) + contentsParam, 3052 data: { siteum: b.SITEUM }, 3053 dataType: 'json', 3054 type: 'GET', 3055 async: true, 3056 success: function(data) { 3057 if(typeof data.error != 'undefined' || data.error) { 3058 if(currentPAGE!='index,template') {
3059 alert($.lang[LANG]['page.not.found']); 3060 location.replace('/'); 3061 } 3062 } 3063 if(currentPAGE!='index,template') b.pageContent[currentPAGE] = data.contents; 3064 if(data.conf) b.pageConf[currentPAGE] = data.conf; 3065 if(typeof data.blocks_type != 'undefined') b.pageBlocksType[currentPAGE] = data.blocks_type; 3066 if(data.initContent !== undefined) property.INITPAGE = JSON.parse(data.initContent); 3067 3068 var preloading = loadingScript(data.blocks_type); 3069 preloading.then(function() { 3070 var loadingContents = loadPush(data.contents); 3071 loadingContents.then(function() { 3072 $('.el-footer').css('visibility', 'visible'); 3073 if(checkFooterDisplay && $('.el-footer').hasClass('hide')) $('.el-footer').removeClass('hide'); 3074 $.processOFF(); 3075 }); 3076 }); 3077 } 3078 }); 3079 } 3080 } 3081 3082 var scrollspy = function() { 3083 if(!b.ONE) return false; 3084 var top = 0, 3085 active = ''; 3086 3087 // top = ($('.dsgn-body').hasClass('sidebar')) ? 0 : $('.el-menu header').outerHeight(); 3088 3089 $.each(b.MENULINK,function(i,v) { 3090 3091 var $el = ($.inArray(v,property.MENULIST) > -1) ? $('.link-to-'+v) : ''; 3092 if($el.length>0) { 3093 var offset = $el.offset(); 3094 top = ($('.dsgn-body').hasClass('sidebar')) ? 0 : $('.el-menu header').outerHeight(); 3095 if((Math.floor(offset.top) - $(document).scrollTop())<= top) { 3096 active = v; 3097 } 3098 } 3099 3100 }); 3101 3102 3103 if(!$('#tpl-menu li a[href="#'+active+'"]').parent().hasClass('active')) { 3104 3105 $('#tpl-menu li').removeClass('active').removeClass('open'); 3106 3107 $('#tpl-menu li a[href="#'+active+'"]').parent().addClass('active'); 3108 if( $('#tpl-menu li a[href="#'+active+'"]').closest('.dropdown-menu').length>0 ) { 3109 if($('body').width() > 768) $('#tpl-menu li a[href="#'+active+'"]').closest('.dropdown').addClass('active'); 3110 else { 3111 //ìíì´ì§ì¼ ë 769~783 í´ìëìì ê°¤ë¬ë¦¬ ìì ë§ì°ì¤ ì¬ë¦¬ë©´ íìë©ë´ ì´ë¦¬ë íì ìì´ì 모ë°ì¼ììë§ open í´ëì¤ ì¶ê° ëëë¡ #mobile-nav ì½ë ì¶ê°. 3112 $('#mobile-nav #tpl-menu li a[href="#'+active+'"]').closest('.dropdown').addClass('open'); 3113 } 3114 } 3115 } 3116 3117 if($(document).scrollTop() + $('body').height() == $('body').prop('scrollHeight')) { 3118 3119 var last = b.MENULINK[b.MENULINK.length-1], 3120 $el = ($.inArray(last,property.MENULIST) > -1) ? $('.link-to-'+last) : ''; 3121 3122 if($el.length>0) { 3123 if($el.offset().top>top) { 3124 $('#tpl-menu li').removeClass('active').removeClass('open'); 3125 3126 if($(document).scrollTop()!=0) 3127 $('#tpl-menu li a[href="#'+last+'"]').parent().addClass('active'); 3128 3129 if($('#tpl-menu li a[href="#'+last+'"]').closest('.dropdown-menu').length>0) { 3130 if($('body').width() > 768) $('#tpl-menu li a[href="#'+last+'"]').closest('.dropdown').addClass('active'); 3131 else $('#tpl-menu li a[href="#'+last+'"]').closest('.dropdown').addClass('open'); 3132 } 3133 } 3134 } 3135 } 3136 3137 } 3138 3139 var fixedMenu = function() { 3140 if($.clnav.check()) return; 3141 3142 if($('header.navbar').hasClass('navbar-fheader')) { // menu ver3 : fheader 3143 if($('body').is('[data-gjs^="fixedscroll"]')) { 3144 return false; 3145 } 3146 3147 var isSidebar = $('.el-menu > header').hasClass('sidebar'); 3148 if($(document).scrollTop() > $('header.navbar').height()) { 3149 if(window.innerWidth > 768) { 3150 $('.menu-logo-top').hide(); 3151 $('.el-menu').addClass('fixed-fheader'); 3152 } 3153 if(b.HEADER && !isSidebar) $('header.navbar').removeClass('transparent'); 3154 } else if($(document).scrollTop() <= $('header.navbar').height()) { 3155 $('.el-menu').removeClass('fixed-fheader'); 3156 $('.menu-logo-top').show(); 3157 3158 if(b.HEADER && !isSidebar) { 3159 $('header.navbar').addClass('transparent'); 3160 $('.dsgn-body').css('padding-top','0px'); 3161 } 3162 } 3163 3164 return false; 3165 } 3166 3167 header_fixed = $('.header.el-menu').height(); 3168 var user_menu = $('.el-menu');
3169 var menu_color = $('header.navbar').css('background-color'); 3170 var menu_bg_img = (typeof $('header.navbar').css('background-image') != 'undefined') ? $('header.navbar').css('background-image') : 'none'; 3171 var menu_bg_position = (typeof $('header.navbar').css('background-position') != 'undefined') ? $('header.navbar').css('background-position') : 'center center'; 3172 var menu_bg_repeat = (typeof $('header.navbar').css('background-repeat') != 'undefined') ? $('header.navbar').css('background-repeat') : 'no-repeat'; 3173 var menu_bg_size = (typeof $('header.navbar').css('background-size') != 'undefined') ? $('header.navbar').css('background-size') : 'cover'; 3174 3175 if($(document).scrollTop() > header_fixed && user_menu.hasClass('fixed')==false && !$('.dsgn-body').hasClass('sidebar')) { 3176 user_menu.fadeOut('fast', function() { 3177 $(this).addClass('fixed').fadeIn('fast'); 3178 $('.fixed').addClass('fixed-position'); 3179 if(!b.HEADER || $('header.navbar').hasClass('sidebar') ) { 3180 var topval = ($('.creatorlink-header').length==1) ? '55px' : '0'; 3181 $('.el_0').css('margin-top',topval); 3182 var $header_empty = $('<div class="header-empty"></div>'); 3183 if($(".header-empty").length==0) { 3184 var topval = ($('.creatorlink-header').length==1) ? '55px' : '0'; 3185 $header_empty.css({ 3186 'background-color' : $('header.navbar').css('background-color'), 3187 'background-image' : menu_bg_img, 3188 'background-position' : menu_bg_position, 3189 'background-repeat' : menu_bg_repeat, 3190 'background-size' : menu_bg_size, 3191 //'position' : 'relative', 3192 'width' : '100%', 3193 'height' : header_fixed+'px', 3194 'top' : topval, 3195 'z-index' : '1' 3196 }); 3197 $('.dsgn-body').prepend($header_empty); 3198 } 3199 $('.header-empty').css('position','relative'); 3200 } else { 3201 $('header.navbar').removeClass('transparent'); 3202 } 3203 if(window.innerWidth > 768) $('.menu-logo-top').hide(); 3204 }); 3205 } else if($(document).scrollTop() < header_fixed && user_menu.hasClass('fixed') && !$('.dsgn-body').hasClass('sidebar')){ 3206 user_menu.fadeOut('fast', function(){ 3207 $('.header-empty').css('position','absolute'); 3208 $('.fixed').addClass('fixed-position'); 3209 user_menu.removeClass('fixed').fadeIn('fast'); 3210 if(!b.HEADER || $('header.navbar').hasClass('sidebar') ) { 3211 $('.el_0').css('top','0'); 3212 } else { 3213 $('header.navbar').addClass('transparent'); 3214 if($('.creatorlink-header').length == 1) $('div.header.fixed-position').addClass('top-zero'); 3215 } 3216 $('.menu-logo-top').show(); 3217 }); 3218 } 3219 } 3220 3221 var elFooter = function() { 3222 if(typeof b.pageContent[b.PAGE] == 'undefined' && $('.error_404.new_design').length > 0) $('.error_404.new_design').remove(); 3223 if($('.el-footer').length > 0) { 3224 setTimeout(function() { 3225 if($('.element:not(.el-footer)').length < 1 && !(b.MENULIST.indexOf(b.PAGE) > -1) && !b.ONE && !b.VIEW) { 3226 if($('.error_404.new_design').length == 0) { 3227 $('style#el-footercss').after(error_style); 3228 $('.element.el-footer').before(error_html); //404 error 3229 } 3230 } 3231 $('.el-footer').show(); 3232 }, 300); 3233 return false; 3234 } 3235 3236 if(b.FTAG == '') b.FTAG = '<div class="footer-' + b.SID + '"></div>'; 3237 $footer = $(b.FTAG); 3238 $footer.find('.link-site-home').prop('href',URI); 3239 $footer.addClass('element') 3240 .addClass('el-footer') 3241 .addClass('hide') 3242 .attr('data-type','footer') 3243 .attr('data-el','el-footer') 3244 .attr('data-id','footer') 3245 .attr('data-name','footer-' + b.SID); 3246 3247 $footer.appendTo($('.dsgn-body')); 3248 $('.dsgn-body').prepend('<style id="el-footercss">' + b.FCSS + '</style>'); 3249 3250 /*180822 add*/ 3251 // before v1 creatorlink-box remove 3252 if($('.el-footer').find('.creatorlink-box').length > 0 ) { 3253 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'); 3254 $('.el-footer').find('.creatorlink-box').remove(); 3255 } 3256 // before v2 creatorlink-footer remove 3257 if( $('.el-footer').find('.creatorlink-footer').length > 0) { 3258 $('.el-footer').find('.creatorlink-footer').remove(); 3259 } 3260 3261 // made it with Creatorlink 3262 if(!b.VALIDPLAN || b.VALIDTYPE == 'PK') { 3263 var is_templates = checkTemplateSite(b.SID); 3264 if(!is_templates) { 3265 $('.goto-top').addClass('moved'); 3266 setMadeWithCreatorlink(); 3267 } 3268 } 3269 3270 setCLEscrowFooter(b.SID, b.VALIDTYPE, b.SETTINGS.sm_escrow); 3271 3272 var isfooterAttach = typeof $footer.attr('data-flogo') == 'undefined' ? false : $footer.attr('data-flogo'),
3273 checkFixTypeMenu = (typeof $('header.navbar-fheader').attr('data-fixtype') != 'undefined' && $('header.navbar-fheader').attr('data-fixtype')) ? true : false; 3274 3275 if(isfooterAttach) { 3276 if(b.ONE){ 3277 if(b.VIEW) $footer.find('#site-home-footer').attr('href',URI).removeClass('mini-home'); 3278 else $footer.find('#site-home-footer').attr('href','javascript:;').addClass('mini-home'); 3279 } else $footer.find('#site-home-footer').attr('href',URI).removeClass('mini-home'); 3280 } 3281 3282 /*var block_display = (typeof b.SETTINGS.block_display != 'undefined' && b.SETTINGS.block_display) ? b.SETTINGS.block_display : {}, 3283 footer_display = (typeof block_display.footer_display != 'undefined' && block_display.footer_display) ? block_display.footer_display : 'ON'; 3284 3285 if(footer_display=='OFF') $('.footer-'+b.SID+'.el-footer').hide();*/ 3286 3287 /*180822 delete - powered by Creatorlink 3288 // before creatorlink-box remove 3289 if($('.el-footer').find('.creatorlink-box').length > 0 ) { 3290 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'); 3291 $('.el-footer').find('.creatorlink-box').remove(); 3292 } 3293 3294 if($('.el-footer').find('*[data-edit="true"]').first().closest('.row').children('div').length == 1 && 3295 $('.el-footer').find('*[data-edit="true"]').first().closest('.row').children('div').hasClass('col-md-10') ) { 3296 $('.el-footer').find('*[data-edit="true"]').first().closest('.row').children('div').removeClass('col-md-10').addClass('col-md-12'); 3297 } 3298 3299 if(typeof b.VALIDPLAN != 'undefined' && b.VALIDPLAN && b.VALIDTYPE != 'PK') { 3300 if( $('.el-footer').find('.creatorlink-footer').length > 0 ) $('.el-footer').find('.creatorlink-footer').remove(); 3301 } else { 3302 var el_f_style = $('.el-footer').attr('style'); 3303 if(typeof el_f_style != 'undefined' && 3304 (el_f_style.indexOf('display') > -1 || el_f_style.indexOf('opacity') > -1 || el_f_style.indexOf('z-index') > -1) ) $('.el-footer').removeAttr('style'); 3305 if($('.el-footer').css('display') == 'none') $('.el-footer').css('display','block'); 3306 if($('.el-footer').css('opacity') < 1) $('.el-footer').css('opacity',1); 3307 if($('.el-footer').css('z-index') != 'auto') $('.el-footer').css('opacity','auto'); 3308 3309 if( $('.el-footer').find('.creatorlink-footer').length == 0) setFooterCretorlinkBox(); 3310 setFooterLink(); 3311 } 3312 */ 3313 if($('.element:not(.el-footer)').length < 1 && !(b.MENULIST.indexOf(b.PAGE) > -1) && !b.ONE && !b.VIEW && b.PAGE != 'psearch') { 3314 show404(); 3315 } 3316 3317 changeBrokenImages($footer); 3318 3319 if(!b.FTAG || b.FOOTER) { 3320 // $footer.hide(); 3321 } else { 3322 if(b.VIEW && b.PARENT.mode == 'shopping' && $(document).width() < 768) { 3323 $('.el-footer').css('margin-bottom','55px'); 3324 } 3325 3326 var block_display = (typeof b.SETTINGS.block_display != 'undefined' && b.SETTINGS.block_display) ? b.SETTINGS.block_display : {}, 3327 footer_display = (typeof block_display.footer_display != 'undefined' && block_display.footer_display) ? block_display.footer_display : 'ON'; 3328 3329 if(footer_display!='OFF') { 3330 setTimeout(function() { 3331 $footer.removeClass('hide'); 3332 },300); 3333 } 3334 3335 setTimeout(function(){ 3336 if(checkFixTypeMenu) { 3337 if(b.VALIDPLAN) setFixedMenuCss(false); 3338 else { 3339 $('.el-menu header.navbar[data-fixtype]').find('#tpl-menu').css({ 3340 'width': '100%' 3341 }); 3342 } 3343 } 3344 },80); 3345 } 3346 } 3347 3348 function setDefaultValue(value) { 3349 return (typeof value == 'undefined') ? '' : value; 3350 } 3351 3352 function setDefaultValueEtc(type, el) { 3353 type = (typeof el.attr('data-contact-etc-type') != 'undefined' && el.attr('data-contact-etc-type') ) ? el.attr('data-contact-etc-type') : type; 3354 3355 var input_type = ['text','email','number','tel','url']; 3356 if($.inArray(type,input_type)) { 3357 return (typeof el.val() == 'undefined') ? '' : el.val(); 3358 } else if(type == 'checkbox') { 3359 return ( el.prop('checked') ) ? 'O' : 'X'; 3360 } else if(type == "radio") {
3361 return el.find('input:radio:checked').val(); 3362 } else if(type == 'selectbox') { 3363 var result = (el.find('option').length > 0 ) ? el.find('option:checked').val() : el.find('.active').find('.opval').text(); 3364 return result; 3365 } else { 3366 return 'etc article'; 3367 } 3368 } 3369 3370 $(document).off('contactSubmitSecurityUpdate.render').on('contactSubmitSecurityUpdate.render', function(e, $contactEL, pid, settings, blocklang) { 3371 setContactSubmitSecurity($contactEL, pid, settings, blocklang); 3372 }); 3373 3374 function setDefaultForm(el) { 3375 var ch_lang = getLang($(el + ' [form-idx]'), b.SID); 3376 var type2 = $(el).attr('data-type2'); 3377 3378 $(el + ' [form-idx]').val(''); 3379 $(el + ' [form-idx]').find('.form-date').val(''); 3380 $(el + ' [form-idx]').find('.form-date').removeAttr('style') 3381 $(el).find('input:checkbox').removeAttr('checked'); 3382 $(el).find('input:radio').removeAttr('checked'); 3383 $(el).find('.checkbox-inline').removeClass('checked'); 3384 $(el).find('.radio-inline').removeClass('checked'); 3385 $(el + ' [form-type="file.upload"]').find('label .file-uploaded-number').text('(0/10)'); 3386 $(el + ' [form-type="file.upload"]').find('input[type="file"]').val(''); 3387 $(el + ' [form-type="file.upload"]').find('input[type="text"]').val(''); 3388 $(el + ' [form-type="file.upload"]').find('.file-title').text($.lang[ch_lang]['form.file.nofile']); 3389 3390 if($(el + ' [form-type="file.upload"]').find('.file-row').length > 0) { 3391 $(el + ' [form-type="file.upload"]').find('.file-row').remove(); 3392 $(el + ' [form-type="file.upload"]').find('.file-uploaded-number').text('(0/10)'); 3393 $(el + ' [form-type="file.upload"]').find('.file-title').removeClass('hide'); 3394 } 3395 3396 if(type2 == 'form' && $(el).attr('data-captcha') != 'false' && $(el).find('input.input-captcha').length > 0) { 3397 $(el).find('input.input-captcha').val(''); 3398 load_form_kcaptcha($(el), $(el).attr('data-id')); 3399 } 3400 3401 if($(el).attr('data-type2') == 'franchise bar') { 3402 $(el).find('.view-privacy').removeClass('active'); 3403 $(el).find('.franchise-form-select').each(function() { 3404 var defaultText = $(this).attr('form-name') || $(this).find('select.franchise-form-select-native option:first').text(); 3405 $(this).find('select.franchise-form-select-native').val(''); 3406 $(this).find('.franchise-form-select-label').text(defaultText).removeClass('selected'); 3407 $(this).find('.dropdown-menu li').removeClass('active'); 3408 }); 3409 // $(el).find('.form-privacy textarea').hide(); 3410 } 3411 } 3412 3413 function setDefaultContactForm(el) { 3414 $(el + ' [data-contact-firstname]').val(''); 3415 $(el + ' [data-contact-lastname]').val(''); 3416 $(el + ' [data-contact-email]').val(''); 3417 $(el + ' [data-contact-website]').val(''); 3418 $(el + ' [data-contact-phone]').val(''); 3419 $(el + ' [data-contact-subject]').val(''); 3420 $(el + ' [data-contact-message]').val(''); 3421 $(el).find('input:checkbox').removeAttr('checked'); 3422 $(el).find('input:radio').removeAttr('checked'); 3423 $(el + ' [form-type="file.upload"]').find('input[type="file"]').val(''); 3424 $(el + ' [form-type="file.upload"]').find('input[type="text"]').val(''); 3425 $(el + ' [form-type="file.upload"]').find('.file-title').text("첨ë¶ë íì¼ì´ ììµëë¤."); 3426 3427 if($(el).attr('data-captcha') == 'true' && $(el).find('input.input-captcha').length > 0) { 3428 $(el).find('input.input-captcha').val(''); 3429 $(el).find('.form-captcha .error').remove(); 3430 load_form_kcaptcha($(el), $(el).attr('data-id')); 3431 } 3432 } 3433 3434 function setDefaultContactFormEtc(el) { 3435 $(el).find('[data-contact-etc]').each(function(i) { 3436 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'); 3437 3438 var input_type = ['text','email','number','tel','url']; 3439 if($.inArray(type,input_type)) { 3440 $(this).val(''); 3441 } else if(type == "checkbox") { 3442 $(this).removeAttr('checked'); 3443 } else if(type == "radio") {
3444 $(this).find('input:radio').first().click(); 3445 } else if(type == "selectbox") { 3446 if($(this).find('option').length > 0) { 3447 $(this).find('option:first').attr('selected','selected'); 3448 } else { 3449 $(this).find('.active').removeClass('active'); 3450 $(this).find('li').first().addClass('active'); 3451 } 3452 } 3453 }); 3454 } 3455 3456 var ieLineClamp = function() { 3457 if(isIE()) { 3458 $('[data-ie-clamp]').each(function(index, element) { 3459 var clamp = $(this).attr('data-ie-clamp').split(','), 3460 line = new Array(); 3461 3462 $.each(clamp,function(k,v) { 3463 line.push(v); 3464 }); 3465 3466 for(i=line.length; i<3; i++) line[i] = 0; 3467 var idx = getScreenIndex(); 3468 var apply = line[idx]; 3469 3470 // console.log($(element).text()); 3471 //safeClamp(element, apply); 3472 $clamp(element, {clamp:apply, useNativeClamp:false }); 3473 }); 3474 } 3475 } 3476 3477 var safeClamp = function (selector, lines) { 3478 lines = lines || 3; // a default 3479 $(selector).each( function() { 3480 if($(this).text()) { 3481 $clamp( this, { clamp: lines, useNativeClamp:false }); 3482 } 3483 }); 3484 } 3485 3486 $('.data-page-back, .toolbar-btn.back').live({ 3487 click : function() { 3488 var pPage = b.PARENT.page, 3489 page = b.PAGE.split(','); 3490 inMenu = ($.inArray(pPage,b.MENULIST) == -1 && page[0] != '_product') ? false : true; 3491 3492 if(!inMenu) { 3493 $(this).showModalFlat('INFORMATION','ì´ëí ì ììµëë¤',true,false,'','ok'); 3494 return false; 3495 } else { 3496 setGalleryReturnItemCookie(b.PARENT); 3497 if($.cookie('gallery') !== undefined && $.cookie('gallery') == 'all_products') { 3498 var c_g_p = (typeof $.cookie('gallery-page-all_products') != 'undefined') ? $.cookie('gallery-page-all_products') : 1; 3499 $.cookie('gallery', 'all_products', { path: '/', expires: 12 * 60 * 60 * 1000 }); 3500 $.cookie('loadmore-all_products', c_g_p, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3501 3502 var url_replace = (b.URL == '/') ? '' : b.URL; 3503 if(b.ONE) { 3504 _this.history.pushState(null,b.TITLE,url_replace + '/index#ì ì²´ìí'); 3505 } else { 3506 _this.history.pushState(null,b.TITLE,url_replace + '/ì ì²´ìí'); 3507 } 3508 } else { 3509 var c_g_p = (typeof $.cookie('gallery-page-' + b.PARENT.pid) != 'undefined') ? $.cookie('gallery-page-' + b.PARENT.pid) : 1; 3510 $.cookie('gallery',b.PARENT.pid, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3511 $.cookie('loadmore-' + b.PARENT.pid, c_g_p, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3512 3513 var url_replace = (b.URL == '/') ? '' : b.URL; 3514 if(b.ONE) { 3515 _this.history.pushState(null,b.TITLE,url_replace + '/index#' + b.PARENT.page); 3516 } else { 3517 var page = b.PAGE.split(','); 3518 if(page[1]=='template') { 3519 _this.history.pushState(null,b.TITLE,url_replace + '/' + page[0]); 3520 } else { 3521 _this.history.pushState(null,b.TITLE,url_replace + '/' + b.PARENT.page); 3522 } 3523 } 3524 } 3525 3526 } 3527 } 3528 }); 3529 3530 $('#config-mode-view').click(function() { 3531 location.href = '//' + b.HOST + b.REFERER; 3532 }); 3533 3534 $('body') 3535 .on('click','.mini-home, #goto-top, #quick-menu-top', function(event) { 3536 event.preventDefault(); 3537 $('body,html').animate({scrollTop: 0}, 900,'easeInOutQuart'); 3538 }) 3539 .on('click','#quick-menu-bottom', function(event) { 3540 event.preventDefault(); 3541 $('body,html').animate({scrollTop: document.body.scrollHeight}, 900,'easeInOutQuart'); 3542 }); 3543 3544 var moveGallerySibling = function(seq, gallerySettings, page) { 3545 var settings = {}; 3546 if(gallerySettings) { 3547 try { 3548 settings = (typeof gallerySettings == 'string') ? $.parseJSON(gallerySettings) : gallerySettings; 3549 } catch(e) { 3550 settings = {}; 3551 } 3552 } 3553 3554 var glink = (settings && settings.glink) ? settings.glink : ''; 3555 if(!glink || b.PARENT.mode != 'project') { 3556 var url_replace = (b.URL == '/') ? '' : b.URL; 3557 _this.history.pushState(null,b.TITLE,url_replace + '/' + page + '/view/' + seq); 3558 return; 3559 } 3560 3561 try { 3562 if(checkBase64Encode(decodeURIComponent(glink))) glink = Base64.decode(decodeURIComponent(glink)); 3563 else if(checkBase64Encode(glink)) glink = Base64.decode(glink); 3564 } catch(e) { 3565 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 3566 } 3567 3568 var target = (settings.glink_target == '_blank') ? '_blank' : ''; 3569 var linkModal = $(this).showModalFlat( 3570 $.lang[LANG]['config.information'], 3571 $.lang[LANG]['gallery.sibling.link.confirm'], 3572 true, 3573 true, 3574 function() { 3575 var linkUrl = makeLinkUrl(glink, b.ONE, b.VIEW); 3576 var $link = $('<a></a>').attr('href', linkUrl).css('display', 'none'); 3577 3578 if(glink.match(/^\@/g) !== null) { 3579 $link.attr('attr-bookmark', glink.replace(/^\@/g, '')); 3580 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { 3581 $link.attr('attr-flink', glink.replace(/^flink\@/gi, '')); 3582 } else if($.inArray(glink.replace(/^\//g, '').replace(/ /g, '-'), b.MENULIST) > -1) { 3583 $link.attr('data-user-link', linkUrl); 3584 } else { 3585 $link.attr('attr-link', glink); 3586 } 3587 3588 if(target) $link.attr('target', target); 3589 $('body').append($link); 3590 $link[0].click(); 3591 setTimeout(function() { $link.remove(); }, 0); 3592 linkModal.modal('hide'); 3593 }, 3594 'cancel', 3595 'ok' 3596 ); 3597 }; 3598
3599 $('.data-page-prev').live({ 3600 click : function(e) { 3601 var page = b.PAGE.split(','); 3602 if(!$(this).hasClass('active') || b.PARENT.prev === null) return false; 3603 if(typeof b.PARENT.page == 'string' && $.inArray(b.PARENT.page,b.MENULIST) == -1 && page[0] != '_product') return false; 3604 if(b.PARENT.prev) 3605 moveGallerySibling(b.PARENT.prev, b.PARENT.prev_gsettings, page[0]); 3606 } 3607 }); 3608 3609 $('.data-page-next').live({ 3610 click : function() { 3611 var page = b.PAGE.split(','); 3612 if(!$(this).hasClass('active') || b.PARENT.next === null) return false; 3613 if(typeof b.PARENT.page == 'string' && $.inArray(b.PARENT.page,b.MENULIST) == -1 && page[0] != '_product') return false; 3614 if(b.PARENT.next) 3615 moveGallerySibling(b.PARENT.next, b.PARENT.next_gsettings, page[0]); 3616 } 3617 }); 3618 3619 // [oldver Menu nav link] Click 3620 $(`#tpl-menu.nav > li:not(.siteUM,.siteLANG) a:not([href="javascript:;"]):not([href*="flink@"]), 3621 .cl-moption > .cl-moption-col > .cl-moption-row > a:not([href="javascript:;"]):not([href*="flink@"]), 3622 .el-menu header.navbar a#site-home 3623 `).live({ 3624 click : function(e) { 3625 e.preventDefault(); 3626 if(typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) { 3627 return false; 3628 } 3629 if(typeof $(this).attr('data-toggle') != 'undefined') { return false; } 3630 3631 $.each($.cookie(), function(i,v) { 3632 if(i.indexOf('gallery-category-') > -1) { 3633 var gallery_seq = i.replace('gallery-category-',''); 3634 var gcate_home = (typeof $.cookie('gallery-catehome-' + gallery_seq) == 'undefined') ? '' : $.cookie('gallery-catehome-' + gallery_seq); 3635 $.cookie(i, gcate_home, { path : '/', expires: 12 * 60 * 60 * 1000 }); 3636 } 3637 if(i.indexOf('gallery-page-') > -1) $.cookie(i, 1, { path : '/', expires: 12 * 60 * 60 * 1000 }); 3638 if(i.indexOf('loadmore-') > -1) $.cookie(i, 1, { path : '/', expires: 0 }); 3639 }); 3640 3641 $.removeCookie('gallery', { path: '/' }); 3642 $.removeCookie('gallery-item', { path : '/' }); 3643 $.removeCookie('forum', { path : '/' }); 3644 $.removeCookie('forum-item', { path : '/' }); 3645 3646 var isClickMoption = ($(this).closest('.cl-moption-col').length > 0) ? true : false; 3647 var isClickSiteHome = (typeof $(this).attr('id') != 'undefined' && $(this).attr('id') == 'site-home') ? true : false; 3648 3649 var menuVer06 = ($('.el-menu .cl-menu-option').length > 0) ? true : false; 3650 var menuVer03 = ($('.el-menu > header').hasClass('navbar-fheader')) ? true : false; 3651 var menuVer02 = (!menuVer03 && $('.el-menu > header').hasClass('navbar-simple')) ? true : false; 3652 var menuVer01 = (!menuVer03 && !menuVer02) ? true : false; 3653 3654 if($('body').width() < 769) { 3655 var clickNavbarToggle = ( (menuVer03 && $('.navbar-toggle').css('visibility') == 'hidden') && !isClickSiteHome || 3656 (menuVer02 && !isClickSiteHome) || 3657 menuVer01 3658 ) ? true : false; 3659 if(clickNavbarToggle) $('.navbar-toggle').click(); 3660 } 3661 3662 if(isClickMoption && !property.ONE) $(this).closest('header').find('.cl-menu-option').removeClass('open'); 3663 if(!isClickSiteHome) { 3664 if($(this).hasClass('loginout')) { 3665 if(b.URL == '/render') { 3666 $(this).showModalFlat('INFORMATION','미리보기ììë ì ê³µëì§ ììµëë¤.',true,false,'','ok'); 3667 return false; 3668 } 3669 $('#loginModal').modal('show'); 3670 $('#loginModal').css('z-index',1042); 3671 $('.modal-backdrop.fade.in').css('z-index', 1041); 3672 } else { 3673 $('#tpl-menu li').removeClass('active').removeClass('open'); 3674 $(this).parent().addClass('active'); 3675 3676 if($(this).closest('.dropdown-menu').length>0) { 3677 if($('body').width() > 768) { 3678 $(this).closest('.dropdown').addClass('active').siblings().removeClass('active'); 3679 } else { 3680 if(menuVer03) { 3681 $(this).closest('.menu-has-children').addClass('open').siblings().removeClass('open'); 3682 $('#tpl-menu .menu-has-children:not(.open) ul.dropdown-menu').hide(); 3683 } else { 3684 $(this).closest('.dropdown').addClass('open').siblings().removeClass('open'); 3685 $('#tpl-menu .dropdown:not(.open) ul.dropdown-menu').hide(); 3686 } 3687 } 3688 } else { 3689 if(menuVer03) $('#mobile-nav li.menu-has-children ul.dropdown-menu').hide(); 3690 else { 3691 if($('body').width() < 768) $('#tpl-menu li.dropdown ul.dropdown-menu').hide(); 3692 } 3693 } 3694 3695 if(menuVer06) { 3696 $('.el-menu .cl-moption-row').removeClass('active'); 3697 if($(this).is(':not([attr-bookmark])')) { 3698 $(this).closest('.cl-moption-row').addClass('active'); 3699 if($(this).closest('.cl-moption-row[data-parent]').length > 0) $(this).closest('.cl-moption-col').find('.cl-moption-row:not([data-parent])').addClass('active'); 3700 } 3701 } 3702 } 3703 } 3704 3705 var loc = $(this).attr('href'); 3706 var uri = (b.PUBLISH) ? loc : loc.replace('/render/',''); 3707 var bookmark = $(this).attr('attr-bookmark'); 3708 if(typeof bookmark !='undefined' && bookmark) return false;
3709 3710 var blank = $(this).attr('target'); 3711 if(typeof blank != 'undefined' && (blank == '_blank' || blank == 'blank')) { 3712 window.open(loc); 3713 e.stopPropagation(); 3714 return false; 3715 } 3716 3717 if(loc.match('^(mailto:|tel:|sms:|callto:|facetime:|skype:|sip:)')) { 3718 window.location.href = loc; 3719 return false; 3720 } 3721 3722 if(b.ONE!='1') { 3723 if(loc == 'javascript:;') return false; 3724 3725 if(uri == '/render' || uri == '/') { 3726 uri = b.MENULINK[0]; 3727 $('body,html').animate({scrollTop: 0}, 900,'easeInOutQuart'); 3728 } 3729 3730 if(loc.match(/\@/g) === null && loc.match(/\//g) === null || loc.match(/\?clgc\=/g) !== null) { 3731 window.location.href = loc; 3732 return false; 3733 } 3734 var url = new getLocation(loc); 3735 golink(_this,url); 3736 // _this.history.pushState(null,b.TITLE,(b.PUBLISH) ? "/" + uri : "/render/" + uri); 3737 } else { 3738 if(loc == 'javascript:;') loc = '#'; 3739 3740 var hash = ''; 3741 if(_this.b.PUBLISH) { 3742 if(loc.indexOf('/index/view/') > -1 && b.ONE) ; 3743 else loc = loc.replace('/index',''); 3744 } else { 3745 if(loc.indexOf('/index/view/') > -1 && b.ONE) ; 3746 else loc = loc.replace('/render/index',''); 3747 } 3748 hash = loc; 3749 3750 var fstr = loc.charAt(0); 3751 var pathname = window.location.pathname; 3752 switch(fstr) { 3753 case '#': 3754 if(_this.b.PAGE == 'index') { 3755 if(pathname.charAt(1) == '_' && pathname.match(/^\/\_lang\//gi) === null) { 3756 loc = (_this.b.PUBLISH) ? '/'+loc : '/render/'+loc; 3757 window.location.href = loc; 3758 } else { 3759 if($(this).hasClass('mini-home')) { 3760 $('body,html').animate({scrollTop: 0}, 900,'easeInOutQuart'); 3761 history.pushState('', '', hash); 3762 return false; 3763 } 3764 var urlType = (b.PUBLISH) ? '/index' : '/render'; 3765 _this.history.pushState(null,b.TITLE,urlType + hash); 3766 } 3767 } else { 3768 loc = (_this.b.PUBLISH) ? '/index' : '/render/index'; 3769 _this.history.pushState(null,b.TITLE,loc); 3770 history.pushState('', '', loc + hash); 3771 } 3772 break; 3773 case '@': 3774 3775 break; 3776 case '/': 3777 if(loc == '/render' || loc == '/') { 3778 loc = (_this.b.PUBLISH) ? '/index' : '/render/index'; 3779 $('body,html').animate({scrollTop: 0}, 900,'easeInOutQuart'); 3780 } 3781 3782 var url = new getLocation(loc); 3783 golink(_this,url); 3784 break; 3785 default: 3786 // var url = new getLocation(loc); 3787 // golink(_this,url); 3788 window.location.href = loc; 3789 break; 3790 } 3791 3792 // window.location.href = loc; 3793 } 3794 } 3795 }); 3796 3797 // [oldver Menu nav link] Click (onepage) 3798 $(`.nav li a[href*=#]:not([href="javascript:;"]), 3799 .cl-moption > .cl-moption-col > .cl-moption-row > a[href*=#]:not([href="javascript:;"]) 3800 `).live({ 3801 click : function(e) { 3802 if(typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) { 3803 e.preventDefault(); 3804 return false; 3805 } 3806 menuClickMove = true; 3807 3808 var link = $(this).attr('href').replace('#',''); 3809 if(link.substring(0,1) == '/') link = link.substring(1,link.length); 3810 if(b.MENULINK.indexOf(link) > -1) moveLinkPage(link); 3811 } 3812 }); 3813 3814 $('.navbar-simple .nav li a .fa').live('click', function(e) { 3815 if($(this).closest('header').hasClass('navbar-simple')) { 3816 $(this).closest('a').next('ul.dropdown-menu').slideToggle(200).closest('li').toggleClass('open').siblings().removeClass('open').find('ul.dropdown-menu').slideUp(200); 3817 e.preventDefault(); 3818 return false; 3819 } 3820 }); 3821 3822 $('.navbar-simple .nav li a.dropdown-toggle[href="javascript:;"]').live('click', function(e) { 3823 e.preventDefault(); 3824 if($('body').width() < 768) $(this).find('.fa').click(); 3825 return false; 3826 }); 3827 3828 $('body').on('click', '.micon', function(e) { $('#goto-top').removeClass('show'); }); 3829 3830 $('body').on('touchstart.dropdown.data-api, click','header .siteUM-dmenu-wrap, header .siteLANG-dmenu-wrap', function(e) { 3831 if(e.target.className.indexOf('siteUM-dmenu-wrap') > -1 || e.target.className.indexOf('siteLANG-dmenu-wrap') > -1) { 3832 if($(this).hasClass('open')) { 3833 $(this).removeClass('open'); 3834 $('#goto-top').addClass('show'); 3835 } 3836 } 3837 }); 3838
3839 $('body').on('touchstart.dropdown.data-api, click', 'header.navbar-simple .navbar-collapse.in', function(e) { 3840 if(e.target.className.indexOf('navbar-collapse') > -1) { 3841 $('.navbar-toggle').click(); 3842 } 3843 }); 3844 3845 3846 $('.fr-custom-button[data-external-link], .fr-fic[data-external-link]').live({ 3847 click: function() { 3848 if($(this).is('[data-external-link=""]')) return false; 3849 var link = $(this).attr('data-external-link'); 3850 if($(this).attr('target') != '_blank') { 3851 location.href = link; 3852 } else { 3853 window.open(link); 3854 } 3855 } 3856 }); 3857 3858 $('[data-type="gallery"] [data-loop="true"] > .grid').live({ 3859 touchstart: function() { 3860 galleryStartHover(); 3861 }, 3862 touchend: function() { 3863 galleryCloseHover(); 3864 }, 3865 click: function() { 3866 galleryMovelink(); 3867 } 3868 }); 3869 3870 $(document).on('click','.cl-gtoolbar .cl-gcate-item > a, .cl-gtoolbar .cl-gsort-item > a', function(e) { 3871 var $clickTarget = $(this); 3872 var $clickItem = $clickTarget.closest('.cl-gcate-item, .cl-gsort-item'); 3873 var $clickList = $clickTarget.closest('.cl-gcate-list, .cl-gsort-list'); 3874 var $clickNav = $clickTarget.closest('.cl-gcate, .cl-gsort'); 3875 var $clickGToolbar = $clickTarget.closest('.cl-gtoolbar'); 3876 var $clickBlock = ($clickGToolbar.closest('.elem').length > 0) ? $clickGToolbar.closest('.elem').find('.element[data-type="gallery"]') : $clickGToolbar.closest('.element[data-type="gallery"]'); 3877 3878 var isCategory = $clickNav.is('.cl-gcate'); 3879 var isSort = $clickNav.is('.cl-gsort'); 3880 3881 if ($clickItem.hasClass('active')) return; 3882 3883 if(isCategory) { 3884 if($clickNav.hasClass('empty')) { 3885 $clickTarget.blur(); 3886 return false; 3887 } 3888 3889 if($clickItem.hasClass('total')) { 3890 return false; 3891 } 3892 } 3893 3894 $clickItem.addClass('active').siblings().removeClass('active'); 3895 if(isSort) { 3896 var click_label = $clickTarget.text().trim(); 3897 $clickGToolbar.find('.cl-gsort-active').html(click_label); 3898 $clickNav.removeClass('open'); 3899 } 3900 3901 var pid = $clickBlock.attr('data-id'); 3902 var idx = $clickTarget.attr('data-idx'); 3903 var orderby = $clickGToolbar.find('.cl-gsort-item.active > a').attr('data-orderby') || 'recent'; 3904 var sfl = 'category'; 3905 var stx = $clickGToolbar.find('.cl-gcate-item.active > a').not('[data-idx="0"]').text() || ''; 3906 3907 if (pid == 'all_products') { 3908 sfl = 'orderby'; 3909 stx = $(this).attr('data-orderby'); 3910 orderby = stx; 3911 } 3912 3913 $('#el-empty').empty(); 3914 $('#el-empty').after('<div class="gallery-empty"></div>'); 3915 3916 setTimeout(function() { 3917 goToElement($clickBlock); 3918 }, 0); 3919 3920 var val = _this.galleryEL[pid]; 3921 var tag = htmlspecialchars_decode(val.eltag,'ENT_QUOTES'); 3922 var elsettings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 3923 var block_lang = ($(tag).attr('data-blocklang')) ? $(tag).attr('data-blocklang') : LANG; 3924 var checkGalleryListSample = false; 3925 var checkGalleryListEmpty = true; 3926 3927 $('#el-empty').append($(tag)); 3928 $('#el-empty').find('[data-loop="true"]').html(''); 3929 3930 var nodes = $(tag).find('[data-loop="true"]').children('.grid'); 3931 initGalleryField(nodes); 3932 3933 var g_number = $(tag).find("[data-loop='true']").data('gallery-no'); 3934 var view = $(tag).find('[data-loop="true"]').data('view'); 3935 var p = $('#el-empty').children(); 3936 var i = []; 3937 var total = 0; 3938 var display = 0; 3939 3940 var checkLoadmoreInLoop = ($(tag).find('[data-loop="true"] .loadmore-wrap').length) ? true : false; 3941 var glm = $(tag).find('.loadmore-wrap'); 3942 3943 if(typeof view == 'undefined') view = 10; 3944 var cookie_page = 1; 3945 var cookie_view = view; 3946 var cookie_gallery_category = (typeof stx != 'undefined') ? stx : ''; 3947 var is_gc_cookie = (typeof $.cookie('gallery-category-'+val.seq) != 'undefined' && $.cookie('gallery-category-'+val.seq).length > 0) ? true : false; 3948 var cookie_gallery_orderby = (typeof orderby != 'undefined')? orderby : 'recent'; 3949 3950 // $.cookie('gallery',val.seq, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3951 // $.cookie('loadmore-' + val.seq, cookie_page, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3952 $.cookie('gallery-page-' + val.seq, cookie_page, { path : '/', expires: 12 * 60 * 60 * 1000 }); 3953 $.cookie('gallery-category-' + val.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 3954 $.cookie('gallery-orderby-' + val.seq, cookie_gallery_orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 3955 $.removeCookie('loadmore-' + val.seq, { path : '/' }); 3956 $.removeCookie('gallery', { path : '/' }); 3957 3958 $('.galleryPL'+val.seq).find('[data-loop="true"]').empty(); 3959 3960 var checkGallerySVG = ($(tag).find('.gimg-svg-wrap').length > 0) ? true : false;
3961 var checkGFrameTitleOFF = (val.mode == 'gallery' && (typeof elsettings.gframe_title_visible != 'undefined' && elsettings.gframe_title_visible == 'OFF')) ? true : false; 3962 3963 var checkUseComment = checkUseCommentFunc(val.mode, val.eltag); 3964 var checkUseLike = checkUseLikeFunc(val.mode, val.eltag); 3965 3966 $.ajax({ 3967 url: '/template/gallery/list/pid/' + val.seq + '/sid/' + b.SID + '/spage/' + b.PAGE + '/view/' + cookie_view + '/publish/' + b.PUBLISH + param, 3968 data: { g_mode: val.mode, visible: true, sfl: sfl, stx: stx, orderby: cookie_gallery_orderby }, 3969 dataType: 'json', 3970 type: 'POST', 3971 async: false, 3972 cache: false, 3973 success: function (data) { 3974 $.each(data.list, function (idx, value) { 3975 i.push(value); 3976 }); 3977 3978 total = (typeof data.total.list_total != 'undefined') ? data.total.list_total : data.total; 3979 display = data.list.length; 3980 3981 if( total > 0 ) checkGalleryListEmpty = false; 3982 if( i.length>0 || (i.length==0 && is_gc_cookie) ) { 3983 var loop_count = nodes.length, item_index = 0; 3984 var elem = []; 3985 $.each(data.list,function(index,v) { 3986 loop_pos = index%loop_count; 3987 c = nodes[loop_pos]; 3988 var isTitle = (v.title.length > 0) ? true:false; 3989 3990 $(c).find('.non_text').removeClass('non_text'); 3991 if(val.mode != 'shopping') { 3992 if(v.title.length==0) $(c).find('.figure.title').removeClass('non_text').addClass('non_text'); 3993 if(v.caption.length==0) $(c).find('.figure.caption').removeClass('non_text').addClass('non_text'); 3994 } 3995 3996 v.title = (v.title.length>0) ? v.title : $.lang[block_lang]['editor.block.gallery.sample.title']; 3997 v.caption = (v.caption.length>0) ? v.caption : $.lang[block_lang]['editor.block.gallery.sample.caption']; 3998 3999 $(c).addClass('gallery-item').attr('data-index',index).attr('data-seq',v.seq); 4000 4001 var vgsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}, 4002 img_path = (typeof vgsettings['storage'] != 'undefined') ? vgsettings['storage'] : _this.b.RESOURCE + '/' + _this.b.SID + '/', 4003 img_original = (typeof vgsettings['storage'] != 'undefined') ? img_path + '1920/' : img_path; 4004 4005 var folder = (val.folder == 0) ? '' : val.folder + '/', 4006 src = getServeImage(v.image,val.folder,img_path), 4007 src_s0 = getServeImage(v.image,'0',img_path); 4008 if($(c).find('img').length > 0) $(c).find('img').attr('src',src); 4009 ensureGalleryResponsiveImageClass($(c)); 4010 if($(c).find('.g-img').length > 0) $(c).find('.g-img').css('background-image', 'url('+src+')'); 4011 if(checkGallerySVG) { 4012 var gimgSVG = $(c).find('.gimg-svg-wrap svg'); 4013 gimgSVG.find('pattern').attr('id','gimgSvg_'+val.elname+'_'+index); 4014 gimgSVG.find('image').attr('xlink:href', src); 4015 gimgSVG.find('polygon, path').attr('fill', 'url(#gimgSvg_'+val.elname+'_'+index+')'); 4016 } 4017 4018 var glink = (typeof vgsettings['glink'] != 'undefined' && vgsettings['glink']) ? vgsettings['glink'] : '', 4019 glink_target = (typeof vgsettings['glink_target'] != 'undefined' && vgsettings['glink_target']) ? vgsettings['glink_target'] : ''; 4020 4021 if(glink) { 4022 if(glink.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 4023 var bookmark_seq = glink.replace(/^\@/g,''); 4024 if(typeof _this.b.SETTINGS.blockBookmarkList == 'undefined' || typeof _this.b.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 4025 glink = ''; 4026 glink_target = ''; 4027 } 4028 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 4029 glink_target = ''; 4030 } else if($.inArray(glink.replace(/^\//g,'').replace(/ /g,'-'),_this.b.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 4031 } else { // link-type: link-out ==> a[attr-link] 4032 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 4033 } 4034 } 4035 4036 $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 4037 var gallery_page_chmod = elsettings && elsettings.gallery_page_chmod || null; 4038 var umgrade = property && property.UMGRADE ? (property.UMGRADE.seq || property.UMGRADE.grade_id || null) : null; 4039 if (typeof gallery_page_chmod === 'string') { 4040 try { gallery_page_chmod = JSON.parse(gallery_page_chmod); } 4041 catch (e) { gallery_page_chmod = gallery_page_chmod ? gallery_page_chmod.split(',') : []; } 4042 } 4043 gallery_page_chmod = $.isArray(gallery_page_chmod) ? $.map(gallery_page_chmod, function(v) { return String(v); }) : []; 4044 umgrade = (umgrade !== null && typeof umgrade != 'undefined') ? String(umgrade) : null; 4045 $(c).removeClass('noneShoppingGrade').removeAttr('data-shopping-grade-msg'); 4046 if (isShoppingGradePriceHidden(v) && property['SITEUM'] >= 1) { 4047 $(c).addClass('gallery-item').addClass('nonePrice'); 4048 $(c).find('a').attr('href', '#'); 4049 } else { 4050 if(isShoppingGradeBlocked(v, elsettings, property)) { 4051 $(c).addClass('gallery-item').addClass('noneShoppingGrade');
4052 $(c).attr('data-shopping-grade-msg', getShoppingGradeBlockedMessage(v)); 4053 $(c).find('a').attr('href', '#'); 4054 } else if(glink) { 4055 var glink_val = makeLinkUrl(glink, b.ONE, b.VIEW); 4056 $(c).find('a').attr('href',glink_val); 4057 4058 if(glink.match(/^\@/g)) { 4059 $(c).find('a').attr('attr-bookmark',glink.replace(/^\@/g,'')); 4060 } else if(glink.match(/^flink\@[0-9]/g) !== null) { 4061 $(c).find('a').attr('attr-flink',glink.replace(/^flink\@/g,'')); 4062 // IE ERROR_includes__H.20210603 4063 // } else if(_this.b.MENULIST.includes(glink.replace(/ /g,'-'))) { 4064 } else if($.inArray(glink.replace(/ /g,'-'),_this.b.MENULIST) > -1) { 4065 $(c).find('a').attr('data-user-link',glink_val); 4066 } else { 4067 $(c).find('a').attr('attr-link',glink); 4068 } 4069 } else { 4070 if (val.mode == 'gallery') { 4071 src_s0 = src_s0 + '?gpos='+v.pos; 4072 4073 $(c).find('a').attr('href', src_s0); 4074 $(c).find('a').attr('data-gallery', '#gframe-' + val.seq); 4075 } else { 4076 if(val.seq == 'all_products') { 4077 $(c).find('a').attr('href', v.product_url); 4078 } else { 4079 if(_this.b.LUX) $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/_product/' + v.seq); 4080 else $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/' + v.seq); 4081 4082 // $(c).find('a').attr('href', ((URI=='/') ? '' : URI) + '/' + b.PAGE + '/view/' + v.seq); 4083 } 4084 } 4085 } 4086 } 4087 4088 if(glink_target == '_blank') $(c).find('a').attr('target','_blank'); 4089 else $(c).find('a').removeAttr('target'); 4090 4091 if(checkGFrameTitleOFF || !isTitle) $(c).find('a').attr('data-title', ''); 4092 else $(c).find('a').attr('data-title', v.title); 4093 4094 // caption 4095 var ftitle = $(c).find('h5.figure'), 4096 fcaption = $(c).find('p.figure').not('.comment'), 4097 fdatetime = $(c).find('.figure.datetime'), 4098 fhashtag = $(c).find('.figure.hashtag'), 4099 fbrand = $(c).find('.figure.brand'), 4100 fprice = $(c).find('.figure.price'), 4101 freview = $(c).find('.figure.review'), 4102 fcomment = $(c).find('.figure.comment'), 4103 flike = $(c).find('.figure.like'), 4104 fbasket = $(c).find('.figure.basket'); 4105 4106 $(c).find('figcaption').removeClass('hide'); 4107 if (v.title || v.caption) { 4108 var gallery_caption = v.caption; 4109 gallery_caption = gallery_caption.replace(/\n/g,'<br />'); 4110 4111 ftitle.html(v.title); 4112 fcaption.html(gallery_caption); 4113 if(fdatetime.length > 0) fdatetime.text(v.datetime); 4114 if(fhashtag.length > 0) fhashtag.text(v.hashtag); 4115 } 4116 4117 if(g_number) { 4118 var g_index = String(index + 1), 4119 g_num = g_index.padStart(g_number, '0'); 4120 $(c).find('.figure.number').text(g_num); 4121 } 4122 4123 if(fbrand.length > 0) { 4124 var fbrand_name = (typeof v.brand_name != 'undefined' && v.brand_name) ? v.brand_name : ''; 4125 fbrand.html(v.brand_name); 4126 } 4127 4128 if(val.mode == 'shopping' || val.seq == 'all_products') { 4129 fcomment.addClass('hide'); 4130 flike.addClass('hide'); 4131 v.price = typeof v.price != 'undefined' ? parseFloat(v.price) : 0; 4132 v.sale = typeof v.sale != 'undefined' ? parseFloat(v.sale) : 0; 4133 var productGradeOnOff = getShoppingGradeProductGradeOnOff(v); 4134 $(c).attr('data-editor-grade-price-enabled', productGradeOnOff).attr('data-config-grade-price-enabled', productGradeOnOff); 4135 var checkPriceHidden = isShoppingGradePriceHidden(v), 4136 base_gallery_price = (v.price && !checkPriceHidden) ? v.price : 0, 4137 base_gallery_sale_price = (typeof v.sale != 'undefined' && v.sale > 0 && v.sale > v.price && !checkPriceHidden) ? v.sale : 0, 4138 gallery_price = base_gallery_price, 4139 gallery_sale_price = base_gallery_sale_price, 4140 gallery_sale_per = (typeof v.sale_per != 'undefined' && v.sale_per && !checkPriceHidden) ? v.sale_per+'%' : '', 4141 grade_price_display = elsettings.grade_price_display == 'ON', 4142 grade_discount_grade = getShoppingGradePreviewDiscountGrade(data.grade), 4143 grade_discount_applied = false, 4144 grade_gallery_price = 0, 4145 product_soldout = 'íì ',
4146 product_no_sale = (typeof elsettings.sh_soldout == 'string') ? elsettings.sh_soldout : '구매ë¶ê°', 4147 product_status = ''; 4148 if ( 4149 !checkPriceHidden && 4150 isShoppingGradeProductGradePriceEnabled(v) 4151 ) { 4152 grade_gallery_price = calcShoppingGradeDisplayPrice(base_gallery_price, grade_discount_grade); 4153 grade_discount_applied = grade_gallery_price !== null; 4154 } 4155 if(v.status == 'off' && !checkPriceHidden) { 4156 product_status = '<span class="cl-sh-soldout">' + product_no_sale + '</span>'; 4157 } else if(v.quantity_on == 'on' && v.quantity < 1 && !checkPriceHidden) { 4158 product_status = '<span class="cl-sh-soldout">' + product_soldout + '</span>'; 4159 } 4160 $(c).find('.cl-sh-soldout').remove(); 4161 if(product_status != '') $(c).attr('data-soldout',true); 4162 else $(c).removeAttr('data-soldout'); 4163 4164 $(c).find('.product-badge').remove(); 4165 product_status += drawBadgeList(v.use_badge, data.badge_settings); 4166 4167 $(c).find('.cl-sh-limit').remove(); 4168 if(v.status == 'lim') { 4169 if(v.sale_now == false) { 4170 var product_limit = '<p class="cl-sh-limit">ìí 구매 ê°ë¥ 기ê°ì´ ìëëë¤.</p>'; 4171 if(freview.length > 0) { 4172 freview.after(product_limit); 4173 } else { 4174 $(c).find('figcaption:not(.top) .figure:last-child').after(product_limit); 4175 } 4176 } 4177 } 4178 4179 // $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 4180 // if (typeof v.price_hidden != 'undefined' && v.price_hidden == 'ON' && property['SITEUM'] >= 1) { 4181 // console.log(222); 4182 // $(c).addClass('gallery-item').addClass('nonePrice'); 4183 // $(c).find('a').attr('href', '#'); 4184 // } else { 4185 // console.log(22222); 4186 // if(glink) { 4187 // var glink_val = makeLinkUrl(glink, b.ONE, b.VIEW); 4188 // $(c).find('a').attr('href',glink_val); 4189 4190 if($(c).find('ul.figure.price').length > 0) { 4191 // var price_off = (v.sale_price > 0 && v.sale_price > v.price) ? 100 - Math.floor((v.price / v.sale_price) * 100) : 0, 4192 // off_str = (price_off > 0) ? price_off + '% ' : '' 4193 var off_str = (v.sale_rate > 0) ? v.sale_rate + '% ' : ''; 4194 if(!_this.b.LUX) off_str = gallery_sale_per; 4195 if(!off_str && gallery_sale_price > 0 && gallery_price > 0 && gallery_price < gallery_sale_price) { 4196 var price_off = Math.round(((gallery_sale_price - gallery_price) / gallery_sale_price) * 100); 4197 off_str = (price_off > 0) ? price_off + '% ' : ''; 4198 } 4199 //Ver2 4200 if(!checkPriceHidden) { 4201 var $priceWrap = $(c).find('ul.figure.price'), 4202 $priceVal = $priceWrap.find('.price-val'), 4203 $priceSale = $priceWrap.find('.price-sale'), 4204 $priceSalePer = $priceWrap.find('.price-sale-per'); 4205 $priceWrap.find('.sp-price, .grade-discount-price').remove(); 4206 if($priceSale.length > 0 && $priceSalePer.length == 0) { 4207 $priceSale.after('<li class="price-sale-per hide"></li>'); 4208 $priceSalePer = $priceWrap.find('.price-sale-per'); 4209 } 4210 $priceWrap.css({display:'', flexDirection:'', alignItems:''}); 4211 $priceVal.css({order:'', display:''}); 4212 $priceSale.css({order:'', display:'', marginRight:''}); 4213 $priceSalePer.css({order:'', display:'', marginLeft:'', marginTop:''}); 4214 $priceVal.html('₩' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 4215 $priceVal.removeClass('hide'); 4216 4217 if(gallery_sale_price > 0 && gallery_price < gallery_sale_price) { 4218 $priceSale.html('₩' + gallery_sale_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 4219 $priceSalePer.html(off_str); 4220 $priceSale.removeClass('hide'); 4221 $priceSalePer.removeClass('hide'); 4222 if(!grade_discount_applied && _this.b.LUX && (v.hashtag).indexOf('í¹ê°ì¸ì¼') > -1 && $(c).find('ul.figure.price .sp-price').length == 0) { 4223 $(c).find('ul.figure.price .price-sale').after('<li class="sp-price">í¹ê°ì¸ì¼</li>'); 4224 } 4225 } else {
4226 $priceSale.addClass('hide').html(''); 4227 $priceSalePer.addClass('hide').html(''); 4228 4229 } 4230 4231 if(grade_price_display && grade_discount_applied) { 4232 $priceWrap.append('<li class="grade-discount-price"><span class="grade-discount-price-value">₩' + grade_gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + '</span><span class="grade-discount-price-label">ëì í ì¸ê°</span></li>'); 4233 } 4234 4235 $(c).find('ul.figure.price .price-unit-pricing').remove(); 4236 if(v.product_unit_str) { 4237 $(c).find('ul.figure.price').append(`<li class="price-unit-pricing">${v.product_unit_str}</li>`); // ë¨ìë¹ ê°ê²© 4238 } 4239 } else { 4240 $(c).find('ul.figure.price .price-val').html('₩0'); 4241 $(c).find('ul.figure.price .price-val').addClass('hide'); 4242 } 4243 if(val.seq == 'all_products' && checkPriceHidden) $(c).find('ul.figure.price').html(''); 4244 if(product_status) $(c).find('ul.figure.price').append('<li>'+product_status+'</li>'); 4245 4246 var badge_size = getBadgeSize(data.badge_settings); 4247 $(c).find('.cl-sh-soldout').removeClass('badge-small badge-medium badge-large'); 4248 $(c).find('.cl-sh-limit').removeClass('badge-small badge-medium badge-large'); 4249 if(badge_size) { 4250 $(c).find('.cl-sh-soldout').addClass(badge_size); 4251 $(c).find('.cl-sh-limit').addClass(badge_size); 4252 } 4253 } else { 4254 //Ver1 4255 if(fprice.length == 0) fprice = fcaption; 4256 4257 if(checkPriceHidden) fprice.html(''); 4258 else fprice.html('<span class="figure-krw">₩</span>' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + product_status); 4259 } 4260 4261 if($(c).find('ul.figure.review').length > 0) { 4262 var gallery_review = (v.review_onoff && v.review_cnt) ? v.review_cnt : 0; 4263 if(gallery_review > 0) { 4264 $(c).find('ul.figure.review, ul.figure.review li').removeClass('hide'); 4265 $(c).find('ul.figure.review .figure-review-cnt').html(gallery_review); 4266 $(c).find('ul.figure.review .figure-review-score').html(v.review_score); 4267 } else { 4268 $(c).find('ul.figure.review, ul.figure.review li').addClass('hide'); 4269 $(c).find('ul.figure.review .figure-review-cnt, ul.figure.review .figure-review-score').html(''); 4270 } 4271 } 4272 4273 if(fbasket.length > 0) { 4274 var checkOldBlock = ($(c).find('.figure.basket[data-oldver="true"]').length > 0) ? true : false, 4275 checkOldverBasket = (typeof elsettings.field_oldver != 'undefined' && elsettings.field_oldver && elsettings.field_oldver.indexOf('basket') > -1) ? true : false, 4276 checkDisabledBasket = (typeof elsettings.field_disable != 'undefined' && elsettings.field_disable && elsettings.field_disable.indexOf('basket') > -1) ? true : false; 4277 if(v.basket_off || v.shopping_grade_hidden == 'ON') fbasket.addClass('cannotby hide'); 4278 else if(val.seq == 'all_products') fbasket.removeClass('hide'); 4279 else if(checkDisabledBasket || (!checkDisabledBasket && checkOldBlock && !checkOldverBasket)) fbasket.addClass('hide'); 4280 else if(property.VALIDTYPE != 'SM') fbasket.addClass('hide'); 4281 else fbasket.removeClass('hide'); 4282 } 4283 4284 } else { 4285 fbrand.addClass('hide'); 4286 fprice.addClass('hide'); 4287 freview.addClass('hide'); 4288 fbasket.addClass('hide'); 4289 4290 if ( checkUseComment 4291 && elsettings.comment_display == 'ON' 4292 && !(elsettings.field_disable !== undefined && elsettings.field_disable.indexOf('comment') > -1) 4293 && fcomment.length > 0 4294 && (typeof v.comment_cnt != 'undefined' && v.comment_cnt > 0) 4295 ) { 4296 fcomment.removeClass('hide'); 4297 fcomment.find('.figure-comment-cnt').html(v.comment_cnt); 4298 } else { 4299 fcomment.addClass('hide'); 4300 fcomment.find('.figure-comment-cnt').empty(); 4301 } 4302 4303 if ( checkUseLike 4304 && (elsettings.like_display !== undefined && elsettings.like_display != 'N') 4305 && !(elsettings.field_disable !== undefined && elsettings.field_disable.indexOf('like') > -1) 4306 && flike.length > 0 4307 ) { 4308 flike.removeClass('hide').find('.figure-like-cnt').html(0); 4309 if(v.like !== undefined) { 4310 flike.find('.figure-like-cnt').html(v.like.cnt); 4311 if (v.like.own && v.like.cnt > 0) flike.attr('data-like', v.seq).addClass('active'); 4312 } 4313 } else { 4314 flike.addClass('hide'); 4315 } 4316 } 4317 4318 if(checkUseLike == false) flike.html(''); 4319 4320 if(val.mode == 'gallery') { 4321 if(index < cookie_view) { 4322 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 4323 } else { 4324 $(c).find('figure').remove(); 4325 $('.galleryPL'+val.seq).find('[data-loop="true"]').append($(c)[0].outerHTML); 4326 } 4327 if (total == 2) { 4328 $(c).find('figure').remove(); 4329 $('.gallery-empty').append($(c)[0].outerHTML); 4330 } 4331 } else { 4332 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 4333 } 4334 }); 4335 } else { 4336 if(idx == '0') { 4337 checkGalleryListSample = true; 4338 nodes.find('a') 4339 .addClass('emptyGalleryItem') 4340 .attr('href', '/config/page/' + b.PAGE + '/view/template') 4341 .removeAttr('data-gallery') 4342 .removeAttr('data-user-link') 4343 .removeAttr('attr-bookmark') 4344 .removeAttr('attr-flink') 4345 .removeAttr('attr-link') 4346 .find('img') 4347 .attr('data-index',0);
4348 $(p).find('[data-loop="true"]').append(nodes); 4349 } 4350 4351 $.cookie('gallery-category-'+val.seq,'',{ path: '/', expires: 12 * 60 * 60 * 1000 }); 4352 $.cookie('gallery-orderby-' + val.seq, '', { path: '/', expires: 12 * 60 * 60 * 1000 }); 4353 } 4354 if(checkLoadmoreInLoop) $(p).find('[data-loop="true"]').append(glm); 4355 tag = $(p)[0].outerHTML; 4356 4357 if (val.mode == 'gallery' && total == 2) { 4358 $.each($('.gallery-empty').find('.gallery-item'), function(i,v) { 4359 var gallerySeq = $(v).attr('data-seq'); 4360 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)); 4361 }); 4362 } 4363 4364 if (val.mode == 'gallery' && total) tag = appendGalleryFrame($(tag), val.seq, val.type, val.elsettings); 4365 $('#el-empty').empty(); 4366 $('.gallery-empty').remove(); 4367 } 4368 }); 4369 4370 var $tag = $(tag); 4371 var $galleryEL = $('.element[data-id="' + val.seq + '"]'); 4372 var g_settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 4373 4374 changeBrokenImages($tag); 4375 $.each($tag.find('[data-edit="true"]'), function() { 4376 var source = $(this).html(); 4377 source = source.replace(/< /g,'<').replace(/ >/g,'>'); 4378 $(this).html(source); 4379 }); 4380 4381 4382 if(total > 0) $galleryEL.find('[data-loop="true"]').replaceWith($tag.find('[data-loop="true"]')); 4383 else $galleryEL.find('[data-loop="true"]').empty(); 4384 if(checkGalleryListSample && total == 0) $gallery_items.find('.emptyGalleryItem').attr('data-gallery',''); 4385 showHideGalleryField($galleryEL, g_settings); 4386 reloadBlockMasonry('init',$galleryEL); 4387 4388 var $glmBtnWrap = $galleryEL.find('.loadmore-wrap'); 4389 var $glmBtn = $galleryEL.find('.loadmore-wrap .gallery-loadmore'); 4390 var checkLoadmore = (total > view && total > cookie_view && !checkGalleryListEmpty) ? true : false; 4391 var glm_lang = LANG; 4392 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(); 4393 else if(typeof block_lang != 'undefined' && $.inArray(block_lang, ['ko','en']) > -1) glm_lang = block_lang; 4394 var glm_txt = $.lang[glm_lang]['config.loadmore']; 4395 4396 if($glmBtnWrap.length == 0) { 4397 // gallery loadmore btn - default (ver1) 4398 if(checkLoadmore) { 4399 var glm_class = (val.feature=='masonry') ? 'gallery-loadmore masonry-layout' : 'gallery-loadmore', 4400 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>'; 4401 4402 if($galleryEL.find('.gallery-loadmore').length > 0) $galleryEL.find('.gallery-loadmore').replaceWith(glm_btn); 4403 else $galleryEL.append(glm_btn); 4404 } else $galleryEL.find('.gallery-loadmore').remove(); 4405 4406 } else { 4407 // gallery loadmore btn - custom (ver2) 4408 if(checkLoadmore) { 4409 if(val.feature=='masonry') $glmBtn.addClass('masonry-layout'); 4410 else $glmBtn.removeClass('masonry-layout'); 4411 $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); 4412 $glmBtn.find('.label').text(glm_txt); 4413 $glmBtn.find('.display .view').text(cookie_view); 4414 $glmBtn.find('.display .total').text(total); 4415 $glmBtnWrap.removeClass('hide').fadeIn(); 4416 } else { 4417 $glmBtnWrap.fadeOut().addClass('hide'); 4418 $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'); 4419 $glmBtn.find('.label').text(glm_txt); 4420 $glmBtn.find('.display .view').text('0'); 4421 $glmBtn.find('.display .total').text('0'); 4422 } 4423 } 4424 4425 if($galleryEL.has('input.gjs').length) setGalleryJS('change-loop',$galleryEL); 4426 4427 if($galleryEL.find('*[data-direffect="true"]').length > 0 ) { 4428 setTimeout(function() { 4429 $galleryEL.find('.grid').each(function() { 4430 $(this).hoverdir(); 4431 }); 4432 }, 400); 4433 } 4434 }); 4435 4436 $(':not(.review-sample-block) .review-sort-nav .toggle-dropdown').live({ 4437 click: function(e) { 4438 $(this).closest('.review-sort-nav').toggleClass('open'); 4439 } 4440 }); 4441 4442 $(':not(.review-sample-block) .review-sort-nav li a').live({ 4443 click: function() { 4444 if ($(this).closest('li').hasClass('active')) return; 4445 4446 var review_block_id = $(this).closest('.element').attr('data-id'); 4447 var idx = $(this).attr('data-idx'), 4448 orderby = $(this).attr('data-orderby'); 4449 $('.element[data-id="'+review_block_id+'"] .review-sort-nav li').removeClass('active'); 4450 $('.element[data-id="'+review_block_id+'"] .review-sort-nav li').eq(idx).addClass('active'); 4451 $('.element[data-id="'+review_block_id+'"] .review-sort-nav .active-sort').text($(this).text().trim()); 4452 $(this).closest('.review-sort-nav').removeClass('open'); 4453 4454 var val = _this.galleryEL[review_block_id]; 4455 var settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 4456 var gallery_data = (typeof settings.gallery_data != 'undefined' && settings.gallery_data) ? settings.gallery_data : {}; 4457 var cookie_review_orderby = (typeof orderby != 'undefined')? orderby : 'recent'; 4458 4459 $.cookie('review-orderby-' + review_block_id, cookie_review_orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 4460 $.reviewContents.init(review_block_id, gallery_data); 4461 } 4462 }); 4463 4464 $(':not(.review-sample-block) .review-data-loadmore').live({ 4465 click: function() { 4466 var review_block_id = $(this).attr('data-id'), 4467 page_num = (typeof $(this).attr('data-page') != 'undefined') ? Number($(this).attr('data-page')) : 1, 4468 view = (typeof $(this).attr('data-view') != 'undefined') ? Number($(this).attr('data-view')) : 6, 4469 $review_elLoadmore = $(this), 4470 $review_el = $('.element[data-id="' + review_block_id + '"]'), 4471 $rContainer = $review_el.find('.container'), 4472 $rLoop = $review_el.find('[data-loop="true"]'), 4473 $ro = $review_el.find('.review-sort-nav li.active a'), 4474 orderby = ($ro.length > 0) ? $ro.attr('data-orderby') : 'recent'; 4475 4476 var val = _this.galleryEL[review_block_id]; 4477 var settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}; 4478 var gallery_data = (typeof settings.gallery_data != 'undefined' && settings.gallery_data) ? settings.gallery_data : {}; 4479 // var cookie_review_orderby = (typeof orderby != 'undefined')? orderby : 'recent'; 4480 4481 $.cookie('review-orderby-' + review_block_id, orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 4482 $.reviewContents.update(review_block_id, gallery_data, orderby, page_num); 4483 } 4484 }); 4485 4486 // menu ver3 : fheader - #mobile-nav show/hide function 4487 $(document).on('click', 'ul li.siteSEARCH > a.psearch-btn, ul li.siteSEARCH .psearch-overlay.open, ul li.siteSEARCH .psearch-input', function(e) { 4488 e.preventDefault(); 4489 var taret_nav = $('.el-menu header'); 4490 if(window.innerWidth <= 768) taret_nav = $('#mobile-nav'); 4491 var check_psearch_area = (taret_nav.find('.psearch-wrap').is(e.target) || taret_nav.find('.psearch-wrap').has(e.target).length > 0) ? true : false;
4492 4493 if(!check_psearch_area) { 4494 taret_nav.find('.psearch-overlay').toggleClass('open'); 4495 setTimeout(function() { 4496 $.psearch.showSiteProjectSEARCH(false); 4497 taret_nav.find('.psearch-overlay').find('input.psearch-input').focus(); 4498 },300); 4499 } 4500 return false; 4501 }); 4502 $(document).on('click', '#fixed-menu li.siteCART > a[href="javascript:;"], #fixed-menu-sub li.siteCART > a[href="javascript:;"]', function(e) { 4503 e.preventDefault(); 4504 $(this).showModalFlat('INFORMATION',$.lang[LANG]['menu.cart.no-support.render'],true,false,'','ok'); 4505 return false; 4506 }); 4507 $(document).on('click', '.siteLANG ul a, .siteLANG-dmenu-wrap ul li a', function(e) { 4508 if(LANGLINK) return; 4509 e.preventDefault(); 4510 var sid = (typeof SID != 'undefined' && SID) ? SID : property.SID; 4511 var slang_code = $(this).attr('data-code'); 4512 var slang_str = $(this).text().trim(); 4513 4514 changeLanguage(slang_code); 4515 }); 4516 $(document).on('click', '#mobile-nav .login-content:not(.siteUM)', function(e) { 4517 e.preventDefault(); 4518 $('#mobile-nav #fixed-menu .siteUM a i').click(); 4519 return false; 4520 }); 4521 $(document).on('click', '#mobile-nav .nav li.menu-has-children > a[href="javascript:;"]', function(e) { 4522 e.preventDefault(); 4523 $(this).prev('.fa').click(); 4524 return false; 4525 }); 4526 $(document).on('click', '#mobile-nav ul li.menu-has-children i', function(e) { 4527 if($(this).closest('li.menu-has-children').hasClass('open')) { 4528 $(this).closest('li.menu-has-children').removeClass('open'); 4529 $(this).nextAll('ul').eq(0).slideToggle(200); 4530 // $(this).next().removeClass('menu-item-active'); 4531 $(this).toggleClass('fa-chevron-down fa-chevron-up'); 4532 } else { 4533 $(this).closest('li.menu-has-children').addClass('open').siblings('li.open').find('i').click(); 4534 $(this).nextAll('ul').eq(0).slideToggle(200); 4535 // $(this).next().toggleClass('menu-item-active'); 4536 $(this).toggleClass('fa-chevron-down fa-chevron-up'); 4537 } 4538 }); 4539 $(document).on('click', 'header.navbar-fheader .navbar-toggle', function(e) { 4540 if( window.innerWidth > 768 && 4541 $(this).closest('header').find('.cl-menu-option').length > 0 && 4542 $(this).closest('header').find('.cl-menu-option').is('[data-moption="ntoggle"],.nfullDrop') 4543 ) { 4544 e.preventDefault(); 4545 return false; 4546 } 4547 4548 if($('.dsgn-body').hasClass('mobile-nav-active')) { 4549 //close mobile menu 4550 $('header.navbar-fheader .navbar-toggle').css({'visibility':'visible'}); 4551 $('.dsgn-body').removeClass('mobile-nav-active'); 4552 $('#mobile-body-overly').removeClass('in'); 4553 $('#mobile-nav .siteLANG.cl-fixbtn').hide(); 4554 } else { 4555 //show mobile menu 4556 $('header.navbar-fheader .navbar-toggle').css({'visibility':'hidden'}); 4557 $('.dsgn-body').addClass('mobile-nav-active'); 4558 $('#mobile-body-overly').addClass('in'); 4559 $('#mobile-nav .siteLANG.cl-fixbtn').show(); 4560 } 4561 }); 4562 $(document).on('click', '#mobile-nav-toggle', function(e) { 4563 $('header.navbar-fheader .navbar-toggle').click(); 4564 }); 4565 4566 $('header.navbar-simple .navbar-toggle').live('click',function(e) { 4567 var check = $(this).hasClass('collapsed') ? false : true; 4568 if(check) { 4569 var p_t = $('.el-menu header').height() + 'px'; 4570 4571 $('.element').each(function(){ $(this).addClass('blur-filter'); }); 4572 $('.el-menu').addClass('blur-filter'); 4573 4574 if($('body').height() > ($('.el-menu').find('#tpl-menu').height() + 80)) $('.el-menu').find('#tpl-menu').addClass('center-position'); 4575 else $('.el-menu').find('#tpl-menu').removeClass('center-position'); 4576 4577 $('.dsgn-body').bind('touchmove'); 4578 $('#goto-top').removeClass('show'); 4579 } else { 4580 $('.element').each(function(){ $(this).removeClass('blur-filter'); }); 4581 $('.el-menu').removeClass('blur-filter'); 4582 $('.dsgn-body').unbind('touchmove'); 4583 $('#goto-top').addClass('show'); 4584 } 4585 }); 4586 4587 $('.element[data-type="gallery"]').live({ 4588 mouseenter : function() { 4589 $(this).find('[data-direffect="true"] .grid').each(function() { 4590 $(this).hoverdir(); 4591 }); 4592 } 4593 }); 4594 4595 $('.creatorlink-header .data-user > ul > li').live({ 4596 click : function() { 4597 $(this).closest('.pull-right').toggleClass('open'); 4598 if($(this).closest('.pull-right').hasClass('open')) { 4599 $('.popover').show(); 4600 } else { 4601 $('.popover').hide(); 4602 } 4603 } 4604 }); 4605 4606 /* [Input URL link] Click ==> link-type: link-out*/ 4607 $('a[href*=#][attr-link]').live({ 4608 click : function(e) { 4609 if($(this).is('[attr-link=""]') 4610 || $(this).is('[data-imglink="true"]') 4611 || (typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) 4612 ) { 4613 e.preventDefault(); 4614 return false;
4615 } 4616 4617 $.removeCookie('gallery', { path: '/' }); 4618 $.removeCookie('gallery-item', { path : '/' }); 4619 $.removeCookie('forum', { path : '/' }); 4620 $.removeCookie('forum-item', { path : '/' }); 4621 4622 if($(this).attr('target') != '_blank') { 4623 var link = $(this).attr('href').replace('#',''); 4624 if(link.length > 0 && link != '/') { 4625 var regex = /^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 4626 var regex2 = /^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 4627 var ismenulink = (b.MENULINK.indexOf(link) > -1) ? true : false; 4628 var isoutlink = (regex2.test(link) || regex.test(link)) ? true : false; 4629 if (ismenulink) { 4630 if ($('.dsgn-body').width() < 769) { 4631 setTimeout(function() { 4632 moveLinkPage(link); 4633 }, 250); 4634 } else { 4635 moveLinkPage(link); 4636 } 4637 } else if(!isoutlink && $('.' + link).length) { 4638 moveLinkPage(link, 1200, true); 4639 } 4640 4641 4642 if(b.MENULINK.indexOf(link) > -1) { 4643 if($('.dsgn-body').width() < 769) { 4644 setTimeout(function() { 4645 moveLinkPage(link); 4646 },250); 4647 } else { 4648 moveLinkPage(link); 4649 } 4650 } else if($('.' + link).length) { 4651 moveLinkPage(link,1200,true); 4652 } 4653 } 4654 } 4655 } 4656 4657 }); 4658 4659 /* [Menu link] Click ==> link-type: link-menu or link-inner*/ 4660 $('*[data-user-link]').live('click',function(e) { 4661 if( $.clnav.check() 4662 && $(this).parent().hasClass('cl-nav-item') 4663 && ($(this).closest('.clnav-nowrap-target').length > 0 || $(this).closest('.clnav-sidemobile').length > 0) 4664 ) { 4665 /* .cl-nav[data-behavior="overflow-nowrap"] */ 4666 if ($.clnav.d.isDrag) { 4667 e.preventDefault(); 4668 e.stopImmediatePropagation(); 4669 return false; 4670 } 4671 } 4672 4673 if( $(this).is('[data-user-link=""]') 4674 || (typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) 4675 ) { 4676 e.preventDefault(); 4677 return false; 4678 } 4679 4680 var $targetEle = $(this).closest('.element[data-el]'); 4681 var datatype = $targetEle.attr('data-type') ?? ''; 4682 var isimglink = $targetEle && $targetEle.length && $targetEle.hasClass('imglink'); 4683 var hasalink = $(this).hasClass('sha_link'); 4684 var isshlink = $(this).is('[data-shlink]'); 4685 4686 var userLink = ((datatype == 'showcase') && isimglink && isshlink) ? $(this).attr('data-shlink') : $(this).attr('href'); 4687 if (typeof userLink == 'undefined') return false; 4688 4689 var target = ''; 4690 if ((typeof $(this).attr('target') != 'undefined') 4691 || (typeof $(this).attr('data-blank') != 'undefined') 4692 ) { 4693 if ((datatype == 'showcase') && isimglink && isshlink) { 4694 target = $(this).attr('data-blank'); 4695 } else { 4696 target = $(this).attr('target'); 4697 } 4698 } 4699 4700 e.preventDefault(); 4701 $.removeCookie('gallery', { path: '/' }); 4702 $.removeCookie('gallery-item', { path: '/' }); 4703 $.removeCookie('forum', { path: '/' }); 4704 $.removeCookie('forum-item', { path: '/' }); 4705 4706 //latest block - table header click, set click table 4707 if(typeof $(this).attr('data-lt-header') != 'undefined') { 4708 var type = $(this).closest('.latest-table').attr('data-type'); 4709 var pid = $(this).closest('.latest-table').attr('data-pid'); 4710 var clickEL = (type == 'gallery') ? $('.gallery-item[data-seq="'+pid+'"]') : $('.element[data-id="' + pid + '"]'); 4711 var checkThisPage = (b.ONE && clickEL.length > 0) ? true : false; 4712 4713 if(checkThisPage) { 4714 if(type == 'forum') { 4715 scrollToBlock('.element[data-id="' + pid + '"]', 1000); 4716 return false; 4717 } else if(type == 'gallery') { 4718 moveGallery(pid); 4719 return false; 4720 } 4721 } else { 4722 $.cookie(type+'-item',pid, { path: '/' }); 4723 } 4724 } else { 4725 if (typeof $(this).attr('data-forum-type') !== 'undefined' && $(this).attr('data-forum-type') == 'qna') { 4726 var type = $(this).closest('.latest-table').attr('data-type'); 4727 var pid = $(this).closest('.latest-table').attr('data-pid'); 4728 var clickEL = $('.element[data-id="' + pid + '"]'); 4729 var checkThisPage = (b.ONE && clickEL.length > 0) ? true : false;
4730 var page_num = $(this).attr('data-page'); 4731 var row_id = $(this).closest('.latest-post-list-title').attr('data-id'); 4732 if (checkThisPage) { 4733 scrollToBlock('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="' + row_id + '"]', 1000); 4734 $('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="' + row_id + '"]').click(); 4735 // $.removeCookie('forum_content_view', { path: '/', expires: 12 * 60 * 60 * 1000 }); 4736 return false; 4737 } else { 4738 $.cookie(type + '-item', pid, { path: '/' }); 4739 $.cookie('forum_content_view', pid + '&' + row_id, { path: '/', expires: 12 * 60 * 60 * 1000 }); 4740 $.forum.setForumCookie(pid, page_num, '', '', ''); 4741 }; 4742 } 4743 } 4744 4745 //psearch - project item(pitem) click, set click parent 4746 if($(this).closest('.psearch-view').length > 0) { 4747 if(typeof $(this).attr('data-psearch-seq') != 'undefined') { 4748 $.cookie('gallery-item',$(this).attr('data-psearch-seq'), { path: '/' }); 4749 } else { 4750 $.cookie('gallery',$(this).attr('data-psearch-pid'), { path: '/' }); 4751 } 4752 4753 if(b.ONE && typeof $(this).attr('data-user-link') != 'undefined' && $(this).attr('data-user-link') == 'index') { 4754 location.replace('/'); 4755 return false; 4756 } 4757 } 4758 4759 if (b.ONE) { 4760 if (userLink.charAt(0) == '/') { 4761 var linkRegExp = /\/view\//gi; 4762 var linkMatch = userLink.match(linkRegExp); 4763 if (linkMatch && linkMatch[0]) { 4764 var url = ((b.URL == '/') ? '' : b.URL) + userLink; 4765 if (target == '_blank') { 4766 var openNewWindow = window.open('about:blank'); 4767 openNewWindow.location.href = url; 4768 } else { 4769 location.href = url; 4770 } 4771 return false; 4772 } 4773 4774 userLink = userLink.charAt(0).replace('/', '') + userLink.slice(1); 4775 if (b.VIEW || target == '_blank') { 4776 var url = ((b.URL == '/') ? '' : b.URL) + '#' + userLink; 4777 if (b.VIEW && target != '_blank') { 4778 // location.href = url; 4779 url = new getLocation(url); 4780 golink(_this,url); 4781 } else { 4782 var openNewWindow = window.open('about:blank'); 4783 openNewWindow.location.href = url; 4784 } 4785 } else { 4786 // if (b.ONE && b.MENULINK.indexOf(userLink) === -1) { 4787 // 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'); 4788 // return false; 4789 // } 4790 moveLinkPage(userLink); 4791 } 4792 } else { 4793 alert('Invalid URL'); 4794 return false; 4795 } 4796 } else { 4797 var url = ((b.URL == '/') ? '' : b.URL) + userLink; 4798 if (target == '_blank' || target == 'blank') { 4799 var openNewWindow = window.open('about:blank'); 4800 openNewWindow.location.href = url; 4801 } else { 4802 // location.href = url; 4803 url = new getLocation(url); 4804 golink(_this,url); 4805 } 4806 } 4807 }); 4808 4809 /* [Block Bookmark link] Click ==> link-type: link-bookmark*/ 4810 $('a[attr-bookmark],*[data-imglink="true"][attr-bookmark],.fr-custom-button[attr-bookmark],.fr-fic[attr-bookmark],[data-type="showcase"] .item[attr-bookmark]').live({ 4811 click : function(e) { 4812 e.preventDefault(); 4813 4814 var checkSidemobile = ($(this).closest('.clnav-sidemobile').length > 0) ? true : false; 4815 if(checkSidemobile) $.clnav.setMode('sidemobile-open',false); 4816 4817 if($.clnav.check() 4818 && ($(this).closest('.clnav-nowrap-target').length > 0 || $(this).closest('.clnav-sidemobile').length > 0) 4819 ) { 4820 /* .cl-nav[data-behavior="overflow-nowrap"] */ 4821 if ($.clnav.d.isDrag) { 4822 e.stopImmediatePropagation(); 4823 return false; 4824 } 4825 } 4826 4827 if( $(this).is('[attr-bookmark=""]') 4828 || (typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) 4829 ) { 4830 return false; 4831 } 4832 4833 var $aEle = $(this); 4834 var $targetEle = $(this).closest('.element[data-el]'); 4835 var datatype = $targetEle.attr('data-type') ?? ''; 4836 var isimglink = $targetEle && $targetEle.length && $targetEle.hasClass('imglink'); 4837 var hasalink = $(this).hasClass('sha_link'); 4838 var isshlink = $(this).is('[data-shlink]'); 4839 4840 var link = ((datatype == 'showcase') && isimglink && isshlink) ? $(this).attr('data-shlink').replace(/^\@/g, '') : $(this).attr('href').replace(/^\@/g, ''); 4841 if(typeof link == 'undefined') return false;
4842 4843 var target = ''; 4844 if ((typeof $(this).attr('target') != 'undefined') 4845 || (typeof $(this).attr('data-blank') != 'undefined') 4846 ) { 4847 if ((datatype == 'showcase') && isimglink && isshlink) { 4848 target = $(this).attr('data-blank'); 4849 } else { 4850 target = $(this).attr('target'); 4851 } 4852 } 4853 4854 $.removeCookie('gallery', { path: '/' }); 4855 $.removeCookie('gallery-item', { path : '/' }); 4856 $.removeCookie('forum', { path : '/' }); 4857 $.removeCookie('forum-item', { path : '/' }); 4858 4859 var blockBookmarkList = (typeof b.SETTINGS.blockBookmarkList != 'undefined' && b.SETTINGS.blockBookmarkList) ? b.SETTINGS.blockBookmarkList : {}; 4860 var hideArray = blockBookmarkList?.hide || []; 4861 if (hideArray.length > 0 && hideArray.includes(link)) { 4862 return false; 4863 } 4864 4865 if (typeof $(this).attr('attr-bookmark') != 'undefined' && (link != $(this).attr('attr-bookmark'))) link = $(this).attr('attr-bookmark'); 4866 if($('.element[data-bookmark="' + link + '"]').length > 0 && target != '_blank') { 4867 moveLinkPage(b.PAGE + '\@' + link, 1200, true); 4868 } else { 4869 if (typeof b.SETTINGS.blockBookmarkList == 'undefined' || !b.SETTINGS.blockBookmarkList || typeof b.SETTINGS.blockBookmarkList['bookmark' + link] == 'undefined') { 4870 $aEle.find('img[data-attach="true"]').unwrap(); 4871 return false; 4872 } 4873 4874 $.post('/template/bookmarkBlock', {sid: b.SID, seq: link, publish : b.PUBLISH}, function(data) { 4875 if(data.length == 0) { 4876 // console.log('Block Link Click :( Undefined block'); 4877 return false; 4878 } 4879 4880 var d = data[0]; 4881 if(typeof d.orgpage == 'undefined' || d.orgpage.length == 0) d.orgpage = d.page; 4882 4883 var org_title = d.orgpage.replace(/-/g,' '); 4884 var bb_o_page = (d.page.match(/^index/g) !== null ) ? org_title : d.page; 4885 var bb_page = (bb_o_page.match(/\,/g) !== null) ? bb_o_page.substring(0,d.page.indexOf('\,')) : bb_o_page; 4886 4887 var check_link = true; 4888 var is_visible_menu = false; 4889 $.each(b.SMENU, function (idx, obj) { 4890 if(bb_page == obj.name.replace(/ /g,'-')) { 4891 if(!obj.link) check_link = false; 4892 if(obj.display == 'on') is_visible_menu = false; 4893 } 4894 if(obj.children) { 4895 $.each(obj.children, function (i, v){ 4896 if(bb_page == v.name.replace(/ /g,'-')) { 4897 if(!v.link) check_link = false; 4898 if(v.display == 'on') is_visible_menu = false; 4899 } 4900 }); 4901 } 4902 }); 4903 4904 var is_here = ($('.element[data-bookmark="' + link + '"]').length > 0 ) ? true : false; 4905 var is_page = (b.PAGE.toLowerCase()==d.page.toLowerCase()) ? true : false; 4906 // var is_visible_menu = ($.inArray(bb_page,b.MENULINK)>-1) ? true : false; 4907 // 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; 4908 var is_link = ( check_link && is_visible_menu && org_title != 'INTRO' ) ? true : false; 4909 var is_visible = (check_link && is_visible_menu && org_title != 'INTRO') ? true : false; 4910 var clearBookmarkGalleryCategory = function() { 4911 if(typeof d.gpid == 'undefined' || !d.gpid) return; 4912 4913 $.cookie('gallery-category-' + d.gpid, '', { path : '/', expires: 12 * 60 * 60 * 1000 }); 4914 }; 4915 4916 if( ( !is_visible_menu && bb_page!='index' ) || 4917 ( typeof d.glivisible!='undefined' && d.glivisible ) || 4918 ( /*( (is_here && target=='_blank') || !is_page ) &&*/ ( is_link || is_visible ) ) || 4919 ( !is_here && is_page ) 4920 ) { 4921 if(is_visible_menu == false) { 4922 if(b.SID == 'chansolpf') clearBookmarkGalleryCategory(); 4923 moveBookmark(d.page, '\@' + link, 1200, target); 4924 } else { 4925 $aEle.find('img[data-attach="true"]').unwrap(); 4926 return false; 4927 } 4928 } else { 4929 if(b.SID == 'chansolpf') clearBookmarkGalleryCategory(); 4930 moveBookmark(d.page, '\@' + link, 1200, target); 4931 } 4932 4933 }, 'json'); 4934 } 4935 4936 } 4937 }); 4938 4939 $('[data-type="showcase"] .item[attr-link]').live('click',function(e) { 4940 var link = $(this).attr('href'); 4941 var target = $(this).attr('target'); 4942 var $targetEle = $(this).closest('.element[data-el]'); 4943 var datatype = $targetEle.attr('data-type') ?? ''; 4944 4945 if ((datatype == 'showcase') && $(e.target).closest('button, a').length > 0) { 4946 return; 4947 } 4948 4949 if (link) { 4950 if (target === '_blank') { 4951 window.open(link); 4952 } else { 4953 location.href = link; 4954 } 4955 } 4956 }); 4957 4958 /* [File link] Click ==> link-type: link-file*/ 4959 $('a[attr-flink], .fr-custom-button[attr-flink], .fr-fic[attr-flink]').live({ 4960 click : function(e) { 4961 e.preventDefault(); 4962 4963 if($.clnav.check() 4964 && ($(this).closest('.clnav-nowrap-target').length > 0 || $(this).closest('.clnav-sidemobile').length > 0) 4965 ) { 4966 /* .cl-nav[data-behavior="overflow-nowrap"] */ 4967 if ($.clnav.d.isDrag) { 4968 e.stopImmediatePropagation(); 4969 return false;
4970 } 4971 } 4972 4973 if( $(this).is('[attr-flink=""]') 4974 || (typeof e.target.className == 'string' && e.target.className.indexOf('fa') > -1 && $(this).closest('header').hasClass('navbar-simple')) 4975 || (!property.VALIDPLAN || property.VALIDTYPE == 'PK') 4976 ) { 4977 return false; 4978 } 4979 4980 var id = $(this).attr('attr-flink'); 4981 if(typeof id == 'undefined' || !id) { 4982 return false; 4983 } else { 4984 // direct download 4985 // var flink_url = location.protocol + '//' + location.host +'/down/flink/' + id; 4986 // window.open(flink_url); 4987 4988 // modal open 4989 $.getJSON('/down/flink/get/id/' + id , {}, function (data) { 4990 checkError(data); 4991 if(typeof data.data == 'object' && !$.isEmptyObject(data.data)) { 4992 var flink_link = data.data; 4993 var flinkDownModal = $(this).showModalFlat($.lang[LANG]['config.information'], $.lang[LANG]['editor.link.file.download.check'], true, true, function() { 4994 var flink_url = location.protocol + '//' + location.host +'/down/flink/' + id + '/sid/' + flink_link.sid + '/s/' + encodeURIComponent(flink_link.file) + '/name/' + encodeURIComponent(flink_link.name); 4995 window.open(flink_url); 4996 flinkDownModal.modal('hide'); 4997 }, 'cancel', 'ok'); 4998 } else { 4999 return false; 5000 } 5001 }, 'json'); 5002 } 5003 5004 } 5005 }); 5006 5007 $('.element img[data-attach="true"][data-img-original="ON"]').live({ 5008 click: function(e) { 5009 $(this).mouseenter(); 5010 }, 5011 mouseenter : function(e) { 5012 if(!selectEL || typeof selectEL == 'undefined') { 5013 selectEL = $(this).closest('.element').attr('data-el'); 5014 } 5015 if(typeof selectEL == 'undefined') return false; 5016 5017 var offset = $(this).offset(), 5018 left = $(this).width() + offset.left-25, 5019 top = offset.top; 5020 var index = $('.' + selectEL + ' img[data-attach="true"]').index(this); 5021 5022 if(b.VIEW) { 5023 var src = $(this).prop('src').split('/'), 5024 file = src[src.length-1]; 5025 if(src.indexOf('googleusercontent') > -1) { 5026 file = src; 5027 } 5028 $('.config-image-view').css({ top : top + 'px', left : left + 'px' }).attr('data-src',$(this).prop('src')).attr('data-index',index).show(); 5029 } 5030 }, 5031 mouseleave : function(e) { 5032 $('.config-image-view').hide(); 5033 } 5034 }); 5035 5036 $('.config-image-view').live({ 5037 mousemove : function(e) { $('.config-image-view').show(); }, 5038 mouseout : function(e) { $('.config-image-view').show(); } 5039 }); 5040 5041 $('.config-image-view').on({ 5042 click: function (e) { 5043 $('.config-image-view').hide(); 5044 5045 var src = $(this).attr('data-src').split('/'), 5046 file = src[src.length-1], 5047 free = (src[4]=='free') ? true : false; 5048 5049 var img_src = $(this).attr('data-src') 5050 if(img_src.indexOf('googleusercontent') > -1) { 5051 file = img_src; 5052 } 5053 file = Base64.encode(file); 5054 if(b.SID && file) { 5055 $('.tooltip.in').removeClass('in'); 5056 $(this).attr("href","/image/original/sid/" + b.SID + "/file/" + file + '/free/' + free); 5057 } else { 5058 // console.log('None:: sid or src'); 5059 return false; 5060 } 5061 } 5062 }); 5063 5064 $('[data-lock-password]').live({ 5065 'keydown.autocomplete': function(e) { 5066 if (e.keyCode == 13) { 5067 $('[data-lock-submit]').click(); 5068 } 5069 }, 5070 'keyup': function() { 5071 if ($(this).val()) { 5072 $('[data-lock-submit]').addClass('btn-primary'); 5073 } else { 5074 $('[data-lock-submit]').removeClass('btn-primary'); 5075 } 5076 } 5077 }); 5078 5079 $('.form-control[type="number"]').live('keydown', function(e) { 5080 if (e.keyCode == 109 || e.keyCode == 189) { 5081 return false; 5082 } 5083 }); 5084 5085 var getSubmitCaptchaLang = function($parent) { 5086 var blocklang = $parent.attr('data-blocklang') || $parent.data('blocklang') || LANG; 5087 if(typeof $.lang == 'undefined' || typeof $.lang[blocklang] == 'undefined') blocklang = LANG; 5088 return blocklang; 5089 } 5090 5091 var getSubmitCaptchaText = function(blocklang, key, fallback) { 5092 if(typeof $.lang != 'undefined' && typeof $.lang[blocklang] != 'undefined' && typeof $.lang[blocklang][key] != 'undefined') return $.lang[blocklang][key]; 5093 if(typeof $.lang != 'undefined' && typeof $.lang[LANG] != 'undefined' && typeof $.lang[LANG][key] != 'undefined') return $.lang[LANG][key]; 5094 return fallback; 5095 } 5096 5097 var isSubmitCaptchaUserLoggedIn = function() { 5098 var pageMode = (typeof PAGE_MODE != 'undefined') ? PAGE_MODE : '', 5099 umember = (pageMode == 'c') ? ((typeof UMEMBER != 'undefined') ? UMEMBER : {}) : ((typeof property != 'undefined' && typeof property.UMEMBER != 'undefined') ? property.UMEMBER : {}), 5100 umemberActivate = (pageMode == 'c') ? ((typeof UMEMBER_ACTIVATE != 'undefined') ? Number(UMEMBER_ACTIVATE) : 0) : ((typeof property != 'undefined' && typeof property.UMEMBER_ACTIVATE != 'undefined') ? Number(property.UMEMBER_ACTIVATE) : 0), 5101 checkLogin = (pageMode == 'c') ? true : !!umember.check_login; 5102 5103 if(pageMode == 's' && umemberActivate == 0 && umember.id_type == 'creatorlink') { 5104 checkLogin = (umember.id !== undefined && umember.id) ? true : false;
5105 } 5106 5107 return checkLogin; 5108 } 5109 5110 var isSubmitCaptchaRequired = function($parent) { 5111 if(isSubmitCaptchaUserLoggedIn()) return false; 5112 if($parent.attr('data-type') == 'form') return false; 5113 return ($parent.attr('data-captcha') == 'true'); 5114 } 5115 5116 var getInlineFormCaptcha = function($parent) { 5117 if($parent.attr('data-type') != 'form') return ''; 5118 if(isSubmitCaptchaUserLoggedIn()) return ''; 5119 return $.trim($parent.find('.form-captcha .input-captcha').val()); 5120 } 5121 5122 var getSubmitCaptchaHTML = function(blocklang) { 5123 var captchaTip = getSubmitCaptchaText(blocklang, 'form.item.captcha-tip', ''); 5124 5125 return '\ 5126 <div class="form-group form-captcha">\ 5127 <div class="kcaptcha-wrap display-flex">\ 5128 <div class="kcaptcha-box">\ 5129 <img src="//storage.googleapis.com/i.addblock.net/forum/captcha_sample_Img.jpg" class="kcaptcha-img" alt="' + captchaTip + '" title="' + captchaTip + '">\ 5130 </div>\ 5131 <div class="text-left kcaptcha-key-wrap">\ 5132 <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">\ 5133 <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>
5133' + getSubmitCaptchaText(blocklang, 'form.item.captcha-change', 'Refresh') + '</a>\ 5134 </div>\ 5135 </div>\ 5136 </div>\ 5137 '; 5138 } 5139 5140 var showSubmitCaptchaError = function($modal, blocklang, errorKey) { 5141 if(!$modal || $modal.length == 0) return; 5142 5143 var message = getSubmitCaptchaText(blocklang, errorKey, ''); 5144 if(!message) message = getSubmitCaptchaText(blocklang, 'form.item.captcha.wrong', 'Invalid CAPTCHA code.'); 5145 5146 $modal.find('.form-captcha .error').remove(); 5147 $modal.find('.form-captcha').append('<div class="error">' + message + '</div>').addClass('required'); 5148 $modal.find('.input-captcha').focus(); 5149 } 5150 5151 var reloadSubmitCaptcha = function($modal, pid) { 5152 if(!$modal || $modal.length == 0) return; 5153 $modal.find('.input-captcha').val(''); 5154 $modal.find('.form-captcha .error').remove(); 5155 $modal.find('.form-captcha').removeClass('required'); 5156 load_form_kcaptcha($modal, pid); 5157 } 5158 5159 var hideSubmitCaptchaModal = function($modal) { 5160 if(!$modal || $modal.length == 0) return; 5161 $modal.find('input:focus, textarea:focus, select:focus').blur(); 5162 $modal.modal('hide'); 5163 } 5164 5165 var showSubmitCaptchaModal = function($parent, pid, callback) { 5166 var blocklang = getSubmitCaptchaLang($parent); 5167 var modal = $(document.body).showModalFlat( 5168 getSubmitCaptchaText(blocklang, 'form.item.captcha.title', 'ë³´ì íì¸'), 5169 getSubmitCaptchaHTML(blocklang), 5170 true, 5171 true, 5172 function() { 5173 var captcha = $.trim(modal.find('.input-captcha').val()); 5174 if(captcha == '') { 5175 showSubmitCaptchaError(modal, blocklang, 'config.wrong-captcha'); 5176 return false; 5177 } 5178 5179 if(typeof callback == 'function') callback(captcha, modal, blocklang); 5180 }, 5181 'cancel', 5182 'ok', 5183 'cl-cmmodal cl-s-btn w560 cl-p70 cl-p0 form-captcha-submit-modal', 5184 true 5185 ); 5186 5187 reloadSubmitCaptcha(modal, pid); 5188 modal.find('.kcaptcha-change').off('click.submitCaptcha').on('click.submitCaptcha', function(e) { 5189 e.preventDefault(); 5190 reloadSubmitCaptcha(modal, pid); 5191 }); 5192 modal.find('.input-captcha').off('keydown.submitCaptcha').on('keydown.submitCaptcha', function(e) { 5193 if(e.keyCode == 13) { 5194 modal.find('.ok-button-dialog').click(); 5195 return false; 5196 } 5197 }).focus(); 5198 5199 return modal; 5200 } 5201 5202 $('[data-form-submit]').live('click', function() { 5203 var is_templates = checkTemplateSite(b.SID), 5204 is_render = (window.location.pathname.match(/^\/render(\/|$)/) !== null); 5205 if(is_render && !isRenderFormSubmitAllowed()) return false; 5206 if($('#flat-modal').length || is_templates) return false; 5207 if($('#flat-modal').length) return; 5208 var $parent = $(this).closest('.element'), 5209 $items = $parent.find('[form-idx]'), 5210 values = {}, 5211 pid = $parent.attr('data-id'), 5212 submit = true, 5213 el = '.' + $(this).parents('.element').attr('data-name'); 5214 5215 if($parent.find('.required').length > 0) { 5216 $parent.find('.form-inline').removeClass('required required-mr required-privacy'); 5217 $parent.find('.form-group').removeClass('required'); 5218 } 5219 5220 $parent.find('.error').remove(); 5221 $.each($items, function(i,v) { 5222 var idx = $(this).attr('form-idx'), 5223 name = $(this).attr('form-name'), 5224 type = $(this).attr('form-type'), 5225 require = $(this).attr('form-require'), 5226 seq = $(this).attr('form-seq'); 5227 5228 switch(type) { 5229 case "radio": 5230 case "check": 5231 case "radio.image": 5232 case "check.image": 5233 if(type == 'radio' || type == 'radio.image') { 5234 var val = $(this).find(':radio[name]:checked').val(); 5235 values[seq] = (typeof val == 'undefined') ? '' : val; 5236 } else { 5237 values[seq] = $(this).find(':checkbox[name]:checked').map(function() { return this.value; } ).get().join(); 5238 } 5239 5240 if(typeof require != 'undefined' && require) { 5241 if(!values[seq]) { 5242 formRequireDisplay($(this),i+1); 5243 submit = false; 5244 } 5245 } 5246 break; 5247 case "date": 5248 var date = $(this).find('input').map(function() { return this.value.replace(/-/g, ''); } ).get(), 5249 valid = true; 5250 5251 $.each(date, function(k,d) { 5252 if(d=='') valid = false; 5253 }); 5254 5255 if(typeof require != 'undefined' && require) { 5256 if(valid == false) { 5257 formRequireDisplay($(this),i+1); 5258 submit = false;
5259 } 5260 } 5261 values[seq] = date.join(''); 5262 break; 5263 case "date2": 5264 var date = $(v).find('input').val(); 5265 if($(v).find('input').length > 1 && $(v).find('.date-yyyy').length > 0) { //old 5266 var ymd = $(v).find('.date-yyyy').val() + '-' + $(v).find('.date-mm').val() + '-' + $(v).find('.date-dd').val(); 5267 var time = $(v).find('.date-hh').val() + ':' + $(v).find('.date-ii').val(); 5268 date = ymd + ' ' + time; 5269 } 5270 values[seq] = date; 5271 if(typeof require != 'undefined' && require) { 5272 if(!values[seq]) { 5273 formRequireDisplay($(this),i+1); 5274 submit = false; 5275 } 5276 } 5277 5278 break; 5279 case "file.upload": 5280 var fileArr = new Array(); 5281 $(this).find('input[type="hidden"]').each(function(idx, v) { 5282 var f = '#FILE#||' + $(v).val(); 5283 fileArr.push(f); 5284 }); 5285 5286 var val = fileArr.join(','); 5287 values[seq] = (typeof val == 'undefined') ? '' : val; 5288 5289 if(typeof require != 'undefined' && require) { 5290 if(!values[seq].replace('#FILE#||', '')) { 5291 formRequireDisplay($(this),i+1); 5292 submit = false; 5293 } 5294 } 5295 break; 5296 default : 5297 var itemValue = $(this).hasClass('franchise-form-select') ? $(this).find('select.franchise-form-select-native').val() : $(this).val(); 5298 values[seq] = (typeof itemValue == 'undefined' || itemValue === null) ? '' : itemValue.toString().trim(); 5299 if(values[seq] && checkEmojis(values[seq])) { 5300 formRequireDisplay($(this),i+1,'emoji'); 5301 submit = false; 5302 } else if(typeof require != 'undefined' && require) { 5303 if(!values[seq]) { 5304 formRequireDisplay($(this),i+1); 5305 submit = false; 5306 } 5307 } 5308 break; 5309 } 5310 }); 5311 5312 var $privacy = $parent.find('.form-privacy'), 5313 check; 5314 5315 if($privacy.css('display')!='none') { 5316 check = $privacy.find('.check-privacy').prop('checked'); 5317 if(check === false) { 5318 formRequireDisplay($privacy.find('.check-privacy'),'privacy'); 5319 submit = false; 5320 } 5321 } 5322 5323 if($parent.attr('data-type') == 'form') { 5324 var $captcha = $parent.find('.form-captcha'); 5325 var formCaptcha = ''; 5326 5327 if($captcha.length > 0) { 5328 formCaptcha = $captcha.find('.input-captcha').val(); 5329 if(formCaptcha == '') { 5330 formRequireDisplay($captcha.find('.input-captcha'),'captcha'); 5331 submit = false; 5332 } 5333 } 5334 } else { 5335 var captcha_display = isSubmitCaptchaRequired($parent); 5336 $parent.find('.form-captcha').remove(); 5337 } 5338 5339 if(!$parent.hasClass('el-fixedcontact') && $('.form-inline .error').length > 0) { 5340 var $error = $parent.find('.error'); 5341 var header_height = $('.navbar-fheader').height(); 5342 $.each($error, function(i,v) { 5343 if(i==0) { 5344 var $form_group = $(v).parent().find('[form-type]'); 5345 var type = $form_group.attr('form-type'); 5346 var privacy = $(v).parent().hasClass('form-privacy'); 5347 if($.inArray(type, ['radio', 'check', 'radio.image', 'check.image']) > -1 || privacy) { 5348 var form_offset = $(v).parents('.form-group').offset(); 5349 $("html, body").animate({scrollTop: ($parent.attr('data-type') == 'form')? form_offset.top-header_height : $parent.offset().top-header_height}); 5350 } else { 5351 $(v).parent().find('.form-control').first().focus(); 5352 } 5353 } 5354 }); 5355 } 5356 5357 if(submit) { 5358 var completeSubmitForm = function(doneText) { 5359 var message = doneText; 5360 if(!message) message = $parent.attr('data-form-done'); 5361 if(!message && typeof $.lang != 'undefined' && typeof LANG != 'undefined' && $.lang[LANG]) { 5362 message = $.lang[LANG]['forms.submit.done']; 5363 } 5364 if(!message) message = (typeof LANG != 'undefined' && LANG == 'ko') ? 'ì ì² ìë£ëììµëë¤.' : 'Your submission has been received'; 5365 5366 $(this).showModalFlat('INFORMATION', message, true, false, '', 'ok', '', 'cl-modal cl-none-title cl-cmmodal cl-p130 cl-s-btn w560','','',function(){ 5367 if(typeof formCallback == 'function') formCallback(pid); 5368 }); 5369 5370 setDefaultForm(el); 5371 }; 5372 var submitForm = function(formCaptcha, captchaModal, captchaBlocklang) { 5373 $.processON(); 5374 $.ajax({ 5375 url: '/template/forms/submit', 5376 data: { sid : b.SID, pid : pid, values : values, check : check, captcha : formCaptcha, block_type: 'form' }, 5377 dataType: 'json', 5378 type: 'POST', 5379 async: true, 5380 cache: false, 5381 success: function (data) { 5382 checkError(data); 5383 5384 if(typeof data.error != 'undefined' && data.error != '') { 5385 // $(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() { 5386 // $(document).on('keydown', function(e) { 5387 // if(e.keyCode == 27) modal.modal('hide'); 5388 // }); 5389 // }); 5390 return false;
5391 } 5392 5393 if(typeof data.captcha_error != 'undefined' && data.captcha_error != '') { 5394 if(captchaModal && captchaModal.length > 0) { 5395 reloadSubmitCaptcha(captchaModal, pid); 5396 showSubmitCaptchaError(captchaModal, captchaBlocklang, data.captcha_error); 5397 } else if($parent.attr('data-type') == 'form' && $parent.find('.form-captcha').length > 0) { 5398 reloadSubmitCaptcha($parent, pid); 5399 showSubmitCaptchaError($parent, getSubmitCaptchaLang($parent), data.captcha_error); 5400 } else { 5401 alert($.lang[LANG][data.captcha_error]); 5402 } 5403 return false; 5404 } 5405 5406 if(captchaModal && captchaModal.length > 0) hideSubmitCaptchaModal(captchaModal); 5407 completeSubmitForm.call(this, data.done); 5408 }, 5409 error: function(xhr) { 5410 // DB ì ì¥ í ì림 ë°ì¡ ì§ì°ì¼ë¡ 502ê° ë°íëë ê²½ì° ì ì¶ ìë£ ìíë¡ ì²ë¦¬íë¤. 5411 if(xhr && xhr.status == 502) { 5412 if(captchaModal && captchaModal.length > 0) hideSubmitCaptchaModal(captchaModal); 5413 completeSubmitForm.call(this); 5414 } 5415 }, 5416 complete: function() { 5417 $.processOFF(); 5418 } 5419 },'json'); 5420 }; 5421 5422 if(captcha_display) { 5423 showSubmitCaptchaModal($parent, pid, function(captcha, captchaModal, captchaBlocklang) { 5424 submitForm(captcha, captchaModal, captchaBlocklang); 5425 }); 5426 } else { 5427 submitForm(getInlineFormCaptcha($parent), null, getSubmitCaptchaLang($parent)); 5428 } 5429 } 5430 }); 5431 5432 var formRequireDisplay = function($obj,idx,error_type) { 5433 if(typeof error_type == 'undefined') error_type = ''; 5434 5435 var isModoo = $obj.parents('.element').hasClass('modoo'); 5436 5437 var blang = $obj.parents('.element').attr('data-lang'), 5438 sdefault = ''; 5439 5440 var $el = $obj.parents('.element'); 5441 5442 if(typeof property.SLANG.select != 'undefined') { 5443 var _lang = property.SLANG.select; 5444 if(_lang.indexOf('íêµì´') > -1) { 5445 sdefault = 'íì ì ë ¥ ì¬í'; 5446 } else if(_lang.indexOf('English') > -1) { 5447 sdefault = 'Required'; 5448 } else if(_lang.indexOf('æ¥æ¬èª') > -1) { 5449 sdefault = 'å¿ é '; 5450 } else { 5451 sdefault = 'Required'; 5452 } 5453 } else sdefault = 'íì ì ë ¥ ì¬í'; 5454 5455 5456 if(error_type == 'emoji') { 5457 sdefault = $.lang[LANG]['config.unable.emoji']; 5458 } 5459 5460 var $parent = (isModoo) ? $obj.parents('.box') : $obj.parents('.form-group'), 5461 $html = $('<div class="error">' + sdefault + '</div>'); 5462 $parent.append($html); 5463 if($obj.parents('.form-inline').find('.error').length==1) { 5464 if(isNumber(idx)) $('body').scrollTo($('[form-idx="' + idx + '"]'), 0, { offset : -150 } ); 5465 else $('body').scrollTo($parent, 0, { offset : -150 } ); 5466 } 5467 if($el.attr('data-type') == 'contact' && $el.attr('data-type2') == 'franchise bar') { 5468 $parent.addClass('required'); 5469 $el.find('.form-inline').addClass('required'); 5470 5471 if($parent.hasClass('form-privacy')) { 5472 $el.find('.form-inline').addClass('required-privacy'); 5473 } else { 5474 if(idx > 2) { 5475 $el.find('.form-inline').addClass('required-mr'); 5476 } 5477 } 5478 } 5479 } 5480 5481 $('.date-yyyy').live('keyup', function(e) { 5482 var val = $(this).val(); 5483 if(val.length>=4) { 5484 if((e.target.selectionStart).length) ; 5485 else { 5486 if(isNaN(parseInt(val))) { 5487 $(this).val('1900'); 5488 } 5489 $(this).parents('.form-group').find('.date-mm').focus(); 5490 } 5491 } 5492 }).live('blur', function(e) { 5493 var val = $(this).val(); 5494 if(isNaN(parseInt(val))) { 5495 $(this).val('1900'); 5496 } else { 5497 if(parseInt(val)<1900) { 5498 $(this).val('1900'); 5499 } 5500 } 5501 }); 5502 5503 $('.date-mm, .date-dd, .date-hh, .date-ii').live('keyup', function(e) { 5504 var val = $(this).val(); 5505 if(val.length>=2) { 5506 if((e.target.selectionStart).length) ; 5507 else { 5508 if(isNaN(parseInt(val))) { 5509 $(this).val('00'); 5510 } 5511 if($(this).hasClass('date-mm')) { 5512 $(this).parents('.form-group').find('.date-dd').focus(); 5513 } else if($(this).hasClass('date-dd')) { 5514 $(this).parents('.form-group').find('.date-hh').focus(); 5515 } else if($(this).hasClass('date-hh')) { 5516 $(this).parents('.form-group').find('.date-ii').focus(); 5517 } else if($(this).hasClass('date-ii')) { 5518 // $(this).parents('.form-group').next().find('input').focus(); 5519 } 5520 } 5521 } 5522 }).live('blur', function(e) { 5523 var val = $(this).val(); 5524 if(isNaN(parseInt(val))) { 5525 $(this).val('01'); 5526 } else { 5527 if(val.length==1) { 5528 $(this).val('0' + val); 5529 } else { 5530 if($(this).hasClass('date-mm') && parseInt(val)>12) { 5531 $(this).val('12'); 5532 } else if($(this).hasClass('date-dd') && parseInt(val)>31) { 5533 $(this).val('31'); 5534 } else if($(this).hasClass('date-hh') && parseInt(val)>23) { 5535 $(this).val('00'); 5536 } else if($(this).hasClass('date-ii') && parseInt(val)>59) { 5537 $(this).val('00'); 5538 } 5539 } 5540 } 5541 }); 5542 5543 $('[data-lock-submit]').live('click', function() { 5544 var el = $(this).closest('.form-inline'); 5545 var pw = el.find('[data-lock-password]').val().trim(); 5546 if(pw.length == 0 ) { 5547 el.find('[data-lock-password]').focus(); 5548 el.find('.error-text').text('! ' + $.lang[LANG]['config.enter-password']); 5549 return false;
5550 } 5551 5552 $.modalON(); 5553 let lockType = $(this).attr('data-lock'); 5554 var url = (lockType == 'site')? '/template/siteLockController/type/pw_check':'/template/menuLockController/type/pw_check'; 5555 $.post(url, {s: b.SMENU, sid: b.SID, page: b.PAGE, pw: pw, publish : b.PUBLISH}, function(data) { 5556 checkError(data); 5557 $.modalOFF(); 5558 if(data.result) { 5559 if(lockType == 'site' && data.ss_site_lock) { 5560 localStorage.setItem('ss_' + b.SID + '_site_lock', data.ss_site_lock); 5561 localStorage.setItem('last_activity', data.last_activity); 5562 } 5563 window.location.reload(true); 5564 } else { 5565 el.find('[data-lock-password]').focus(); 5566 el.find('.error-text').text('! ' + $.lang[LANG]['siteum.regexp.pw.invalid']); 5567 } 5568 }, 'json'); 5569 }); 5570 5571 $('[data-contact-submit]').live('click',function(e) { 5572 var is_templates = checkTemplateSite(b.SID), 5573 is_render = (window.location.pathname.match(/^\/render(\/|$)/) !== null); 5574 if(is_render && !isRenderFormSubmitAllowed()) return false; 5575 // if($('#flat-modal').length || window.location != window.parent.location) return; 5576 5577 //í í릿 ì¶ê° íë©´ììë§ ë²í¼ ëì ì ëê²ë ì²ë¦¬ 5578 if($('#flat-modal').length || is_templates) return; 5579 5580 $.modalON(); 5581 5582 var el = '.' + $(this).parents('.element').attr('data-name'), 5583 el_id = $(this).parents('.element').attr('data-id'), 5584 google_track = $(this).attr('data-google-track'), 5585 google_track_run = false, 5586 daum_track = $(this).attr('data-daum-track'), 5587 daum_track_run = false, 5588 naver_track = $(this).attr('data-naver-track'), 5589 naver_track_run = false; 5590 5591 var hasEmoji = false; 5592 $(el+' .form-group .form-control:not([readonly])').each(function() { 5593 if(checkEmojis($(this).val().trim())) { 5594 hasEmoji = true; 5595 return false; 5596 } 5597 }); 5598 5599 if(hasEmoji) { 5600 e.preventDefault(); 5601 $.modalOFF(); 5602 errorEmojisModal(); 5603 return false; 5604 } 5605 5606 google_track_run = (typeof google_track != 'undefined') ? true : false; 5607 daum_track_run = (typeof daum_track != 'undefined') ? true : false; 5608 naver_track_run = (typeof naver_track != 'undefined') ? true : false; 5609 5610 if($(el).length==0 || $(el).length>1) { 5611 alert('Invalid form data'); 5612 return false; 5613 } 5614 5615 5616 var firstname = ($(el + ' [data-contact-firstname]').length >0 ) ? setDefaultValue($(el + ' [data-contact-firstname]').val().trim()) : '', 5617 lastname = ($(el + ' [data-contact-lastname]').length > 0) ? setDefaultValue($(el + ' [data-contact-lastname]').val().trim()) : '', 5618 email = ($(el + ' [data-contact-email]').length > 0) ? setDefaultValue($(el + ' [data-contact-email]').val().trim()) : '', 5619 web = ($(el + ' [data-contact-website]').length > 0) ? setDefaultValue($(el + ' [data-contact-website]').val().trim()) : '', 5620 phone = ($(el + ' [data-contact-phone]').length > 0) ? setDefaultValue($(el + ' [data-contact-phone]').val().trim()) : '' , 5621 subject = ($(el + ' [data-contact-subject]').length > 0) ? setDefaultValue($(el + ' [data-contact-subject]').val().trim()) : '', 5622 message = ($(el + ' [data-contact-message]').length > 0) ? setDefaultValue($(el + ' [data-contact-message]').val().trim()) : '', 5623 etc = {}; 5624 $(el + ' [data-contact-etc]').each(function(i) { 5625 var key = $(this).attr('data-contact-etc'); 5626 etc[key] = setDefaultValueEtc($(this).attr('type'),$(this)); 5627 }); 5628 5629 var require_firstname = $(el + ' [data-contact-firstname]').attr('data-required'), 5630 require_lastname = $(el + ' [data-contact-lastname]').attr('data-required'), 5631 require_email = $(el + ' [data-contact-email]').attr('data-required'), 5632 require_web = $(el + ' [data-contact-website]').attr('data-required'), 5633 require_phone = $(el + ' [data-contact-phone]').attr('data-required'), 5634 require_subject = $(el + ' [data-contact-subject]').attr('data-required'); 5635 5636 /*default:: required[email,message] | optional[firstname,lastname,web,phone,subject] // data-optional='true'->optional, 'false'->required */ 5637 var optional_firstname = $(el + ' [data-contact-firstname]').attr('data-optional'), 5638 optional_lastname = $(el + ' [data-contact-lastname]').attr('data-optional'), 5639 optional_email = $(el + ' [data-contact-email]').attr('data-optional'), 5640 optional_web = $(el + ' [data-contact-web]').attr('data-optional'), 5641 optional_phone = $(el + ' [data-contact-phone]').attr('data-optional'), 5642 optional_subject = $(el + ' [data-contact-subject]').attr('data-optional'), 5643 optional_message = $(el + ' [data-contact-message]').attr('data-optional'); 5644 var optional_etc = {}; 5645 5646 $(el + ' [data-contact-etc]').each(function(i) { 5647 var key = $(this).attr('data-contact-etc'); 5648 optional_etc[key] = $(this).attr('data-optional'); 5649 }); 5650 5651 var $parent = $(this).parents('.element'), 5652 el = '.' + $(this).parents('.element').attr('data-name'), 5653 contprivacy = $(el+' .form-group.contact-privacy-area').css('display'), 5654 contprivacy_display = (typeof contprivacy == 'undefined' || contprivacy == 'none') ? false : true, 5655 privacy_check = $parent.find('.contact-checkbox-text'), 5656 privacy_chk = privacy_check.is(":checked"), 5657 captcha_display = isSubmitCaptchaRequired($parent), 5658 check = true, 5659 check_option = []; 5660 5661 $parent.find('.form-captcha').remove(); 5662 5663 if(!firstname) { 5664 var name_text = ($(el + ' [data-contact-lastname]').length > 0) ? 'first name' : 'name'; 5665 if(typeof optional_firstname != 'undefined' && optional_firstname == 'false') check = true; 5666 else if ($(el + ' [data-contact-firstname]').length == 0) check
5666= true; 5667 else check = false; 5668 5669 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; 5670 if(!check) check_option.push(str); 5671 } 5672 5673 if($(el + ' [data-contact-lastname]').length > 0 && !lastname) { 5674 if(typeof optional_lastname != 'undefined' && optional_lastname == 'false') check = true; 5675 else if ($(el + ' [data-contact-lastname]').length == 0) check = true; 5676 else check = false; 5677 5678 var str = ($(el + ' [data-contact-lastname]').attr('data-contact-lastname').length > 0) ? $(el + ' [data-contact-lastname]').attr('data-contact-lastname') : 'last name'; 5679 if(!check) check_option.push(str); 5680 } 5681 5682 /*if((!firstname && typeof optional_firstname != 'undefined' && optional_firstname == "false") || (!lastname && typeof optional_lastname != 'undefined' && optional_lastname == "false")) { 5683 var str = ($(el + ' [data-contact-firstname]').attr('data-contact-firstname').length > 0) ? $(el + ' [data-contact-firstname]').attr('data-contact-firstname') : 'name'; 5684 check_option.push(str); 5685 }*/ 5686 5687 if(!web && typeof optional_web != 'undefined' && optional_web == 'false') { 5688 var str = ($(el + ' [data-contact-web]').attr('data-contact-web').length > 0) ? $(el + ' [data-contact-web]').attr('data-contact-web') : 'web'; 5689 check_option.push(str); 5690 } 5691 5692 if(!phone && typeof optional_phone != 'undefined' && optional_phone == 'false') { 5693 var str = ($(el + ' [data-contact-phone]').attr('data-contact-phone').length > 0) ? $(el + ' [data-contact-phone]').attr('data-contact-phone') : 'phone'; 5694 check_option.push(str); 5695 } 5696 5697 if(!subject && typeof optional_subject != 'undefined' && optional_subject == 'false') { 5698 var str = ($(el + ' [data-contact-subject]').attr('data-contact-subject').length > 0) ? $(el + ' [data-contact-subject]').attr('data-contact-subject') : 'subject'; 5699 check_option.push(str); 5700 } 5701 5702 if(!email) { 5703 if(typeof optional_email != 'undefined' && optional_email == 'true') check = true; 5704 else if ($(el + ' [data-contact-email]').length == 0) check = true; 5705 else check = false; 5706 5707 var str = ($(el + ' [data-contact-email]').attr('data-contact-email').length > 0) ? $(el + ' [data-contact-email]').attr('data-contact-email') : 'email'; 5708 if(!check) check_option.push(str); 5709 } 5710 if(!message) { 5711 if(typeof optional_message != 'undefined' && optional_message == 'true') check = true; 5712 else check = false; 5713 5714 var str = ($(el + ' [data-contact-message]').attr('data-contact-message').length > 0) ? $(el + ' [data-contact-message]').attr('data-contact-message') : 'message'; 5715 if(!check) check_option.push(str); 5716 } 5717 5718 $.each(etc,function(k,v){ 5719 if(!etc[k] && typeof optional_etc[k] != 'undefined' & optional_etc[k] == 'false') { 5720 check_option.push(k); 5721 } 5722 }); 5723 5724 check = ((check_option.length == 0) && ((contprivacy_display == false) || (privacy_chk == true))) ? true : false; 5725 5726 if(require_firstname == 'true' && !firstname) { 5727 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-firstname]').attr('placeholder') + $.lang[LANG]['check.required'], true, false, '', 'ok'); 5728 return false; 5729 } 5730 5731 if(require_lastname == 'true' && !lastname) { 5732 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-lastname]').attr('placeholder') + $.lang[LANG]['message.check.required'], true, false, '', 'ok'); 5733 return false; 5734 } 5735 5736 if(require_web == 'true' && !web) { 5737 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-website]').attr('placeholder') + $.lang[LANG]['message.check.required'], true, false, '', 'ok'); 5738 return false; 5739 } 5740 5741 if(require_phone == 'true' && !phone) { 5742 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-phone]').attr('placeholder') + $.lang[LANG]['message.check.required'], true, false, '', 'ok'); 5743 return false;
5744 } 5745 5746 if(require_subject == 'true' && !subject) { 5747 $(this).showModalFlat('INFORMATION',$(el + ' [data-contact-subject]').attr('placeholder') + $.lang[LANG]['message.check.required'], true, false, '', 'ok'); 5748 return false; 5749 } 5750 5751 if(check) { 5752 var submitContact = function(contactCaptcha, captchaModal, captchaBlocklang) { 5753 $.modalON(); 5754 $.post('/template/update/type/contact',{ 5755 id : b.SID, 5756 seq : el_id, 5757 s : 'message', 5758 firstname : firstname, 5759 lastname : lastname, 5760 email : email, 5761 web : web, 5762 phone : phone, 5763 subject : subject, 5764 message : message, 5765 etc : JSON.stringify(etc), 5766 captcha : contactCaptcha, 5767 block_type: 'contact', 5768 }, function(data) { 5769 checkError(data); 5770 if(typeof data.captcha_error != 'undefined' && data.captcha_error != '') { 5771 $.modalOFF(); 5772 if(captchaModal && captchaModal.length > 0) { 5773 reloadSubmitCaptcha(captchaModal, el_id); 5774 showSubmitCaptchaError(captchaModal, captchaBlocklang, data.captcha_error); 5775 } else { 5776 alert($.lang[LANG][data.captcha_error]); 5777 } 5778 return false; 5779 } 5780 5781 if(typeof data.error == 'undefined' || data.error == '') { 5782 var ch_lang = getLang($(el), b.SID), 5783 submit_txt = (typeof data.submitStr != 'undefined' && data.submitStr) ? data.submitStr : $.lang[ch_lang]['message.sent']; 5784 5785 if(captchaModal && captchaModal.length > 0) hideSubmitCaptchaModal(captchaModal); 5786 $(document.body).showModalFlat('INFORMATION',submit_txt,true,false, '', 'ok', '', 'cl-modal cl-none-title cl-cmmodal cl-p130 cl-s-btn w560'); 5787 setDefaultContactForm(el); 5788 setDefaultContactFormEtc(el); 5789 if(typeof contactCallback == 'function') 5790 contactCallback(el_id); 5791 } 5792 },'json'); 5793 setTimeout(function() { 5794 $.modalOFF(); 5795 },1000); 5796 }; 5797 5798 if(captcha_display) { 5799 $.modalOFF(); 5800 showSubmitCaptchaModal($parent, el_id, function(captcha, captchaModal, captchaBlocklang) { 5801 submitContact(captcha, captchaModal, captchaBlocklang); 5802 }); 5803 } else { 5804 submitContact('', null, getSubmitCaptchaLang($parent)); 5805 } 5806 } else { 5807 $.modalOFF(); 5808 var check_str = ''; 5809 $.each(check_option,function(k,v) { 5810 check_str = (check_str) ? check_str + ' / ': ''; 5811 check_str = check_str + v; 5812 }); 5813 5814 if(check_str) { 5815 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'); 5816 } else { 5817 var modal = $(this).showModalFlat('INFORMATION',$.lang[LANG]['message.privacy.check.required'],true,false, '', 'ok'); 5818 } 5819 5820 } 5821 }); 5822 5823 $('.contact-privacy-text').live('click',function() { 5824 var contactEL = $(this).parents('.element'), 5825 contactPriavcy = $(contactEL).find('.form-inline .contact-privacy-area .contact-privacy-box'), 5826 checkType = (typeof $(contactEL).attr('data-type') != 'undefined' && $(contactEL).attr('data-type') == 'contact') ? true : false; 5827 5828 if(checkType && contactPriavcy.length > 0) { 5829 if(contactPriavcy.css('display') == 'none') contactPriavcy.show(); 5830 else contactPriavcy.hide(); 5831 } 5832 }); 5833 5834 $('.element .gallery-loadmore').live({ 5835 click: function(e) { 5836 if(typeof $(this).data('id') == 'undefined' || typeof $(this).data('page') == 'undefined') { 5837 e.preventDefault(); 5838 return false; 5839 } 5840 5841 var id = $(this).attr('data-id'), 5842 gpage = (typeof $(this).attr('data-page') != 'undefined') ? Number($(this).attr('data-page')) : 1, 5843 view = (typeof $(this).attr('data-view') != 'undefined') ? Number($(this).attr('data-view')) : 6, 5844 mode = $(this).attr('data-mode'), 5845 $galleryELLoadmore = $(this), 5846 $galleryEL = $('.element[data-id="' + id + '"]'), 5847 $gContainer = $galleryEL.find('.container'), 5848 $gLoop = $galleryEL.find('[data-loop="true"]'), 5849 $gtoolbar = getGToolbar($galleryEL), 5850 $gc = $gtoolbar.find('.cl-gcate-list .cl-gcate-item.active'), 5851 $go = $gtoolbar.find('.cl-gsort-list .cl-gsort-item.active a'), 5852 sfl = ($gc.index() > 0) ? 'category' : '', 5853 stx = (sfl) ? $gc.text().trim() : '', 5854 orderby = ($go.length > 0) ? $go.attr('data-orderby') : 'recent'; 5855 5856 var val = galleryEL[id], 5857 tag = htmlspecialchars_decode(val.eltag,'ENT_QUOTES'), 5858 g_settings = (typeof val.elsettings != 'undefined' && val.elsettings) ? $.parseJSON(val.elsettings) : {}, 5859 folder = (typeof val.folder != 'undefined' && val.folder > 0) ? val.folder : '', 5860 isMasonry = $galleryELLoadmore.hasClass('masonry-layout'), 5861 block_lang = (typeof g_settings.blocklang != 'undefined') ? g_settings.blocklang : LANG; 5862 5863 var nodes = $gLoop.clone().children('.grid'); 5864 initGalleryField(nodes); 5865 5866 var g_number = $gLoop.data('gallery-no'), 5867 total = 0, 5868 items = 0, 5869 gallery_item = ''; 5870 5871 var checkLoadmoreInLoop = ($(tag).find('[data-loop="true"] .loadmore-wrap').length) ? true : false;
5872 var glm = $(tag).find('.loadmore-wrap'); 5873 5874 var checkGallerySVG = ($(tag).find('.gimg-svg-wrap').length > 0) ? true : false, 5875 checkGFrameTitleOFF = (val.mode == 'gallery' && (typeof g_settings.gframe_title_visible != 'undefined' && g_settings.gframe_title_visible == 'OFF')) ? true : false; 5876 5877 if(id == 'all_products') { 5878 sfl = 'orderby'; 5879 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'); 5880 } 5881 5882 var checkUseComment = checkUseCommentFunc(val.mode, val.eltag); 5883 var checkUseLike = checkUseLikeFunc(val.mode, val.eltag); 5884 var uri = getSearchURL(); 5885 // if(uri.category_no == '') { 5886 // uri.category_no = (typeof g_settings.lux_category_no != 'undefined') ? g_settings.lux_category_no : ''; 5887 // } 5888 if (isObjectEmpty(uri) && _this.b.LUX) { 5889 uri = val.searches.uri; 5890 } 5891 5892 $.ajax({ 5893 url: '/template/gallery/list/pid/' + id + '/sid/' + property.SID + '/spage/' + property.PAGE + '/page/' + gpage + '/view/' + view + '/publish/' + property.PUBLISH, 5894 data: { g_mode: mode, visible: true, sfl: sfl, stx: stx, orderby: orderby, total: true, uri : uri }, 5895 dataType: 'json', 5896 type: 'POST', 5897 async: false, 5898 cache: false, 5899 success: function (data) { 5900 $.cookie('gallery-page-' + id, gpage, { path: '/', expires: 12 * 60 * 60 * 1000 }); 5901 $.cookie('gallery-category-' + id, stx, { path: '/', expires: 12 * 60 * 60 * 1000 }); 5902 $.cookie('gallery-orderby-' + id, orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 5903 if($galleryEL.is('[data-gjs]') && gpage > 1) setLoadmoreGalleryJS($galleryEL.attr('data-gjs'),id,true); 5904 5905 var loop_count = nodes.length; 5906 5907 total = (typeof data.total.list_total != 'undefined') ? data.total.list_total : data.total; 5908 items = data.list.length; 5909 5910 var g_popup_remove = $('.galleryPL'+id+'.gallery-popup').find('.gallery-item'); 5911 $.each(g_popup_remove,function(i,v) { 5912 if(items > i) $(this).remove(); 5913 }); 5914 5915 $.each(data.list,function(i,v) { 5916 loop_pos = i%loop_count; 5917 c = nodes[loop_pos]; 5918 item_index = ((gpage-1)*view) + i; 5919 var isTitle = (v.title.length > 0) ? true:false, 5920 isCaption = (v.caption.length > 0) ? true:false; 5921 5922 $(c).addClass('gallery-item').attr('data-index',item_index).attr('data-gpos',v.pos).attr('data-seq',v.seq); 5923 5924 var vgsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}, 5925 img_path = (typeof vgsettings['storage'] != 'undefined') ? vgsettings['storage'] : _this.b.RESOURCE + '/' + _this.b.SID + '/', 5926 img_original = (typeof vgsettings['storage'] != 'undefined') ? img_path + '1920/' : img_path; 5927 5928 var src = getServeImage(v.image,val.folder,img_path), 5929 src_s0 = getServeImage(v.image,'0',img_path); 5930 if($(c).find('img').length > 0) $(c).find('img').attr('src',src); 5931 ensureGalleryResponsiveImageClass($(c)); 5932 if($(c).find('.g-img').length > 0) $(c).find('.g-img').css('background-image', 'url('+src+')'); 5933 if(checkGallerySVG) { 5934 var gimgSVG = $(c).find('.gimg-svg-wrap svg'); 5935 gimgSVG.find('pattern').attr('id','gimgSvg_'+val.elname+'_'+item_index); 5936 gimgSVG.find('image').attr('xlink:href', src); 5937 gimgSVG.find('polygon, path').attr('fill', 'url(#gimgSvg_'+val.elname+'_'+item_index+')'); 5938 } 5939 5940 var glink = (typeof vgsettings['glink'] != 'undefined' && vgsettings['glink']) ? vgsettings['glink'] : '', 5941 glink_target = (typeof vgsettings['glink_target'] != 'undefined' && vgsettings['glink_target']) ? vgsettings['glink_target'] : ''; 5942 5943 if(glink) { 5944 if(glink.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 5945 var bookmark_seq = glink.replace(/^\@/g,''); 5946 if(typeof _this.b.SETTINGS.blockBookmarkList == 'undefined' || typeof _this.b.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 5947 glink = ''; 5948 glink_target = ''; 5949 } 5950 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 5951 glink_target = ''; 5952 } else if($.inArray(glink.replace(/^\//g,'').replace(/ /g,'-'),_this.b.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 5953 } else { // link-type: link-out ==> a[attr-link] 5954 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 5955 } 5956 } 5957 5958 $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 5959 var gallery_page_chmod = g_settings && g_settings.gallery_page_chmod || null; 5960 var umgrade = property && property.UMGRADE ? (property.UMGRADE.seq || property.UMGRADE.grade_id || null) : null; 5961 if (typeof gallery_page_chmod === 'string') { 5962 try { gallery_page_chmod = JSON.parse(gallery_page_chmod); } 5963 catch (e) { gallery_page_chmod = gallery_page_chmod ? gallery_page_chmod.split(',') : []; } 5964 } 5965 gallery_page_chmod = $.isArray(gallery_page_chmod) ? $.map(gallery_page_chmod, function(v) { return String(v); }) : []; 5966 umgrade = (umgrade !== null && typeof umgrade != 'undefined') ? String(umgrade) : null; 5967 $(c).removeClass('noneShoppingGrade').removeAttr('data-shopping-grade-msg'); 5968 if (isShoppingGradePriceHidden(v) && property['SITEUM'] >= 1) { 5969 $(c).addClass('gallery-item').addClass('nonePrice'); 5970 $(c).find('a').attr('href', '#'); 5971 } else { 5972 if(isShoppingGradeBlocked(v, g_settings, property)) { 5973 $(c).addClass('gallery-item').addClass('noneShoppingGrade');
5974 $(c).attr('data-shopping-grade-msg', getShoppingGradeBlockedMessage(v)); 5975 $(c).find('a').attr('href', '#'); 5976 } else if(glink) { 5977 var glink_val = makeLinkUrl(glink, b.ONE, b.VIEW); 5978 $(c).find('a').attr('href',glink_val); 5979 5980 if(glink.match(/^\@/g)) { 5981 $(c).find('a').attr('attr-bookmark',glink.replace(/^\@/g,'')); 5982 } else if(glink.match(/^flink\@[0-9]/g)) { 5983 $(c).find('a').attr('attr-flink',glink.replace(/^flink\@/g,'')); 5984 // IE ERROR_includes__H.20210603 5985 // } else if(_this.b.MENULIST.includes(glink.replace(/ /g,'-'))) { 5986 } else if($.inArray(glink.replace(/ /g,'-'),_this.b.MENULIST) > -1) { 5987 $(c).find('a').attr('data-user-link',glink_val); 5988 } else { 5989 $(c).find('a').attr('attr-link',glink); 5990 } 5991 } else { 5992 if (val.mode == 'gallery') { 5993 src_s0 = src_s0 + '?gpos='+v.pos; 5994 5995 $(c).find('a').attr('href', src_s0); 5996 $(c).find('a').attr('data-gallery', '#gframe-' + val.seq); 5997 } else { 5998 if(val.seq == 'all_products') { 5999 $(c).find('a').attr('href', v.product_url); 6000 $(c).removeClass('nonePrice'); 6001 } else { 6002 if(_this.b.LUX) $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/_product/' + v.seq); 6003 else $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/' + v.seq); 6004 6005 // $(c).find('a').attr('href', ((b.URL=='/') ? '' : b.URL) + '/' + b.PAGE + '/view/' + v.seq); 6006 } 6007 } 6008 } 6009 } 6010 6011 if(glink_target == '_blank') $(c).find('a').attr('target','_blank'); 6012 else $(c).find('a').removeAttr('target'); 6013 6014 $(c).find('.non_text').removeClass('non_text'); 6015 6016 if(mode != 'shopping') { 6017 if(v.title.length==0) $(c).find('.figure.title').removeClass('non_text').addClass('non_text'); 6018 if(v.caption.length==0) $(c).find('.figure.caption').removeClass('non_text').addClass('non_text'); 6019 } 6020 6021 if(v.title.length==0) v.title = $.lang[block_lang]['editor.block.gallery.sample.title']; 6022 if(v.caption.length==0) v.caption = $.lang[block_lang]['editor.block.gallery.sample.caption']; 6023 6024 if(checkGFrameTitleOFF || !isTitle) $(c).find('a').attr('data-title', ''); 6025 else $(c).find('a').attr('data-title', v.title); 6026 6027 if(mode != 'shopping' && isCaption && $(c).find('p.figure.caption').length == 0) { 6028 var $captionParent = ($(c).find('.fig_price').length > 0) ? $(c).find('.fig_price').first() : $(c).find('figcaption').first(), 6029 captionClass = 'figure caption'; 6030 if($captionParent.length > 0) $captionParent.prepend('<p class="' + captionClass + '"></p>'); 6031 } 6032 6033 // caption 6034 var ftitle = $(c).find('h5.figure'), 6035 fcaption = $(c).find('p.figure').not('.comment'), 6036 fdatetime = $(c).find('.figure.datetime'), 6037 fhashtag = $(c).find('.figure.hashtag'), 6038 fbrand = $(c).find('.figure.brand'), 6039 fprice = $(c).find('.figure.price'), 6040 freview = $(c).find('.figure.review'), 6041 fcomment = $(c).find('.figure.comment'), 6042 flike = $(c).find('.figure.like'), 6043 fbasket = $(c).find('.figure.basket'); 6044 6045 $(c).find('figcaption').removeClass('hide'); 6046 if(v.title || v.caption) { 6047 var gallery_caption = v.caption; 6048 gallery_caption = gallery_caption.replace(/\n/g,'<br />'); 6049 6050 ftitle.html(v.title); 6051 fcaption.html(gallery_caption); 6052 if(mode != 'shopping' && !isCaption) $(c).find('p.figure.caption').remove(); 6053 if(fdatetime.length > 0) fdatetime.text(v.datetime); 6054 if(fhashtag.length > 0) fhashtag.text(v.hashtag); 6055 } 6056 6057 if(g_number) { 6058 var g_index = String(item_index + 1), 6059 g_num = g_index.padStart(g_number, '0');
6060 $(c).find('.figure.number').text(g_num); 6061 } 6062 6063 if(fbrand.length > 0) { 6064 var fbrand_name = (typeof v.brand_name != 'undefined' && v.brand_name) ? v.brand_name : ''; 6065 fbrand.html(v.brand_name); 6066 } 6067 6068 if(mode == 'shopping' || id == 'all_products') { 6069 fcomment.addClass('hide'); 6070 flike.addClass('hide'); 6071 6072 v.price = parseFloat(v.price); 6073 v.sale = parseFloat(v.sale); 6074 var productGradeOnOff = getShoppingGradeProductGradeOnOff(v); 6075 $(c).attr('data-editor-grade-price-enabled', productGradeOnOff).attr('data-config-grade-price-enabled', productGradeOnOff); 6076 var checkPriceHidden = isShoppingGradePriceHidden(v), 6077 base_gallery_price = (v.price && !checkPriceHidden) ? v.price : 0, 6078 base_gallery_sale_price = (typeof v.sale != 'undefined' && v.sale > 0 && v.sale > v.price && !checkPriceHidden) ? v.sale : 0, 6079 gallery_price = base_gallery_price, 6080 gallery_sale_price = base_gallery_sale_price, 6081 gallery_sale_per = (typeof v.sale_per != 'undefined' && v.sale_per && !checkPriceHidden) ? v.sale_per+'%' : '', 6082 grade_price_display = g_settings.grade_price_display == 'ON', 6083 grade_discount_grade = getShoppingGradePreviewDiscountGrade(data.grade), 6084 grade_discount_applied = false, 6085 grade_gallery_price = 0, 6086 product_soldout = 'íì ', 6087 product_no_sale = (typeof g_settings.sh_soldout == 'string') ? g_settings.sh_soldout : '구매ë¶ê°', 6088 product_status = ''; 6089 if ( 6090 !checkPriceHidden && 6091 isShoppingGradeProductGradePriceEnabled(v) 6092 ) { 6093 grade_gallery_price = calcShoppingGradeDisplayPrice(base_gallery_price, grade_discount_grade); 6094 grade_discount_applied = grade_gallery_price !== null; 6095 } 6096 if(v.status == 'off' && !checkPriceHidden) { 6097 product_status = '<span class="cl-sh-soldout">' + product_no_sale + '</span>'; 6098 } else if(v.quantity_on == 'on' && v.quantity < 1 && !checkPriceHidden) { 6099 product_status = '<span class="cl-sh-soldout">' + product_soldout + '</span>'; 6100 } 6101 6102 $(c).find('.cl-sh-soldout').remove(); 6103 if(product_status != '') $(c).attr('data-soldout',true); 6104 else $(c).removeAttr('data-soldout'); 6105 6106 $(c).find('.product-badge').remove(); 6107 product_status += drawBadgeList(v.use_badge, data.badge_settings); 6108 6109 $(c).find('.cl-sh-limit').remove(); 6110 if(v.status == 'lim') { 6111 if(v.sale_now == false) { 6112 var product_limit = '<p class="cl-sh-limit">ìí 구매 ê°ë¥ 기ê°ì´ ìëëë¤.</p>'; 6113 if(freview.length > 0) { 6114 freview.after(product_limit); 6115 } else { 6116 $(c).find('figcaption:not(.top) .figure:last-child').after(product_limit); 6117 } 6118 } 6119 } 6120 6121 if($(c).find('ul.figure.price').length > 0) { 6122 // var price_off = (v.sale_price > 0 && v.sale_price > v.price) ? 100 - Math.floor((v.price / v.sale_price) * 100) : 0, 6123 // off_str = (price_off > 0) ? price_off + '% ' : '' 6124 var off_str = (v.sale_rate > 0) ? v.sale_rate + '% ' : ''; 6125 if(!_this.b.LUX) off_str = gallery_sale_per; 6126 if(!off_str && gallery_sale_price > 0 && gallery_price > 0 && gallery_price < gallery_sale_price) { 6127 var price_off = Math.round(((gallery_sale_price - gallery_price) / gallery_sale_price) * 100); 6128 off_str = (price_off > 0) ? price_off + '% ' : ''; 6129 } 6130 //Ver02 6131 if(!checkPriceHidden) { 6132 var $priceWrap = $(c).find('ul.figure.price'), 6133 $priceVal = $priceWrap.find('.price-val'), 6134 $priceSale = $priceWrap.find('.price-sale'), 6135 $priceSalePer = $priceWrap.find('.price-sale-per'); 6136 $priceWrap.find('.sp-price, .grade-discount-price').remove(); 6137 if($priceSale.length >
6137 0 && $priceSalePer.length == 0) { 6138 $priceSale.after('<li class="price-sale-per hide"></li>'); 6139 $priceSalePer = $priceWrap.find('.price-sale-per'); 6140 } 6141 $priceWrap.css({display:'', flexDirection:'', alignItems:''}); 6142 $priceVal.css({order:'', display:''}); 6143 $priceSale.css({order:'', display:'', marginRight:''}); 6144 $priceSalePer.css({order:'', display:'', marginLeft:'', marginTop:''}); 6145 $priceVal.html('₩' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 6146 $priceVal.removeClass('hide'); 6147 6148 if(gallery_sale_price > 0 && gallery_price < gallery_sale_price) { 6149 $priceSale.html('₩' + gallery_sale_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 6150 $priceSalePer.html(off_str); 6151 $priceSale.removeClass('hide'); 6152 $priceSalePer.removeClass('hide'); 6153 if(!grade_discount_applied && _this.b.LUX && (v.hashtag).indexOf('í¹ê°ì¸ì¼') > -1 && $(c).find('ul.figure.price .sp-price').length == 0) { 6154 $(c).find('ul.figure.price .price-sale').after('<li class="sp-price">í¹ê°ì¸ì¼</li>'); 6155 } 6156 } else { 6157 $priceSale.addClass('hide').html(''); 6158 $priceSalePer.addClass('hide').html(''); 6159 6160 } 6161 6162 if(grade_price_display && grade_discount_applied) { 6163 $priceWrap.append('<li class="grade-discount-price"><span class="grade-discount-price-value">₩' + grade_gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + '</span><span class="grade-discount-price-label">ëì í ì¸ê°</span></li>'); 6164 } 6165 6166 $(c).find('ul.figure.price .price-unit-pricing').remove(); 6167 if(v.product_unit_str) { 6168 $(c).find('ul.figure.price').append(`<li class="price-unit-pricing">${v.product_unit_str}</li>`); // ë¨ìë¹ ê°ê²© 6169 } 6170 } else { 6171 $(c).find('ul.figure.price .price-val').html('₩0'); 6172 $(c).find('ul.figure.price .price-val').addClass('hide'); 6173 } 6174 if(id == 'all_products' && checkPriceHidden) $(c).find('ul.figure.price').html(''); 6175 if(product_status) $(c).find('ul.figure.price').append('<li>'+product_status+'</li>'); 6176 6177 var badge_size = getBadgeSize(data.badge_settings); 6178 $(c).find('.cl-sh-soldout').removeClass('badge-small badge-medium badge-large'); 6179 $(c).find('.cl-sh-limit').removeClass('badge-small badge-medium badge-large'); 6180 if(badge_size) { 6181 $(c).find('.cl-sh-soldout').addClass(badge_size); 6182 $(c).find('.cl-sh-limit').addClass(badge_size); 6183 } 6184 } else { 6185 //Ver01 6186 if(fprice.length == 0) fprice = fcaption; 6187 6188 if(checkPriceHidden) fprice.html(''); 6189 else fprice.html('<span class="figure-krw">₩</span>' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + product_status); 6190 } 6191 6192 if($(c).find('ul.figure.review').length > 0) { 6193 var gallery_review = (v.review_onoff && v.review_cnt) ? v.review_cnt : 0; 6194 if(gallery_review > 0) { 6195 $(c).find('ul.figure.review, ul.figure.review li').removeClass('hide'); 6196 $(c).find('ul.figure.review .figure-review-cnt').html(gallery_review); 6197 $(c).find('ul.figure.review .figure-review-score').html(v.review_score); 6198 } else { 6199 $(c).find('ul.figure.review, ul.figure.review li').addClass('hide'); 6200 $(c).find('ul.figure.review .figure-review-cnt, ul.figure.review .figure-review-score').html(''); 6201 } 6202 } 6203 6204 if(fbasket.length > 0) { 6205 var checkOldBlock = ($(c).find('.figure.basket[data-oldver="true"]').length > 0) ? true : false, 6206 checkOldverBasket = (typeof g_settings.field_oldver != 'undefined' && g_settings.field_oldver && g_settings.field_oldver.indexOf('basket') > -1) ? true : false, 6207 checkDisabledBasket = (typeof g_settings.field_disable != 'undefined' && g_settings.field_disable && g_settings.field_disable.indexOf('basket') > -1) ? true : false;
6208 if(v.basket_off || v.shopping_grade_hidden == 'ON') fbasket.addClass('cannotby hide'); 6209 else if(id == 'all_products') fbasket.removeClass('hide'); 6210 else if(checkDisabledBasket || (!checkDisabledBasket && checkOldBlock && !checkOldverBasket)) fbasket.addClass('hide'); 6211 else if(property.VALIDTYPE != 'SM') fbasket.addClass('hide'); 6212 else fbasket.removeClass('hide'); 6213 } 6214 6215 6216 } else { 6217 fbrand.addClass('hide'); 6218 fprice.addClass('hide'); 6219 freview.addClass('hide') 6220 fbasket.addClass('hide'); 6221 6222 if ( checkUseComment 6223 && g_settings.comment_display == 'ON' 6224 && !(g_settings.field_disable !== undefined && g_settings.field_disable.indexOf('comment') > -1) 6225 && fcomment.length > 0 6226 && (typeof v.comment_cnt != 'undefined' && v.comment_cnt > 0) 6227 ) { 6228 fcomment.removeClass('hide'); 6229 fcomment.find('.figure-comment-cnt').html(v.comment_cnt); 6230 } else { 6231 fcomment.addClass('hide'); 6232 fcomment.find('.figure-comment-cnt').empty(); 6233 } 6234 6235 if ( checkUseLike 6236 && (g_settings.like_display !== undefined && g_settings.like_display != 'N') 6237 && !(g_settings.field_disable !== undefined && g_settings.field_disable.indexOf('like') > -1) 6238 && flike.length > 0 6239 ) { 6240 flike.removeClass('hide').find('.figure-like-cnt').html(0); 6241 if(v.like !== undefined) { 6242 flike.find('.figure-like-cnt').html(v.like.cnt); 6243 if (v.like.own && v.like.cnt > 0) flike.attr('data-like', v.seq).addClass('active'); 6244 } 6245 } else { 6246 flike.addClass('hide'); 6247 } 6248 } 6249 6250 if(checkUseLike == false) flike.html(''); 6251 6252 if(isMasonry) { 6253 gallery_item = gallery_item + $(c)[0].outerHTML; 6254 } else { 6255 if(checkLoadmoreInLoop) $gLoop.find('.loadmore-wrap').before($(c)[0].outerHTML); 6256 else $gLoop.append($(c)[0].outerHTML); 6257 } 6258 }); 6259 } 6260 }); 6261 changeBrokenImages($galleryEL); 6262 6263 if(isMasonry) { 6264 $('.gallery-loadmore[data-id="' + id + '"]').before('<div class="gallery-loading-status"><div class="loading-dots"></div></div>'); 6265 showHideGalleryField($galleryEL,g_settings); 6266 reloadBlockMasonry('add',$galleryEL,$(gallery_item)); 6267 } else { 6268 showHideGalleryField($galleryEL,g_settings); 6269 } 6270 6271 var cookie_page = gpage, 6272 new_view = (view > total) ? total : view, 6273 cookie_view = ( (cookie_page*new_view) > total ) ? total : cookie_page*new_view; 6274 6275 $galleryEL.find('.display').text(cookie_view); 6276 6277 var $glmBtnWrap = $galleryELLoadmore.closest('.loadmore-wrap'), 6278 $glmBtn = $galleryEL.find('.loadmore-wrap .gallery-loadmore'), 6279 checkLoadmore = (total > view && total > cookie_view) ? true : false; 6280 6281 if($glmBtnWrap.length == 0) { 6282 // gallery loadmore btn - default (ver1) 6283 if(checkLoadmore) $galleryELLoadmore.attr('data-page', cookie_page + 1); 6284 else $galleryELLoadmore.remove(); 6285 } else { 6286 // gallery loadmore btn - custom (ver2) 6287 if(checkLoadmore) { 6288 $glmBtn.attr('data-page', cookie_page + 1); 6289 $glmBtnWrap.removeClass('hide').fadeIn(); 6290 } else { 6291 $glmBtnWrap.fadeOut().addClass('hide'); 6292 $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'); 6293 $glmBtn.find('.display .view').text('0'); 6294 $glmBtn.find('.display .total').text('0'); 6295 } 6296 } 6297 6298 if($galleryEL.has('input.gjs').length) setGalleryJS('add-loop',$galleryEL); 6299 6300 if($galleryEL.find('*[data-direffect="true"]').length > 0 ) { 6301 setTimeout(function() { 6302 $galleryEL.find('.grid').each(function() { 6303 $(this).hoverdir(); 6304 }); 6305 }, 400); 6306 } 6307 } 6308 }); 6309 6310 $('.gallery-loadmore, .data-feed-load-more').live('touchstart', function (e) { 6311 var g_color = $(this).css('color'), 6312 g_bgcolor = $(this).css('background-color'), 6313 g_bdcolor = $(this).css('border-color'); 6314 6315 if(isMobile()) { 6316 $(this).css('color', g_color); 6317 $(this).css('background-color', g_bgcolor); 6318 $(this).css('border-color', g_bdcolor); 6319 } 6320 }); 6321 6322 $('.gallery-item a[title]').live('mouseenter', function () { 6323 $(this).tooltip('destroy'); 6324 }); 6325 6326 $('.gallery-item a:not([attr-flink])').live({ 6327 click : function(e) { 6328 e.preventDefault(); 6329 if($(e.target).is('.figure.basket') || $(e.target).is('.basket-btn')) return false;
6330 6331 var loc = $(this).attr('href'), 6332 mode = $(this).attr('data-gallery'), 6333 menu_link = $(this).attr('data-user-link'), 6334 bookmark = $(this).attr('attr-bookmark'), 6335 blank = $(this).attr('target'), 6336 user_link = $(this).attr('attr-link'); 6337 6338 if( (typeof mode!='undefined' && mode.length>0) || 6339 (typeof menu_link!='undefined' && menu_link.length>0) || 6340 // (typeof user_link!='undefined' && user_link.length>0) || 6341 (typeof bookmark!='undefined' && bookmark.length>0) 6342 ) return; 6343 6344 if(typeof blank!='undefined' && blank.length) { 6345 var url = (typeof user_link != 'undefined' && user_link.match('^(tel:|mailto:|sms:)') === null) ? makeLinkUrl(user_link, b.ONE, b.VIEW) : loc; 6346 var openNewWindow = window.open(url); 6347 } else { 6348 if(typeof user_link != 'undefined' && user_link) { 6349 location.href=loc; 6350 } else { 6351 var url = new getLocation(loc); 6352 golink(_this,url); 6353 } 6354 } 6355 6356 // uri = (b.PUBLISH) ? loc : loc.replace('/render/',''), 6357 // attr = $(this).attr('attr-link'); 6358 6359 // if(typeof attr!='undefined' && attr) return; 6360 // _this.history.pushState(null,b.TITLE,(b.PUBLISH) ? '/' : '/render/' + uri); 6361 } 6362 }); 6363 $('.gallery-item .figure.like').live('click', function(e){ 6364 e.preventDefault(); 6365 return false; 6366 }); 6367 $('.gallery-item .figure.basket, .pitem .basket-box').live('click', function(e) { 6368 e.preventDefault(); 6369 var checkPsearch = ($(this).closest('.pitem').length > 0) ? true : false; 6370 if(b.PUBLISH) { 6371 if(!checkPsearch && $(this).closest('.gallery-item').hasClass('nonePrice')) { 6372 $(this).closest('.nonePrice').click(); 6373 return false; 6374 } 6375 6376 var tmp_pid = (checkPsearch) ? $(this).closest('.pitem').attr('data-pid') : $(this).closest('.element').attr('data-id'), 6377 tmp_seq = (checkPsearch) ? $(this).closest('.pitem').attr('data-gid') : $(this).closest('.gallery-item').attr('data-seq'); 6378 $.quickbasket.init(b.SID,tmp_pid,tmp_seq); 6379 } else { 6380 $(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'); 6381 return false; 6382 } 6383 }); 6384 6385 // tab-box left-right button event 6386 $(document).on('click', '.left-arrow .arrow:not(.hide) .before', function(e){ 6387 var horizontal = $(this).closest('.tabs').attr('tab-horizontal'), 6388 motion = Number($(this).closest('.tabs').attr('tab-motion')), 6389 len = $(this).closest('.container').find('.tab-box .tab:not(.hover)').length, 6390 motion_style = $(this).closest('.tabs').attr('tab-motion-style'), 6391 tab_counted = $(this).closest('.tabs').attr('tab-count'), 6392 mobile_tab_count = $(this).closest('.tabs').attr('mobile-tab-count'), 6393 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'), 6394 w = $(window).width(), 6395 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'), 6396 tab_case = $(this).closest('.tabs').attr('data-case'); 6397 6398 if(!$(this).closest('.tabs').attr('tab-motion') || $(this).closest('.tabs').attr('tab-motion') == 'undefined') return false; 6399 6400 if(horizontal == 1) { // ê°ë¡í 6401 var tab_each = Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth()) + Number(tab_interval_w), 6402 max_width = Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth(true)) * len, 6403 tab_width = (Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth()) + Number(tab_interval_w)) * tab_count, 6404 length = max_width / tab_width, 6405 mo = Number(len) - tab_count; 6406 // 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); 6407 } 6408 6409 if(motion_style == 1) { // íì¹¸ì© ì´ë 6410 motion = motion - 1; 6411 if(motion < 0) motion = 0; 6412 $('.'+$(this).closest('.tabs').attr('data-name')).attr('tab-motion', motion); 6413 6414 tabMotion($(this).closest('.tabs').attr('data-name'), motion, tab_each, len, motion_style, tab_count, tab_case, tab_counted); 6415 6416 } else { // ííì´ì§ì© ì´ë 6417 motion = motion - 1; 6418 if(motion < 0) motion = 0; 6419 $('.'+$(this).closest('.tabs').attr('data-name')).attr('tab-motion', motion); 6420 6421 tabMotion($(this).closest('.tabs').attr('data-name'), motion, tab_width, length, motion_style, tab_count, tab_case, tab_counted); 6422 } 6423 6424 }); 6425 $(document).on('click', '.right-arrow .arrow:not(.hide) .after', function(e){ 6426 var horizontal = $(this).closest('.tabs').attr('tab-horizontal'), 6427 motion = Number($(this).closest('.tabs').attr('tab-motion')), 6428 len = $(this).closest('.container').find('.tab-box .tab:not(.hover)').length, 6429 motion_style = $(this).closest('.tabs').attr('tab-motion-style'), 6430 tab_counted = $(this).closest('.tabs').attr('tab-count'), 6431 mobile_tab_count = $(this).closest('.tabs').attr('mobile-tab-count'), 6432 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'), 6433 w = $(window).width(), 6434 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'), 6435 tab_case = $(this).closest('.tabs').attr('data-case'); 6436 6437 if(!$(this).closest('.tabs').attr('tab-motion') || $(this).closest('.tabs').attr('tab-motion') == 'undefined') return false;
6438 6439 if(horizontal == 1) { // ê°ë¡í 6440 var tab_each = Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth()) + Number(tab_interval_w), 6441 max_width = Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth(true)) * len, 6442 tab_width = (Number($(this).closest('.container').find('.tab-box .tab:not(.hover)').outerWidth()) + Number(tab_interval_w)) * tab_count, 6443 length = max_width / tab_width, 6444 mo = Number(len) - tab_count; 6445 // 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); 6446 } 6447 6448 if(motion_style == 1) { // íì¹¸ì© ì´ë 6449 motion = motion + 1; 6450 if(motion > mo) motion = mo; 6451 $('.'+$(this).closest('.tabs').attr('data-name')).attr('tab-motion', motion); 6452 6453 tabMotion($(this).closest('.tabs').attr('data-name'), motion, tab_each, len, motion_style, tab_count, tab_case, tab_counted); 6454 6455 } else { // ííì´ì§ì© ì´ë 6456 motion = motion + 1; 6457 if(motion >= length) motion = Math.ceil(length) - 1; 6458 $('.'+$(this).closest('.tabs').attr('data-name')).attr('tab-motion', motion); 6459 6460 tabMotion($(this).closest('.tabs').attr('data-name'), motion, tab_width, length, motion_style, tab_count, tab_case, tab_counted); 6461 } 6462 }); 6463 $(document).on('click', '.tab-box .tab', function(){ 6464 var w = $(document).outerWidth(), 6465 horizontal = $(this).closest('.tabs').attr('tab-horizontal'); 6466 if(w < 767 && $(this).find('.tab-editor').hasClass('active')) { 6467 $(this).find('.tab-editor').removeClass('active'); 6468 } else { 6469 var editor = $(this).index() + 1, 6470 order = $(this).attr('data-order'); 6471 // num = $('.tab-editor.active.t'+order).outerHeight(); 6472 6473 $(this).siblings().removeClass('active'); 6474 $(this).addClass('active'); 6475 6476 if(horizontal == 0) { // ì¸ë¡í 6477 $(this).closest('.tab-box').find('.tab .tab-editor').removeClass('active'); 6478 $(this).closest('.tab-box').find('.tab .tab-editor.tabs'+order).addClass('active'); 6479 } else { // ê°ë¡í 6480 $(this).closest('.tab-width').siblings('.editor-box').children('.tab-editor').removeClass('active'); 6481 $(this).closest('.tab-width').siblings('.editor-box').children('.tab-editor.tabs'+order).addClass('active'); 6482 } 6483 } 6484 }); 6485 6486 $('.tab-wrapper .tab-box .tab').live({ 6487 click: function() { 6488 $(this).removeClass('hover'); 6489 }, 6490 mouseover: function() { 6491 $('.tab-wrapper .tab-box .tab:not(.hide)').removeClass('hover'); 6492 if(!$(this).hasClass('active')) $(this).addClass('hover'); 6493 }, 6494 mouseout: function() { 6495 $('.tab-wrapper .tab-box .tab:not(.hide)').removeClass('hover'); 6496 } 6497 }); 6498 6499 $('.userELallProducts .cl-gsort-list li').live({ 6500 mouseover: function() { 6501 $(this).addClass('hover'); 6502 $(this).siblings().removeClass('hover'); 6503 }, 6504 mouseout: function() { 6505 $('.userELallProducts .cl-gsort-list li').removeClass('hover'); 6506 } 6507 }); 6508 6509 //calendar ë¸ë 6510 let currentDate = new Date(); 6511 let currentEvent = null; 6512 let lastEventsList = null; 6513 let lastEventsWeekday = null; 6514 let calendarElsettings = new Map(); 6515 let googleColor = new Map(); 6516 const monthCache = new Map(); 6517 const inflight = new Map(); 6518 6519 //calendar textarea// 6520 const SEL = '.calendar-modal-body .modal-field.content textarea'; 6521 function getMax() { 6522 const w = window.innerWidth || document.documentElement.clientWidth; 6523 if (w >= 1200) return 500; // 1200px ì´ì 6524 if (w >= 768) return 400; // 1199~768px 6525 return 320; // 767px ì´í 6526 } 6527 function fit($ta) { 6528 const el = $ta[0]; 6529 const min = parseFloat(getComputedStyle(el).minHeight) || 120; 6530 const MAX = getMax(); 6531 6532 $ta.css('height', 'auto'); 6533 6534 const sh = el.scrollHeight; 6535 const h = Math.max(min, Math.min(sh, MAX)); 6536 6537 $ta.css({ 6538 height: h + 'px', 6539 overflowY: sh > MAX ? 'auto' : 'hidden' 6540 }); 6541 } 6542 function refitAll() { 6543 $(SEL).filter(':visible').each(function () { 6544 fit($(this)); 6545 }); 6546 } 6547 function debounce(fn, wait = 120) { 6548 let t; 6549 return function () { 6550 clearTimeout(t); 6551 t = setTimeout(() => fn.apply(this, arguments), wait); 6552 }; 6553 } 6554 let lastMax = getMax(); 6555 $(window).on('resize.autogrow orientationchange.autogrow', debounce(function () { 6556 const curMax = getMax(); 6557 if (curMax !== lastMax) { 6558 lastMax = curMax; 6559 refitAll(); 6560 } 6561 })); 6562 $(document).on('input change', SEL, function () { 6563 fit($(this)); 6564 }); 6565 //////////////////////////////////////////////////////////////////////////////////// 6566 6567 $.cl_calendar = { 6568 active : '', 6569 events : [], 6570 instances : {}, 6571 // currentDate : new Date(), 6572 init : function(sid, pid, yearMonth, c) { 6573 if(typeof sid == 'undefined' || typeof pid == 'undefined') { 6574 alert('Undefined SID,PID'); 6575 return false;
6576 } 6577 6578 $(`[data-type="calendar"][data-id="${pid}"]`).removeClass('_calendar'); //_calendarê° htmlë¶ì´ë²ë¦´ê²½ì° 6579 6580 // pid ë³ë¡ ê´ë¦¬ëë ì¸ì¤í´ì¤ ìì± 6581 if(!$.cl_calendar.instances[pid]) { 6582 $.cl_calendar.instances[pid] = { 6583 currentDate: new Date(), 6584 events: [] 6585 }; 6586 } 6587 $.cl_calendar.instances[pid].config = c; 6588 6589 var instance = $.cl_calendar.instances[pid]; 6590 6591 if(typeof yearMonth !== 'undefined' && yearMonth != '') { 6592 var parts = yearMonth.split('-'); 6593 instance.currentDate = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, 1); 6594 } 6595 var data_type = ($('.userEL'+pid).attr('data-modoo-type')) ? $('.userEL'+pid).attr('data-modoo-type') : ''; 6596 var y = instance.currentDate.getFullYear(); 6597 var m = String(instance.currentDate.getMonth() + 1).padStart(2, '0'); 6598 var ym = (yearMonth && yearMonth !== '') ? yearMonth : (y + '-' + m); 6599 6600 if(data_type != '') { 6601 $.ajax({ 6602 url: '/template/get_calendar', 6603 data: { sid: sid, pid: pid, yearMonth: ym, data_type: data_type }, 6604 type: 'POST', 6605 dataType: 'json', 6606 success: function (data) { 6607 checkError(data); 6608 var inst = $.cl_calendar.instances[pid]; 6609 6610 var dataArr = Array.isArray(data) ? data : []; 6611 6612 inst.events = dataArr; 6613 $.cl_calendar.draw(pid, data_type, c); 6614 6615 // --- 모ë°ì¼ ì´ë²¤í¸ ë ëë§ (ì í ì 기ì¤) --- 6616 var $root = $('.element[data-id="' + pid + '"]'); 6617 if ($root.find('.mobile-events').length === 0) { 6618 $root.find('.notice').before('<div class="mobile-events"></div>'); 6619 } 6620 var $mobile = $root.find('.mobile-events').empty(); 6621 6622 var currentYear = inst.currentDate.getFullYear(); 6623 var currentMonth = inst.currentDate.getMonth() + 1; 6624 6625 var countThisMonth = 0; 6626 var eventMap = {}; 6627 6628 $.each(dataArr, function (i, v) { 6629 var d = new Date(v.s_date); 6630 var year = d.getFullYear(); 6631 var month = d.getMonth() + 1; 6632
6633 if (year === currentYear && month === currentMonth) { 6634 countThisMonth++; 6635 var dateKey = v.s_date; // 'YYYY-MM-DD' 6636 var time = (v.fulltime === 'Y') ? 'ì¢ ì¼' : (v.s_time + ' ~ ' + v.e_time); 6637 if (!eventMap[dateKey]) eventMap[dateKey] = []; 6638 eventMap[dateKey].push( 6639 '<div class="event-memo"><span class="event-time">' + time + '</span>' + (v.memo || '') + '</div>' 6640 ); 6641 } 6642 }); 6643 6644 var html = ''; 6645 if (countThisMonth === 0) { 6646 html += '' 6647 + '<div class="event-date"></div>' 6648 + '<div class="event-memo"><span class="event-time noschedule">ì´ë²ë¬ ì¼ì ì´ ììµëë¤.</span></div><br>'; 6649 } else { 6650 var sortedDates = Object.keys(eventMap).sort(); 6651 $.each(sortedDates, function (i, date) { 6652 html += '<div class="event-date">' + date_string(date) + '</div>'; 6653 $.each(eventMap[date], function (j, memoHtml) { html += memoHtml; }); 6654 html += '<br>'; 6655 }); 6656 } 6657 6658 $mobile.append(html); 6659 } 6660 }); 6661 } else { 6662 var elsettings = JSON.parse(c.elsettings); 6663 instance.readChmod = elsettings.read_chmod; 6664 // instance.canShowAll = calendarShow(elsettings); 6665 calendarElsettings.set(pid, calendarShow(elsettings)); 6666 fetchMonth(pid, ym, data_type) 6667 .then(function(evts) { 6668 $.cl_calendar.instances[pid].events = evts || []; 6669 monthCache.set(ym, evts || []); 6670 $.cl_calendar.draw(pid, data_type, c); 6671 }).catch(function() { 6672 $.cl_calendar.draw(pid, data_type, c); 6673 }); 6674 } 6675 6676 6677 6678 }, 6679 draw: function(pid, type, c) { 6680 if(type) { 6681 if (!$.cl_calendar.instances[pid]) { 6682 // console.error(`draw called but instance for pid=${pid} is not initialized yet`); 6683 return; 6684 } 6685 var instance = $.cl_calendar.instances[pid]; 6686 const year = instance.currentDate.getFullYear();
6687 const month = instance.currentDate.getMonth(); 6688 6689 const firstDay = new Date(year, month, 1); 6690 const lastDay = new Date(year, month + 1, 0); 6691 const firstDayOfWeek = firstDay.getDay(); 6692 const prevLastDay = new Date(year, month, 0).getDate(); 6693 $('.userEL'+pid+' .days').empty(); 6694 6695 for (let i = firstDayOfWeek - 1; i >= 0; i--) { 6696 const day = prevLastDay - i; 6697 const curDate = new Date(year, month - 1, day); 6698 const dateString = formatDate(curDate); 6699 const dayElement = createDayElement(curDate, dateString, true, pid); 6700 $('.userEL'+pid+' .days').append(dayElement); 6701 } 6702 6703 for (let i = 1; i <= lastDay.getDate(); i++) { 6704 const curDate = new Date(year, month, i); 6705 const dateString = formatDate(curDate); 6706 const dayElement = createDayElement(curDate, dateString, false, pid); 6707 $('.userEL'+pid+' .days').append(dayElement); 6708 } 6709 6710 const totalCellsNeeded = Math.ceil((firstDayOfWeek + lastDay.getDate()) / 7) * 7; 6711 const nextMonthschedule = totalCellsNeeded - (firstDayOfWeek + lastDay.getDate()); 6712 6713 for (let i = 1; i <= nextMonthschedule; i++) { 6714 const curDate = new Date(year, month + 1, i); 6715 const dateString = formatDate(curDate); 6716 const dayElement = createDayElement(curDate, dateString, true, pid); 6717 $('.userEL'+pid+' .days').append(dayElement); 6718 } 6719 6720 var data_case = $('.userEL'+pid).attr('data-case'); //calendar1 check 6721 if(data_case == 'calendar1') { 6722 $('.userEL'+pid+' .date_wrap').siblings('.date_bullet').remove(); 6723 $('.userEL'+pid+' .date_wrap').remove(); 6724 $('.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>'); 6725 } 6726 } else { 6727 initCalendar(pid, c); 6728 } 6729 }, 6730 write: function(dateAttr, el) { 6731 selectedDate = dateAttr; 6732 openEventModal(dateAttr, el); 6733 }, 6734 modify: function(dateAttr, el, pid) { 6735 if (!$.cl_calendar.instances[pid]) { 6736 // console.error(`Calendar instance for pid=${pid} is not initialized yet`); 6737 return; 6738 } 6739 selectedDate = dateAttr; 6740 openEventList(dateAttr, $.cl_calendar.instances[pid].events, el); 6741 }, 6742 save: function(pid, el) { 6743 el = '.'+el+' '; 6744 const eventId = $(el+'#eventId').val(); 6745 const eventSeq = $(el+'#eventSeq').val(); 6746 const eventSid = $(el+'#eventSid').val(); 6747 const eventFulltime = ($(el+'#eventFulltime').val() != '' && $(el+'#eventFulltime').val() == 'Y') ? 'Y' : 'N'; 6748 const eventStartDate = $(el+'#eventStartDate').val(); 6749 const eventStartTime = ($(el+'#eventFulltime').val() != '' && $(el+'#eventFulltime').val() == 'Y') ? '' : $(el+'#eventStartTime').val(); 6750 const eventEndDate = $(el+'#eventEndDate').val(); 6751 const eventEndTime = ($(el+'#eventFulltime').val() != '' && $(el+'#eventFulltime').val() == 'Y') ? '' : $(el+'#eventEndTime').val(); 6752 const eventMemo = $(el+'#eventMemo').val(); 6753 6754 // ì í¨ì± ê²ì¬ 6755 if (!eventStartDate || (eventFulltime != 'Y' && !eventStartTime) || !eventEndDate || (eventFulltime != 'Y' && !eventEndTime) || !eventMemo) { 6756 alert('íì í목ì 모ë ì ë ¥í´ì£¼ì¸ì.'); 6757 return; 6758 } 6759 6760 // ì¢ ë£ì¼ìê° ììì¼ìë³´ë¤ ë¦ìì§ íì¸ 6761 const startDateTime = new Date(`${eventStartDate}T${eventStartTime}`); 6762 const endDateTime = new Date(`${eventEndDate}T${eventEndTime}`); 6763 6764 if (endDateTime <= startDateTime) { 6765 alert('ì¢ ë£ ì¼ìë ìì ì¼ìë³´ë¤ ëì¤ì´ì´ì¼ í©ëë¤.'); 6766 return; 6767 } 6768 6769 // ì´ë²¤í¸ ê°ì²´ ìì± 6770 const eventData = { 6771 sid: b.SID, 6772 seq: (eventSeq) ? eventSeq : '', 6773 pid: pid, 6774 month: eventStartDate.substring(0, 7), 6775 sdate: eventStartDate, 6776 stime: eventStartTime, 6777 edate: eventEndDate, 6778 etime: eventEndTime, 6779 fulltime: eventFulltime, 6780 notice: '', 6781 memo: eventMemo, 6782 check: 1 6783 }; 6784 6785 if(eventData['sid'] == '' || eventData['sid'] == undefined) return false;
6786 6787 var url = '/template/calendar'; 6788 // if(eventSeq) { 6789 // url = '/template/modify_calendar'; 6790 // } else { 6791 // url = '/template/calendar'; 6792 // } 6793 6794 var data_type = ($('.userEL'+pid).attr('data-modoo-type')) ? $('.userEL'+pid).attr('data-modoo-type') : ''; 6795 $.ajax({ 6796 url: url, 6797 data: { data: eventData }, 6798 type: 'POST', 6799 dataType: 'json', 6800 success: function(data) { 6801 checkError(data); 6802 $.cl_calendar.instances[pid].events = data || []; 6803 $.cl_calendar.draw(pid, data_type); 6804 }, 6805 error: function (xhr, status, error) { 6806 6807 } 6808 }); 6809 6810 // í¼ ì´ê¸°í 6811 $(el+'#eventForm')[0].reset(); 6812 $(el+'#eventId').val(''); 6813 $(el+'.modal-schedule').fadeOut(300); 6814 } 6815 } 6816 6817 // ë ì§ ì í´ë¦ ì´ë²¤í¸ (ëì ì¼ë¡ ìì±ë ììì ëí ì´ë²¤í¸ ì²ë¦¬) 6818 $(document).on('click', '.calendar .day_wrap', function() { 6819 // console.log(1212); 6820 var dateAttr = $(this).data('date'), 6821 isEvent = $(this).find('.event').length, 6822 el = '.' + $(this).closest('.calendar').attr('data-name'), 6823 pid = $(this).closest('.calendar').attr('data-id'); 6824 6825 var getYear = currentDate.getFullYear(), 6826 getMonth = String(currentDate.getMonth() + 1).padStart(2, "0"), // getMonthë 0~11ì´ë¯ë¡ +1 6827 yearMonth = getYear + '-' + getMonth; 6828 6829 if(isEvent > 0) { 6830 var parts = dateAttr.split('-'); 6831 var yearMonth = parts[0] + '-' + parts[1]; 6832 $.cl_calendar.init(b.SID, pid, yearMonth); 6833 $.cl_calendar.modify(dateAttr, el, pid); 6834 } 6835 }); 6836 6837 $(document).on('click', '.calendar ._prev_month_btn', function () { 6838 var pid = $(this).closest('.calendar').attr('data-id'); 6839 6840 // ì¬ê¸°! 6841 var instance = $.cl_calendar.instances[pid]; 6842 instance.currentDate.setMonth(instance.currentDate.getMonth() - 1); 6843 6844 var getYear = instance.currentDate.getFullYear(), 6845 getMonth = String(instance.currentDate.getMonth() + 1).padStart(2, "0"), 6846 yearMonth = getYear + '-' + getMonth, 6847 ym = getYear + '.' + getMonth; 6848 6849 $(this).siblings('.date_bullet').remove(); 6850 $(this).siblings('.date_wrap').remove(); 6851 $(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>'); 6852 6853 $.cl_calendar.init(b.SID, pid, yearMonth); 6854 }); 6855 6856 $(document).on('click', '.calendar ._next_month_btn', function () { 6857 var pid = $(this).closest('.calendar').attr('data-id'); 6858 6859 var instance = $.cl_calendar.instances[pid]; 6860 instance.currentDate.setMonth(instance.currentDate.getMonth() + 1); 6861 6862 var getYear = instance.currentDate.getFullYear(), 6863 getMonth = String(instance.currentDate.getMonth() + 1).padStart(2, "0"), 6864 yearMonth = getYear + '-' + getMonth, 6865 ym = getYear + '.' + getMonth; 6866 6867 $(this).siblings('.date_bullet').remove(); 6868 $(this).siblings('.date_wrap').remove(); 6869 $(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>'); 6870 6871 $.cl_calendar.init(b.SID, pid, yearMonth); 6872 }); 6873 6874 $(document).on('click', '.calendar ._today_btn', function() { 6875 var pid = $(this).closest('.calendar').attr('data-id'); 6876 var instance = $.cl_calendar.instances[pid]; 6877 instance.currentDate = new Date(); 6878 6879 var ym = instance.currentDate.getFullYear() + '.' + String(instance.currentDate.getMonth() + 1).padStart(2, "0"); 6880 $(this).parent('.calendar_btn_area').siblings('.date_bullet').remove(); 6881 $(this).parent('.calendar_btn_area').siblings('.date_wrap').remove(); 6882 $(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>'); 6883 6884 var yearMonth = instance.currentDate.getFullYear() + '-' + String(instance.currentDate.getMonth() + 1).padStart(2, "0"); 6885 $.cl_calendar.init(b.SID, pid, yearMonth); 6886 }); 6887 6888 // ëª¨ë¬ ë«ê¸° ë²í¼ í´ë¦ ì´ë²¤í¸ 6889 $(document).on('click','.calendar #cancelBtn, .calendar .modal-close', function() { 6890 closeEventModal(); 6891 }); 6892 6893 // ëª¨ë¬ ì¸ë¶ í´ë¦ ì ë«ê¸°
6894 $(document).on('click', '.calendar .modal-schedule', function(e) { 6895 if ($(e.target).hasClass('modal-schedule')) { 6896 closeEventModal(); 6897 } 6898 }); 6899 6900 $(document).on('click','.calendar .date._selectedCalendar',function(){ 6901 var el = '.userEL' + $(this).closest('.calendar').attr('data-id'); 6902 6903 // íì¬ ì íë ë ì ì¶ì¶ 6904 var currentYM = $(this).attr('data-val'); 6905 var parts = currentYM.split('.'); 6906 var selectedYear = parts[0]; 6907 var selectedMonth = parts[1].padStart(2, '0'); 6908 6909 // ì´ë¯¸ ì´ë ¤ìë¤ë©´ ì ê±° 6910 if($('.date_list_area._yearMonthList').length > 0){ 6911 $('.date_list_area._yearMonthList').remove(); 6912 return; 6913 } 6914 6915 // ì¼ìª½ ì°ë 리ì¤í¸ 6916 let currentYear = currentDate.getFullYear(); 6917 let startYear = currentYear - 8; 6918 let endYear = currentYear + 8; 6919 6920 let years = ''; 6921 for(let year = startYear; year <= endYear; year++) { 6922 let isSelected = (year == selectedYear) ? ' selected' : ''; 6923 years += `<div class="year_item${isSelected}" data-year="${year}">${year}</div>`; 6924 } 6925 6926 let months = ''; 6927 for(let month=1; month<=12; month++){ 6928 let mm = month.toString().padStart(2, '0'); 6929 let isSelected = (mm == selectedMonth) ? ' selected' : ''; 6930 months += `<a href="#" class="month_item${isSelected}" data-month="${mm}" data-year="${selectedYear}">${mm}</a>`; 6931 } 6932 6933 // HTML ëì ì½ì 6934 let html = ` 6935 <div class="mobile_back"><button class="mobile_close">â</button></div> 6936 <div class="date_list_area _calendarList _yearMonthList"> 6937 <div class="year_month_wrap"> 6938 <div class="year_list">${years}</div> 6939 <div class="month_list">${months}</div> 6940 </div> 6941 <div class="calendar_confirm_area"> 6942 <button type="button" class="btn_cancel">ì·¨ì</button> 6943 <button type="button" class="btn_confirm">íì¸</button> 6944 </div> 6945 </div>`; 6946 6947 $(this).after(html); 6948 6949 // ì°ë 리ì¤í¸ ì¤í¬ë¡¤ ì¤ì 6950 var selectedYearEl = $(el+' .year_item.selected')[0]; 6951 if(selectedYearEl) { 6952 selectedYearEl.scrollIntoView({block: "center", behavior: "smooth"}); 6953 } 6954 6955 // ì 리ì¤í¸ ì¤í¬ë¡¤ ì¤ì 6956 var selectedMonthEl = $(el+' .month_item.selected')[0]; 6957 if(selectedMonthEl) { 6958 selectedMonthEl.scrollIntoView({block: "center", behavior: "smooth"}); 6959 } 6960 6961 // ì°ë í´ë¦íë©´ ì 리ì¤í¸ ê°±ì 6962 $(el+' .year_item').on('click', function(){ 6963 let selectedYear = $(this).data('year'); 6964 $(el+' .year_item').removeClass('selected'); 6965 $(this).addClass('selected'); 6966 6967 let monthsHtml = ''; 6968 for(let month=1; month<=12; month++){ 6969 let mm = month.toString().padStart(2, '0'); 6970 monthsHtml += `<a href="#" class="month_item" data-month="${mm}" data-year="${selectedYear}">${mm}</a>`; 6971 } 6972 $(el+' .month_list').html(monthsHtml); 6973 6974 // ì í´ë¦ ë¤ì ë°ì¸ë© 6975 bindMonthClick(); 6976 }); 6977 6978 function bindMonthClick(){ 6979 $(el+' .month_item').on('click', function(e){ 6980 e.preventDefault(); 6981 $(el+' .month_item').removeClass('selected'); 6982 $(this).addClass('selected'); 6983 $(el+' .date._selectedCalendar').data('tempYear', $(this).data('year')); 6984 $(el+' .date._selectedCalendar').data('tempMonth', $(this).data('month')); 6985 }); 6986 } 6987 bindMonthClick(); 6988 6989 // ì·¨ì 6990 $(el+' .btn_cancel, '+el+' .mobile_close').on('click', function(){ 6991 $(el+' .mobile_back').remove(); 6992 $(el+' .date_list_area._yearMonthList').remove(); 6993 }); 6994 6995 // íì¸ 6996 $(el+' .btn_confirm').on('click', function(){ 6997 let year = $(el+' .date._selectedCalendar').data('tempYear'); 6998 let month = $(el+' .date._selectedCalendar').data('tempMonth'); 6999 var pid = $(this).closest('.calendar').attr('data-id'), 7000 yearMonth = year + '-' + month; 7001 7002 if(year && month){ 7003 $(el+' .date._selectedCalendar').text(`${year}.${month}`).attr('data-val', `${year}-${month}`); 7004 } 7005 $(el+' .date_list_area._yearMonthList').remove(); 7006 7007 $.cl_calendar.init(b.SID, pid, yearMonth); 7008 }); 7009 }); 7010 7011 // ë ì§/ìê°ì í ampm 7012 $(document).off('click.clockToggle').on('click.clockToggle', '.calendar .calendarModal .timeselector .select:not(.ampm) .selector', function(e){ 7013 e.preventDefault(); 7014 e.stopPropagation(); 7015 const $sel = $(this).closest('.select'); 7016 const $field = $sel.closest('.modal-field'); 7017 7018 // â ëë¡ ë«íì ì ì ë¬´ë ¥ííë ë½ 7019 $field.data('dropOpenLock', true); 7020 setTimeout(()=>{ $field.removeData('dropOpenLock'); }, 150); 7021 7022 $sel.find('.drop').toggle(); 7023 $sel.siblings('.select').children('.drop').hide(); 7024 }); 7025 $(document).on('click.clockCloseOnPick', '.calendar .calendarModal .timeselector .select .drop li', function (e) { 7026 e.stopPropagation(); 7027 const $sel = $(this).closest('.select'); 7028 setTimeout(() => { $sel.find('.drop').hide(); }, 0); 7029 }); 7030 $(document).on('click.clockWidgetArea', '.calendar .bootstrap-datetimepicker-widget', function (e) { 7031 if ($(e.target).closest('.custom-clock .select').length === 0) { 7032 $(this).find('.custom-clock .select .drop').hide(); 7033 } 7034 }); 7035 $(document).on('click', '.calendar .calendarModal .timeselector .select.ampm .selector', function () { 7036 const $sel = $(this); 7037 const $field = $sel.closest('.modal-field'); 7038 const $input = $field.find('input.daytime'); 7039 const dp = getDp($field, $input); 7040 if (!dp) return; 7041 7042 const m = dp.date() ? dp.date().clone() : moment(); 7043 const curType = ($sel.attr('data-value') || $sel.attr('data-type') || (m.hour() >= 12 ? 'pm' : 'am')).toLowerCase(); 7044 const nextType = (curType === 'am') ? 'pm' : 'am'; 7045 7046 let H = m.hour(); 7047 if (nextType === 'am') { if (H >= 12) H -= 12; } else { if (H < 12) H += 12; } 7048 m.hour(H).second(0); 7049 dp.date(m); 7050 7051 $sel.text(($.lang?.[$field.closest('.calendar').hasClass('en')?'en':'ko']?.['sc.banner.'+nextType]) || nextType.toUpperCase()) 7052 .attr({'data-value': nextType, 'data-type': nextType}); 7053 7054 $sel.closest('.custom-clock').find('.select .drop').hide(); 7055 }); 7056 $(document).on('click', '.calendar .calendarModal .timeselector .select.hour .drop li', function () { 7057 const $li = $(this); 7058 const $field = $li.closest('.modal-field'); 7059 const $input = $field.find('input.daytime'); 7060 const dp = getDp($field, $input); 7061 if (!dp) return; 7062 7063 const m = dp.date() ? dp.date().clone() : moment(); 7064 7065 const $ampmSel = $li.closest('.timeselector').find('.select.ampm .selector'); 7066 const ampm = ($ampmSel.attr('data-value') || $ampmSel.attr('data-type') || (m.hour() >= 12 ? 'pm' : 'am')).toLowerCase(); 7067 7068 const hourStr = $li.attr('data-value') || $li.text().trim(); 7069 const h12 = parseInt(hourStr, 10) || 12; 7070 const h24 = (ampm === 'pm') ? (h12 % 12) + 12 : (h12 % 12); 7071 7072 m.hour(h24).second(0); 7073 dp.date(m); 7074 7075 const pad = (n)=> (n<10 ? '0'+n : ''+n); 7076 $li.closest('.select.hour').children('.selector').text(pad((h24 % 12) || 12)) 7077 .attr('data-type', hourStr); 7078 7079 $li.closest('.custom-clock').find('.select .drop').hide(); 7080 }); 7081 $(document).on('click', '.calendar .calendarModal .timeselector .select.minute .drop li', function () { 7082 const $li = $(this); 7083 const $field = $li.closest('.modal-field'); 7084 const $input = $field.find('input.daytime'); 7085 const dp = getDp($field, $input); 7086 if (!dp) return; 7087 7088 const minStr = $li.attr('data-value') || $li.text().trim();
7089 let mm = parseInt(minStr, 10); if (isNaN(mm)) mm = 0; 7090 7091 const m = dp.date() ? dp.date().clone() : moment(); 7092 m.minute(Math.max(0, Math.min(59, mm))).second(0); 7093 dp.date(m); 7094 7095 const pad = (n)=> (n<10 ? '0'+n : ''+n); 7096 $li.closest('.select.minute').children('.selector').text(pad(mm)).attr('data-type', pad(mm)); 7097 7098 // $li.closest('.custom-clock').find('.select .select .drop').hide(); 7099 $li.closest('.custom-clock').find('.select .drop').hide(); 7100 }); 7101 7102 7103 /////// calendar2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 7104 function calendarOverlayIn(pid) { 7105 $('.userEL'+pid).addClass('modal-open'); 7106 } 7107 function calendarOverlayOut(pid) { 7108 $('.userEL'+pid).removeClass('modal-open'); 7109 } 7110 function nowTime(){ return new Date(); } 7111 7112 function readMomentFromField($field){ 7113 const $input = $field.find('input.daytime'); 7114 const dp = getDp($field, $input); 7115 if (dp && dp.date && dp.date()) return dp.date().clone(); 7116 const raw = $input.attr('data-raw') || $input.val(); 7117 return raw ? moment(parseToDate(raw)) : null; 7118 } 7119 7120 /** End íëì 커ì¤í clockìì Startë³´ë¤ ì´ì ìê°ë¤ì disabled ì²ë¦¬ */ 7121 function applyEndTimeDisables($endField){ 7122 const $overlay = $endField.closest('.calendar-modal-overlay'); 7123 const $sField = $overlay.find('.modal-field.sdate'); 7124 const start = readMomentFromField($sField); 7125 if (!start) return; // ììì´ ìì¼ë©´ ì í ìì 7126 7127 const $endInput = $endField.find('input.daytime'); 7128 const dpEnd = getDp($endField, $endInput); 7129 const end = dpEnd && dpEnd.date ? dpEnd.date().clone() : null; 7130 7131 // 1) minDateë 'ë ì§ ë¨ì'ë¡, 'ë³ê²½ë ëë§' ì¸í (ë¶íìí 리ë ë ë°©ì§) 7132 if (dpEnd && typeof dpEnd.minDate === 'function') { 7133 const wantMin = start.clone().startOf('day'); 7134 let curMin = null; 7135 try { curMin = dpEnd.minDate && dpEnd.minDate(); } catch(e){} 7136 if (!curMin || !moment.isMoment(curMin) || !curMin.isSame(wantMin, 'day')) { 7137 dpEnd.minDate(wantMin); 7138 } 7139 } 7140 7141 const $clock = $endField.find('.custom-clock'); 7142 if (!$clock.length) return; 7143 7144 const ampmSel = ($clock.find('.select.ampm .selector').attr('data-type') || ((end && end.hour()>=12) ? 'pm' : 'am')).toLowerCase(); 7145 const h12Sel = parseInt($clock.find('.select.hour .selector').text(), 10) || 12; 7146 const mSel = parseInt($clock.find('.select.minute .selector').text(), 10) || 0; 7147 const sameDay = end ? end.isSame(start, 'day') : true; 7148 const toH24 = (h12, ap) => (ap==='pm' ? (h12%12)+12 : (h12%12)); 7149 7150 // 2) equal-case ê°ì 리íì¸í¸ë 'ìê°/ë¶ ëë¡ì´ ì´ë ¤ ìì ëë§' 7151 // (= ë ì§(day) ì í´ë¦ ì¤ì ì ë ì¤ííì§ ìì) 7152 const timeDropOpen = $endField.find('.custom-clock .select .drop:visible').length > 0; 7153 if (dpEnd && end && start && end.isSame(start) && timeDropOpen) { 7154 $endField.data('suppressDropAutoHide', true); 7155 if (typeof dpEnd.viewDate === 'function') dpEnd.viewDate(end.clone()); 7156 dpEnd.date(end.clone().add(1,'ms')); 7157 dpEnd.date(end.clone()); 7158 setTimeout(() => { $endField.removeData('suppressDropAutoHide'); }, 80); 7159 } 7160 7161 // 1) AM/PM ëë¡ í목 7162 $clock.find('.select.ampm .drop li').each(function(){ 7163 const v = ($(this).attr('data-value')||'am').toLowerCase(); 7164 const h24 = toH24(h12Sel, v); 7165 const cand = (end ? end.clone() : start.clone()).hour(h24).minute(mSel).second(0); 7166 const dis = sameDay && cand.isBefore(start); 7167 $(this).toggleClass('disabled', dis).attr('aria-disabled', dis ? 'true' : null); 7168 }); 7169 7170 // 2) ìê° ëë¡ í목 7171 $clock.find('.select.hour .drop li').each(function(){ 7172 const h12 = parseInt($(this).attr('data-value') || $(this).text(), 10) || 12; 7173 const h24 = toH24(h12, ampmSel); 7174 const cand = (end ? end.clone() : start.clone()).hour(h24).minute(mSel).second(0); 7175 const dis = sameDay && cand.isBefore(start); 7176 $(this).toggleClass('disabled', dis).attr('aria-disabled', dis ? 'true' : null); 7177 }); 7178 7179 // 3) ë¶ ëë¡ í목 7180 $clock.find('.select.minute .drop li').each(function(){ 7181 const mm = parseInt($(this).attr('data-value') || $(this).text(), 10) || 0; 7182 const h24 = toH24(h12Sel, ampmSel); 7183 const cand = (end ? end.clone() : start.clone()).hour(h24).minute(mm).second(0); 7184 const dis = sameDay && cand.isBefore(start); 7185 $(this).toggleClass('disabled', dis).attr('aria-disabled', dis ? 'true' : null); 7186 }); 7187 } 7188
7189 function isAllDayByField($hostField){ 7190 const $overlay = $hostField.closest('.calendar-modal-overlay'); 7191 return $overlay.find('.all .all-day').is(':checked'); 7192 } 7193 7194 function ensureCustomClock($hostField, locale) { 7195 const $overlay = $hostField.closest('.calendar-modal-overlay'); 7196 if (!$overlay.length || !$overlay.is(':visible')) return; 7197 7198 const dp = getDp($hostField, $hostField.find('input.daytime')); 7199 7200 let $widget = null; 7201 if (dp) { 7202 try { 7203 const w = (typeof dp.widget === 'function') ? dp.widget() : dp.widget; 7204 if (w) $widget = (w.jquery ? w : $(w)); 7205 } catch (e) { /* no-op */ } 7206 } 7207 if (!$widget || !$widget.length) { 7208 $widget = $hostField.find('.bootstrap-datetimepicker-widget:visible').last(); 7209 if (!$widget.length) $widget = $('.bootstrap-datetimepicker-widget:visible').last(); 7210 } 7211 if (!$widget || !$widget.length || !$widget.is(':visible')) return; 7212 7213 let $list = $widget.find('ul.list-unstyled').first(); 7214 let $timeArea = $widget.find('li.timepicker, .timepicker').last(); 7215 if (!$list.length && $timeArea.length) $list = $timeArea.closest('ul.list-unstyled'); 7216 if (!$list.length) $list = $widget; 7217 7218 // ì´ë¯¸ ìì±ëì´ ìì¼ë©´ ì¢ ë£ 7219 if ($list.find('.custom-clock-li, .custom-clock').length) return; 7220 7221 const allDay = isAllDayByField($hostField); 7222 7223 // ìì ¯ì 기본 timepicker DOMì all-dayë©´ ì¨ê²¨ë¡ëë¤ 7224 if ($timeArea.length) $timeArea.remove(); 7225 7226 const cur = (dp && dp.date) ? dp.date() : moment(); 7227 const H = cur.hour(), M = cur.minute(); 7228 const LANG = locale; 7229 const amLabel = ($.lang?.[LANG]?.['sc.banner.am']) || 'AM'; 7230 const pmLabel = ($.lang?.[LANG]?.['sc.banner.pm']) || 'PM'; 7231 const ampmType = (H >= 12) ? 'pm' : 'am'; 7232 const h12 = ((H % 12) || 12); 7233 const pad = (n)=> (n<10 ? '0'+n : ''+n); 7234 7235 // ê³µíµ: ì·¨ì/ì ì¥ ë²í¼ ë¸ë (ìê³ ì 무 ìê´ìì´ íì) 7236 const buttonsHtml = ` 7237 <tr> 7238 <td class="btnbox"> 7239 <div class="calendar-period-btn"> 7240 <span class="calendar-period-close">${($.lang?.[LANG]?.['config.cancel']) || 'Cancel'}</span> 7241 </div> 7242 <div class="calendar-period-btn"> 7243 <span class="calendar-period-save">${($.lang?.[LANG]?.['config.save']) || 'Save'}</span> 7244 </div> 7245 </td> 7246 </tr>`; 7247 7248 let bodyHtml = ''; 7249 if (!allDay) { 7250 // ââ ìê³ + ë²í¼ (기존과 ëì¼) 7251 let lisHour = ''; for (let i=1;i<=12;i++) lisHour += `<li data-value="${pad(i)}">${pad(i)}</li>`; 7252 let lisMin = ''; for (let j=0;j<=59;j++) lisMin += `<li data-value="${pad(j)}">${pad(j)}</li>`; 7253 bodyHtml = ` 7254 <tr class="timeselector"> 7255 <td class="btnbox"> 7256 <div> 7257 <ul class="select ampm"> 7258 <li class="selector" data-type="${ampmType}">${ampmType==='pm'?pmLabel:amLabel}</li> 7259 <ul class="drop"><li data-value="am">${amLabel}</li><li data-value="pm">${pmLabel}</li></ul> 7260 </ul> 7261 <ul class="select hour"> 7262 <li class="selector">${pad(h12)}</li> 7263 <ul class="drop">${lisHour}</ul> 7264 </ul> 7265 <ul class="separator"> : </ul> 7266 <ul class="select minute"> 7267 <li class="selector">${pad(M)}</li> 7268 <ul class="drop">${lisMin}</ul> 7269 </ul> 7270 </div> 7271 </td> 7272 </tr> 7273 ${buttonsHtml}`; 7274 } else { 7275 // ââ ë²í¼ë§ (ë¬ë ¥ + ë²í¼) 7276 bodyHtml = buttonsHtml; 7277 } 7278 7279 const clockLi = $(` 7280 <li class="custom-clock-li"> 7281 <div class="custom-clock ${allDay ? 'clock-compact' : 'clock-full'}"> 7282 <table class="table-condensed"> 7283 ${bodyHtml} 7284 </table> 7285 </div> 7286 </li>`); 7287 7288 const $timeLi = $list.find('li.timepicker, .timepicker').last(); 7289 if ($timeLi.length) $timeLi.after(clockLi); else $list.append(clockLi); 7290 7291 const $clock = clockLi.find('.custom-clock'); 7292 7293 // ë²í¼ ëì 7294 $clock.off('click.clockBtns') 7295 .on('click.clockBtns', '.calendar-period-save', function () { 7296 const $hostField = $(this).closest('.modal-field'); 7297 const $input = $hostField.find('input.daytime'); 7298 const $overlay = $hostField.closest('.calendar-modal-overlay'); 7299 const locale = $overlay.closest('.calendar').hasClass('en') ? 'en' : 'ko'; 7300 const dpStart = getDp($hostField, $input);
7301 const isAllDay = isAllDayByField($hostField); 7302 7303 if (dpStart && dpStart.date()) { 7304 $hostField.data('commitFlag', true); 7305 7306 // ì ì¥ ì íì/ë°ì´í° íì ë¶ê¸° 7307 let m = dpStart.date().clone(); 7308 if (isAllDay) m = m.startOf('day'); // ë ì§ë§ ì미 7309 7310 // start ì ì¥ ë¡ì§ ì ì§ + end ë³´ì 7311 if ($hostField.hasClass('sdate')) { 7312 const $endField = $overlay.find('.modal-field.edate'); 7313 const $endInput = $endField.find('input.daytime'); 7314 const dpEnd = getDp($endField, $endInput); 7315 7316 // end ê° ì½ê¸° 7317 let end = dpEnd && dpEnd.date() ? dpEnd.date().clone() : null; 7318 if (!end) { 7319 const rawEnd = $endInput.attr('data-raw') || $endInput.val(); 7320 if (rawEnd) end = moment(parseToDate(rawEnd)); 7321 } 7322 7323 // start > endì´ë©´ end ìë ë³´ì (all-dayë©´ ê°ì ë ì§, ìê°ì ì미 ìì) 7324 if (!end || m.isAfter(end)) { 7325 // const newEnd = isAllDay ? m.clone() : m.clone().add(1, 'hours'); 7326 const newEnd = isAllDay ? m.clone() : m.clone(); 7327 if (dpEnd && typeof dpEnd.date === 'function') dpEnd.date(newEnd.clone()); 7328 7329 const rawStrEnd = isAllDay ? newEnd.format('YYYY-MM-DD') : newEnd.format('YYYY-MM-DD HH:mm'); 7330 const dispEndHTML = formatDateLocalized(rawStrEnd, locale, 1); 7331 const dispEndTEXT = formatDateLocalized(rawStrEnd, locale); 7332 7333 $endInput.attr('data-raw', rawStrEnd).val(dispEndTEXT).removeClass('empty'); 7334 7335 const $endView = $endField.find('.daytime-html'); 7336 if ($endView.length) { 7337 $endView.attr('data-raw', rawStrEnd).html(dispEndHTML); 7338 } 7339 7340 $endField.data('commitFlag', true); 7341 } 7342 } else if ($hostField.hasClass('edate')) { 7343 const $startField = $overlay.find('.modal-field.sdate'); 7344 const $startInput = $startField.find('input.daytime'); 7345 const dpStartInstance = getDp($startField, $startInput); // sdate 7346 const $endField = $overlay.find('.modal-field.edate'); 7347 const $endInput = $endField.find('input.daytime'); 7348 const dpEnd = dpStart; // hostField=edate 7349 7350 // 1) ìì(moment) ì½ê¸° 7351 let start = dpStartInstance && dpStartInstance.date() ? dpStartInstance.date().clone() : null; 7352 if (!start) { 7353 const rawStart = $startInput.attr('data-raw') || $startInput.val(); 7354 if (rawStart) start = moment(parseToDate(rawStart)); 7355 } 7356 7357 // 2) end í보를 "커ì¤í ìê³ ì íê°"ì¼ë¡ ì§ì 조립 7358 const isAllDay = isAllDayByField($hostField); 7359 const gran = isAllDay ? 'day' : 'minute'; 7360 const norm = d => d ? d.clone().seconds(0).milliseconds(0) : null; 7361 7362 let endCandidate; 7363 if (isAllDay) { 7364 // ì¢ ì¼ì ë ì§ë§ ë¹êµíë©´ ëë¯ë¡, dpì ë ì§(ëë start)ë¡ ì¡°ë¦½ 7365 endCandidate = (dpEnd && dpEnd.date ? dpEnd.date().clone() : (start || moment())).startOf('day'); 7366 } else { 7367 // 커ì¤í ìê³ìì AM/PM, ì, ë¶ ì½ê¸° 7368 const $clock = $hostField.find('.custom-clock'); 7369 const ap = ($clock.find('.select.ampm .selector').attr('data-type') || 'am').toLowerCase(); 7370 const h12Str = $clock.find('.select.hour .selector').text().trim() || '12'; 7371 const minStr = $clock.find('.select.minute .selector').text().trim() || '00'; 7372 const toH24 = (h12, ap) => ap==='pm' ? (h12%12)+12 : (h12%12); 7373 const h24 = toH24(parseInt(h12Str,10)||12, ap); 7374 const mm = Math.max(0, Math.min(59, parseInt(minStr,10)||0)); 7375 7376 // ê°ì "ë ì§" ìì ìê°ë§ ë®ì´ì°ê¸° (dpEndê° ìì¼ë©´ ê·¸ ë ì§ ì¬ì©, ìì¼ë©´ start ë ì§ ì¬ì©) 7377 const base = (dpEnd && dpEnd.date ? dpEnd.date().clone() : (start || moment())); 7378 endCandidate = base.clone().hours(h24).minutes(mm).seconds(0).milliseconds(0); 7379 } 7380 7381 const startNorm = norm(start); 7382 const endNorm = norm(endCandidate); 7383 7384 // 3) ì ì¥ ìì ë³´ì : end < startë©´ end = start 7385 const correctedEnd = (startNorm && endNorm && endNorm.isBefore(startNorm, gran)) 7386 ? startNorm.clone() 7387 : endNorm.clone(); 7388 7389 // 4) ìì ¯/ë·° ê°±ì ì correctedEnd ê¸°ì¤ 7390 if (dpEnd && typeof dpEnd.date === 'function') { 7391 $hostField.data('suppressHide', true); 7392 if (typeof dpEnd.minDate === 'function') dpEnd.minDate(startNorm ? startNorm.clone().startOf('day') : false); 7393 if (typeof dpEnd.viewDate === 'function') dpEnd.viewDate(correctedEnd.clone()); 7394 dpEnd.date(correctedEnd.clone()); // (íìì 1ms íë¤ê¸° ì¶ê° ê°ë¥) 7395 setTimeout(() => { $hostField.removeData('suppressHide'); }, 0); 7396 } 7397 7398 // 5) í기/ì ì¥ë correctedEndë§ ì¬ì©
7399 const rawStrEnd = isAllDay ? correctedEnd.format('YYYY-MM-DD') 7400 : correctedEnd.format('YYYY-MM-DD HH:mm'); 7401 const dispEndHTML = formatDateLocalized(rawStrEnd, locale, 1); 7402 const dispEndTEXT = formatDateLocalized(rawStrEnd, locale); 7403 7404 $endInput.attr('data-raw', rawStrEnd).val(dispEndTEXT).removeClass('empty'); 7405 const $endView = $hostField.find('.daytime-html'); 7406 if ($endView.length) $endView.attr('data-raw', rawStrEnd).html(dispEndHTML); 7407 7408 try { applyEndTimeDisables($hostField); } catch(e){} 7409 try { if (typeof paintActiveDay === 'function') paintActiveDay($hostField, correctedEnd.clone()); } catch(e){} 7410 7411 $hostField.data('commitFlag', true); 7412 } 7413 7414 // íì¬ ì´ë ¤ìë ì´ í¼ì»¤ ë«ê¸° 7415 if (dpStart && dpStart.hide) dpStart.hide(); 7416 } 7417 }) 7418 .on('click.clockBtns', '.calendar-period-close', function () { 7419 const $hostField = $(this).closest('.modal-field'); 7420 $hostField.data('commitFlag', false); 7421 const dp = getDp($hostField, $hostField.find('input.daytime')); 7422 dp && dp.hide && dp.hide(); 7423 }); 7424 } 7425 7426 function closeOtherPickers($overlay, $currentField){ 7427 $overlay.find('.modal-field').each(function(){ 7428 if (this === $currentField[0]) return; 7429 const dp = $(this).data('DateTimePicker'); 7430 if (dp && typeof dp.hide === 'function') dp.hide(); 7431 }); 7432 $overlay.find('.custom-clock .select .drop').hide(); 7433 } 7434 7435 function getDp($field, $input){ 7436 return $field.data('DateTimePicker') || $input.data('DateTimePicker'); 7437 } 7438 7439 $(document).on('click', '.calendar .modal-field .daytime', function(e) { 7440 e.stopPropagation(); 7441 const $input = $(this); 7442 const $field = $input.closest('.modal-field'); 7443 const $overlay = $input.closest('.calendar-modal-overlay'); 7444 const $cal = $input.closest('.calendar'); 7445 const locale = $cal.hasClass('en') ? 'en' : 'ko'; 7446 const lang = locale; 7447 7448 closeOtherPickers($overlay, $field); 7449 7450 var allDay = $field.siblings('.all').find('.all-day').is(':checked'); 7451 const periodOptions = { 7452 format: allDay ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm', 7453 dayViewHeaderFormat: 'YYYY. MM', 7454 minDate: false, 7455 disabledDates: false, 7456 useCurrent: false, 7457 focusOnShow: false, 7458 keepOpen: true, 7459 debug: true, 7460 allowInputToggle: true, 7461 sideBySide: false, 7462 locale: lang, 7463 ignoreReadonly: true, 7464 widgetParent: $field, 7465 widgetPositioning: { horizontal: 'auto', vertical: 'bottom' } 7466 }; 7467 7468 let dp = $field.data('DateTimePicker'); 7469 if (dp) { 7470 if (typeof dp.show === 'function') dp.show(); 7471 else { try { $field.datetimepicker('show'); } catch(e){} } 7472 ensureCustomClock($field, locale); 7473 return; 7474 } 7475 7476 if (typeof $field.datetimepicker !== 'function') { 7477 console.error('bootstrap-datetimepickerê° ë¡ëëì§ ìììµëë¤.'); 7478 return; 7479 } 7480 7481 $field.datetimepicker(periodOptions) 7482 .on('dp.show', function(){ 7483 if (!$('.calendar-dp-overlay').length) { 7484 $('<div class="calendar-dp-overlay"></div>').appendTo('.calendar-modal-body'); 7485 } 7486 7487 closeOtherPickers($overlay, $field); 7488 7489 const dp = $field.data('DateTimePicker'); 7490 const raw = $input.attr('data-raw'); 7491 const origDisplay = $input.val(); 7492 const origRaw = raw || ''; 7493 const base = raw ? moment(parseToDate(raw)) : (dp && dp.date() ? dp.date().clone() : moment(nowTime())); 7494 7495 $field.data('origDisplay', origDisplay); 7496 $field.data('origRaw', origRaw); 7497 $field.data('origDate', base.clone()); 7498 $field.data('commitFlag', false); 7499 7500 if (dp && (!dp.date() || !dp.date().isSame(base))) dp.date(base.clone()); 7501 7502 setTimeout(() => { 7503 ensureCustomClock($field, locale); 7504 if ($field.hasClass('edate')) applyEndTimeDisables($field); 7505 }, 0); 7506 }) 7507 7508 .on('dp.change', function(){ 7509 const $field = $(this); 7510 const locale = $field.closest('.calendar').hasClass('en') ? 'en' : 'ko'; 7511 7512 setTimeout(() => { 7513 ensureCustomClock($field, locale); 7514 if ($field.hasClass('edate')) applyEndTimeDisables($field); 7515 7516 // â íë¡ê·¸ë¨ì ë³ê²½(equals 리íì¸í¸) or ëë¡ ë°©ê¸ ì´ë¦¼ â ë«ê¸° ì¤íµ 7517 if ($field.data('suppressDropAutoHide') || $field.data('dropOpenLock')) return; 7518 7519 // íììë ë«ê¸° 7520 $field.find('.custom-clock .select .drop').hide(); 7521 }, 0); 7522 }) 7523 7524 .on('dp.hide', function(){ 7525 const $field = $(this); 7526 const $input = $field.find('input.daytime'); 7527 const $view = $field.find('.daytime-html'); // íìì© span 7528 const dp = $field.data('DateTimePicker'); 7529 const committed = !!$field.data('commitFlag'); 7530 const origDate = $field.data('origDate'); 7531 const origDisp = $field.data('origDisplay'); 7532 const origRaw = $field.data('origRaw'); 7533 7534 const localeCur = $field.closest('.calendar').hasClass('en') ? 'en' : 'ko'; 7535 7536 $('.calendar-dp-overlay').remove(); 7537 7538 if (!committed) { 7539 if (dp && origDate) dp.date(origDate.clone()); 7540
7541 const isAllDayNow = isAllDayByField($field); 7542 const rollbackIso = origRaw || (origDate ? (isAllDayNow ? origDate.format('YYYY-MM-DD') : origDate.format('YYYY-MM-DD HH:mm')) : null); 7543 7544 if (rollbackIso) { 7545 // â¬â¬ ì¬ê¸°: HTML/í ì¤í¸ë¥¼ í¨ìì 3ë²ì§¸ ì¸ìë¡ ì§ì ë¶ê¸° 7546 const dispHTML = formatDateLocalized(rollbackIso, localeCur, 1); // spanì©(HTML) 7547 const dispTEXT = formatDateLocalized(rollbackIso, localeCur); // inputì©(í ì¤í¸) 7548 7549 $input.attr('data-raw', rollbackIso).val(dispTEXT).removeClass('empty'); 7550 if ($view.length) $view.attr('data-raw', rollbackIso).html(dispHTML); 7551 7552 } else { 7553 if (typeof origDisp !== 'undefined') $input.val(origDisp); 7554 if (typeof origRaw !== 'undefined') $input.attr('data-raw', origRaw); 7555 7556 if ($view.length) { 7557 if (typeof origRaw !== 'undefined') { 7558 // â¬â¬ ì¬ê¸°: íìì©ì HTMLë¡ 7559 const dispHTML0 = formatDateLocalized(origRaw, localeCur, 1); 7560 $view.attr('data-raw', origRaw).html(dispHTML0); 7561 } else if (typeof origDisp !== 'undefined') { 7562 $view.text(origDisp); 7563 } else { 7564 $view.text(''); 7565 } 7566 } 7567 } 7568 } else { 7569 const m = dp && dp.date() ? dp.date().clone() : null; 7570 if (m) { 7571 const isAllDayNow = isAllDayByField($field); 7572 const iso = isAllDayNow ? m.format('YYYY-MM-DD') : m.format('YYYY-MM-DD HH:mm'); 7573 const dispHTML = formatDateLocalized(iso, localeCur, 1); // spanì©(HTML) 7574 const dispTEXT = formatDateLocalized(iso, localeCur); // inputì©(í ì¤í¸) 7575 7576 $input.attr('data-raw', iso).val(dispTEXT).removeClass('empty'); 7577 if ($view.length) $view.attr('data-raw', iso).html(dispHTML); 7578 } 7579 } 7580 7581 $field.removeData('origDisplay') 7582 .removeData('origRaw') 7583 .removeData('origDate') 7584 .removeData('commitFlag'); 7585 7586 $field.find('.custom-clock .select .drop').hide(); 7587 }); 7588 7589 const inst = $field.data('DateTimePicker'); 7590 if (inst && typeof inst.show === 'function') inst.show(); 7591 else { try { $field.datetimepicker('show'); } catch(e){} } 7592 }); 7593 7594 $(document).on('click', '.calendar .col-box', function(e) { 7595 var isOpen = $(this).closest('.cfull-box').hasClass('open'); 7596 if(isOpen) { 7597 $(this).closest('.cfull-box').removeClass('open'); 7598 } else { 7599 $(this).closest('.cfull-box').addClass('open'); 7600 } 7601 }); 7602 7603 $(document).on('click', '.calendar .scheduleColor', function() { 7604 var colorpick = $(this).attr('data-color'); 7605 $(this).closest('.ccol-box').siblings('.col-box').find('.scheduleColorPicker').css('background-color', colorpick).attr('data-color', colorpick); 7606 $(this).closest('.cfull-box').removeClass('open'); 7607 }); 7608 7609 $(document).on('click', function(e) { 7610 if (!$(e.target).closest('.col-box').length) { 7611 $('.cfull-box').removeClass('open'); 7612 } 7613 }); 7614 7615 // ë«ê¸° ë²í¼ 7616 $(document).on('click', '.calendar .modal-close', function(){ 7617 var pid = $(this).closest('.calendar').attr('data-id'); 7618 $(this).closest(".calendar-modal-overlay").fadeOut(200, function(){ 7619 $(this).remove(); 7620 }); 7621 calendarOverlayOut(pid); 7622 }); 7623 7624 $(document).on('click', '.calendar .all-day', function(e) { 7625 e.stopPropagation(); 7626 var checked = ($(this).is(':checked')) ? true : false, 7627 $overlay = $(this).closest('.calendar-modal-overlay'), 7628 locale = ($(this).closest('.calendar').hasClass('en')) ? 'en' : 'ko', 7629 sdate1 = $overlay.find('.sdate .start').val(), 7630 sdate2 = $overlay.find('.sdate .start').attr('data-raw'), 7631 edate1 = $overlay.find('.edate .end').val(), 7632 edate2 = $overlay.find('.edate .end').attr('data-raw'), 7633 sdate1_only = sdate1 ? (sdate1.split(' ')[0] + ' ' + sdate1.split(' ')[1]) : '', 7634 sdate2_only = sdate2 ? sdate2.split(' ')[0] : '', 7635 edate1_only = edate1 ? (edate1.split(' ')[0] + ' ' + edate1.split(' ')[1]) : '', 7636 edate2_only = edate2 ? edate2.split(' ')[0] : '', 7637 time_lang_start = (locale == 'en') ? ' 12:00 PM' : ' ì¤í 12:00'; 7638 time_lang_end = (locale == 'en') ? ' 1:00 PM' : ' ì¤í 1:00'; 7639 7640 // 1) íì 문ìì´/ììê° ë기í (기존 ë¡ì§ ì ì§) 7641 if(checked) {
7642 $overlay.find('.sdate .start').val(sdate1_only); 7643 $overlay.find('.sdate .start').attr('data-raw', sdate2_only); 7644 $overlay.find('.edate .end').val(edate1_only); 7645 $overlay.find('.edate .end').attr('data-raw', edate2_only); 7646 $overlay.find('.stimepicker .tt').remove(); 7647 $overlay.find('.etimepicker .tt').remove(); 7648 } else { 7649 $overlay.find('.sdate .start').val(sdate1_only + time_lang_start); 7650 $overlay.find('.sdate .start').attr('data-raw', sdate2_only + ' 12:00'); 7651 $overlay.find('.edate .end').val(edate1_only + time_lang_end); 7652 $overlay.find('.edate .end').attr('data-raw', edate2_only + ' 13:00'); 7653 $overlay.find('.stimepicker').append('<span class="tt">' + time_lang_start + '</span>'); 7654 $overlay.find('.etimepicker').append('<span class="tt">' + time_lang_end + '</span>'); 7655 } 7656 7657 $overlay.find('.modal-field.sdate, .modal-field.edate').each(function(){ 7658 const $field = $(this); 7659 const $input = $field.find('input.daytime'); 7660 const dp = getDp($field, $input); 7661 7662 if (!dp) return; 7663 7664 // ìì ¯ ì»ê¸° 7665 let $widget = null; 7666 try { 7667 const w = (typeof dp.widget === 'function') ? dp.widget() : dp.widget; 7668 if (w) $widget = (w.jquery ? w : $(w)); 7669 } catch (err) {} 7670 7671 // íì¬ ìì ¯ì´ íë©´ì ë ìì ëë§ ensureCustomClockì¼ë¡ ìê°ìì íì/ì¨ê¹ ë°ì 7672 if ($widget && $widget.length && $widget.is(':visible')) { 7673 ensureCustomClock($field, locale); 7674 } 7675 }); 7676 }); 7677 7678 $(document).on('click', '.calendar .schedule_list .del, .calendar .modal-delete', function() { 7679 var mode = $(this).hasClass('modal-delete'), 7680 locale = ($(this).closest('.calendar').hasClass('en')) ? 'en' : 'ko'; 7681 7682 if (confirm($.lang[locale]['config.calendar.delete'])) { 7683 if(mode) { 7684 var sid = b.SID, 7685 pid = $(this).closest('.calendar').attr('data-id'), 7686 seq = $(this).closest('.calendar-modal-container').find('.calendar-modal-body').find('.seq').val(), 7687 yearMonth = $(this).closest('.calendar-modal-overlay').find('.calendar-modal-container.view .calendar-modal-body .sdate .start').attr('data-raw').substring(0, 7); 7688 } else { 7689 var sid = $(this).siblings('.sid').val(), 7690 seq = $(this).siblings('.seq').val(), 7691 pid = $(this).siblings('.pid').val(), 7692 yearMonth = $('.schedule_list .sdate').val().substring(0, 7); 7693 } 7694 var data_type = ($('.userEL'+pid).attr('data-modoo-type')) ? $('.userEL'+pid).attr('data-modoo-type') : ''; 7695 7696 $.ajax({ 7697 url: '/template/delete_calendar', 7698 data: { sid: sid, pid: pid, seq: seq, yearMonth: yearMonth }, 7699 type: 'POST', 7700 dataType: 'json', 7701 success: function(data) { 7702 checkError(data); 7703 const instance = $.cl_calendar.instances[pid]; 7704 // instance.events = data || []; 7705 if (mode) { 7706 $(".calendar-modal-overlay").fadeOut(300); 7707 } else { 7708 $('.modal-overlay-modify').fadeOut(300); 7709 } 7710 7711 if (data_type !== '') { 7712 $.cl_calendar.init(b.SID, pid, yearMonth); 7713 } else { 7714 // â íµì¬: ìì ìí¥ê¶(ì /ë¹/ë¤ìë¬)ë§ ìºì 무í¨í 7715 invalidateAround(pid, yearMonth); 7716 7717 //ìë²ê° ëë ¤ì¤ ìµì data(3ê°ìì¹)를 ì¦ì ìºìì ë³í© 7718 upsertMonthCacheFromServer(pid, data); 7719 7720 // â ëì events ìì¤ë¥¼ ì ì§í ì±ë¡ ìµì ë°ì´í° ë¤ì ìì² 7721 if (instance && instance.calendar) { 7722 const v = instance.calendar.view; 7723 const needKeys = monthsInRange(v.currentStart, v.currentEnd); 7724 const pidMap = monthCache.get(pid) || new Map(); 7725 const missing = needKeys.filter(k => !pidMap.has(k)); 7726 const dt = ($('.userEL'+pid).attr('data-modoo-type')) || ''; 7727 const after = () => instance.calendar.refetchEvents(); 7728 7729 if (missing.length) { 7730 Promise.all(missing.map(k =>
7730 fetchMonth(pid, k, dt))).finally(after); 7731 } else { 7732 after(); 7733 } 7734 } else { 7735 initCalendar(pid); 7736 } 7737 } 7738 calendarOverlayOut(pid); 7739 } 7740 }); 7741 } 7742 }); 7743 7744 $(document).on('click', '.calendar .go-modify', function() { 7745 var pid = $(this).closest('.calendar-modal-container').find('.pid').val(); 7746 if(currentEvent) showCalendarModalEdit(pid, 1, currentDate, currentEvent); 7747 else console.log('ì íë ì´ë²¤í¸ ìì'); 7748 }); 7749 7750 // ì ì¥ ë²í¼ 7751 let isSaving = false; 7752 $(document).on('click', '.calendar .modal-save, .calendar .modal-modify', function(e) { 7753 e.preventDefault(); 7754 e.stopImmediatePropagation(); 7755 7756 if (isSaving) return false; 7757 7758 const locale = ($(this).closest('.calendar').hasClass('en')) ? 'en' : 'ko'; 7759 const $btn = $(this); 7760 const $overlay = $btn.closest('.calendar-modal-overlay'); 7761 7762 if ($overlay.data('saving') === true) return false; 7763 7764 $overlay.data('saving', true); 7765 const $buttons = $overlay.find('.modal-save, .modal-modify').prop('disabled', true).addClass('is-disabled'); 7766 7767 var mode = $btn.hasClass('modal-modify'), 7768 pid = $btn.closest('.calendar').attr('data-id'), 7769 data_type = ($('.userEL'+pid).attr('data-modoo-type')) ? $('.userEL'+pid).attr('data-modoo-type') : ''; 7770 7771 var title = $btn.closest('.calendar-modal-container').find('.modal-title .ctitle').val(), 7772 color = $btn.closest('.calendar-modal-container').find('.scheduleColorPicker').attr('data-color'), 7773 seq = $btn.parent().siblings('.calendar-modal-body').find('.seq').val(), 7774 sdate = $btn.parent().siblings('.calendar-modal-body').find('.sdate .start').attr('data-raw'), 7775 edate = $btn.parent().siblings('.calendar-modal-body').find('.edate .end').attr('data-raw'), 7776 fulltime = ($btn.parent().siblings('.calendar-modal-body').find('.all .all-day').prop('checked')) ? 'Y' : 'N', 7777 content = $btn.parent().siblings('.calendar-modal-body').find('.content textarea').val(), 7778 pass = $btn.parent().siblings('.calendar-modal-body').find('.pass').val(); 7779 7780 if (!title) { 7781 alert($.lang[locale]['config.calendar.enter-title']); 7782 $overlay.data('saving', false); 7783 $buttons.prop('disabled', false).removeClass('is-disabled'); 7784 return false; 7785 } 7786 if (pass == 'N') { 7787 alert($.lang[locale]['config.calendar.enter-date']); 7788 $overlay.data('saving', false); 7789 $buttons.prop('disabled', false).removeClass('is-disabled'); 7790 return false; 7791 } 7792 7793 var timeRegex = /\s\d{1,2}:\d{2}$/; 7794 if (fulltime === 'N' && (!timeRegex.test(sdate) || !timeRegex.test(edate))) { 7795 alert($.lang[locale]['config.calendar.enter-time']); 7796 $overlay.data('saving', false); 7797 $buttons.prop('disabled', false).removeClass('is-disabled'); 7798 return false; 7799 } 7800 7801 isSaving = true; 7802 $buttons.prop('disabled', true).addClass('is-disabled'); 7803 7804 $(".calendar-modal-overlay").fadeOut(200, function() { $(this).remove(); }); 7805 calendarOverlayOut(pid); 7806 7807 const eventData = { 7808 sid: b.SID, 7809 seq: seq, 7810 pid: pid, 7811 month: sdate.substring(0, 7), 7812 sdate: sdate, 7813 stime: (sdate.split(' ')[1]) ? sdate.split(' ')[1] : '00:00', 7814 edate: edate, 7815 etime: (edate.split(' ')[1]) ? edate.split(' ')[1] : '00:00', 7816 fulltime: fulltime, 7817 memo: content, 7818 title: title, 7819 color: color, 7820 check: 2 7821 }; 7822 7823 $.ajax({ 7824 url: '/template/calendar', 7825 data: { data: eventData, mode: mode, yearMonth: eventData['month'], data_type : data_type }, 7826 type: 'POST', 7827 dataType: 'json', 7828 success: function(data) { 7829 checkError(data); 7830 const instance = $.cl_calendar.instances[pid]; 7831 instance.events = data || []; 7832 7833 if (data_type != '') { 7834 $.cl_calendar.init(b.SID, pid, sdate.substring(0, 7)); 7835 } else { 7836 // â íµì¬: ìì ìí¥ê¶(ì /ë¹/ë¤ìë¬)ë§ ìºì 무í¨í 7837 invalidateAround(pid, sdate.substring(0, 7)); 7838 7839 // ìë²ê° ëë ¤ì¤ ìµì data(3ê°ìì¹)를 ì¦ì ìºìì ë³í© 7840 upsertMonthCacheFromServer(pid, data); 7841 7842 // â ëì events ìì¤ë¥¼ ì ì§í ì±ë¡ ìµì ë°ì´í° ë¤ì ìì² 7843 if (instance && instance.calendar) { 7844 const v = instance.calendar.view; 7845 const needKeys = monthsInRange(v.currentStart, v.currentEnd); 7846 const pidMap = monthCache.get(pid) || new Map(); 7847 const missing = needKeys.filter(k => !pidMap.has(k)); 7848 const dt = ($('.userEL'+pid).attr('data-modoo-type')) || ''; 7849 if (missing.length) { 7850 Promise.all(missing.map(k =>
7850 fetchMonth(pid, k, dt))) 7851 .finally(() => instance.calendar.refetchEvents()); 7852 } else { 7853 instance.calendar.refetchEvents(); 7854 } 7855 } else { 7856 initCalendar(pid); 7857 } 7858 isSaving = false; 7859 $buttons.prop('disabled', false).removeClass('is-disabled'); 7860 } 7861 7862 $(".calendar-modal-overlay").fadeOut(200, function() { $(this).remove(); }); 7863 calendarOverlayOut(pid); 7864 }, 7865 error: function(xhr, status, error) { 7866 console.error("ì´ë²¤í¸ ì ì¥ ì¤í¨:", error); 7867 } 7868 }); 7869 }); 7870 7871 function openEventModal(dateString) { 7872 selectedDate = dateString; 7873 7874 // í¼ ì´ê¸°í 7875 $('#eventForm')[0].reset(); 7876 $('#eventId').val(''); 7877 $('#eventStartDate').val(dateString); 7878 $('#eventEndDate').val(dateString); 7879 7880 // ì¢ ë£ì¼ì ììì¼ ì´íë§ ì í ê°ë¥íëë¡ ì¤ì 7881 $('#eventEndDate').attr('min', dateString); 7882 7883 // ëª¨ë¬ íì 7884 $('#eventModal').fadeIn(300); 7885 } 7886 7887 function htmlEscape(str) { 7888 return String(str) 7889 .replace(/&/g, "&") 7890 .replace(/</g, "<") 7891 .replace(/>/g, ">") 7892 .replace(/"/g, """) 7893 .replace(/'/g, "'"); 7894 } 7895 7896 // ëª¨ë¬ ì´ê¸°(ê°ì´ ììë) 7897 function openEventList(dateString, eventData, el) { 7898 var dayOfWeek = getDayOfWeek(dateString); 7899 7900 var match = []; 7901 for(var i=0; i < eventData.length; i++) { 7902 if(dateString == eventData[i].s_date) { 7903 match.push(eventData[i]); 7904 } 7905 } 7906 7907 var html = '', 7908 itemCount = 0; 7909 html += '\ 7910 <div class="modal-container">\ 7911 <div class="modal-header">\ 7912 <div class="modal-title">'+ dateString +' '+ dayOfWeek +'</div>\ 7913 <button class="modal-close">×</button>\ 7914 </div>\ 7915 <hr>\ 7916 <div class="modal-body">\ 7917 <ul class="scd_list">\ 7918 '; 7919 if(match.length == 1) { 7920 var stime = match[0].s_time.substring(0,5), 7921 etime = match[0].e_time.substring(0,5), 7922 fulltime = (match[0].fulltime == 'N') ? stime +' ~ '+ etime : ''; 7923 html += '<li data-index="" data-seq="" data-pid="" class="schedule_list _schedule_list">\ 7924 <div class="info">\ 7925 <span class="datetime">'+ dateString +'('+ dayOfWeek +') '+ fulltime +'</span>\ 7926 <input type="hidden" name="sid" class="sid" value="'+ match[0].sid +'">\ 7927 <input type="hidden" name="seq" class="seq" value="'+ match[0].seq +'">\ 7928 <input type="hidden" name="pid" class="pid" value="'+ match[0].pid +'">\ 7929 <input type="hidden" name="sdate" class="sdate" value="'+ match[0].s_date +'">\ 7930 <input type="hidden" name="stime" class="stime" value="'+ match[0].s_time +'">\ 7931 <input type="hidden" name="edate" class="edate" value="'+ match[0].e_date +'">\ 7932 <input type="hidden" name="etime" class="etime" value="'+ match[0].e_time +'">\ 7933 <input type="hidden" name="memo" class="memo" value="'+ htmlEscape(match[0].memo) +'">\ 7934 <input type="hidden" name="fulltime" class="fulltime" value="'+ match[0].fulltime +'">\ 7935 </div>\ 7936 <p class="txt">'+ htmlEscape(match[0].memo) +'</p>\ 7937 </li>'; 7938 itemCount = 1; 7939 } else if(match.length > 1) { 7940 for(var j=0; j < match.length; j++) { 7941 var stime = match[j].s_time.substring(0,5), 7942 etime = match[j].e_time.substring(0,5), 7943 fulltime = (match[j].fulltime == 'N') ? stime +' ~ '+ etime : ''; 7944 html += '<li data-index="" data-seq="" data-pid="" class="schedule_list _schedule_list">\ 7945 <div class="info">\ 7946 <span class="datetime">'+ dateString +'('+ dayOfWeek +') '+ fulltime +'</span>\ 7947 <input type="hidden" name="sid" class="sid" value="'+ match[j].sid +'">\ 7948 <input type="hidden" name="seq" class="seq" value="'+ match[j].seq +'">\ 7949 <input type="hidden" name="pid" class="pid" value="'+ match[j].pid +'">\ 7950 <input type="hidden" name="sdate" class="sdate" value="'+ match[j].s_date +'">\ 7951 <input type="hidden" name="stime" class="stime" value="'+ match[j].s_time +'">\ 7952 <input type="hidden" name="edate" class="edate" value="'+ match[j].e_date +'">\ 7953 <input type="hidden" name="etime" class="etime" value="'+ match[j].e_time +'">\ 7954 <input type="hidden" name="memo" class="memo" value="'+ htmlEscape(match[j].memo) +'">\ 7955 <input type="hidden" name="fulltime" class="fulltime" value="'+ match[j].fulltime +'">\ 7956 </div>\ 7957 <p class="txt">'+ htmlEscape(match[j].memo) +'</p>\ 7958 </li>'; 7959 itemCount++; 7960 } 7961 } 7962 html += '</ul></div>\ 7963 </div>\ 7964 '; 7965 if (itemCount <= 1) { 7966 $(el + ' #eventModalModify').addClass('few-items'); 7967 } else if (itemCount <= 3) { 7968 $(el + ' #eventModalModify').addClass('mid-items'); 7969 } else { 7970 $(el + ' #eventModalModify').addClass('many-items'); 7971 } 7972 $(el+' #eventModalModify').empty(); 7973 $(el+' #eventModalModify').html(html); 7974 $(el+' #eventModalModify').fadeIn(300); 7975 } 7976 7977 // ëª¨ë¬ ë«ê¸° í¨ì 7978 function closeEventModal() { 7979 $('.modal-schedule').fadeOut(300); 7980 selectedDate = null; 7981 currentEventId = null; 7982 } 7983 7984 function formatDate(date) { 7985 const year = date.getFullYear();
7986 const month = String(date.getMonth() + 1).padStart(2, '0'); 7987 const day = String(date.getDate()).padStart(2, '0'); 7988 return `${year}-${month}-${day}`; 7989 } 7990 7991 function getDayOfWeek(dateString) { 7992 const days = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼']; 7993 const date = new Date(dateString); // 문ìì´ì Date ê°ì²´ë¡ ë³í 7994 return days[date.getDay()]; // 0(ì¼) ~ 6(í )ì í´ë¹íë ìì¼ ë°í 7995 } 7996 7997 function createDayElement(date, dateString, isOtherMonth, pid) { 7998 if (!$.cl_calendar.instances[pid]) { 7999 // console.error(`draw called but instance for pid=${pid} is not initialized yet`); 8000 return; 8001 } 8002 var mode = $('.userEL'+pid).attr('data-type2'); 8003 const day = date.getDate(); 8004 const dayOfWeek = date.getDay(); 8005 const isToday = date.toDateString() === new Date().toDateString(); // ìì ììë 3ì 18ì¼ì´ ì¤ë 8006 let className = 'day_wrap _day_wrap'; 8007 if (dayOfWeek === 0) className += ' sunday'; 8008 if (dayOfWeek === 6) className += ' saturday'; 8009 if (isOtherMonth) className += ' other-month'; 8010 if (isToday) className += ' today'; 8011 8012 const today_class = (isToday) ? 'today' : ''; 8013 const today_themebg = (isToday && mode != 'mwd') ? 'theme_background' : ''; 8014 const today_themebd = (isToday) ? 'theme_border' : ''; 8015 8016 const dayElement = $('<div>', { 8017 class: className, 8018 'data-date': dateString 8019 }); 8020 8021 // ì¼ì íì 8022 const dayNumber = $('<span>', { 8023 class: `num _dateNum ${today_themebg}`, 8024 text: day 8025 }); 8026 8027 // ì¤ë íì 8028 if (isToday) { 8029 if(mode == 'mwd') dayNumber.html(`${day}`); 8030 else dayNumber.html(`<div class="today-indicator">${day}</div>`); 8031 } 8032 // console.log(today_class); 8033 dayElement.append(dayNumber); 8034 dayElement.find('._dateNum').wrap(`<a class="day_num ${today_class} ${today_themebd}"></a>`); 8035 // dayElement.find('.day_num').append('<span class="theme_border"></span>'); 8036 8037 var count = 0; 8038 const events = $.cl_calendar.instances[pid].events; 8039 for (var i = 0; i < events.length; i ++) { 8040 if(dateString == events[i].s_date) { 8041 var time = '', 8042 settings = JSON.parse(events[i].settings || '{}'); 8043 if(events[i].fulltime == 'Y') time = 'ì¢ ì¼ì¼ì '; 8044 else time = events[i].s_time.substring(0, 5) + '-' + events[i].e_time.substring(0, 5); 8045 if(mode == 'mwd') { 8046 dayElement.find('.day_num').append('<div class="event-item" data-seq="'+ events[i].seq +'" style="background-color:'+ settings.color+';">'+ settings.title +'</div>'); 8047 } else { 8048 dayElement.find('.day_num').append('<div class="event">'+ time +'</div>'); 8049 dayElement.find('.day_num').append('<div class="event_memo">'+ events[i].memo +'</div>'); 8050 } 8051 count++; 8052 } 8053 } 8054 if(mode != 'mwd') { 8055 8056 if(count == 1) { 8057 dayElement.find('.day_num').append('<div class="event_mobile">'+ count +'</div>'); 8058 } else if(count > 1) { 8059 dayElement.find('.day_num .event').remove(); 8060 dayElement.find('.day_num .event_memo').remove(); 8061 dayElement.find('.day_num').append('<div class="event more">ì¼ì '+ count +'</div>'); 8062 dayElement.find('.day_num').append('<div class="event_mobile">' + count +'</div>'); 8063 } 8064 } 8065 8066 return dayElement; 8067 } 8068 8069 function showCalendarModalView(pid, data, fromList) { 8070 var locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 8071 $(".calendar-modal-overlay").remove(); 8072 8073 var isGoogle = !!(data.extendedProps && data.extendedProps.isGoogle); 8074 let fulltime = data.extendedProps.fulltime; 8075 if (isGoogle && (fulltime === undefined || fulltime === '' || fulltime === null)) { 8076 // extendedPropsì ìì¼ë©´ event ê°ì²´ì allDayë¡ ë¤ì ë³´ì 8077 fulltime = data.allDay ? 'Y' : 'N'; 8078 } 8079 8080 let timeShow = '', startShow = '', endShow = '', rawStart = '', rawEnd = ''; 8081 if (data.allDay) { 8082 if (data.extendedProps.fulltime === 'Y') { // ì¢ ì¼ ë²ì 8083 rawStart = data.extendedProps.start_date; // "YYYY-MM-DD" 8084 rawEnd = data.extendedProps.end_date; // "YYYY-MM-DD" 8085 timeShow = formatRangeLocalized(rawStart, rawEnd, locale, { allDay: true }); 8086 startShow = formatDateLocalized(rawStart, locale); 8087 endShow = formatDateLocalized(rawEnd, locale); 8088 } else { // ì°ì ì¼ì (ìê° í¬í¨) 8089 rawStart = `${data.extendedProps.start_date} ${data.extendedProps.s_time}`; 8090 rawEnd = `${data.extendedProps.end_date} ${data.extendedProps.e_time}`; 8091 timeShow = formatRangeLocalized(rawStart, rawEnd, locale); 8092 startShow = formatDateLocalized(rawStart, locale); 8093 endShow = formatDateLocalized(rawEnd, locale); 8094 } 8095 } else { // í루 ì¼ì (ìê° ì§ì ) 8096 rawStart = `${data.extendedProps.start_date} ${data.extendedProps.s_time}`; 8097 rawEnd = `${data.extendedProps.end_date} ${data.extendedProps.e_time}`; 8098 timeShow = formatRangeLocalized(rawStart, rawEnd, locale); 8099 startShow = formatDateLocalized(rawStart, locale); 8100 endShow = formatDateLocalized(rawEnd, locale); 8101 } 8102 8103 const displayStartText = formatDateLocalized(rawStart, locale, 1); 8104 const displayEndText = formatDateLocalized(rawEnd, locale, 1); 8105 8106 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>` : ``; 8107 let modalHeaderClass = fromList ? '' : 'no-back'; 8108 var footerButtonsHtml = '', 8109 textTitle = ''; 8110 if (!isGoogle) { 8111 footerButtonsHtml = `
8112 <button class="modal-delete">${$.lang[locale]['config.delete']}</button> 8113 <button class="go-modify">${$.lang[locale]['config.modify']}</button> 8114 `; 8115 textTitle = data._def.title; 8116 } else { 8117 textTitle = (data._def.title == 'undefined') ? (locale == 'ko') ? '(ì 목 ìì)' : '(No title)' : data._def.title; 8118 } 8119 8120 let modalHtml = ` 8121 <div class="calendar-modal-overlay" style="display:none;"> 8122 <div class="calendar-modal-container view"> 8123 <div class="calendar-modal-header"> 8124 ${backButtonHtml} 8125 <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> 8126 </div> 8127 <div class="calendar-modal-body"> 8128 <input type="hidden" class="pid" value="${pid}"> 8129 <input type="hidden" class="seq" value="${data.extendedProps.seq}"> 8130 <input type="hidden" id='sale-start-datetime' value=""> 8131 <div class="col-box"> 8132 <input type="text" class="scheduleColorPicker" data-color="${data.backgroundColor}" style="background-color: ${data.backgroundColor}" readonly> 8133 <span class="modal-title">${textTitle}</span> 8134 </div> 8135 <div class="date-box"> 8136 <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> 8137 <div class="modal-field sdate"> 8138 <span class="daytime daytime-html start stimepicker" data-raw="${rawStart}" readonly>${displayStartText}</span> 8139 </div> 8140 <span class="middle"> ~ </span> 8141 <div class="modal-field edate"> 8142 <span class="daytime daytime-html end etimepicker" data-raw="${rawEnd}" readonly>${displayEndText}</span> 8143 </div> 8144 </div> 8145 <div class="modal-field content"> 8146 <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> 8147 <span>${nl2br(data.extendedProps.memo) || ' '}</span> 8148 </div> 8149 </div>`; 8150 if(property.UMEMBER.check_adm || property.UMEMBER.check_uadm) { 8151 modalHtml += ` 8152 <div class="calendar-modal-footer"> 8153 ${footerButtonsHtml} 8154 </div>`; 8155 } 8156 modalHtml += ` 8157 </div> 8158 <div class="calendar-modal-container mobile"> 8159 <div class="calendar-modal-header ${modalHeaderClass}"> 8160 ${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>` : ``} 8161 <div class="text-right">`; 8162 if(property.UMEMBER.check_adm || property.UMEMBER.check_uadm) { 8163 if(!isGoogle) { 8164 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> 8165 <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> 8166 `; 8167 } 8168 } 8169 modalHtml += `<button class="modal-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
8169<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> 8170 </div> 8171 </div> 8172 <div class="calendar-modal-body"> 8173 <input type="hidden" class="pid" value="${pid}"> 8174 <input type="hidden" class="seq" value="${data.extendedProps.seq}"> 8175 <div class="title"> 8176 <div class="title-left ${(property.UMEMBER.check_adm || property.UMEMBER.check_uadm) ? '' : 'notadm'}"> 8177 <input type="text" class="scheduleColorPicker" data-color="${data.backgroundColor}" style="background-color: ${data.backgroundColor}" readonly> 8178 <span class="modal-title">${textTitle}</span> 8179 </div> 8180 </div> 8181 <div class="modal-field mdate"> 8182 <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> 8183 <div class="date-box"> 8184 <div class="modal-field sdate"> 8185 <span class="daytime daytime-html start stimepicker" data-raw="${rawStart}" readonly>${displayStartText}</span> 8186 </div> 8187 <span class="middle"> ~ </span> 8188 <div class="modal-field edate"> 8189 <span class="daytime daytime-html end etimepicker" data-raw="${rawEnd}" readonly>${displayEndText}</span> 8190 </div> 8191 </div> 8192 </div> 8193 <div class="modal-field mcontent"> 8194 <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> 8195 <span>${nl2br(data.extendedProps.memo) || ' '}</span> 8196 </div> 8197 </div> 8198 </div> 8199 </div>`; 8200 8201 const $modalWrapper = $('.userEL' + pid).find(".calendarModal"); 8202 $modalWrapper.append(modalHtml); 8203 calendarOverlayIn(pid); 8204 $modalWrapper.find(".calendar-modal-overlay").fadeIn(200); 8205 8206 if (fromList) { 8207 $modalWrapper.off('click', '.back-button').on('click', '.back-button', function () { 8208 $(".calendar-modal-overlay").remove(); 8209 if (lastEventsList) { 8210 openMoreEventsModal(pid, lastEventsList, lastEventsWeekday); 8211 } 8212 }); 8213 } 8214 } 8215 8216 function parseToDate(str) { 8217 if (!str) return new Date(); 8218 if (str.includes('T')) return new Date(str); 8219 const [d, t] = str.trim().split(' '); 8220 const [yy, mm, dd] = d.split('-').map(Number); 8221 if (!t) return new Date(yy, mm - 1, dd, 0, 0); 8222 const [HH, MM] = t.split(':').map(Number); 8223 return new Date(yy, mm - 1, dd, HH, MM); 8224 } 8225 8226 function formatDateLocalized(rawStr, locale, isInput) { 8227 isInput = (isInput == undefined || isInput == '') ? false : true; 8228 const dt = parseToDate(rawStr); 8229 const year = dt.getFullYear();
8230 const month = String(dt.getMonth() + 1).padStart(2, '0'); 8231 const day = String(dt.getDate()).padStart(2, '0'); 8232 const koDays = ['ì¼','ì','í','ì','목','ê¸','í ']; 8233 const enDays = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 8234 const weekday = (locale === 'en') ? enDays[dt.getDay()] : koDays[dt.getDay()]; 8235 const hasTime = String(rawStr).includes(':') || String(rawStr).includes('T'); 8236 8237 const dateStr = (locale === 'en') 8238 ? `${month}.${day}.${year}` 8239 : `${year}.${month}.${day}`; 8240 8241 if (!hasTime) return `${dateStr} (${weekday})`; 8242 8243 let H = dt.getHours(); 8244 const mm = String(dt.getMinutes()).padStart(2, '0'); 8245 let h12 = H % 12; if (h12 === 0) h12 = 12; 8246 8247 if (locale === 'en') { 8248 const ampm = (H < 12) ? 'AM' : 'PM'; 8249 if(isInput) return `${weekday} ${dateStr} <span class='tt'>${h12}:${mm} ${ampm}</span>`; 8250 else return `${weekday} ${dateStr} ${h12}:${mm} ${ampm}`; 8251 } else { 8252 const ampm = (H < 12) ? 'ì¤ì ' : 'ì¤í'; 8253 if(isInput) return `${dateStr} (${weekday}) <span class='tt'>${ampm} ${h12}:${mm}</span>`; 8254 else return `${dateStr} (${weekday}) ${ampm} ${h12}:${mm}`; 8255 } 8256 } 8257 8258 function formatTimeOnly(rawStr, locale) { 8259 const dt = parseToDate(rawStr); 8260 let H = dt.getHours(); 8261 const mm = String(dt.getMinutes()).padStart(2, '0'); 8262 let h12 = H % 12; if (h12 === 0) h12 = 12; 8263 8264 if (locale === 'en') { 8265 const ampm = (H < 12) ? 'AM' : 'PM'; 8266 return `${h12}:${mm} ${ampm}`; 8267 } else { 8268 const ampm = (H < 12) ? 'ì¤ì ' : 'ì¤í'; 8269 return `${ampm} ${h12}:${mm}`; 8270 } 8271 } 8272 8273 // ë²ì í¬ë§·: ê°ì ë ì´ë©´ "ì¼ìª½=ì ì²´, ì¤ë¥¸ìª½=ìê°ë§", ë¤ë¥¸ ë ì´ë©´ ì쪽 모ë ì ì²´ 8274 function formatRangeLocalized(startRaw, endRaw, locale, {allDay=false} = {}) { 8275 const s = parseToDate(startRaw); 8276 const e = parseToDate(endRaw); 8277 8278 const sameDay = (s.getFullYear() === e.getFullYear() && 8279 s.getMonth() === e.getMonth() && 8280 s.getDate() === e.getDate()); 8281 8282 if (allDay) { 8283 // ì¢ ì¼ ë²ì: ë ì§ë§ 8284 const left = formatDateLocalized(startRaw.split(' ')[0], locale); 8285 const right = formatDateLocalized(endRaw.split(' ')[0], locale); 8286 return `${left} ~ ${right}`; 8287 } 8288 8289 if (sameDay) { 8290 const left = formatDateLocalized(startRaw, locale); 8291 const right = formatTimeOnly(endRaw, locale); 8292 return `${left} ~ ${right}`; 8293 } else { 8294 const left = formatDateLocalized(startRaw, locale); 8295 const right = formatDateLocalized(endRaw, locale); 8296 return `${left} ~ ${right}`; 8297 } 8298 } 8299 8300 function swallowNextTapOnce(ttl = 400){ 8301 const stop = (e) => { 8302 e.preventDefault(); 8303 e.stopPropagation(); 8304 e.stopImmediatePropagation && e.stopImmediatePropagation(); 8305 cleanup(); 8306 }; 8307 const cleanup = () => { 8308 document.removeEventListener('click', stop, true); 8309 document.removeEventListener('pointerup', stop, true); 8310 document.removeEventListener('touchend', stop, true); 8311 }; 8312 document.addEventListener('click', stop, true); 8313 document.addEventListener('pointerup', stop, true); 8314 document.addEventListener('touchend', stop, true); 8315 setTimeout(cleanup, ttl); 8316 } 8317 8318 function showCalendarModalEdit(pid, mode, date, data) { 8319 // console.log('edit'); 8320 swallowNextTapOnce(); 8321 var locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 8322 var data = (typeof data != 'undefined') ? data : ''; 8323 8324 $(".calendar-modal-overlay").remove(); 8325 8326 if(mode == 0) { 8327 // console.log(date); 8328 var startDate = '', 8329 endDate = '', 8330 checked = ''; 8331 startDate = date[0]; 8332 endDate = date[1]; 8333 checked = (date[2] == 1) ? 'checked' : ''; 8334 8335 const displayStart = formatDateLocalized(startDate, locale); 8336 const displayEnd = formatDateLocalized(endDate, locale); 8337 const displayStartText = formatDateLocalized(startDate, locale, 1); 8338 const displayEndText = formatDateLocalized(endDate, locale, 1); 8339 8340 var modalHtml = ` 8341 <div class="calendar-modal-overlay" style="display:none;"> 8342 <div class="calendar-modal-container"> 8343 <div class="calendar-modal-header"> 8344 <div class="cfull-box"> 8345 <div class="col-box"><input type="text" class="scheduleColorPicker" data-color="#fcbf54" style="background-color: #fcbf54;" readonly></div> 8346 <div class="ccol-box"> 8347 <input type="text" data-color="#ff6f61" class="scheduleColor sc1" readonly> 8348 <input type="text" data-color="#f63824" class="scheduleColor sc2" readonly> 8349 <input type="text" data-color="#ee6c3b" class="scheduleColor sc3" readonly> 8350 <input type="text" data-color="#fcbf54" class="scheduleColor sc4" readonly> 8351 <input type="text" data-color="#14c285" class="scheduleColor sc5" readonly>
8352 <input type="text" data-color="#1d9f54" class="scheduleColor sc6" readonly><br> 8353 <input type="text" data-color="#3498db" class="scheduleColor sc7" readonly> 8354 <input type="text" data-color="#022b79" class="scheduleColor sc8" readonly> 8355 <input type="text" data-color="#9b59b6" class="scheduleColor sc9" readonly> 8356 <input type="text" data-color="#e91e63" class="scheduleColor sc10" readonly> 8357 <input type="text" data-color="#566573" class="scheduleColor sc11" readonly> 8358 <input type="text" data-color="#95a5a6" class="scheduleColor sc12" readonly> 8359 </div> 8360 </div> 8361 <span class="modal-title"><input type="text" class="ctitle" value="" placeholder="${$.lang[locale]['config.calendar.title.placeholder']}" maxlength="200"></span> 8362 <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> 8363 </div> 8364 <div class="calendar-modal-body"> 8365 <input type="hidden" class="pass" value="Y"> 8366 <input type="hidden" id='sale-start-datetime' value=""> 8367 <div class="modal-field all"> 8368 <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> 8369 <label for="all-day">${$.lang[locale]['config.calendar.fulltime']}</label> 8370 <span class="bc-tp-btn switch-wrap"> 8371 <label class="switch prop-wrap"> 8372 <input type="checkbox" class="switch-input all-day" id="all-day" data-el="${selectEL}" ${checked}> 8373 <span class="switch-label" data-on="On" data-off="Off"></span> 8374 <span class="switch-handle"></span> 8375 </label> 8376 </span> 8377 </div> 8378 <div class="date-box"> 8379 <div class="modal-field sdate"> 8380 <label> </label> 8381 <input class="daytime start" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" value="${displayStart}" data-raw="${startDate}" readonly> 8382 <span class="daytime daytime-html start stimepicker" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" data-raw="${startDate}" readonly>${displayStartText}</span> 8383 </div> 8384 <span class="middle"> ~ </span> 8385 <div class="modal-field edate"> 8386 <input class="daytime end" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" value="${displayEnd}" data-raw="${endDate}" readonly> 8387 <span class="daytime daytime-html end etimepicker" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" data-raw="${endDate}" readonly>${displayEndText}</span> 8388 </div> 8389 </div> 8390 <div class="modal-field content"> 8391 <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> 8392 <textarea placeholder="${$.lang[locale]['config.calendar.content.placeholder']}"></textarea> 8393 </div> 8394 </div> 8395 <div class="calendar-modal-footer"> 8396 <button class="modal-save">${$.lang[locale]['config.save']}</button> 8397 </div> 8398 </div> 8399 </div>`; 8400 8401 } else { 8402 var startDate, endDate; 8403 if(data.extendedProps.fulltime == 'Y') { 8404 startDate = data.extendedProps.start_date; 8405 endDate = data.extendedProps.end_date; 8406 } else { 8407 startDate = data.extendedProps.start_date + ' ' + data.extendedProps.s_time, 8408 endDate = data.extendedProps.end_date + ' ' + data.extendedProps.e_time; 8409 } 8410 8411 const displayStart = formatDateLocalized(startDate, locale); 8412 const displayEnd = formatDateLocalized(endDate, locale); 8413 const displayStartText = formatDateLocalized(startDate, locale, 1); 8414 const displayEndText = formatDateLocalized(endDate, locale, 1); 8415 8416 var modalHtml = ` 8417 <div class="calendar-modal-overlay" style="display:none;"> 8418 <div class="calendar-modal-container"> 8419 <div class="calendar-modal-header"> 8420 <button class="back-button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
8420<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> 8421 <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> 8422 </div> 8423 <div class="calendar-modal-body"> 8424 <input type="hidden" class="pass" value="Y"> 8425 <input type="hidden" class="seq" value="${data.extendedProps.seq}"> 8426 <input type="hidden" id='sale-start-datetime' value=""> 8427 <div class="title-modify"> 8428 <div class="cfull-box"> 8429 <div class="col-box"><input type="text" class="scheduleColorPicker" data-color="${data.backgroundColor}" style="background-color:${data.backgroundColor};" readonly></div> 8430 <div class="ccol-box"> 8431 <input type="text" data-color="#ff6f61" class="scheduleColor sc1" readonly> 8432 <input type="text" data-color="#f63824" class="scheduleColor sc2" readonly> 8433 <input type="text" data-color="#ee6c3b" class="scheduleColor sc3" readonly> 8434 <input type="text" data-color="#fcbf54" class="scheduleColor sc4" readonly> 8435 <input type="text" data-color="#14c285" class="scheduleColor sc5" readonly> 8436 <input type="text" data-color="#1d9f54" class="scheduleColor sc6" readonly><br> 8437 <input type="text" data-color="#3498db" class="scheduleColor sc7" readonly> 8438 <input type="text" data-color="#022b79" class="scheduleColor sc8" readonly> 8439 <input type="text" data-color="#9b59b6" class="scheduleColor sc9" readonly> 8440 <input type="text" data-color="#e91e63" class="scheduleColor sc10" readonly> 8441 <input type="text" data-color="#566573" class="scheduleColor sc11" readonly> 8442 <input type="text" data-color="#95a5a6" class="scheduleColor sc12" readonly> 8443 </div> 8444 </div> 8445 <span class="modal-title"><input type="text" class="ctitle" value="${data._def.title}" placeholder="${$.lang[locale]['config.calendar.title.placeholder']}" maxlength="200"></span> 8446 </div> 8447 <div class="modal-field all"> 8448 <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> 8449 <label for="all-day">${$.lang[locale]['config.calendar.fulltime']}</label> 8450 <span class="bc-tp-btn switch-wrap"> 8451 <label class="switch prop-wrap"> 8452 <input type="checkbox" class="switch-input all-day" id="all-day" data-el="${selectEL}" ${(data.extendedProps.fulltime == 'Y') ? 'checked' : ''}> 8453 <span class="switch-label" data-on="On" data-off="Off"></span> 8454 <span class="switch-handle"></span> 8455 </label> 8456 </span> 8457 </div> 8458 <div class="date-box"> 8459 <div class="modal-field sdate"> 8460 <label> </label> 8461 <input class="daytime start" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" value="${displayStart}" data-raw="${startDate}" readonly> 8462 <span class="daytime daytime-html start stimepicker" placeholder="${$.lang[locale]['config.calendar.datetime']}" data-raw="${startDate}" readonly>${displayStartText}</span> 8463 </div> 8464 <span class="middle"> ~ </span> 8465 <div class="modal-field edate"> 8466 <input class="daytime end" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" value="${displayEnd}" data-raw="${endDate}" readonly> 8467 <span class="daytime daytime-html end etimepicker" type="text" placeholder="${$.lang[locale]['config.calendar.datetime']}" data-raw="${endDate}" readonly>${displayEndText}</span> 8468 </div> 8469 </div> 8470 <div class="modal-field content"> 8471 <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> 8472 <textarea placeholder="${$.lang[locale]['config.calendar.content.placeholder']}">${data.extendedProps.memo}</textarea> 8473 </div> 8474 </div> 8475 <div class="calendar-modal-footer"> 8476 <button class="modal-modify">${$.lang[locale]['config.save']}</button> 8477 </div> 8478 </div> 8479 </div>`; 8480 } 8481 8482 $('.userEL'+pid).find(".calendarModal").append(modalHtml); 8483 calendarOverlayIn(pid); 8484 $('.userEL'+pid).find(".calendar-modal-overlay").fadeIn(200); 8485 $('.userEL'+pid).find('.ctitle').focus(); 8486 refitAll(); 8487 } 8488 8489 function formatTime(time, locale) { 8490 let [hour, minute] = time.split(':').map(Number); 8491 8492 let period = hour < 12 ? $.lang[locale]['config.calendar.am'] : $.lang[locale]['config.calendar.pm']; 8493 let hour12 = hour % 12 || 12; 8494 let minuteText = minute.toString().padStart(2, '0'); 8495 8496 return `${period} ${hour12}:${minuteText}`; 8497 } 8498 8499 function toDateStr(d) { 8500 if (!d) return '';
8501 const y = d.getFullYear(); 8502 const m = String(d.getMonth() + 1).padStart(2, '0'); 8503 const day = String(d.getDate()).padStart(2, '0'); 8504 return `${y}-${m}-${day}`; 8505 } 8506 8507 function fmtHMFromDate(d, locale) { 8508 if (!d) return ''; 8509 const hour = d.getHours(); 8510 const minute = String(d.getMinutes()).padStart(2,'0'); 8511 if (locale === 'ko') { 8512 const period = hour < 12 ? $.lang[locale]['config.calendar.am'] : $.lang[locale]['config.calendar.pm']; 8513 const hour12 = hour % 12 || 12; 8514 return `${period} ${hour12}:${minute}`; 8515 } 8516 return new Intl.DateTimeFormat(locale, { hour: 'numeric', minute: '2-digit' }).format(d); 8517 } 8518 8519 function openMoreEventsModal(pid, events, weekday) { 8520 var locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 8521 if (!Array.isArray(events)) { 8522 events = [events]; 8523 } 8524 8525 lastEventsList = events; 8526 lastEventsWeekday = weekday; 8527 const dayNum = weekday[0].getDate(); 8528 8529 const filteredEvents = events.filter(ev => !(ev.classNames && ev.classNames.includes('holiday-event'))); 8530 8531 const sorted = filteredEvents.slice().sort((a, b) => { 8532 const isMulti = (ev) => { 8533 const sd = ev.extendedProps?.start_date; 8534 const ed = ev.extendedProps?.end_date; 8535 if (sd && ed && sd !== ed) return true; 8536 if (ev.allDay && ev.start && ev.end) return (ev.end - ev.start) >= 86400000; 8537 return false; 8538 }; 8539 8540 const am = isMulti(a), bm = isMulti(b); 8541 if (am !== bm) return am ? -1 : 1; 8542 8543 const as = a.start ? a.start.getTime() : 0; 8544 const bs = b.start ? b.start.getTime() : 0; 8545 if (as !== bs) return as - bs; 8546 8547 const ae = a.end ? a.end.getTime() : Number.POSITIVE_INFINITY; 8548 const be = b.end ? b.end.getTime() : Number.POSITIVE_INFINITY; 8549 if (ae !== be) return ae - be; 8550 8551 return (a.title || '').localeCompare(b.title || ''); 8552 }); 8553 8554 const googleColorRaw = (googleColor && googleColor.get(pid)) || ''; 8555 const googleColorHex = googleColorRaw ? (googleColorRaw.startsWith('#') ? googleColorRaw : ('#' + googleColorRaw)) : ''; 8556 8557 $(".calendar-modal-overlay").remove(); 8558 let modalHtml = ` 8559 <div class="calendar-modal-overlay" style="display:none;"> 8560 <div class="calendar-modal-container"> 8561 <div class="calendar-modal-header"> 8562 <h4>${dayNum} <span>${weekday[1]}</span></h4> 8563 <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> 8564 </div> 8565 <div class="calendar-modal-body"> 8566 <input type="hidden" id='sale-start-datetime' value=""> 8567 <div class="schedule-list"> 8568 <ul> 8569 `; 8570 8571 for (let i = 0; i < sorted.length; i++) { 8572 var ev = sorted[i]; 8573 const locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 8574 8575 let sdate = ev.extendedProps?.start_date || ''; 8576 let edate = ev.extendedProps?.end_date || ''; 8577 let fulltimeFlag = ev.extendedProps?.fulltime; // 'Y' ëë 'N' 기ë 8578 8579 const isAllDay = (fulltimeFlag === 'Y') || (!!ev.allDay); 8580 8581 if (!sdate && ev.start) sdate = toDateStr(ev.start); 8582 8583 if (!edate) { 8584 if (ev.end) { 8585 if (isAllDay) { 8586 const d = new Date(ev.end); 8587 d.setDate(d.getDate() - 1); 8588 edate = toDateStr(d); 8589 } else { 8590 edate = toDateStr(ev.end); 8591 } 8592 } else { 8593 edate = sdate; // ëì´ ìì¼ë©´ ììê³¼ ëì¼ 8594 } 8595 } 8596 8597 let schedule_time = ''; 8598 if (sdate !== edate) { 8599 if (isAllDay) { 8600 schedule_time = `${sdate.slice(5)} ~ ${edate.slice(5)}`; 8601 } else { 8602 schedule_time = `${sdate.slice(5)} ${fmtHMFromDate(ev.start, locale)} ~ ${edate.slice(5)} ${fmtHMFromDate(ev.end, locale)}`; 8603 } 8604 } else { 8605 schedule_time = isAllDay ? '' : `${fmtHMFromDate(ev.start, locale)} ~ ${fmtHMFromDate(ev.end, locale)}`; 8606 } 8607 8608 const isFullLabel = isAllDay ? $.lang[locale]['config.calendar.fulltime'] : fmtHMFromDate(ev.start, locale); 8609 const isGoogle = !!ev.extendedProps?.isGoogle; 8610 const noTitleText = (locale === 'ko') ? '(ì 목 ìì)' : '(No title)';
8611 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) || ''; 8612 const titleSafe = rawTitle.trim() !== 'undefined' ? rawTitle : noTitleText; 8613 const bgColor = (() => { 8614 const own = ev.backgroundColor || ev.borderColor || ''; 8615 if (isGoogle) { 8616 return own || googleColorHex || '#4789e7'; 8617 } 8618 return own || '#4789e7'; 8619 })(); 8620 8621 modalHtml += ` 8622 <li class="schedule-view" data-index="${i}"> 8623 <div class="left-wrap"> 8624 <input type="text" class="scheduleColorPicker color2" 8625 data-color="${bgColor}" 8626 style="background-color:${bgColor}" readonly> 8627 <span>${isFullLabel}</span> 8628 </div> 8629 <div class="right-wrap"> 8630 <div class="schedule-title">${titleSafe} ${isGoogle ? '' : ''}</div> 8631 <div class="schedule-time">${schedule_time}</div> 8632 </div> 8633 </li> 8634 `; 8635 } 8636 8637 modalHtml += ` 8638 </ul> 8639 </div> 8640 </div>`; 8641 if (property.UMEMBER.check_adm || property.UMEMBER.check_uadm) { 8642 modalHtml += `<div class="schedule-plus-box"> 8643 <button class="schedule-plus pc">${$.lang[locale]['config.calendar.schedule-plus']}</button> 8644 <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> 8645 </div>`; 8646 } 8647 modalHtml += `</div></div>`; 8648 8649 const $modalWrapper = $('.userEL' + pid).find(".calendarModal"); 8650 $modalWrapper.append(modalHtml); 8651 calendarOverlayIn(pid); 8652 $modalWrapper.find(".calendar-modal-overlay").fadeIn(200); 8653 8654 $modalWrapper.off('click', '.schedule-view').on('click', '.schedule-view', function () { 8655 const index = $(this).data('index'); 8656 const eventData = sorted[index]; 8657 currentEvent = eventData; 8658 8659 showCalendarModalView(pid, eventData, true); 8660 }); 8661 8662 $modalWrapper.off('click', '.schedule-plus').on('click', '.schedule-plus', function () { 8663 const year = weekday[0].getFullYear();
8664 const month = String(weekday[0].getMonth() + 1).padStart(2, '0'); 8665 const day = String(weekday[0].getDate()).padStart(2, '0'); 8666 var startDate = `${year}-${month}-${day} 12:00`; 8667 var endDate = `${year}-${month}-${day} 13:00`; 8668 var date = [startDate, endDate]; 8669 showCalendarModalEdit(pid, 0, date); 8670 }); 8671 } 8672 8673 // function openMoreEventsModal(pid, events, weekday) { 8674 // var locale = ($('.userEL'+pid).hasClass('en')) ? 'en' : 'ko'; 8675 // if (!Array.isArray(events)) { 8676 // events = [events]; 8677 // } 8678 8679 // lastEventsList = events; 8680 // lastEventsWeekday = weekday; 8681 // const dayNum = weekday[0].getDate(); 8682 8683 // const filteredEvents = events.filter(ev => !(ev.classNames && ev.classNames.includes('holiday-event'))); 8684 8685 // const sorted = filteredEvents.slice().sort((a, b) => { 8686 // const isMulti = (ev) => { 8687 // const sd = ev.extendedProps?.start_date; 8688 // const ed = ev.extendedProps?.end_date; 8689 // if (sd && ed && sd !== ed) return true; 8690 // if (ev.allDay && ev.start && ev.end) return (ev.end - ev.start) >= 86400000; 8691 // return false; 8692 // }; 8693 8694 // const am = isMulti(a), bm = isMulti(b); 8695 // if (am !== bm) return am ? -1 : 1; 8696 8697 // const as = a.start ? a.start.getTime() : 0; 8698 // const bs = b.start ? b.start.getTime() : 0; 8699 // if (as !== bs) return as - bs; 8700 8701 // const ae = a.end ? a.end.getTime() : Number.POSITIVE_INFINITY; 8702 // const be = b.end ? b.end.getTime() : Number.POSITIVE_INFINITY; 8703 // if (ae !== be) return ae - be; 8704 8705 // return (a.title || '').localeCompare(b.title || ''); 8706 // }); 8707 8708 // $(".calendar-modal-overlay").remove(); 8709 // let modalHtml = ` 8710 // <div class="calendar-modal-overlay" style="display:none;"> 8711 // <div class="calendar-modal-container"> 8712 // <div class="calendar-modal-header"> 8713 // <h4>${dayNum} <span>${weekday[1]}</span></h4> 8714 // <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> 8715 // </div> 8716 // <div class="calendar-modal-body"> 8717 // <input type="hidden" id='sale-start-datetime' value=""> 8718 // <div class="schedule-list"> 8719 // <ul> 8720 // `; 8721 8722 // for (let i = 0; i < sorted.length; i++) { 8723 // var ev = sorted[i], 8724 // sdate = ev.extendedProps.start_date, 8725 // edate = ev.extendedProps.end_date, 8726 // schedule_time = ''; 8727 // if(sdate != edate) { 8728 // 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); 8729 // } else { 8730 // schedule_time = (ev.extendedProps.fulltime == 'Y') ? '' : `${formatTime(ev.extendedProps.s_time, locale)} ~ ${formatTime(ev.extendedProps.e_time, locale)}`; 8731 // } 8732 // const isFull = (ev.extendedProps.fulltime == 'Y') ? $.lang[locale]['config.calendar.fulltime'] : formatTime(ev.extendedProps.s_time, locale); 8733 8734 // modalHtml += ` 8735 // <li class="schedule-view" data-index="${i}"> 8736 // <div class="left-wrap"> 8737 // <input type="text" class="scheduleColorPicker color2" 8738 // data-color="${ev.backgroundColor}" 8739 // style="background-color: ${ev.backgroundColor}" readonly> 8740 // <span>${isFull}</span> 8741 // </div> 8742 // <div class="right-wrap"> 8743 // <div class="schedule-title">${ev._def.title}</div> 8744 // <div class="schedule-time"> 8745 // ${schedule_time} 8746 // </div> 8747 // </div> 8748 // </li> 8749 // `; 8750 // } 8751 8752 // modalHtml += ` 8753 // </ul> 8754 // </div> 8755 // </div>`; 8756 // if (property.UMEMBER.check_adm || property.UMEMBER.check_uadm) { 8757 // modalHtml += `<div class="schedule-plus-box"> 8758 // <button class="schedule-plus pc">${$.lang[locale]['config.calendar.schedule-plus']}</button> 8759 // <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> 8760 // </div>`; 8761 // } 8762 // modalHtml += `</div></div>`; 8763 8764 // const $modalWrapper = $('.userEL' + pid).find(".calendarModal"); 8765 // $modalWrapper.append(modalHtml);
8766 // calendarOverlayIn(pid); 8767 // $modalWrapper.find(".calendar-modal-overlay").fadeIn(200); 8768 8769 // $modalWrapper.off('click', '.schedule-view').on('click', '.schedule-view', function () { 8770 // const index = $(this).data('index'); 8771 // const eventData = sorted[index]; 8772 // currentEvent = eventData; 8773 8774 // showCalendarModalView(pid, eventData, true); 8775 // }); 8776 8777 // $modalWrapper.off('click', '.schedule-plus').on('click', '.schedule-plus', function () { 8778 // const year = weekday[0].getFullYear(); 8779 // const month = String(weekday[0].getMonth() + 1).padStart(2, '0'); 8780 // const day = String(weekday[0].getDate()).padStart(2, '0'); 8781 // var startDate = `${year}-${month}-${day} 12:00`; 8782 // var endDate = `${year}-${month}-${day} 13:00`; 8783 // var date = [startDate, endDate]; 8784 // showCalendarModalEdit(pid, 0, date); 8785 // }); 8786 // } 8787 8788 function buildFcEvents(events) { 8789 function addDaysStr(ymd, days) { 8790 // ymdê° ìê±°ë ì´ìíë©´ ì¤ëì 기ì¤ì¼ë¡ ë³´ì 8791 if (!ymd || typeof ymd !== 'string' || ymd.length < 8) { 8792 const t = new Date(); 8793 t.setDate(t.getDate() + (days || 0)); 8794 const yy = t.getFullYear(); 8795 const mm = String(t.getMonth() + 1).padStart(2, '0'); 8796 const dd = String(t.getDate()).padStart(2, '0'); 8797 return `${yy}-${mm}-${dd}`; 8798 } 8799 const [y, m, d] = ymd.split('-').map(Number); 8800 const dt = new Date((y || new Date().getFullYear()), (m ? m - 1 : 0), (d || 1)); 8801 dt.setDate(dt.getDate() + (days || 0)); 8802 const yy = dt.getFullYear(); 8803 const mm = String(dt.getMonth() + 1).padStart(2, '0'); 8804 const dd = String(dt.getDate()).padStart(2, '0'); 8805 return `${yy}-${mm}-${dd}`; 8806 } 8807 8808 // íì©: "9:05", "23:45", "23:45:00" (ìë¤ ê³µë°± íì©) 8809 const TIME_RX = /^\s*\d{1,2}:\d{2}(?::\d{2})?\s*$/; 8810 const toHM = (t) => { 8811 if (!t || typeof t !== 'string') return '00:00'; 8812 const parts = t.trim().split(':'); // ["HH","mm"] ëë ["HH","mm","ss"] 8813 const Hn = parseInt(parts[0], 10); 8814 const Mn = parseInt(parts[1] ?? '0', 10); 8815 const HH = isFinite(Hn) ? String(Hn).padStart(2, '0') : '00'; 8816 const MM = isFinite(Mn) ? String(Mn).padStart(2, '0') : '00'; 8817 return `${HH}:${MM}`; 8818 }; 8819 8820 const mapped = (events || []).map(e => { 8821 let settings = {}; 8822 try { settings = JSON.parse(e?.settings || '{}'); } catch {} 8823 8824 const isHoliday = e?.seq && String(e.seq).startsWith('holiday_'); 8825 8826 // ë ì§ íë³´: s_date/e_date â start/end â ì¤ë 8827 let sDate = (e?.s_date || '').slice(0, 10); 8828 let eDate = (e?.e_date || '').slice(0, 10); 8829 8830 if (!sDate && typeof e?.start === 'string') sDate = e.start.slice(0, 10); 8831 if (!eDate && typeof e?.end === 'string') eDate = e.end.slice(0, 10); 8832 if (!sDate) { 8833 const t = new Date(); 8834 sDate = `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, '0')}-${String(t.getDate()).padStart(2, '0')}`; 8835 } 8836 if (!eDate) eDate = sDate; 8837 8838 // ìê° ì ê·í 8839 const sHasTime = TIME_RX.test(e?.s_time || ''); 8840 const eHasTime = TIME_RX.test(e?.e_time || ''); 8841 const sTime = sHasTime ? toHM(e.s_time) : '00:00'; 8842 const eTime = eHasTime ? toHM(e.e_time) : (sHasTime ? toHM(e.s_time) : '00:00'); 8843 8844 // fulltime íëê·¸ 8845 const fullTFlag = (e?.fulltime === 'Y'); 8846 8847 // ìê°ì´ ë ë¤ ìì¼ë©´ 무조건 timed, ìëë©´ fullTFlag/ë ì§ ë²ìë¡ all-day 8848 const isTimed = (sHasTime && eHasTime) && !fullTFlag; 8849 const fullT = !isTimed && (fullTFlag || sDate < eDate); 8850 8851 // ââ ê³µí´ì¼(ë°°ê²½) 8852 if (isHoliday) { 8853 const endPlus1 = addDaysStr(eDate, 1); 8854 return { 8855 id: `holiday_${sDate}_${settings.title || e.title}`, 8856 title: e?.title || settings.title || '', 8857 start: `${sDate}T00:00`, 8858 end: `${endPlus1}T00:00`, 8859 allDay: true, 8860 display: 'background', 8861 classNames: ['holiday-event'], 8862 start_date: sDate, 8863 end_date: eDate, 8864 }; 8865 } 8866 8867 let startISO, endISO, allDayFlag; 8868 8869 if (isTimed) { 8870 allDayFlag = false; 8871 startISO = `${sDate}T${sTime}`; 8872 endISO = `${eDate}T${eTime}`; 8873 8874 // Invalid Date ë°©ì§: ì í¨íì§ ìì¼ë©´ ë³´ì 8875 let s = new Date(startISO); 8876 let t = new Date(endISO); 8877 if (isNaN(s.getTime())) s = new Date(`${sDate}T00:00`); 8878 if (isNaN(t.getTime())) t = new Date(`${eDate}T${eTime || '00:00'}`); 8879 8880 // end < start â ëì¼ ìê°(0-duration) 8881 if (t.getTime() < s.getTime()) t = new Date(s.getTime()); 8882 8883 // ê°ì ë ì§ì¸ë° endê° ë¤ìë 00:00 ê²½ê³ë¡ ëì´ê°ë©´ 23:59ë¡ í´ë¨í 8884 const sameYMD = (a, b) => a.getFullYear()===b.getFullYear() && a.getMonth()===b.getMonth() && a.getDate()===b.getDate(); 8885 if (!sameYMD(s, t) && sDate === eDate && t.getHours() === 0 && t.getMinutes() === 0) { 8886 t = new Date(s); t.setHours(23, 59, 0, 0); 8887 } 8888 8889 // (ì í) 0-duration ë ë 꼬ì ë°©ì§ +1ë¶ 8890 if (t.getTime() === s.getTime()) t = new Date(t.getTime() + 60 * 1000); 8891 8892 // ISO ì¬ì¡°ë¦½ 8893 const yy = t.getFullYear(); 8894 const mm = String(t.getMonth() + 1).padStart(2, '0'); 8895 const dd = String(t.getDate()).padStart(2, '0'); 8896 const HH = String(t.getHours()).padStart(2, '0'); 8897 const MI = String(t.getMinutes()).padStart(2, '0'); 8898 endISO = `${yy}-${mm}-${dd}T${HH}:${MI}`; 8899 } else { 8900 // all-day: endë ìµì¤í´ë£¨ìë¸(+1ì¼) 8901 allDayFlag = true; 8902 startISO = `${sDate}T00:00`; 8903 const endPlus1 = addDaysStr(eDate, 1); 8904 endISO = `${endPlus1}T00:00`; 8905 } 8906 8907 const isMulti = (sDate && eDate && sDate !== eDate) || (allDayFlag && sDate !== eDate); 8908 8909 return { 8910 title: e?.title || settings.title || '', 8911 start: startISO, 8912 end: endISO, 8913 allDay: allDayFlag, 8914 color: settings.color || '#4789e7', 8915 multiOrder: isMulti ? 0 : 1, 8916 memo: e?.memo, 8917 pid: e?.pid, 8918 seq: e?.seq, 8919 s_time: e?.s_time, 8920 e_time: e?.e_time, 8921 start_date: sDate, 8922 end_date: eDate, 8923 fulltime: e?.fulltime, 8924 classNames: [] 8925 }; 8926 }); 8927 8928 // ì¸í°íì´ì¤ ì ì§ 8929 // console.log(calendarElsettings) 8930 let pid = null; 8931 8932 if (Array.isArray(events) && events.length > 0) { 8933 pid = events[0].pid || null; 8934 } 8935 8936 const calendarFlag = (pid && calendarElsettings.get(pid) === true); 8937 return calendarFlag ? mapped : mapped.filter(ev => ev.classNames.includes('holiday-event')); 8938 } 8939 8940 function getClickedDateStrAccurate(info) { 8941 const stack = (info.jsEvent && document.elementsFromPoint) 8942 ? document.elementsFromPoint(info.jsEvent.clientX, info.jsEvent.clientY) 8943 : []; 8944 8945 const cell = stack.find(el => el && el.getAttribute && el.getAttribute('data-date')); 8946 8947 if (cell) return cell.getAttribute('data-date'); 8948
8949 const byClosest = info.el.closest('.fc-daygrid-day[data-date], .fc-timegrid-col[data-date], [data-date]'); 8950 if (byClosest) return byClosest.getAttribute('data-date'); 8951 8952 return (info.event.startStr || '').split('T')[0]; 8953 } 8954 8955 function ymKey(d){ return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`; } 8956 8957 function ymAdd(ym, delta) { 8958 const [y, m] = ym.split('-').map(Number); 8959 const n = y * 12 + (m - 1) + delta; 8960 const yy = Math.floor(n / 12), mm = (n % 12) + 1; 8961 return `${yy}-${String(mm).padStart(2, '0')}`; 8962 } 8963 8964 function monthsBetweenInclusive(sYmd, eYmd) { 8965 const out = []; 8966 const [sy, sm] = sYmd.split('-').map(Number); 8967 const [ey, em] = eYmd.split('-').map(Number); 8968 let y = sy, m = sm; 8969 while (y < ey || (y === ey && m <= em)) { 8970 out.push(`${y}-${String(m).padStart(2, '0')}`); 8971 m++; 8972 if (m === 13) { m = 1; y++; } 8973 } 8974 return out; 8975 } 8976 8977 function invalidateAround(pid, ym) { // ym: 'YYYY-MM' 8978 const pidMap = monthCache.get(pid); 8979 if (!pidMap) return; 8980 8981 const [y, m] = ym.split('-').map(Number); 8982 const prev = new Date(y, m - 2, 1); 8983 const cur = new Date(y, m - 1, 1); 8984 const next = new Date(y, m, 1); 8985 8986 [prev, cur, next].forEach(d => { 8987 const key = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`; 8988 pidMap.delete(key); 8989 }); 8990 } 8991 8992 // ìë²ìì ë´ë ¤ì¨ 3ê°ìì¹ data를 ë¬ë³ë¡ ë¶ë°°í´ì ë³í© 8993 function upsertMonthCacheFromServer(pid, serverEvents) { 8994 if (!serverEvents) return; 8995 let pidMap = monthCache.get(pid); 8996 if (!pidMap) { 8997 pidMap = new Map(); 8998 monthCache.set(pid, pidMap); 8999 } 9000 9001 const mapped = buildFcEvents(serverEvents) || []; // â ëì¼ í¬ë§·ì¼ë¡ ë§ì¶¤ 9002 const bucket = new Map(); // key: 'YYYY-MM' -> ev[] 9003 for (const ev of mapped) { 9004 // ìì/ë ê³ì° (all-day ë° 00:00 ê²½ê³ ë³´ì ) 9005 const s0 = new Date(ev.start); 9006 const e0 = new Date(ev.end); 9007 const s = new Date(s0); 9008 const e = new Date(e0); 9009 9010 // ì¢ ì¼(Y) ëë endê° 00:00:00ì¸ ê²½ì° íìì© inclusive ë³´ì 9011 if (ev.fulltime === 'Y' || ev.allDay) { 9012 e.setDate(e.getDate() - 1); 9013 } else if (e0.getHours() === 0 && e0.getMinutes() === 0 && e0.getSeconds() === 0) { 9014 e.setMilliseconds(e.getMilliseconds() - 1); 9015 } 9016 9017 const cur = new Date(s.getFullYear(), s.getMonth(), 1); 9018 const last = new Date(e.getFullYear(), e.getMonth(), 1); 9019 while (cur <= last) { 9020 const key = ymKey(cur); 9021 if (!bucket.has(key)) bucket.set(key, []); 9022 bucket.get(key).push(ev); 9023 cur.setMonth(cur.getMonth() + 1); 9024 } 9025 } 9026 9027 for (const [key, arr] of bucket.entries()) { 9028 const prev = pidMap.get(key) || []; 9029 const seen = new Set(); 9030 const merged = []; 9031 for (const item of [...prev, ...arr]) { 9032 const k = `${item.id || item.seq || item.title}|${item.start}|${item.end}|${item.allDay ? 1 : 0}`; 9033 if (!seen.has(k)) { seen.add(k); merged.push(item); } 9034 } 9035 pidMap.set(key, merged); 9036 } 9037 } 9038 9039 function monthsAround(ym) { 9040 const [y, m] = ym.split('-').map(Number); 9041 const prev = new Date(y, m - 2, 1); 9042 const cur = new Date(y, m - 1, 1); 9043 const next = new Date(y, m, 1); 9044 return [prev, cur, next].map(d => `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`); 9045 } 9046 9047 // ì /ë¹/ë¤ì ë¬ ìºì 무í¨í
9048 function invalidateAround(pid, ym) { 9049 const pidMap = monthCache.get(pid); 9050 if (!pidMap) return; 9051 9052 const [y, m] = ym.split('-').map(Number); 9053 const prev = new Date(y, m - 2, 1); // ì ì 9054 const cur = new Date(y, m - 1, 1); // ë¹ì 9055 const next = new Date(y, m, 1); // ë¤ìì 9056 9057 [prev, cur, next].forEach(d => { 9058 const key = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`; 9059 pidMap.delete(key); 9060 }); 9061 } 9062 9063 function monthsInRange(start, end){ 9064 const arr = []; 9065 const d = new Date(start.getFullYear(), start.getMonth(), 1); 9066 while (d <= end) { arr.push(ymKey(d)); d.setMonth(d.getMonth()+1); } 9067 return arr; 9068 } 9069 9070 // ì¸ ë¬(ì ì/í´ë¹ì/ë¤ìì)ì í ë²ì ë°ì ìºìì ë¶ì° ì ì¥ 9071 function fetchMonth(pid, yearMonth, data_type) { 9072 let pidCache = monthCache.get(pid); 9073 let pidInflight = inflight.get(pid); 9074 if (!pidCache) { pidCache = new Map(); monthCache.set(pid, pidCache); } 9075 if (!pidInflight) { pidInflight = new Map(); inflight.set(pid, pidInflight); } 9076 9077 // ì´ë¯¸ ìºìëì´ ìì¼ë©´ ì¬ì¬ì© 9078 if (pidCache.has(yearMonth)) return Promise.resolve(pidCache.get(yearMonth)); 9079 // ëì¼ YMì ëí ì§íì¤ ìì²ì´ ìì¼ë©´ ê·¸ê²ì ê³µì 9080 if (pidInflight.has(yearMonth)) return pidInflight.get(yearMonth); 9081 9082 const prevYM = ymAdd(yearMonth, -1); 9083 const nextYM = ymAdd(yearMonth, +1); 9084 9085 // ð¹ ë³í© ì í¸ 9086 const dedupe = (list) => { 9087 const seen = new Set(); 9088 const out = []; 9089 for (const ev of list) { 9090 const k = `${ev.id || ev.seq || ev.title}|${ev.start}|${ev.end}|${ev.allDay ? 1 : 0}`; 9091 if (!seen.has(k)) { seen.add(k); out.push(ev); } 9092 } 9093 return out; 9094 }; 9095 const mergeSet = (cache, ym, arr) => { 9096 const prev = cache.get(ym) || []; 9097 const merged = dedupe(prev.concat(arr || [])); 9098 cache.set(ym, merged); 9099 }; 9100 9101 const p = new Promise((resolve, reject) => { 9102 $.ajax({ 9103 url: '/template/get_calendar', 9104 type: 'POST', 9105 dataType: 'json', 9106 data: { sid: b.SID, pid, yearMonth, data_type }, 9107 success: function(raw) { 9108 checkError(raw); 9109 // ìë² â FC ì´ë²¤í¸ë¡ ë³í 9110 const all = buildFcEvents(raw) || []; 9111 9112 // ð¹ ì ë²í·í 9113 const buckets = new Map(); 9114 const put = (ym, ev) => { 9115 if (!buckets.has(ym)) buckets.set(ym, []); 9116 buckets.get(ym).push(ev); 9117 }; 9118 9119 for (const ev of all) { 9120 const sStr = ev.start_date || (ev.start?.slice(0, 10)) || ''; 9121 let eStr = ev.end_date || ''; 9122 9123 if (!sStr) continue; 9124 9125 // end ë³´ì (ì¢ ì¼: exclusive â inclusive / 00:00 ê²½ê³ ë³´ì ) 9126 if (!eStr) { 9127 if (ev.allDay && ev.end) eStr = addDaysStr(ev.end.slice(0, 10), -1); 9128 else if (ev.end) eStr = ev.end.slice(0, 10); 9129 else eStr = sStr; 9130 } else { 9131 // ì í: ìë² end_dateê° 'YYYY-MM-DD' 00:00:00 ì미ë¼ë©´ í루 빼기 9132 // ë§ì½ ìë² end_dateê° ì´ë¯¸ inclusiveë¼ë©´ ì´ ë¸ë¡ì ì ê±°íì¸ì. 9133 // (íì¬ ë¡ì§ì allDayììë§ -1 ì²ë¦¬íë¯ë¡ ê·¸ëë¡ ëë ê² ìì ) 9134 } 9135 9136 // ð¹ s~e ì¬ì´ 모ë YM ë²í·ì í¸ì 9137 const sYM = sStr.slice(0, 7); 9138 const eYM = eStr.slice(0, 7); 9139 for (const ym of monthsBetweenInclusive(sYM, eYM)) { 9140 put(ym, ev); 9141 } 9142 } 9143 9144 // ð¹ set â mergeSet ë¡ ë³ê²½ (ë®ì´ì°ê¸° ê¸ì§) 9145 mergeSet(pidCache, prevYM, buckets.get(prevYM)); 9146 mergeSet(pidCache, yearMonth, buckets.get(yearMonth)); 9147 mergeSet(pidCache, nextYM, buckets.get(nextYM)); 9148 9149 // inflight í´ì (ìì² ê³µì íë 3ê°ì í¤ ëª¨ë ì ê±°) 9150 pidInflight.delete(prevYM); 9151 pidInflight.delete(yearMonth); 9152 pidInflight.delete(nextYM); 9153 9154 resolve(pidCache.get(yearMonth)); 9155 }, 9156 error: function(xhr, status, err) { 9157 pidInflight.delete(prevYM); 9158 pidInflight.delete(yearMonth); 9159 pidInflight.delete(nextYM); 9160 reject(err); 9161 } 9162 }); 9163 }); 9164 9165 // ëì¼ ìì² ê³µì (3ê°ì 모ë ê°ì Promise ê³µì ) 9166 pidInflight.set(prevYM, p); 9167 pidInflight.set(yearMonth, p); 9168 pidInflight.set(nextYM, p); 9169 9170 return p; 9171 } 9172 9173 function calendarShow(elsettings) { 9174 return ( 9175 property.UMEMBER.check_adm == true || 9176 property.UMEMBER.check_uadm == true || 9177 elsettings.read_chmod == 'all' || 9178 (elsettings.read_chmod == 'admin' && property.UMEMBER.check_adm == true) || 9179 (elsettings.read_chmod == 'admin' && property.UMEMBER.check_uadm == true) || 9180 (elsettings.read_chmod == 'member' && property.UMEMBER.check_login == true) 9181 ); 9182 } 9183 9184 // 주/ì¼ ìºë¦°ë ê³µí´ì¼ ì¶ê° 9185 function headerRoot(view) { 9186 if (view && view.calendar && view.calendar.el) return view.calendar.el; 9187 if (view && view.el) return view.el; 9188 return document; 9189 } 9190 function fmtDate(d) { 9191 const y = d.getFullYear();
9192 const m = String(d.getMonth() + 1).padStart(2, '0'); 9193 const dd = String(d.getDate()).padStart(2, '0'); 9194 return `${y}-${m}-${dd}`; 9195 } 9196 function stripTime(d) { 9197 if (!(d instanceof Date)) return null; 9198 return new Date(d.getFullYear(), d.getMonth(), d.getDate()); 9199 } 9200 function clearHolidayHeaderLabels(view) { 9201 const root = headerRoot(view); 9202 const header = root.querySelector('.fc-col-header'); 9203 if (!header) return; 9204 header.querySelectorAll('.holiday-label').forEach(n => n.remove()); 9205 header.querySelectorAll('.fc-col-header-cell-cushion.holiday-box') 9206 .forEach(el => el.classList.remove('holiday-box')); 9207 } 9208 function addHolidayHeaderLabel(view, dateStr, title) { 9209 const root = headerRoot(view); 9210 const header = root.querySelector('.fc-col-header'); 9211 if (!header) return; 9212 9213 const th = header.querySelector(`[data-date="${dateStr}"]`); 9214 if (!th) return; 9215 9216 const inner = th.querySelector('.fc-scrollgrid-sync-inner') || th; 9217 9218 const cushion = 9219 inner.querySelector('.fc-col-header-cell-cushion') || 9220 th.querySelector('.fc-col-header-cell-cushion') || 9221 inner; 9222 if (cushion && !cushion.classList.contains('holiday-box')) { 9223 cushion.classList.add('holiday-box'); 9224 } 9225 9226 const exists = Array.from(inner.querySelectorAll('.holiday-label')) 9227 .some(el => el.textContent === (title || '')); 9228 if (!exists) { 9229 const label = document.createElement('span'); 9230 label.className = 'holiday-label'; 9231 label.textContent = title || ''; 9232 inner.appendChild(label); 9233 } 9234 } 9235 function isHolidayEvent(ev) { 9236 const classes = ev.classNames || ev.extendedProps?.classNames || []; 9237 const hasHoliday = Array.isArray(classes) ? classes.includes('holiday-event') : (typeof classes === 'string' && classes.indexOf('holiday-event') > -1); 9238 return hasHoliday && ev.display === 'background'; 9239 } 9240 function rebuildHolidayHeaderLabels(calendar) { 9241 const view = calendar.view; 9242 const vt = view?.type; 9243 if (!(vt === 'timeGridWeek' || vt === 'timeGridDay')) { 9244 clearHolidayHeaderLabels(view); 9245 return; 9246 } 9247 9248 const visibleStart = stripTime(view.activeStart); 9249 const visibleEnd = stripTime(view.activeEnd); 9250 if (!visibleStart || !visibleEnd) return; 9251 9252 clearHolidayHeaderLabels(view); 9253 9254 const map = {}; 9255 9256 calendar.getEvents().forEach(ev => { 9257 if (!isHolidayEvent(ev)) return; 9258 9259 const evStart = stripTime(ev.start); 9260 if (!evStart) return; 9261 9262 let evEnd = stripTime(ev.end); 9263 if (!evEnd) { 9264 evEnd = new Date(evStart); 9265 evEnd.setDate(evEnd.getDate() + 1); 9266 } 9267 9268 const s = new Date(Math.max(evStart.getTime(), visibleStart.getTime())); 9269 const e = new Date(Math.min(evEnd.getTime(), visibleEnd.getTime())); 9270 if (s >= e) return; 9271 9272 for (let d = new Date(s); d < e; d.setDate(d.getDate() + 1)) { 9273 const dateStr = fmtDate(d); 9274 (map[dateStr] ||= new Set()).add(ev.title || ''); 9275 } 9276 }); 9277 9278 Object.entries(map).forEach(([dateStr, titles]) => {
9279 titles.forEach(title => addHolidayHeaderLabel(view, dateStr, title)); 9280 }); 9281 } 9282 function setupHolidayHeaderHooks(calendar) { 9283 let t; 9284 const refresh = () => { 9285 clearTimeout(t); 9286 t = setTimeout(() => requestAnimationFrame(() => { 9287 rebuildHolidayHeaderLabels(calendar); 9288 rebuildMonthHolidayBoxes(calendar); 9289 }), 30); 9290 }; 9291 9292 calendar.on('datesSet', refresh); 9293 calendar.on('eventAdd', refresh); 9294 calendar.on('eventChange',refresh); 9295 calendar.on('eventRemove',refresh); 9296 calendar.on('loading', (isLoading) => { if (!isLoading) refresh(); }); 9297 9298 requestAnimationFrame(refresh); 9299 } 9300 //ìê° ê³µí´ì¼ 9301 function clearMonthHolidayBoxes(view) { 9302 const root = headerRoot(view); 9303 if (!root) return; 9304 root.querySelectorAll('.fc-daygrid-day-top.holiday-box') 9305 .forEach(n => n.classList.remove('holiday-box')); 9306 } 9307 9308 function rebuildMonthHolidayBoxes(calendar) { 9309 const view = calendar.view; 9310 if (!view || !view.type.startsWith('dayGrid')) { 9311 clearMonthHolidayBoxes(view); 9312 return; 9313 } 9314 9315 const locale = calendar.getOption("locale"); 9316 if (locale != "ko") { 9317 clearMonthHolidayBoxes(view); 9318 return; 9319 } 9320 9321 const visibleStart = stripTime(view.activeStart); 9322 const visibleEnd = stripTime(view.activeEnd); 9323 if (!visibleStart || !visibleEnd) return; 9324 9325 clearMonthHolidayBoxes(view); 9326 9327 const hasHolidayMap = {}; 9328 calendar.getEvents().forEach(ev => { 9329 if (!isHolidayEvent(ev) || !ev.start) return; 9330 9331 const evStart = stripTime(ev.start); 9332 let evEnd = stripTime(ev.end); 9333 if (!evEnd) { evEnd = new Date(evStart); evEnd.setDate(evEnd.getDate() + 1); } 9334 9335 const s = new Date(Math.max(evStart.getTime(), visibleStart.getTime())); 9336 const e = new Date(Math.min(evEnd.getTime(), visibleEnd.getTime())); 9337 if (s >= e) return; 9338 9339 for (let d = new Date(s); d < e; d.setDate(d.getDate() + 1)) { 9340 hasHolidayMap[fmtDate(d)] = true; 9341 } 9342 }); 9343 9344 const root = headerRoot(view); 9345 root.querySelectorAll('.fc-daygrid-day').forEach(td => { 9346 const dateStr = td.getAttribute('data-date'); 9347 if (!dateStr) return; 9348 const top = td.querySelector('.fc-daygrid-day-top'); 9349 if (!top) return; 9350 if (hasHolidayMap[dateStr]) top.classList.add('holiday-box'); 9351 }); 9352 } 9353 9354 function fmt(dt) { 9355 const y = dt.getFullYear(); 9356 const m = String(dt.getMonth() + 1).padStart(2, '0'); 9357 const d = String(dt.getDate()).padStart(2, '0'); 9358 const hh = String(dt.getHours()).padStart(2, '0'); 9359 const mm = String(dt.getMinutes()).padStart(2, '0'); 9360 return `${y}-${m}-${d} ${hh}:${mm}`; 9361 } 9362 9363 function toYMDLocal(d) { 9364 if (!d) return ''; 9365 const yy = d.getFullYear(); 9366 const mm = String(d.getMonth() + 1).padStart(2, '0'); 9367 const dd = String(d.getDate()).padStart(2, '0'); 9368 return `${yy}-${mm}-${dd}`; 9369 } 9370 9371 9372 function initCalendar(pid, c, retryCount = 0) { 9373 var c = (typeof c != 'undefined') ? c : ''; 9374 // console.log(pid); 9375 const MAX_RETRIES = 5; 9376 var containerEl = document.querySelector('.userEL' + pid + ' .calendar-container'); 9377 var lang = document.querySelector('.calendar[data-id="' + pid + '"]').classList.contains('en'); 9378 9379 var language = 'ko'; 9380 if(lang) language = 'en'; 9381 else language = 'ko'; 9382 9383 if (!containerEl) { 9384 if (retryCount < MAX_RETRIES) { 9385 setTimeout(() => initCalendar(pid, c, retryCount + 1), 300); 9386 } else { 9387 console.warn('initCalendar: containerElì ì°¾ì ì ìì´ ì´ê¸°í를 ì¤ë¨í©ëë¤.'); 9388 } 9389 return; 9390 } 9391 9392 containerEl.innerHTML = ''; 9393 9394 var calendarEl = document.createElement('div'); 9395 calendarEl.id = 'fc-calendar-' + pid; 9396 containerEl.appendChild(calendarEl); 9397 9398 var instance = $.cl_calendar.instances[pid], 9399 maxEvent = parseInt(containerEl.getAttribute('data-view')), 9400 elsettings = '', 9401 view_mode = 'dayGridMonth'; // ê¸°ë³¸ê° 9402 9403 elsettings = JSON.parse(c.elsettings); 9404 if(elsettings.open_mwd == 'month') view_mode = 'dayGridMonth'; 9405 else if(elsettings.open_mwd == 'week') view_mode = 'timeGridWeek'; 9406 else if(elsettings.open_mwd == 'day') view_mode = 'timeGridDay'; 9407 9408 const color = elsettings.google_color ? elsettings.google_color.trim() : '#4789e7'; 9409 googleColor.set(pid, color); 9410 // console.log(`pid:${pid} => color:${color}`); 9411 9412 if(view_mode == 'timeGridWeek' && window.innerWidth < 768) { 9413 view_mode = 'dayGridMonth'; 9414 } 9415 9416 //구ê¸ìºë¦°ë ì°ë 9417 const googleShow = (calendarElsettings.get(pid) === true); 9418 const eventSources = [ 9419 function(fetchInfo, success, failure) { 9420 const data_type = ($('.userEL' + pid).attr('data-modoo-type')) || '';
9421 const keys = monthsInRange(fetchInfo.start, fetchInfo.end); // YYYY-MM ë°°ì´ 9422 9423 // ê° ìì fetchMonthë¡ ë³´ì¥(ìºìê° ìì¼ë©´ ë´ë¶ìì ì¤íµíê² êµ¬í) 9424 Promise.all( 9425 keys.map(k => fetchMonth(pid, k, data_type)) 9426 ) 9427 .then(() => { 9428 // ìºììì í´ë¹ ë²ìì ì´ë²¤í¸ ì ë¶ ëª¨ì¼ê¸° 9429 const pidCache = monthCache.get(pid) || new Map(); 9430 const all = []; 9431 keys.forEach(k => { 9432 const arr = pidCache.get(k); 9433 if (arr && arr.length) all.push(...arr); 9434 }); 9435 9436 const src = all; 9437 9438 const seen = new Set(); 9439 const uniq = []; 9440 for (const ev of src) { 9441 const key = `${ev.id || ev.seq || ev.title}|${ev.start}|${ev.end}|${ev.allDay ? 1 : 0}`; 9442 if (!seen.has(key)) { 9443 seen.add(key); 9444 uniq.push(ev); 9445 } 9446 } 9447 9448 success(uniq); 9449 }) 9450 .catch(failure); 9451 } 9452 ]; 9453 9454 // â 2ï¸â£ 조건문ì¼ë¡ êµ¬ê¸ ìºë¦°ë/ê³µí´ì¼ ìºë¦°ë를 ì¶ê° 9455 const userCalendarId = elsettings.google_id; // ì¬ì©ì ì ë ¥ ëë DBê° 9456 const google_color = elsettings.google_color; 9457 const holidayCalendarId = 'ko.south_korea#[email protected]'; 9458 const apiKey = elsettings.google_api; 9459 const googleSyncOn = String(elsettings.google_sync || '0') === '1'; 9460 9461 function fmtHHMM(date) { 9462 if (!date) return ''; 9463 const hh = String(date.getHours()).padStart(2, '0'); 9464 const mm = String(date.getMinutes()).padStart(2, '0'); 9465 return `${hh}:${mm}`; 9466 } 9467 9468 if (googleSyncOn && userCalendarId && userCalendarId.trim() !== '' && apiKey && googleShow) { 9469 eventSources.push({ 9470 // ð¹ gcal íë¬ê·¸ì¸ ëì ì§ì Google Calendar API í¸ì¶ 9471 events: function(fetchInfo, success, failure) { 9472 const params = new URLSearchParams({ 9473 key: apiKey, 9474 timeMin: fetchInfo.startStr, 9475 timeMax: fetchInfo.endStr, 9476 singleEvents: 'true', 9477 orderBy: 'startTime' 9478 }); 9479 9480 const url = `https://www.googleapis.com/calendar/v3/calendars/${ 9481 encodeURIComponent(userCalendarId) 9482 }/events?${params.toString()}`; 9483 9484 fetch(url) 9485 .then(res => { 9486 if (!res.ok) throw new Error('Google Calendar API error: ' + res.status); 9487 return res.json(); 9488 }) 9489 .then(data => { 9490 const items = data.items || []; 9491 const googleColorHex = google_color || '#4789e7'; 9492 9493 const fcEvents = items 9494 .filter(ev => ev.visibility !== 'private') // ë¹ê³µê°ë ìì ì ì¸ 9495 .map(ev => { 9496 const isAllDay = !!ev.start.date; 9497 const startStr = ev.start.dateTime || ev.start.date; 9498 const endStr = (ev.end && (ev.end.dateTime || ev.end.date)) || startStr; 9499 9500 const start = startStr ? new Date(startStr) : null; 9501 const end = endStr ? new Date(endStr) : null; 9502 9503 let start_date = '', 9504 end_date = '', 9505 s_time = '', 9506 e_time = '', 9507 fulltime = isAllDay ? 'Y' : 'N', 9508 memo = ''; 9509 9510 if (start) { 9511 start_date = fmtDate(start); 9512 9513 if (isAllDay) { 9514 if (end) { 9515 const d = new Date(end); 9516 d.setDate(d.getDate() - 1); 9517 end_date = fmtDate(d); 9518 } else { 9519 end_date = start_date; 9520 } 9521 s_time = ''; 9522 e_time = ''; 9523 } else { 9524 end_date = end ? fmtDate(end) : start_date; 9525 s_time = fmtHHMM(start); 9526 e_time = end ? fmtHHMM(end) : ''; 9527 } 9528 } 9529 9530 // ð¹ ì 목 ìë ì´ë²¤í¸ ì²ë¦¬ 9531 const hasTitle = ev.summary && ev.summary.trim().length > 0; 9532 const title = hasTitle ? ev.summary.trim() : (language == 'ko') ? '(ì 목 ìì)' : '(No title)'; 9533 9534 // description â memo 9535 memo = (ev.description && typeof ev.description === 'string') 9536 ? ev.description 9537 : ''; 9538 9539 const googleColorHex = google_color || '#4789e7'; 9540 9541 return { 9542 id: ev.id, 9543 title, // â ì¬ê¸°ì (ì 목 ìì)ê¹ì§ ì¸í 9544 start: startStr, 9545 end: endStr, 9546 allDay: isAllDay, 9547 backgroundColor: googleColorHex, 9548 borderColor: googleColorHex, 9549 extendedProps: { 9550 ...ev, 9551 isGoogle: true, 9552 start_date, 9553 end_date, 9554 s_time, 9555 e_time, 9556 fulltime, 9557 memo, 9558 backgroundColor: googleColorHex 9559 } 9560 }; 9561 }); 9562 9563 success(fcEvents); 9564 }) 9565 .catch(err => { 9566 console.error('Google Calendar fetch error', err); 9567 failure(err); 9568 }); 9569 }, 9570 9571 // ìë ìµì ë¤ì ê·¸ëë¡ ì ì§í´ë ë¨ 9572 color: google_color || '#4789e7', 9573 className: 'personal-events' 9574 }); 9575 } 9576 9577 var calendar = new FullCalendar.Calendar(calendarEl, { 9578 initialView: view_mode, 9579 eventSources: eventSources, 9580 locale: language, 9581 locales: [ 9582 { 9583 code: 'en', 9584 buttonText: { 9585 today: 'Today', 9586 month: 'Month', 9587 week: 'Week', 9588 day: 'Day', 9589 list: 'List', 9590 // ë·°ë³ë¡ ë 구체íë ê°ë¥ 9591 dayGridMonth: 'Month', 9592 timeGridWeek: 'Week', 9593 timeGridDay: 'Day', 9594 listWeek: 'List', 9595 } 9596 }, 9597 { 9598 code: 'ko', 9599 buttonText: { 9600 today: 'ì¤ë', 9601 month: 'ì', 9602 week: '주', 9603 day: 'ì¼', 9604 list: '목ë¡', 9605 dayGridMonth: 'ì', 9606 timeGridWeek: '주', 9607 timeGridDay: 'ì¼', 9608 listWeek: '목ë¡', 9609 } 9610 } 9611 ], 9612 selectable: true, 9613 fixedWeekCount: false, 9614 showNonCurrentDates: true, 9615 eventDisplay: 'block', 9616 contentHeight: 'auto', 9617 expandRows: true, 9618 headerToolbar: { 9619 left: 'dayGridMonth,timeGridWeek,timeGridDay', 9620 center: 'prev,title,next', 9621 right: 'today' 9622 }, 9623 nowIndicator: true, 9624 windowResize: function(arg) { 9625 const cal = arg.view.calendar; 9626 const isWeek = arg.view.type === 'timeGridWeek'; 9627 const w = window.innerWidth; 9628 9629 if (w <= 768 && isWeek) { 9630 cal.changeView('dayGridMonth'); 9631 } 9632 }, 9633 views: { 9634 dayGridMonth: { 9635 // dayMaxEventRows: maxEvent, 9636 dayMaxEvents: maxEvent, 9637 moreLinkDidMount: function(args) { args.el.removeAttribute('title'); }, 9638 moreLinkContent: function(args) { 9639 var locale = args.view.calendar.getOption("locale"); 9640 if (locale === "ko") { 9641 return { html: `+${args.num}ê°<span class="more"> ë보기</span>` }; 9642 } else { 9643 return { html: `+${args.num} <span class="more">more</span>` }; 9644 } 9645 }, 9646 moreLinkClick: function(info) { 9647 var locale = info.view.dateEnv.locale.codes[0]; 9648 info.jsEvent.preventDefault(); 9649 info.jsEvent.stopPropagation(); 9650 const dateObj = info.date; 9651 var weekdayStr = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼'][dateObj.getDay()]; 9652 if(locale == 'ko') weekdayStr = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼'][dateObj.getDay()]; 9653 else weekdayStr = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][dateObj.getDay()]; 9654 var weekday = [dateObj, weekdayStr]; 9655 const events = info.allSegs.map(seg => seg.event); 9656 9657 openMoreEventsModal(pid, events, weekday); 9658 9659 }, 9660 }, 9661 timeGridWeek: { 9662 slotEventOverlap: false, 9663 eventOverlap: false, 9664 eventMaxStack: 10, 9665 moreLinkContent() { return { html: '' } }, 9666 titleFormat: function(arg) { 9667 const start = new Date(arg.date.marker); 9668 const end = new Date(start); 9669 end.setDate(end.getDate() + 6); 9670 end.setHours(23, 59, 59, 999); 9671 9672 const now = new Date(); 9673 9674 const baseDate = (now >= start && now <= end) ? now : start; 9675 9676 const locale = (arg.localeCodes && arg.localeCodes[0]) || "en"; 9677 9678 if (locale === "ko") { 9679 const y = baseDate.getFullYear();
9680 const m = String(baseDate.getMonth() + 1).padStart(2, "0"); 9681 return `${y}ë ${m}ì`; 9682 } else { 9683 return new Intl.DateTimeFormat(locale, { 9684 month: "long", 9685 year: "numeric", 9686 }).format(baseDate); 9687 } 9688 }, 9689 dayHeaderContent: function(arg) { 9690 var d = arg.date?.marker || arg.date; 9691 var locale = arg.view.dateEnv.locale.codes[0]; 9692 if (locale == 'ko') { 9693 const dayNumber = d.getDate(); 9694 const weekDayKo = new Intl.DateTimeFormat('ko', { weekday: 'short' }).format(d); 9695 return { 9696 html: `<span class="round">${dayNumber}</span> ${weekDayKo}`, 9697 }; 9698 } else { 9699 const dayNumber = d.getDate(); 9700 const weekDayEn = new Intl.DateTimeFormat('en', { weekday: 'short' }).format(d); 9701 return { 9702 html: `<span class="round">${dayNumber}</span> ${weekDayEn}`, 9703 }; 9704 } 9705 } 9706 }, 9707 timeGridDay: { 9708 slotEventOverlap: false, 9709 eventOverlap: false, 9710 eventMaxStack: 10, 9711 moreLinkContent() { return { html: '' } }, 9712 titleFormat: { year: 'numeric', month: 'long' }, 9713 dayHeaderContent: function(arg) { 9714 const dateObj = arg.date; 9715 const dayNumber = dateObj.getDate(); 9716 9717 var locale = arg.view.dateEnv.locale.codes[0]; 9718 if (locale === "ko") { 9719 const weekNames = ["ì¼", "ì", "í", "ì", "목", "ê¸", "í "]; 9720 const weekDay = weekNames[dateObj.getDay()]; 9721 return { 9722 html: `<span class="round">${dayNumber}</span> ${weekDay}`, 9723 }; 9724 } else { 9725 const weekDay = new Intl.DateTimeFormat("en", { weekday: "short" }).format(dateObj); 9726 return { 9727 html: `<span class="round">${dayNumber}</span> ${weekDay}`, 9728 }; 9729 } 9730 } 9731 }, 9732 timeGrid: { 9733 allDayText: (!lang) ? 'íë£¨ì¢ ì¼' : 'All day' 9734 } 9735 }, 9736 // events: function(fetchInfo, success, failure) { 9737 // const data_type = ($('.userEL' + pid).attr('data-modoo-type')) || ''; 9738 // const keys = monthsInRange(fetchInfo.start, fetchInfo.end); // YYYY-MM ë°°ì´ 9739 9740 // // ê° ìì fetchMonthë¡ ë³´ì¥(ìºìê° ìì¼ë©´ ë´ë¶ìì ì¤íµíê² êµ¬í) 9741 // Promise.all( 9742 // keys.map(k =>
9742 fetchMonth(pid, k, data_type)) 9743 // ) 9744 // .then(() => { 9745 // // ìºììì í´ë¹ ë²ìì ì´ë²¤í¸ ì ë¶ ëª¨ì¼ê¸° 9746 // const pidCache = monthCache.get(pid) || new Map(); 9747 // const all = []; 9748 // keys.forEach(k => { 9749 // const arr = pidCache.get(k); 9750 // if (arr && arr.length) all.push(...arr); 9751 // }); 9752 9753 // const src = all; 9754 9755 // const seen = new Set(); 9756 // const uniq = []; 9757 // for (const ev of src) { 9758 // const key = `${ev.id || ev.seq || ev.title}|${ev.start}|${ev.end}|${ev.allDay ? 1 : 0}`; 9759 // if (!seen.has(key)) { 9760 // seen.add(key); 9761 // uniq.push(ev); 9762 // } 9763 // } 9764 9765 // success(uniq); 9766 // }) 9767 // .catch(failure); 9768 // }, 9769 eventOrder: ['multiOrder', 'start', 'duration', 'title'], 9770 // eventOrder: 'start', 9771 eventDidMount: function(info) { 9772 // êµ¬ê¸ ì´ë²¤í¸ë§ ì ë§ì¹ 9773 if (info.event.extendedProps?.isGoogle) { 9774 const col = (googleColor && googleColor.get(pid)) || ''; 9775 if (col) { 9776 info.el.style.backgroundColor = col; 9777 info.el.style.borderColor = col; 9778 9779 // ìê° ë·°ì ìì ì ìë ë°ì (dot 모ëì¼ ê²½ì°) 9780 const dot = info.el.querySelector('.fc-daygrid-event-dot'); 9781 if (dot) { 9782 dot.style.backgroundColor = col; 9783 dot.style.borderColor = col; 9784 } 9785 } 9786 } 9787 9788 if (info.event.display === 'background' && info.event.classNames.includes('holiday-event')) { 9789 const viewType = info.view.type; 9790 if (viewType === 'timeGridWeek' || viewType === 'timeGridDay') { 9791 const start = new Date(info.event.start); 9792 const end = new Date(info.event.end); 9793 for (let d = new Date(start); d < end; d.setDate(d.getDate() + 1)) { 9794 const y = d.getFullYear(); 9795 const m = String(d.getMonth() + 1).padStart(2, '0'); 9796 const day = String(d.getDate()).padStart(2, '0'); 9797 const dateStr = `${y}-${m}-${day}`; 9798 addHolidayHeaderLabel(info.view.el, dateStr, info.event.title || ''); 9799 } 9800 } 9801 9802 const cell = info.el.closest('.fc-daygrid-day'); 9803 if (cell) { 9804 const harnessCount = cell.querySelectorAll('.fc-daygrid-bg-harness').length; 9805 if (harnessCount > 1) { 9806 const labels = cell.querySelectorAll('.holiday-label'); 9807 labels.forEach((label, idx) => { label.classList.add(`multi_${idx + 1}`); }); 9808 } 9809 } 9810 } 9811 9812 if (info.event.extendedProps.seq) { 9813 info.el.setAttribute('data-seq', info.event.extendedProps.seq); 9814 } 9815 9816 const durationHours = (info.event.end - info.event.start) / (1000 * 60 * 60); 9817 if (durationHours > 1) { 9818 const afterDiv = document.createElement('div'); 9819 afterDiv.classList.add('event-overlay'); 9820 afterDiv.style.position = 'absolute'; 9821 afterDiv.style.top = '50px'; 9822 afterDiv.style.left = '0'; 9823 afterDiv.style.right = '0'; 9824 afterDiv.style.height = `calc(100% - 50px)`; 9825 // afterDiv.style.backgroundColor = '#4789e71a'; 9826 afterDiv.style.pointerEvents = 'none'; 9827 info.el.appendChild(afterDiv); 9828 } 9829 }, 9830 dateClick: function(info) { 9831 // console.log('dateClick'); 9832 9833 //íì¬ìê°ê¸°ì¤ 30ë¶ë¨ìë¡ ìììê° ì¤ì 9834 const STEP_MIN = 30; 9835 9836 function ceilToNextSlot(base, stepMin) { 9837 const d = new Date(base); 9838 d.setSeconds(0,0); 9839 let m = d.getMinutes(); 9840 const r = m % stepMin; 9841 if (r !== 0) m += (stepMin - r); 9842 else m += stepMin; 9843 if (m >= 60) { d.setHours(d.getHours()+1); m -= 60; } 9844 d.setMinutes(m); 9845 return d; 9846 } 9847 9848 const start = new Date(info.date); 9849 let time; 9850 9851 if (info.view.type === 'dayGridMonth') { 9852 const next = ceilToNextSlot(new Date(), STEP_MIN); 9853 const s = new Date( 9854 start.getFullYear(), start.getMonth(), start.getDate(), 9855 next.getHours(), next.getMinutes(), 0, 0 9856 ); 9857 const e = new Date(s); e.setHours(e.getHours() + 1); 9858 time = [fmt(s), fmt(e), 0]; 9859 } else { 9860 const s = new Date(info.start); 9861 const e = new Date(info.start); e.setMinutes(e.getMinutes() + 30); 9862 const isAllDay = (info.startStr.includes('T')) ? 0 : 1; 9863 time = isAllDay ? [info.startStr, info.startStr, 1] : [fmt(s), fmt(e), 0]; 9864 } 9865 if(isMobile() && (property.UMEMBER.check_adm || property.UMEMBER.check_uadm)) showCalendarModalEdit(pid, 0, time); 9866 }, 9867 select: function(info) { 9868 // console.log('select'); 9869 9870 //íì¬ìê°ê¸°ì¤ 30ë¶ë¨ìë¡ ìììê° ì¤ì 9871 const STEP_MIN = 30; 9872 9873 function ceilToNextSlot(base, stepMin) { 9874 const d = new Date(base); 9875 d.setSeconds(0,0); 9876 let m = d.getMinutes(); 9877 const r = m % stepMin; 9878 if (r !== 0) m += (stepMin - r); 9879 else m += stepMin; 9880 if (m >= 60) { d.setHours(d.getHours()+1); m -= 60; } 9881 d.setMinutes(m); 9882 return d; 9883 } 9884 9885 const start = new Date(info.start); 9886 let time; 9887 9888 if (info.view.type === 'dayGridMonth') { 9889 const next = ceilToNextSlot(new Date(), STEP_MIN); 9890 const s = new Date( 9891 start.getFullYear(), start.getMonth(), start.getDate(), 9892 next.getHours(), next.getMinutes(), 0, 0 9893 ); 9894 const e = new Date(s); e.setHours(e.getHours() + 1); 9895 time = [fmt(s), fmt(e), 0]; 9896 } else { 9897 const s = new Date(info.start); 9898 const e = new Date(info.start); e.setMinutes(e.getMinutes() + 30); 9899 const isAllDay = (info.startStr.includes('T')) ? 0 : 1; 9900 time = isAllDay ? [info.startStr, info.startStr, 1] : [fmt(s), fmt(e), 0]; 9901 } 9902 if(!isMobile() && property.UMEMBER.check_adm || property.UMEMBER.check_uadm) showCalendarModalEdit(pid, 0, time); 9903 }, 9904 eventClick: function(info) { 9905 info.jsEvent.preventDefault(); 9906 info.jsEvent.stopPropagation(); 9907 var locale = info.view.dateEnv.locale.codes[0]; 9908 const clickedDateStr = getClickedDateStrAccurate(info); 9909 const clickedDate = new Date(clickedDateStr); 9910 var weekdayStr = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼'][clickedDate.getDay()]; 9911 if(locale == 'ko') weekdayStr = ['ì¼ìì¼', 'ììì¼', 'íìì¼', 'ììì¼', '목ìì¼', 'ê¸ìì¼', 'í ìì¼'][clickedDate.getDay()]; 9912 else weekdayStr = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][clickedDate.getDay()]; 9913 const weekday = [clickedDate, weekdayStr]; 9914 9915 const calendar = info.view.calendar; 9916 const allEvents = calendar.getEvents(); 9917 9918 const eventsOnSameDay = allEvents.filter(ev => { 9919 9920 const isGoogle = !!ev.extendedProps?.isGoogle; 9921 9922 if (isGoogle) { 9923 // ---- êµ¬ê¸ ì´ë²¤í¸ ì ì© ë ì§ ê³ì° (ë¡ì»¬ 기ì¤) ---- 9924 const s = ev.start ? new Date(ev.start) : null; 9925 let e = ev.end ? new Date(ev.end) : null; 9926 9927 if (!s) return false;
9928 9929 // end ìì¼ë©´ startì ê°ì ë ë¡ ì·¨ê¸ 9930 if (!e) e = new Date(s); 9931 9932 // allDay ì¸ ê²½ì°, FullCalendarë end를 "exclusive"ë¡ ì°ë¯ë¡ ë§ì§ë§ ë = end - 1ì¼ 9933 if (ev.allDay && ev.end) { 9934 e.setDate(e.getDate() - 1); 9935 } 9936 9937 const startStr = toYMDLocal(s); // â ë¡ì»¬ ë ì§ 9938 const endStr = toYMDLocal(e); // â ë¡ì»¬ ë ì§ 9939 9940 return (clickedDateStr >= startStr && clickedDateStr <= endStr); 9941 } 9942 9943 // ---- 기존(ë´ë¶) ì´ë²¤í¸ ë¡ì§ ê·¸ëë¡ ì ì§, ë ì§ ê³ì°ë§ toYMDLocalë¡ ì 리 ---- 9944 const startStrBase = (ev.extendedProps.start_date || ev.startStr || '').split('T')[0]; 9945 9946 let startStr = startStrBase; 9947 if (!startStr && ev.start) { 9948 startStr = toYMDLocal(ev.start); // ìì ì¥ì¹ 9949 } 9950 9951 let endInclStr; 9952 if (ev.extendedProps.end_date) { 9953 endInclStr = ev.extendedProps.end_date; 9954 } else if (ev.allDay) { 9955 if (ev.end) { 9956 const dayDiff = Math.ceil((ev.end - ev.start) / 86400000); 9957 if (dayDiff >= 2) { 9958 const d = new Date(ev.end); 9959 d.setDate(d.getDate() - 1); 9960 endInclStr = toYMDLocal(d); // â ì¬ê¸°ìë toISOString ëì ë¡ì»¬ 9961 } else { 9962 endInclStr = startStr; 9963 } 9964 } else { 9965 endInclStr = startStr; 9966 } 9967 } else if (ev.end) { 9968 // timed ì´ë²¤í¸ë endStrë ë¡ì»¬ 기ì¤ì¼ë¡ 9969 endInclStr = toYMDLocal(ev.end); 9970 } else { 9971 endInclStr = startStr; 9972 } 9973 9974 return clickedDateStr >= startStr && clickedDateStr <= endInclStr; 9975 }); 9976 9977 openMoreEventsModal(pid, eventsOnSameDay, weekday); 9978 }, 9979 eventContent: function(arg) { 9980 var locale = arg.view.dateEnv.locale.codes[0]; 9981 const noTitleText = (locale === 'ko') ? '(ì 목 ìì)' : '(No title)'; 9982 9983 if (arg.event.classNames.includes('holiday-event')) { 9984 if (locale === 'ko') { 9985 const titleText = (arg.event.title && arg.event.title.trim() !== '') ? arg.event.title : noTitleText; 9986 return { html: `<div class="holiday-label">${titleText}</div>` }; 9987 } else { 9988 return { html: '' }; 9989 } 9990 } 9991 9992 const cal = arg.view.calendar; 9993 let timeText = ''; 9994 9995 if (!arg.event.allDay) { 9996 const start = arg.event.start; 9997 const end = arg.event.end; 9998 const fmtOpts = { 9999 hour: 'numeric', 10000 minute: '2-digit', 10001 meridiem: 'short', 10002 hour12: true 10003 }; 10004 10005 if (end && end.getTime() !== (start?.getTime() ?? 0)) { 10006 timeText = cal.formatRange(start, end, fmtOpts); 10007 } else if (start) { 10008 timeText = cal.formatDate(start, fmtOpts); 10009 } 10010 } 10011 10012 const rawTitle = (typeof arg.event.title === 'string') ? arg.event.title : ''; 10013 const titleText = rawTitle.trim() !== 'undefined' ? rawTitle : noTitleText; 10014 10015 return { 10016 html: ` 10017 <div class="fc-event-custom"> 10018 <div class="fc-event-title">${titleText}</div> 10019 ${timeText ? `<div class="fc-event-time">${timeText}</div>` : ''} 10020 </div> 10021 ` 10022 }; 10023 }, 10024 dayCellContent: function(arg) { return arg.date.getDate(); }, 10025 dayCellDidMount: function(arg) { 10026 // const dayEvents = arg.view.calendar.getEvents().filter(event => { 10027 // return moment(event.start).format('YYYY-MM-DD') === moment(arg.date).format('YYYY-MM-DD') 10028 // && event.classNames.includes('holiday-event'); 10029 // }); 10030 10031 // if (dayEvents.length > 0) { 10032 // const eventsContainer = arg.el.querySelector('.fc-daygrid-day-top'); 10033 // if (eventsContainer) { 10034 // eventsContainer.classList.add('holiday-box'); 10035 // } 10036 // } 10037 }, 10038 datesSet: function(arg) { 10039 clearHolidayHeaderLabels(arg.view.el); 10040 10041 if (arg.view.type === 'timeGridWeek' || arg.view.type === 'timeGridDay') { 10042 const events = arg.view.calendar.getEvents().filter(ev => 10043 ev.display === 'background' && ev.classNames.includes('holiday-event') 10044 ); 10045 for (const ev of events) { 10046 const start = new Date(ev.start); 10047 const end = new Date(ev.end); 10048 for (let d = new Date(start); d < end; d.setDate(d.getDate() + 1)) { 10049 const y = d.getFullYear();
10050 const m = String(d.getMonth() + 1).padStart(2, '0'); 10051 const day = String(d.getDate()).padStart(2, '0'); 10052 addHolidayHeaderLabel(arg.view.el, `${y}-${m}-${day}`, ev.title || ''); 10053 } 10054 } 10055 } 10056 } 10057 }); 10058 10059 calendar.on('datesSet', (arg) => { //ì ì´ê¸° ë ¸ì¶ ê°ì 10060 // â¼ ë¶ì¡± ì í리íì¹ (prev/next ì´ë ì ìºìì ìë ë¬ë§ ë³´ì¶©) 10061 if (!calendar.__prefetching) { 10062 const keys = monthsInRange(arg.start, arg.end); // ['YYYY-MM', ...] 10063 const pidMap = monthCache.get(pid) || new Map(); 10064 const missing = keys.filter(k => !pidMap.has(k)); 10065 10066 if (missing.length) { 10067 calendar.__prefetching = true; 10068 const dt = ($('.userEL'+pid).attr('data-modoo-type')) || ''; 10069 Promise.all(missing.map(k => fetchMonth(pid, k, dt))) 10070 .then(() => arg.view.calendar.refetchEvents()) 10071 .finally(() => { calendar.__prefetching = false; }); 10072 } 10073 } 10074 }); 10075 10076 calendar.render(); 10077 setupHolidayHeaderHooks(calendar); 10078 $.cl_calendar.instances[pid].calendar = calendar; 10079 10080 $(`[data-type="calendar"][data-id="${pid}"]`).addClass('_calendar'); 10081 }//calendar end 10082 10083 // $('.gallery-item').live('click', function(e) { 10084 // if($(this).find('[attr-flink]').length > 0 ) { 10085 // e.preventDefault(); 10086 // return false; 10087 // } 10088 10089 // if($(e.target).hasClass('like') || $(e.target).closest('.figure').hasClass('like')) { 10090 // e.preventDefault(); 10091 // return false; 10092 // } 10093 10094 // var $el = $(this).parents('.element'); 10095 // var pid = $el.attr('data-id'); 10096 // $('.blueimp-gallery').addClass('blueimp-gallery-controls'); 10097 // $('.blueimp-gallery a.zoom-in').remove(); 10098 // $('.blueimp-gallery a.gallery-like').addClass('hide').removeClass('active').removeAttr('data-like'); 10099 10100 // var gid = $(this).find('a').attr('data-gallery'); 10101 // var totalSlide = $(gid).find('.slide').length; 10102 // $('.blueimp-gallery .slide-index .total-slide').text(totalSlide); 10103 10104 // if($(this).find('a').attr('data-img-original') == 'ON') { 10105 // $('.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>'); 10106 // } 10107 10108 // $(gid).off('slide').off('slideend'); 10109 // $(gid).on('slide', function (event, index, slide) { 10110 // if($(this).find('a').attr('data-gallery-like') != 'N') $('.blueimp-gallery a.gallery-like').removeAttr('data-like').addClass('hide'); 10111 // }).on('slideend', function(event, index, slide){ 10112 // $('.blueimp-gallery .slide-index .current-slide').text(index+1); 10113 // if($(this).find('a').attr('data-gallery-like') != 'N') { 10114 // var itemSeq = $el.find('.gallery-item').eq(index).attr('data-seq'); 10115 // if(itemSeq == undefined) { 10116 // itemSeq = $('.galleryPL'+pid+'.gallery-popup .gallery-item[data-index='+index+']').attr('data-seq'); 10117 // } 10118 // var l_position = setTimeout(function(){ 10119 // if(!$(slide).hasClass('slide-loading')) { 10120 // galleryLikePosition(gid, slide, itemSeq); 10121 // clearTimeout(l_position); 10122 // } 10123 // }, 600); 10124 // } 10125 // }); 10126 // $('.blueimp-gallery').find('h3.title').html($(this).find('a').attr('data-title')); 10127 10128 // $.cookie('gallery-item', $(this).attr('data-seq'), { path : '/', expires: 12 * 60 * 60 * 1000 }); 10129 // if(b.PARENT.prev != null) $('.data-page-prev').addClass('active'); 10130 // if(b.PARENT.next != null) $('.data-page-next').addClass('active'); 10131 // e.stopPropagation(); 10132 // }); 10133 10134 // $('body').on('click','.blueimp-gallery a.zoom-in', function(e) { 10135 // var idx = 0, 10136 // eid = $(this).attr('data-id'); 10137 // $('#gframe-' + eid + ' .slide').each(function(i,v) { 10138 // var trans = $(v).attr('style'); 10139 // if(trans.indexOf('translate(0px, 0px)') > -1 || trans.indexOf('transform: translate(0px) translateZ(0px)') > -1) { 10140 // idx=i; 10141 // } 10142 // }); 10143 // // var src = $('#gframe-' + eid + ' .slide[data-index="' + idx + '"] > img').attr('src'); 10144 10145 // // $('.blueimp-gallery a.zoom-in').attr('href',src).attr('target','_blank'); 10146 // e.stopPropagation(); 10147 // }); 10148`` 10149 $('.element[data-type="contact"] .google-map .gm-fullscreen-control').live('click', function(e) { 10150 $(this).toggleClass('gm-open'); 10151 10152 if(!$(this).hasClass('gm-open')) { 10153 var el = $(this).closest('.element').attr('data-el'); 10154 scrollToBlock('.'+el,300); 10155 } 10156 }); 10157 10158 $('#mobile-nav .siteLANG.cl-fixbtn.cl-visible .cl-lang').live({ 10159 click: function(e) { 10160 if($('#mobile-nav .siteLANG.cl-fixbtn.cl-visible .dropdown-menu-wrap').hasClass('open')) { 10161 $('#mobile-nav #tpl-menu').css({ 10162 'position':'relative', 10163 'z-index':'-1' 10164 }); 10165 } else { 10166 $('#mobile-nav #tpl-menu').css({ 10167 'position':'', 10168 'z-index':'' 10169 }); 10170 } 10171 } 10172 }); 10173 10174 $('#mobile-nav .dropdown-menu-wrap.open').live({ 10175 click: function(e) { 10176 $('#mobile-nav .menu-has-children .dropdown-menu a').css('pointer-events',''); 10177 $('#mobile-nav .menu-has-children i.fa-chevron-down').css('z-index','') 10178 } 10179 }); 10180 10181 10182 /* page count */ 10183 if(Object.keys(b.CONTENTS).length) { 10184 var ps_elupdate = this.contentUpdate(b.CONTENTS), 10185 vpmode = (typeof $('.mobilepc_ch').attr('data-desktop-option') != 'undefined') ? $('.mobilepc_ch').attr('data-desktop-option') : b.SETTINGS.viewportMode; 10186 10187 ps_elupdate.done(function(r_data) { 10188 elFooter(); 10189 if(typeof r_data != 'undefined' && typeof r_data.showOnlyFooter != 'undefined' && r_data.showOnlyFooter) { 10190 return false;
10191 } 10192 if(b.COUNT) { 10193 if(b.PARENT.mode == 'shopping') { 10194 if(typeof property.PRODINFO === 'object') $.products.display_info(); 10195 if($('#review-onoff').val() == 'true') $.products.review(b.VIEW,b.PAGE); 10196 if($('#qna-onoff').val() == 'true') $.products.qna(b.VIEW,b.PAGE); 10197 } else { 10198 if(b.VIEW) _this.displayComment(); 10199 } 10200 } 10201 10202 $('[data-aos-dummy]').each(function() { 10203 $(this).attr('data-aos', $(this).attr('data-aos-dummy')).removeAttr('data-aos-dummy'); 10204 }); 10205 // }).then(function() { 10206 // if(typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 10207 // console.log(b.SETTINGS.zoom); 10208 // $.mpcWeb.mpcWebhtml(vpmode,b.CONTENTS,b.SETTINGS.zoom); 10209 // } 10210 }).then(function() { 10211 if(b.VIEW && b.PARENT.mode != 'shopping') { 10212 // initViewPageToolbar().then(function(pageToolbar){ 10213 // setViewPageToolbar(); 10214 // }); 10215 initViewPageBottom(); 10216 } 10217 }).then(function() { 10218 if(typeof b.SETTINGS.hideScrollTop != 'undefined' && b.SETTINGS.hideScrollTop == true) $('#goto-top').addClass('hide'); 10219 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 10220 var ismodeSm = ($('.cl-s-page').hasClass('mode-shopping')) ? true : false; 10221 if(!ismodeSm && b.ONE && !b.VIEW || b.PAGE == b.MENULINK[0] && !b.VIEW) setSitePopup(); 10222 $.siteBanner.init(true,true); 10223 10224 if(b.VALIDTYPE == 'BN' || b.VALIDTYPE == 'SM') { 10225 if(typeof b.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(b.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) { 10226 $.fnav.draw(b.SETTINGS.fnav); 10227 } 10228 10229 if(typeof b.SETTINGS.qm_onoff != 'undefined' && b.SETTINGS.qm_onoff==true) { 10230 var quick_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 10231 10232 if(!(b.PARENT.page != null && (quick_type=='mobile'))) { 10233 if($('.menu-lock-block').length>0) return false; 10234 if(!(ismodeSm && (quick_type=='mobile'))) { 10235 $.quickmenu.init(b.SID, b.PUBLISH,quick_type); 10236 mobileWebQuickmenuPosition(b,quick_type); 10237 } 10238 10239 } 10240 } 10241 10242 } 10243 } 10244 10245 if(typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 10246 mobileWebfnavCheck(vpmode); 10247 } 10248 10249 if($('#page-loading-css').length > 0) { 10250 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 10251 $('#page-loading-css').remove(); 10252 } 10253 }); 10254 } 10255 else { 10256 var checkUrl = b.PAGE.split(","), 10257 vpmode = ''; 10258 vpmode = $.mpcWeb.mpcGetVpmode(vpmode,b.SETTINGS); 10259 10260 isMenuLock(function() { 10261 if(b.SETTINGS.noError404 === true && !(b.MENULIST.indexOf(b.PAGE) > -1) && !b.ONE && !b.VIEW) { // refresh 10262 window.location.href = '/'; 10263 return false; 10264 } 10265 10266 if($('#page-loading-css').length > 0) { 10267 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 10268 $('#page-loading-css').remove(); 10269 } 10270 10271 if(property.ISLOCK == 'false') { 10272 if(property.COUNT==0) { 10273 elFooter(); 10274 if(checkUrl[0] == "forum" && b.VIEW) { 10275 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 10276 $.mpcWeb.mpcWebhtml(vpmode,b.CONTENTS,b.SETTINGS.zoom); 10277 } 10278 var ps_fmview = $.forum.view(b.VIEW); 10279 ps_fmview.done(function(data) { 10280 if($(`.page-comments[data-id="${b.VIEW}"]`).length == 0) _this.displayComment(data); 10281 10282 setTimeout(function() { 10283 if(b.VIEW) setViewPageToolbar(); 10284 if(b.VALIDPLAN && (b.VALIDTYPE == 'BN' || b.VALIDTYPE == 'SM')) { 10285 if(typeof b.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(b.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) $.fnav.draw(b.SETTINGS.fnav); 10286 } 10287 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 10288 $.mpcWeb.mpcWebhtml(vpmode,'',b.SETTINGS.zoom); 10289 mobileWebfnavCheck(vpmode); 10290 } 10291 }, 100); 10292 10293 }).fail(function(error_msg) { 10294 // console.log(error_msg); 10295 }); 10296 } 10297 10298 if(property.PAGE == 'psearch') { 10299 vpmode = $.mpcWeb.mpcGetVpmode(vpmode,property.SETTINGS); 10300 10301 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof property.SETTINGS.viewportMode != 'undefined' && property.SETTINGS.vpMode_onoff===true) $.mpcWeb.mpcWebhtml(vpmode,property.CONTENTS,property.SETTINGS.zoom); 10302 10303 setTimeout(function() { 10304 if(property.VALIDPLAN && (property.VALIDTYPE == 'BN' || property.VALIDTYPE == 'SM')) { 10305 if(typeof property.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(property.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) $.fnav.draw(property.SETTINGS.fnav); 10306 } 10307 if(typeof property.SETTINGS.viewportMode != 'undefined' && property.SETTINGS.vpMode_onoff===true) { 10308 mobileWebfnavCheck(vpmode); 10309 } 10310 }, 500); 10311 } 10312 10313 var ismodeSm = ($('.cl-s-page').hasClass('mode-shopping')) ? true : false;
10314 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 10315 if(!ismodeSm && b.ONE && !b.VIEW || b.PAGE == b.MENULINK[0] && !b.VIEW) setSitePopup(); 10316 $.siteBanner.init(true,true); 10317 } 10318 if(b.VALIDPLAN && (b.VALIDTYPE == 'BN' || b.VALIDTYPE == 'SM')) { 10319 if(typeof b.SETTINGS.fnav != 'undefined' && !$.isEmptyObject(b.SETTINGS.fnav) && (typeof b.SETTINGS.qm_onoff == 'undefined')) { 10320 $.fnav.draw(b.SETTINGS.fnav); 10321 } 10322 10323 if(typeof b.SETTINGS.qm_onoff != 'undefined' && b.SETTINGS.qm_onoff==true) { 10324 var quick_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 10325 if(!(b.PARENT.page != null && (quick_type=='mobile'))) $.quickmenu.init(b.SID, b.PUBLISH,quick_type); 10326 } 10327 } 10328 10329 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 10330 $.mpcWeb.mpcWebhtml(vpmode,'',b.SETTINGS.zoom); 10331 mobileWebfnavCheck(vpmode); 10332 } 10333 10334 } 10335 } else { 10336 elFooter(); 10337 } 10338 }); 10339 } 10340 10341 window._musicUserInteracted = false; 10342 $(document).one('click scroll touchstart keydown', function() { 10343 window._musicUserInteracted = true; 10344 }); 10345 10346 $(window).load(function() { 10347 10348 $('#no-fouc').css('opacity','1'); 10349 if(typeof $.cookie('gallery-item') != 'undefined' && b.VIEW == '') { 10350 moveGallery($.cookie('gallery-item')); 10351 } 10352 10353 if(typeof $.cookie('forum_content_view') == 'undefined'){ 10354 moveScroll(0); 10355 } 10356 _this.loaded(); 10357 10358 if(b.VALIDPLAN && b.VALIDTYPE != 'PK') { 10359 var musicPlay = true; 10360 if(typeof b.SETTINGS.musicStop != 'undefined' && (b.SETTINGS.musicStop === true || b.SETTINGS.musicStop == 'true')) 10361 musicPlay = false; 10362 10363 if(typeof b.SETTINGS.musicUse != 'undefined' && (b.SETTINGS.musicUse === true || b.SETTINGS.musicUse == 'true')){ 10364 if( (typeof b.SITELOCK != 'undefined' && b.SITELOCK == 'true' ) || b.certOpenChk == true) { 10365 musicPlay = false; 10366 } else { 10367 $.musicON(musicPlay); 10368 } 10369 } 10370 10371 // JH 주ì1 : ì ë´ì© 주ì í ìë 주ì í기 10372 // if(typeof b.SETTINGS.musicUse != 'undefined' && (b.SETTINGS.musicUse === true || b.SETTINGS.musicUse == 'true')) 10373 // $.musicON(musicPlay); 10374 10375 if(musicPlay == false) $.musicPause(); 10376 } 10377 10378 var used_disk_value = b.USED_DISK / 1024, 10379 used_disk = Math.ceil(used_disk_value); // byteì¼ë¡ ê°ì ¸ìì megsabyteì¼ë¡ ë³íë¤ 10380 10381 if(Number(b.DISK_SPACE) != -1 && (used_disk > b.DISK_SPACE) && (b.MB_LEVEL != 10)) setlimitdiskPopup(); 10382 10383 // menu sidebar - height overflow 10384 if($('body').width() > 768) { 10385 $('header.navbar-li:not([data-fixtype]) #fixed-menu > li.dropdown').live({ 10386 mouseenter: function(e) { 10387 var this_bottom = $(this).find('.cl-icon').position().top + $(this).find('.cl-icon').height(); 10388 $(this).find('.dropdown-menu').css({ 10389 'top': this_bottom+'px', 10390 }); 10391 }, 10392 mouseleave: function(e) { 10393 $(this).find('.dropdown-menu').removeAttr('style'); 10394 } 10395 }); 10396 10397 $('header.navbar-li[data-fixtype] #fixed-menu > li.dropdown').live({ 10398 mouseenter: function(e) { 10399 var dropdown_cover = '<div class="dropdown_cover"></div>', 10400 this_bottom = 0, 10401 is_fhAlign = (typeof $('.el-menu header.navbar[data-fixtype]').find('.container').attr('data-fh-align') != 'undefined') ? true : false, 10402 checkSidebar = ($('.el-menu header.navbar').hasClass('sidebar')) ? true : false, 10403 $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') : '', 10404 visible_aHght = ($(this).find(' > a:visible').length>0) ? $(this).parents('.cl-fixed-menu').find('li.cl-fixbtn').height() : 10; 10405 10406 var height_arr = [], 10407 height_max = ''; 10408 10409 $cl_fixbtn.find('> a:visible').each(function(){ 10410 var fixbtn_height = ($(this).find('.cl-icon').length>0) ? $(this).find('.cl-icon').height() : $(this).height(), 10411 fixbtn_fsize = Number($(this).css('font-size').replace(/px/gi,'')); 10412 10413 // console.log($(this).height()); 10414 // console.log($(this).parents('li.cl-fixbtn').height()); 10415 if($(this).height() != $(this).parents('li.cl-fixbtn').height()) { 10416 fixbtn_height = ($(this).find('.cl-icon').height() > $(this).height()) ? $(this).find('.cl-icon').height() : 10417 (($(this).find('.cl-icon').height() + fixbtn_fsize < $(this).height()) ? fixbtn_fsize : $(this).outerHeight()); 10418 } 10419 10420 height_arr.push(fixbtn_height); 10421 }); 10422 10423 height_max = Math.max(...height_arr); 10424 10425 var li_Hght = 0; 10426 $(this).parents('.cl-fixed-menu').find('li.cl-fixbtn').each(function(i,v){ 10427 var li_display = $(this).css('display'); 10428 if(li_display!='none') { 10429 li_Hght = Number($(this).height()); 10430 return false;
10431 } 10432 }); 10433 10434 var li_Hght_half = Number((li_Hght/2).toFixed(0)), 10435 height_max_half = Number((height_max/2).toFixed(0)), 10436 ul_height_max_cal = li_Hght_half - height_max_half; 10437 10438 ul_height_max_cal = (ul_height_max_cal <= 0 && ul_height_max_cal>-3) ? 0 : ul_height_max_cal; 10439 this_bottom = ul_height_max_cal + Number(height_max.toFixed(0)) + 5; 10440 10441 //if(!is_fhAlign && !checkSidebar && $(this).hasClass('siteLANG')) { this_bottom -= ul_height_max_cal;} 10442 10443 if(checkSidebar) { 10444 var fixtype = $('.el-menu header.navbar').attr('data-fixtype'), 10445 fixtype_check_arr = ['01','02','03','08']; 10446 this_bottom = ($.inArray(fixtype,fixtype_check_arr)>-1) ? this_bottom : visible_aHght; 10447 } 10448 10449 if(!checkSidebar) { 10450 $(this).find('.dropdown-menu').before(dropdown_cover); 10451 } 10452 10453 $(this).find('.dropdown-menu').css({ 10454 'top': this_bottom+'px' 10455 }); 10456 10457 10458 }, 10459 mouseleave: function(e) { 10460 $(this).find('.dropdown-menu').removeAttr('style'); 10461 $(this).find('.dropdown_cover').remove(); 10462 } 10463 }); 10464 10465 $('.sidebar .nav li.dropdown').live({ 10466 mouseenter: function(e) { 10467 var checkSubMenuPosition = $(this).find('.dropdown-menu').css('position'); 10468 if(checkSubMenuPosition == 'absolute') { 10469 var this_top = $(this).offset().top - $(document).scrollTop(); 10470 if($(this).closest('header').parent('#element-display').length > 0) this_top -= $(this).closest('header').parent('#element-display').offset().top; 10471 10472 $(this).find('.dropdown-menu').css({ 10473 'position': 'fixed', 10474 'top': this_top+'px', 10475 'left': '260px' 10476 }); 10477 } 10478 }, 10479 mouseleave: function(e) { 10480 $(this).find('.dropdown-menu').removeAttr('style'); 10481 } 10482 }); 10483 } else { 10484 $('header.navbar-li #fixed-menu > li.dropdown').find('.dropdown-menu').removeAttr('style'); 10485 $('header.sidebar #tpl-menu > li.dropdown').find('.dropdown-menu').removeAttr('style'); 10486 } 10487 10488 10489 if(typeof $.cookie('ci_goto-gallery') != 'undefined' && $.cookie('ci_goto-gallery')) { 10490 var goto_gallery = '.element[data-id="' + $.cookie('ci_goto-gallery') + '"]', 10491 cookie_domain = (property.HOST.indexOf(':') > -1) ? property.HOST.substring(0,property.HOST.indexOf(':')) : property.HOST; 10492 if($(goto_gallery).length > 0) { 10493 scrollToBlock(goto_gallery, 1000); 10494 } 10495 $.cookie('ci_goto-gallery', '', { domain: '.' + cookie_domain,expires: -1 }); 10496 $.cookie('ci_goto-gallery-cate', '', { domain: '.' + cookie_domain,expires: -1 }); 10497 } 10498 10499 if(isAosBlock) { 10500 $('body,html').addClass('aos-height aos-overflowX'); 10501 if($('header.navbar').hasClass('navbar-fheader')) $.fheader.position(); 10502 } else { 10503 $('body,html').removeClass('aos-height aos-overflowX'); 10504 } 10505 10506 if(typeof fbq == 'function' && b.VALIDTYPE == 'SM') { 10507 if(b.VIEW) { 10508 var checkProduct = (b.PAGE.match(/^forum,/g) === null && typeof b.PARENT != 'undefined' && typeof b.PARENT.mode != 'undefined' && b.PARENT.mode == 'shopping') ? true : false, 10509 mn = (b.ONE) ? b.PARENT.opage : b.PARENT.ppage; 10510 if(checkProduct && typeof callbackEvtViewContent == 'function') callbackEvtViewContent(mn,b.PARENT.seq,b.PARENT.title,$('.total-price').text().replace(/[^0-9]/g,'')); 10511 } else { 10512 var checkProductList = ($('.element[data-type="gallery"][data-mode="shopping"]').length > 0) ? true : false; 10513 if(checkProductList && typeof callbackEvtLead == 'function') callbackEvtLead(b.PAGE); 10514 } 10515 } 10516 10517 }); 10518 }, 10519 contentUpdate : function(contents) { 10520 // console.log(' page draw 01:: contentUpdate'); 10521 var deferred = $.Deferred(); 10522 var b = this.b, 10523 _this = this, 10524 idx = 0; 10525 10526 var checkSiteLock = isSitePasswordLock(); 10527 checkSiteLock.then(function() { 10528 isMenuLock(function() { 10529 var default_t_css = '', default_m_css = ''; 10530 var checkGalleryView = (b.VIEW && b.PAGE.match(/^forum,/g) === null) ? true : false, 10531 page_pos = 0, 10532 site_settings = (typeof b.SETTINGS != 'undefined' && b.SETTINGS) ? b.SETTINGS : {}, 10533 vpmode = ''; 10534 var is_templates = checkTemplateSite(b.SID); 10535 vpmode = $.mpcWeb.mpcGetVpmode(vpmode,b.SETTINGS); 10536 if(b.VALIDPLAN && b.VALIDTYPE != 'PK' && typeof b.SETTINGS.viewportMode != 'undefined' && b.SETTINGS.vpMode_onoff===true) { 10537 $.mpcWeb.mpcWebhtml(vpmode,b.CONTENTS,b.SETTINGS.zoom); 10538 } 10539 10540 if(checkGalleryView) setViewPageStyle(); 10541 10542 var check_modoo = $('.dsgn-body').hasClass('modoo') ? true : false, 10543 fl_data = {}; 10544 10545 if(check_modoo || property?.SETTINGS?.modoo?.floating ) { 10546 fl_data = draw_floating(); 10547 } 10548 10549 $.each(contents, function(i,v) { 10550 page_pos += 1; 10551 // console.log(`i: ${i}, v: `);console.log(v); 10552 var c = v.element, 10553 $el = $('.' + c.elname), 10554 settings = (c.elsettings == '' || typeof c.elsettings == 'undefined') ? {} : $.parseJSON(c.elsettings), 10555 block_lang = (typeof settings.blocklang != 'undefined') ? settings.blocklang : LANG 10556 msny = (c.feature=='masonry') ? true : false;
10557 10558 if(c.type == 'video') { 10559 c.mode = ($el.find('.video-gallery-url').length > 0) ? 'zoom' : 'thumb'; 10560 } 10561 10562 //ì²ì ì ì ì 10563 $el.addClass('el_' + idx) 10564 .addClass('element') 10565 .attr('data-id', c.seq) 10566 .attr('data-el','el_' + idx) 10567 .attr('data-pos', c.pos) 10568 .attr('data-name', c.elname) 10569 .attr('data-msny', msny) 10570 .attr('data-type', c.type) 10571 .attr('data-type2', c.type2) 10572 .attr('data-feature', c.feature) 10573 .attr('data-mode', c.mode) 10574 .attr('data-width', c.folder) 10575 .attr('data-overlap',c.overlap) 10576 .attr('data-case', settings?.blockorg || c.name); 10577 if(c.type == 'form' && typeof c.form_done != 'undefined') $el.attr('data-form-done', c.form_done); 10578 10579 setBlockAOS($el,{block:settings, skipRefresh:true}); 10580 10581 if($el.hasClass('modoo')) { 10582 if(window.innerWidth <= 768 && $el.find('._spotHomesite').hasClass('is_bottom')) { 10583 $el.find('._spotHomesite').removeClass('is_bottom'); 10584 } 10585 10586 if($el.find('._sectionSpot').hasClass('type_full') && window.innerWidth > 768) { 10587 var A = $el.find('._areaLogin').length ? true : false, 10588 C = window.innerHeight; 10589 10590 if (A) { 10591 C -= 50; 10592 } 10593 10594 $el.find("._sectionSpot .swiper-wrapper").css("height", C); 10595 $el.find("._sectionSpot .swiper-slide").css("height", C); 10596 $el.find("._sectionSpot ._imgCover").css("height", C).each(function(F, G) { 10597 var D = $(G); 10598 var E = D.attr("data-lazy-background-img-src"); 10599 D.css({ 10600 backgroundImage: "url(" + E + ")", 10601 filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + E + '}", sizingMethod="scale")' 10602 }); 10603 }); 10604 if (!$el.find("._spotHomesite").hasClass("is_bottom")) { 10605 $el.find("._spotHomesite").css("height", C); 10606 } 10607 } 10608 if($el.find('.page-container-mobile').length > 0) { 10609 if(window.innerWidth <= 768) $el.find('[data-role="page-container"]._content').hide(); 10610 else $el.find('[data-role="page-container"]._content').show(); 10611 } 10612 10613 if($el.parents('body').is('.clnav-overlap-OFF') && $el.is('[data-el="el_0"]')) { 10614 $el.find('._spotHomesite .site_info').append(fl_data.el_html); 10615 } 10616 } 10617 10618 if(c.type == 'contact') { 10619 setContactSubmitSecurity($el, c.seq, settings, block_lang); 10620 } 10621 10622 10623 var checkPageblock = (c.seq === 'all_products' || (c.orgpos == 1 && c.orgpage)) ? true : false; 10624 if (b.ONE && checkPageblock) { 10625 $el.attr('data-pagename', JSON.parse('"' + c.orgpage + '"')); 10626 $el.addClass('link-to-'+JSON.parse('"'+c.orgpage.replace(/ /g,'-')+'"')); 10627 } 10628 10629 var checkNotSupported = (!is_templates) ? $.notSupported.check(v.element.type,v.element.type2,v.element.feature) : false; 10630 if(checkNotSupported) { 10631 $(`.${v.element.elname}`).html('').attr('class',`hide element ${v.element.elname} el_${idx}`); 10632 $(`#el_${idx}css, #js_${idx}`).remove(); 10633 idx++; 10634 return; 10635 } 10636 10637 $el.find('video').attr({'playsinline': '','webkit-playsinline': ''}); 10638 if(c.type == 'video' || c.type == 'others') { 10639 var checkFullscreen = (typeof settings.fullscreen != 'undefined' && settings.fullscreen == 'ON') ? true : false; 10640 if(checkFullscreen) $el.find('.video-wrap').addClass('video-fullscreen'); 10641 } 10642 10643 if($el.length > 1 && c.type == 'showcase') { 10644 $($el).each(function(i, v) { 10645 if(i>0) v.dataset['el'] = ''; 10646 }); 10647 } 10648 10649 if($el.hasClass('error_404')==false) { 10650 if($el.hasClass('el-footer')==false) { 10651 if($el.hasClass('cl-s-product-detail')==false) { 10652 if(typeof setBlockAOS == 'function') setBlockAOS($el,{block:settings, skipRefresh:true}); 10653 else aosAddblock(site_settings,settings,$el); 10654 } 10655 } 10656 } 10657 10658 var data_aos_attr = ''; 10659 if($el.is('[data-aos]')) { 10660 data_aos_attr = $el.attr('data-aos'); 10661 $el.removeAttr('data-aos'); 10662 $el.addClass('aos-init') 10663 } 10664 10665 var blocklang = ''; 10666 if(typeof settings.blocklang != 'undefined') { 10667 blocklang = settings.blocklang; 10668 $el.attr('data-blocklang',blocklang); 10669 } 10670
10671 if (c.type == 'sync') { 10672 showHideSyncField($el, settings); 10673 10674 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; 10675 if($el.find('.slick-page-label').length > 0) { 10676 var page_label = sync_list_total; 10677 if(c.type2 == 'imgpitem' && sync_list_total == 0) page_label = $el.find('.slick .item').length; 10678 10679 $el.find('.slick-page-label .slick-page-now').text(1); 10680 $el.find('.slick-page-label .slick-page-total').text(page_label); 10681 } 10682 10683 if($el.find('.sync-option').length > 0) { 10684 var sync_css = CSSJSON.toJSON(htmlspecialchars_decode(c.elcss)), 10685 sync_s = style.get(sync_css,c.elname); 10686 if(typeof sync_s.__display_count != 'undefined') { 10687 var display_cnt = Number(sync_s.__display_count) || 10; 10688 $el.find(`.sync-item:gt(${display_cnt-1})`).addClass('hide'); 10689 10690 if($el.find('.sync-page-label').length > 0) { 10691 var sync_p_cnt = $el.find('.sync-row .sync-item').length, 10692 sync_p_total = Math.ceil(sync_p_cnt / display_cnt); 10693 $el.find('.sync-page .sync-page-now').text(1); 10694 $el.find('.sync-page .sync-page-total').text(sync_p_total); 10695 10696 if(sync_p_total == 1) $el.find('.sync-page-wrap').hide(); 10697 else $el.find('.sync-page-wrap').show(); 10698 } 10699 } 10700 } 10701 10702 var sync_loadmore_lang = block_lang; 10703 if(typeof settings.loadmore_lang != 'undefined' && settings.loadmore_lang && $.inArray(settings.loadmore_lang.toLowerCase(), ['ko','en']) > -1) sync_loadmore_lang = settings.loadmore_lang.toLowerCase(); 10704 $el.find('.sync-page-more-str').text($.lang[sync_loadmore_lang]['config.loadmore']); 10705 } 10706 10707 if(checkGalleryView) { 10708 if(c.page == 'fixedblock_'+b.PARENT.pid) $el.addClass('el-fixedblock'); 10709 else $el.removeClass('el-fixedblock'); 10710 10711 $el.attr('data-pos', page_pos); 10712 // if(b.LUX && (c.orgpos == '1' || $el.is('.lux-product-block'))) $el.attr('data-ppos', (c.pos*1) + 1); 10713 // else $el.attr('data-ppos', c.pos); 10714 $el.attr('data-ppos', c.pos); 10715 $el.attr('data-posby', c.elnew); 10716 } 10717 10718 if(c.type == 'contact' && c.page == 'fixedcontact') { 10719 $.fixedContact.init($el); 10720 } 10721 10722 // b.ISLOCK = (!b.VALIDPLAN) ? 'false' : b.ISLOCK; 10723 if(b.ISLOCK == 'false') $el.removeClass('hide'); 10724 else $el.addClass('locked'); 10725 10726 if(c.type == 'forum' || c.type == 'latest' || c.type == 'sync') $el.addClass('preloading'); 10727 10728 var elFonts = $el.css('font-family'); 10729 elFonts = elFonts + ",'Nanum Gothic'"; 10730 var reFonts = elFonts.replace(/"/g, "\'"); 10731 $el.css('font-family',reFonts); 10732 10733 //add style 10734 var jcss = CSSJSON.toJSON(c.elcss); 10735 10736 var element_mh = jcss?.children[`.${c.elname}`]?.attributes['min-height'] ?? ''; 10737 if (element_mh && /%$/.test(element_mh)) { 10738 const converted_mh = element_mh.replace('%', ''); 10739 $el.css('min-height',`${converted_mh}vh`); 10740 } 10741 10742 var elpd = style.getPadding(jcss,c.elname); 10743 var pt = parseInt(elpd.top); 10744 var pb = parseInt(elpd.bottom); 10745 10746 if(pt>0||pb>0){ 10747 default_t_css = default_t_css + '\n .'+c.elname + '{'; 10748 if(Math.ceil(pt*0.8)>0) 10749 default_t_css = default_t_css + 'padding-top: '+Math.ceil(pt*0.8) + 'px!important;'; 10750 if(Math.ceil(pb*0.8)>0) 10751 default_t_css = default_t_css + 'padding-bottom: '+Math.ceil(pb*0.8) + 'px!important;'; 10752 default_t_css = default_t_css + '}'; 10753 10754 default_m_css = default_m_css + '\n .'+c.elname + '{'; 10755 if(Math.ceil(pt*0.5)>0) 10756 default_m_css = default_m_css + 'padding-top: '+Math.ceil(pt*0.5) + 'px!important;'; 10757 if(Math.ceil(pb*0.5)>0) 10758 default_m_css = default_m_css + 'padding-bottom: '+Math.ceil(pb*0.5) + 'px!important;'; 10759 default_m_css = default_m_css + '}'; 10760 } 10761 10762 if(idx == Object.keys(b.CONTENTS).length-1){ 10763 var css = '@media only screen and (max-width:767px) {' + default_t_css + '\n}\n'; 10764 css = css + '@media only screen and (max-width:480px) {' + default_m_css + '\n}'; 10765 10766 if($('#el-paddingcss').length == 0) $('.dsgn-body').find('#el_'+(Object.keys(b.CONTENTS).length-1)+'css').after('<style id="el-paddingcss">'+css+'</style>'); 10767 else $('#el-paddingcss').append(css); 10768 } 10769 10770 var settings = (c.elsettings == '' || typeof c.elsettings == 'undefined') ? {} : $.parseJSON(c.elsettings); 10771 10772 if(typeof settings.bookmark != 'undefined' && settings.bookmark) { 10773 $el.attr('data-bookmark',c.seq); 10774 } 10775 10776 if(b.VIEW && (c.type == 'project' || c.type == 'product')) { 10777 $el.find('.data-page-prev').addClass('active'); 10778 $el.find('.data-page-next').addClass('active'); 10779 10780 if(b.PARENT.prev == null) $el.find('.data-page-prev').removeClass('active'); 10781 if(b.PARENT.next == null) $el.find('.data-page-next').removeClass('active'); 10782 10783 //ìì¸íì´ì§ ë°°ê²½ style ì¶ê° 10784 // if(c.type == 'project') setGalleryProjectCss(b.PARENT,b.PARENT['elcss']); 10785 } 10786 10787 if(b.VIEW) { 10788 var img_onoff = (typeof settings.img_original_display != 'undefined' && settings.img_original_display) ? settings.img_original_display : 'OFF'; 10789 $el.find('img[data-attach="true"]').attr('data-img-original',img_onoff); 10790 } 10791 10792 //video block ::: gallery 10793 if(c.type == 'video') { 10794 if($el.find('.video-gallery-url').length > 0) { //ì¬ìë°©ì : íë보기 10795 $.each($el.find('.item'),function(i,v){ 10796 if(c.mode=='zoom') appendGalleryFrame($(this).parents('.element'),c.seq,c.type); 10797 }); 10798 10799 // let lsw = document.querySelector('.element[data-id="' + c.seq + '"] .swiper'); 10800 // if(lsw && lsw.swiper) { 10801 // let slider_motion = $('.element[data-id="' + c.seq + '"]').attr('data-sli
10801der-motion'); 10802 10803 // $('#gframe-' + c.seq).on('opened', function(event){ 10804 // console.log('gallery opend', $(this).data('gallery'), typeof $(this).data('gallery').index); 10805 // if(slider_motion != 'stop') { 10806 // lsw.swiper.autoplay.stop(); 10807 // } 10808 // }).on('closed', function (event){ 10809 // console.log('gallery closed'); 10810 // if(slider_motion != 'stop') { 10811 // lsw.swiper.autoplay.start(); 10812 // } 10813 // }); 10814 // } 10815 } 10816 10817 resizeVideoIframe($el); 10818 } 10819 10820 if(c.type == 'forum') { 10821 var page_num = 1 10822 if (typeof $.cookie('forum_' + v.element.seq) != 'undefined' && $.cookie('forum_' + v.element.seq)) { 10823 page_num = $.cookie('forum_' + v.element.seq); 10824 } 10825 _this.forumUpdate(v.element.seq, page_num, v.view, c.page, v.list); 10826 } else if(c.type == 'gallery') { 10827 _this.galleryEL[c.seq] = { 10828 'seq' : c.seq, 10829 'elname' : c.elname, 10830 'eltag' : c.eltag, 10831 'folder' : c.folder, 10832 'mode' : c.mode, 10833 'elsettings' : c.elsettings, 10834 'feature' : c.feature, 10835 'type' : c.type, 10836 'type2' : c.type2, 10837 'searches' : c.searches 10838 }; 10839 10840 _this.galleryUpdate(c,v); 10841 if(c.only_category) { 10842 localStorage.setItem('searches',JSON.stringify(new Array(c.searches.uri[0]))); 10843 } 10844 10845 if (isShoppingGradePriceHidden(c)) { 10846 $el.find('.figure.price').html(''); 10847 } 10848 10849 //ê°¤ë¬ë¦¬ë¸ë 모ë°ì¼ ê°ë¡ ê°¯ì ì¤ì ì í´ëì¤ì¶ê° 10850 var gal_css = CSSJSON.toJSON(htmlspecialchars_decode(c.elcss)), 10851 gal_s = style.get(gal_css,c.elname), 10852 gal_case = $el.attr('data-case'); 10853 if(gal_s.__layout_m_on == 1 && gal_case != 'gallery61') { 10854 $el.addClass('el-col-m'+gal_s.__layout_col_mc); 10855 } else if(gal_s.__layout_m_on == 1 && gal_case == 'gallery61') { 10856 $el.addClass('el-col-m'+gal_s.__swiper_view_mc); 10857 } 10858 } else if(c.type == 'sync') { 10859 var sync_source = _this.syncUpdate($el,v.element); 10860 $el.html(sync_source); 10861 10862 if($el.find('[data-sync-loop="true"]').length > 0) { 10863 if(c.type2 == 'tab') $el.find('[data-sync-loop="true"] > li[data-list-no="1"]').attr('data-list-no',''); 10864 if(c.type2 == 'imgpitem' && sync_list_total > 0) $el.find('[data-sync-loop="true"] > li:not([data-idx])').remove(); 10865 $el.find('[data-sync-loop="true"] > li').eq(0).addClass('active').siblings().removeClass('active'); 10866 } 10867 10868 } else if(c.type == 'tabs') { 10869 // tab block ì°ì ìì check 10870 var $tabs = $el.find(".tab-box .tab:not(.hover)"), 10871 $initial_tab = ($tabs.filter('.checked').length > 0) ? $tabs.filter('.checked').first() : $tabs.filter('.active').first(); 10872 if($initial_tab.length == 0) $initial_tab = $tabs.eq(0); 10873 if($tabs.filter('.checked').length > 0) { 10874 $tabs.removeClass('active'); 10875 $initial_tab.addClass('active'); 10876 $el.find('.tab-editor').removeClass('active'); 10877 $el.find('.tab-editor.tabs' + $initial_tab.attr('data-order')).addClass('active'); 10878 } 10879 var el = $el.attr('data-name'), 10880 len = $tabs.length, 10881 motion_style = $el.attr("tab-motion-style"), 10882 tab_counted = $el.attr("tab-count"), 10883 mobile_tab_count = $el.attr("mobile-tab-count"), 10884 tab_count = ($(window).width() < 991) ? ((typeof mobile_tab_count != 'undefined' && mobile_tab_count) ? mobile_tab_count : ((tab_counted > 4) ? 4 : tab_counted)) : tab_counted, 10885 mobile_tab_line = $el.attr("mobile-tab-line"), 10886 tab_case = $el.attr("data-case"), 10887 motion = $el.attr("tab-motion"), 10888 priority = Number($initial_tab.attr('data-order')) || 1, 10889 navigation_use = $el.attr("navigation-use"); 10890 tabArrow(el); 10891 if(navigation_use == '1' || ($(window).width() < 991 && mobile_tab_line == '1' && len > Number(tab_count))) { 10892 if(motion_style == 1) { 10893 var motion = (((priority + 1) - Number(tab_count)) >= 0) ? priority - Number(tab_count) : 0; 10894 } else { 10895 var motion = Math.ceil(Number(priority) / Number(tab_count)) - 1; 10896 } 10897 $el.attr('tab-motion', motion); 10898 tabMotion(el, motion, "", len, motion_style, tab_count, tab_case); 10899 } 10900 10901 } else if(c.type == 'sns' && c.type2 == 'feed') { 10902 $el.find('.data-feed-load-more').attr('data-feed-el',c.elname); 10903 $el.find('.data-feed-load-more').removeAttr('style'); 10904 $el.find('.show-posts').removeClass('show-posts'); 10905 10906 if(c.mode == 'site') { 10907 if(!$.isEmptyObject(b.SOCIAL)) { 10908 var load_sns = {}; 10909 if(!$.isEmptyObject(b.SOCIAL.instagram) && typeof settings.sns_instagram != 'undefined' && settings.sns_instagram == 'ON') load_sns['instagram'] = b.SOCIAL.instagram; 10910 if(!$.isEmptyObject(b.SOCIAL.twitter) && typeof settings.sns_twitter != 'undefined' && settings.sns_twitter == 'ON') load_sns['twitter'] = b.SOCIAL.twitter; 10911 10912 if(!$.isEmptyObject(load_sns)) { 10913 loadingElement(c.elname,'loading posts...'); 10914 updateFeed(c.elname, load_sns, settings, function() { 10915 $('.'+c.elname+' .listprogress').remove(); 10916 }); 10917 } 10918 } 10919 } else { 10920 // SNS FEED:: before version 10921 if(typeof settings.sns != 'undefined' && settings.sns.twitter) { 10922 loadingElement(c.elname,'loading posts...'); 10923 updateFeed(c.elname,settings.sns); 10924 } 10925 } 10926 10927 } else if(c.type == 'others' && c.type2 == 'countdown') { 10928 var el_dday = $el.find('[data-dday="true"]'), 10929 cd_date = (el_dday.attr('data-countdown')) ? el_dday.attr('data-countdown') : new Date(), 10930 dateformat = { days : '%D', hours: '%H', minutes: '%M', seconds: '%S' }, 10931 dateendformat = { days : '00', hours: '00', minutes: '00', seconds: '00' }; 10932 10933 if( typeof settings.countdown != 'undefined' && settings.countdown ) { //set - block setting date 10934 cd_date = settings.countdown; 10935 } 10936 if( !el_dday.attr('data-countdown') && typeof cd_date == 'object' ) { //set - example date 10937 cd_date.setTime(cd_date.getTime() + (35*24*60*60*1000)); 10938 } 10939 cd_date = moment(cd_date).format('YYYY/MM/DD HH:mm:ss'); 10940 10941 el_dday.countdown(cd_date, function(event) { 10942 $(this).find('.date-item[data-datetype]').each(function(i) { 10943 var dd_type = $(this).attr('data-datetype'), 10944 dd_format = $(this).attr('data-format'), 10945 dd_endformat = $(this).attr('data-finish'); 10946 10947 if(typeof dd_format == 'undefined' || !dd_format) dd_format = dateformat[dd_type]; 10948 if(typeof dd_endformat == 'undefined' || !dd_endformat) dd_endformat = dateendformat[dd_type]; 10949 10950 if(event.elapsed) $(this).text(dd_endformat); 10951 else $(this).text(event.strftime(dd_format)); 10952 }); 10953 }); 10954 if($el.find('[data-bg-video="true"]').length > 0) resizeVideoIframe($el); 10955 }
10955 else if (c.type == 'latest') { 10956 var latest_data = (typeof settings.latest_data != 'undefined' && settings.latest_data) ? settings.latest_data : {}; 10957 $.latest.init(c.seq,latest_data); 10958 } else if (c.type == 'review') { 10959 _this.galleryEL[c.seq] = { 10960 'seq' : c.seq, 10961 'elname' : c.elname, 10962 'eltag' : c.eltag, 10963 'folder' : c.folder, 10964 'mode' : c.mode, 10965 'elsettings' : c.elsettings, 10966 'feature' : c.feature, 10967 'type' : c.type, 10968 'type2' : c.type2, 10969 'searches' : c.searches 10970 }; 10971 var gallery_data = (typeof settings.gallery_data != 'undefined' && settings.gallery_data) ? settings.gallery_data : {}; 10972 $.reviewContents.init(c.seq, gallery_data); 10973 } else if (c.type == 'form' || (c.type == 'contact' && c.type2 == 'franchise bar')) { 10974 $.forms.init(c.seq); 10975 } else if (c.type == 'contact') { 10976 if(c.type2 == 'franchise map') { 10977 $.each($el.find('[data-fmap-loop="true"] .item .item-name'), function(i, v) { 10978 let itemName = $(v).html(); 10979 itemName = itemName.replace(/< /g, '<').replace(/ >/g, '>'); 10980 $(v).html(itemName); 10981 }); 10982 10983 var $mapItem = $el.find('[data-fmap-loop="true"] > .item.selected'); 10984 drawMap($mapItem, $el); 10985 fmapMobilePaging($el); 10986 } 10987 } else if (c.type == 'calendar') { 10988 var currentDate = new Date(), 10989 getYear = currentDate.getFullYear(), 10990 getMonth = String(currentDate.getMonth() + 1).padStart(2, "0"), 10991 yearMonth = getYear + '-' + getMonth; 10992 $.cl_calendar.init(c.sid, c.seq, yearMonth, c); 10993 } else if (c.type == 'showcase') { 10994 if($el.hasClass('carousel') && $el.find('.item').length > 1 && $el.find('.control-box .carousel-control').hasClass('hide')) { 10995 $el.find('.control-box .carousel-control').removeClass('hide'); 10996 } 10997 10998 slideEffectClassAdd($el); 10999 } 11000 11001 if($el.find('.slick').length > 0) { 11002 if (c.type == 'sync' && typeof syncSlickFn == 'function') syncSlickFn('.' + c.elname); 11003 else if($el.is('[data-clslick]') && typeof clSlickFn == 'function') clSlickFn('.' + c.elname); 11004 } 11005 11006 if(data_aos_attr) { 11007 $el.removeClass('aos-animate'); 11008 $el.addClass('render-aos'); 11009 setTimeout(function(){ 11010 $el.removeClass('render-aos').addClass('aos-animate'); 11011 }) 11012 $el.attr('data-aos-dummy', data_aos_attr) 11013 } 11014 11015 // console.log(c.seq, c.type, settings); 11016 if($.inArray(c.type, ['contents', 'text', 'image', 'video', 'sns']) > -1) { 11017 let ecs = enableContentsSlider(c.seq, c.type, settings); 11018 if(typeof settings.list_type != 'undefined' && settings.list_type == 's' && ecs) { 11019 // console.log('enable slider'); 11020 $.contentsSlider.ready(c.seq).then(() => {$.contentsSlider.init(c.seq, settings)}); 11021 } 11022 } 11023 11024 changeBrokenImages($el); 11025 11026 idx++; 11027 }); 11028 11029 11030 // $('.tag.preloading').replaceWith(function () { 11031 // return $(this).html(); 11032 // }); 11033 11034 if(check_modoo) { 11035 m_floating(fl_data); 11036 } else if (property?.SETTINGS?.modoo?.floating) { // 모ë ì¬ì´í¸ ë©ë´ ëìì¸ ë³ê²½ ì dsgn-bodyì modooê° í¬í¨ëì§ ìì 모ë°ì¼ìì íµë©ë´ ì ë³´ì´ë 문ì í´ê²° 11037 m_floating(fl_data); 11038 } 11039 11040 $('.preloading').removeClass('preloading'); 11041 document.querySelectorAll('.element video').forEach(function(video) { 11042 if(video.readyState > 0) video.classList.add('loaded'); 11043 video.addEventListener('loadeddata', function() { 11044 this.classList.add('loaded'); 11045 }); 11046 }); 11047 11048 // b.ISLOCK = (!b.VALIDPLAN) ? 'false' : b.ISLOCK; 11049 if(b.ISLOCK == 'true') { 11050 $('.locked').remove(); 11051 return deferred.resolve({'showOnlyFooter':true}); 11052 } 11053 11054 if($('.element:not([data-type2="franchise map"]) [data-map_kind="kakao"]').length && (typeof kakao == 'undefined' || typeof kakao.maps == 'undefined' ||
11054kakao.maps == null || property.VALIDPLAN == '')) { 11055 $('.element:not([data-type2="franchise map"]) [data-map_kind="kakao"]').html('ì§ëì°ê²°í´ì ë¨. Javascriptí¤ íì¸'); 11056 $('.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>'); 11057 } else { 11058 $('.element:not([data-type2="franchise map"]) [data-map_kind="kakao"]').each(function() { 11059 var container = this; 11060 var lat = $(this).data("lat"); 11061 var lng = $(this).data("lng"); 11062 var zoomInOut = $(this).data("zoominout"); 11063 var mapTitle = $(this).data("maptitle"); 11064 var mapContent = $(this).data("mapcontent"); 11065 var useTitle = $(this).data("usetitle"); 11066 var useContent = $(this).data("usecontent"); 11067 11068 if (typeof zoomInOut == 'undefined' || !zoomInOut) zoomInOut = false; 11069 if (typeof mapTitle == 'undefined' || !mapTitle) mapTitle = ''; 11070 if (typeof mapContent == 'undefined' || !mapContent) mapContent = ''; 11071 if (typeof useTitle == 'undefined' || !useTitle) useTitle = false; 11072 if (typeof useContent == 'undefined' || !useContent) useContent = false; 11073 11074 var options = { center: new kakao.maps.LatLng(lat, lng), level: 3 }; 11075 var c_map = new kakao.maps.Map(container, options); 11076 var marker = new kakao.maps.Marker({ position: new kakao.maps.LatLng(lat, lng), map: c_map }); 11077 11078 if(zoomInOut == true) { 11079 var zoomControlHtml = ''; 11080 zoomControlHtml += '\ 11081 <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);">\ 11082 <div class="btn-zoom-control" data-inout="I" style="cursor: pointer; width: 30px; height: 30px;">\ 11083 <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>\ 11084 </div>\ 11085 <div class="slider-wrap-container" style="height: 130px;">\ 11086 <div class="slider-wrap small" style="text-align: center; height: 100%;">\ 11087 <div style="max-height: 100%;" class="zoom-control-slider"></div>\ 11088 </div>\ 11089 </div>\ 11090 <div class="btn-zoom-control" data-inout="O" style="cursor: pointer; width: 30px; height: 30px;">\ 11091 <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>\ 11092 </div>\ 11093 </div>\ 11094 '; 11095 var $zoomController = $(zoomControlHtml); 11096 $(container).append($zoomController); 11097 var zoom_slider = $zoomController.find('.zoom-control-slider').slider({ 11098 'orientation': 'vertical', 11099 'min' : 1, 11100 'max' : 14, 11101 'step' : 1, 11102 'value' : 3, 11103 'handle' : '<div>dfafasdfas</div>', 11104 // 'reversed' : true, 11105 'tooltip' : 'hide', 11106 }).on('slide', function(data) { 11107 c_map.setLevel(data.value); 11108 c_map.setCenter(marker.getPosition()); 11109 }).on('slideStop', function(data) { 11110 c_map.setLevel(data.value); 11111 c_map.setCenter(marker.getPosition()); 11112 }); 11113 11114 $zoomController.find('.btn-zoom-control').on('click', function() { 11115 if($(this).data('inout') == 'I') { 11116 c_map.setLevel(c_map.getLevel() - 1); 11117 zoom_slider.slider('setValue', c_map.getLevel()); 11118 } else if($(this).data('inout' == 'O')) { 11119 c_map.setLevel(c_map.getLevel() + 1); 11120 zoom_slider.slider('setValue', c_map.getLevel()); 11121 } 11122 }); 11123 11124 kakao.maps.event.addListener(c_map, 'zoom_changed', function() { 11125 zoom_slider.slider('setValue', c_map.getLevel()); 11126 }); 11127 } 11128 11129 if((useTitle == true || useContent == true) && (mapTitle || mapContent)) { 11130 var iwContent = ''; 11131 if(useTitle == true && mapTitle) { 11132 iwContent = '<div class="title">' + mapTitle + '</div>'; 11133 } 11134 if(useContent == true && mapContent) { 11135 iwContent += '<div class="content">' + mapContent + '</div>'; 11136 } 11137 if(iwContent) { 11138 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>
11138' + iwContent + '</div>'; 11139 var infoWindow = $(iwContent); 11140 $(container).append(infoWindow); 11141 } 11142 } 11143 $(window).on("resize", function() { 11144 c_map.relayout(); 11145 c_map.setCenter(marker.getPosition()); 11146 }); 11147 }); 11148 } 11149 11150 if($('.element:not([data-type2="franchise map"]) [data-map_kind="naver"]').length && (typeof naver == 'undefined' || typeof naver.maps == 'undefined' || naver.maps == null || property.VALIDPLAN == '')) { 11151 $('.element:not([data-type2="franchise map"]) [data-map_kind="naver"]').html('ì§ëì°ê²°í´ì ë¨. Client ID íì¸'); 11152 $('.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>'); 11153 } else { 11154 $('.element:not([data-type2="franchise map"]) [data-map_kind="naver"]').each(function() { 11155 var container = this; 11156 var lat = $(this).data("lat"); 11157 var lng = $(this).data("lng"); 11158 var options = { center: new naver.maps.LatLng(lat, lng), zoom: 17}; 11159 var zoomInOut = $(this).data("zoominout"); 11160 var zoom = $(this).data("zoom"); 11161 var mapTitle = $(this).data("maptitle"); 11162 var mapContent = $(this).data("mapcontent"); 11163 var useTitle = $(this).data("usetitle"); 11164 var useContent = $(this).data("usecontent"); 11165 if(typeof zoomInOut == 'undefined' || !zoomInOut) zoomInOut = false; 11166 if(typeof mapTitle == 'undefined' || !mapTitle) mapTitle = ''; 11167 if(typeof mapContent == 'undefined' || !mapContent) mapContent = ''; 11168 if(typeof useTitle == 'undefined' || !useTitle) useTitle = false; 11169 if(typeof useContent == 'undefined' || !useContent) useContent = false; 11170 var c_map = new naver.maps.Map(container, options); 11171 var marker = new naver.maps.Marker({ position: new naver.maps.LatLng(lat, lng), map: c_map}); 11172 11173 if(zoomInOut == true) { 11174 var zoomControlHtml = ''; 11175 zoomControlHtml += '\ 11176 <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);">\ 11177 <div class="btn-zoom-control" data-inout="I" style="cursor: pointer; width: 30px; height: 30px;">\ 11178 <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>\ 11179 </div>\ 11180 <div class="slider-wrap-container" style="height: 130px;">\ 11181 <div class="slider-wrap small" style="text-align: center; height: 100%;">\ 11182 <div style="max-height: 100%;" class="zoom-control-slider"></div>\ 11183 </div>\ 11184 </div>\ 11185 <div class="btn-zoom-control" data-inout="O" style="cursor: pointer; width: 30px; height: 30px;">\ 11186 <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>\ 11187 </div>\ 11188 </div>\ 11189 '; 11190 var $zoomController = $(zoomControlHtml); 11191 $(container).append($zoomController); 11192 var zoom_slider = $zoomController.find('.zoom-control-slider').slider({ 11193 'orientation': 'vertical', 11194 'min' : 6, 11195 'max' : 21, 11196 'step' : 1, 11197 'value' : 17, 11198 'handle' : '<div>dfafasdfas</div>', 11199 'reversed' : true, 11200 'tooltip' : 'hide', 11201 }).on('slide', function(data) { 11202 c_map.setZoom(data.value); 11203 c_map.setCenter(marker.getPosition()); 11204 }).on('slideStop', function(data) { 11205 c_map.setZoom(data.value); 11206 c_map.setCenter(marker.getPosition()); 11207 }); 11208 11209 $zoomController.find('.btn-zoom-control').on('click', function() { 11210 if($(this).data('inout') == 'I') { 11211 c_map.setZoom(c_map.getZoom() + 1); 11212 zoom_slider.slider('setValue', c_map.getZoom()); 11213 } else if($(this).data('inout' == 'O')) { 11214 c_map.setZoom(c_map.getZoom() - 1); 11215 zoom_slider.slider('setValue', c_map.getZoom()); 11216 } 11217 }); 11218 11219 naver.maps.Event.addListener(c_map, 'zoom_changed', function(zoom) { 11220 zoom_slider.slider('setValue', c_map.getZoom()); 11221 }); 11222 } 11223 11224 if((useTitle == true || useContent == true) && (mapTitle || mapContent)) { 11225 var iwContent = ''; 11226 if(useTitle == true && mapTitle) { 11227 iwContent = '<div class="title">' + mapTitle + '</div>'; 11228 } 11229 if(useContent == true && mapContent) { 11230 iwContent += '<div class="content">' + mapContent + '</div>'; 11231 } 11232 if(iwContent) { 11233 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>
11233' + iwContent + '</div>'; 11234 var infoWindow = $(iwContent); 11235 $(container).append(infoWindow); 11236 } 11237 } 11238 $(window).on("resize", function() { 11239 // c_map.relayout(); 11240 c_map.setCenter(marker.getPosition()); 11241 }); 11242 }); 11243 } 11244 11245 $('.element [data-map="true"]:not(iframe)').each(function() { 11246 var map_url = $(this).attr('data-url'); 11247 if(typeof map_url != 'undefined' && map_url) { 11248 var map_iframe = getMapURL(map_url,'html'); 11249 $(this).replaceWith(map_iframe); 11250 if(map_iframe.indexOf('google-map disabled') === -1) $(this).next('.map-undefined').remove(); 11251 } 11252 }); 11253 11254 if($('.element a[data-popup][data-popup-name]').length > 0 && (!b.VALIDPLAN || b.VALIDTYPE == 'PK')) { 11255 $('.element a[data-popup][data-popup-name]').addClass('disabled'); 11256 } 11257 if($('.element[data-layout]').length > 0) { 11258 setLayoutHeight(); 11259 } 11260 // if($('.element[data-parallax="true"]').length > 0 && $('.element[data-parallax-type="scroll"]').length > 0) setParallax(); 11261 if(typeof setBlockParallax == 'function') setBlockParallax($('.element')); 11262 11263 $('.dsgn-body').fitVids(); 11264 11265 if($('.element[data-aos]').length > 0) scheduleBlockAOSRefresh(); 11266 $('html').toggleClass('gtoolbar-sticky-ON', $('.cl-gtoolbar[data-sticky="ON"]').length > 0 ? true : false); 11267 deferred.resolve(); 11268 }); 11269 }); 11270 //parallax(); 11271 return deferred.promise(); 11272 }, 11273 setLoginout : function (show, sid, site, profileimg) { 11274 if(show=='1') { 11275 $.getJSON('/template/checkLogin', function(data) { 11276 if(data.user && site) { 11277 if($('#tpl-menu').find('.loginout')) $('#tpl-menu').find('.loginout').remove(); 11278 setLoginoutNav(sid, function() { 11279 getProfileMember(); 11280 getProfileAuthor(sid,profileimg); 11281 $('.el_0').css('margin-top','55px'); 11282 }); 11283 } else { 11284 $('#tpl-menu').append('<li class="loginout"><a href="javascript:;" title="CREATORLINK login"><i class="fa fa-user"></i></a></li>'); 11285 } 11286 }); 11287 } 11288 }, 11289 liveUpdate : function(obj) { 11290 // console.log('liveUpdate'); 11291 11292 var b = this.b; 11293 $.psearch = $.psearch || {}; 11294 if(typeof $.psearch.normalizeHref != 'function') { 11295 $.psearch.normalizeHref = function(href) { 11296 href = (href || '').toString().trim(); 11297 if(!href) return ''; 11298 11299 href = href.replace(/^\/render/i, ''); 11300 href = href.split('#')[0].split('?')[0]; 11301 11302 if(/^https?:\/\//i.test(href)) { 11303 try { href = new URL(href).pathname; } catch(e) {} 11304 } 11305 11306 href = href.replace(/\/view\/\d+$/i, ''); 11307 11308 if(href && href.charAt(0) !== '/') href = '/' + href; 11309 return href; 11310 }; 11311 } 11312 if(typeof $.psearch.buildMenuBreadcrumbMap != 'function') { 11313 $.psearch.buildMenuBreadcrumbMap = function(menuOption) { 11314 var map = {}; 11315 if(!menuOption || !menuOption.length) return map; 11316 11317 for(var i = 0; i < menuOption.length; i++) { 11318 var m = menuOption[i]; 11319 var mainName = (m && m.name) ? m.name : ''; 11320 var mainHref = $.psearch.normalizeHref(m && m.href); 11321 11322 if(mainHref) { 11323 map[mainHref] = $.lang[LANG]['editor.resource.icon.home'] + ' > ' + mainName; 11324 } 11325 11326 var children = (m && m.children) ? m.children : []; 11327 for(var j = 0; j < children.length; j++) { 11328 var c = children[j]; 11329 var subName = (c && c.name) ? c.name : ''; 11330 var subHref = $.psearch.normalizeHref(c && c.href); 11331 11332 if(subHref) { 11333 map[subHref] = $.lang[LANG]['editor.resource.icon.home'] + ' > ' + mainName + ' > ' + subName; 11334 } 11335 } 11336 } 11337 return map; 11338 }; 11339 } 11340 11341 var checkSidebar = $('.el-menu > header').hasClass('sidebar'), 11342 checkClnav = $.clnav.check(), 11343 menu_class = { 11344 'navlist': (checkClnav) ? 'cl-nav-list ' : '', 11345 'navitem': (checkClnav) ? 'cl-nav-item ' : '', 11346 'subnavlist': (checkClnav) ? 'cl-subnav-list ' : '', 11347 'subnavitem': (checkClnav) ? 'cl-subnav-item ' : '', 11348 }, 11349 menu = (checkClnav) ? $('.el-menu > header.cl-nav .cl-nav-list') : $('#tpl-menu'), 11350 idx = 0, 11351 regex = /^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/, 11352 regex2 = /^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 11353 menu.empty(); 11354 11355 if($('.fmcss').length > 0) $('.fmcss').remove(); //forum background css 11356 11357 $.each(obj, function (idx, obj) { 11358 if(obj.name == 'ì ì²´ìí') { 11359 if(b.LUX || b.VALIDTYPE != 'SM' || !b.SLANG || (typeof b.SLANG.select_code !== 'undefined' && b.SLANG.select_code != 'ko')){ 11360 return true; 11361 } 11362 } 11363 11364 b.MENULIST.push(obj.name.replace(/ /g,'-')); 11365 if(obj.children) { 11366 $.each(obj.children, function (idx, obj){ 11367 b.MENULIST.push(obj.name.replace(/ /g,'-')); 11368 }); 11369 } 11370 }); 11371 11372 if(b.ONE) { 11373 linkUrl = (b.VIEW) ? '/#' : '#'; 11374 linkUrl = (b.VIEW && !b.PUBLISH) ? '/render/index#' : linkUrl; 11375 } else { 11376 linkUrl = (b.URL=='/') ? '/' : b.URL + '/'; 11377 } 11378 11379 for (i = 0; i < obj.length; i++) { 11380 var link = obj[i].name; 11381 if(b.MENULIST.includes(link.replace(/ /g, '-'))) link = link.replace(/ /g, '-'); 11382 11383 if(link == 'ì ì²´ìí') { 11384 if(b.LUX || b.VALIDTYPE != 'SM' || !b.SLANG || (typeof b.SLANG.select_code !== 'undefined' && b.SLANG.select_code != 'ko')) { 11385 continue; 11386 } 11387 } 11388 11389 var parent = b.PAGE.split(','), 11390 link_text = '', 11391 target = '', 11392 name = (checkClnav) ? `<span class="cl-nav-name">${obj[i].name}</span>` : obj[i].name, 11393 isInner = '', 11394 isBookmark = '', 11395 isFlink = ''; 11396 11397 if(i==0) { 11398 if(obj[i].display=='on') { 11399 b.MENUCHECK.intro = true; 11400 b.MENULINK.push(link); 11401 } 11402 continue; 11403 } 11404 11405 if(obj[i].name =='ì ì²´ìí') { 11406 obj[i].link = ''; 11407 } 11408 11409 var active = (link == b.PAGE || link == parent[0]) ? 'active' : '', 11410 sub = obj[i].children.length; 11411 11412 if (obj[i].display == 'on') { 11413 b.MENUCHECK.main = true; 11414 11415 var menuoption_child = []; 11416 var checkLink = (obj[i].link) ? true : false, 11417 checkLinkInner = (checkLink && $.inArray(obj[i].link.replace(/ /g,'-'), b.MENULIST) > -1) ? true : false, 11418 checkLinkBookmark = (typeof obj[i].link !='undefined' && obj[i].link.match(/^\@/g) !== null) ? true : false, 11419 checkLinkFile = (typeof obj[i].link !='undefined' && obj[i].link.match(/^flink\@[0-9]/gi) !== null) ? true : false, 11420 checkLinkFolder = (typeof obj[i].link !='undefined' && obj[i].link === 'folder-menu') ? true : false;
11421 11422 link = (checkLink) ? ((checkLinkInner) ? obj[i].link.replace(/ /g,'-') : obj[i].link) : link; 11423 isInner = (checkLinkInner) ? obj[i].link.replace(/ /g,'-') : ''; 11424 isBookmark = (checkLinkBookmark) ? ` attr-bookmark="${link.replace(/^\@/g,'')}"` : ''; 11425 isFlink = (checkLinkFile) ? ` attr-flink="${link.replace(/^flink\@/gi,'')}"` : ''; 11426 isFolder = (checkLinkFolder) ? ` attr-folder="true"` : ''; 11427 target = (obj[i].ltarget == '_blank') ? 'target="_blank"' : ''; 11428 11429 if(checkLink && !checkLinkInner && !checkLinkBookmark) { // link-type: link-out ==> a[attr-link] 11430 if(checkBase64Encode(link)) link = Base64.decode(link); 11431 } 11432 11433 if(link == 'folder-menu') { 11434 link_text = 'javascript:;'; 11435 target = ''; 11436 if(typeof menu.closest('.navbar-menu-'+b.SID).attr('data-submenu') != 'undefined') target = ' data-toggle="dropdown" aria-expanded="false" data-submenu="true" '; 11437 } else { 11438 if(!checkLink) b.MENULINK.push(link); 11439 link_text = (b.MENULIST.includes(link)) ? linkUrl + link : (!regex2.test(link) && regex.test(link)) ? '//' + link : link; 11440 } 11441 11442 if (sub) { 11443 var sub_menu = '', 11444 sub_show = 0; 11445 11446 sub_menu = `<ul class="${menu_class['subnavlist']} dropdown-menu">\r\n`; 11447 for (j = 0; j < obj[i].children.length; j++) { 11448 var child = obj[i].children, 11449 checkChildLink = (child[j].link) ? true : false, 11450 checkChildLinkInner = (checkChildLink && b.MENULIST.includes(child[j].link.replace(/ /g, '-'))) ? true : false, 11451 checkChildLinkBookmark = (typeof child[j].link!='undefined' && child[j].link.match(/^\@/g) !== null) ? true : false, 11452 checkChildLinkFile = (typeof child[j].link!='undefined' && child[j].link.match(/^flink\@[0-9]/gi) !== null) ? true : false, 11453 child_link = (checkChildLink) ? ((checkChildLinkInner) ? child[j].link.replace(/ /g,'-') : child[j].link) : '', 11454 child_isInner = (checkChildLinkInner) ? child[j].link.replace(/ /g,'-') : '', 11455 child_isBookmark = (checkChildLinkBookmark) ? ` attr-bookmark="${child_link.replace(/^\@/g,'')}"` : '', 11456 child_isFlink = (checkChildLinkFile) ? ` attr-flink="${child_link.replace(/^flink\@/gi,'')}"` : '', 11457 sub_link = (child_link) ? child_link : child[j].name.replace(/ /g, "-"), 11458 sub_target = (child[j].ltarget == '_blank') ? 'target="_blank"' : '', 11459 sub_name = (checkClnav) ? `<span class="cl-subnav-name">${child[j].name}</span>` : child[j].name, 11460 sub_active = '', 11461 sub_link_text = ''; 11462 11463 if(checkChildLink && !checkChildLinkInner && !checkChildLinkBookmark) { // link-type: link-out ==> a[attr-link] 11464 if(checkBase64Encode(child_link)) sub_link = Base64.decode(child_link); 11465 } 11466 11467 var page_arr = (b.VIEW) ? b.PAGE.split(',') : [b.PAGE]; 11468 if (!active && (sub_link == page_arr[0] || link == parent[0])) { 11469 sub_active = 'active'; 11470 active = 'open'; 11471 if(!checkClnav && $('body').width() > 768) active = 'active'; 11472 } 11473 11474 if (child[j].display == 'on') { 11475 b.MENUCHECK.sub = true; 11476 if(!checkChildLink) b.MENULINK.push(child[j].name.replace(/ /g, '-')); 11477 sub_link_text = ($.inArray(sub_link,b.MENULIST) > -1) ? linkUrl+sub_link : (!regex2.test(sub_link) && regex.test(sub_link)) ? '//'+sub_link : sub_link; 11478 sub_menu += ` 11479 <li class="${menu_class['subnavitem'] + sub_active}"><a href="${sub_link_text}" ${sub_target + child_isBookmark + child_isFlink}>${sub_name}</a></li>\r\n 11480 `; 11481 sub_show++; 11482 11483 menuoption_child.push({ 11484 'idx0': b.MENUOPTION.length, 11485 'idx1': menuoption_child.length, 11486 'name': child[j].name, 11487 'active': sub_active, 11488 'href': sub_link_text, 11489 'target': sub_target, 11490 'isinner': child_isInner, 11491 'isbookmark': child_isBookmark, 11492 'isflink': child_isFlink, 11493 'depth': 1, 11494 'topmobile': child[j].topmobile, 11495 }); 11496 } 11497 } 11498 sub_menu = sub_menu +'</ul>\r\n';
11499 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>'; 11500 11501 if (sub_show) { 11502 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' : ''; 11503 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`); 11504 } else { 11505 menu.append(`\r\n<li class="${menu_class['navitem'] + active}"><a href="${link_text}" ${target + isBookmark + isFlink}>${name}</a></li>\r\n`); 11506 } 11507 if(sub_show) menu.find('.dropdown:last').append(sub_menu); 11508 } else { 11509 menu.append(`\r\n<li class="${menu_class['navitem'] + active}"><a href="${link_text}" ${target + isBookmark + isFlink}>${name}</a></li>\r\n`); 11510 } 11511 11512 b.MENUOPTION.push({ 11513 'idx0': b.MENUOPTION.length, 11514 'name': obj[i].name, 11515 'active': active, 11516 'href': link_text, 11517 'target': target, 11518 'isinner': isInner, 11519 'isbookmark': isBookmark, 11520 'isflink': isFlink, 11521 'isfolder': isFolder, 11522 'depth': 0, 11523 'children': menuoption_child, 11524 'topmobile': obj[i].topmobile, 11525 }); 11526 11527 idx++; 11528 } 11529 } 11530 11531 11532 // menu ver3 : fheader 11533 // - Add #fixed-menu, #mobile-nav 11534 // - Set mobile-design 11535 if ($.clnav.check()) $.clnav.init(); 11536 else if ($('header.navbar').hasClass('navbar-fheader')) $.fheader.init(); 11537 11538 if( typeof b.VALIDPLAN != 'undefined' && b.VALIDPLAN && 11539 typeof b.VALIDTYPE != 'undefined' && b.VALIDTYPE != 'PK' 11540 ) { 11541 if(b.VALIDTYPE == 'SM') { 11542 $.umember.init(b.SITEUM,b.SITEUMLANG,b.SITEUMDISPLAY, function() { 11543 $.psearch.init();
11544 $.shopping.init(); 11545 $.slang.init(b.SLANG); 11546 }); 11547 } else if(b.VALIDTYPE == 'BN') { 11548 $.umember.init(b.SITEUM,b.SITEUMLANG,b.SITEUMDISPLAY, function() { 11549 $.slang.init(b.SLANG); 11550 }); 11551 } else { 11552 $.slang.init(b.SLANG); 11553 } 11554 } else { 11555 $.slang.init(); 11556 } 11557 11558 // menu ver3 : fheader 11559 // - Set site page top padding 11560 // - Set menu config btn position 11561 if ($('header.navbar').hasClass('navbar-fheader')) $.fheader.set(); 11562 property.MENU_BREADCRUMB_MAP = $.psearch.buildMenuBreadcrumbMap(b.MENUOPTION); 11563 11564 $('header .navbar-nav').removeClass('hide').removeClass('preloading'); 11565 $('body,html').animate({scrollTop: 0}, 300,'easeInOutQuart'); 11566 11567 }, 11568 syncUpdate : function($el,data) { 11569 $('#el-empty').empty().append($el.outerHTML()); 11570 var $sync = $('#el-empty'), 11571 nodes = $sync.find('.item'), 11572 $sync_row = ($sync.find('.sync-option').length > 0) ? $sync.find('.sync-row') : $sync.find('.slick'), 11573 $sync_loop = $sync.find('[data-sync-loop="true"]'), 11574 checkSyncGalleryFrame = false, 11575 checkSyncHtmlReplace = false, 11576 sync_gallery = {}, 11577 p = _this.b.RESOURCE + '/' + _this.b.SID + '/'; 11578 11579 checkSyncHtmlReplace = ($sync.find('input.sync-option').length > 0 && $sync.find('.layout-container').length == 0) ? true : false; 11580 setOldVerBlockView($sync,data); 11581 11582 if(typeof data.sync !='undefined' && typeof data.sync.list != 'undefined' && (data.sync.list).length) { 11583 $sync_row.empty(); 11584 var nodes_count = nodes.length; 11585 $.each(data.sync.list, function(i,v) { 11586 var nodes_pos = i % nodes_count, 11587 $item = $(nodes[nodes_pos]); 11588 var imgbg_check = (typeof $item.find('.img-bg').attr('style') == 'undefined') ? false : true, 11589 href = '/' + v.page + '/view/' + v.seq, 11590 alink = (_this.b.PUBLISH) ? href : '/render' + href; 11591 11592 switch(v.type) { 11593 case "gallery": 11594 var img = getServeImage(v.image,'0',p); 11595 (v.mode == 'project') ? 11596 $item.find('a').attr('href', alink) : 11597 $item.find('a').attr('href', img).attr('data-gallery','').attr('data-title',v.title); 11598 break; 11599 case "shopping": 11600 if(typeof data.sync.member_only[v.pid] != 'undefined' && data.sync.member_only[v.pid] == 'ON') { 11601 if(_this.b.UMEMBER.check_login == true) { 11602 $item.find('a').attr('href',alink); 11603 } else { 11604 $item.find('a').attr('href','javascript:member_only_item();'); 11605 } 11606 } else $item.find('a').attr('href',alink); 11607 break; 11608 11609 case "lux": 11610 $item.find('a').attr('href',(_this.b.PUBLISH) ? '/_product/' + v.seq : '/render/_product/' + v.seq); 11611 break; 11612 } 11613 var brand_name = (v.brand_name != 'undefined' && v.brand_name && v.brand_name != '-') ? v.brand_name : ''; 11614 $item.find('img').attr('src',v.image); 11615 $item.find('.brand').html(brand_name); 11616 $item.find('.name').html(v.title); 11617 $item.find('.caption').html(v.caption); 11618 11619 if(v.type == 'gallery' && v.mode == 'gallery') { 11620 checkSyncGalleryFrame = true; 11621 sync_gallery.elsettings = v.elsettings; 11622 sync_gallery.type = 'gallery'; 11623 } 11624 if(typeof data.sync.member_only[v.pid] != 'undefined' && data.sync.member_only[v.pid] == 'ON' && _this.b.UMEMBER.check_login == false) { 11625 $item.find('.price').addClass('hidden'); 11626 $item.find('.sale').addClass('hidden'); 11627 $item.find('.price-sale').addClass('hidden'); 11628 } else { 11629 var syncGsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}; 11630 var syncBlockSettings = {}; 11631 if (data && data.element && data.element.elsettings) { 11632 try { 11633 syncBlockSettings = (typeof data.element.elsettings == 'string') ? $.parseJSON(data.element.elsettings) : data.element.elsettings; 11634 } catch(e) { 11635 syncBlockSettings = {}; 11636 } 11637 } 11638 var baseSyncPrice = (v.price !== '') ? Number(v.price) : 0; 11639 var baseSyncSalePrice = (v.sale > 0 && v.sale >
11639 baseSyncPrice) ? Number(v.sale) : 0; 11640 var syncPrice = baseSyncPrice; 11641 var syncSalePrice = baseSyncSalePrice; 11642 var syncSaleLabel = (v.sale_rate > 0) ? v.sale_rate + '%' : ''; 11643 var syncGradePrice = 0; 11644 var syncGradeApplied = false; 11645 var syncGradeDisplay = syncBlockSettings.grade_price_display == 'ON'; 11646 var syncGrade = getShoppingGradePreviewDiscountGrade(data.grade); 11647 var productGradeOnOff = getShoppingGradeProductGradeOnOff(v); 11648 $item.attr('data-editor-grade-price-enabled', productGradeOnOff).attr('data-config-grade-price-enabled', productGradeOnOff); 11649 11650 if ( 11651 baseSyncPrice > 0 && 11652 isShoppingGradeProductGradePriceEnabled(v) 11653 ) { 11654 syncGradePrice = calcShoppingGradeDisplayPrice(baseSyncPrice, syncGrade); 11655 syncGradeApplied = syncGradePrice !== null; 11656 } 11657 11658 $item.find('.price').text('â©' + number_format(syncPrice)); 11659 11660 if(syncSaleLabel) { 11661 $item.find('.sale').removeClass('hide hidden').text(syncSaleLabel); 11662 } else { 11663 if($item.find('.sale').parent().hasClass('img-content')) $item.find('.sale').addClass('hide'); 11664 else $item.find('.sale').addClass('hidden'); 11665 $item.find('.sale').text(''); 11666 } 11667 $item.find('.price-unit-pricing').remove(); 11668 if(v.product_unit_str) { 11669 var tmp_unit_selector = ($item.find('ul.price-wrap').length > 0) ? `ul.price-wrap` : `.content`, 11670 tmp_unit_wrap = ($item.find('ul.price-wrap').length > 0) ? `li` : `div`; 11671 $item.find(tmp_unit_selector).append(`<${tmp_unit_wrap} class="price-unit-pricing">${v.product_unit_str}</${tmp_unit_wrap}>`); // ë¨ìë¹ ê°ê²© 11672 } 11673 11674 if(syncSalePrice > 0 && syncSalePrice > syncPrice) { 11675 $item.find('.price-sale').removeClass('hidden hide').text('â©' + number_format(syncSalePrice)); 11676 } else { 11677 $item.find('.price-sale').addClass('hidden').text(''); 11678 } 11679 11680 $item.find('.grade-discount-price').remove(); 11681 if(syncGradeDisplay && syncGradeApplied) { 11682 var syncGradeWrap = ($item.find('ul.price-wrap').length > 0) ? 'ul.price-wrap' : '.content', 11683 syncGradeTag = ($item.find('ul.price-wrap').length > 0) ? 'li' : 'div'; 11684 $item.find(syncGradeWrap).append('<' + syncGradeTag + ' class="grade-discount-price"><span class="grade-discount-price-value">₩' + syncGradePrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + '</span><span class="grade-discount-price-label">ëì í ì¸ê°</span></' + syncGradeTag + '>'); 11685 } 11686 } 11687 11688 if(imgbg_check) $item.find('.img-bg').attr('style','background-image: url("' + v.image + '"'); 11689 if($item.find('.sync-label-number').length > 0) $item.find('.sync-label-number').text(i+1); 11690 if(v.soldout) $item.find('.soldout').removeClass('hidden'); 11691 $sync_row.append($item.outerHTML()); 11692 11693 if(data.type2 == 'imgpitem' && $sync_loop.length > 0) { 11694 if($sync_loop.children('li').eq(i).length == 0) $sync_loop.append($sync_loop.children('li').eq(0).clone().removeClass('active')); 11695 $sync_loop.children('li').eq(i).attr('data-idx',i); 11696 } 11697 checkSyncHtmlReplace = true; 11698 }); 11699 11700 if(checkSyncGalleryFrame && typeof sync_gallery.type != 'undefined') { 11701 appendGalleryFrame($sync, data.seq, sync_gallery.type, sync_gallery.elsettings); 11702 } 11703 if(checkSyncHtmlReplace) tag = $sync.html(); 11704 } 11705 var r = $('#el-empty > .element:eq(0)').html(); 11706 $('#el-empty').empty(); 11707 // console.log(r); 11708 return r; 11709 }, 11710 galleryUpdate : function(el,data) { 11711 // console.log(`galleryUpdate: el`,el); 11712 var _this = this; 11713 $('#el-empty').append($(data.source)); 11714 $('#el-empty').find('[data-loop="true"]').html(''); 11715 11716 var checkGalleryListSample = false, 11717 checkGalleryListEmpty = true, 11718 source = data.source, 11719 nodes = $(source).find('[data-loop="true"]').children('.grid'), 11720 p = $('#el-empty').children(), 11721 g = p.clone().removeClass().addClass('galleryPL'+el.seq).addClass('gallery-popup'), 11722 i = [], 11723 view = $(source).find('[data-loop="true"]').data('view'), 11724 g_number = $(tag).find("[data-loop='true']").data('gallery-no'),
11725 total = (typeof data.total != 'undefined' && data.total) ? data.total : 0; 11726 11727 $('#el-empty').after(g); 11728 $(g).after('<div class="gallery-empty"></div>'); 11729 11730 if(typeof view == 'undefined') view = 10; 11731 11732 var g_settings = (typeof el.elsettings == 'undefined' || el.elsettings == '') ? {} : $.parseJSON(el.elsettings), 11733 cookie_page = 1, 11734 cookie_view = view, 11735 cookie_gallery_category = '', 11736 is_gc_cookie = (typeof $.cookie('gallery-category-'+el.seq) != 'undefined' && $.cookie('gallery-category-'+el.seq).length > 0) ? true : false, 11737 block_lang = (typeof g_settings.blocklang != 'undefined') ? g_settings.blocklang : LANG, 11738 field_oldver = (typeof g_settings.field_oldver != 'undefined' && g_settings.field_oldver.length > 0) ? g_settings.field_oldver : []; 11739 field_disable = (typeof g_settings.field_disable != 'undefined' && g_settings.field_disable.length > 0) ? g_settings.field_disable : []; 11740 var cookie_gallery_orderby = 'recent'; 11741 11742 var category_onoff = (typeof g_settings.category_display != 'undefined' && g_settings.category_display) ? g_settings.category_display : 'OFF'; 11743 var gallery_sort = (typeof g_settings.gallery_sort != 'undefined' && g_settings.gallery_sort) ? g_settings.gallery_sort : 'default'; 11744 if(el.mode != 'shopping' && gallery_sort == 'product') gallery_sort = 'default'; 11745 11746 // var adultonly_onoff = (typeof g_settings.adult_only != 'undefined' && g_settings.adult_only) ? g_settings.adult_only : 'OFF'; 11747 if( category_onoff == 'ON' && 11748 typeof $.cookie('ci_goto-gallery') != 'undefined' && $.cookie('ci_goto-gallery') == el.seq && 11749 typeof $.cookie('ci_goto-gallery-cate') != 'undefined' && g_settings.category.indexOf('|' + $.cookie('ci_goto-gallery-cate') + '|') > -1 && 11750 typeof g_settings.category != 'undefined' && g_settings.category 11751 ) { 11752 cookie_gallery_category = $.cookie('ci_goto-gallery-cate'); 11753 is_gc_cookie = true; 11754 } else if($.cookie('loadmore-' + el.seq)) { 11755 cookie_page = $.cookie('loadmore-'+el.seq); 11756 cookie_gallery_category = (typeof $.cookie('gallery-category-'+el.seq) != 'undefined') ? $.cookie('gallery-category-'+el.seq) : ''; 11757 cookie_gallery_orderby = (typeof $.cookie('gallery-orderby-' + el.seq) != 'undefined') ? $.cookie('gallery-orderby-' + el.seq) : ''; 11758 cookie_view = cookie_page * view; 11759 } else { 11760 var checkCateHomeHide = (category_onoff == 'ON' && 11761 typeof g_settings.category != 'undefined' && g_settings.category && 11762 typeof g_settings.category_home_hide != 'undefined' && g_settings.category_home_hide) ? true : false; 11763 if(checkCateHomeHide) { 11764 var gc = g_settings.category.replace(/\|/g,'').split(','); 11765 cookie_gallery_category = gc[0]; 11766 is_gc_cookie = true; 11767 11768 $.cookie('gallery-catehome-' + el.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 11769 } 11770 } 11771 11772 if(el.seq == 'all_products') { 11773 // cookie_page = (typeof $.cookie('gallery-page-all_products') !== 'undefined' && $.cookie('gallery-page-all_products') != '')? $.cookie('gallery-page-all_products') : 1; 11774 cookie_gallery_category = getAllProductsSortVal(g_settings); 11775 // cookie_view = cookie_page * view; 11776 } else { 11777 if(!property.VIEW) $.removeCookie('gallery-page-all_products', { path: '/' }); 11778 } 11779 11780 $.cookie('gallery-page-' + el.seq, cookie_page, { path : '/', expires: 12 * 60 * 60 * 1000 }); 11781 $.cookie('gallery-category-' + el.seq, cookie_gallery_category, { path : '/', expires: 12 * 60 * 60 * 1000 }); 11782 $.cookie('gallery-orderby-' + el.seq, cookie_gallery_orderby, { path: '/', expires: 12 * 60 * 60 * 1000 }); 11783 $.removeCookie('loadmore-' + el.seq, { path : '/' }); 11784 11785 var checkLoadmoreInLoop = ($(source).find('[data-loop="true"] .loadmore-wrap').length) ? true : false; 11786 var glm = $(source).find('.loadmore-wrap'); 11787 11788 var checkGallerySVG = ($(source).find('.gimg-svg-wrap').length > 0) ? true : false, 11789 checkGFrameTitleOFF = (el.mode == 'gallery' && (typeof g_settings.gframe_title_visible != 'undefined' && g_settings.gframe_title_visible == 'OFF')) ? true : false;
11790 11791 var param = (el.page=='index,template' && property.param.indexOf('/org/') == -1) ? property.param + '/org/' + el.page : property.param; 11792 var post_data = { g_mode: el.mode, visible: true, sfl: 'category', stx: cookie_gallery_category }; 11793 11794 if(el.seq == 'all_products') { 11795 post_data = { g_mode: el.mode, visible: true, sfl: 'orderby', stx: cookie_gallery_category }; 11796 } 11797 11798 var g_data = { 11799 'list' : property.CONTENTS['el' + el.seq]['list'], 11800 'total' : property.CONTENTS['el' + el.seq]['total'] 11801 } 11802 11803 var checkUseComment = checkUseCommentFunc(el.mode, el.eltag); 11804 var checkUseLike = checkUseLikeFunc(el.mode, el.eltag); 11805 11806 $.each(g_data.list, function (idx, v) { 11807 i.push(v); 11808 }); 11809 11810 total = (typeof g_data.total.list_total != 'undefined') ? g_data.total.list_total : g_data.total; 11811 // total = (typeof g_data.total.list_total != 'undefined') ? g_data.total.list_total : 0; 11812 cookie_view = (cookie_view < total) ? cookie_view : total; 11813 11814 if( total > 0 ) checkGalleryListEmpty = false; 11815 if( i.length>0 || (i.length==0 && is_gc_cookie) ) { 11816 var loop_count = nodes.length, item_index = 0, elem = []; 11817 $.each(g_data.list,function(index,v) { 11818 // console.log(v); 11819 loop_pos = index%loop_count; 11820 c = nodes[loop_pos]; 11821 var isTitle = (v.title.length > 0) ? true:false; 11822 $(c).find('.non_text').removeClass('non_text'); 11823 11824 if(el.mode != 'shopping') { 11825 if(v.title.length==0) $(c).find('.figure.title').removeClass('non_text').addClass('non_text'); 11826 if(v.caption.length==0) $(c).find('.figure.caption').removeClass('non_text').addClass('non_text'); 11827 } 11828 11829 v.title = (v.title.length>0) ? v.title : $.lang[block_lang]['editor.block.gallery.sample.title']; 11830 v.caption = (v.caption.length>0) ? v.caption : $.lang[block_lang]['editor.block.gallery.sample.caption']; 11831 11832 $(c).addClass('gallery-item').attr('data-index',index).attr('data-seq',v.seq); 11833 11834 11835 var vgsettings = (typeof v.gsettings != 'undefined' && v.gsettings) ? $.parseJSON(v.gsettings) : {}, 11836 img_path = (typeof vgsettings['storage'] != 'undefined') ? vgsettings['storage'] : _this.b.RESOURCE + '/' + _this.b.SID + '/', 11837 img_original = (typeof vgsettings['storage'] != 'undefined') ? img_path + '1920/' : img_path; 11838 11839 var folder = (typeof data.element.folder == 'undefined' || data.element.folder == 0) ? '' : data.element.folder + '/', 11840 src = getServeImage(v.image,data.element.folder,img_path), 11841 src_s0 = getServeImage(v.image,'0',img_path); 11842 if($(c).find('img').length > 0) $(c).find('img').attr('src',src); 11843 11844 if(el.mode == 'shopping') { 11845 if($(c).find('img').length > 0) $(c).find('img').attr('alt',v.title); 11846 } else if(typeof v.alt != 'undefined') { 11847 alt_replace = v.alt.replace(/\s+|\n+/g, '-'); 11848 alt_replace.replace(/-+/g, '-') 11849 if($(c).find('img').length > 0) $(c).find('img').attr('alt',alt_replace); 11850 } 11851 ensureGalleryResponsiveImageClass($(c)); 11852 11853 if($(c).find('.g-img').length > 0) $(c).find('.g-img').css('background-image', 'url('+src+')'); 11854 if(checkGallerySVG) { 11855 var gimgSVG = $(c).find('.gimg-svg-wrap svg'); 11856 gimgSVG.find('pattern').attr('id','gimgSvg_'+el.elname+'_'+index); 11857 gimgSVG.find('image').attr('xlink:href', src); 11858 gimgSVG.find('polygon, path').attr('fill', 'url(#gimgSvg_'+el.elname+'_'+index+')'); 11859 } 11860 11861 var glink = (typeof vgsettings['glink'] != 'undefined' && vgsettings['glink']) ? vgsettings['glink'] : '', 11862 glink_target = (typeof vgsettings['glink_target'] != 'undefined' && vgsettings['glink_target']) ? vgsettings['glink_target'] : ''; 11863 11864 if(glink) { 11865 if(glink.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 11866 var bookmark_seq = glink.replace(/^\@/g,''); 11867 if(typeof _this.b.SETTINGS.blockBookmarkList == 'undefined' || typeof _this.b.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 11868 glink = ''; 11869 glink_target = ''; 11870 } 11871 } else if(glink.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 11872 glink_target = ''; 11873 } else if($.inArray(glink.replace(/^\//g,'').replace(/ /g,'-'),_this.b.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 11874 } else { // link-type: link-out ==> a[attr-link] 11875 if(checkBase64Encode(glink)) glink = Base64.decode(glink); 11876 } 11877 } 11878 11879 $(c).find('a').removeAttr('data-gallery').removeAttr('data-user-link').removeAttr('attr-bookmark').removeAttr('attr-link').removeAttr('attr-flink'); 11880 11881 // var gallery_page_chmod = JSON.parse(property.CONTENTS['el' + v.pid]['element']['elsettings']).gallery_page_chmod, 11882 // umgrade = property.UMGRADE['grade_seq']; 11883 var entry = (property && property.CONTENTS && property.CONTENTS['el' + v.pid]) || (property && property.CONTENTS && property.CONTENTS[String(v.pid)]) || null; 11884 var elsettingsRaw = entry && entry.element ? entry.element.elsettings : null; 11885 var elsettingsObj = elsettingsRaw; 11886 11887 if (typeof elsettingsRaw === 'string') { 11888 try { elsettingsObj = JSON.parse(elsettingsRaw); } 11889 catch (e) { console.error('[ERR] elsettings JSON íì± ì¤í¨:', e, elsettingsRaw); elsettingsObj = {}; } 11890 } 11891 11892 var gallery_page_chmod = elsettingsObj && elsettingsObj.gallery_page_chmod || null; 11893 var umgrade = property && property.UMGRADE ? (property.UMGRADE.seq || property.UMGRADE.grade_id || null) : null; 11894 if (typeof gallery_page_chmod === 'string') { 11895 try { gallery_page_chmod = JSON.parse(gallery_page_chmod); } 11896 catch (e) { gallery_page_chmod = gallery_page_chmod ? gallery_page_chmod.split(',') : []; } 11897 } 11898 gallery_page_chmod = $.isArray(gallery_page_chmod) ? $.map(gallery_page_chmod, function(v) { return String(v); }) : []; 11899 umgrade = (umgrade !== null && typeof umgrade != 'undefined') ? String(umgrade) : null; 11900 11901 $(c).removeClass('noneShoppingGrade').removeAttr('data-shopping-grade-msg'); 11902 if (isShoppingGradePriceHidden(v) && property['SITEUM'] >= 1) { 11903 $(c).addClass('gallery-item').addClass('nonePrice'); 11904 $(c).find('a').attr('href', '#'); 11905 } else { 11906 11907 if(isShoppingGradeBlocked(v, el.seq == 'all_products' ? g_settings : elsettingsObj, property)) { //ì¼íë±ê¸ 11908 $(c).addClass('gallery-item').addClass('noneShoppingGrade');
11909 $(c).attr('data-shopping-grade-msg', getShoppingGradeBlockedMessage(v)); 11910 $(c).find('a').attr('href', '#'); 11911 } else { 11912 if(glink) { 11913 var glink_val = makeLinkUrl(glink, _this.b.ONE, _this.b.VIEW); 11914 $(c).find('a').attr('href',glink_val); 11915 11916 if(glink.match(/^\@/g) !== null) { 11917 $(c).find('a').attr('attr-bookmark',glink.replace(/^\@/g,'')); 11918 } else if(glink.match(/^flink\@[0-9]/g) !== null) { 11919 $(c).find('a').attr('attr-flink',glink.replace(/^flink\@/g,'')); 11920 // IE ERROR_includes__H.20210603 11921 // } else if(_this.b.MENULIST.includes(glink.replace(/ /g,'-'))) { 11922 } else if($.inArray(glink.replace(/ /g,'-'),_this.b.MENULIST) > -1) { 11923 $(c).find('a').attr('data-user-link',glink_val); 11924 } else { 11925 $(c).find('a').attr('attr-link',glink); 11926 } 11927 } else { 11928 if (el.mode == 'gallery') { 11929 src_s0 = src_s0 + '?gpos='+v.pos; 11930 11931 $(c).find('a').attr('href', src_s0); 11932 $(c).find('a').attr('data-gallery', '#gframe-' + el.seq); 11933 } else { 11934 if(el.seq == "all_products") { 11935 $(c).find('a').attr('href', v.product_url); 11936 } else { 11937 if(typeof URI == 'function') URI = '/'; 11938 if(_this.b.LUX && el.mode == 'shopping') $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/_product/' + v.seq); 11939 else $(c).find('a').attr('href', ((_this.b.URL=='/') ? '' : _this.b.URL) + '/' + _this.b.PAGE + '/view/' + v.seq); 11940 } 11941 } 11942 } 11943 } 11944 } 11945 11946 if(glink_target == '_blank') $(c).find('a').attr('target','_blank'); 11947 else $(c).find('a').removeAttr('target'); 11948 11949 if(checkGFrameTitleOFF || !isTitle) $(c).find('a').attr('data-title', ''); 11950 else $(c).find('a').attr('data-title', v.title); 11951 11952 // if(adultonly_onoff == 'ON') $(c).addClass('adultonly'); 11953 11954 // caption 11955 var ftitle = $(c).find('h5.figure'), 11956 fcaption = $(c).find('p.figure').not('.comment'), 11957 fdatetime = $(c).find('.figure.datetime'), 11958 fhashtag = $(c).find('.figure.hashtag'), 11959 fbrand = $(c).find('.figure.brand'), 11960 fprice = $(c).find('.figure.price'), 11961 freview = $(c).find('.figure.review'), 11962 fcomment = $(c).find('.figure.comment'), 11963 flike = $(c).find('.figure.like'), 11964 fbasket = $(c).find('.figure.basket'); 11965 11966 $(c).find('figcaption').removeClass('hide'); 11967 11968 if (v.title || v.caption) { 11969 var gallery_caption = v.caption; 11970 gallery_caption = gallery_caption.trim().replace(/\n/g,'<br />'); 11971 11972 ftitle.html(v.title); 11973 fcaption.html(gallery_caption); 11974 if(fdatetime.length > 0) fdatetime.text(v.datetime); 11975 if(fhashtag.length > 0) fhashtag.text(v.hashtag); 11976 } 11977 11978 if(g_number) { 11979 var g_index = String(index + 1), 11980 g_num = g_index.padStart(g_number, '0'); 11981 $(c).find('.figure.number').text(g_num); 11982 } 11983 11984 if(fbrand.length > 0) { 11985 var fbrand_name = (typeof v.brand_name != 'undefined' && v.brand_name) ? v.brand_name : ''; 11986 fbrand.html(v.brand_name); 11987 } 11988 11989 if(el.mode == 'shopping' || el.seq == 'all_products') { 11990 fcomment.addClass('hide'); 11991 flike.addClass('hide'); 11992 11993 v.price = typeof v.price != 'undefined' ? parseFloat(v.price) : 0; 11994 v.sale = typeof v.sale != 'undefined' ? parseFloat(v.sale) : 0; 11995 var productGradeOnOff = getShoppingGradeProductGradeOnOff(v); 11996 $(c).attr('data-editor-grade-price-enabled', productGradeOnOff).attr('data-config-grade-price-enabled', productGradeOnOff); 11997 11998 var checkPriceHidden = isShoppingGradePriceHidden(v), 11999 base_gallery_price = (v.price && !checkPriceHidden) ? v.price : 0, 12000 base_gallery_sale_price = (typeof v.sale != 'undefined' && v.sale > 0 && v.sale > v.price && !checkPriceHidden) ? v.sale : 0, 12001 gallery_price = base_gallery_price, 12002 gallery_sale_price = base_gallery_sale_price, 12003 gallery_sale_per = (typeof v.sale_per != 'undefined' && v.sale_per && !checkPriceHidden) ? v.sale_per+'%' : '', 12004 grade_price_display = g_settings.grade_price_display == 'ON', 12005 grade_discount_grade = getShoppingGradePreviewDiscountGrade(data.grade), 12006 grade_discount_applied = false, 12007 grade_gallery_price = 0, 12008 product_soldout = 'íì ',
12009 product_no_sale = (typeof g_settings.sh_soldout == 'string') ? g_settings.sh_soldout : '구매ë¶ê°', 12010 product_status = ''; 12011 if ( 12012 !checkPriceHidden && 12013 isShoppingGradeProductGradePriceEnabled(v) 12014 ) { 12015 grade_gallery_price = calcShoppingGradeDisplayPrice(base_gallery_price, grade_discount_grade); 12016 grade_discount_applied = grade_gallery_price !== null; 12017 } 12018 if(v.status == 'off' && !checkPriceHidden) { 12019 product_status = '<span class="cl-sh-soldout">' + product_no_sale + '</span>'; 12020 } else if(v.quantity_on == 'on' && v.quantity < 1 && !checkPriceHidden) { 12021 product_status = '<span class="cl-sh-soldout">' + product_soldout + '</span>'; 12022 } 12023 12024 $(c).find('.cl-sh-soldout').remove(); 12025 if(product_status != '') $(c).attr('data-soldout',true); 12026 else $(c).removeAttr('data-soldout'); 12027 12028 $(c).find('.product-badge').remove(); 12029 product_status += drawBadgeList(v.use_badge, data.badge_settings); 12030 12031 $(c).find('.cl-sh-limit').remove(); 12032 if(v.status == 'lim') { 12033 if(v.sale_now == false) { 12034 var product_limit = '<p class="cl-sh-limit">ìí 구매 ê°ë¥ 기ê°ì´ ìëëë¤.</p>'; 12035 if(freview.length > 0) { 12036 freview.after(product_limit); 12037 } else { 12038 $(c).find('figcaption:not(.top) .figure:last-child').after(product_limit); 12039 } 12040 } 12041 } 12042 12043 if($(c).find('ul.figure.price').length > 0) { 12044 // var price_off = (v.sale_price > 0 && v.sale_price > v.price) ? 100 - Math.floor((v.price / v.sale_price) * 100) : 0, 12045 // off_str = (price_off > 0) ? price_off + '% ' : '' 12046 var off_str = (v.sale_rate > 0) ? v.sale_rate + '% ' : ''; 12047 if(!_this.b.LUX) off_str = gallery_sale_per; 12048 if(!off_str && gallery_sale_price > 0 && gallery_price > 0 && gallery_price < gallery_sale_price) { 12049 var price_off = Math.round(((gallery_sale_price - gallery_price) / gallery_sale_price) * 100); 12050 off_str = (price_off > 0) ? price_off + '% ' : ''; 12051 } 12052 //Ver2 12053 if(!checkPriceHidden) { 12054 var $priceWrap = $(c).find('ul.figure.price'), 12055 $priceVal = $priceWrap.find('.price-val'), 12056 $priceSale = $priceWrap.find('.price-sale'), 12057 $priceSalePer = $priceWrap.find('.price-sale-per'); 12058 $priceWrap.find('.sp-price, .grade-discount-price').remove(); 12059 if($priceSale.length > 0 && $priceSalePer.length == 0) { 12060 $priceSale.after('<li class="price-sale-per hide"></li>'); 12061 $priceSalePer = $priceWrap.find('.price-sale-per'); 12062 } 12063 $priceWrap.css({display:'', flexDirection:'', alignItems:''}); 12064 $priceVal.css({order:'', display:''}); 12065 $priceSale.css({order:'', display:'', marginRight:''}); 12066 $priceSalePer.css({order:'', display:'', marginLeft:'', marginTop:''}); 12067 $priceVal.html('₩' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 12068 $priceVal.removeClass('hide'); 12069 12070 if(gallery_sale_price > 0 && gallery_price < gallery_sale_price) { 12071 $priceSale.html('₩' + gallery_sale_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')); 12072 $priceSalePer.html(off_str); 12073 $priceSale.removeClass('hide'); 12074 $priceSalePer.removeClass('hide'); 12075 if(!grade_discount_applied && _this.b.LUX && (v.hashtag).indexOf('í¹ê°ì¸ì¼') > -1 && $(c).find('ul.figure.price .sp-price').length == 0) { 12076 $(c).find('ul.figure.price .price-sale').after('<li class="sp-price">í¹ê°ì¸ì¼</li>'); 12077 } 12078 } else { 12079 $priceSale.addClass('hide').html(''); 12080 $priceSalePer.addClass('hide').html(''); 12081 12082 } 12083 12084 if(grade_price_display && grade_discount_applied) { 12085 $priceWrap.append('<li class="grade-discount-price"><span class="grade-discount-price-value">₩' + grade_gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + '</span><span class="grade-discount-price-label">ëì í ì¸ê°</span></li>'); 12086 } 12087 12088 $(c).find('ul.figure.price .price-unit-pricing').remove(); 12089 if(v.product_unit_str) { 12090 $(c).find('ul.figure.price').append(`<li class="price-unit-pricing">${v.product_unit_str}</li>`); // ë¨ìë¹ ê°ê²© 12091 } 12092 } else { 12093 $(c).find('ul.figure.price .price-val').html('₩0'); 12094 $(c).find('ul.figure.price .price-val').addClass('hide'); 12095 } 12096 if(el.seq == 'all_products' && checkPriceHidden) $(c).find('ul.figure.price').html(''); 12097 if(product_status) $(c).find('ul.figure.price').append('<li>'+product_status+'</li>'); 12098 12099 var badge_size = getBadgeSize(data.badge_settings); 12100 $(c).find('.cl-sh-soldout').removeClass('badge-small badge-medium badge-large'); 12101 $(c).find('.cl-sh-limit').removeClass('badge-small badge-medium badge-large'); 12102 if(badge_size) { 12103 $(c).find('.cl-sh-soldout').addClass(badge_size); 12104 $(c).find('.cl-sh-limit').addClass(badge_size); 12105 } 12106 } else { 12107 //Ver1 12108 if(fprice.length == 0) fprice = fcaption; 12109 if(checkPriceHidden) fprice.html(''); 12110 else fprice.html('<span class="figure-krw">₩</span>' + gallery_price.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',') + product_status); 12111 } 12112 12113 if($(c).find('ul.figure.review').length > 0) { 12114 var gallery_review = (v.review_onoff && v.review_cnt) ? v.review_cnt : 0; 12115 if(gallery_review > 0) { 12116 $(c).find('ul.figure.review, ul.figure.review li').removeClass('hide'); 12117 $(c).find('ul.figure.review .figure-review-cnt').html(gallery_review); 12118 $(c).find('ul.figure.review .figure-review-score').html(v.review_score); 12119 } else { 12120 $(c).find('ul.figure.review, ul.figure.review li').addClass('hide'); 12121 $(c).find('ul.figure.review .figure-review-cnt, ul.figure.review .figure-review-score').html(''); 12122 } 12123 } 12124 12125 if(fbasket.length > 0) { 12126 var checkOldBlock = ($(c).find('.figure.basket[data-oldver="true"]').length > 0) ? true : false, 12127 checkOldverBasket = (typeof field_oldver != 'undefined' && field_oldver && field_oldver.indexOf('basket') > -1) ? true : false, 12128 checkDisabledBasket = (typeof field_disable != 'undefined' && field_disable && field_disable.indexOf('basket') > -1) ? true : false;
12129 if(v.basket_off || v.shopping_grade_hidden == 'ON') fbasket.addClass('cannotby hide'); 12130 else if(el.seq == 'all_products') fbasket.removeClass('hide'); 12131 else if(checkDisabledBasket || (!checkDisabledBasket && checkOldBlock && !checkOldverBasket)) fbasket.addClass('hide'); 12132 else if(property.VALIDTYPE != 'SM') fbasket.addClass('hide'); 12133 else fbasket.removeClass('hide'); 12134 } 12135 12136 } else { 12137 fbrand.addClass('hide'); 12138 fprice.addClass('hide'); 12139 freview.addClass('hide'); 12140 fbasket.addClass('hide'); 12141 12142 if ( checkUseComment 12143 && g_settings.comment_display == 'ON' 12144 && !(field_disable !== undefined && field_disable.indexOf('comment') > -1) 12145 && fcomment.length > 0 12146 && (typeof v.comment_cnt != 'undefined' && v.comment_cnt > 0) 12147 ) { 12148 fcomment.removeClass('hide'); 12149 fcomment.find('.figure-comment-cnt').html(v.comment_cnt); 12150 } else { 12151 fcomment.addClass('hide'); 12152 fcomment.find('.figure-comment-cnt').empty(); 12153 } 12154 12155 if ( checkUseLike 12156 && (g_settings.like_display !== undefined && g_settings.like_display != 'N') 12157 && !(field_disable !== undefined && field_disable.indexOf('like') > -1) 12158 && flike.length > 0 12159 ) { 12160 flike.removeClass('hide').find('.figure-like-cnt').html(0); 12161 if(v.like !== undefined) { 12162 flike.find('.figure-like-cnt').html(v.like.cnt); 12163 if (v.like.own && v.like.cnt > 0) flike.attr('data-like', v.seq).addClass('active'); 12164 } 12165 } else { 12166 flike.addClass('hide'); 12167 } 12168 } 12169 12170 if(checkUseLike == false) flike.html(''); 12171 12172 if(el.mode == 'gallery') { 12173 if(index < data.view) { 12174 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 12175 } else { 12176 $(c).find('figure').remove(); 12177 $(g).find('[data-loop="true"]').append($(c)[0].outerHTML); 12178 } 12179 if (total == 2) { 12180 $(c).find('figure').remove(); 12181 $('.gallery-empty').append($(c)[0].outerHTML); 12182 } 12183 } else { 12184 $(p).find('[data-loop="true"]').append($(c)[0].outerHTML); 12185 } 12186 }); 12187 } else { 12188 checkGalleryListSample = true; 12189 if(el.mode=='project' && _this.b.TEMPLATE == false) { 12190 nodes.addClass('gallery-item'); 12191 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); 12192 } 12193 if(_this.b.TEMPLATE !== false) { 12194 if ( checkUseComment 12195 && g_settings.comment_display == 'ON' 12196 && !(g_settings.field_disable !== undefined && g_settings.field_disable.indexOf('comment') > -1) 12197 ) { 12198 nodes.find('.figure.comment').removeClass('hide'); 12199 } else { 12200 nodes.find('.figure.comment').addClass('hide'); 12201 } 12202 12203 if ( checkUseLike 12204 && (g_settings.like_display !== undefined && g_settings.like_display != 'N') 12205 && !(g_settings.field_disable !== undefined && g_settings.field_disable.indexOf('like') > -1) 12206 ) { 12207 nodes.find('.figure.like').removeClass('hide'); 12208 } else { 12209 nodes.find('.figure.like').addClass('hide'); 12210 } 12211 } 12212 $(p).find('[data-loop="true"]').append(nodes); 12213 12214 if(_this.b.LUX) { 12215 category_onoff = 'ON'; 12216 checkGalleryListSample = false; 12217 } 12218 } 12219 if(checkLoadmoreInLoop) $(p).find('[data-loop="true"]').append(glm); 12220 12221 var tag = $(p)[0].outerHTML; 12222 var $galleryEL = $('.element[data-id="' + el.seq + '"]'); 12223 12224 if (el.mode == 'gallery' && total == 2) { 12225 $.each($('.gallery-empty').find('.gallery-item'), function(i,v) { 12226 $(g).find('[data-loop="true"]').append(v); 12227 }); 12228 } 12229 12230 if (el.mode == 'gallery' && total) tag = appendGalleryFrame($(tag), el.seq, el.type, g_settings); 12231 $galleryEL.html($(tag).html()).removeClass('preloading'); 12232 setOldVerBlockView($galleryEL,el); 12233 12234 $('#el-empty').empty(); 12235 $('.gallery-empty').remove(); 12236 12237 var $tag = $galleryEL.find('.shop-filter-header'); 12238 if($tag.length) shopHeaderDisplay($tag,data); 12239 12240 $galleryEL.attr('data-category',category_onoff); 12241 $galleryEL.attr('data-gallery-sort',gallery_sort); 12242 12243 if(category_onoff == 'ON' || gallery_sort == 'product') { 12244 initGToolbar($galleryEL, { id: el.seq, settings: g_settings }); 12245 } 12246 12247 showHideGalleryField($galleryEL,g_settings); 12248 reloadBlockMasonry('init',$galleryEL); 12249 12250 var $glmBtnWrap = $galleryEL.find('.loadmore-wrap'); 12251 var $glmBtn = $galleryEL.find('.loadmore-wrap .gallery-loadmore'); 12252 var checkLoadmore = (total > view && total > cookie_view && !checkGalleryListEmpty) ? true : false;
12253 var glm_lang = LANG; 12254 12255 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(); 12256 else if(typeof block_lang != 'undefined' && $.inArray(block_lang, ['ko','en']) > -1) glm_lang = block_lang; 12257 var glm_txt = $.lang[glm_lang]['config.loadmore']; 12258 12259 if($glmBtnWrap.length == 0) { 12260 // gallery loadmore btn - default (ver1) 12261 if(checkLoadmore) { 12262 var glm_class = (el.feature=='masonry') ? 'gallery-loadmore masonry-layout' : 'gallery-loadmore', 12263 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>'; 12264 12265 if($galleryEL.find('.gallery-loadmore').length > 0) $galleryEL.find('.gallery-loadmore').replaceWith(glm_btn); 12266 else $galleryEL.append(glm_btn); 12267 } else $galleryEL.find('.gallery-loadmore').remove(); 12268 12269 } else { 12270 // gallery loadmore btn - custom (ver2) 12271 if(checkLoadmore) { 12272 if(el.feature=='masonry') $glmBtn.addClass('masonry-layout'); 12273 else $glmBtn.removeClass('masonry-layout'); 12274 $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); 12275 $glmBtn.find('.label').text(glm_txt); 12276 $glmBtn.find('.display .view').text(cookie_view); 12277 $glmBtn.find('.display .total').text(total); 12278 $glmBtnWrap.removeClass('hide').fadeIn(); 12279 } else { 12280 $glmBtnWrap.fadeOut().addClass('hide'); 12281 $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'); 12282 $glmBtn.find('.label').text(glm_txt); 12283 $glmBtn.find('.display .view').text('0'); 12284 $glmBtn.find('.display .total').text('0'); 12285 } 12286 } 12287 12288 if(el.seq == 'all_products') { 12289 if(property.ONE) $galleryEL.addClass('link-to-ì ì²´ìí'); 12290 setGToolbarAllProducts($galleryEL, g_settings, el.total.list_total); 12291 } 12292 12293 if($galleryEL.has('input.gjs').length) setGalleryJS('load-loop',$galleryEL); 12294 }, 12295 forumUpdate : function(pid,page_num,view,page,data) { 12296 if(page_num > 1) { 12297 $.forum.init(pid, page, view, page_num,'', '', ''); 12298 } else { 12299 $.forum.set(pid, page_num, view, page, '', '', '',data); 12300 } 12301 }, 12302 displayComment : function(viewData) { 12303 if (typeof viewData == 'undefined' || !viewData) viewData = {}; 12304 var checkUrl = this.b.PAGE.split(','); 12305 var type = (checkUrl[0] == 'forum') ? 'F' : 'P'; 12306 var check_view_empty = (this.b.VIEW && this.b.COUNT == 1 && $('.error_404.element[data-name="error_404"]').length == 1) ? true : false; 12307 if(type == "P" 12308 && (this.b.COUNT == 0 || check_view_empty) 12309 ) { 12310 $('.error_404.element[data-name="error_404"] *[data-lang]').each(function() { 12311 $(this).html($.lang[LANG][$(this).attr('data-lang')]); 12312 }); 12313 return false; 12314 } 12315 12316 var option = (this.b.PARENT.settings) ? jQuery.parseJSON(this.b.PARENT.settings) : {}; 12317 12318 if(type == 'F') { 12319 if($.isEmptyObject(viewData) && this.b.PARENT.settings) viewData = {elsettings: jQuery.parseJSON(this.b.PARENT.settings)}; 12320 let tmp_elsettings = getOrDefault(viewData,'elsettings',{}); 12321 let tmp_fmsettings = getOrDefault(viewData,'fm_settings',{}); 12322 12323 let comment_display = 'ON'; 12324 if(getOrDefault(tmp_fmsettings,'comment_display','') != '') comment_display = tmp_fmsettings.comment_display; 12325 else if(getOrDefault(tmp_elsettings,'comment_display','') != '') comment_display = tmp_elsettings.comment_display; 12326 12327 if(comment_display == 'OFF') return false; 12328 } else { 12329 if(typeof option.comment_display == 'undefined' || option.comment_display == 'OFF') return false; 12330 } 12331 12332 $.comment.init(); 12333 }, 12334 loaded : function() { 12335 var b = _this.b; 12336 if($('body').width() <= 768 && $('.dsgn-body').hasClass('sidebar')) {
12337 if($('header.navbar').hasClass('sidebar')) { 12338 cssSidebar('off'); 12339 } 12340 //$('.dsgn-body').removeClass('sidebar').addClass('removed-sidebar'); 12341 } else if ($('body').width() > 768 /*&& $('.dsgn-body').hasClass('removed-sidebar')*/) { 12342 if($('header.navbar').hasClass('sidebar')) { 12343 cssSidebar('on'); 12344 } 12345 //$('.dsgn-body').removeClass('removed-sidebar').addClass('sidebar'); 12346 } 12347 12348 $('.carousel').live('click',function(){ 12349 $('.carousel').carousel('cycle'); 12350 }); 12351 12352 $('.carousel').live({ 12353 click: function() { 12354 $('.carousel').carousel('cycle'); 12355 }, 12356 hover: function(){ 12357 $('.carousel').carousel('cycle'); 12358 } 12359 }); 12360 12361 $('.carousel').carousel({ 12362 pause: 'none' 12363 }); 12364 12365 $('[data-fixed-width]').each(function() { 12366 $(this).css('width',$(this).attr('data-fixed-width')+'px'); 12367 }); 12368 12369 SCREEN = getScreen(); 12370 var targetUrl = document.URL, 12371 isMoveLink = targetUrl.match(/#/g); 12372 12373 $('.menu-logo-top').show(); 12374 12375 if(typeof $.cookie('gallery-item') != 'undefined' && b.VIEW == '') { 12376 moveGallery($.cookie('gallery-item')); 12377 } else if(typeof $.cookie('forum-item') != 'undefined' && b.VIEW == '') { 12378 // console.log('loaded', 'fm_view', $.cookie('forum_content_view')); 12379 if(typeof $.cookie('forum_content_view') != 'undefined'){ 12380 var fm_view = $.cookie('forum_content_view'); 12381 var fv = (fm_view !== undefined && fm_view)? fm_view.split('&'):array(); 12382 var pid = (fv)? fv[0]:''; 12383 var row_id = (fv)? fv[1]:''; 12384 12385 setTimeout(function(){ 12386 scrollToBlock('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="'+row_id+'"]', 1000); 12387 }, 500); 12388 $.removeCookie('forum-item', { path : '/' }); 12389 12390 $('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="'+row_id+'"]').click(); 12391 } else { 12392 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"]', 1000); 12393 $.removeCookie('forum-item', { path : '/' }); 12394 } 12395 } 12396 12397 if($('body').width() > 768) { 12398 $('.form-date').attr('type','text'); 12399 $('.form-date').attr('maxlength','2'); 12400 $('.date-yyyy').attr('maxlength','4'); 12401 } 12402 12403 $.modalOFF(); 12404 }, 12405 loadPage : function(page) { 12406 12407 } 12408} 12409 12410var aosAddblock = function(site_settings,settings,$el) { 12411 if($el.is('[data-type="gallery"][data-type2="premium"]') 12412 || $el.has('input.gjs').length 12413 || $el.is('.el-fixedcontact[data-type="contact"][data-type2="franchise bar"]') 12414 ) { 12415 $el.attr('data-aosinfo',false); 12416 return false; 12417 } 12418 12419 var block_aos_site = (typeof site_settings.block_aos != 'undefined' && site_settings.block_aos) ? site_settings.block_aos : {}, 12420 block_aosAll_site = (typeof block_aos_site['all'] != 'undefined' && block_aos_site['all']) ? block_aos_site['all'] : {}, 12421 aos_time_site = (typeof block_aosAll_site.t != 'undefined' && block_aosAll_site.t) ? block_aosAll_site.t : '', 12422 aos_motion_site = (typeof block_aosAll_site.m != 'undefined' && block_aosAll_site.m) ? block_aosAll_site.m : '', 12423 aos_duration_site = (typeof block_aosAll_site.d != 'undefined' && block_aosAll_site.d) ? block_aosAll_site.d : '700'; 12424 12425 var block_aos_page = (typeof settings.block_aos != 'undefined' && settings.block_aos) ? settings.block_aos : {}, 12426 aos_time_page = (typeof block_aos_page.t != 'undefined' && block_aos_page.t) ? block_aos_page.t : '', 12427 aos_motion_page = (typeof block_aos_page.m != 'undefined' && block_aos_page.m) ? block_aos_page.m : '', 12428 aos_duration_page = (typeof block_aos_page.d != 'undefined' && block_aos_page.d) ? block_aos_page.d : '700'; 12429 12430 12431 if(block_aos_site && (aos_time_site > aos_time_page) && aos_motion_site!='no-motion' && 12432 $('body').find('.menu-lock-block').length<1 && $('body').find('.site-lock-block').length<1) { 12433 $el.attr('data-aos',aos_motion_site) 12434 .attr('data-aos-duration',aos_duration_site) 12435 12436 if(aos_motion_site == 'fade-zoom-in' || aos_motion_page =='fade-zoom-in') { 12437 $el.attr('data-aos-easing','ease-in-back'); 12438 } 12439 isAosBlock = true; 12440 $el.attr('data-aosinfo',true); 12441 } else { 12442 if($.isEmptyObject(block_aos_page) == false && (aos_time_site < aos_time_page) && aos_motion_page!='no-motion' && 12443 $('body').find('.menu-lock-block').length<1 && $('body').find('.site-lock-block').length<1) { 12444 $el.attr('data-aos',aos_motion_page) 12445 .attr('data-aos-duration',aos_duration_page); 12446 if(aos_motion_site == 'fade-zoom-in' || aos_motion_page =='fade-zoom-in') { 12447 $el.attr('data-aos-easing','ease-in-back'); 12448 } 12449 isAosBlock = true; 12450 $el.attr('data-aosinfo',true); 12451 } else $el.attr('data-aosinfo',false); 12452 } 12453 12454 if(isAosBlock) { 12455 $('body,html').addClass('aos-height aos-overflowX'); 12456 } else { 12457 $('body,html').removeClass('aos-height aos-overflowX'); 12458 } 12459} 12460 12461var mobileWebfnavCheck = function(vpmode) { 12462 var checkFnav = ($('.fnav').length > 0 && vpmode=="mobile_web") ? true : false, 12463 WebType = isMobile(); 12464 12465 if(checkFnav && WebType) { 12466 $('.fnav.fnav-mobile-fnav').css('margin-bottom','53px'); 12467 $('.element.el-footer').css('margin-bottom','100px'); 12468 } else { 12469 $('.mobilepc_ch').css('margin-bottom','0px'); 12470 $('.element.el-footer').css('margin-bottom','0px'); 12471 } 12472 12473 if(WebType) { 12474 $('.element.el-footer').addClass('mpcwebheight'); 12475 $.mpcWeb.mpcMusicandGoTop(checkFnav,vpmode); 12476 } 12477} 12478var mobileProductBtnPosition = function(property,device_type) { 12479 var quick_height = $(`.quick-menu-${property.SID}.quickmenu`).innerHeight(); 12480 12481 if(device_type=='mobile') { 12482 var quick_height = $(`.quick-menu-${property.SID}.quickmenu`).innerHeight(), 12483 productBtn_height = $('.m-product-btn').innerHeight(), 12484 productBtn_position = ($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') ? quick_height : ''; 12485 12486 if($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') $('.m-product-btn, .product-detail-btn').css('bottom',productBtn_position); 12487 else $(`.quick-menu-${property.SID}.quickmenu`).css('bottom',productBtn_height+30); 12488 12489 } 12490} 12491 12492var mobileWebQuickmenuPosition = function(property,device_type) { 12493 var check_music = (typeof property.SETTINGS.musicUse != 'undefined' && (property.SETTINGS.musicUse === true || property.SETTINGS.musicUse == 'true')) ? true : false,
12494 el_fixedheight = (typeof $.cookie(`fixedcontact-${property.SID}`) != 'undefined' && $.cookie(`fixedcontact-${property.SID}`) == 'off') ? 0 : $('.element.el-fixedcontact').innerHeight(), 12495 el_fixedonoffHeight = 22, 12496 quick_height = $(`.quick-menu-${property.SID}.quickmenu`).innerHeight(), 12497 mpc_height = (typeof property.SETTINGS.viewportMode != 'undefined' && property.SETTINGS.vpMode_onoff===true) ? $('.mobilepc_ch').innerHeight() : 0, 12498 check_mpc = (typeof property.SETTINGS.viewportMode != 'undefined' && property.SETTINGS.vpMode_onoff===true) ? true : false, 12499 quick_position = 12, 12500 gotop_position = 0, 12501 gotoTop_position = ''; 12502 12503 el_fixedblockheight = el_fixedheight + el_fixedonoffHeight; 12504 12505 if($('.element.el-fixedcontact').length>0) { 12506 if(device_type=='pc') { 12507 gotop_position = el_fixedblockheight + 33; 12508 } else { 12509 var fixed_position = ($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') ? quick_height : ''; 12510 quick_position = (check_music) ? el_fixedblockheight + 45 : el_fixedblockheight + 30; 12511 quick_position = ($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') ? 0 : quick_position; 12512 12513 if(check_mpc) { 12514 var webtype = $.mpcWeb.mpcCheckWebType(); 12515 if(webtype=='MOBILE') { 12516 quick_position = (check_music) ? mpc_height + el_fixedblockheight + 45 : mpc_height + el_fixedblockheight + 10; 12517 if($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') { 12518 quick_position = mpc_height; 12519 fixed_position = fixed_position + mpc_height; 12520 } 12521 } 12522 } 12523 $('.element.el-fixedcontact').css('bottom',fixed_position); 12524 } 12525 } else { 12526 gotop_position = (device_type=='pc') ? 42 : gotop_position; 12527 quick_position = ''; 12528 if(check_mpc) { 12529 var webtype = $.mpcWeb.mpcCheckWebType(); 12530 if(webtype=='MOBILE') { 12531 if($.quickmenu['quickmenu']['img_type'][device_type]=='bottom_default') { 12532 quick_position = mpc_height; 12533 } 12534 else quick_position = (check_music) ? mpc_height + 45 : mpc_height + 30; 12535 } 12536 } 12537 } 12538 12539 if(device_type=='pc') { 12540 $('#goto-top').css('bottom',gotop_position); 12541 quick_position = gotop_position + $('#goto-top').outerHeight() + 30; 12542 12543 if(check_mpc) { 12544 var webtype = $.mpcWeb.mpcCheckWebType(); 12545 if(device_type=='pc' && webtype=='MOBILE') { 12546 quick_position = quick_position + mpc_height; 12547 $('.element.el-fixedcontact').css('bottom',''); 12548 $('#goto-top').css('bottom',gotop_position + mpc_height); 12549 } 12550 } 12551 12552 } 12553 12554 $(`.quick-menu-${property.SID}.quickmenu`).css('bottom',quick_position); 12555} 12556 12557var quickMenuMusicPosition = function(property) { 12558 var sid = (typeof property != 'undefined') ? property.SID : SID, 12559 vpModeOnoff = (property.SETTINGS.vpMode_onoff === true) ? true : false, 12560 webType = $.mpcWeb.mpcCheckWebType(), 12561 quick_type = ($('body').width() > 768) ? 'pc' : 'mobile'; 12562 12563 var el_fixedheight = (typeof $.cookie(`fixedcontact-${sid}`) != 'undefined' && $.cookie(`fixedcontact-${sid}`) == 'off') ? 0 : $('.element.el-fixedcontact').innerHeight(), 12564 mpc_height = (vpModeOnoff && webType == 'MOBILE') ? $('.mobilepc_ch').innerHeight() : 0, 12565 el_fixedonoffHeight = 22, 12566 el_fixedblockheight = 0, 12567 quick_position = 0, 12568 music_position = 5; 12569 12570 el_fixedblockheight = el_fixedheight + el_fixedonoffHeight; 12571 12572 12573 if($('.element.el-fixedcontact').length > 0) { 12574 if(quick_type=='pc') { 12575 music_position = el_fixedheight + 5; 12576 } else { 12577 var quick_height = (typeof $.quickmenu['quickmenu'] != 'undefined' && $.quickmenu['quickmenu']['img_type'][quick_type]=='bottom_default') ? $(`.quick-menu-${sid}.quickmenu`).innerHeight() : 0; 12578 music_position = quick_height + el_fixedblockheight + 5; 12579 quick_position = music_position + $('#cl-music-player-icon').outerHeight() + 5; 12580 12581 if(vpModeOnoff && webType == 'MOBILE') { 12582 quick_position = mpc_height + quick_position; 12583 } 12584 12585 if(typeof $.quickmenu['quickmenu'] != 'undefined' && $.quickmenu['quickmenu']['img_type'][quick_type]!='bottom_default') $(`.quick-menu-${sid}.quickmenu`).css('bottom',quick_position); 12586 } 12587 12588 if(vpModeOnoff && webType == 'MOBILE') { 12589 music_position = music_position + mpc_height; 12590 quick_position = mpc_height + quick_position; 12591 } 12592 } 12593 $('#cl-music-player-icon, #cl-music-container').css('bottom',music_position); 12594} 12595 12596var setlimitdiskPopup = function() { 12597 var icon = '<i class="site-space-icon fa fa-exclamation-circle"></i>', 12598 str = '<div class="site-space-disk">\ 12599 <p>
12599'+$.lang[LANG]['plan.disk-space.popup.limit.contents']+'</p>\ 12600 </div>\ 12601 '; 12602 12603 $(this).showModalFlat(icon + $.lang[LANG]['plan.disk-space.popup.limit.title'], str,false,false).addClass('flat-site-spacelimit-modal'); 12604 $('.modal-backdrop.in').css('opacity','0'); 12605} 12606 12607var setSitePopup = function() { 12608 if(typeof property.SETTINGS != 'undefined' && property.SETTINGS.showPopup === true && typeof property.SETTINGS.sitePopup != 'undefined' && property.SITELOCK != 'true') { 12609 sitePopupOpen(); 12610 } 12611} 12612 12613var sitePopupOpen = function(idx,data) { 12614 var site_popup = (typeof data != 'undefined' & data) ? data : new Array(); 12615 if(site_popup.length == 0) site_popup = (typeof property.SETTINGS.sitePopup != 'undefined' && property.SETTINGS.sitePopup) ? property.SETTINGS.sitePopup : site_popup; 12616 if(site_popup.length > 0) { 12617 $('.refresh-popup').show().removeAttr('style'); 12618 var isShow = true; 12619 12620 if(typeof idx != 'undefined') { 12621 if($('#'+property.SID+'Popup'+idx).length == 0) isShow = false; 12622 else $('#'+property.SID+'Popup'+idx).fadeIn(); 12623 } else { 12624 12625 if($('.site-popup .modal-popup').length > 0) { 12626 $('.site-popup .modal-popup').fadeIn(); 12627 } else { 12628 isShow = false; 12629 } 12630 } 12631 12632 if(!isShow) { 12633 var modal = $(this).showPopupModal(site_popup,property.SID); 12634 return modal; 12635 } 12636 } 12637} 12638 12639var sitePopupResize = function() { 12640 12641 if($('.popup').find('.modal-popup').length == 0) return false; 12642 12643 var img_w = new Array(), 12644 total_w = 0, 12645 add_w = 0, 12646 d_m = ($('.popup-modal').hasClass('popupimg-overflow-y')) ? 30 : 15; 12647 d_top = $('.header.el-menu').outerHeight() + 15, 12648 d_left = 0, 12649 x = 0, y = 0, y_r = 0; 12650 12651 $('.modal-popup').each(function(i) { 12652 if($(this).css('display') != 'none') { 12653 img_w[i] = $(this).width(); 12654 total_w += img_w[i] + d_m; 12655 } 12656 }); 12657 12658 12659 var isOverflow = ($('.dsgn-body').width() < (Number($('.popup-modal').children().eq(0).css('left').replace('px',''))+total_w)) ? true : false, 12660 display_i = -1; 12661 12662 if(isOverflow) { $('.popup-modal').addClass('popupimg-overflow-y'); 12663 } else { $('.popup-modal').removeClass('popupimg-overflow-y'); } 12664 12665 $('.modal-popup').each(function(i) { 12666 if($(this).css('display') != 'none') { 12667 display_i++; 12668 12669 if(isOverflow) { 12670 x = (display_i==0) ? d_top : d_top + (display_i*30); 12671 y = d_left + ((display_i+1)*30); 12672 y_r = 120 - y; 12673 12674 img_w[i] = 'auto'; 12675 } else { 12676 d_left = ($('.dsgn-body').width() - total_w)/2; 12677 12678 x = d_top; 12679 y = d_left + add_w + (i*15); 12680 } 12681 add_w = add_w + $(this).width(); 12682 12683 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]}; 12684 $(this).css(css_val); 12685 } 12686 }); 12687 12688} 12689 12690 12691var activeEL = function(el) { 12692 if(typeof el == 'undefined' || el=='') return; 12693 // header_fixed = $('header.navbar').height(); 12694 // var offset = ($('.dsgn-body').hasClass('sidebar')) ? 0 : -header_fixed; 12695 // $('body').scrollTo('.'+el,0,{offset:offset}); 12696 scrollToBlock('.'+el); 12697} 12698 12699var setLoginoutNav = function (sid, callback) { 12700 $('.creatorlink-header').remove(); 12701 $('#tpl-menu li.loginout').remove(); 12702 var str = '<div class="creatorlink-header">\n'; 12703 str = str + '<div class="logo-text col-md-4 col-sm-6">\n'; 12704 str = str + ' <a href="http://creatorlink.net"><img src="https://storage.googleapis.com/i.addblock.net/main/site_creatorlink_logo.png" alt="" /></a>\n'; 12705 str = str + '</div>\n'; 12706 str = str + '<div class="data-site col-md-4 col-sm-6 col-xs-6">\n'; 12707 str = str + ' <ul>\n'; 12708 str = str + ' <li class="profile-img"></li>\n'; 12709 str = str + ' <li><span class="text">' + sid + '</span></li>\n'; 12710 str = str + ' </ul>\n'; 12711 str = str + '</div>\n'; 12712 str = str + '<div class="data-user col-md-4 col-sm-6 col-xs-6">\n'; 12713 str = str + ' <ul class="pull-right">\n'; 12714 str = str + ' <li class="profile-img"></li>\n'; 12715 str = str + ' <li><span class="caret"></span></li>\n'; 12716 str = str + ' </ul>\n'; 12717 str = str + ' <div class="message"></div>\n'; 12718 str = str + '</div>\n'; 12719 str = str + '</div>\n'; 12720 str = str + '\n'; 12721 str = str + '\n'; 12722 $('.header.el-menu').before(str); 12723 var top = ($('header').hasClass('transparent')) ? '0' : '55px'; 12724 $('.header.el-menu').css('top',top); 12725 if(top == '0') $('.creatorlink-header + .popover + .fixed-position').css('top','0'); 12726 12727 if(typeof callback == 'function') callback(); 12728} 12729 12730var getProfileAuthor = function(sid,img) { 12731 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; 12732 var str = '<span class="hexagon">\n'; 12733 str = str + ' <svg viewBox="0 0 32 32">\n'; 12734 str = str + ' <pattern id="pfimg-" + sid +"" patternUnits="userSpaceOnUse" width="32" height="32">\n'; 12735 str = str + ' <image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=""+imgstr+"" x="-2px" y="-2px" width="36" height="36"></image>\n'; 12736 str = str + ' </pattern>\n'; 12737 str = str + ' <polygon points="16 0 30 8 30 24 16 32 2 24 2 8" fill="url(#pfimg-" + sid +")"></polygon>\n'; 12738 str = str + ' </svg>\n'; 12739 str = str + '</span>\n'; 12740 $('.data-site .profile-img').append(str); 12741} 12742 12743var getProfileMember = function() { 12744 $.getJSON('/template/checkLogin', function(data) { 12745 // if(!data.user) { } 12746 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; 12747 var str = '<span class="hexagon">\n'; 12748 str = str + ' <svg viewBox="0 0 32 32">\n'; 12749 str = str + ' <pattern id="pfimg-" + data.user +"" patternUnits="userSpaceOnUse" width="32" height="32">\n'; 12750 str = str + ' <image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=""+imgstr+"" x="-2px" y="-2px" width="36" height="36"></image>\n'; 12751 str = str + ' </pattern>\n'; 12752 str = str + ' <polygon points="16 0 30 8 30 24 16 32 2 24 2 8" fill="url(#pfimg-" + data.user +")"></polygon>\n'; 12753 str = str + ' </svg>\n'; 12754 str = str + '</span>\n'; 12755 $('.data-user .profile-img').append(str); 12756 $('.data-user .profile-img').addClass('user-'+data.name); 12757 $('.data-user .user-name').append('<span>'+data.name+'</span>'); 12758 // $('.data-user .logoutlink').before('<span>You're logged in as '+data.name+' </span>'); 12759 12760 var str3_mysite = ''; 12761 if($('.data-site ul li span.text').text() == data.sid) { 12762 $('.data-site').text(''); 12763 var isNewmessage = (data.newCount == 0 ) ? false : true; 12764 var str2 = '<ul class="sub-menu pull-right">\n'; 12765 str2 = str2 + ' <li class="newCount">\n'; 12766 str2 = str2 + ' <a href="/message/lists"><i class="fa fa-envelope"></i>\n'; 12767 if(isNewmessage) str2 = str2 + '<span class="badge">"+data.newCount+"</span>\n'; 12768 str2 = str2 + '</a>\n'; 12769 str2 = str2 + ' </li>\n'; 12770 str2 = str2 + '</ul>\n'; 12771 $(".data-user .message").append(str2); 12772 } else { 12773 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'; 12774 } 12775 12776 var str3 = '<div class="popover bottom" id="pop"+data.name+"">\n'; 12777 str3 = str3 + ' <div class="arrow"></div>\n'; 12778 str3 = str3 + ' <div class="popover-content">\n'; 12779 str3 = str3 + ' <div class="user-name">"+data.name+"</div>\n'; 12780 str3 = str3 + str3_mysite; 12781 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'; 12782 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'; 12783 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'; 12784 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'; 12785 str3 = str3 + ' </div>\n'; 12786 str3 = str3 + ' </div>\n'; 12787 $('.creatorlink-header').after(str3); 12788 12789 }); 12790} 12791 12792var pageHeight = function() { 12793 $('.page-comments').css('margin-top','0px'); 12794 $('.el-footer').css('margin-top','0px'); 12795 var docHeight = $('.dsgn-body').height(); 12796 $('.dsgn-body').wrapInner('<div class="dsgn-body-wrap"></div>'); 12797 var dsgnHeight = $('.dsgn-body-wrap').height(); 12798 var diff = docHeight - dsgnHeight; 12799 $('.dsgn-body > .dsgn-body-wrap').contents().unwrap(); 12800 return (diff>0) ? diff : 0; 12801} 12802 12803var setHeight = function(height) { 12804 if(typeof property.VIEW == 'undefined' || property.VIEW == "") return false;
12805 if(height>0) { 12806 height = (typeof MODE == 'undefined') ? height : height-35; 12807 if($('.page-comments').length) { 12808 $('.page-comments').css('margin-top',height+'px'); 12809 } else if($('.page-bottomlist').length) { 12810 $('.page-bottomlist').css('margin-top',height+'px'); 12811 } else if($('.el-footer').length) { 12812 $('.el-footer').css('margin-top',height+'px'); 12813 } 12814 } 12815} 12816 12817var makeLinkUrl = function(link, one, view) { 12818 var link_url = '', 12819 link_val = '', 12820 is_menu = ($.inArray(link.replace(/^\//g, '').replace(/ /g, '-'), property.MENULIST) > -1) ? true : false, 12821 regex = /^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/, 12822 regex2 = /^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,7}(\:[0-9]+)?(\/\S[^\{\}]*)?$/; 12823 12824 if (one) { 12825 link_url = (view) ? '/#' : '#'; 12826 link_url = (view && !property.PUBLISH) ? '/render/index#' : link_url; 12827 if(is_menu) link_url = '/'; 12828 } else { 12829 link_url = (property.URI=='/' || is_menu) ? '/' : property.URI + '/'; 12830 } 12831 12832 if (link) { 12833 if (link.match(/^\@/g) !== null) { // link-type: link-bookmark ==> a[attr-bookmark] 12834 var bookmark_seq = link.replace(/^\@/g, ''); 12835 if (typeof property.SETTINGS.blockBookmarkList == 'undefined' || typeof property.SETTINGS.blockBookmarkList['bookmark' + bookmark_seq] == 'undefined') { 12836 return ''; 12837 } 12838 } else if (link.match(/^flink\@[0-9]/gi) !== null) { // link-type: link-file ==> a[attr-flink] 12839 return link; 12840 } else if ($.inArray(link.replace(/^\//g, '').replace(/ /g, '-'), property.MENULIST) > -1) { // link-type: link-menu ==> a[data-user-link] 12841 link_val = link_url + link.replace(/ /g, '-'); 12842 } else { // link-type: link-out ==> a[attr-link] 12843 if(checkBase64Encode(decodeURIComponent(link))) link = Base64.decode(decodeURIComponent(link)); 12844 else if (checkBase64Encode(link)) link = Base64.decode(link); 12845 12846 if(!regex2.test(link) && regex.test(link)) link_val = '//' + link; 12847 } 12848 12849 if(link_val == '') link_val = link; 12850 } 12851 return link_val; 12852} 12853 12854var checkError = function(data) { 12855 if(typeof data.error != 'undefined' && data.error) { 12856 alert(data.error); 12857 if(data.error=='No user data') { 12858 location.href='/member/login'; 12859 } 12860 return true; 12861 } 12862 return false; 12863} 12864 12865var funcCallback = function(func,callback) { 12866 func(); 12867 if(typeof callback=='function') { 12868 callback(); 12869 } 12870} 12871 12872var closeClnavMega = function() { 12873 if(typeof $.clnav == 'undefined') return; 12874 if($('.cl-nav[data-layout="meganav"]').length == 0) return; 12875 if(!$('body').is('[data-clnav-mega="open"]')) return; 12876 12877 $.clnav.setMode('mega-open', false); 12878} 12879 12880var cssSidebar = function(onoff) { 12881 var width = (onoff == 'on') ? '260px' : '', 12882 dsgn_css = CSSJSON.toJSON($('#dsgn-body').text()); 12883 12884 if(width) { 12885 if(typeof dsgn_css['children']['.dsgn-body.sidebar'] == 'undefined') { 12886 dsgn_css['children']['.dsgn-body.sidebar'] = {'children' : {}, 'attributes' : { 'padding-left' : width, 'padding-top': '0px' }}; 12887 } 12888 } else { 12889 if(typeof dsgn_css['children']['.dsgn-body.sidebar'] != 'undefined') { 12890 delete dsgn_css['children']['.dsgn-body.sidebar']; 12891 } 12892 } 12893 12894 $('#dsgn-body').text(CSSJSON.toCSS(dsgn_css)); 12895} 12896 12897var getScreen = function() { 12898 var wid = window.innerWidth; 12899 12900 var screen_size = 0; 12901 if (0 < wid && wid < 480) { 12902 screen_size = 320; 12903 } else if(wid <= 480 && wid <768) { 12904 screen_size = 480; 12905 } else if (768 <= wid && wid < 992) { 12906 screen_size = 768; 12907 } else if (992 <= wid && wid < 1200 ) { 12908 screen_size = 992; 12909 } else if (wid >= 1200) { 12910 screen_size = 1200; 12911 } 12912 12913 return screen_size; 12914} 12915 12916var getScreenIndex = function() { 12917 var idx = 0; 12918 switch(SCREEN) { 12919 case 320: 12920 case 480: 12921 idx = 2; 12922 break; 12923 case 769: 12924 idx = 1; 12925 break; 12926 12927 case 992: 12928 case 1200: 12929 idx = 0; 12930 break; 12931 12932 default : idx = 0; break; 12933 } 12934 return idx; 12935} 12936var setGalleryReturnItemCookie = function(parent) { 12937 if(typeof parent == 'undefined' || !parent) return; 12938 var mode = (typeof parent.mode != 'undefined') ? parent.mode : '', 12939 seq = (typeof parent.seq != 'undefined') ? parent.seq : ''; 12940 12941 if($.inArray(mode, ['project', 'shopping']) == -1 || !seq) return; 12942 $.cookie('gallery-item', seq, { path: '/', expires: 12 * 60 * 60 * 1000 }); 12943} 12944var moveGallery = function(element) { 12945 var $item = $(`.gallery-item[data-seq="${element}"]`); 12946 if ($item.length == 0) { 12947 if($(`.element[data-id="${element}"]`).length > 0) $item = $(`.element[data-id="${element}"]`); 12948 else return; 12949 } 12950 12951 if($.clnav.check()) { 12952 goToElement($item); 12953 } else {
12954 var header_fixed = $('header.navbar').height(); 12955 var offset = ($('.dsgn-body').hasClass('sidebar')) ? 0 : -header_fixed; 12956 if($('header.navbar').hasClass('disableOffset') && !$item.hasClass('el_0')) offset = 0; 12957 12958 if (property.SID != 'undefined' && property.SID == 'kdomeshelter'){ 12959 offset -= 300; 12960 } 12961 12962 var sTop = $item.offset().top + offset; 12963 $('html, body').animate({scrollTop: sTop}, 500, 'easeInOutQuart'); 12964 12965 $.removeCookie('gallery', { path: '/' }); 12966 $.removeCookie('gallery-item', { path : '/' }); 12967 } 12968} 12969 12970var scrollToBlock = function(el, duration) { 12971 if(typeof duration == 'undefined') duration = 1200; 12972 if(typeof el == 'undefined' || !el || $(el).length == 0) return; 12973 12974 if($.clnav.check()) { 12975 goToElement(el); 12976 } else { 12977 var header_fixed = $('header.navbar').outerHeight(); 12978 var offset = $('.dsgn-body').scrollTop(); 12979 if(!$('.dsgn-body').hasClass('sidebar') && !$('header.navbar').hasClass('disableOffset')) offset -= header_fixed; 12980 var sTop = $(el).offset().top + offset; 12981 $('html, body').animate({ scrollTop: sTop }, duration, 'easeInOutQuart'); 12982 } 12983} 12984 12985var clearDsgnbody = function() { 12986 closeClnavMega(); 12987 12988 const removeSelectors = [ 12989 'style[id^="el_"]:not([id*=el__])', 12990 'script[id^="js_"]:not([id*=el__])', 12991 '.element[data-id="all_products"]', 12992 '.psearch-view', 12993 '.menu-lock-block', 12994 '.site-lock-block', 12995 '.config-image-view', 12996 '.forum-view', 12997 '.page-toolbars', 12998 '.page-comments', 12999 '.page-bottomlist', 13000 ].join(','); 13001 $(removeSelectors).remove(); 13002 $('.el-footer').hide(); 13003 13004 var element = $('div.element[class*="el_"]:not([class*=el__]):not(.el-footer)'); 13005 element.each(function() { 13006 const $el = $(this); 13007 const $parentElem = $el.closest('.elem'); 13008 13009 if($parentElem.length) { 13010 $parentElem.remove(); 13011 } else { 13012 $el.remove(); 13013 } 13014 }); 13015} 13016 13017var ensureGalleryResponsiveImageClass = function($scope) { 13018 $scope.find('img').each(function() { 13019 var removeAttrs = []; 13020 if(this.attributes) { 13021 $.each(this.attributes, function(i, attr) { 13022 if(attr && attr.name !== 'class' && attr.name.indexOf('img-responsive') > -1) removeAttrs.push(attr.name); 13023 }); 13024 } 13025 for(var i = 0; i < removeAttrs.length; i++) this.removeAttribute(removeAttrs[i]); 13026 $(this).addClass('img-responsive'); 13027 }); 13028} 13029 13030var golink = function(_this,link) { 13031 var wloc = window.location, 13032 local_link = (wloc.hostname == link.hostname) ? true : false, 13033 local_arr = ['/_register', '/_login']; 13034 13035 if(local_link && $.inArray(link.pathname,local_arr) == -1) { 13036 var loc = link.pathname, 13037 uri = (_this.b.PUBLISH) ? loc : loc.replace('/render/',''); 13038 13039 if((uri == '/render' || uri == '/') && !_this.b.ONE) { 13040 uri = ''; 13041 $.each(_this.b.SMENU,function(i,v) { 13042 var menu_name = (v.name).replace(' ','-'); 13043 var checkMenuName = (uri == menu_name) ? true : false, 13044 checkMenuLink = (typeof v.link != 'undefined' && v.link) ? true : false; 13045 13046 if(checkMenuName && checkMenuLink) { 13047 uri = (v.link).replace(' ','-'); 13048 } 13049 }); 13050 13051 } 13052 13053 var go = (_this.b.PUBLISH) ? '/' + uri + link.hash: '/render/' + uri + link.hash; 13054 // ëª í ì¼í ê²ì íë¼ë¯¸í° ì²ë¦¬ 13055 if((link.search).length) go = go + link.search; 13056 _this.history.pushState(null,_this.b.TITLE,go); 13057 13058 if(typeof $.cookie('forum-item') != 'undefined') { 13059 // console.log('fm_view', $.cookie('forum_content_view')); 13060 setTimeout(function() { 13061 if(typeof $.cookie('forum_content_view') != 'undefined'){ 13062 var fm_view = $.cookie('forum_content_view'); 13063 var fv = (fm_view !== undefined && fm_view)? fm_view.split('&'):array(); 13064 var pid = (fv)? fv[0]:''; 13065 var row_id = (fv)? fv[1]:''; 13066 13067 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"] .tpl-forum-list-title[data-id="'+row_id+'"]', 1000); 13068 $.removeCookie('forum-item', { path : '/' }); 13069 13070 $('.element[data-id="' + pid + '"] .tpl-forum-list-title[data-id="'+row_id+'"]').click(); 13071 // $.removeCookie('forum_content_view', { path: '/', expires: 12 * 60 * 60 * 1000 }); 13072 } else { 13073 scrollToBlock('.element[data-id="' + $.cookie('forum-item') + '"]', 1000); 13074 $.removeCookie('forum-item', { path : '/' }); 13075 } 13076 }, 300); 13077 } 13078 } else { 13079 location.href = link.href; 13080 } 13081} 13082 13083 13084function draw_floating() { 13085 var fl_section_html = '', 13086 fl_bottom_html = '', 13087 fl_circle_html = '', 13088 el_html = '', 13089 data = {}; 13090 13091 $.each($('.floating_item li'), function(fi, fv){ 13092 var fl_class = $(this).find('.icon').attr('class'), 13093 cid = ($(this).find('a').attr('data-cid')) ? $(this).find('a').attr('data-cid') : '', 13094 fl_link = ($(this).find('a').attr('data-link')) ? $(this).find('a').attr('data-link') : '', 13095 type = ($(this).find('a').attr('data-type')) ? $(this).find('a').attr('data-type') : '', 13096 data = ($(this).find('a').attr('data-data')) ? $(this).find('a').attr('data-data') : '', 13097 name = ($(this).find('a').attr('data-name')) ? $(this).find('a').attr('data-name') : '', 13098 regexp = /[0-9]+/, 13099 fl_url = (type=='defaultPhone') ? 'tel:'+property.TEL_LINK : data; 13100 13101 if(type=='top') return true; 13102 fl_icon_num = (type=='defaultPhone') ? '' : `${regexp.exec(fl_class)}`; 13103 // fl_link = (type=='address' || type=='page_move' || type=='storefarm') ? fl_link : ''; 13104 fl_url = (type=='defaultPhone') ? fl_url : fl_link; 13105 fl_url = (type=='link') ? data : fl_url; 13106 fl_url = (type=='email') ? 'mailto:'+data : fl_url; 13107 fl_url = (type=='reservation') ? data : fl_url; 13108 fl_url = (type=='page_move' && data=='í') ? '/' : fl_url; 13109 fl_url = (type=='sms') ? 'tel:'+ data : fl_url; 13110 fl_url = (type=='defaultPhone2') ? 'tel:'+ data : fl_url; 13111 if(fl_url.includes('pf.kakao')) { 13112 fl_url = (fl_url.includes('http://pf.kakao') || fl_url.includes('https://pf.kakao')) ? fl_url : fl_url = 'https://' + fl_url; 13113 } 13114 13115 fl_section_html += ` 13116 <li class="" data-type="${type}" data-name="${name}" data-cid="${cid}" data-link="${fl_url}"> 13117 <a class="btn btn_ic${fl_icon_num}" href="${fl_url}"> 13118 <div class="in">${name}
13119 <span class="ic theme_background"></span> 13120 </div> 13121 </a> 13122 </li> 13123 `; 13124 13125 var floating_open_sid = ['hyundae09']; // modoo 모ë°ì¼ íë¡í ë©ë´ openìì² 13126 if($.inArray(property.SID, floating_open_sid) > -1) { 13127 fl_icon_num = (type=='defaultPhone') ? '1' : fl_icon_num; 13128 fl_bottom_html += ` 13129 <a class="link_item _button_navi" href="${fl_url}" data-type="${type}"> 13130 <span class=" icon icon${fl_icon_num}"></span> 13131 </a> 13132 `; 13133 fl_circle_html += ` 13134 <a class="link_item _button_navi _bizPhone float-navi-button" href="${fl_url}" data-type="${type}"> 13135 <span class=" icon icon${fl_icon_num} theme_background"></span> 13136 </a> 13137 `; 13138 13139 } else { 13140 fl_icon_num = (type=='defaultPhone') ? '1' : fl_icon_num; 13141 fl_bottom_html += ` 13142 <a class="link_item _button_navi" href="${fl_url}" data-type="${type}"> 13143 <span class=" text _text">${name}</span><span class=" icon icon${fl_icon_num}"></span> 13144 </a> 13145 `; 13146 fl_circle_html += ` 13147 <a class="link_item _button_navi _bizPhone float-navi-button mfl_hide" href="${fl_url}" data-type="${type}"> 13148 <span class="text _text">${name}</span><span class=" icon icon${fl_icon_num} theme_background"></span> 13149 </a> 13150 `; 13151 } 13152 13153 // console.log(fl_url); 13154 }); 13155 13156 el_html += ` 13157 <div class="btn_wrap m_floating"> 13158 <ul class="btn_list"> 13159 ${fl_section_html} 13160 </ul> 13161 </div> 13162 `; 13163 13164 data = { 13165 'fl_bottom_html' : fl_bottom_html, 13166 'fl_circle_html' : fl_circle_html, 13167 'el_html' : el_html 13168 } 13169 13170 // ë©ë´ ëìì¸ ë³ê²½ì 모ë íµë©ë´ë 기존 íë²í¼ ìì¹ ê²¹ì¹ë 문ì ë°ìíì¬ ê¸°ì¡´ í¬ë§ íë²í¼ ì¨ê¹ì²ë¦¬ 13171 if(!$('._floating').hasClass('hide') && $('.floating_item li').length > 0) { 13172 $('.goto-top').hide().addClass('hide').css('pointer-events','none'); 13173 13174 } 13175 return data; 13176} 13177 13178 13179function m_floating(fl_data) { 13180 if($.isEmptyObject(fl_data)) return false; 13181 var settings = (typeof property.SETTINGS !='undefined' && property.SETTINGS) ? property.SETTINGS : {}, 13182 settings_modoo = (typeof settings.modoo !='undefined' && settings.modoo) ? settings.modoo : {}, 13183 settings_mfloating = (typeof settings_modoo.mfloating !='undefined' && settings_modoo.mfloating) ? settings_modoo.mfloating : ''; 13184 13185 if(settings_mfloating!='' && settings_mfloating && $('ul.floating_item._floating.modoo').length>0 && !$('._floating').hasClass('hide')) { 13186 var modoo_fnav_html = (settings_mfloating=='bottom') ? ` 13187 <div class="floating_area _floating_area modoo" data-mfltype="${settings_mfloating}"> 13188 <div class="floating_item floating_bottom _float_buttons"> 13189 ${fl_data.fl_bottom_html} 13190 <button type="button" class="btn_top _top_btn" data-type="top"> 13191 <span class="blind">TOP</span><span class="icon_top"></span> 13192 </button> 13193 </div> 13194 </div> 13195 ` : ` 13196 <div class="floating_area _floating_area modoo" data-mfltype="${settings_mfloating}"> 13197 <div class="dimmed _bg_dimmed"></div> 13198 <div class="floating_item _float_buttons"> 13199 ${fl_data.fl_circle_html} 13200 <button type="button" class="btn_menu _toggle_btn" style="-webkit-tap-highlight-color: transparent;"> 13201 <span class="icon nicon_more4 _icon_area theme_background"></span> 13202 </button> 13203 </div> 13204 </div>` 13205 ; 13206 13207 13208 var floating_open_sid = ['hyundae09']; // modoo 모ë°ì¼ íë¡í ë©ë´ openìì² 13209 if($.inArray(property.SID, floating_open_sid) > -1) { 13210 modoo_fnav_html = ` 13211 <div class="floating_area _floating_area modoo" data-mfltype="${settings_mfloating}"> 13212 <div class="floating_item _float_buttons"> 13213 ${fl_data.fl_circle_html} 13214 <button type="button" class="btn_menu _toggle_btn" style="-webkit-tap-highlight-color: transparent;"> 13215 <span class="icon nicon_more4 _icon_area theme_background"></span> 13216 </button> 13217 </div> 13218 </div>`; 13219 } 13220 //$('.dsgn-body.modoo').append(modoo_fnav_html); 기존 ì½ë 13221 13222 if ($('.dsgn-body.modoo').length > 0) { 13223 $('.dsgn-body.modoo').append(modoo_fnav_html); 13224 } else if (property?.SETTINGS?.modoo?.floating) { // 모ë ì¬ì´í¸ ë©ë´ ëìì¸ ë³ê²½ ì dsgn-bodyì modooê° í¬í¨ëì§ ìì 모ë°ì¼ìì íµë©ë´ ì ë³´ì´ë 문ì í´ê²° 13225 $('.dsgn-body').append(modoo_fnav_html); 13226 } 13227
13228 } 13229 13230} 13231 13232function isMenuLock(callback) { 13233 var deferred = $.Deferred(); 13234 var is_lock_block = 'active', r; 13235 var display_target = (property.VIEW) ? '.cl-s-product-detail, .lux-product-block, .cl-s-product-review, .cl-s-product-qna, .page-comments, .page-bottomlist' : ''; 13236 13237 // if(property.VALIDPLAN && property.ISLOCK == 'true') { 13238 if(property.ISLOCK == 'true') { 13239 r = $.post('/template/menuLockController/type/lock_check', {s: property.SMENU, sid: property.SID, page: property.PAGE, publish : property.PUBLISH}, function(data) { 13240 var lock_type = data.lock_type, 13241 lock_error_type = (typeof data.error_data != 'undefined' && data.error_data.type) ? '.' + data.error_data.type : ''; 13242 13243 if(!data.error && data.result) { 13244 property.ISLOCK = 'false'; 13245 } else { 13246 // var checkGotoURL = ''; 13247 // if((property.SITEUM == '1' || property.SITEUM == '2') && lock_error_type == '') checkGotoURL = '/_login'; 13248 // else if(property.SITEUM == '2'&& $.inArray(lock_error_type,['.unlikesite','.creatorlink']) > -1) checkGotoURL = '/_register'; 13249 // if(checkGotoURL) { 13250 // location.href = checkGotoURL; 13251 // return false; 13252 // } 13253 13254 var text = $.lang[LANG]['render.menu-lock.' + lock_type + '.text']; 13255 if (typeof data.menuLockMsg !== 'undefined' && data.menuLockMsg) { 13256 text = data.menuLockMsg; 13257 } 13258 13259 if (lock_type=='umlevel') { 13260 if(lock_error_type == '' && property.SITEUM == '1') lock_error_type = '.onlylogin'; 13261 13262 text = $.lang[LANG]['render.menu-lock.' + lock_type + '.text' + lock_error_type ]; 13263 if(lock_error_type == '.lowerlevel') text = text.replace(/\#/gi, data.error_data.umlevel); 13264 } else if (lock_type == 'grade') { 13265 if(lock_error_type == '.nonmember' || (lock_error_type == '' && property.SITEUM == '1')) { 13266 if(property.PAGE!='_login' && property.PAGE!='_register' && property.PAGE!='_forgot') { 13267 location.href='/_login'; 13268 return false; 13269 } 13270 lock_error_type = '.onlylogin'; 13271 } 13272 13273 text = $.lang[LANG]['render.menu-lock.' + lock_type + '.text' + lock_error_type ]; 13274 if(typeof text == 'undefined') { 13275 text = $.lang[LANG]['render.menu-lock.umlevel.text' + lock_error_type] || $.lang[LANG]['render.menu-lock.umlevel.text.onlylogin'] || $.lang[LANG]['render.menu-lock.umlevel.text']; 13276 } 13277 if(lock_error_type == '.lowerlevel') text = text.replace(/\#/gi, data.error_data.grade); 13278 } 13279 13280 var str = '\ 13281 <div class="menu-lock-block">\ 13282 <div class="inner-box text-center">\ 13283 <div class="form-inline" role="form">\ 13284 <div class="text">\ 13285 <p> ' + text + ' </p>\ 13286 </div>'; 13287 if(lock_type=='password') { 13288 str = str + '\ 13289 <div class="form-group">\ 13290 <input class="form-control" type="password" placeholder="password" data-lock-password=""/>\ 13291 <label class="error-text"></label>\ 13292 </div>\ 13293 <div class="form-group">\ 13294 <span class="btn" data-edit="true" data-selector=".btn" data-lock-submit="">'+$.lang[LANG]['render.lock.password.submit']+'</span>\ 13295 </div>\ 13296 '; 13297 } 13298 str = str + '\ 13299 </div>\ 13300 </div>\ 13301 </div>\ 13302 '; 13303 if($.clnav.check()) { 13304 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 13305 } else { 13306 $('.header.el-menu').after(htmlspecialchars_decode(str)); 13307 } 13308 $('#page-loading-css').remove(); 13309 } 13310 if(typeof callback == 'function') { 13311 callback(); 13312 13313 if(display_target) { 13314 setTimeout(function() { 13315 if(property.ISLOCK == 'true') $(display_target).addClass('hide'); 13316 else $(display_target).removeClass('hide'); 13317 },20); 13318 } 13319 } 13320 13321 },'json'); 13322 } else { 13323 if(typeof callback == 'function') { 13324 callback(); 13325 setTimeout(function() { 13326 $('.header.el-menu.hide').removeClass('hide'); 13327 if(display_target) $(display_target).removeClass('hide'); 13328 },20); 13329 } 13330 } 13331 13332 deferred.resolve(); 13333 return deferred.promise(); 13334} 13335 13336function isSitePasswordLock() { 13337 var deferred = $.Deferred(); 13338 let last_activity = localStorage.getItem("last_activity"); 13339 let ss_site_lock = localStorage.getItem('ss_' + property.SID + '_site_lock'); 13340 13341 if (last_activity && ss_site_lock) { 13342 let timeDiff = Math.floor(Date.now() / 1000) - Number(last_activity); 13343 // console.log(Math.floor(Date.now() / 1000), Number(last_activity), timeDiff); 13344 if (timeDiff > 3600) { 13345 // console.log('localStorage clear'); 13346 localStorage.removeItem('last_activity'); 13347 localStorage.removeItem('ss_' + property.SID + '_site_lock'); 13348 setTimeout(function(){ 13349 location.href = '/'; 13350 }); 13351 } 13352 } 13353 13354 if(property.SETTINGS.sitePermit == undefined) { 13355 property.SETTINGS.sitePermit = 1; 13356 } 13357 13358 if(property.SETTINGS.sitePermit == 3) { 13359 let pw = (ss_site_lock)? ss_site_lock : ''; 13360 r = $.post('/template/siteLockController/type/lock_check', {sid: property.SID, publish : property.PUBLISH, pw: pw}, function(data) { 13361 var lock_error_type = (typeof data.error_data != 'undefined' && data.error_data.type) ? '.' + data.error_data.type : ''; 13362 if(!data.error && data.result) { 13363 property.SETTINGS.sitePermit = 1; 13364 } else { 13365 var str = '\ 13366 <div class="site-lock-block passwordonly">\ 13367 <div class="inner-box text-center">\ 13368 <div class="form-inline" role="form">\ 13369 <div class="text">\ 13370 <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"/>
13370<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>'; 13371 if(typeof data.sitelock_text != 'undefined' && data.sitelock_text) { 13372 str += '<p class="title">'+data.sitelock_text+'</p>'; 13373 } else { 13374 str += '<p class="title">'+$.lang[LANG]['render.site-lock.password.text']+'</p>'; 13375 } 13376 str += '</div>\ 13377 <div class="form-group">\ 13378 <div>\ 13379 <input type="password" placeholder="'+$.lang[LANG]['render.site-lock.password.placeholder']+'" data-lock-password=""/>\ 13380 <label class="error-text"></label>\ 13381 </div>\ 13382 <span class="btn" data-edit="true" data-selector=".btn" data-lock="site" data-lock-submit="">\ 13383 <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>\ 13384 </span>\ 13385 </div>\ 13386 </div>\ 13387 </div>\ 13388 </div>\ 13389 '; 13390 if($.clnav.check()) { 13391 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 13392 } else { 13393 $('.header.el-menu').after(htmlspecialchars_decode(str)); 13394 } 13395 } 13396 if(data.reload === true && data.result) { 13397 setTimeout(function(){ 13398 location.reload(); 13399 }); 13400 } 13401 }, 'json'); 13402 } 13403 13404 deferred.resolve(); 13405 return deferred.promise(); 13406} 13407 13408function isUserCertified(history) { 13409 var referrer = (document.referrer !== undefined)? document.referrer.replace(/^https?:\/\//, ''):''; 13410 var seg = referrer.split('/'); 13411 13412 if(property.CERT_USE == 'A' && property.VALIDTYPE != 'BN' && property.VALIDTYPE != 'SM') { //ìê¸ì ë§ë£ 13413 var str = '\ 13414 <div class="site-lock-block">\ 13415 <div class="inner-box text-center">\ 13416 <div class="form-inline">\ 13417 <div class="text">\ 13418 <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>\ 13419 <p class="title">'+$.lang[LANG]['siteum.site.access.limit']+'</p>\ 13420 </div>\ 13421 </div>\ 13422 </div>\ 13423 </div>\ 13424 '; 13425 13426 if($.clnav.check()) { 13427 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 13428 } else { 13429 $('.header.el-menu').after(htmlspecialchars_decode(str)); 13430 } 13431 return false; 13432 } 13433 13434 r = $.post('/template/isUserCertified', {sid: property.SID, publish : property.PUBLISH}, function(data) { 13435 var cert_form = ''; 13436 13437 // JH 주ì2 : 문ì ì ìë 주ì 13438 if(property.CERT_USE == 'A' && typeof data.cert_adult != 'undefined' && data.cert_adult == 'N') { 13439 _this.b.certOpenChk = true; 13440 } 13441 13442 13443 if((property.CERT_USE == 'Y' && data.cert != 'Y') || (property.CERT_USE == 'A' && data.cert_adult != 'Y')) { 13444 // V2: ordr_idxxë ìë²(cert_req)ìì ìì± â íë°í¸ init_orderid() ë¶íì 13445 cert_form = '\ 13446 <form name="form_auth" method="post" action="/cert_req">\ 13447 <input type="hidden" name="param_opt_1" value="myinfo"/>\ 13448 <input type="hidden" name="param_opt_2" value="'+data.userid+'"/>\ 13449 </form>\ 13450 <form name="myinfo_form" method="post" action="/_myinfo_proc">\ 13451 <input type="hidden" id="cert_data" name="cert_data" value="">\ 13452 <input type="hidden" id="input-name" name="name" value="'+data.name+'">\ 13453 <input type="hidden" id="input-birth" name="birth" value="'+data.birth+'">\ 13454 <input type="hidden" id="input-tel" name="tel" value="'+data.tel+'">\ 13455 <input type="hidden" id="input-gender" name="gender" value="'+data.gender+'">\ 13456 <input type="hidden" id="input-email" name="email" value="'+data.email+'">\ 13457 <input type="hidden" id="input-id" name="id" value="'+data.userid+'">\ 13458 </form>\ 13459 '; 13460 13461 if(property.CERT_USE == 'Y'){ 13462 if(property.SETTINGS.sitePermit == '2Y') { 13463 if(!data.userid){ 13464 if(property.ONE && !property.VIEW) { //onepage site 13465 var onpage_seq = property.pageContent.index[0]['seq']; 13466 if(onpage_seq!='login' && onpage_seq!='register' && onpage_seq!='forgot'){ 13467 location.href='/_login'; 13468 } 13469 } else { 13470 if(property.PAGE!='_login' && property.PAGE!='_register' && property.PAGE!='_forgot') { 13471 location.href='/_login'; 13472 } 13473 } 13474 13475 } else { 13476 var str = '\ 13477 <div class="site-lock-block useronly">\ 13478 <div class="inner-box text-center">\ 13479 <div class="form-inline">\ 13480 <div class="text">\ 13481 '+cert_form+'\ 13482 <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>\ 13483 <p class="title">'+$.lang[LANG]['siteum.cert.user']+'</p>\ 13484 '+$.lang[LANG]['siteum.cert.user.txt']+'\ 13485 <button class="btn cl-s-btn cl-s-btn-full btn-cert" onclick="return auth_type_check(true);">\ 13486 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
13486<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>\ 13487 '+$.lang[LANG]['siteum.cert.user.btn']+'</button>\ 13488 <a class="btn cl-s-btn cl-s-btn-primary cl-s-btn-full logout" href="javascript:;">'+ $.lang[LANG]['siteum.cert.user.exit'] +'</a>\ 13489 </div>\ 13490 </div>\ 13491 </div>\ 13492 </div>\ 13493 '; 13494 if($.clnav.check()) { 13495 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 13496 } else { 13497 $('.header.el-menu').after(htmlspecialchars_decode(str)); 13498 } 13499 13500 $(document).on('click', '.btn.logout', function(e){ 13501 e.preventDefault(); 13502 $.getJSON('/umember/login/out', function(r) { 13503 if($.cookie('cert_popup') !== undefined) { 13504 $.removeCookie('cert_popup', true, { path: '/', expires: 12 * 60 * 60 * 1000 }); 13505 } 13506 location.reload(); 13507 },'json'); 13508 }); 13509 } 13510 } else { 13511 if($.inArray(property.PAGE, ['_register', '_login', '_forgot', '_mypost', '_myinfo']) == -1) { 13512 var modal_content = '<p class="text-center">' + $.lang[LANG]['siteum.cert.identify.verification.txt.1'] + '</p>\ 13513 <div class="info">\ 13514 ' + $.lang[LANG]['siteum.cert.identify.verification.txt.2'] + '\ 13515 </div>'; 13516 13517 if(data.cert == 'N') { 13518 modal_content += cert_form; 13519 $(this).showModalFlat($.lang[LANG]['siteum.cert.identify.verification'], modal_content, true, true, function() { 13520 auth_type_check(true); 13521 }, $.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 13522 $.getJSON('/umember/login/out', function(r) { 13523 location.href = r.url; 13524 // location.href = '/'; 13525 },'json'); 13526 }, '', function() { //hide 13527 $.getJSON('/umember/login/out', function(r) { 13528 location.href = r.url; 13529 // location.href = '/'; 13530 },'json'); 13531 }); 13532 } 13533 } 13534 } 13535 } else if(property.CERT_USE == 'A') { 13536 if(!data.userid){ 13537 if(property.ONE && !property.VIEW) { //onepage site 13538 var onpage_seq = property.pageContent.index[0]['seq']; 13539 if(onpage_seq!='login' && onpage_seq!='register' && onpage_seq!='forgot'){ 13540 location.href='/_login'; 13541 } 13542 } else { 13543 if(property.PAGE!='_login' && property.PAGE!='_register' && property.PAGE!='_forgot') { 13544 location.href='/_login'; 13545 } 13546 } 13547 13548 } else { 13549 var str = '\ 13550 <div class="site-lock-block adultonly">\ 13551 <div class="inner-box text-center">\ 13552 <div class="form-inline">\ 13553 <div class="text">\ 13554 '+cert_form+'\ 13555 <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>\ 13556 <p class="title">'+$.lang[LANG]['siteum.cert.adult']+'</p>\ 13557 '+$.lang[LANG]['siteum.cert.adult.txt']+'\ 13558 <button class="btn cl-s-btn cl-s-btn-full btn-cert" onclick="return auth_type_check(true);">\ 13559 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32">
13559<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>\ 13560 '+$.lang[LANG]['siteum.cert.adult.btn']+'</button>\ 13561 <a class="btn cl-s-btn cl-s-btn-primary cl-s-btn-full logout" href="javascript:;">'+ $.lang[LANG]['manager.site-um.logout'] +'</a>\ 13562 </div>\ 13563 </div>\ 13564 </div>\ 13565 </div>\ 13566 '; 13567 if($.clnav.check()) { 13568 $('.dsgn-body').prepend(htmlspecialchars_decode(str)); 13569 } else { 13570 $('.header.el-menu').after(htmlspecialchars_decode(str)); 13571 } 13572 13573 $(document).on('click', '.btn.logout', function(e){ 13574 e.preventDefault(); 13575 $.getJSON('/umember/login/out', function(r) { 13576 if($.cookie('cert_popup') !== undefined) { 13577 $.removeCookie('cert_popup', true, { path: '/', expires: 12 * 60 * 60 * 1000 }); 13578 } 13579 location.reload(); 13580 },'json'); 13581 }); 13582 } 13583 } 13584 } 13585 }, 'json'); 13586} 13587 13588function call_auth_data(frm) { 13589 auth_data(frm); 13590} 13591 13592var 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"], 13593 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"], 13594 fonts_ja = ["@Japanese", "Hannari", "Hokkori", "IoEI", "JKG", "MS Gothic", "MS Mincho", "Noto Sans JP", "Noto Serif JP"], 13595 fonts_th = ["@Thai", "Cyclin", "Hai Heritage Pro", "HFF Thai Dye", "Owah Tagu Siam NF"], 13596 fonts_ar = ["@Arabic", "Aceh Darusalam", "Amiri", "ArabDances", "Boecklins Universe", "Catharsis Bedouin", "Himchuli", "Kanisah", "Satyajit"], 13597 fonts_cr = ["@Cyrillic", "20db", "Alpha Echo", "Anonymous Pro", "Arsenal", "Bebas Neue", "Bitter", "Charis SIL", "Fira Mono", "Lato CR"], 13598 fonts_he = ["@Hebrew", "Alef", "Ezra SIL", "MendelSiddurMW"], 13599 fonts_ch = ["@Chinese", "cwTeXHei", "cwTeXKai", "cwTeXMing", "cwTeXYen", "Noto Sans SC", "Noto Sans TC", "Noto Serif SC", "Noto Serif TC"], 13600 fonts_vi = ["@Vietnamese", "Han Nom Gothic"]; 13601 FONTS = []; 13602 13603for(i=0; i<UFONTS.length; i++){ 13604 var fonts = eval('fonts_'+UFONTS[i]); 13605 FONTS = arrayUnique(fonts.concat(FONTS)); 13606} 13607 13608function galleryStartHover() { 13609 $(this).find('figure').addClass('hover'); 13610}; 13611function galleryCloseHover() { 13612 $(this).find('figure').removeClass('hover'); 13613}; 13614function galleryMovelink() { 13615 $(this).find('a').click(); 13616}; 13617 13618$(function () { 13619 $(document).on('click', '.modoo._floating_area[data-mfltype^="ci"] ._toggle_btn', function(){ 13620 var navi_btn = $('.modoo._floating_area[data-mfltype^="ci"]').find('.float-navi-button'); 13621 13622 if(navi_btn.hasClass('mfl_hide')) { 13623 $('.modoo._floating_area[data-mfltype^="ci"]').removeClass('fl_open').addClass('fl_open'); 13624 $('.modoo._floating_area[data-mfltype^="ci"]').find('.float-navi-button').removeClass('mfl_hide'); 13625 $(this).removeClass('float-navi-open').addClass('float-navi-open'); 13626 $(this).find('._icon_area').removeClass('nicon_more4').addClass('nicon_close'); 13627 } else { 13628 $('.modoo._floating_area[data-mfltype^="ci"]').removeClass('fl_open'); 13629 $('.modoo._floating_area[data-mfltype^="ci"]').find('.float-navi-button').addClass('mfl_hide'); 13630 $(this).removeClass('float-navi-open'); 13631 $(this).find('._icon_area').removeClass('nicon_close').addClass('nicon_more4'); 13632 } 13633 13634 }); 13635 13636 $(document).on('click', '.nonePrice', function () { 13637 alert('ë¡ê·¸ì¸ í ì´ì©ì´ ê°ë¥í©ëë¤.'); 13638 if (property['VALIDTYPE'] != 'SM') { 13639 $('.login .cl_icon_profile').click(); 13640 } else { 13641 location.href='/_login'; 13642 } 13643 return false;
13644 }); 13645 13646 $(document).on('click', '.noneShoppingGrade, .noneShoppingGrade a', function(e) { 13647 e.preventDefault(); 13648 e.stopImmediatePropagation(); 13649 var msg = $(this).closest('.noneShoppingGrade').attr('data-shopping-grade-msg') || 'í´ë¹ ë±ê¸ ê³ ê° ì ì© ìíì ëë¤.'; 13650 alert(normalizeShoppingGradeBlockedMessage(msg)); 13651 return false; 13652 }); 13653 13654}); 13655 13656var naverLogCallback = function(callback) { 13657 if($('#naverLogload').length == 0) { 13658 var head= document.getElementsByTagName('head')[0]; 13659 var script= document.createElement('script'); 13660 script.type= 'text/javascript'; 13661 script.id= 'naverLogload'; 13662 script.src= '//wcs.naver.net/wcslog.js'; 13663 script.addEventListener('load', callback); 13664 head.appendChild(script) 13665 } else { 13666 if(typeof callback == 'function') { 13667 callback(); 13668 } 13669 } 13670} 13671 13672var member_only_item = function() { 13673 alert('ë¡ê·¸ì¸ í ì´ì©ì´ ê°ë¥í©ëë¤'); 13674 location.href = "/_login"; 13675}
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.