이지우 - 이노릭스 업로드 작업 중

This commit is contained in:
JIWOO 2024-11-01 10:22:46 +09:00
parent e840b9a7db
commit 32d19a0011
12 changed files with 1855 additions and 63 deletions

View File

@ -160,4 +160,22 @@ public class CaseBoardController {
return "/_common/jsp/message";
}
//게시글 등록 innorix 적용
@RequestMapping(value="/board/{boardIdx}/writeWithInnorix.do", method=RequestMethod.POST)
public String formWriteWithInnorix(HttpServletRequest request ,HttpSession session, @RequestParam Map<String,Object> paramMap, Map<String, Object> map, @PathVariable(value="boardIdx") String boardIdx){
paramMap.put("memberName", session.getAttribute("memberName"));
paramMap.put("memberId", session.getAttribute("memberId"));
paramMap.put("boardIdx", boardIdx);
service.boardInsert(paramMap);
//현제 등록된 게시글의 시퀀스 불러와 맵에 저장
paramMap.put("dataIdx", paramMap.get("seq"));
/*fileService.fileInsert(paramMap, request, session);*/
map.put("message", "common.message.reg");
map.put("url", "/gtm/case/board/"+boardIdx+"/list.do");
return "/_common/jsp/message";
}
}

View File

@ -0,0 +1,360 @@
package seed.common.service;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import kcc.com.cmm.ComDefaultVO;
/**
*
* @author : 이호영
* @fileName : InnorixVO.java
* @date : 2022.11.01
* @description : 대용량 파일 등록 솔루션 VO
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2022.11.01 이호영 최초 생성
*
*
*
*/
public class AdrInnorixFileVO extends ComDefaultVO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 4400281789694196418L;
// 사용자 ID
public String uniqId = "";
// 파일 구분을 위한 타입
public String fileType = "";
// 파일 등록 리턴 메세지 jsp에서 넘겨줌
public String successMsg = "";
public String eduAplctOrd = "";
public String eduChasiOrd = "";
public String prcsAplctPrdOrd = ""; //기반강화 강의계획서용
// 컨트롤 엘리먼트 ID - 멀티 업로드 jsp에서 사용하는 el
public String controlId = "";
// 승인코드 - 저작권 체험교실 결과보고서 임시저장 구분용으로 추가
public String aprvlCd = "";
// 파일 ID
public String atchFileId = "";
// private String frstRegistPnttm; //등록일시
// private String frstRegisterId; //등록자
// private String lastUpdtPnttm; //수정일시
// private String lastUpdusrId; //수정자
public List<InnorixFileVO> innorixFileListVO = new ArrayList<InnorixFileVO>();
// 전체 교육인원 - 저작권 체험교실 결과보고서 항목
public String trgtPrsnlReal = "";
//서류요청 기능
public String docReqNm = ""; //요청 서류명
public String sbmtId = ""; //제출 강사 ID
public String eduDocReqOrd = "";//서류요청 순번
public String cnclCn = "";//기소유예 취소사유
public String instrDetailOrd = "";//강사 고유PK
public String lctrSbjct; //강의주제
public String lctrPlace; //강의장소
public String lctrTrgt; //교육대상
public String nos; //인원
public String instrNm; //강사명(소속)
public String lctrDay;
public String lctrStrtH;
public String lctrStrtM;
public String lctrEndH;
public String lctrEndM;
public String lctrDivCd;
//강의활동확인서 컬럼 추가
private String sex = ""; //성별
private String purpose = ""; //용도
private String bsnsNmbr = ""; //사업자등록번호
private String bsnsNm = ""; //사업자명
private String docuNmbr = ""; //문서번호
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public String getSuccessMsg() {
return successMsg;
}
public void setSuccessMsg(String successMsg) {
this.successMsg = successMsg;
}
public List<InnorixFileVO> getInnorixFileListVO() {
return innorixFileListVO;
}
public void setInnorixFileListVO(List<InnorixFileVO> innorixFileListVO) {
this.innorixFileListVO = innorixFileListVO;
}
public String getUniqId() {
return uniqId;
}
public void setUniqId(String uniqId) {
this.uniqId = uniqId;
}
public String getEduAplctOrd() {
return eduAplctOrd;
}
public void setEduAplctOrd(String eduAplctOrd) {
this.eduAplctOrd = eduAplctOrd;
}
public String getControlId() {
return controlId;
}
public void setControlId(String controlId) {
this.controlId = controlId;
}
public String getAprvlCd() {
return aprvlCd;
}
public void setAprvlCd(String aprvlCd) {
this.aprvlCd = aprvlCd;
}
public String getAtchFileId() {
return atchFileId;
}
public void setAtchFileId(String atchFileId) {
this.atchFileId = atchFileId;
}
public String getTrgtPrsnlReal() {
return trgtPrsnlReal;
}
public void setTrgtPrsnlReal(String trgtPrsnlReal) {
this.trgtPrsnlReal = trgtPrsnlReal;
}
public String getPrcsAplctPrdOrd() {
return prcsAplctPrdOrd;
}
public void setPrcsAplctPrdOrd(String prcsAplctPrdOrd) {
this.prcsAplctPrdOrd = prcsAplctPrdOrd;
}
public String getDocReqNm() {
return docReqNm;
}
public void setDocReqNm(String docReqNm) {
this.docReqNm = docReqNm;
}
public String getSbmtId() {
return sbmtId;
}
public void setSbmtId(String sbmtId) {
this.sbmtId = sbmtId;
}
public String getEduDocReqOrd() {
return eduDocReqOrd;
}
public void setEduDocReqOrd(String eduDocReqOrd) {
this.eduDocReqOrd = eduDocReqOrd;
}
public String getCnclCn() {
return cnclCn;
}
public void setCnclCn(String cnclCn) {
this.cnclCn = cnclCn;
}
public String getInstrDetailOrd() {
return instrDetailOrd;
}
public void setInstrDetailOrd(String instrDetailOrd) {
this.instrDetailOrd = instrDetailOrd;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPurpose() {
return purpose;
}
public void setPurpose(String purpose) {
this.purpose = purpose;
}
public String getBsnsNm() {
return bsnsNm;
}
public void setBsnsNm(String bsnsNm) {
this.bsnsNm = bsnsNm;
}
public String getBsnsNmbr() {
return bsnsNmbr;
}
public void setBsnsNmbr(String bsnsNmbr) {
this.bsnsNmbr = bsnsNmbr;
}
public String getDocuNmbr() {
return docuNmbr;
}
public void setDocuNmbr(String docuNmbr) {
this.docuNmbr = docuNmbr;
}
public String getLctrSbjct() {
return lctrSbjct;
}
public void setLctrSbjct(String lctrSbjct) {
this.lctrSbjct = lctrSbjct;
}
public String getLctrPlace() {
return lctrPlace;
}
public void setLctrPlace(String lctrPlace) {
this.lctrPlace = lctrPlace;
}
public String getLctrTrgt() {
return lctrTrgt;
}
public void setLctrTrgt(String lctrTrgt) {
this.lctrTrgt = lctrTrgt;
}
public String getNos() {
return nos;
}
public void setNos(String nos) {
this.nos = nos;
}
public String getInstrNm() {
return instrNm;
}
public void setInstrNm(String instrNm) {
this.instrNm = instrNm;
}
public String getLctrDay() {
return lctrDay;
}
public void setLctrDay(String lctrDay) {
this.lctrDay = lctrDay;
}
public String getLctrStrtH() {
return lctrStrtH;
}
public void setLctrStrtH(String lctrStrtH) {
this.lctrStrtH = lctrStrtH;
}
public String getLctrStrtM() {
return lctrStrtM;
}
public void setLctrStrtM(String lctrStrtM) {
this.lctrStrtM = lctrStrtM;
}
public String getLctrEndH() {
return lctrEndH;
}
public void setLctrEndH(String lctrEndH) {
this.lctrEndH = lctrEndH;
}
public String getLctrEndM() {
return lctrEndM;
}
public void setLctrEndM(String lctrEndM) {
this.lctrEndM = lctrEndM;
}
public String getEduChasiOrd() {
return eduChasiOrd;
}
public void setEduChasiOrd(String eduChasiOrd) {
this.eduChasiOrd = eduChasiOrd;
}
public String getLctrDivCd() {
return lctrDivCd;
}
public void setLctrDivCd(String lctrDivCd) {
this.lctrDivCd = lctrDivCd;
}
}

View File

@ -0,0 +1,180 @@
package seed.common.service;
import java.io.Serializable;
import java.util.List;
import kcc.com.cmm.ComDefaultVO;
/**
*
* @author : 이호영
* @fileName : InnorixVO.java
* @date : 2022.11.01
* @description : 대용량 파일 등록 솔루션 VO
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2022.11.01 이호영 최초 생성
*
*
*
*/
public class InnorixFileVO extends ComDefaultVO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 5641887401063483713L;
public String rowID = "";
public String controlId = "";
public String uploadUrl = "";
public String clientFilePath = "";
public String clientFileName = "";
public String rootName = "";
public String fileState = "";
public Integer fileSize = 0;
public String serverFilePath = "";
public String serverFileName = "";
public Boolean isFolder = null;
public Boolean firstTransferCompleted = null;
public Integer totalTransferTime = 0;
public Integer transferTime = 0;
private String frstRegistPnttm;
private String frstRegisterId;
private String lastUpdtPnttm;
private String lastUpdusrId;
public String getRowID() {
return rowID;
}
public void setRowID(String rowID) {
this.rowID = rowID;
}
public String getControlId() {
return controlId;
}
public void setControlId(String controlId) {
this.controlId = controlId;
}
public String getUploadUrl() {
return uploadUrl;
}
public void setUploadUrl(String uploadUrl) {
this.uploadUrl = uploadUrl;
}
public String getClientFilePath() {
return clientFilePath;
}
public void setClientFilePath(String clientFilePath) {
this.clientFilePath = clientFilePath;
}
public String getClientFileName() {
return clientFileName;
}
public void setClientFileName(String clientFileName) {
this.clientFileName = clientFileName;
}
public String getRootName() {
return rootName;
}
public void setRootName(String rootName) {
this.rootName = rootName;
}
public String getFileState() {
return fileState;
}
public void setFileState(String fileState) {
this.fileState = fileState;
}
public Integer getFileSize() {
return fileSize;
}
public void setFileSize(Integer fileSize) {
this.fileSize = fileSize;
}
public String getServerFilePath() {
return serverFilePath;
}
public void setServerFilePath(String serverFilePath) {
this.serverFilePath = serverFilePath;
}
public String getServerFileName() {
return serverFileName;
}
public void setServerFileName(String serverFileName) {
this.serverFileName = serverFileName;
}
public Boolean getIsFolder() {
return isFolder;
}
public void setIsFolder(Boolean isFolder) {
this.isFolder = isFolder;
}
public Boolean getFirstTransferCompleted() {
return firstTransferCompleted;
}
public void setFirstTransferCompleted(Boolean firstTransferCompleted) {
this.firstTransferCompleted = firstTransferCompleted;
}
public Integer getTotalTransferTime() {
return totalTransferTime;
}
public void setTotalTransferTime(Integer totalTransferTime) {
this.totalTransferTime = totalTransferTime;
}
public Integer getTransferTime() {
return transferTime;
}
public void setTransferTime(Integer transferTime) {
this.transferTime = transferTime;
}
public String getFrstRegistPnttm() {
return frstRegistPnttm;
}
public void setFrstRegistPnttm(String frstRegistPnttm) {
this.frstRegistPnttm = frstRegistPnttm;
}
public String getFrstRegisterId() {
return frstRegisterId;
}
public void setFrstRegisterId(String frstRegisterId) {
this.frstRegisterId = frstRegisterId;
}
public String getLastUpdtPnttm() {
return lastUpdtPnttm;
}
public void setLastUpdtPnttm(String lastUpdtPnttm) {
this.lastUpdtPnttm = lastUpdtPnttm;
}
public String getLastUpdusrId() {
return lastUpdusrId;
}
public void setLastUpdusrId(String lastUpdusrId) {
this.lastUpdusrId = lastUpdusrId;
}
}

View File

@ -0,0 +1,74 @@
package seed.common.web;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import seed.utils.SeedUtils;
/**
*
* @author : 이호영
* @fileName : InnorixFileController.java
* @date : 2022.11.01
* @description : innorix 대용량 파일 업로드 솔루션
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2022.11.01 이호영 최초 생성
*
*
*
*/
@Controller
public class InnorixFileController {
//임시 파일 저장 경로
@Value("#{globalSettings['file.temp.path']}")
private String globalTempPath;
//파일 저장 경로
@Value("#{globalSettings['file.real.path']}")
private String globalRealPath;
//루트 경로
@Value("#{globalSettings['root.path']}")
private String globalRootPath;
@RequestMapping(value="/seed/innorix/getRealFileDirectoryAjax.do")
public ModelAndView getFileDirectoryAjax(@RequestParam Map<String,Object> paramMap, HttpSession session)throws Exception{
ModelAndView modelAndView = new ModelAndView();
try {
String siteIdx = SeedUtils.setReplaceNull(session.getAttribute("siteIdx"));
if(siteIdx.equals("")) siteIdx = "case";
//파일 사용하는 메뉴 구분
String fileFuncType = (String)paramMap.get("fileFuncType");
String rootPath = null;
if(fileFuncType.equals("trublchargermng")){
rootPath = globalRootPath;
}else{
rootPath = globalRealPath;
}
SeedUtils.setSeedMkDirs(rootPath + "/"+siteIdx+"/"+ fileFuncType);
modelAndView.setViewName("jsonView");
modelAndView.addObject("directory", rootPath + "/"+siteIdx+"/"+fileFuncType+"/");
modelAndView.addObject("result", "success");
}catch(Exception e) {
modelAndView.addObject("result", "fail");
}
return modelAndView;
}
}

View File

@ -0,0 +1,826 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
<%@ taglib uri='http://www.springframework.org/tags/form' prefix='form'%>
<%@ page import="seed.utils.SeedUtils"%>
<%@ include file="/WEB-INF/jsp/seed/_extra/dao/smsDao.jsp"%>
<%@ include file="/WEB-INF/jsp/seed/_extra/common/seedPaging.jsp"%>
<%
//호환성보기 방지하기
response.setHeader("X-UA-Compatible", "IE=Edge");
//세션 값
String memberIdx = SeedUtils.setReplaceNull(session.getAttribute("memberIdx"));
String memberName = SeedUtils.setReplaceNull(session.getAttribute("memberName"));
String memberGrant = SeedUtils.setReplaceNull(session.getAttribute("memberGrant"), "N");
//사이트 키, 사이트 메뉴 키, 페이지 타입(gtm,gte), 사이트담당자 권한체크("true","false"), 해당메뉴담당자 권한체크("true","false")
String siteIdx = SeedUtils.setReplaceNull((String)request.getAttribute("siteIdx"));
String siteMenuIdx = SeedUtils.setReplaceNull((Integer)request.getAttribute("siteMenuIdx"));
siteMenuIdx = siteMenuIdx == "" ? SeedUtils.setReplaceNull(request.getParameter("siteMenuIdx")) : siteMenuIdx;
String memberAuth = SeedUtils.setReplaceNull(request.getAttribute("memberAuth"), "false");
String memberAuthM = SeedUtils.setReplaceNull(request.getAttribute("memberAuthM"), "false");
String siteMenuManager = SeedUtils.setReplaceNull(request.getAttribute("siteMenuManager"), "N");
String sPage = SeedUtils.setReplaceNull(request.getParameter("spage"), "1");
String sRow = SeedUtils.setReplaceNull(request.getParameter("srow"), "10");
String autoType = SeedUtils.setReplaceNull(request.getParameter("autoType"), "0");
String caseNo = SeedUtils.setReplaceNull(request.getParameter("caseNo"), "0");
//페이지 URL
String pageLinkUrl = "/user/extra/"+siteIdx+"/sms/messageList/jsp/Page.do?siteMenuIdx="+siteMenuIdx;
int total = 0;
List<Map<String,Object>> messangeDataList = null;
List<Map<String,Object>> smsDataList = null;
Map<String,Object> smsDataListCnt = null;
Map<String,Object> smsAutoData = null;
List<Map<String,Object>> smsAutoPhoneList = null;
SeedSqlCon seedSqlCon = null;
SeedDbUtilsSupport seedDbUtilsSupport = new SeedDbUtilsSupport();
boolean success = false;
int phoneSize = 1;
try{
seedSqlCon = new SeedSqlCon("");
// 조사관 배정 SMS, 출석조사 SMS, 종료통지 SMS
if(!autoType.equals("0")) {
smsAutoData = getSmsAutoDataSet(seedSqlCon, autoType, caseNo);
// Object[] objData = {
// memberIdx, "LMS",
// smsAutoData.get("AUTO_SMS_TEXT").toString()
// };
//
// seedSqlCon.setAutoCommit(false);
// success = setMessageRegProc(seedSqlCon, objData);
// seedSqlCon.commit();
smsAutoPhoneList = getSmsAutoPhoneList(seedSqlCon, autoType, caseNo);
if(smsAutoPhoneList != null && smsAutoPhoneList.size() > 0) {
phoneSize = smsAutoPhoneList.size();
}
}
messangeDataList = getMessageDataList(seedSqlCon, memberIdx);
smsDataList = getSmsDataList(seedSqlCon, memberIdx, Integer.parseInt(sPage), Integer.parseInt(sRow));
smsDataListCnt = getSmsDataListCnt(seedSqlCon, memberIdx);
if(smsDataListCnt != null){
total = seedDbUtilsSupport.countDataToInt(smsDataListCnt.get("DATA_CNT"));
}
}catch(NumberFormatException e){
System.out.println("/WEB-INF/views/_extra/user/sms/smsList.jsp 파일에서 에러 발생 NumberFormatException "+e.getMessage());
}catch(IllegalArgumentException e){
System.out.println("/WEB-INF/views/_extra/user/sms/smsList.jsp 파일에서 에러 발생 IllegalArgumentException "+e.getMessage());
}catch(Exception e){
System.out.println("/WEB-INF/views/_extra/user/sms/smsList.jsp 파일에서 에러 발생 Exception "+e.getMessage());
}finally{
if(seedSqlCon != null){
seedSqlCon.setSeedSqlDispose();
}
}
%>
<!doctype html>
<html lang="ko">
<head>
<title>메시지</title>
<link rel="stylesheet" type="text/css" href="/site/case/css/default.css">
<link rel="stylesheet" type="text/css" href="/site/case/css/common.css">
<!-- js -->
<script src="/js/lib/jquery-1.9.1.min.js"></script>
<script src="/js/lib/jquery-migrate-1.2.1.min.js"></script>
<script src="/js/lib/jquery-ui.min.js"></script>
<script src="/js/lib/jquery.blockUI.js"></script>
<script src="/js/date.format.js"></script>
<script src="/js/jquery.slides.min.js"></script>
<script src="/js/owl.carousel.min.js"></script>
<script src="/js/jquery.mousewheel.min.js"></script>
<script src="/js/statistics.js"></script>
<script src="/js/captcha.js"></script>
<script src="/js/canvas.js"></script>
<script src="/js/jquery.PrintArea.js_4.js"></script>
<script src="/js/jquery.printElement.js"></script>
<script src="/js/lib/jquery.bxslider.min.js"></script>
<script src="/js/lib/picker.js"></script>
<script src="/js/lib/picker.date.js"></script>
<script src="/js/lib/legacy.js"></script>
<script src="/js/lib/slick.min.js"></script>
<script src="/js/seed.user.app.js"></script>
<!-- js -->
<!--meta name="msapplication-.." content="#FFFFFF"-->
<link rel="stylesheet" type="text/css" href="/site/case/css/default.css">
<link rel="stylesheet" type="text/css" href="/site/case/css/common.css">
<script type="text/javascript" src="/site/case/js/jquery.easing.min.js"></script>
<script type="text/javascript" src="/site/case/js/js.js"></script>
<script>
/* <![CDATA[ */
$(document).ready(function(){
<%
if(!autoType.equals("0")) {
smsAutoData.get("AUTO_SMS_TEXT").toString();
%>
setTimeout(function() {
messageSel("LMS", '<%= smsAutoData.get("AUTO_SMS_TEXT").toString() %>');
}, 100);
<%
}
%>
$("#clearBtn").click(function(){
if($("#type").val() == "SMS"){
$("#smsContents").val("");
$('#smsCount').text("0");
}else{
$("#lmsContents").val("");
$('#lmsCount').text("0");
}
});
$("#smsBtn").click(function(){
$("#type").val("SMS");
});
$("#lmsBtn").click(function(){
$("#type").val("LMS");
});
$("#frm").submit(function(){
if($("#command").val() == "send"){
if($("#smsContents").val() == "" && $("#type").val() == "SMS"){
alert("내용을 입력하세요.");
$("#smsContents").focus();
return false;
}
if($("#lmsContents").val() == "" && $("#type").val() == "LMS"){
alert("내용을 입력하세요.");
$("#lmsContents").focus();
return false;
}
if($("#phone").val() == ""){
alert("수신번호를 입력하세요.");
$("#phone").focus();
return false;
}
}
});
$("#frmMessage").submit(function(){
if($("#sms_type").val() == ""){
alert("내용을 입력하세요.");
$("#sms_type").focus();
return false;
}
});
$('#smsDiv').each(function () {
// count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
var $maxcount = $('#smsMaxcount', this);
var $count = $('#smsCount', this);
var $input = $("#smsContents");
// .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
var maximumByte = $maxcount.text() * 1;
// update 함수는 keyup, paste, input 이벤트에서 호출한다.
var update = function () {
var before = $count.text() * 1;
var str_len = $input.val().length;
var cbyte = 0;
var li_len = 0;
for (i = 0; i < str_len; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
if (cbyte <= maximumByte) {
li_len = i + 1;
}
}
// 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
if (parseInt(cbyte) > parseInt(maximumByte)) {
alert('허용된 글자수가 초과되었습니다.\r\n\n초과된 부분은 자동으로 삭제됩니다.');
var str = $input.val();
var str2 = $input.val().substr(0, li_len);
$input.val(str2);
var cbyte = 0;
for (i = 0; i < $input.val().length; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
}
}
$count.text(cbyte);
};
// input, keyup, paste 이벤트와 update 함수를 바인드한다
$input.bind('input keyup keydown paste change', function () {
setTimeout(update, 0)
});
update();
});
$('#lmsDiv').each(function () {
// count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
var $maxcount = $('#lmsMaxcount', this);
var $count = $('#lmsCount', this);
var $input = $("#lmsContents");
// .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
var maximumByte = $maxcount.text() * 1;
// update 함수는 keyup, paste, input 이벤트에서 호출한다.
var update = function () {
var before = $count.text() * 1;
var str_len = $input.val().length;
var cbyte = 0;
var li_len = 0;
for (i = 0; i < str_len; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
if (cbyte <= maximumByte) {
li_len = i + 1;
}
}
// 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
if (parseInt(cbyte) > parseInt(maximumByte)) {
alert('허용된 글자수가 초과되었습니다.\r\n\n초과된 부분은 자동으로 삭제됩니다.');
var str = $input.val();
var str2 = $input.val().substr(0, li_len);
$input.val(str2);
var cbyte = 0;
for (i = 0; i < $input.val().length; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
}
}
$count.text(cbyte);
};
// input, keyup, paste 이벤트와 update 함수를 바인드한다
$input.bind('input keyup keydown paste change', function () {
setTimeout(update, 0)
});
update();
});
$('#messageDiv').each(function () {
// count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
var $maxcount = $('#messageMaxcount', this);
var $count = $('#messageCount', this);
var $input = $("#sms_type");
// .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
var maximumByte = $maxcount.text() * 1;
// update 함수는 keyup, paste, input 이벤트에서 호출한다.
var update = function () {
var before = $count.text() * 1;
var str_len = $input.val().length;
var cbyte = 0;
var li_len = 0;
for (i = 0; i < str_len; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
if (cbyte <= maximumByte) {
li_len = i + 1;
}
}
// 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
if (parseInt(cbyte) > parseInt(maximumByte)) {
alert('허용된 글자수가 초과되었습니다.\r\n\n초과된 부분은 자동으로 삭제됩니다.');
var str = $input.val();
var str2 = $input.val().substr(0, li_len);
$input.val(str2);
var cbyte = 0;
for (i = 0; i < $input.val().length; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
}
}
$count.text(cbyte);
};
// input, keyup, paste 이벤트와 update 함수를 바인드한다
$input.bind('input keyup keydown paste change', function () {
setTimeout(update, 0)
});
update();
});
});
function checkKey() {
var char_ASCII = event.keyCode;
//숫자
if (char_ASCII >= 48 && char_ASCII <= 57 )
return 1;
//영어
else if ((char_ASCII>=65 && char_ASCII<=90) || (char_ASCII>=97 && char_ASCII<=122))
return 2;
//특수기호
else if ((char_ASCII>=33 && char_ASCII<=47) || (char_ASCII>=58 && char_ASCII<=64)
|| (char_ASCII>=91 && char_ASCII<=96) || (char_ASCII>=123 && char_ASCII<=126))
return 4;
//한글
else if ((char_ASCII >= 12592) || (char_ASCII <= 12687))
return 3;
else
return 0;
}
function checkValue() {
if(checkKey() != 1 ) {
event.returnValue = false;
alert("한글만 입력 가능합니다.");
return false;
}
}
function messageSel(type, obj) {
$("#type").val(type);
if(type == "SMS"){
$("#smsBtn").focus();
$("#smsContents").val(obj);
}else{
$("#lmsBtn").focus();
$("#lmsContents").val(obj);
}
}
function messageDel(numb) {
if(!confirm("해당 데이타를 삭제하시겠습니까?")){
return false;
}else{
$("#command").val("messageDel");
$("#messageIdx").val(numb);
$("#frm").submit();
}
}
function fn_add_phone() {
var phoneIdx = parseInt($('#phoneIdx').val()) +1;
if(phoneIdx > 10) {
alert("수신번호는 10개 이상 기입하실 수 없습니다.");
return false;
}
$('#phoneIdx').val(phoneIdx);
$('#phone_list').append('<li><span class="sms_number">'+phoneIdx+'</span><input type="text" name="phone" id="phone'+phoneIdx+'" class="inp_ful2 mgb10 pal30" placeholder="\'-\'빼고 숫자만 입력해 주세요." onkeypress="return checkValue();"></li>');
}
function add(obj) {
if($("#type").val() == "SMS"){
$("#smsContents").val($("#smsContents").val()+obj);
$("#smsContents").focus();
$('#smsDiv').each(function () {
// count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
var $maxcount = $('#smsMaxcount', this);
var $count = $('#smsCount', this);
var $input = $("#smsContents");
// .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
var maximumByte = $maxcount.text() * 1;
// update 함수는 keyup, paste, input 이벤트에서 호출한다.
var update = function () {
var before = $count.text() * 1;
var str_len = $input.val().length;
var cbyte = 0;
var li_len = 0;
for (i = 0; i < str_len; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
if (cbyte <= maximumByte) {
li_len = i + 1;
}
}
// 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
if (parseInt(cbyte) > parseInt(maximumByte)) {
alert('허용된 글자수가 초과되었습니다.\r\n\n초과된 부분은 자동으로 삭제됩니다.');
var str = $input.val();
var str2 = $input.val().substr(0, li_len);
$input.val(str2);
var cbyte = 0;
for (i = 0; i < $input.val().length; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
}
}
$count.text(cbyte);
};
// input, keyup, paste 이벤트와 update 함수를 바인드한다
$input.bind('input keyup keydown paste change', function () {
setTimeout(update, 0)
});
update();
});
}else{
$("#lmsContents").val($("#lmsContents").val()+obj);
$("#lmsContents").focus();
$('#lmsDiv').each(function () {
// count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
var $maxcount = $('#lmsMaxcount', this);
var $count = $('#lmsCount', this);
var $input = $("#lmsContents");
// .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
var maximumByte = $maxcount.text() * 1;
// update 함수는 keyup, paste, input 이벤트에서 호출한다.
var update = function () {
var before = $count.text() * 1;
var str_len = $input.val().length;
var cbyte = 0;
var li_len = 0;
for (i = 0; i < str_len; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
if (cbyte <= maximumByte) {
li_len = i + 1;
}
}
// 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
if (parseInt(cbyte) > parseInt(maximumByte)) {
alert('허용된 글자수가 초과되었습니다.\r\n\n초과된 부분은 자동으로 삭제됩니다.');
var str = $input.val();
var str2 = $input.val().substr(0, li_len);
$input.val(str2);
var cbyte = 0;
for (i = 0; i < $input.val().length; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
}
}
$count.text(cbyte);
};
// input, keyup, paste 이벤트와 update 함수를 바인드한다
$input.bind('input keyup keydown paste change', function () {
setTimeout(update, 0)
});
update();
});
}
}
function add2(obj) {
$("#sms_type").val($("#sms_type").val()+obj);
$("#sms_type").focus();
$('#messageDiv').each(function () {
// count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
var $maxcount = $('#messageMaxcount', this);
var $count = $('#messageCount', this);
var $input = $("#sms_type");
// .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
var maximumByte = $maxcount.text() * 1;
// update 함수는 keyup, paste, input 이벤트에서 호출한다.
var update = function () {
var before = $count.text() * 1;
var str_len = $input.val().length;
var cbyte = 0;
var li_len = 0;
for (i = 0; i < str_len; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
if (cbyte <= maximumByte) {
li_len = i + 1;
}
}
// 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
if (parseInt(cbyte) > parseInt(maximumByte)) {
alert('허용된 글자수가 초과되었습니다.\r\n\n초과된 부분은 자동으로 삭제됩니다.');
var str = $input.val();
var str2 = $input.val().substr(0, li_len);
$input.val(str2);
var cbyte = 0;
for (i = 0; i < $input.val().length; i++) {
var ls_one_char = $input.val().charAt(i);
if (escape(ls_one_char).length > 4) {
cbyte += 2; //한글이면 2를 더한다
} else {
cbyte++; //한글아니면 1을 다한다
}
}
}
$count.text(cbyte);
};
// input, keyup, paste 이벤트와 update 함수를 바인드한다
$input.bind('input keyup keydown paste change', function () {
setTimeout(update, 0)
});
update();
});
}
function fn_send() {
var phoneIdx = parseInt($('#phoneIdx').val());
var phoneNums = "";
$('#phoneNums').val();
$("input[name=phone]").each(function(index, item){
if($(item).val() != "") {
if(phoneNums == "") {
phoneNums = $(item).val();
} else {
phoneNums += "," + $(item).val();
}
};
});
$('#phoneNums').val(phoneNums);
document.frm.submit();
}
/* ]]> */
</script>
</head>
<body>
<div class="meet_lg_wrap2 sms_wrap" style="max-width: 100%; width: 100%">
<div class="sms">
<div class="sms_con bot_dash">
<div class="sms_con_l">
<div class="sms_l_con mgr15">
<form:form name="frm" id="frm" action="/user/extra/${siteIdx}/sms/process/jsp/Page.do" method="post">
<input type="hidden" name="siteMenuIdx" value="<%=siteMenuIdx%>" />
<input type="hidden" name="sPage" value="1" />
<input type="hidden" name="command" id="command" value="send" />
<input type="hidden" name="type" id="type" value="SMS" />
<input type="hidden" name="sRow" value="<%=sRow%>" />
<input type="hidden" name="messageIdx" id="messageIdx" value="" />
<input type="hidden" name="phoneIdx" id="phoneIdx" value="<%=phoneSize%>" />
<input type="hidden" name="phoneNums" id="phoneNums" value="" />
<div class="sms_tab_wrap">
<div class="tab2b TAP2b_1">
<strong class="tab2bTit inblock indent disc2 tab_on"><a href="#1" id="smsBtn">SMS 발송</a></strong>
</div>
<div class="tab2bCon tab2bCon1">
<div class="inbox6 mgb10 clear">
<textarea name="smsContents" id="smsContents" cols="30" rows="10" class="sms_inp_l2" placeholder="SMS 내용을 입력해주세요." maxlength="1000"></textarea>
<div class="fr mgt5" id="smsDiv"><span class="c_red" id="smsCount">0</span>/<span id="smsMaxcount">90</span>byte</div>
</div>
<div class="inbox6_2 mgb10 sms_noti">SMS는 90byte만 가능합니다.<br/>초과시 LMS발송을 이용하세요.</div>
</div>
<div class="tab2b TAP2b_2">
<strong class="tab2bTit inblock indent disc2"><a href="#1" id="lmsBtn">LMS 발송</a></strong>
</div>
<div class="tab2bCon tab2bCon1 dis_none">
<div class="inbox6 mgb10 clear">
<textarea name="lmsContents" id="lmsContents" cols="30" rows="10" class="sms_inp_l2" placeholder="LMS 내용을 입력해주세요." maxlength="1000"></textarea>
<div class="fr mgt5" id="lmsDiv"><span class="c_red" id="lmsCount">0</span>/<span id="lmsMaxcount">2000</span>byte</div>
</div>
<div class="inbox6_2 mgb10 sms_noti">LMS는 2000byte만 가능합니다.<br/>&nbsp;</div>
</div>
</div><!-- //sms_tab_wrap -->
<div class="inbox6 mgb10">
<h4 class="">특수문자</h4>
<div class="inbox spcl_chrct2">
<a href="javascript:add('©')">&#169;</a> <a href="javascript:add('|')">&#124;</a> <a href="javascript:add('·')">&#183;</a> <a href="javascript:add('↑')">&#8593;</a> <a href="javascript:add('€')">&#8364;</a> <a href="javascript:add('²')">&#178;</a> <a href="javascript:add('½')">&#189;</a> <a href="javascript:add('♥')">&#9829;</a><a href="javascript:add('&')">&#38;</a>
<a href="javascript:add('®')">&#174;</a> <a href="javascript:add('™')">&#153;</a> <a href="javascript:add('“')">&#147;</a> <a href="javascript:add('”')">&#148;</a> <a href="javascript:add('')">&#145;</a> <a href="javascript:add('')">&#146;</a>
<a href="javascript:add('«')">&#171;</a> <a href="javascript:add('»')">&#187;</a> <a href="javascript:add('')">&#8249;</a> <a href="javascript:add('')">&#8250;</a> <a href="javascript:add('§')">&#167;</a> <a href="javascript:add('¶')">&#182;</a> <a href="javascript:add('•')">&#149;</a> <a href="javascript:add('…')">&#8230;</a> <a href="javascript:add('|')">&#124;</a> <a href="javascript:add('¦')">&#166;</a> <a href="javascript:add('')">&#150;</a> <a href="javascript:add('—')">&#151;</a>
<a href="javascript:add('¤')">&#164;</a> <a href="javascript:add('$')">&#36;</a> <a href="javascript:add('¢')">&#162;</a> <a href="javascript:add('£')">&#163;</a> <a href="javascript:add('¥')">&#165;</a> <a href="javascript:add('≤')">&#8804;</a> <a href="javascript:add('≥')">&#8805;</a> <a href="javascript:add('×')">&#215;</a> <a href="javascript:add('÷')">&#247;</a> <a href="javascript:add('')">&#8722;</a> <a href="javascript:add('±')">&#177;</a> <a href="javascript:add('≠')">&#8800;</a> <a href="javascript:add('¹')">&#185;</a> <a href="javascript:add('²')">&#178;</a> <a href="javascript:add('³')">&#179;</a>
<a href="javascript:add('½')">&#189;</a> <a href="javascript:add('¼')">&#188;</a>
<a href="javascript:add('¾')">&#190;</a> <a href="javascript:add('‰')">&#8240;</a> <a href="javascript:add('°')">&#176;</a> <a href="javascript:add('√')">&#8730;</a> <a href="javascript:add('∞')">&#8734;</a> <a href="javascript:add('←')">&#8592;</a> <a href="javascript:add('↑')">&#8593;</a>
<a href="javascript:add('→')">&#8594;</a> <a href="javascript:add('↓')">&#8595;</a> <a href="javascript:add('↔')">&#8596;</a> <a href="javascript:add('♠')">&#9824;</a> <a href="javascript:add('♣')">&#9827;</a> <a href="javascript:add('♥')">&#9829;</a> <a href="javascript:add('♦')">&#9830;</a> <a href="javascript:add('◊')">&#9674;</a> <a href="javascript:add('†')">&#8224;</a> <a href="javascript:add('‡')">&#8225;</a> <a href="javascript:add('¡')">&#161;</a> <a href="javascript:add('¿')">&#191;</a>
</div>
</div>
<%--<h4 class="mgb5">수신번호</h4>
<input type="text" name="phone" id="phone" class="inp_ful2 mgb10" placeholder="'-'빼고 숫자만 입력해 주세요." onkeypress="return checkValue();">--%>
<%--<button type="submit" class="btn_next pal32i par33i">전송하기</button>
<a href="#n" class="btn_cancle pal32i par33i" id="clearBtn">새로쓰기</a>--%>
</form:form>
</div><!-- //sms_con_l -->
<div class="sms_l_con">
<strong class="sms_num"><h4 class="mgb5">수신번호</h4></strong>
<a href="javascript:void(0);" onclick="fn_add_phone();"><img src="/img/more_sms_add.png" style="position: absolute; top: 14px; right: 10px;" alt="번호추가"></a>
<ul id="phone_list">
<%
if(smsAutoPhoneList != null && smsAutoPhoneList.size() > 0) {
for(int k=0; k<smsAutoPhoneList.size(); k++){
Map<String,Object> phoneList = smsAutoPhoneList.get(k);
%>
<li><span class="sms_number"><%= (k+1) %></span><input type="text" name="phone" id="phone<%= (k+1) %>" class="inp_ful2 mgb10 pal30" value="<%= SeedUtils.setReplaceNull(phoneList.get("TEL")) %>" placeholder="'-'빼고 숫자만 입력해 주세요." onkeypress="return checkValue();"></li>
<%
}
} else {
%>
<li><span class="sms_number">1</span><input type="text" name="phone" id="phone1" class="inp_ful2 mgb10 pal30" placeholder="'-'빼고 숫자만 입력해 주세요." onkeypress="return checkValue();"></li>
<%
}
%>
</ul>
<button type="button" onclick="fn_send();" class="btn_next pal32i par33i mgr4">전송하기</button>
<a href="#n" class="btn_cancle patb11" id="clearBtn">새로쓰기</a>
</div><!-- //sms_con_l -->
</div><!-- //sms_con_left -->
<div class="sms_con_r">
<div class="tab2 TAP2_1">
<strong class="tab2Tit inblock indent disc2 tab_on"><a href="#1">메시지함</a></strong>
</div>
<div class="tab2Con tab2Con1">
<ul class="resp_li2_2">
<li class="resp_li_tit">
<span>순번</span>
<span class="tal_c_i">메시지</span>
<span>등록일</span>
<span>구분</span>
<span>선택</span>
</li>
<%
if(messangeDataList != null && messangeDataList.size() > 0){
int cnt = messangeDataList.size();
for(int i=0; i<messangeDataList.size(); i++){
Map<String,Object> massageMap = messangeDataList.get(i);
String listMessIdx = SeedUtils.setReplaceNull(massageMap.get("SNO"));
String listMessContents = SeedUtils.setReplaceNull(massageMap.get("CONTENTS"));
String listMessRegDate = SeedUtils.setReplaceNull(massageMap.get("REG_DT"));
String listMessGubun = SeedUtils.setReplaceNull(massageMap.get("GUBUN"));
%>
<li>
<span><%=cnt%></span>
<span style="word-break:break-all;text-align: left;"><%=listMessContents%></span>
<span><%=listMessRegDate%></span>
<span><%=listMessGubun%></span>
<!--<span><button type="button" class="sms_slct">선택</button> <button type="button" class="sms_del">삭제</button></span>-->
<span><button type="button" class="" onclick="messageSel('<%=listMessGubun%>', '<%=listMessContents%>')">선택</button> <button type="button" class="" onclick="messageDel('<%=listMessIdx%>')">삭제</button></span>
</li>
<%
cnt--;
}
}else{ %>
<li>
<p>검색된 데이터가 없습니다.</p>
</li>
<% } %>
</ul>
<div class="sms_inp_wrap val_t">
<form:form name="frmMessage" id="frmMessage" action="/user/extra/${siteIdx}/sms/process/jsp/Page.do" method="post">
<input type="hidden" name="siteMenuIdx" value="<%=siteMenuIdx%>" />
<input type="hidden" name="sPage" value="1" />
<input type="hidden" name="command" value="message" />
<input type="hidden" name="sRow" value="<%=sRow%>" />
<h4 class="mgb10 mgt20 indent disc2"><label for="sms_type">메시지 등록</label></h4>
<textarea name="messageContents" id="sms_type" cols="30" rows="3" class="sms_inp_l val_t" maxlength="1000"></textarea>
<button type="submit" class="btn_next sms_inp_r val_t">메시지<br>등록</button>
</form:form>
</div>
<div class="spcl_chrct_wrap">
<div class="tbl_abv_wrap clear mgb10 mgt20">
<h4 class="tbl_abv_l2 disc2 indent">특수문자</h4>
<div class="tbl_abv_r2" id="messageDiv"><span class="c_red" id="messageCount">0</span>/<span id="messageMaxcount">2000</span>byte</div>
</div>
<div class="inbox spcl_chrct">
<a href="javascript:add2('©')">&#169;</a> <a href="javascript:add2('|')">&#124;</a> <a href="javascript:add2('·')">&#183;</a> <a href="javascript:add2('↑')">&#8593;</a> <a href="javascript:add2('€')">&#8364;</a> <a href="javascript:add2('²')">&#178;</a> <a href="javascript:add2('½')">&#189;</a> <a href="javascript:add2('♥')">&#9829;</a><a href="javascript:add2('&')">&#38;</a>
<a href="javascript:add2('®')">&#174;</a> <a href="javascript:add2('™')">&#153;</a> <a href="javascript:add2('“')">&#147;</a> <a href="javascript:add2('”')">&#148;</a> <a href="javascript:add2('')">&#145;</a> <a href="javascript:add2('')">&#146;</a>
<a href="javascript:add2('«')">&#171;</a> <a href="javascript:add2('»')">&#187;</a> <a href="javascript:add2('')">&#8249;</a> <a href="javascript:add2('')">&#8250;</a> <a href="javascript:add2('§')">&#167;</a> <a href="javascript:add2('¶')">&#182;</a> <a href="javascript:add2('•')">&#149;</a> <a href="javascript:add2('…')">&#8230;</a> <a href="javascript:add2('|')">&#124;</a> <a href="javascript:add2('¦')">&#166;</a> <a href="javascript:add2('')">&#150;</a> <a href="javascript:add2('—')">&#151;</a>
<a href="javascript:add2('¤')">&#164;</a> <a href="javascript:add2('$')">&#36;</a> <a href="javascript:add2('¢')">&#162;</a> <a href="javascript:add2('£')">&#163;</a> <a href="javascript:add2('¥')">&#165;</a> <a href="javascript:add2('≤')">&#8804;</a> <a href="javascript:add2('≥')">&#8805;</a> <a href="javascript:add2('×')">&#215;</a> <a href="javascript:add2('÷')">&#247;</a> <a href="javascript:add2('')">&#8722;</a> <a href="javascript:add2('±')">&#177;</a> <a href="javascript:add2('≠')">&#8800;</a> <a href="javascript:add2('¹')">&#185;</a> <a href="javascript:add2('²')">&#178;</a> <a href="javascript:add2('³')">&#179;</a>
<a href="javascript:add2('½')">&#189;</a> <a href="javascript:add2('¼')">&#188;</a>
<a href="javascript:add2('¾')">&#190;</a> <a href="javascript:add2('‰')">&#8240;</a> <a href="javascript:add2('°')">&#176;</a> <a href="javascript:add2('√')">&#8730;</a> <a href="javascript:add2('∞')">&#8734;</a> <a href="javascript:add2('←')">&#8592;</a> <a href="javascript:add2('↑')">&#8593;</a>
<a href="javascript:add2('→')">&#8594;</a> <a href="javascript:add2('↓')">&#8595;</a> <a href="javascript:add2('↔')">&#8596;</a> <a href="javascript:add2('♠')">&#9824;</a> <a href="javascript:add2('♣')">&#9827;</a> <a href="javascript:add2('♥')">&#9829;</a> <a href="javascript:add2('♦')">&#9830;</a> <a href="javascript:add2('◊')">&#9674;</a> <a href="javascript:add2('†')">&#8224;</a> <a href="javascript:add2('‡')">&#8225;</a> <a href="javascript:add2('¡')">&#161;</a> <a href="javascript:add2('¿')">&#191;</a>
</div>
</div><!-- //spcl_chrct_wrap -->
</div><!-- //tab2Con -->
<!-- /////////////////////메세지 발송이력 //////////////////////////////-->
<div class="tab2 TAP2_1">
<strong class="tab2Tit inblock indent disc2"><a href="#1">메시지 발송이력</a></strong>
</div>
<div class="tab2Con tab2Con1 dis_none">
<ul class="resp_li2_2">
<li class="resp_li_tit">
<span>순번</span>
<span class="tal_c_i">발송내용</span>
<span>수신번호</span>
<span>구분</span>
<span>발송일</span>
</li>
<%
if(smsDataList != null && smsDataList.size() > 0){
int cnt2 = total - ((Integer.parseInt(sPage) - 1) * Integer.parseInt(sRow));
for(int i=0; i<smsDataList.size(); i++){
Map<String,Object> smsMap = smsDataList.get(i);
String listSmsIdx = SeedUtils.setReplaceNull(smsMap.get("SNO"));
String listSmsContents = SeedUtils.setReplaceNull(smsMap.get("CONTENTS"));
String listSmsRegDate = SeedUtils.setReplaceNull(smsMap.get("REG_DT"));
String listSmsGubun = SeedUtils.setReplaceNull(smsMap.get("GUBUN"));
String listSmsNum = SeedUtils.setReplaceNull(smsMap.get("HPNUMBER"));
%>
<li>
<span><%=cnt2%></span>
<span style="word-break:break-all;text-align: left;"><%=listSmsContents%></span>
<span><%=listSmsNum%></span>
<span><%=listSmsGubun%></span>
<span><%=listSmsRegDate%></span>
</li>
<%
cnt2--;
}
}else{ %>
<li>
<p>검색된 데이터가 없습니다.</p>
</li>
<% } %>
</ul>
<div class="pager tal_c mgt30">
<%=getUserPage3(total, Integer.parseInt(sPage), Integer.parseInt(sRow), pageLinkUrl)%>
</div>
</div><!-- //tab2Con -->
</div><!-- //sms_con_r -->
</div><!-- //sms_con -->
</div><!-- //sms -->
</div><!-- //meet_lg_wrap2 -->
</body>
</html>

View File

@ -0,0 +1,191 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.Date"%>
<%@ page import="java.io.File"%>
<%@ include file="/WEB-INF/views/_extra/dao/smsDao.jsp"%>
<%@ include file="/WEB-INF/views/_extra/dao/commonFileDao.jsp"%>
<%@ include file="/WEB-INF/views/_extra/common/commonFileUtil.jsp"%>
<%
//호환성보기 방지하기
response.setHeader("X-UA-Compatible", "IE=Edge");
//세션 값
String memberIdx = SeedUtils.setReplaceNull(session.getAttribute("memberIdx"));
String memberName = SeedUtils.setReplaceNull(session.getAttribute("memberName"));
String memberGrant = SeedUtils.setReplaceNull(session.getAttribute("memberGrant"), "N");
//사이트 키, 사이트 메뉴 키, 페이지 타입(gtm,gte), 사이트담당자 권한체크("true","false"), 해당메뉴담당자 권한체크("true","false")
String siteIdx = SeedUtils.setReplaceNull((String)request.getAttribute("siteIdx"));
String siteMenuIdx = SeedUtils.setReplaceNull((Integer)request.getAttribute("siteMenuIdx"));
siteMenuIdx = siteMenuIdx == "" ? SeedUtils.setReplaceNull(request.getParameter("siteMenuIdx")) : siteMenuIdx;
String memberAuth = SeedUtils.setReplaceNull(request.getAttribute("memberAuth"), "false");
String memberAuthM = SeedUtils.setReplaceNull(request.getAttribute("memberAuthM"), "false");
String siteMenuManager = SeedUtils.setReplaceNull(request.getAttribute("siteMenuManager"), "N");
String sPage = SeedUtils.setReplaceNull(request.getParameter("spage"),"1");
String sRow = SeedUtils.setReplaceNull(request.getParameter("srow"),"10");
String command = SeedUtils.setReplaceNull(request.getParameter("command"));
boolean success = false;
SeedSqlCon seedSqlCon = null;
SeedDbUtilsSupport seedDbUtilsSupport = new SeedDbUtilsSupport();
String href = "/user/extra/"+siteIdx+"/sms/messageList/jsp/Page.do?spage="+sPage+"&srow="+sRow;
String message = "";
String opener = "";
String self = "";
try{
seedSqlCon = new SeedSqlCon("");
seedSqlCon.setAutoCommit(false);
SeedDateUtil seedDateUtil = new SeedDateUtil();
if(command.equals("send")){
String type = SeedUtils.setReplaceNull(request.getParameter("type"));
String smsContents = SeedUtils.setReplaceNull(request.getParameter("smsContents"));
String lmsContents = SeedUtils.setReplaceNull(request.getParameter("lmsContents"));
String phone = SeedUtils.setReplaceNull(request.getParameter("phoneNums"));
if((smsContents.equals("") && lmsContents.equals("")) || phone.equals("")){
message = "정상적인 요청이 아닙니다.";
}else{
if(type.equals("LMS")){
smsContents = lmsContents;
}
Object[] objData = {
memberIdx, type,
smsContents, phone
};
success = setSmsRegProc(seedSqlCon, objData);
System.out.println("type:" + type);
System.out.println("phone:" + phone);
System.out.println("smsContents:" + smsContents);
System.out.println("lmsContents:" + lmsContents);
//실제 전송 DB에 저장
if(success){
if(type.equals("SMS")){
Object[] objData2 = {
smsContents, phone
};
success = setSmsRealRegProc(seedSqlCon, objData2);
}else if(type.equals("LMS")){
Object[] objData2 = {
smsContents, phone
};
success = setLmsRealRegProc(seedSqlCon, objData2);
}
}
if(success){
message = "SMS이 발송 되었습니다.";
}else{
message = "SMS이 실패 되었습니다.";
}
}
}else if(command.equals("message")){
String messageContents = SeedUtils.setReplaceNull(request.getParameter("messageContents"));
String type = "";
int conLeng = 0;
if(messageContents.equals("")){
message = "정상적인 요청이 아닙니다.";
}else{
conLeng = messageContents.getBytes().length;
if(conLeng > 90){
type = "LMS";
}else{
type = "SMS";
}
Object[] objData = {
memberIdx, type,
messageContents
};
success = setMessageRegProc(seedSqlCon, objData);
if(success){
message = "메세지가 등록 되었습니다.";
}else{
message = "메세지 등록이 실패 되었습니다.";
}
}
}else if(command.equals("messageDel")){
String messageIdx = SeedUtils.setReplaceNull(request.getParameter("messageIdx"));
Object[] objData = {
messageIdx,
memberIdx
};
success = setMessageDataDelete(seedSqlCon, objData);
if(success){
message = "메세지함이 삭제 되었습니다.";
}else{
message = "메세함 삭제가 실패 되었습니다.";
}
}
}catch(SQLException e){
if(seedSqlCon != null){seedSqlCon.rollback();}
System.out.println("/WEB-INF/views/_extra/user/sms/process.jsp 파일에서 에러 발생 Exception "+e.getMessage());
}catch(Exception e){
if(seedSqlCon != null){seedSqlCon.rollback();}
System.out.println("/WEB-INF/views/_extra/user/sms/process.jsp 파일에서 에러 발생 Exception "+e.getMessage());
}finally{
if(seedSqlCon != null){
seedSqlCon.commit();
seedSqlCon.setSeedSqlDispose();
}
}
session.setAttribute("siteIdx", siteIdx);
session.setAttribute("message", "(message)"+message);
session.setAttribute("opener", opener);
session.setAttribute("url", href);
session.setAttribute("self", self);
%>
<!doctype html>
<!--[if lt IE 7 ]><html class="ie ie6" lang="ko"><![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="ko"><![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="ko"><![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="ko"><!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex">
<meta http-equiv="refresh" content="0;url=/user/common/message.do" />
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
<title>페이지 이동</title>
</head>
<body>
</body>
</html>

View File

@ -57,28 +57,7 @@
${memberName}
</div>
</div>
<!-- innorix 대용량 업로드 솔루션 -->
<div class="bbs-view-item">
<p class="item-title">첨부자료</p>
<div class="item-box">
<div class="temp-file-area">
<!-- 단일 파일 업로드 -->
<input type="button" value="첨부파일" class="btn btn_text btn_36 blue_border temp-file-button" onclick="control.openFileDialogSingle();"/>
<!-- 멀티 파일 업로드 -->
<!-- <input type="button" value="첨부파일" class="btn btn_text btn_36 blue_border temp-file-button" onclick="control.openFileDialog();"/> -->
</div>
<!-- 첨부파일 업로드 목록 및 드래그&드랍 영역 -->
<div id="fileControl"></div><br/>
<!-- <ul class="upFileHtml" id="upFileHtml">
</ul>
<input type="hidden" name="fileFuncType" value="form_notice" />
<input type="hidden" name="uploadFileCnt" value="0" id="uploadFileCntId" />
<input type="hidden" name="deleteFileData" value="" id="deleteFileDataId" /> -->
</div>
</div>
<!-- <div class="bbs-view-item">
<p class="item-title">첨부자료</p>
<div class="item-box">
<div class="temp-file-area">
@ -91,7 +70,7 @@
<input type="hidden" name="uploadFileCnt" value="0" id="uploadFileCntId" />
<input type="hidden" name="deleteFileData" value="" id="deleteFileDataId" />
</div>
</div> -->
</div>
<div class="bbs-view-item">
<p class="item-title">내용</p>
<div class="item-box">
@ -174,43 +153,6 @@
return false;
} */
});
// 파일전송 컨트롤 생성
/* 첨부파일 컨트롤 옵션 주요 옵션 종류
1. allowExtension(String Array) : 허용 확장자 종류
2. limitExtension(String Array) : 제외 확장자 종류
3. maxFileSize(Number) : 첨부가능한 개별 파일 사이즈
4. maxTotalSize(Number) : 첨부가능한 전체 파일 사이즈
5. maxFileCount(NUmber) : 첨부가능 파일 전체 개수
4. installUrl(String) : Agent 설치 안내 URL */
/* 첨부파일 동작 관련 이벤트 종류
1. 파일 추가 완료 : afterAddFiles
2. 파일 업로드 완료 : uploadComplete
3. 파일 삭제 완료 : removeFiles */
/* control 객체는 innorixCommon.js에서 생성 */
control = innorix.create({
el: '#fileControl', // 컨트롤 출력 HTML 객체 ID
transferMode: 'both', // 업로드, 다운로드 혼합사용
installUrl: '/innorix/install/install.html', // Agent 설치 페이지
uploadUrl: '/innorix/exam/upload.jsp', // 업로드 URL
allowExtension : ["txt","jpeg","jpg","png","gif","bmp","mp3","mp4","hwp","doc","docx","xls","xlsx","ppt","pptx","pdf","zip","alz"]
});
// 업로드 완료 후 이벤트
control.on('afterAddFiles', function (p) {
console.log('afterAddFiles : ', p);
$("#fileTempUpFrm").submit();
/* fn_callBackInnorix(p.files); // 파일 정보 DB isnert function */
});
});
function goList(){

View File

@ -57,7 +57,29 @@
${memberName}
</div>
</div>
<!-- innorix 대용량 업로드 솔루션 -->
<div class="bbs-view-item">
<p class="item-title">첨부자료</p>
<div class="item-box">
<div class="temp-file-area">
<!-- 단일 파일 업로드 -->
<input type="button" value="첨부파일" class="btn btn_text btn_36 blue_border temp-file-button" onclick="control.openFileDialogSingle();"/>
<!-- <label for="upFile" class="btn btn_text btn_36 blue_border temp-file-button" style="display:flex;justify-content:center;align-items:center;">첨부파일</label> -->
<!-- 멀티 파일 업로드 -->
<!-- <input type="button" value="첨부파일" class="btn btn_text btn_36 blue_border temp-file-button" onclick="control.openFileDialog();"/> -->
</div>
<!-- 첨부파일 업로드 목록 및 드래그&드랍 영역 -->
<div id="fileControl"></div><br/>
<input type="hidden" name="fileFuncType" value="form_notice" />
<!-- <ul class="upFileHtml" id="upFileHtml">
</ul>
<input type="hidden" name="uploadFileCnt" value="0" id="uploadFileCntId" />
<input type="hidden" name="deleteFileData" value="" id="deleteFileDataId" /> -->
</div>
</div>
<!-- <div class="bbs-view-item">
<p class="item-title">첨부자료</p>
<div class="item-box">
<div class="temp-file-area">
@ -70,7 +92,7 @@
<input type="hidden" name="uploadFileCnt" value="0" id="uploadFileCntId" />
<input type="hidden" name="deleteFileData" value="" id="deleteFileDataId" />
</div>
</div>
</div> -->
<div class="bbs-view-item">
<p class="item-title">내용</p>
<div class="item-box">
@ -79,7 +101,8 @@
</div>
</div>
<div class="btn_wrap right">
<button type="submit" class="btn btn_text btn_46 blue_fill">저장</button>
<button type="submit" id="submitBtn" class="btn btn_text btn_46 blue_fill" style="display:none;">저장</button>
<button type="button" class="btn btn_text btn_46 blue_fill" onclick="innorixUpload();">저장</button>
<button type="button" onclick="javascript:goList()" class="btn btn_text btn_46 gray_fill">목록</button>
</div>
</fieldset>
@ -120,7 +143,11 @@
attach_list_view: false
});
/* innorix-1
첨부파일 업로드 경로 전역 변수 선언
*/
var directory = "";
$(window).load(function(){
$("#idx_toolbar_webnote_content_imagecenter").hide();
@ -153,11 +180,64 @@
return false;
} */
});
/* 이노릭스 대용량 업로드 솔루션 */
/* innorix-2
첨부파일 업로드 경로 설정
fileFuncType와 세션의 siteId등의 정보를 이용해 업로드 경로 설정
*/
var fileFuncType = $("#fileTempUpFrm").find("input[name='fileFuncType']").val();
var url = "<c:url value='/seed/innorix/getRealFileDirectoryAjax.do'/>"
getFileDirectory(fileFuncType, url, function(result){
directory = result;
});
/* innorix-3
이노릭스 업로드 컨트롤 생성
control 객체는 innorixCommon.js에서 생성
*/
control = innorix.create({
el: '#fileControl', // 컨트롤 출력 HTML 객체 ID
transferMode: 'both', // 업로드, 다운로드 혼합사용
agent : false,
installUrl: "<c:url value='/innorix/install/install.html'/>", // Agent 설치 페이지
uploadUrl: "<c:url value='/innorix/exam/seedUpload.jsp'/>", // 업로드 URL
allowExtension : ["txt","jpeg","jpg","png","gif","bmp","mp3","mp4","hwp","doc","docx","xls","xlsx","ppt","pptx","pdf","zip","alz"]
});
// 업로드 완료 후 temp 파일 저장
//control.on('afterAddFiles', function (p) {
//console.log('afterAddFiles : ', p);
//var postObj = new Object();
//postObj.directory = directory;
//control.setPostData(postObj);
//control.upload(); // 업로드 시작
/* $("#fileTempUpFrm").submit(); */
/* fn_callBackInnorix(p.files); // 파일 정보 DB isnert function */
//});
});
function goList(){
$("#paramFrm").submit();
}
/* innorix-4
이노릭스 업로드 시작
첨부파일이 있을 시 업로드 후 게시글 작성
첨부파일이 없을 시 바로 게시글 작성
*/
function innorixUpload(){
if(control.getUploadFiles().length > 0){
var postObj = new Object();
postObj.directory = directory;
control.setPostData(postObj);
control.upload(); // 업로드 시작 */
}else{
$("button[type='submit']").click();
}
}
</script>
<script src="/js/jquery.form.js"></script>
<script src="/js/seedFileUtil.js"></script>

View File

@ -108,3 +108,25 @@ function fileListReset() {
control.presetDownloadFiles(resetFileArr); // 다운로드 목록 초기화
}
/*
* 파일 업로드 파일 업로드 위치 구하기
* 상황에 따라 임시 or 정식 폴더 기능 or 메뉴별 업로드 위치가 다름
*
*/
function getFileDirectory(fileFuncType, url, callback){
$.ajax({
type : "POST",
url : url,
data : {fileFuncType : fileFuncType },
dataType : 'json',
async: false,
success : function(returnData, status){
if(status == 'success'){
callback(returnData.directory);
} else{
alert("파일 경로 조회 실패");
}
},
error: function (e) { alert("파일 경로 조회 실패."); console.log("ERROR : ", e); }
});
}

View File

@ -0,0 +1,85 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.innorix.transfer.InnorixUpload" %>
<%@ page import="java.util.UUID" %>
<%
// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가
if (request.getMethod().equals("POST"))
{
String directory = InnorixUpload.getServletAbsolutePath(request);
/* directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; */
directory = "/usr/local/file/sht/";
int maxPostSize = 2147482624; // bytes
InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory);
/*
전달되는 _action Param 정보
speedCheck : 전송속도 측정
getServerInfo : 서버정보 확인
getFileInfo : 파일정보 확인
attachFile : 파일전송 진행
attachFileCompleted : 파일전송 완료
*/
String _action = uploader.getParameter("_action"); // 동작 플래그
String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명
String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명
String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈
String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점
String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점
String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로
String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID
String _type = uploader.getParameter("type"); // 커스텀 정의 POST Param 1
String _part = uploader.getParameter("part"); // 커스텀 정의 POST Param 2
String _transferId = uploader.getParameter("_transferId"); // TransferId
String _directory = uploader.getParameter("directory"); // 커스텀 정의 POST Param 3 업로드 경로
// 파일정보 확인
if("getFileInfo".equals(_action)) {
/*
업로드 시 서버에 저장되는 파일 명 변경 (해당 예제는 랜덥값으로 서버에 저장되는 파일명을 설정)
- uploader.setFileName(파일명+확장자);
- 확장자 변경 시 파일은 열리지 않게 됩니다.
- upload.run()전에 위치
*/
/* String saveNm = UUID.randomUUID()+".jpg";
uploader.setFileName(saveNm); */
}
uploader.setDirectory(_directory);
String _run_retval = uploader.run();
// 개별파일 업로드 완료
if (uploader.isUploadDone()) {
/*
System.out.println("========== uploader.isUploadDone() " + System.currentTimeMillis() + " ==========");
System.out.println("_orig_filename \t = " + _orig_filename);
System.out.println("_new_filename \t = " + _new_filename);
System.out.println("_filesize \t = " + _filesize);
System.out.println("_filepath \t = " + _filepath);
System.out.println("_el \t = " + _el);
*/
}
System.out.println("========== innorix transfer " + System.currentTimeMillis() + " ==========");
System.out.println("_action \t = " + _action);
System.out.println("_run_retval \t = " + _run_retval);
System.out.println("_orig_filename \t = " + _orig_filename);
System.out.println("_new_filename \t = " + _new_filename);
System.out.println("_filesize \t = " + _filesize);
System.out.println("_start_offset \t = " + _start_offset);
System.out.println("_end_offset \t = " + _end_offset);
System.out.println("_filepath \t = " + _filepath);
System.out.println("_el \t = " + _el);
System.out.println("_type \t = " + _type);
System.out.println("_part \t = " + _part);
}
// CORS 관련 헤더 추가
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type");
%>

View File

@ -6,7 +6,8 @@
if (request.getMethod().equals("POST"))
{
String directory = InnorixUpload.getServletAbsolutePath(request);
directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data";
/* directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; */
directory = "/usr/local/file/sht/";
int maxPostSize = 2147482624; // bytes
InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory);

View File

@ -59,6 +59,19 @@ if ("POST".equals(request.getMethod()))
*/
}
System.out.println("========== innorix transfer " + System.currentTimeMillis() + " ==========");
System.out.println("_action \t = " + _action);
System.out.println("_run_retval \t = " + _run_retval);
System.out.println("_orig_filename \t = " + _orig_filename);
System.out.println("_new_filename \t = " + _new_filename);
System.out.println("_filesize \t = " + _filesize);
System.out.println("_start_offset \t = " + _start_offset);
System.out.println("_end_offset \t = " + _end_offset);
System.out.println("_filepath \t = " + _filepath);
System.out.println("_el \t = " + _el);
System.out.println("_type \t = " + _type);
System.out.println("_part \t = " + _part);
}
// CORS 관련 헤더 추가