var SNS = function(){ var pin_page = false; var snsObjList = []; var main_url, site_name, subject, content, image_url, link_url, security_link_url; var api_url; var kakao_loaded = false; var kakao_message_template_id; var share_type; var social = {}; var additional = {}; function SnsObjects(){ this.name = ""; this.show = true; this.order = 0; this.iconClass = ""; this.type = ""; } var loadKakaoApi = function(key){ // 카카오 이미 호출되어있으면 호출하지 않음 추가 if(kakao_loaded) return false; if(LIMIT_API_LIST.indexOf('kakao_link') === -1){ try{ if(key != undefined){ key = key.trim(); if(key != '' && Kakao){ if (!Kakao.isInitialized()) { Kakao.init(key); } kakao_loaded = true; } } }catch(e){ } } }; var init = function(d){ // 상품&예약 상세페이지 데이터는 고정 if(pin_page) return false; var data = d; if (data.kakao_api_key !== undefined){ loadKakaoApi(data.kakao_api_key); kakao_message_template_id = data.kakao_message_template_id; } main_url = data._main_url; site_name = data._site_name; subject = data._subject; content = data._body === null ? '' : makeShareContent(data._body); image_url = data._img; link_url = data._post_url; security_link_url = data._security_post_url; api_url = "https://sns.imweb.me/?url="; social = data._social; additional = data._additional; share_type = data._share_type; if(data._pin_page != undefined){ pin_page = true; } }; var makeShareContent = function(s){ s = removeHtmlTag(s); // 공유하기에 보이는 내용에서 치환 s = s.replace(/ /ig, " "); s = s.replace(/</ig, "<"); s = s.replace(/>/ig, ">"); //글자수가 너무 길때 처리 - 공유하기 권장 110글자 var content_max_len = 110; s = (s.length > content_max_len)? s.substring(0,content_max_len) : s; return s; }; //SNS공유 초기설정 //var snsInit = function(_main_url, _site_name, _subject, _content, _link_url, _security_link_url, _image){ // // try{ // if(Kakao) Kakao.init('63e1a2ee956b3aa85ca51663ce4caccb'); // }catch(e){ // // } // // // main_url = _main_url; // site_name = _site_name != "" ? "[" + _site_name + "]" : ""; // api_url = "https://sns.imweb.me/?url="; // subject = _subject; // content = _content; // image_url = _image; // link_url = _link_url; // security_link_url = _security_link_url; //}; var setSnsObj = function(){ snsObjList = []; if(SITE_COUNTRY_CODE === KOREA_COUNTRY_CODE){ if(LIMIT_API_LIST.indexOf('kakao_link') === -1){ var snsObj = new SnsObjects(); snsObj.name = LOCALIZE.버튼_카카오톡(); snsObj.show = true; snsObj.order = 1; snsObj.iconClass = "kakao"; snsObj.type = "kakaotalk"; snsObjList.push(snsObj); } } if(LIMIT_API_LIST.indexOf('line_link') === -1){ snsObj = new SnsObjects(); snsObj.name = LOCALIZE.버튼_라인(); snsObj.show = true; snsObj.order = 1; snsObj.iconClass = "line"; snsObj.type = "line"; snsObjList.push(snsObj); } if(SITE_COUNTRY_CODE === KOREA_COUNTRY_CODE){ if(LIMIT_API_LIST.indexOf('band_link') === -1){ snsObj = new SnsObjects(); snsObj.name = LOCALIZE.버튼_밴드(); snsObj.show = true; snsObj.order = 1; snsObj.iconClass = "band"; snsObj.type = "band"; snsObjList.push(snsObj); } if(LIMIT_API_LIST.indexOf('naver_link') === -1){ snsObj = new SnsObjects(); snsObj.name = LOCALIZE.버튼_네이버(); snsObj.show = true; snsObj.order = 1; snsObj.iconClass = "naver"; snsObj.type = 'naver'; snsObjList.push(snsObj); } } if(LIMIT_API_LIST.indexOf('facebook_link') === -1){ snsObj = new SnsObjects(); snsObj.name = LOCALIZE.버튼_페이스북(); snsObj.show = true; snsObj.order = 1; snsObj.iconClass = "face"; snsObj.type = "facebook"; snsObjList.push(snsObj); } if(LIMIT_API_LIST.indexOf('twitter_link') === -1){ snsObj = new SnsObjects(); snsObj.name = 'X'; snsObj.show = true; snsObj.order = 1; snsObj.iconClass = "twitter"; snsObj.type = "twitter"; snsObjList.push(snsObj); } if(LIMIT_API_LIST.indexOf('instagram') === -1){ snsObj = new SnsObjects(); snsObj.name = LOCALIZE.버튼_인스타그램(); snsObj.show = false; snsObj.order = 1; snsObj.iconClass = "instagram"; snsObj.type = "instagram"; snsObjList.push(snsObj); } }; var getDefaultHtml = function(){ const snsList = []; for(var index in snsObjList){ const snsObj = snsObjList[index]; if(!snsObj.show) continue; snsList.push(`
  • ${snsObj.name}
  • `) } const html = ` `; return html; }; var copyToClipboard = function(){ $('#sns_copy_url').select(); document.execCommand("Copy"); $('#copy_complete').text(LOCALIZE.설명_URL이복사되었습니다()); $('#copy_complete').addClass('copied'); setTimeout(function () { $('#copy_complete').removeClass('copied'); },4000); }; var showDefalutSnsShareList = function(){ //snsInit(_main_domain, _site_name, _subject, _content, _link_url, _security_link_url, _image); setSnsObj(); var html = $(getDefaultHtml()); $.cocoaDialog.open({type : 'post_social', custom_popup : html}); }; var setSnsApi = function(type){ switch(type){ case 'kakaotalk': shareKakaoTalk(); break; case 'line': shareLine(); break; case 'band': shareBand(); break; case 'naver': shareNaver(); break; case 'facebook': shareFacebook(); break; case 'twitter': shareTwitter(); break; case 'instagram': shareInstagram(); break; } }; /*** * 카카오톡 공유하기 * https://developers.kakao.com/docs/latest/ko/message/js */ var shareKakaoTalk = function(){ if(LIMIT_API_LIST.indexOf('kakao_link') === -1){ subject = decodeHTMLEntities(subject); content = decodeHTMLEntities(content); var type = share_type; var kakao_link = location.href; var kakao_send_data = { content: { title: subject, description: content, imageUrl: image_url, imageWidth: 300, imageHeight: 200, link: { mobileWebUrl: kakao_link, webUrl: kakao_link } }, buttons: [ { title: '자세히보기', link: { mobileWebUrl: kakao_link, webUrl: kakao_link } } ] }; switch(share_type){ case 'booking': kakao_send_data.buttons[0]['title'] = '예약하기'; type = 'feed'; break; case 'commerce': if(additional == undefined || additional.commerce == undefined || additional.hide_price === 'Y'){ type = 'feed'; break; } kakao_send_data.buttons[0]['title'] = '구매하기'; kakao_send_data.commerce ={}; kakao_send_data.commerce.regularPrice = additional.commerce.orig_price; // 정상가격 if(additional.commerce.sale_price != undefined) { kakao_send_data.commerce.discountPrice = additional.commerce.sale_price; // 할인가격 kakao_send_data.commerce.discountRate = Math.round((kakao_send_data.commerce.regularPrice - kakao_send_data.commerce.discountPrice) * 100 / kakao_send_data.commerce.regularPrice); } break; case 'feed': case 'location': if(social){ kakao_send_data.social = {}; for(key in social){ kakao_send_data.social[key] = parseInt(social[key]); } } if(share_type == 'location'){ if(additional == undefined || additional.location == undefined){ type = 'feed'; break; } kakao_send_data.address = additional.location.address; kakao_send_data.addressTitle = subject; } break; default: type = 'feed'; break; } /** * 커머스의 경우 sendCustom() 을 이용하기 위함. * 커머스이고, 템플릿 ID 가 있는 경우에는 sendCustom() * 커머스이고 템플릿 ID 가 없는 경우에는 sendDefault() * * linkUrl 은 카카오 디벨로퍼 앱의 출처 링크 형식으로 리다이렉트 * 출처 링크에 url 쿼리 스트링을 붙여 출처 링크 + path 로 리다이렉트 하도록 함. * * @see https://developers.kakao.com/docs/latest/ko/message/js-link#custom-template-msg */ var kakao_template_id = parseInt(kakao_message_template_id); if (type === 'commerce' && kakao_template_id > 0) { kakao_send_data = { templateId: kakao_template_id, templateArgs: { title: subject, imageUrl: image_url, imageWidth: 300, imageHeight: 200, btnStr: "구매하기", linkUrl: (location.pathname + location.search).slice(1), originalPrice: additional.commerce.orig_price, }, installTalk: true }; if (additional.commerce.sale_price !== undefined) { kakao_send_data.templateArgs.salePrice = additional.commerce.sale_price; // 할인가격 kakao_send_data.templateArgs.discountPercent = Math.round((kakao_send_data.templateArgs.originalPrice - kakao_send_data.templateArgs.salePrice) * 100 / kakao_send_data.templateArgs.originalPrice); // 할인율 } Kakao.Link.sendCustom(kakao_send_data); } else { kakao_send_data.objectType = type; Kakao.Link.sendDefault(kakao_send_data); } }else{ alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다()); } }; /*** * 라인 공유하기 */ var shareLine = function(){ if(LIMIT_API_LIST.indexOf('line_link') === -1){ window.open("http://line.naver.jp/R/msg/text/?" + fixedEncodeURIComponent(subject) + " " + fixedEncodeURIComponent(location.href)); }else{ alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다()); } }; /*** * 밴드 공유하기 */ var shareBand = function(){ if(LIMIT_API_LIST.indexOf('band_link') === -1){ var tmp_subject = encodeURIComponent(subject + "\n"); var body = tmp_subject + fixedEncodeURIComponent(location.href); window.open("http://band.us/plugin/share?body=" + body + "&route=" + fixedEncodeURIComponent(location.href)); }else{ alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다()); } }; function fixedEncodeURIComponent(str) { return encodeURIComponent(str).replace(/[\.]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); }); } var shareNaver = function(){ if(LIMIT_API_LIST.indexOf('naver_link') === -1){ if(content.length == 0){ if(confirm('네이버 블로그 공유 시 본문 텍스트가 없을 경우 사이트 내용 텍스트를 순차적으로 출력합니다. 그래도 공유하시겠습니까?')){ shareSnsMetatag('naver'); } }else{ shareSnsMetatag('naver'); } }else{ alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다()); } }; /*** * 페이스북 공유하기 */ var shareFacebook = function(){ if(LIMIT_API_LIST.indexOf('facebook_link') === -1){ shareSnsMetatag('facebook'); }else{ alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다()); } }; /*** * 트위터 공유하기 */ var shareTwitter = function(){ if(LIMIT_API_LIST.indexOf('twitter_link') === -1){ shareSnsMetatag('twitter'); }else{ alert(LOCALIZE.설명_사이트관리자설정에의해차단된콘텐츠입니다()); } }; /*** * 인스타그램 공유하기 */ var shareInstagram = function(){ if(IS_MOBILE){ }else{ } }; var shareSnsMetatag = function(type){ switch(type){ case 'naver': window.open("https://share.naver.com/web/shareView.nhn?url=" + encodeURI(encodeURIComponent(location.href)) + "&title=" + encodeURIComponent(subject)); break; case 'facebook': window.open("http://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(location.href)); break; case 'twitter': window.open("https://twitter.com/intent/tweet?text=" + encodeURIComponent(subject) + "&url=" + encodeURIComponent(location.href)); break; default: alert(LOCALIZE.설명_공유에실패하였습니다()); break; } }; return { showDefalutSnsShareList : function(_main_url, _site_name, _subject, _content, _link_url, _security_link_url, _image){ return showDefalutSnsShareList(_main_url, _site_name, _subject, _content, _link_url, _security_link_url, _image); }, setSnsApi : function(_type){ return setSnsApi(_type); }, shareKakaoTalk : function(_type){ return shareKakaoTalk(_type); }, shareLine : function(){ return shareLine(); }, shareBand : function(){ return shareBand(); }, shareNaver : function(){ return shareNaver(); }, shareFacebook : function(){ return shareFacebook(); }, shareTwitter : function(){ return shareTwitter(); }, copyToClipboard : function(text){ return copyToClipboard(text); }, loadKakaoApi : function(key){ loadKakaoApi(key); }, init : function(d){ return init(d); } }; }();