이지우 - 관리자 > 카카오톡 전송리스트 > 친구톡 상세화면 > 미리보기 팝업 추가

This commit is contained in:
JIWOO 2025-08-28 16:40:25 +09:00
parent 88d0e14de2
commit 385bd551c6
8 changed files with 729 additions and 27 deletions

View File

@ -30,6 +30,7 @@ public class MjonKakaoATVO extends ComDefaultVO{
private String msgKind; // '문자 종류 일반:N, 광고:A, 선거:C',
private String msgPayCode; // '재전송 기능에 의한 최종전송콘텐트 종류 저장',
private String contSeq; // COMMENT 'MMS의 콘텐츠 Key(MMS_CONTENTS_INFO의 CONT_SEQ)',
private String contents; // BIZ_ATTACHMENTS -> COMMENT
private String msgTypeResend; // '재전송할 문자 타입. 값이 있으면 재전송. 없으면 전송',
private String centerSeqResend; // '재전송할 센터. NPro 내부적으로 사용함.',
private String msgNoticetalkSenderKey; // '카카오 알림톡에 등록된 사용자 고유키',
@ -153,6 +154,9 @@ public class MjonKakaoATVO extends ComDefaultVO{
private String yellowId;
private String bizKakaoResendTypeCnt;
private String adFlag;
private String senderKey = ""; // 발신프로필
public String getMsgDiv() {
return msgDiv;
@ -1287,7 +1291,24 @@ public class MjonKakaoATVO extends ComDefaultVO{
public void setBizKakaoResendTypeCnt(String bizKakaoResendTypeCnt) {
this.bizKakaoResendTypeCnt = bizKakaoResendTypeCnt;
}
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
public String getSenderKey() {
return senderKey;
}
public void setSenderKey(String senderKey) {
this.senderKey = senderKey;
}
public String getAdFlag() {
return adFlag;
}
public void setAdFlag(String adFlag) {
this.adFlag = adFlag;
}
}

View File

@ -6,6 +6,9 @@ import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
@ -18,12 +21,17 @@ import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.LoginVO;
import itn.com.cmm.service.FileVO;
import itn.com.cmm.util.StringUtil;
import itn.com.cmm.util.StringUtil2;
import itn.let.kakao.admin.kakaoAt.service.ChannelIDVO;
import itn.let.kakao.admin.kakaoAt.service.MjonKakaoATVO;
import itn.let.kakao.admin.kakaoFt.service.MjonKakaoFTService;
import itn.let.kakao.admin.kakaoFt.service.MjonKakaoFTVO;
import itn.let.kakao.kakaoComm.KakaoButtonVO;
import itn.let.kakao.kakaoComm.KakaoReturnVO;
import itn.let.kakao.kakaoComm.KakaoVO;
import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService;
import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService;
import itn.let.kakao.user.sent.service.KakaoSentService;
import itn.let.mjo.msg.service.MjonMsgResultCodeVO;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.reservmsg.service.MjonReservMsgService;
@ -65,6 +73,8 @@ public class MjonKakaoFTController {
@Resource(name = "kakaoApiService")
private KakaoApiService kakaoApiService;
@Resource(name = "KakaoSentService")
private KakaoSentService kakaoSentService;
/*
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
@ -814,7 +824,40 @@ public class MjonKakaoFTController {
}
*/
/**
* MSG_IG별 친구톡 템플릿 상세내용 팝업화면 관리자페이지
* @param ChannelIDVO
* @param request
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/uss/ion/kakaoft/KakaoFTTemplateDetailPopupAjax.do")
public String KakaoFTTemplateDetailPopupAjax(@ModelAttribute("searchVO") MjonKakaoATVO mjonKakaoATVO,
HttpServletRequest request ,
ModelMap model) throws Exception {
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String id = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(id == "") {
return "redirect:/uat/uia/EgovLoginUsr.do";
}
MjonKakaoATVO mjonKakaoATResultVO = kakaoSentService.selectKakaoSentDetailDataAjax(mjonKakaoATVO);
mjonKakaoATResultVO.setSmsTxt(StringUtil2.replaceBR(mjonKakaoATResultVO.getSmsTxt()));
model.addAttribute("resultMsgDetail", mjonKakaoATResultVO);
KakaoReturnVO kakaoTemplateInfo = getKakaoFTSendTemplateInfo(mjonKakaoATResultVO);
model.addAttribute("kakaoTemplateInfo", kakaoTemplateInfo);
} catch (Exception e) {
System.out.println("KakaoFTTemplateDetailPopupAjax Contrller Error ::: " + e);
}
return "uss/ion/kakaoft/popup/KakaoFTTemplateDetailPop";
}
//파일 이름을 이용하여 첨부파일 아이디(atchFileId), 첨부파일 순번(fileExtsn) 찾는 함수
private FileVO getFilePathToAtchFileId(String filePath) throws Exception{
@ -837,4 +880,121 @@ public class MjonKakaoFTController {
return returnFileVO;
}
public KakaoReturnVO getKakaoFTSendTemplateInfo(MjonKakaoATVO kakaoATVO) throws Exception {
KakaoReturnVO returnVO = new KakaoReturnVO();
try {
String jsonContents = kakaoATVO.getContents();
//친구톡 이미지 또는 버튼 정보가 있다면 실행
if(jsonContents != null && jsonContents.length() > 0) {
/*FileReader reader = new FileReader(jsonFilePath);
int ch;
String resultStr = "";
while ((ch = reader.read()) != -1) {
resultStr = resultStr + (char)ch;
}
*/
JSONParser parser = new JSONParser();
Object obj = parser.parse(jsonContents);
JSONObject object = (JSONObject) obj;
String image = (object.get("image") == null) ? null : object.get("image").toString();
String button = (object.get("button") == null) ? null : object.get("button").toString();
if(image != null) {
Object imagObj = parser.parse(image);
JSONObject jsonImgObj = (JSONObject) imagObj;
System.out.println(jsonImgObj.toJSONString());
String imgUrl = (jsonImgObj.get("img_url") == null) ? null : jsonImgObj.get("img_url").toString();
String imgLink = (jsonImgObj.get("img_link") == null) ? null : jsonImgObj.get("img_link").toString();
System.out.println(imgUrl);
returnVO.setTemplateEmphasizeType("IMAGE");
returnVO.setTemplateImageUrl(imgUrl);
returnVO.setTemplateImageLink(imgLink);
}
if(button != null) {
JSONArray buttonJsonList = (JSONArray) object.get("button");
System.out.println(buttonJsonList.size());
List<KakaoButtonVO> buttonList = new ArrayList<KakaoButtonVO>();
for(int i=0; i < buttonJsonList.size(); i++) {
JSONObject itemInfo = (JSONObject)buttonJsonList.get(i);
String name = itemInfo.get("name").toString();
System.out.println(name);
KakaoButtonVO buttonVO = new KakaoButtonVO();
buttonVO.setName(name);
//버튼 링크 처리
String type = (String) itemInfo.get("type");
String link = "";
switch(type) {
case "WL": //웹링크
link = (String) itemInfo.get("url_mobile");
if (link == null || link.isEmpty()) {
link = (String) itemInfo.get("url_pc");
}
break;
case "AL": //앱링크
link = (String) itemInfo.get("scheme_android");
if (link == null || link.isEmpty()) {
link = (String) itemInfo.get("scheme_ios");
}
break;
default:
break;
}
if(link != null && !link.isEmpty()) {
buttonVO.setLink(link);
}
buttonList.add(buttonVO);
}
returnVO.setButtonList(buttonList);
for(KakaoButtonVO butVO : returnVO.getButtonList()) {
System.out.println("+++++++++++++ btn name ::: "+butVO.getName());
}
}
}
//친구톡 내용 셋팅
returnVO.setTemplateContent(kakaoATVO.getSmsTxt());
} catch (Exception e) {
e.printStackTrace();
}
return returnVO;
}
}

View File

@ -24,5 +24,6 @@ public class KakaoButtonVO {
private String linkMo = ""; // 모바일 링크 주소 (WL 사용시 필수)
private String linkPc = ""; // PC 링크 주소 (WL 사용시 선택)
private String pluginId = ""; // 플러그인 ID (P1, P2, P3 사용시 필수)
private String link = ""; // 링크 통합 처리
}

View File

@ -83,6 +83,8 @@ public class KakaoReturnVO extends ComDefaultVO{
private String templateImageUrl = ""; // 템플릿 이미지 링크 - templateEmphasizeType IMAGE 선택 필수
private String templateImageLink = ""; // 템플릿 이미지 클릭 링크
private String templateTitle = ""; // 템플릿 내용 강조 표기할 핵심 정보 - templateEmphasizeType TEXT 선택 필수
private String templateSubtitle = ""; // 템플릿 강조 표기 보조 - templateEmphasizeType TEXT 선택 필수

View File

@ -934,9 +934,13 @@
, MD.BIZ_KAKAO_RESEND_DATA as bizKakaoResendData /* 대체 문자 (치환O) */
, MGD.BIZ_KAKAO_RESEND_ORGNL_TXT as bizKakaoResendOrgnlTxt /* 대체 문자( 치환X ) */
, MD.BIZ_KAKAO_JSON_FILE as bizKakaoJsonFile /* Json 파일 경로 */
, BA.CONTENTS as contents
, MGD.AD_FLAG as adFlag
FROM MJ_MSG_GROUP_DATA MGD
INNER JOIN MJ_MSG_DATA MD
ON MGD.MSG_GROUP_ID = MD.MSG_GROUP_ID
LEFT JOIN BIZ_ATTACHMENTS BA
ON MD.BIZ_KAKAO_JSON_FILE = BA.MSG_KEY
AND MGD.USER_ID = MD.USER_ID
WHERE
MGD.USER_ID = #userId#

View File

@ -28,7 +28,7 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<title>알림톡전송리스트(상세)</title>
<title>톡전송리스트(상세)</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javaScript" language="javascript">
@ -155,8 +155,8 @@ function fnSelectMber(mberId) {
<div class="contWrap">
<div class="pageTitle">
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
<h2 class="titType1 c_222222 fwBold">알림톡전송리스트(상세)</h2>
<p class="tType6 c_999999">알림톡전송리스트 현황을 파악할 수 있습니다.</p>
<h2 class="titType1 c_222222 fwBold">톡전송리스트(상세)</h2>
<p class="tType6 c_999999">톡전송리스트 현황을 파악할 수 있습니다.</p>
</div>
<div class="pageCont">
<div class="listSerch">

View File

@ -29,7 +29,7 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<title>알림톡 전송내역 상세</title>
<title>톡 전송내역 상세</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javaScript" language="javascript">
@ -295,14 +295,23 @@ function fnSelectMber(mberId) {
function fnTemplateDetail(templateCode){
var form = document.templateForm;
form.templateCode.value = templateCode;
window.open("about:blank", 'popupTemplateDetail', 'width=1240, height=1080, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
form.action = "<c:url value='/uss/ion/kakaoat/KakaoATChannelIDTemplateDetailPopupAjax.do'/>";
form.target = "popupTemplateDetail";
form.submit();
if(templateCode != ''){ //알림톡 상세보기
var form = document.templateForm;
form.templateCode.value = templateCode;
window.open("about:blank", 'popupTemplateDetail', 'width=1240, height=1080, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
form.action = "<c:url value='/uss/ion/kakaoat/KakaoATChannelIDTemplateDetailPopupAjax.do'/>";
form.target = "popupTemplateDetail";
form.submit();
}else{ //친구톡 상세보기
var form = document.fTTemplateForm;
window.open("about:blank", 'popupTemplateDetail', 'width=450, height=900, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
form.action = "<c:url value='/uss/ion/kakaoft/KakaoFTTemplateDetailPopupAjax.do'/>";
form.target = "popupTemplateDetail";
form.submit();
}
}
@ -326,8 +335,8 @@ function fnTemplateDetail(templateCode){
<div class="contWrap">
<div class="pageTitle">
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
<h2 class="titType1 c_222222 fwBold">알림톡 전송내역 상세</h2>
<p class="tType6 c_999999">전송한 알림톡을 상세 조회 할 수 있습니다.</p>
<h2 class="titType1 c_222222 fwBold">톡 전송내역 상세</h2>
<p class="tType6 c_999999">카톡 전송내역을 상세 조회 할 수 있습니다.</p>
</div>
<div class="pageCont">
<table class="tbType2">
@ -358,17 +367,15 @@ function fnTemplateDetail(templateCode){
<c:out value="${mjonKakaoATDetailVO.yellowId}"/>
</td>
</tr>
<c:if test="${not empty mjonKakaoATDetailVO.msgNoticetalkTmpKey}">
<!-- 알림톡 템플릿 상세 팝업 호출 -->
<tr>
<th><span class="reqArea">템플릿명</span></th>
<td colspan="3">
<div class="btnWrap">
<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnTemplateDetail('<c:out value="${mjonKakaoATDetailVO.msgNoticetalkTmpKey}"/>'); return false;" value="템플릿 상세보기">
</div>
</td>
</tr>
</c:if>
<!-- 알림톡,친구톡 템플릿 상세 팝업 호출 -->
<tr>
<th><span class="reqArea">템플릿명</span></th>
<td colspan="3">
<div class="btnWrap">
<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnTemplateDetail('<c:out value="${mjonKakaoATDetailVO.msgNoticetalkTmpKey}"/>'); return false;" value="템플릿 상세보기">
</div>
</td>
</tr>
<%-- <tr>
<th><span class="reqArea">발신번호</span></th>
<td colspan="3">
@ -582,6 +589,12 @@ function fnTemplateDetail(templateCode){
<input type="hidden" id="templateCode" name="templateCode" value="">
<input type="hidden" id="userId" name="userId" value="<c:out value="${mjonKakaoATDetailVO.userId}"/>">
</form>
<form id="fTTemplateForm" name="fTTemplateForm" method="post">
<input type="hidden" id="msgGroupId" name="msgGroupId" value="<c:out value="${mjonKakaoATDetailVO.msgGroupId}"/>">
<input type="hidden" id="userId" name="userId" value="<c:out value="${mjonKakaoATDetailVO.userId}"/>">
<input type="hidden" name="senderKey" value="<c:out value="${mjonKakaoATDetailVO.msgNoticetalkSenderKey }"/>">
<input type="hidden" name="yellowId" value="<c:out value="${mjonKakaoATDetailVO.yellowId }"/>">
</form>
</body>
</html>

View File

@ -0,0 +1,501 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title> 친구톡 템플릿 상세보기</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/publish/css/reset.css">
<link rel="stylesheet" href="/publish/css/jquery.mCustomScrollbar.css">
<link rel="stylesheet" href="/publish/css/common.css">
<link rel="stylesheet" href="/publish/css/button.css">
<link rel="stylesheet" href="/publish/css/content.css">
<link rel="stylesheet" href="/publish/css/adrbook.css">
<link rel="stylesheet" href="/publish/css/font.css">
<link rel="stylesheet" href="/publish/css/popupLayer.css">
<link rel="stylesheet" href="/publish/js/datepicker/classic.css">
<link rel="stylesheet" href="/publish/js/datepicker/classic.date.css">
<script src="/publish/js/jquery-3.5.0.js"></script>
<script src="/publish/js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="/publish/js/common.js"></script>
<script src="/publish/js/content.js"></script>
<script src="/publish/js/popupLayer.js"></script>
<script type="text/javascript" src="/publish/js/datepicker/picker.js"></script>
<script type="text/javascript" src="/publish/js/datepicker/picker.date.js"></script>
<script type="text/javascript" src="/publish/js/datepicker/ko_KR.js"></script>
<script src="/js/MJUtill.js"></script>
<script src="/js/kakao/templateComm.js"></script>
<script type="text/javascript">
</script>
</head>
<body>
<div id="container" class="adminCont sub">
<!-- content 영역 -->
<div class="inner">
<!-- send top -->
<div class="send_top">
<!-- 카카오톡 설정 - 알림톡 템플릿 등록/관리 - 내템플릿 -->
<div class="top_content kakaotalkset_cont current pay_tab_wrap">
<div class="heading">
<h2>카카오 친구톡 상세보기</h2>
</div>
<div class="list_tab_wrap2 type2 ">
</div>
<div class="send_general friend_talk_wrap kakao_wrap">
<%-- <div class="send_left">
<!-- <p class="tType1_title">알림톡 템플릿 수정</p> -->
<table class="tType1">
<colgroup>
<col style="width: 190px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>채널ID</th>
<td>
<select class="select_gray_type" name="selectAgentCode" id="selectAgentCode" onchange="javascript:fnAgentCodeChg();">
<option value="">채널ID 선택</option>
<c:forEach var="kakaoProfileInfo" items="${kakaoProfileList}" varStatus="status">
<option value="${kakaoProfileInfo.senderKey}" <c:if test="${senderKey eq kakaoProfileInfo.senderKey}">selected</c:if> ><c:out value='${kakaoProfileInfo.yellowId}'/></option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<th>템플릿명</th>
<td>
<input type="text" class="template_name" id="inputTemplateName" name="inputTemplateName" value="<c:out value='${resultTemplateVO.templateName}'/>" placeholder="템플릿 명을 입력해주세요" maxlength="100">
<p class="template_name_cf">최대 50자, 템플릿 관리용</p>
</td>
</tr>
<tr>
<th>이미지 첨부</th>
<td class="img_file_add_td">
<div class="img_sort_wrap">
<input type="radio" name="img_file_add" id="img_file_0" value="" <c:if test="${resultTemplateVO.imageType eq ''}">checked</c:if> ><label for="img_file_0">첨부 안함</label>
<input type="radio" name="img_file_add" id="img_file_1" value="I" <c:if test="${resultTemplateVO.imageType eq 'I'}">checked</c:if> ><label for="img_file_1">이미지 첨부</label>
<input type="radio" name="img_file_add" id="img_file_2" value="W" <c:if test="${resultTemplateVO.imageType eq 'W'}">checked</c:if>><label for="img_file_2">와이드 이미지 첨부</label>
<div class="img_add_info_wrap basic_img_add_wrap">
<p class="info_title_text"><span class="c_e40000">*</span> 이미지 첨부 안내</p>
<ul class="info_text">
<li>- 권장사이즈 : 720px * 720px</li>
<li>- 제한사이즈 : 가로 500px 미만, 가로:세로 비율이 2:1 미만 또는 3:4 초과시 업로드 불가</li>
<li>- 파일형식 : jpg, png (최대 500kb)</li>
<li>- 이미지 첨부시 메시지 내용은 최대 400자까지 입력할 수 있습니다.</li>
</ul>
</div>
<div class="img_add_info_wrap wide_img_add_wrap">
<p class="info_title_text"><span class="c_e40000">*</span> 와이드 이미지 첨부 안내</p>
<ul class="info_text">
<li>- 권장사이즈 : 800px * 600px</li>
<!-- <li>- 제한사이즈 : 가로 500px 미만, 가로:세로 비율이 2:1 미만 또는 3:4 초과시 업로드 불가</li> -->
<li>- 파일형식 : jpg, png (최대 2mb)</li>
<li>- 와이드 이미지 첨부시 메시지 내용은 최대 76자, 버튼 1개까지 입력할 수 있습니다.</li>
</ul>
</div>
</div>
<div class="img_file_add_wrap">
<ul class="img_file_info_wrap">
<li>
<p>이미지 제목</p>
<input type="text" id="imgTitle" name="imgTitle" value="<c:out value='${resultTemplateVO.imgTitle}'/>" class="img_url" maxLength="50">
</li>
<li>
<p>이미지 클릭시 이동할 URL</p>
<input type="text" id="imgLink" name="imgLink" value="<c:out value='${resultTemplateVO.imgLink}'/>" placeholder="http://" class="img_url" maxLength="1000">
</li>
<li>
<p class="file_name" id="imgNm" name="imgNm">첨부파일 이미지</p>
<input type="file" id="imgFile" accept=".jpg, .jpeg, .png" onchange="imgResizeInfo(event); return false;" style="display:none"/>
<!-- <button type="button" class="btn_del btnImgDel" onclick="buttonTypeDel(this);">
<img src="/publish/images/btn_delete.png" id="imgDel" alt="이미지 삭제" onclick="fnImageDel();">
</button> -->
</li>
</ul>
<!-- <button type="button" class="btnType btnType8 btn_img_upload" title="이미지 불러오기" onclick="javascript:upImgClick(); return false;">이미지 불러오기</button> -->
</div>
</td>
</tr>
<tr>
<th>광고포함 여부</th>
<td>
<input type="radio" class="inputAdFlag" name="ad_flag" id="ad_Y" value="Y" <c:if test="${resultTemplateVO.adFlag eq 'Y'}">checked</c:if> ><label for="ad_Y">광고성 정보 포함</label>
<input type="radio" class="inputAdFlag" name="ad_flag" id="ad_N" value="N" <c:if test="${resultTemplateVO.adFlag eq 'N'}">checked</c:if> ><label for="ad_N">포함 안함</label>
</td>
</tr>
<tr>
<th>내용</th>
<td class="kakao_template_text">
<div class="put_left short">
<!-- <input type="text" class="template_name"> -->
<div class="put_text_wrap">
<div class="ad_txt">
<p><span id="adFlagFront">(광고)</span> <span id="yellowIdCon" >채널ID</span></p>
</div>
<label for="inputTemplateContent" class="label"></label>
<textarea id="inputTemplateContent" name="inputTemplateContent" class="put_text" placeholder="내용을 입력해주세요."><c:out value="${resultTemplateVO.templateContent}"/></textarea>
<div class="text_length">
<div>
<p class="adFlagAfter">수신거부 : 홈 > 채널차단</p>
</div>
<div>
<p><span class="fwMd nowChar">0 /</span><span class="c_002c9a fwMd totChar">1000</span>자</p>
</div>
</div>
</div>
</div>
<div class="put_right">
<div class="btn_popup_wrap">
<button type="button" class="btnType btnType7"
onclick="miniPopup(this)">특수문자</button>
<div class="send_miniPop spc_character">
<div class="tab_character">
<a href="#none" class="on">특수문자</a>
<a href="#none">웃음</a>
<a href="#none">슬픔</a>
<a href="#none">분노</a>
<a href="#none">사랑</a>
<a href="#none">그외</a>
</div>
<!-- 특수문자 -->
<div class="cnt_character on">
<div class="box_character">
<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
<c:if test="${symbolList.symbolType == 'D'}">
<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}"><c:out value="${symbolList.symbol}"/></a>
</c:if>
</c:forEach>
</div>
</div>
<!-- //특수문자 -->
<!-- 웃음 -->
<div class="cnt_character emt_character">
<div class="box_character">
<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
<c:if test="${symbolList.symbolType == 'S'}">
<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
</c:if>
</c:forEach>
</div>
</div>
<!-- //웃음 -->
<!-- 슬픔 -->
<div class="cnt_character emt_character">
<div class="box_character">
<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
<c:if test="${symbolList.symbolType == 'C'}">
<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
</c:if>
</c:forEach>
</div>
</div>
<!-- //슬픔 -->
<!-- 분노 -->
<div class="cnt_character emt_character">
<div class="box_character">
<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
<c:if test="${symbolList.symbolType == 'A'}">
<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
</c:if>
</c:forEach>
</div>
</div>
<!-- //분노 -->
<!-- 사랑 -->
<div class="cnt_character emt_character">
<div class="box_character">
<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
<c:if test="${symbolList.symbolType == 'L'}">
<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
</c:if>
</c:forEach>
</div>
</div>
<!-- //사랑 -->
<!-- 그외 -->
<div class="cnt_character emt_character emt_etc ">
<div class="box_character">
<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
<c:if test="${symbolList.symbolType == 'E'}">
<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
</c:if>
</c:forEach>
</div>
</div>
<!-- //그외 -->
<button type="button" class="btn_close"
onclick="miniPopup(this)">닫기</button>
</div>
</div>
<div class="btn_popup_wrap convers_wrap">
<button type="button" class="btnType btnType7"
onclick="miniPopup(this)">특정문구 일괄변환<i
class="qmMark"></i></button>
<div class="send_miniPop convers">
<div>
<div class="convers_top">
<span>특정문구 일괄변환이란?</span>
<p>주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의 메시지를 발송하는 기능</p>
</div>
<div class="convers_middle">
<a href="javascript:void(0)" class="changeWord" value="\#{이름}"><c:out value="\#{이름}"/></a>
</div>
<div class="convers_bottom">
<a href="javascript:void(0)" class="changeWord" value="\#{1}"><c:out value="\#{1}"/></a>
<a href="javascript:void(0)" class="changeWord" value="\#{2}"><c:out value="\#{2}"/></a>
<a href="javascript:void(0)" class="changeWord" value="\#{3}"><c:out value="\#{3}"/></a>
<a href="javascript:void(0)" class="changeWord" value="\#{4}"><c:out value="\#{4}"/></a>
</div>
</div>
<button type="button" class="btn_close"
onclick="miniPopup(this)">닫기</button>
</div>
</div>
<div class="btn_popup_wrap spc_wrap">
<button type="button" class="btnType btnType7"
onclick="miniPopup(this)">이모티콘</button>
<div class="send_miniPop spc_character kakao_emoticon">
<%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %>
<button type="button" class="btn_close" onclick="miniPopup(this)">닫기</button>
</div>
</div>
<div class="btn_popup_wrap template_call_wrap">
<!-- <button type="button" class="btnType btnType8">템플릿 불러오기</button> -->
</div>
<div class="send_btnWrap">
<!-- <button type="button" class="btnType btn_text_save">내용 저장하기</button> -->
<!-- <button type="button" class="btnType btnType9" onclick="javascript:fnContentsReset();">초기화</button> -->
</div>
</div>
</td>
</tr>
<tr>
<th>버튼</th>
<td class="template_button">
<select name="" id="" class="select_gray_type template_button_select">
<option value="button_type_0">버튼타입 선택</option>
<option value="button_type_1">배송조회</option>
<option value="button_type_2">웹링크</option>
<option value="button_type_3">앱링크</option>
<option value="button_type_5">메시지전달</option>
<option value="button_type_4">봇키워드</option>
<option value="button_type_6">상담톡전환</option>
<option value="button_type_7">챗봇전환</option>
</select>
<button type="button" class="btnType btnType6" onclick="friendTemplateButtonAdd();">추가</button>
<div class="button_add_wrap">
<c:forEach var="buttonList" items="${resultTemplateVO.buttonVOList}" varStatus="status">
<c:if test="${buttonList.linkType eq 'DS'}">
<!-- 배송조회 버튼 -->
<dl class="button_type_wrap type1">
<dt>배송조회</dt>
<dd class="button_type_input">
<input type="hidden" id="buttonLikeTypeDeliv" name="buttonVOList[${status.index}].linkType" value="DS"/>
<input type="text" id="btnNmDeliv" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
<p class="cf_text">*이용가능 택배사 : KG로지스, 우체국택배,일양로지스, GTX로지스, FedEx, 경동택배, 합동택배, 롯데택배</p>
</dd>
<dd>
<button type="button" class="btn_del" onclick="buttonTypeDel(this);"><img src="/publish/images/btn_delete.png" alt=""></button>
</dd>
</dl>
</c:if>
<c:if test="${buttonList.linkType eq 'WL'}">
<!-- 웹링크 버튼 -->
<dl class="button_type_wrap type2">
<dt>웹링크</dt>
<dd class="button_type_input">
<ul>
<li>
<input type="hidden" id="buttonLikeTypeWeb" name="buttonVOList[${status.index}].linkType" value="WL"/>
<input type="text" id="btnNmWeb" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
</li>
<li>
<input type="text" id="buttonLinkMo" name="buttonVOList[${status.index}].linkMo" value="<c:out value='${buttonList.linkMo}'/>" placeholder="모바일 링크 입력">
</li>
<li>
<input type="text" id="buttonLinkPc" name="buttonVOList[${status.index}].linkPc" value="<c:out value='${buttonList.linkPc}'/>" placeholder="PC 링크 입력">
</li>
</ul>
</dd>
<dd>
<!-- <button type="button" class="btn_del" onclick="buttonTypeDel(this);"><img src="/publish/images/btn_delete.png" alt=""></button> -->
</dd>
</dl>
</c:if>
<c:if test="${buttonList.linkType eq 'AL'}">
<!-- 앱링크 버튼 -->
<dl class="button_type_wrap type3">
<dt>앱링크</dt>
<dd class="button_type_input">
<ul>
<li>
<input type="hidden" id="buttonLikeTypeApp" name="buttonVOList[${status.index}].linkType" value="AL"/>
<input type="text" id="btnNmApp" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
</li>
<li>
<input type="text" id="buttonLinkAnd" name="buttonVOList[${status.index}].linkAnd" value="<c:out value='${buttonList.linkAnd}'/>" placeholder="Android 링크 입력">
</li>
<li>
<input type="text" id="buttonLinkIos" name="buttonVOList[${status.index}].linkIos" value="<c:out value='${buttonList.linkIos}'/>" placeholder="IOS 링크 입력">
</li>
</ul>
</dd>
<dd>
<!-- <button type="button" class="btn_del" onclick="buttonTypeDel(this);"><img src="/publish/images/btn_delete.png" alt=""></button> -->
</dd>
</dl>
</c:if>
<c:if test="${buttonList.linkType eq 'BK'}">
<!-- 봇키워드 -->
<dl class="button_type_wrap type4">
<dt>봇키워드</dt>
<dd class="button_type_input">
<input type="hidden" id="buttonLikeTypeBot" name="buttonVOList[${status.index}].linkType" value="BK"/>
<input type="text" id="btnNmBot" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
</dd>
<dd>
<!-- <button type="button" class="btn_del" onclick="buttonTypeDel(this);">
<img src="/publish/images/btn_delete.png" alt="">
</button> -->
</dd>
</dl>
</c:if>
<c:if test="${buttonList.linkType eq 'MD'}">
<!-- 메시지 전달 -->
<dl class="button_type_wrap type5">
<dt>메시지전달</dt>
<dd class="button_type_input">
<input type="hidden" id="buttonLikeTypeMsg" name="buttonVOList[${status.index}].linkType" value="MD" />
<input type="text" id="btnNmMsg" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
</dd>
<dd>
<!-- <button type="button" class="btn_del" onclick="buttonTypeDel(this);">
<img src="/publish/images/btn_delete.png" alt="">
</button> -->
</dd>
</dl>
</c:if>
<c:if test="${buttonList.linkType eq 'BC'}">
<!-- 상담톡 전환 -->
<dl class="button_type_wrap type6">
<dt>상담톡전환</dt>
<dd class="button_type_input">
<input type="hidden" id="buttonLikeTypeCons" name="buttonVOList[${status.index}].linkType" value="BC" />
<input type="text" id="btnNmCons" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
</dd>
<dd>
<!-- <button type="button" class="btn_del" onclick="buttonTypeDel(this);">
<img src="/publish/images/btn_delete.png" alt="">
</button> -->
</dd>
</dl>
</c:if>
<c:if test="${buttonList.linkType eq 'BT'}">
<!-- 챗봇전환 -->
<dl class="button_type_wrap type7">
<dt>챗봇전환</dt>
<dd class="button_type_input">
<input type="hidden" id="buttonLikeTypeBotChg" name="buttonVOList[${status.index}].linkType" value="BT" />
<input type="text" id="btnNmBotChg" name="buttonVOList[${status.index}].name" value="" placeholder="버튼명 입력(최대 14자)">
</dd>
<dd>
<!-- <button type="button" class="btn_del" onclick="buttonTypeDel(this);">
<img src="/publish/images/btn_delete.png" alt="">
</button> -->
</dd>
</dl>
</c:if>
</c:forEach>
</div>
</td>
</tr>
</tbody>
</table>
</div> --%>
<div class="send_right">
<div class="phone">
<div class="phoneIn">
<p class="prev_p"><img src="/publish/images/content/kakao_prev_icon.png" alt="">
<span id="spnYellowid"><c:out value="${searchVO.yellowId}"/></span>
</p>
<!-- 텍스트 미리보기 -->
<div class="text_preview">
<p class="friend_talk_title">
<c:if test="${resultMsgDetail.adFlag eq 'Y'}">
<span class="adFlag">(광고)</span>
</c:if>
<div class="allimtalk_content">
<c:choose>
<c:when test="${kakaoTemplateInfo.templateEmphasizeType eq 'TEXT'}">
<p class="emphasis_side_text"><c:out value="${kakaoTemplateInfo.templateSubtitle}"/></p>
<p class="emphasis_title_text"><c:out value="${kakaoTemplateInfo.templateTitle}"/></p>
</c:when>
<c:when test="${kakaoTemplateInfo.templateEmphasizeType eq 'IMAGE'}">
<div class="kakao_image">
<c:if test="${not empty kakaoTemplateInfo.templateImageLink}">
<a href="<c:url value='${kakaoTemplateInfo.templateImageLink}'/>" target="_blank">
<img src="<c:url value='${kakaoTemplateInfo.templateImageUrl}'/>" alt="">
</a>
</c:if>
<c:if test="${empty kakaoTemplateInfo.templateImageLink}">
<img src="<c:url value='${kakaoTemplateInfo.templateImageUrl}'/>" alt="">
</c:if>
</div>
</c:when>
</c:choose>
<p class="template_text"><c:out value="${fn:replace(fn:replace(kakaoTemplateInfo.templateContent, newLineChar, '<br/>'), newLineChar2, '<br/>')}" escapeXml="false"/></p>
<div class="btnViewArea">
<c:forEach var="buttonList" items="${kakaoTemplateInfo.buttonList}" varStatus="status">
<c:if test="${not empty buttonList.link}">
<a href="<c:url value='${buttonList.link}'/>" target="_blank">
<button type="button" class="btn_kakao_type" style="display:block;"><c:out value="${buttonList.name}"/></button>
</a>
</c:if>
<c:if test="${empty buttonList.link}">
<button type="button" class="btn_kakao_type" style="display:block;"><c:out value="${buttonList.name}"/></button>
</c:if>
</c:forEach>
</div>
</div>
<c:if test="${resultMsgDetail.adFlag eq 'Y'}">
<p class="kakao_block_text">수신거부 : 홈 > 채널차단</p>
</c:if>
</div>
<!-- //텍스트 미리보기 -->
</div>
<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다<p>
</div>
</div>
</div>
</div>
</div>
</div>
<!--// send top -->
</div>
</body>
</html>