Merge branch '메인_팝업_등록기능'

This commit is contained in:
hehihoho3@gmail.com 2025-04-07 11:40:47 +09:00
commit 13076399c9
26 changed files with 7696 additions and 1468 deletions

View File

@ -0,0 +1,39 @@
package itn.com.uss.ion.bnr.pop.service;
import java.io.Serializable;
import itn.com.cmm.ComDefaultVO;
import lombok.Getter;
import lombok.Setter;
/**
*
* @author : 이호영
* @fileName : MainPopupLinkVO.java
* @date : 2025.02.26
* @description :
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2025.02.26 이호영 최초 생성
*
*
*
*/
@Getter
@Setter
public class MainPopupLinkVO extends ComDefaultVO implements Serializable {
/**
* @description :
*/
private static final long serialVersionUID = 1998370534684278351L;
private String popId; // 메인존ID
private String mlink; // 링크
private String coords; // 링크좌표
}

View File

@ -22,16 +22,16 @@ import itn.com.uss.ion.pwm.service.SortVO;
*/
public interface MainPopupManageService {
public List<?> selectSubMainzoneList(MainzoneVO mainzoneVO) throws Exception;
public List<?> selectMainPopupList(MainPopupVO mainPopupVO) throws Exception;
public int selectSubMainzoneCount(MainzoneVO mainzoneVO) throws Exception;
public int selectMainPopupCount(MainPopupVO mainPopupVO) throws Exception;
public MainzoneVO selectSubMainzoneVO(String mazId) throws Exception;
public MainPopupVO selectMainPopupVO(String mazId) throws Exception;
public List<MainzoneVO> selectSubMainzoneListRolling();
public List<MainPopupVO> selectMainPopupListRolling();
public void deleteSubMainzone(String id);
public void deleteMainPopup(String id);
public void resetSubMainVOSort(MainzoneVO mainzoneVO);
public void resetMainPopupSort(MainPopupVO mainPopupVO);
}

View File

@ -0,0 +1,59 @@
package itn.com.uss.ion.bnr.pop.service;
import java.io.Serializable;
import java.util.List;
import itn.com.cmm.ComDefaultVO;
import lombok.Getter;
import lombok.Setter;
/**
*
* @author : 이호영
* @fileName : MainPopupVO.java
* @date : 2025.02.26
* @description :
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2025.02.26 이호영 최초 생성
*
*
*
*/
@Getter
@Setter
public class MainPopupVO extends ComDefaultVO implements Serializable {
/**
* @description :
*/
private static final long serialVersionUID = 1998370534684278351L;
private String popId; // 메인존ID
private String content; // 대체택스트
private String del; // 삭제여부
private String mainzoneImageFile; // 이미지파일ID
private String mainzoneImage; // 이미지파일명
private String regdt; // 등록일
private String moddt; // 수정일
private String popNm; // 메인팝업존키
private String useYn; // 사용여부
private String registerId; // 등록자 아이디
private String deviceType; // 접근타입
private String ntceBgnde; // 게시 시작일자
private String ntceEndde; // 게시 종료일자
private String ntceBgndeHH;
private String ntceBgndeMM;
private String ntceEnddeHH;
private String ntceEnddeMM;
private String devicetype;
private List<MainPopupLinkVO> mainPopupLinkList; // 게시 종료일자
}

View File

@ -3,13 +3,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import itn.com.cmm.service.impl.EgovComAbstractDAO;
import itn.com.uss.ion.pwm.service.MainzoneVO;
import itn.com.uss.ion.pwm.service.PopupManageVO;
import itn.com.uss.ion.pwm.service.PopupzoneVO;
import itn.com.uss.ion.pwm.service.SocialVO;
import itn.com.uss.ion.pwm.service.SortVO;
import itn.com.uss.ion.bnr.pop.service.MainPopupVO;
/**
* 개요
@ -31,279 +26,33 @@ public class MainPopupManageDAO extends EgovComAbstractDAO {
* @return 목록
* @exception Exception
*/
public List<?> selectSubMainzoneList(MainzoneVO mainzoneVO ) throws Exception{
return list("subMainzoneManage.selectSubMainzoneList", mainzoneVO);
public List<?> selectMainPopupList(MainPopupVO mainPopupVO ) throws Exception{
return list("mainPopup.selectMainPopupList", mainPopupVO);
}
public int selectSubMainzoneCount(MainzoneVO mainzoneVO) throws Exception{
return (int)select("subMainzoneManage.selectSubMainzoneCount", mainzoneVO);
public int selectMainPopupCount(MainPopupVO mainPopupVO) throws Exception{
return (int)select("mainPopup.selectMainPopupCount", mainPopupVO);
}
public MainzoneVO selectSubMainzoneVO(String mazId) throws Exception{
return (MainzoneVO)select("subMainzoneManage.selectSubMainzoneVO", mazId);
public MainPopupVO selectMainPopupVO(String mazId) throws Exception{
return (MainPopupVO)select("mainPopup.selectMainPopupVO", mazId);
}
public List<MainzoneVO> selectSubMainzoneListRolling() {
return (List<MainzoneVO>) list("subMainzoneManage.selectSubMainzoneListRolling");
public List<MainPopupVO> selectMainPopupListRolling() {
return (List<MainPopupVO>) list("mainPopup.selectMainPopupListRolling");
}
public void deleteSubMainzone(String mazId) {
delete("subMainzoneManage.deleteSubMainzone", mazId);
public void deleteMainPopup(String mazId) {
delete("mainPopup.deleteMainPopup", mazId);
}
public void resetSubMainVOSort(MainzoneVO mainzoneVO) {
update("subMainzoneManage.resetSubMainVOSort", mainzoneVO);
public void resetMainPopupSort(MainPopupVO mainPopupVO) {
update("mainPopup.resetMainPopupSort", mainPopupVO);
}
//
// public SubMainZoneManageDAO(){}
//
// /**
// * 등록된 팝업창정보를 삭제한다.
// * @param popupManage - 팝업창 model
// * @return boolean - 반영성공 여부
// *
// * @param popupManage
// */
// public void deletePopup(PopupManageVO popupManageVO) throws Exception {
// delete("PopupManage.deletePopupManage", popupManageVO);
// }
//
// /**
// * 팝업창정보를 신규로 등록한다.
// * @param popupManage - 팝업창 model
// * @return boolean - 반영성공 여부
// *
// * @param popupManage
// */
// public void insertPopup(PopupManageVO popupManageVO) throws Exception {
// insert("PopupManage.insertPopupManage", popupManageVO);
// }
//
// /**
// * 등록된 팝업창정보를 수정한다.
// * @param popupManage - 팝업창 model
// * @return boolean - 반영성공 여부
// *
// * @param popupManage
// */
// public void updatePopup(PopupManageVO popupManageVO) throws Exception {
// update("PopupManage.updatePopupManage", popupManageVO);
// }
//
// /**
// * 팝업창을 사용자 화면에서 볼수 있는 정보들을 조회한다.
// * @param popupManageVO - 팝업창 Vo
// * @return popupManageVO - 팝업창 Vo
// *
// * @param popupManageVO
// */
// public PopupManageVO selectPopup(PopupManageVO popupManageVO) throws Exception {
// return (PopupManageVO)select("PopupManage.selectPopupManageDetail", popupManageVO);
// }
//
// /**
// * 팝업창를 관리하기 위해 등록된 팝업창목록을 조회한다.
// * @param popupManageVO - 팝업창 Vo
// * @return List - 팝업창 목록
// *
// * @param popupManageVO
// */
// public List<?> selectPopupList(PopupManageVO popupManageVO) throws Exception {
// return list("PopupManage.selectPopupManage", popupManageVO);
// }
//
// /**
// * 팝업창를 관리하기 위해 등록된 팝업창목록 총갯수를 조회한다.
// * @param popupManageVO - 팝업창 Vo
// * @return List - 팝업창 목록
// *
// * @param popupManageVO
// */
// public int selectPopupListCount(PopupManageVO popupManageVO) throws Exception {
// return (Integer)select("PopupManage.selectPopupManageCnt", popupManageVO);
// }
//
// /**
// * 팝업창를 사용하기 위해 등록된 팝업창목록을 조회한다.
// * @param popupManageVO - 팝업창 Vo
// * @return List - 팝업창 목록
// *
// * @param popupManageVO
// */
// public List<?> selectPopupMainList(PopupManageVO popupManageVO) throws Exception {
// return list("PopupManage.selectPopupManageMain", popupManageVO);
// }
//
// /**
// * 메인알림창 목록을 조회한다.
// * @return 목록
// * @exception Exception
// */
// public List<?> selectPopupzoneList(PopupzoneVO popupzoneVo) throws Exception{
// return list("PopupzoneManage.selectPopupzoneList", popupzoneVo);
// }
//
// /**
// * 메인배너 순번정보를 가져온다.
// * @param mode - 0:등록 1:수정
// * @return 순번정보
// * @exception Exception
// */
// @SuppressWarnings("unchecked")
// public List<EgovMap> getSortList() throws Exception{
// return (List<EgovMap>) list("PopupzoneManage.getSortList",null);
// }
//
// public PopupzoneVO selectPopupzoneVO(String pozId) throws Exception {
// return (PopupzoneVO)select("PopupzoneManage.selectPopupzoneVO", pozId);
// }
//
// /**
// * 메인배너 변경할때 나머지 배너들 순서 변경
// * @param 입력된 sort번호
// * @return 등록 결과
// * @exception Exception
// */
// public void updateSortUp(SortVO sortVO) throws Exception{
// update("PopupzoneManage.updateSortUp", sortVO);
// }
//
// public void updateSortDown(SortVO sortVO) throws Exception {
// update("PopupzoneManage.updateSortDown", sortVO);
// }
//
// public void updatePopupzone(PopupzoneVO popupzoneVO) throws Exception {
// update("PopupzoneManage.updatePopupzone", popupzoneVO);
// }
//
// /**
// * 메인알림창을 삭제한다.
// * @param pozId - 삭제할 메인알림창 번호
// * @return void형
// * @exception Exception
// */
// public void deletePopupzone(String pozId) throws Exception {
// delete("PopupzoneManage.deletePopupzone", pozId);
// }
//
// public int getMaxSort() throws Exception{
// return (Integer)select("PopupzoneManage.getMaxSort") ;
// }
//
// /**
// * 메인배너의 새로운seq를 가지고온다.
// * @return seq
// * @exception Exception
// */
// public int selectNextSeq() throws Exception{
// return (Integer)select("PopupzoneManage.selectNextSeq");
// }
//
// public void insertPopupzone(PopupzoneVO popupzoneVO) throws Exception{
// insert("PopupzoneManage.insertPopupzone", popupzoneVO);
// }
//
// public void resetSort(PopupzoneVO popupzoneVO) throws Exception{
// update("PopupzoneManage.resetSort", popupzoneVO);
// }
//
// /**
// * 메인이미지 목록을 조회한다.
// * @return 목록
// * @exception Exception
// */
// public List<?> selectMainzoneList(MainzoneVO mainzoneVO ) throws Exception{
// return list("MainzoneManage.selectMainzoneList", mainzoneVO);
// }
//
// public int getMainMaxSort() throws Exception{
// return (Integer)select("MainzoneManage.getMainMaxSort");
// }
//
// public void insertMainzone(MainzoneVO mainzoneVO) throws Exception{
// insert("MainzoneManage.insertMainzone", mainzoneVO);
// }
//
// public void resetMainSort(MainzoneVO mainzoneVO) throws Exception{
// insert("MainzoneManage.resetMainSort", mainzoneVO);
// }
//
// public void updateMainSortUp(SortVO sortVO) throws Exception{
// update("MainzoneManage.updateMainSortUp", sortVO);
// }
//
// public MainzoneVO selectMainzoneVO(String mazId) throws Exception{
// return (MainzoneVO)select("MainzoneManage.selectMainzoneVO", mazId);
// }
//
// @SuppressWarnings("unchecked")
// public List<EgovMap> getMainSortList() throws Exception{
// return (List<EgovMap>) list("MainzoneManage.getMainSortList",null);
// }
//
// public void deleteMainzone(String mazId) throws Exception{
// delete("MainzoneManage.deleteMainzone", mazId);
// }
//
// public void updateMainSortDown(SortVO sortVO) throws Exception{
// update("MainzoneManage.updateMainSortDown", sortVO);
// }
//
// public void updateMainzone(MainzoneVO mainzoneVO) throws Exception{
// update("MainzoneManage.updateMainzone", mainzoneVO);
// }
//
// @SuppressWarnings("unchecked")
// public List<MainzoneVO> selectMainzoneListRolling() throws Exception{
// return (List<MainzoneVO>) list("MainzoneManage.selectMainzoneListRolling");
// }
//
// public int selectPopupzoneListTotCnt(PopupzoneVO popupzoneVo) throws Exception {
// return (int)select("PopupzoneManage.selectPopupzoneListTotCnt", popupzoneVo);
// }
//
// public int selectMainzoneCount(MainzoneVO mainzoneVO) throws Exception{
// return (int)select("MainzoneManage.selectMainzoneCount", mainzoneVO);
// }
//
// public void resetVOSort(PopupzoneVO popupzoneVO) throws Exception{
// update("PopupzoneManage.resetVOSort", popupzoneVO);
// }
//
// public void resetMainVOSort(MainzoneVO mainzoneVO) throws Exception{
// update("MainzoneManage.resetMainVOSort", mainzoneVO);
// }
//
// @SuppressWarnings("unchecked")
// public List<SocialVO> selectSocialList(SocialVO socialVO) throws Exception{
// return (List<SocialVO>) list("SocialManage.selectSocialList",socialVO);
// }
//
// public SocialVO selectSocialVO(String socialId) throws Exception{
// return (SocialVO)select("SocialManage.selectSocialVO", socialId);
// }
//
// public void updateSocial(SocialVO socialVO) throws Exception{
// update("SocialManage.updateSocial", socialVO);
// }
//
// public void resetSocialSort(SocialVO socialVO) throws Exception{
// update("SocialManage.resetSocialSort", socialVO);
// }
//
// public void insertSocial(SocialVO socialVO) throws Exception{
// insert("SocialManage.insertSocial", socialVO);
// }
//
// public void deleteSocial(String id) throws Exception{
// delete("SocialManage.deleteSocial", id);
// }
}

View File

@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import itn.com.uss.ion.bnr.pop.service.MainPopupManageService;
import itn.com.uss.ion.pwm.service.MainzoneVO;
import itn.com.uss.ion.bnr.pop.service.MainPopupVO;
/**
* 개요
@ -34,37 +34,37 @@ public class MainPopupManageServiceImpl extends EgovAbstractServiceImpl implemen
private EgovIdGnrService idgenService;
@Override
public List<?> selectSubMainzoneList(MainzoneVO mainzoneVO) throws Exception {
return dao.selectSubMainzoneList(mainzoneVO);
public List<?> selectMainPopupList(MainPopupVO mainPopupVO) throws Exception {
return dao.selectMainPopupList(mainPopupVO);
}
@Override
public int selectSubMainzoneCount(MainzoneVO mainzoneVO) throws Exception {
return dao.selectSubMainzoneCount(mainzoneVO);
public int selectMainPopupCount(MainPopupVO mainPopupVO) throws Exception {
return dao.selectMainPopupCount(mainPopupVO);
}
@Override
public MainzoneVO selectSubMainzoneVO(String mazId) throws Exception {
MainzoneVO resultVO = dao.selectSubMainzoneVO(mazId);
public MainPopupVO selectMainPopupVO(String mazId) throws Exception {
MainPopupVO resultVO = dao.selectMainPopupVO(mazId);
if (resultVO == null)
throw processException("info.nodata.msg");
return resultVO;
}
@Override
public List<MainzoneVO> selectSubMainzoneListRolling() {
return dao.selectSubMainzoneListRolling();
public List<MainPopupVO> selectMainPopupListRolling() {
return dao.selectMainPopupListRolling();
}
@Override
public void deleteSubMainzone(String id) {
dao.deleteSubMainzone(id);
public void deleteMainPopup(String id) {
dao.deleteMainPopup(id);
}
@Override
public void resetSubMainVOSort(MainzoneVO mainzoneVO) {
dao.resetSubMainVOSort(mainzoneVO);
public void resetMainPopupSort(MainPopupVO mainPopupVO) {
dao.resetMainPopupSort(mainPopupVO);
}

View File

@ -32,6 +32,8 @@ import itn.com.cmm.service.EgovFileMngService;
import itn.com.cmm.service.EgovFileMngUtil;
import itn.com.cmm.service.FileVO;
import itn.com.cmm.util.RedirectUrlMaker;
import itn.com.uss.ion.bnr.pop.service.MainPopupManageService;
import itn.com.uss.ion.bnr.pop.service.MainPopupVO;
import itn.com.uss.ion.bnr.sub.service.SubMainZoneManageService;
import itn.com.uss.ion.pwm.service.MainzoneVO;
import itn.let.sym.site.service.EgovSiteManagerService;
@ -57,9 +59,9 @@ import itn.let.sym.site.service.EgovSiteManagerService;
*/
@Controller
public class MainPopupManageController {
public class MainPopupController {
private static final Logger LOGGER = LoggerFactory.getLogger(MainPopupManageController.class);
private static final Logger LOGGER = LoggerFactory.getLogger(MainPopupController.class);
@Autowired
private DefaultBeanValidator beanValidator;
@ -76,6 +78,9 @@ public class MainPopupManageController {
@Resource(name = "subMainZoneManageService")
private SubMainZoneManageService subMainZoneManageService;
@Resource(name = "mainPopupManageService")
private MainPopupManageService mainPopupManageService;
/** cmmUseService */
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
@ -105,63 +110,64 @@ public class MainPopupManageController {
/*메인이미지 관리*/
// @RequestMapping(value="/uss/ion/bnr/subMainZoneList.do")
@RequestMapping(value="/uss/ion/bnr/pop/mainPopupList.do")
public String popupList(ModelMap model , MainzoneVO mainzoneVO , HttpSession session ) throws Exception {
public String selectMainzoneList(ModelMap model , MainPopupVO mainPopupVO , HttpSession session ) throws Exception {
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
if(mainzoneVO.getPageUnit()% 8 != 0) {//9 배수로 넘어오지 않으면 초기세팅
mainzoneVO.setPageUnit(8);
if(mainPopupVO.getPageUnit()% 8 != 0) {//9 배수로 넘어오지 않으면 초기세팅
mainPopupVO.setPageUnit(8);
}else {
mainzoneVO.setPageUnit(mainzoneVO.getPageUnit());
mainPopupVO.setPageUnit(mainPopupVO.getPageUnit());
}
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(mainzoneVO.getPageIndex());
paginationInfo.setRecordCountPerPage(mainzoneVO.getPageUnit());
paginationInfo.setPageSize(mainzoneVO.getPageSize());
paginationInfo.setCurrentPageNo(mainPopupVO.getPageIndex());
paginationInfo.setRecordCountPerPage(mainPopupVO.getPageUnit());
paginationInfo.setPageSize(mainPopupVO.getPageSize());
mainzoneVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
mainzoneVO.setLastIndex(paginationInfo.getLastRecordIndex());
mainzoneVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
mainPopupVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
mainPopupVO.setLastIndex(paginationInfo.getLastRecordIndex());
mainPopupVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if(null != loginVO && !"super".equals(loginVO.getSiteId())){ //각각의 사이트
mainzoneVO.setSiteId(loginVO.getSiteId());
mainPopupVO.setSiteId(loginVO.getSiteId());
}
List<?> mainzoneList = subMainZoneManageService.selectSubMainzoneList(mainzoneVO);
model.addAttribute("mainzoneList", mainzoneList);
List<?> mainPopupList = mainPopupManageService.selectMainPopupList(mainPopupVO);
model.addAttribute("mainPopupList", mainPopupList);
int totCnt = subMainZoneManageService.selectSubMainzoneCount(mainzoneVO);
int totCnt = mainPopupManageService.selectMainPopupCount(mainPopupVO);
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
return "uss/ion/bnr/sub/subMainZoneList";
return "uss/ion/bnr/pop/mainPopupList";
}
/*알림창등록/수정 view*/
@RequestMapping(value="/uss/ion/bnr/pop/mainPopupModify.do")
public String popupModify(@RequestParam Map<?, ?> commandMap,
public String updateMainZoneView(@RequestParam Map<?, ?> commandMap,
HttpServletRequest request, Model model, HttpSession session)
throws Exception {
MainzoneVO mainzoneVO = new MainzoneVO();
MainPopupVO mainPopupVO = new MainPopupVO();
if("Modify".equals((String)commandMap.get("pageType"))){ //수정
String mazId = (String)commandMap.get("selectedId");
mainzoneVO = subMainZoneManageService.selectSubMainzoneVO(mazId);
String sNtceBgnde = mainzoneVO.getNtceBgnde();
String sNtceEndde = mainzoneVO.getNtceEndde();
mainPopupVO = mainPopupManageService.selectMainPopupVO(mazId);
String sNtceBgnde = mainPopupVO.getNtceBgnde();
String sNtceEndde = mainPopupVO.getNtceEndde();
if(sNtceBgnde != null && sNtceEndde != null ) {
mainzoneVO.setNtceBgndeHH(sNtceBgnde.substring(8, 10));
mainzoneVO.setNtceBgndeMM(sNtceBgnde.substring(10, 12));
mainPopupVO.setNtceBgndeHH(sNtceBgnde.substring(8, 10));
mainPopupVO.setNtceBgndeMM(sNtceBgnde.substring(10, 12));
mainzoneVO.setNtceEnddeHH(sNtceEndde.substring(8, 10));
mainzoneVO.setNtceEnddeMM(sNtceEndde.substring(10, 12));
mainPopupVO.setNtceEnddeHH(sNtceEndde.substring(8, 10));
mainPopupVO.setNtceEnddeMM(sNtceEndde.substring(10, 12));
//게시기간 시작일자()
model.addAttribute("ntceBgndeHH", getTimeHH());
@ -175,11 +181,11 @@ public class MainPopupManageController {
}
if(mainzoneVO != null){
mainzoneVO.setBeSort(mainzoneVO.getSort());
if(mainPopupVO != null){
mainPopupVO.setBeSort(mainPopupVO.getSort());
FileVO fileVO = new FileVO();
String atchFileId = mainzoneVO.getMainzoneImageFile();
String atchFileId = mainPopupVO.getMainzoneImageFile();
fileVO.setAtchFileId(atchFileId);
List<FileVO> fileList = fileService.selectFileInfs(fileVO);
model.addAttribute("fileList", fileList);
@ -198,8 +204,8 @@ public class MainPopupManageController {
}
//model.addAttribute("sortList", sortList);
model.addAttribute("mainzoneVO", mainzoneVO);
System.out.println("mainzoneVO :: "+ mainzoneVO.toString());
model.addAttribute("mainPopupVO", mainPopupVO);
System.out.println("mainPopupVO :: "+ mainPopupVO.toString());
/* 타겟 코드 */
ComDefaultCodeVO vo = new ComDefaultCodeVO();
@ -208,33 +214,33 @@ public class MainPopupManageController {
//model.addAttribute("targetList", targetList);
return "uss/ion/bnr/sub/subMainZoneModify";
return "uss/ion/bnr/pop/mainPopupModify";
}
/*메인 이미지삭제 */
@RequestMapping(value="/uss/ion/bnr/pop/mainPopupListDelete.do")
@RequestMapping("/uss/ion/bnr/pop/mainPopupListDelete.do")
public String deleteMainzoneDelete(@RequestParam("del") String[] del, RedirectAttributes redirectAttributes , Model model) throws Exception {
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
MainzoneVO mainzoneVO = new MainzoneVO();
MainPopupVO mainPopupVO = new MainPopupVO();
for(String id:del) {
try{
mainzoneVO = subMainZoneManageService.selectSubMainzoneVO(id);
mainPopupVO = mainPopupManageService.selectMainPopupVO(id);
}catch(Exception e){
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("info.nodata.msg"));
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/bnr/subMainZoneList.do");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/bnr/pop/mainPopupList.do");
return redirectUrlMaker.getRedirectUrl();
}
subMainZoneManageService.deleteSubMainzone(id);
mainPopupManageService.deleteMainPopup(id);
if(null != loginVO && !"super".equals(loginVO.getSiteId())){
mainzoneVO.setSiteId(loginVO.getSiteId());
mainPopupVO.setSiteId(loginVO.getSiteId());
}
subMainZoneManageService.resetSubMainVOSort(mainzoneVO);
mainPopupManageService.resetMainPopupSort(mainPopupVO);
}
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/bnr/subMainZoneList.do");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/bnr/pop/mainPopupList.do");
return redirectUrlMaker.getRedirectUrl();
}
@ -303,4 +309,6 @@ public class MainPopupManageController {
return listMM;
}
}

View File

@ -38,6 +38,7 @@ import itn.com.cmm.service.EgovFileMngService;
import itn.com.cmm.service.EgovFileMngUtil;
import itn.com.cmm.service.FileVO;
import itn.com.cmm.util.RedirectUrlMaker;
import itn.com.uss.ion.bnr.pop.service.MainPopupVO;
import itn.com.uss.ion.bnr.service.Banner;
import itn.com.uss.ion.bnr.service.BannerVO;
import itn.com.uss.ion.bnr.service.EgovBannerService;
@ -115,6 +116,9 @@ public class FmsFileController {
@Resource(name = "egovSubMainZoneIdGnrService")
private EgovIdGnrService idgenServiceSubMain;
@Resource(name = "egovMainPopupIdGnrService")
private EgovIdGnrService idgenServiceMainPopup;
@Resource(name = "egovBannerService")
private EgovBannerService egovBannerService;
@ -390,6 +394,7 @@ public class FmsFileController {
public ModelAndView insertFmsFileInsertAjax(@RequestParam Map<?, ?> commandMap,
@ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO,
MainzoneVO mainzoneVO,
MainPopupVO mainPopupVO,
PopupzoneVO popupzoneVO,
Banner banner,
BannerVO bannerVO,
@ -419,6 +424,8 @@ public class FmsFileController {
KeyStr = "MAZ_";
}else if("subMainzone".equals(fileVO.getMenuName())) { //메인비주얼
KeyStr = "SMAZ_";
}else if("mainPopup".equals(fileVO.getMenuName())) { //메인비주얼
KeyStr = "MPP_";
}else if("popupzone".equals(fileVO.getMenuName())) { //매뉴별 비주얼
KeyStr = "POZ_";
}else if("banner".equals(fileVO.getMenuName())) { //매뉴별 비주얼
@ -447,6 +454,9 @@ public class FmsFileController {
mainzoneVO.setMainzoneImage(orignlFileNm);
mainzoneVO.setMainzoneImageFile(atchFileId);
mainPopupVO.setMainzoneImage(orignlFileNm);
mainPopupVO.setMainzoneImageFile(atchFileId);
fmsFileVO.setFmsImage(orignlFileNm);
fmsFileVO.setFmsImageFile(atchFileId);
@ -482,14 +492,24 @@ public class FmsFileController {
egovPopupManageService.insertMainzone(mainzoneVO);
mainzoneVO.setSortOver("D"); //앞쪽에 넣음
egovPopupManageService.resetMainVOSort(mainzoneVO);
}else if("subMainzone".equals(fileVO.getMenuName())) { // 서브 메인비주얼 새글
}
else if("subMainzone".equals(fileVO.getMenuName())) { // 서브 메인비주얼 새글
String mainId = idgenServiceSubMain.getNextStringId();
mainzoneVO.setMazId(mainId);
mainzoneVO.setRegisterId(loginVO.getUniqId());
egovPopupManageService.insertSubMainzone(mainzoneVO);
mainzoneVO.setSortOver("D"); //앞쪽에 넣음
egovPopupManageService.resetSubMainVOSort(mainzoneVO);
}else if("popupzone".equals(fileVO.getMenuName())) { //매뉴별 비주얼
}
else if("mainPopup".equals(fileVO.getMenuName())) { // 메인팝업 새글
String mainId = idgenServiceMainPopup.getNextStringId();
mainPopupVO.setPopId(mainId);
mainPopupVO.setRegisterId(loginVO.getUniqId());
egovPopupManageService.insertMainPopup(mainPopupVO);
mainPopupVO.setSortOver("D"); //앞쪽에 넣음
egovPopupManageService.resetMainPopup(mainPopupVO);
}
else if("popupzone".equals(fileVO.getMenuName())) { //매뉴별 비주얼
String pozId = idgenService.getNextStringId();
popupzoneVO.setPozId(pozId);
popupzoneVO.setRegisterId(loginVO.getUniqId());
@ -538,7 +558,14 @@ public class FmsFileController {
if(mainzoneVO.getSort() < mainzoneVO.getBeSort() ){ //sortOver : A 후번호로 변경 , D : 선번호로 변경
mainzoneVO.setSortOver("D");
}
egovPopupManageService.resetSubMainVOSort(mainzoneVO);
egovPopupManageService.resetMainVOSort(mainzoneVO);
}else if("mainPopup".equals(fileVO.getMenuName())) { // 메인팝업 새글
egovPopupManageService.updateMainPopup(mainPopupVO);
if(mainzoneVO.getSort() < mainzoneVO.getBeSort() ){ //sortOver : A 후번호로 변경 , D : 선번호로 변경
mainzoneVO.setSortOver("D");
}
egovPopupManageService.resetMainPopup(mainPopupVO);
}else if("popupzone".equals(fileVO.getMenuName())) { //매뉴별 비주얼
egovPopupManageService.updatePopupzone(popupzoneVO);
if(popupzoneVO.getSort() < popupzoneVO.getBeSort() ){ //sortOver : A 후번호로 변경 , D : 선번호로 변경
@ -576,6 +603,7 @@ public class FmsFileController {
}
modelAndView.addObject("result", "success");
}catch (Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
}
return modelAndView;

View File

@ -3,6 +3,8 @@ package itn.com.uss.ion.pwm.service;
import java.util.List;
import java.util.Map;
import itn.com.uss.ion.bnr.pop.service.MainPopupVO;
/**
* 개요
* - 팝업창에 대한 Service Interface를 정의한다.
@ -167,4 +169,11 @@ public interface EgovPopupManageService {
//사용자 메인화면 롤링 배너 이미지 조회
public List<MainzoneVO> selectMainzoneListRolling() throws Exception;
public void insertMainPopup(MainPopupVO mainPopupVO);
public void resetMainPopup(MainPopupVO mainPopupVO) throws Exception;
public void updateMainPopup(MainPopupVO mainPopupVO) throws Exception;
}

View File

@ -1,17 +1,23 @@
package itn.com.uss.ion.pwm.service.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.IntStream;
import javax.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import itn.com.uss.ion.bnr.pop.service.MainPopupLinkVO;
import itn.com.uss.ion.bnr.pop.service.MainPopupVO;
import itn.com.uss.ion.pwm.service.EgovPopupManageService;
import itn.com.uss.ion.pwm.service.MainzoneVO;
import itn.com.uss.ion.pwm.service.PopupManageVO;
@ -244,6 +250,10 @@ public class EgovPopupManageServiceImpl extends EgovAbstractServiceImpl implemen
public void insertSubMainzone(MainzoneVO mainzoneVO) throws Exception {
dao.insertSubMainzone(mainzoneVO);
}
@Override
public void resetMainPopup(MainPopupVO mainPopupVO) throws Exception {
dao.resetMainPopup(mainPopupVO);
}
@Override
public void resetMainSort(MainzoneVO mainzoneVO) throws Exception {
@ -305,6 +315,7 @@ public class EgovPopupManageServiceImpl extends EgovAbstractServiceImpl implemen
dao.updateSubMainzone(mainzoneVO);
}
//사용자 메인화면 롤링 배너 이미지 조회
@Override
public List<MainzoneVO> selectMainzoneListRolling() throws Exception{
@ -371,4 +382,52 @@ public class EgovPopupManageServiceImpl extends EgovAbstractServiceImpl implemen
public void deleteSocial(String id) throws Exception {
dao.deleteSocial(id);
}
@Override
public void insertMainPopup(MainPopupVO mainPopupVO) {
dao.insertMainPopup(mainPopupVO);
if(CollectionUtils.isNotEmpty(mainPopupVO.getMainPopupLinkList())) {
List<MainPopupLinkVO> mainPopupLinkListVO = getMainPopupLinkList(mainPopupVO);
// mainPopupLinkListVO.stream().forEach(t-> System.out.println(t.toString()));
dao.insertMainPopupLinkInfo(mainPopupLinkListVO);
}
}
@Override
public void updateMainPopup(MainPopupVO mainPopupVO) throws Exception {
dao.updateMainPopup(mainPopupVO);
if(CollectionUtils.isNotEmpty(mainPopupVO.getMainPopupLinkList())) {
List<MainPopupLinkVO> mainPopupLinkListVO = getMainPopupLinkList(mainPopupVO);
dao.deleteMainPopupLinkInfo(mainPopupVO.getPopId());
dao.insertMainPopupLinkInfo(mainPopupLinkListVO);
}
}
private List<MainPopupLinkVO> getMainPopupLinkList(MainPopupVO mainPopupVO) {
List<MainPopupLinkVO> mainPopupLinkListVO = mainPopupVO.getMainPopupLinkList();
// 기존 sort 값을 숫자로 변환하여 오름차순 정렬
mainPopupLinkListVO.sort(Comparator.comparingInt(vo -> vo.getSort()));
// 2. 정렬된 상태에서 sort 값을 연속적인 숫자로 변경 (1, 2, 3, ...)
IntStream.range(0, mainPopupLinkListVO.size())
.forEach(i -> mainPopupLinkListVO.get(i).setSort(i + 1));
mainPopupLinkListVO.stream().forEach(t-> t.setPopId(mainPopupVO.getPopId()));
return mainPopupLinkListVO;
}
}

View File

@ -5,6 +5,8 @@ import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import itn.com.cmm.service.impl.EgovComAbstractDAO;
import itn.com.uss.ion.bnr.pop.service.MainPopupLinkVO;
import itn.com.uss.ion.bnr.pop.service.MainPopupVO;
import itn.com.uss.ion.pwm.service.MainzoneVO;
import itn.com.uss.ion.pwm.service.PopupManageVO;
import itn.com.uss.ion.pwm.service.PopupzoneVO;
@ -280,4 +282,30 @@ public class PopupManageDAO extends EgovComAbstractDAO {
public void deleteSocial(String id) throws Exception{
delete("SocialManage.deleteSocial", id);
}
public void insertMainPopup(MainPopupVO mainPopupVO) {
insert("MainzoneManage.insertMainPopup", mainPopupVO);
}
public void insertMainPopupLinkInfo(List<MainPopupLinkVO> mainPopupLinkListVO) {
insert("MainzoneManage.insertMainPopupLinkInfo", mainPopupLinkListVO);
}
public void resetMainPopup(MainPopupVO mainPopupVO) {
// update("MainzoneManage.resetSubMainVOSort", mainzoneVO);
insert("MainzoneManage.resetMainPopup", mainPopupVO);
}
public void updateMainPopup(MainPopupVO mainPopupVO) throws Exception{
update("MainzoneManage.updateMainPopup", mainPopupVO);
}
public void updateMainPopupLinkInfo(MainPopupLinkVO mainPopupLinkVO) {
update("MainzoneManage.updateMainPopupLinkInfo", mainPopupLinkVO);
}
public void deleteMainPopupLinkInfo(String popId) {
delete("MainzoneManage.deleteMainPopupLinkInfo", popId);
}
}

View File

@ -78,6 +78,8 @@ import itn.com.cmm.service.EgovFileMngUtil;
import itn.com.cmm.service.FileVO;
import itn.com.cmm.util.StringUtil;
import itn.com.cmm.util.WebUtil;
import itn.com.uss.ion.bnr.pop.service.MainPopupManageService;
import itn.com.uss.ion.bnr.pop.service.MainPopupVO;
import itn.com.uss.ion.bnr.service.BannerVO;
import itn.com.uss.ion.bnr.service.EgovBannerService;
import itn.com.uss.ion.bnr.sub.service.SubMainZoneManageService;
@ -264,10 +266,13 @@ public class MainController {
@Resource(name = "mjonCandidateService")
private MjonCandidateService mjonCandidateService;
/** EgovPopupManageService */
@Resource(name = "subMainZoneManageService")
private SubMainZoneManageService subMainZoneManageService;
/** 메인팝업 service */
@Resource(name = "mainPopupManageService")
private MainPopupManageService mainPopupManageService;
@Value("#{globalSettings['Globals.email.host']}")
private String Globals_email_host;
@ -701,6 +706,15 @@ public class MainController {
}
{//팝업 롤링 이미지 불러오기
List<MainPopupVO> resultMainPopupList = mainPopupManageService.selectMainPopupListRolling();
model.addAttribute("mainPopupList", resultMainPopupList);
System.out.println("===================mainPopupList");
}
return "web/main/mainPage";
}

View File

@ -2020,6 +2020,23 @@
<property name="fillChar" value="0" />
</bean>
<bean name="egovMainPopupIdGnrService"
class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl"
destroy-method="destroy">
<property name="dataSource" ref="dataSource" />
<property name="strategy" ref="mainPopupIdStrategy" />
<property name="blockSize" value="10"/>
<property name="table" value="IDS"/>
<property name="tableName" value="MPP_ID"/>
</bean>
<!-- 메인상단 이미지 ID Generation Strategy Config -->
<bean name="mainPopupIdStrategy"
class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl">
<property name="prefix" value="MPP_" />
<property name="cipers" value="12" />
<property name="fillChar" value="0" />
</bean>
<!-- 컨텐츠 관리 ID Generation Strategy Config -->
<bean name="egovCntManageIdGnrService"

View File

@ -5,4 +5,5 @@
<sqlMapConfig>
<sqlMap resource="egovframework/sqlmap/com/uss/ion/bnr/EgovBanner_SQL_Mysql.xml"/><!-- 배너 추가 -->
<sqlMap resource="egovframework/sqlmap/let/uss/ion/bnr/SubMainZoneManage_SQL_Mysql.xml"/><!-- 서브팝업관리 -->
<sqlMap resource="egovframework/sqlmap/let/uss/ion/bnr/MainPopupManage_SQL_Mysql.xml"/><!-- 서브팝업관리 -->
</sqlMapConfig>

View File

@ -0,0 +1,220 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<!--
수정일 수정자 수정내용
=========== ======== =================================================
2011.10.06 이기하 보안 취약점 점검사항 반영 $->#변경
-->
<sqlMap namespace="UnityLink">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="comDefaultVO" type="itn.com.cmm.ComDefaultVO"/>
<typeAlias alias="PopupManageVO" type="itn.com.uss.ion.pwm.service.PopupManageVO" />
<typeAlias alias="popupzoneVO" type="itn.com.uss.ion.pwm.service.PopupzoneVO"/>
<typeAlias alias="mainPopupVO" type="itn.com.uss.ion.bnr.pop.service.MainPopupVO"/>
<resultMap id="MainPopupLinkResultMap" class="itn.com.uss.ion.bnr.pop.service.MainPopupLinkVO">
<result property="popId" column="POP_ID"></result>
<result property="mlink" column="MLINK"></result>
<result property="coords" column="COORDS"></result>
<result property="sort" column="SORT"></result>
</resultMap>
<resultMap id="MainPopupResultMap" class="itn.com.uss.ion.bnr.pop.service.MainPopupVO">
<result property="popId" column="POP_ID" ></result>
<result property="content" column="CONTENT"></result>
<result property="regdt" column="REGDT"></result>
<result property="del" column="DEL"></result>
<result property="sort" column="SORT"></result>
<result property="mainzoneImage" column="MAINZONE_IMAGE"></result>
<result property="mainzoneImageFile" column="MAINZONE_IMAGE_FILE"></result>
<result property="popNm" column="POP_NM"></result>
<result property="useYn" column="USE_YN"></result>
<result property="moddt" column="MODDT"></result>
<result property="registerId" column="REGISTERID"></result>
<result property="deviceType" column="DEVICETYPE"></result>
<result property="ntceBgnde" column="NTCE_BGNDE"></result>
<result property="ntceEndde" column="NTCE_ENDDE"></result>
<result property="mainPopupLinkList" column="POP_ID" select="mainPopup.selectMainPopupVOLink" />
</resultMap>
<!-- 매인이미지 관리자 리스트 -->
<select id="mainPopup.selectMainPopupList" parameterClass="mainPopupVO" resultClass="egovMap">
/* mainPopup.selectMainPopupList */
<![CDATA[
SELECT
POP_ID,
CONTENT AS IMG_ALT,
CASE WHEN
DATE(SUBDATE(NOW(), INTERVAL 7 DAY)) < DATE(REGDT)
THEN 'Y'
ELSE 'N'
END AS NEW_FLAG,
DATE_FORMAT(REGDT, '%Y-%m-%d') REGDT,
MAINZONE_IMAGE,
MAINZONE_IMAGE_FILE ,
SORT,
POP_NM,
USE_YN,
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = REGISTER_ID) REGISTER_ID ,
DEVICETYPE,
STR_TO_DATE(NTCE_BGNDE,'%Y%m%d') AS ntceBgnde,
STR_TO_DATE(NTCE_ENDDE,'%Y%m%d') AS ntceEndde
FROM MAIN_POPUP
WHERE 1=1
]]>
<isEqual property="useYn" compareValue="Y">
AND USE_YN = 'Y'
</isEqual>
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="">
AND ( POP_NM LIKE CONCAT ('%', #searchKeyword#,'%')
OR CONTENT LIKE CONCAT ('%', #searchKeyword#,'%')
)
</isEqual>
<isEqual property="searchCondition" compareValue="1">
AND POP_NM LIKE CONCAT ('%', #searchKeyword#,'%')
</isEqual>
<isEqual property="searchCondition" compareValue="2">
AND CONTENT LIKE CONCAT ('%', #searchKeyword#,'%')
</isEqual>
</isNotEmpty>
<isNotEmpty property="deviceType">
<isEqual property="deviceType" compareValue="P">
AND ( DEVICETYPE IS NULL OR DEVICETYPE = #deviceType# )
</isEqual>
<isEqual property="deviceType" compareValue="M">
AND DEVICETYPE = #deviceType#
</isEqual>
</isNotEmpty>
ORDER BY SORT
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<select id="mainPopup.selectMainPopupCount" resultClass="int">
/* mainPopup.selectMainPopupCount */
SELECT
COUNT(*) totcnt
FROM MAIN_POPUP
WHERE 1=1
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="">
AND ( POP_NM LIKE CONCAT ('%', #searchKeyword#,'%')
OR CONTENT LIKE CONCAT ('%', #searchKeyword#,'%')
)
</isEqual>
<isEqual property="searchCondition" compareValue="1">
AND POP_NM LIKE CONCAT ('%', #searchKeyword#,'%')
</isEqual>
<isEqual property="searchCondition" compareValue="2">
AND CONTENT LIKE CONCAT ('%', #searchKeyword#,'%')
</isEqual>
</isNotEmpty>
</select>
<select id="mainPopup.selectMainPopupVO" parameterClass="String" resultMap="MainPopupResultMap">
/* mainPopup.selectMainPopupVO */
SELECT
MP.POP_ID,
MP.CONTENT,
MP.REGDT,
MP.DEL,
MP.SORT,
MP.MAINZONE_IMAGE,
MP.MAINZONE_IMAGE_FILE,
MP.POP_NM,
MP.USE_YN,
DATE_FORMAT(MP.MODDT, '%Y-%m-%d %T') MODDT,
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = MP.REGISTER_ID) AS REGISTERID,
MP.DEVICETYPE,
MP.NTCE_BGNDE,
MP.NTCE_ENDDE
FROM MAIN_POPUP MP
WHERE MP.POP_ID = #popId#
</select>
<select id="mainPopup.selectMainPopupVOLink" parameterClass="String" resultMap="MainPopupLinkResultMap">
/* mainPopup.selectMainPopupVO */
SELECT
POP_ID,
MLINK,
COORDS,
SORT
FROM MAIN_POPUP_LINK
WHERE POP_ID = #popId#
order by SORT asc
</select>
<select id="mainPopup.selectMainPopupListRolling" resultMap="MainPopupResultMap">
/* mainPopup.selectMainPopupListRolling */
SELECT
MP.POP_ID,
MP.CONTENT,
MP.REGDT,
MP.DEL,
MP.SORT,
MP.MAINZONE_IMAGE,
MP.MAINZONE_IMAGE_FILE,
MP.POP_NM,
MP.USE_YN,
DATE_FORMAT(MP.MODDT, '%Y-%m-%d %T') MODDT,
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = MP.REGISTER_ID) AS REGISTERID,
MP.DEVICETYPE,
MP.NTCE_BGNDE,
MP.NTCE_ENDDE
FROM MAIN_POPUP MP
WHERE MP.NTCE_BGNDE IS NOT NULL
AND MP.NTCE_ENDDE IS NOT NULL
<![CDATA[
AND DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i') >= MP.NTCE_BGNDE
AND DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i') <= MP.NTCE_ENDDE
]]>
AND MP.USE_YN = 'Y'
ORDER BY MP.SORT
</select>
<delete id="mainPopup.deleteMainPopup" parameterClass="String">
DELETE FROM MAIN_POPUP WHERE POP_ID=#popId#
</delete>
<update id="mainPopup.resetMainPopupSort" parameterClass="mainPopupVO">
/*mainPopup.resetMainPopupSort*/
UPDATE MAIN_POPUP A ,
(SELECT ROW_NUMBER() OVER(ORDER BY SORT
<isEqual property="sortOver" compareValue="A">
, MODDT ASC
</isEqual>
<isEqual property="sortOver" compareValue="D">
, MODDT DESC
</isEqual>
) AS SORT1 , POP_ID FROM MAIN_POPUP
WHERE 1=1
ORDER BY SORT1
) B
SET A.SORT = B.SORT1
WHERE A.POP_ID = B.POP_ID
</update>
</sqlMap>

View File

@ -12,6 +12,10 @@
<typeAlias alias="PopupManageVO" type="itn.com.uss.ion.pwm.service.PopupManageVO" />
<typeAlias alias="popupzoneVO" type="itn.com.uss.ion.pwm.service.PopupzoneVO"/>
<typeAlias alias="mainzoneVO" type="itn.com.uss.ion.pwm.service.MainzoneVO"/>
<typeAlias alias="mainPopupVO" type="itn.com.uss.ion.bnr.pop.service.MainPopupVO"/>
<typeAlias alias="mainPopupLinkVO" type="itn.com.uss.ion.bnr.pop.service.MainPopupLinkVO"/>
<typeAlias alias="socialVO" type="itn.com.uss.ion.pwm.service.SocialVO"/>
<typeAlias alias="sortVO" type="itn.com.uss.ion.pwm.service.SortVO"/>
<!-- ::ResultMap 선언 -->
@ -653,6 +657,8 @@
)
</insert>
<update id="MainzoneManage.resetMainSort" parameterClass="mainzoneVO">
UPDATE MAINZONE A , (SELECT ROW_NUMBER() OVER(ORDER BY SORT) AS SORT1 , MAZ_ID FROM MAINZONE
WHERE 1=1
@ -837,6 +843,27 @@
WHERE A.MAZ_ID = B.MAZ_ID
</update>
<update id="MainzoneManage.resetMainPopup" parameterClass="mainPopupVO">
UPDATE MAIN_POPUP A ,
(
SELECT ROW_NUMBER() OVER
(
ORDER BY SORT
<isEqual property="sortOver" compareValue="A">
, MODDT ASC
</isEqual>
<isEqual property="sortOver" compareValue="D">
, MODDT DESC
</isEqual>
) AS SORT1 , POP_ID
FROM MAIN_POPUP
WHERE 1=1
ORDER BY SORT1
) B
SET A.SORT = B.SORT1
WHERE A.POP_ID = B.POP_ID
</update>
<!-- 소설 관리자 리스트 -->
<select id="SocialManage.selectSocialList" parameterClass="socialVO" resultClass="socialVO">
@ -1014,7 +1041,98 @@
AND MZ.USE_YN = 'Y'
ORDER BY MZ.SORT
</select>
<insert id="MainzoneManage.insertMainPopup" parameterClass="mainPopupVO">
INSERT INTO MAIN_POPUP (
POP_ID
, CONTENT
, SORT
, DEL
, MAINZONE_IMAGE_FILE
, MAINZONE_IMAGE
, REGDT
, MODDT
, POP_NM
, USE_YN
, REGISTER_ID
, DEVICETYPE
, NTCE_BGNDE
, NTCE_ENDDE
) VALUES (
#popId#
, #content#
, #sort#
, #del#
, #mainzoneImageFile#
, #mainzoneImage#
, now()
, now()
, #popNm#
, #useYn#
, #registerId#
, #devicetype#
, #ntceBgnde#
, #ntceEndde#
)
</insert>
<insert id="MainzoneManage.insertMainPopupLinkInfo" parameterClass="java.util.List">
INSERT INTO MAIN_POPUP_LINK (
POP_ID
, MLINK
, COORDS
, SORT
)
VALUES
<iterate conjunction=",">
(
#[].popId#
, #[].mlink#
, #[].coords#
, #[].sort#
)
</iterate>
</insert>
<update id="MainzoneManage.updateMainPopup" parameterClass="mainPopupVO">
UPDATE MAIN_POPUP
SET
CONTENT = #content#,
SORT = #sort#,
DEL = #del#,
MAINZONE_IMAGE_FILE = #mainzoneImageFile#,
MAINZONE_IMAGE = #mainzoneImage#,
MODDT = now(),
POP_NM = #popNm#,
USE_YN = #useYn#,
<isNotEmpty property="deviceType">
DEVICETYPE = #deviceType# ,
</isNotEmpty>
NTCE_BGNDE = #ntceBgnde#,
NTCE_ENDDE = #ntceEndde#
WHERE POP_ID = #popId#
</update>
<update id="MainzoneManage.updateMainPopupLinkInfo" parameterClass="mainPopupLinkVO">
UPDATE MAIN_POPUP_LINK
SET
MLINK = #mlink#
, COORDS = #coords#
, SORT = #sort#
WHERE POP_ID = #popId#
</update>
<delete id="MainzoneManage.deleteMainPopupLinkInfo" parameterClass="String">
DELETE FROM MAIN_POPUP_LINK
WHERE POP_ID = #popId#
</delete>
</sqlMap>

View File

@ -0,0 +1,236 @@
<%--
Class Name : EgovPopupList.jsp
Description : 팝업창관리 목록 페이지
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2009.09.16 장동한 최초 생성
author : 공통서비스 개발팀 장동한
since : 2009.09.16
Copyright (C) 2009 by MOPAS All right reserved.
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>메인이미지 관리</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
$(".img_cont").click(function(e){
clickEvent = true;
});
$(".check").click(function(e){
e.stopPropagation();
});
});
/* 메인창 수정 화면*/
function fn_mainzone_view(id, pageType){
document.modiForm.selectedId.value = id;
document.modiForm.pageType.value = "Modify";
document.modiForm.action = "<c:url value='/uss/ion/bnr/pop/mainPopupModify.do'/>";
document.modiForm.submit();
}
/* 메인창 등록화면*/
function fn_mainzone_insert_view(){
document.modiForm.pageType.value = "Insert";
document.modiForm.action = "<c:url value='/uss/ion/bnr/pop/mainPopupModify.do'/>";
document.modiForm.submit();
}
function doDep3(event){
event.preventDefault();
}
function linkPage(pageNo){
<c:if test="${!empty loginId}">
if(""!= document.listForm.searchKeyword.value){
updateRecentSearch();//최근검색어 등록
}
</c:if>
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchCondition.value = $('#searchCondition').val();
listForm.submit();
}
function fnCheckAll() {
var checkField = document.listForm.del;
if(document.listForm.checkAll.checked) {
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
checkField[i].checked = true;
}
} else {
checkField.checked = true;
}
}
} else {
if(checkField) {
if(checkField.length > 1) {
for(var j=0; j < checkField.length; j++) {
checkField[j].checked = false;
}
} else {
checkField.checked = false;
}
}
}
}
/* 체크된 메인배너 목록 삭제 */
function fn_mainzone_contest_delete(){
if($("input[name=del]:checked").length == 0){
alert("선택된 항목이 없습니다.");
return;
}
if (confirm("해당 메인이미지 삭제하시겠습니까?")){
frm = document.listForm;
frm.action = "<c:url value='/uss/ion/bnr/pop/mainPopupListDelete.do' />";
frm.submit();
}
}
/* 테마별 색상맞추기 */
$(window).load(function() {
$('table.bbs01_list td.subject a').hover(
function () {
$(this).css("color","#d10000");
},
function () {
$(this).css("color","#333333");
}
);
});
</script>
</head>
<body>
<form name="listForm" action="<c:url value='/uss/ion/bnr/pop/mainPopupList.do'/>" method="post">
<input name="pageIndex" type="hidden" value="<c:out value='${mainPopupVO.pageIndex}'/>"/>
<input type="hidden" name="selectedId" />
<input type="hidden" name="pageType" />
<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>
</div>
<div class="pageCont">
<div class="listSerch">
<c:if test="${siteId eq 'super'}">
<select name="searchConditionSite" id="searchConditionSite" title="사이트검색">
<option value="" <c:if test="${empty userSearchVO.searchConditionSite }">selected="selected"</c:if> >전체 사이트</option>
<c:forEach var="result" items="${siteManageList}" varStatus="status">
<option value="${result.siteId}" <c:if test="${result.siteId eq mainPopupVO.searchConditionSite }">selected="selected"</c:if> >${result.siteNm}</option>
</c:forEach>
</select>
</c:if>
<select name="searchCondition" id="searchCondition" class="select" title="검색조건선택">
<option value=''>전체</option>
<option value='1' <c:if test="${mainPopupVO.searchCondition == '1'}">selected</c:if>>제목</option>
<option value='2' <c:if test="${mainPopupVO.searchCondition == '2'}">selected</c:if>>대체텍스트</option>
</select>
<input id="searchKeyword" name="searchKeyword" class="recentSearch" type="text" value="<c:out value='${mainPopupVO.searchKeyword}'/>" size="40" title="검색" maxlength="100"/>
<input type="button" class="btnType1" value="검색" onclick="linkPage(1); return false;">
</div>
<div class="listTop">
<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
<div class="rightWrap">
<input type="button" class="printBtn" >
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);">
<option value='8' <c:if test="${mainPopupVO.pageUnit == '8' or searchVO.pageUnit == ''}">selected</c:if>>8개씩 보기</option>
<option value='16' <c:if test="${mainPopupVO.pageUnit == '16'}">selected</c:if>>16개씩 보기</option>
<option value='24' <c:if test="${mainPopupVO.pageUnit == '24'}">selected</c:if>>24개씩 보기</option>
</select>
</div>
</div>
<div class="galleryListWrap">
<ul class="inline">
<c:forEach var="result" items="${mainPopupList}" varStatus="status">
<li onclick="javascript:fn_mainzone_view('${result.popId}'); return false;">
<div class="check"><input type="checkbox" name="del" id="check_box${status.index}" value="${result.popId}"></div>
<%-- <div class="img_cont_check"><input type="checkbox" name="del" id="img_cont_check_box${status.index}" class="img_cont_check_box" value="${result.mazId}"><label for="img_cont_check_box${status.index}"></label></div> --%>
<ul class="listCategory">
<li class="useCg">
<c:if test="${result.useYn eq 'Y'}">
사용
</c:if>
<c:if test="${result.useYn ne 'Y'}">
미사용
</c:if>
</li>
</ul>
<div class="imgBox"><img onerror="this.src='/pb/img/noImg.png'" src="<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${result.mainzoneImageFile}"/>" alt=""></div>
<%-- <div class="imgBox"><img onerror="this.src='/pb/img/noImg.png'" src="<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${result.mainzoneImageFile}"/>" alt=""></div> --%>
<div class="listInfo">
<h3>${result.mazNm}</h3>
<table>
<tr>
<td colspan="2">작성자 : ${result.registerId}</td>
</tr>
<tr>
<td>노출순서 : ${result.sort}</td>
<td class="right">${result.ntceBgnde} ~ ${result.ntceEndde}</td>
</tr>
</table>
</div>
</li>
</c:forEach>
</ul>
<c:if test="${empty mainPopupList}">
<div class="board1_btn">
<ul style="text-align: center;"><spring:message code="common.nodata.msg" /></ul>
</div>
</c:if>
</div>
<div class="btnWrap">
<input type="button" class="btnType2" value="삭제" onclick="fn_mainzone_contest_delete(); return false;">
<input type="button" class="btnType1" value="등록" onclick="fn_mainzone_insert_view(); return false;">
</div>
<!-- 페이지 네비게이션 시작 -->
<c:if test="${!empty mainPopupList}">
<div class="page">
<ul class="inline">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</ul>
</div>
</c:if>
<!-- //페이지 네비게이션 끝 -->
</div>
</div>
</form>
<form name="modiForm" method="get" action="<c:url value='/uss/ion/bnr/pop/mainPopupModify.do'/>" >
<input name="selectedId" type="hidden" />
<input name="pageType" type="hidden" />
</form>
<form name="searchForm" method="get" action="<c:url value='/uss/ion/bnr/pop/mainPopupList.do'/>">
<input name="pageIndex" type="hidden" value="1" />
<input name="searchCondition" type="hidden" />
<input name="searchKeyword" type="hidden" />
<input name="searchConditionSite" type="hidden" />
</form>
</body>
</html>

View File

@ -0,0 +1,601 @@
<%--
Class Name : EgovPopupList.jsp
Description : 팝업창관리 목록 페이지
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2009.09.16 장동한 최초 생성
author : 공통서비스 개발팀 장동한
since : 2009.09.16
Copyright (C) 2009 by MOPAS All right reserved.
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>팝업창관리 관리</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js' />"></script>
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javaScript" language="javascript">
$( document ).ready(function(){
makeDate('ntceBgndeYYYMMDD');
makeTomorrow('ntceEnddeYYYMMDD');
});
/**
* URL에서 빈 값의 파라미터를 제거하는 함수
* @param {string} url 원본 URL 문자열
* @returns {string} 불필요한 파라미터가 제거된 URL
*/
function cleanUrlParameters(url) {
try {
// URL이 절대경로 (/web/... 형태)인지 확인
let hasFullDomain = url.startsWith("http://") || url.startsWith("https://");
let urlObj;
if (hasFullDomain) {
// 도메인이 포함된 URL 처리
urlObj = new URL(url);
} else {
// 절대경로 URL 처리 (가상의 도메인 추가 후 파싱)
urlObj = new URL("https://www.munjaon.co.kr" + url);
}
let params = new URLSearchParams(urlObj.search);
// ❗ 값이 비어있는 모든 파라미터 제거
for (let [key, value] of [...params.entries()]) { // `params.entries()`를 배열로 변환하여 반복
if (!value.trim()) { // 값이 비어있는 경우 제거
params.delete(key);
}
}
// 정리된 URL 반환
let cleanedPath = urlObj.pathname + (params.toString() ? "?" + params.toString() : "");
// 정리된 URL 반환 (도메인을 제거하고 절대경로만 반환)
return cleanedPath.replace(/^https:\/\/www\.munjaon\.co\.kr/, "");
} catch (e) {
console.warn("잘못된 URL 형식:", url);
return url; // URL 파싱 실패 시 원본 유지
}
}
//게시기간이 없으면 초기 값 입력
function makeDate(id){
if($("#"+id).val()== '--'){
let today = new Date();
let formattedDate = today.toISOString().split('T')[0]; // YYYY-MM-DD 형식
$("#"+id).val(formattedDate);
}
}
function makeTomorrow(id){
if($("#"+id).val()== '--'){
// 하루 후 날짜 계산
let tomorrow = new Date();
tomorrow.setDate(new Date().getDate() + 1);
let formattedDateTomorrow = tomorrow.toISOString().split('T')[0]; // YYYY-MM-DD 형식
$("#"+id).val(formattedDateTomorrow);
}
}
/* pagination 페이지 링크 function */
function goList(){
document.searchForm.submit();
}
/* 배너 삭제 function */
function fn_mainzone_delete() {
var msg;
msg = "해당 메인이미지를 삭제하시겠습니까?";
if (confirm(msg)) {
frm = document.writeForm;
frm.del.value = frm.popId.value ;
frm.action = "<c:url value='/uss/ion/bnr/pop/mainPopupListDelete.do'/>";
frm.submit();
}
}
function validate(method_parm) {
frm = document.writeForm;
if(frm.popNm.value=="") {
alert("비주얼명을 입력해 주십시오");
frm.popNm.focus();
return false;
}
if(frm.sort.value=="") {
alert("노출순서를 입력해 주십시오");
frm.sort.focus();
return false;
}else{
var regexp = /^[0-9]*$/
if( !regexp.test(frm.sort.value) ) {
alert("노출순서에는 숫자만 입력하세요");
frm.sort.focus();
return false;
}
}
// 링크 및 순서 값 검증 추가
let linkRows = document.querySelectorAll("#linkTable tr");
for (let i = 0; i < linkRows.length; i++) {
let linkInput = document.querySelector('input[name="mainPopupLinkList['+i+'].mlink"]');
let coordInput = document.querySelector('input[name="mainPopupLinkList['+i+'].coords"]');
let sortInput = document.querySelector('input[name="mainPopupLinkList['+i+'].sort"]');
if (!linkInput.value && !coordInput.value) {
if(sortInput.value){
let trElement = sortInput.closest("tr");
if (trElement) {
trElement.remove();
}
}
continue; // 요소가 없으면 건너뛴다.
}
if (linkInput.value.trim() === "") {
alert('['+(i + 1)+']번째 링크주소를 입력해 주십시오');
linkInput.focus();
return false;
}
if (coordInput.value.trim() === "") {
alert('['+(i + 1)+']번째 링크좌표를 입력해 주십시오');
coordInput.focus();
return false;
}
if (sortInput.value.trim() === "") {
alert('['+(i + 1)+']번째 순서를 입력해 주십시오');
sortInput.focus();
return false;
}
}
console.log('isTbodyEmpty("tbody_fiielist") : ', isTbodyEmpty("tbody_fiielist"));
if(isTbodyEmpty("tbody_fiielist")){
alert("이미지를 첨부해 주세요");
return false;
}
if(frm.content.value=="") {
alert("대체텍스트를 입력해 주십시오");
frm.content.focus();
return false;
}
var ntceBgndeYYYMMDD = document.getElementById('ntceBgndeYYYMMDD').value;
var ntceEnddeYYYMMDD = document.getElementById('ntceEnddeYYYMMDD').value;
console.log("ntceBgndeYYYMMDD ::: "+ntceBgndeYYYMMDD);
console.log("ntceEnddeYYYMMDD ::: "+ntceEnddeYYYMMDD);
if(ntceBgndeYYYMMDD ==""){
alert("게시기간 시작일을 입력해 주세요.");
return false;
}else if(ntceEnddeYYYMMDD == ""){
alert("게시기간 종료일을 입력해 주세요.");
return false;
}else{
var iChkBeginDe = Number( ntceBgndeYYYMMDD.replaceAll("-","") );
var iChkEndDe = Number( ntceEnddeYYYMMDD.replaceAll("-","") );
if(iChkBeginDe > iChkEndDe || iChkEndDe < iChkBeginDe ){
alert("게시시작일자는 게시종료일자 보다 클수 없고,\n게시종료일자는 게시시작일자 보다 작을수 없습니다. ");
return;
}
frm.ntceBgnde.value = ntceBgndeYYYMMDD.replaceAll('-','') + fn_egov_SelectBoxValue('ntceBgndeHH') + fn_egov_SelectBoxValue('ntceBgndeMM');
frm.ntceEndde.value = ntceEnddeYYYMMDD.replaceAll('-','') + fn_egov_SelectBoxValue('ntceEnddeHH') + fn_egov_SelectBoxValue('ntceEnddeMM');
}
var msg = "메인 팝업을 등록하시겠습니까?";
if(method_parm == "mainzone_U"){
msg ="메인 팝업을 수정하시겠습니까?";
}
if(!confirm(msg)){
return false;
}
goSave(method_parm);
}
function fn_egov_downFile(atchFileId, fileSn){
window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"'/>");
}
function isTbodyEmpty(tbodyId) {
const tbody = document.getElementById(tbodyId);
if (!tbody) {
console.error("해당 ID를 가진 tbody가 없습니다.");
return false;
}
// tbody 내부에 <tr> 태그가 있는지 확인
return tbody.querySelector("tr") === null;
}
/* ********************************************************
* SELECT BOX VALUE FUNCTION
******************************************************** */
function fn_egov_SelectBoxValue(sbName)
{
var FValue = "";
for(var i=0; i < document.getElementById(sbName).length; i++)
{
if(document.getElementById(sbName).options[i].selected == true){
FValue=document.getElementById(sbName).options[i].value;
}
}
return FValue;
}
function addLinkRow() {
// 링크 목록 tbody
let tbody = document.getElementById("linkTable");
let rowCount = tbody.getElementsByTagName("tr").length; // 현재 tr 개수 가져오기
// 새로운 tr 생성
let newRow = document.createElement("tr");
let rowCountP = rowCount + 1;
// 첫 번째 컬럼 (링크 주소)
let linkTh = document.createElement("th");
linkTh.innerHTML = '<span>['+rowCountP+']링크주소</span>';
let linkTd = document.createElement("td");
linkTd.innerHTML = '<input type="text" name="mainPopupLinkList['+rowCount+'].mlink" class="mlink" maxlength="200" />';
// 두 번째 컬럼 (링크 좌표)
let coordTh = document.createElement("th");
coordTh.innerHTML = '<span>링크좌표</span>';
let coordTd = document.createElement("td");
coordTd.innerHTML = '<input type="text" name="mainPopupLinkList['+rowCount+'].coords" maxlength="200" />';
// 세 번째 컬럼 (링크 좌표)
let sortTh = document.createElement("th");
sortTh.innerHTML = '<span>순서</span>';
let sortTd = document.createElement("td");
sortTd.innerHTML = '<input type="text" name="mainPopupLinkList['+rowCount+'].sort" maxlength="200" value="'+rowCountP+'" />';
// tr에 추가
newRow.appendChild(linkTh);
newRow.appendChild(linkTd);
newRow.appendChild(coordTh);
newRow.appendChild(coordTd);
newRow.appendChild(sortTh);
newRow.appendChild(sortTd);
// tbody에 추가
tbody.appendChild(newRow);
}
</script>
<style>
.date_format{width:91px !important;}
.del_file_btn{border: none;background-color: transparent;background-image: url(/direct/img/upload_delect_img.png);background-repeat: no-repeat;background-position: center center;vertical-align: middle;margin-top: -4px;margin-right: 15px;}
.file_size{color: #0388d2;font-weight: bold;}
.uploaded_obj{width: 100%;}
</style>
</head>
<body>
<form:form commandName="mainPopupVO" name="writeForm" enctype="multipart/form-data" method="post">
<input type="hidden" name="deviceType" id="deviceType" value="P"/>
<input type="hidden" name="selectedId" />
<form:input path="popId" type="hidden" />
<form:input path="del" type="hidden" />
<form:input path="mainzoneImageFile" type="hidden" />
<form:hidden path="ntceBgnde" />
<form:hidden path="ntceEndde" />
<input type="hidden" name="beSort" value="${mainPopupVO.beSort}" />
<!-- 드래그앤 드롭 파라미터 -->
<input type="hidden" name="menuName" value="mainPopup" />
<input type="hidden" name="fmsId" value="${mainPopupVO.popId}" />
<input type="hidden" name="limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
<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>
</div>
<div class="pageNav">
<img src="/pb/img/common/homeIcon.png" alt="홈이미지">&ensp;>&ensp;<p class="topDepth">비주얼관리</p>&ensp;>&ensp;<p class="subDepth">메인비주얼관리</p>
</div>
<div class="pageCont">
<div class="tableWrap">
<p class="right fwMd"><span class="tType4 c_e40000 fwBold">*</span>는 필수입력 항목입니다.</p>
<table class="tbType2">
<colgroup>
<col style="width: 10%">
<col style="width: 30%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
<col style="width: 20%">
</colgroup>
<tbody>
<c:if test="${not empty mainPopupVO.popId }">
<tr>
<th><span>원본이미지</span></th>
<td colspan="5">
<c:if test="${mainPopupVO.popId == ''}">
<div class="imgBox"></div>
</c:if>
<c:if test="${mainPopupVO.popId != ''}">
<img alt="${mainPopupVO.content}" onerror="this.src='/pb/img/noImg.png'" src='<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${mainPopupVO.mainzoneImageFile}"/>' style="max-width:300px;padding: 10px;" />
<%-- <img alt="${mainPopupVO.content}" onerror="this.src='/images/no_img.jpg'" src='<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${mainPopupVO.mainzoneImageFile}"/>' style="max-width:600px;" /> --%>
</c:if>
</td>
</tr>
</c:if>
<!-- <tr> -->
<!-- <th class="td_title1"><span class="star_t">*</span>기기종류</th> -->
<!-- <td colspan="5"> -->
<!-- <input type="radio" name="deviceType" id="deviceType" value="P" style="margin-left: 13px; margin-right: 5px;" -->
<!-- checked="checked" -->
<%-- ${mainPopupVO.deviceType eq 'P' or mainPopupVO.deviceType eq '' ? 'checked="checked"' : ''} --%>
<!-- >PC -->
<!-- <input type="radio" name="deviceType" id="deviceType" value="M" style="margin-left: 13px; margin-right: 5px;" -->
<%-- ${mainPopupVO.deviceType eq 'M' ? 'checked="checked"' : ''} --%>
<!-- >모바일 -->
<!-- </td> -->
<!-- </tr> -->
<tr>
<th><span class="reqArea">비주얼명</span></th>
<td colspan="5">
<form:input path="popNm" maxlength="30" />
</td>
</tr>
<tr>
<th><span class="reqArea">사용여부</span></th>
<td colspan="5">
<input type="radio" name="useYn" id="useY" value="Y" style="margin-left: 13px; margin-right: 5px;" ${empty mainPopupVO.useYn or mainPopupVO.useYn eq 'Y' or mainPopupVO.useYn eq '' ? 'checked="checked"' : ''} />
<label for="useY">사용</label>
<input type="radio" name="useYn" id="useN" value="N" style="margin-left: 13px; margin-right: 5px;" ${mainPopupVO.useYn eq 'N' ? 'checked="checked"' : ''} />
<label for="useN">미사용</label>
</td>
</tr>
<tr>
<th><span class="reqArea">노출순서</span></th>
<td colspan="5">
<form:input path="sort" maxlength="10" onkeyup="this.value=this.value.replace(/[^-\.0-9]/g,'')"/>
</td>
</tr>
<tr>
<th><span class="reqArea">게시기간</span></th>
<td colspan="5">
<input type="hidden" name="cal_url" id="cal_url" value="<c:url value='/sym/cmm/EgovNormalCalPopup.do'/>" >
<input type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="10" maxlength="10" class="readOnlyClass" value="<c:out value="${fn:substring(mainPopupVO.ntceBgnde, 0, 4)}"/>-<c:out value="${fn:substring(mainPopupVO.ntceBgnde, 4, 6)}"/>-<c:out value="${fn:substring(mainPopupVO.ntceBgnde, 6, 8)}"/>" readonly>
<a href="#" onClick="javascript:fn_egov_NormalCalendar(document.forms.mainPopupVO, document.forms.mainPopupVO.ntceBgndeYYYMMDD);">
<input type="button" class="calBtn">
<%-- <img src="<c:url value='/images/egovframework/com/cmm/icon/bu_icon_carlendar.gif' />" align="middle" style="border:0px" alt="달력창팝업버튼이미지"> --%>
</a>
<form:select path="ntceBgndeHH" class="date_format">
<form:options items="${ntceBgndeHH}" itemValue="code" itemLabel="codeNm"/>
</form:select>시
<form:select path="ntceBgndeMM" class="date_format">
<form:options items="${ntceBgndeMM}" itemValue="code" itemLabel="codeNm"/>
</form:select>분
&nbsp&nbsp~&nbsp&nbsp
<input type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="10" maxlength="10" class="readOnlyClass" value="<c:out value="${fn:substring(mainPopupVO.ntceEndde, 0, 4)}"/>-<c:out value="${fn:substring(mainPopupVO.ntceEndde, 4, 6)}"/>-<c:out value="${fn:substring(mainPopupVO.ntceEndde, 6, 8)}"/>" readonly>
<a href="#" onClick="javascript:fn_egov_NormalCalendar(document.forms.mainPopupVO, document.forms.mainPopupVO.ntceEnddeYYYMMDD);">
<input type="button" class="calBtn">
<%-- <img src="<c:url value='/images/egovframework/com/cmm/icon/bu_icon_carlendar.gif' />" align="middle" style="border:0px" alt="달력창팝업버튼이미지"> --%>
</a>
<form:select path="ntceEnddeHH" class="date_format">
<form:options items="${ntceEnddeHH}" itemValue="code" itemLabel="codeNm"/>
</form:select>시
<form:select path="ntceEnddeMM" class="date_format">
<form:options items="${ntceEnddeMM}" itemValue="code" itemLabel="codeNm"/>
</form:select>분
</td>
</tr>
<tbody id="linkTable">
<c:choose>
<c:when test="${not empty mainPopupVO.mainPopupLinkList}">
<c:forEach var="link" items="${mainPopupVO.mainPopupLinkList}" varStatus="status">
<tr>
<th><span>[${status.index + 1}]링크주소</span></th>
<td>
<form:input path="mainPopupLinkList[${status.index}].mlink" class="mlink" maxlength="200" />
</td>
<th><span>링크좌표</span></th>
<td>
<form:input path="mainPopupLinkList[${status.index}].coords" class="mlink" maxlength="200" />
</td>
<th><span>순서</span></th>
<td>
<form:input path="mainPopupLinkList[${status.index}].sort" class="mlink" maxlength="200" oninput="this.value = this.value.replace(/[^0-9]/g, '');" />
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<!-- 값이 없을 때 빈 input 생성 -->
<tr>
<th><span>[1]링크주소</span></th>
<td>
<form:input path="mainPopupLinkList[0].mlink" class="mlink" maxlength="200" />
</td>
<th><span>링크좌표</span></th>
<td>
<form:input path="mainPopupLinkList[0].coords" maxlength="200" />
</td>
<th><span>순서</span></th>
<td>
<form:input path="mainPopupLinkList[0].sort" maxlength="200" value="1" oninput="this.value = this.value.replace(/[^0-9]/g, '');" />
</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
<tr>
<td colspan="4">
<button type="button" class="btnType1" onclick="addLinkRow()">링크 추가</button>
</td>
</tr>
<tr>
<th><span class="reqArea">파일 첨부</span></th>
<td class="upload_area" colspan="5">
<div class="file_upload_box no_img_box fileWrap">
<table>
<colgroup>
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th>파일명</th>
<th>크기</th>
<th>등록일시</th>
<th>삭제</th>
</tr>
</thead>
</table>
</div>
<div class="fileWrap fileAfter file_list_div asset_no_use_pro_table" style="display:none">
<table>
<colgroup>
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th>파일명</th>
<th>크기</th>
<th>등록일시</th>
<th>삭제</th>
</tr>
</thead>
<tbody id="tbody_fiielist">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_${fileList.atchFileId}_${fileList.fileSn} uploaded_obj">
<td class="file_name">
<a href="javascript:fn_egov_downFile('${fileList.atchFileId}','${fileList.fileSn}')">
<img src="/direct/img/upload_hwp_img.png" alt="" />
<span class="file_name_text">${fileList.orignlFileNm}</span>
</a>
</td>
<td><span class="file_size_text" value="${fileList.fileMg}"></span></td>
<td>${fileList.creatDt}</td>
<td>
<input type="button" class="delBtn" onclick="delAtchFile('${fileList.atchFileId}', '${fileList.fileSn}'); return false;">
</td>
<input type="hidden" name="fileSize" class="item_file_size" value="${fileList.fileMg}" >
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="fileInfo file_list_div">
<ul class="inline">
<li>
<p><span class="c_456ded fwBold totalfileCount">0</span>개 <span class="c_456ded fwBold totalfileSize">0MB</span></p>
</li>
<li>
<p>최대 <span class="c_e40000 fwBold limitcount_li"></span>개 <span class="c_e40000 fwBold upload_number">50MB</span>제한</p>
</li>
</ul>
</div>
<div class="uploadBtm">
<input type="file" id="file_temp" name="file_temp" class="uploadFile">
<!-- <span class="uploadTtype4">메인비주얼 이미지 크기는 </span><span class="uploadTtype4" style="color: red;">1920 X 843 </span>입니다.</p> -->
</div>
</td>
</tr>
<tr>
<th><span class="reqArea">대체텍스트</span></th>
<td colspan="5">
<form:input path="content" maxlength="500" />
</td>
</tr>
<%-- <tr>
<th class="td_title1"><span class="star_t">*</span>첨부 파일</th>
<td colspan="5" class="td_txt_exist">
<c:import url="/cmm/fms/selectFileInfsForUpdate.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${mainPopupVO.mainzoneImageFile }" />
<c:param name="img_view" value="N" />
<c:param name="img_view_w" value="200" />
<c:param name="img_view_h" value="200" />
<c:param name="updateFlag" value="N" />
<c:param name="img_change_view" value="Y" />
</c:import>
</td>
</tr> --%>
<c:if test="${!empty mainPopupVO.popId}">
<tr>
<th><span class="reqArea">최종수정일</span></th>
<td>
${mainPopupVO.moddt}
</td>
</tr>
<tr>
<th><span class="reqArea">작성자</span></th>
<td>
${mainPopupVO.registerId}
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
<div class="btnWrap right">
<input type="button" class="btnType1 bg_888888" value="목 록" onclick="goList(); return false;" >
<c:if test="${!empty mainPopupVO.popId }">
<input type="button" class="btnType1 bg_ed4545" value="삭 제" onclick="fn_mainzone_delete(); return false;" >
<input type="button" class="btnType1" value="수 정" onclick="validate('mainzone_U'); return false;">
</c:if>
<c:if test="${empty mainPopupVO.popId }">
<input type="button" class="btnType1" value="저 장" onclick="validate('mainzone_I'); return false;">
</c:if>
</div>
</div>
</div>
</form:form>
<form name="searchForm" id="searchForm" method="get" action="<c:url value='/uss/ion/bnr/pop/mainPopupList.do'/>" ></form>
</body>
</html>

View File

@ -1,681 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>한국공예·디자인문화진흥원</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="description" content="한국공예·디자인문화진흥원에 대한 정보를 제공합니다.">
<meta name="keywords" content="한국공예·디자인문화진흥원">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="/js/tab.js"></script>
<link href="/css/style.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/css/style.min.css">
<link href="/js/font-awesome/css/font-awesome.min.css" rel="stylesheet">
<link href="/css/page.css" rel="stylesheet">
<link rel="stylesheet" href="/css/flexslider.css" type="text/css" media="screen" /><!-- 이미지슬라이드 -->
<script defer src="/js/jquery.flexslider.js"></script>
<link href="/css/index.css" rel="stylesheet">
<script type="text/javascript">
$(document).ready(function(){
if($(window).width() < 701){
$('.main_magazine').attr("onclick", "javascript:location.href='${popupzoneList_05[0].mlink}'");
}
// 실서버
if($(location).attr('host').indexOf("kcdf.or.kr") != -1){
if($(location).attr('host').indexOf("www") == -1){
var strurl = $(location).attr('href');
strurl = strurl.replace("kcdf.or.kr", "www.kcdf.or.kr");
window.location.replace(strurl);
}
}
//레이어 팝업 띄우기
<c:forEach var="popupListData" items="${popupList}" varStatus="status" end="10">
<c:if test="${popupListData.popupType eq 'L'}">
if(fnGetCookie('layer_${popupListData.popupId}') == null){
$("#layer_pop_${popupListData.popupId}").fadeIn();
}
</c:if>
</c:forEach>
//윈도우 팝업 띄우기
<c:forEach var="popupListData" items="${popupList}" varStatus="status" end="10">
<c:if test="${popupListData.popupType eq 'W'}">
if(fnGetCookie('${popupListData.popupId}') == null ){
fn_openPopup('${popupListData.popupId}', '${popupListData.sortNum}','${popupListData.popupWidthSize}','${popupListData.popupVrticlSize}','${popupListData.popupWidthLc}','${popupListData.popupVrticlLc}');
}
</c:if>
</c:forEach>
});
function fn_layerClose(popupId){
$("#layer_pop_"+popupId).fadeOut();
}
function fn_egov_inqire_notice(bbsId, nttId) {
document.frm.bbsId.value = bbsId;
document.frm.nttId.value = nttId;
document.frm.method = "get";
if("EXTBBSM_000000000002" == bbsId){ //입찰
document.frm.action = "/web/cop/bbs/viewExtBoard.do";
}else{
document.frm.action = "/web/cop/bbsWeb/selectBoardArticle.do";
}
//document.frm.action = "/web/cop/bbsWeb/selectBoardArticle.do";
document.frm.submit();
}
function fn_egov_inqire_notice_secd(bbsId, nttId, seCd) {
document.frmSecd.bbsId.value = bbsId;
document.frmSecd.nttId.value = nttId;
document.frmSecd.seCd.value = seCd;
document.frmSecd.method = "get";
if("EXTBBSM_000000000002" == bbsId){ //입찰
document.frmSecd.action = "/web/cop/bbs/selectExtBbsList.do";
document.frmSecd.submit();
}else{
document.frmSecd.action = "/web/cop/bbsWeb/selectBoardArticle.do";
document.frmSecd.submit();
}
}
function checkMobileDevice() {
var mobileKeyWords = new Array('Android', 'iPhone', 'iPod', 'BlackBerry', 'Windows CE', 'SAMSUNG', 'LG', 'MOT', 'SonyEricsson');
for (var info in mobileKeyWords) {
if (navigator.userAgent.match(mobileKeyWords[info]) != null) {
return true;
}
}
return false;
}
function fn_egov_addNotice() {
document.frm.method = "get";
document.frm.bbsId.value = "BBSMSTR_000000000153";
document.frm.action = "/web/cop/bbs/addBoardArticle.do";
document.frm.submit();
}
/* ********************************************************
* 팝업창 오픈 쿠키 정보 OPEN
******************************************************** */
function fnGetCookie(name) {
var prefix = name + "=";
var cookieStartIndex = document.cookie.indexOf(prefix);
if (cookieStartIndex == -1) return null;
var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}
/* ********************************************************
* 쿠키설정
******************************************************** */
function fnSetCookiePopup( name, value, expiredays ) {
var todayDate = new Date();
todayDate.setDate( todayDate.getDate() + expiredays );
document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}
/* ********************************************************
* 체크버튼 클릭시
******************************************************** */
function fnPopupCheck(popupId , typeFlag) {
fnSetCookiePopup( typeFlag+"_"+popupId , "done" , 1);
fn_layerClose(popupId);
}
function fn_openPopup(popupId,seq,width,height,x,y){
if(width < 200){
width = 200;
}
if(height < 200){
height = 200;
}
var openPopup = window.open('<c:url value='/web/main/EgovPopup.do'/>'+'?popupId='+popupId,
'pop_'+popupId,'width='+width+',height='+height+',top='+y+',left='+x);
if(openPopup != null){
if (window.focus) {openPopup.focus()}
}
}
</script>
<style>
.btn{ background: none;}
.btn:hover {background:none;}
</style>
</head>
<body>
<section class="main">
<!-- 메인비주얼 -->
<!-- <div class="visual_txt"><img src="/img/index/visual_txt.png" alt="한국공예디자인문화진흥원"></div> -->
<div id="slides" class="visual" style="cursor:pointer;">
<c:forEach var="result" items="${mainzoneList}" varStatus="status">
<img alt="${result.mazNm}" onerror="this.src='/images/no_img.jpg'" src='<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${result.mainzoneImageFile}"/>'
<c:if test="${not empty result.mlink}" >
onclick="window.open('${result.mlink}', '_blank');"
</c:if>
/>
</c:forEach>
</div>
<script src="/js/jquery.slides.min.js"></script>
<script type="text/javascript">
$('#slides').slidesjs({
play: {
active: true,
auto: false,
interval: 9000,
navigation:false,
swap: true,
effect : "slide"
},
navigation: {
active: true
},
});
</script>
<!-- 메인 공지글 -->
<div class="main_board_pc">
<div class="main_board">
<div class="main_board_box">
<div class="board_title">공지</div>
<div class="board_more"><a href="/web/cop/bbsWeb/selectBoardList.do?bbsId=BBSMSTR_000000000122">more +</a></div>
<div class="board_list">
<ul>
<c:forEach var="result" items="${noticeMap}" varStatus="status">
<li><span class="lt_list">
<a href="javascript:fn_egov_inqire_notice('${result.bbsId}', '${result.nttId}');">
<c:out value="${result.nttSj}" />
</a>
</span><span class="lt_date">${result.frstRegisterPnttm}</span></li>
</c:forEach>
</ul>
</div>
</div>
<div class="main_board_box">
<div class="board_title">사업</div>
<div class="board_more"><a href="/web/cop/bbsWeb/selectBoardList.do?bbsId=BBSMSTR_000000000119&seCd=SE01">more +</a></div>
<div class="board_list">
<ul>
<c:forEach var="result" items="${bizMap}" varStatus="status">
<li><span class="lt_list">
<a href="javascript:fn_egov_inqire_notice_secd('${result.bbsId}', '${result.nttId}' , '${result.seCd}' );">
<c:out value="${result.nttSj}" />
</a>
</span><span class="lt_date">${result.frstRegisterPnttm}</span></li>
</c:forEach>
</ul>
</div>
</div>
<div class="main_board_box">
<div class="board_title">입찰</div>
<div class="board_more"><a href="/web/cop/bbs/selectExtBbsList.do?bbsId=EXTBBSM_000000000002">more +</a></div>
<div class="board_list">
<ul>
<c:forEach var="result" items="${bidMap}" varStatus="status">
<li><span class="lt_list">
<a href="javascript:fn_egov_inqire_notice('${result.bbsId}', '${result.nttId}');">
<c:out value="${result.nttSj}" />
</a>
</span><span class="lt_date">${result.frstRegisterPnttm}</span></li>
</c:forEach>
</ul>
</div>
</div>
<div class="main_board_box">
<div class="board_title">채용</div>
<div class="board_more"><a href="/web/cop/bbsWeb/selectBoardList.do?bbsId=BBSMSTR_000000000124&seCd=SE01">more +</a></div>
<div class="board_list">
<ul>
<c:forEach var="result" items="${hireMap}" varStatus="status">
<li><span class="lt_list">
<a href="javascript:fn_egov_inqire_notice_secd('${result.bbsId}', '${result.nttId}' , '${result.seCd}' );">
<c:out value="${result.nttSj}" />
</a>
</span><span class="lt_date">${result.frstRegisterPnttm}</span></li>
</c:forEach>
</ul>
</div>
</div>
</div>
</div>
<div class="main_board_mobile">
<ul class="tab_main">
<li class="current" data-tab="tab1">공지</li>
<li data-tab="tab2">입찰</li>
<li data-tab="tab3">사업</li>
<li data-tab="tab4">채용</li>
</ul>
<!--공지-->
<div class="tabcontent current" id="tab1">
<div class="main_board_box">
<div class="board_more"><a href="/web/cop/bbsWeb/selectBoardList.do?bbsId=BBSMSTR_000000000122">more +</a></div>
<div class="board_list">
<ul>
<c:forEach var="result" items="${noticeMap}" varStatus="status">
<li><span class="lt_list">
<a href="javascript:fn_egov_inqire_notice('${result.bbsId}', '${result.nttId}');">
<c:out value="${result.nttSj}" />
</a>
</span><span class="lt_date">${result.frstRegisterPnttm}</span></li>
</c:forEach>
</ul>
</div>
</div>
</div>
<!--입찰-->
<div class="tabcontent" id="tab2">
<div class="main_board_box">
<div class="board_more"><a href="/web/cop/bbs/selectExtBbsList.do?bbsId=EXTBBSM_000000000002">more +</a></div>
<div class="board_list">
<ul>
<c:forEach var="result" items="${bidMap}" varStatus="status">
<li><span class="lt_list">
<a href="javascript:fn_egov_inqire_notice('${result.bbsId}', '${result.nttId}' );">
<c:out value="${result.nttSj}" />
</a>
</span><span class="lt_date">${result.frstRegisterPnttm}</span></li>
</c:forEach>
</ul>
</div>
</div>
</div>
<!--사업-->
<div class="tabcontent" id="tab3">
<div class="main_board_box">
<div class="board_more"><a href="/web/cop/bbsWeb/selectBoardList.do?bbsId=BBSMSTR_000000000119&seCd=SE01">more +</a></div>
<div class="board_list">
<ul>
<c:forEach var="result" items="${bizMap}" varStatus="status">
<li><span class="lt_list">
<a href="javascript:fn_egov_inqire_notice_secd('${result.bbsId}', '${result.nttId}' , '${result.seCd}' );">
<c:out value="${result.nttSj}" />
</a>
</span><span class="lt_date">${result.frstRegisterPnttm}</span></li>
</c:forEach>
</ul>
</div>
</div>
<script>
$(function() {
$('ul.tab_main li').click(function() {
var activeTab = $(this).attr('data-tab');
$('ul.tab_main li').removeClass('current');
$('.tabcontent').removeClass('current');
$(this).addClass('current');
$('#' + activeTab).addClass('current');
})
});
</script>
</div>
<!--채용-->
<div class="tabcontent" id="tab4">
<div class="main_board_box">
<div class="board_more"><a href="/web/cop/bbsWeb/selectBoardList.do?bbsId=BBSMSTR_000000000124&seCd=SE01">more +</a></div>
<div class="board_list">
<ul>
<c:forEach var="result" items="${hireMap}" varStatus="status">
<li><span class="lt_list">
<a href="javascript:fn_egov_inqire_notice_secd('${result.bbsId}', '${result.nttId}' , '${result.seCd}' );">
<c:out value="${result.nttSj}" />
</a>
</span><span class="lt_date">${result.frstRegisterPnttm}</span></li>
</c:forEach>
</ul>
</div>
</div>
</div>
</div>
<!-- 메인 소식 -->
<div class="main_notice">
<div class="main_title_wr"><img src="/img/index/main_notice_icon.png" alt="아이콘"> 한국공예디자인문화진흥원 소식</div>
<div class="flexslider main_notice_img">
<ul class="slides">
<c:forEach var="result" items="${popupzoneList_01}" varStatus="status">
<li>
<div alt="${result.pozNm}" style="background:url(<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${result.popupzoneImageFile}"/>); cursor:pointer;"
<c:if test="${result.istarget eq 'C'}" >
onclick="javascript:location.href='${result.mlink}';"
</c:if>
<c:if test="${result.istarget eq 'N'}" >
onclick="window.open('${result.mlink}', '_blank');"
</c:if>
>
</div>
</li>
</c:forEach>
</ul>
</div>
<!-- FlexSlider -->
<script type="text/javascript">
(function() {
// store the slider in a local variable
var $window = $(window),
flexslider = { vars:{} };
// tiny helper function to add breakpoints
function getGridSize() {
return (window.innerWidth < 600) ? 1 :
(window.innerWidth < 900) ? 2 : 3;
}
$window.load(function() {
$('.flexslider').flexslider({
slideshow: false,
animation: "slide",
animationSpeed: 400,
animationLoop: false,
itemWidth: 463,
itemMargin: 46,
minItems: getGridSize(), // use function to pull in initial value
maxItems: getGridSize(), // use function to pull in initial value
start: function(slider){
$('body').removeClass('loading');
flexslider = slider;
}
});
});
// check grid size on resize event
$window.resize(function() {
var gridSize = getGridSize();
flexslider.vars.minItems = gridSize;
flexslider.vars.maxItems = gridSize;
});
}());
</script>
</div>
<div class="main_gal_wr">
<div class="main_top_wr">
<!-- KCDF 갤러리 안내 -->
<div class="main_gal_left">
<div class="main_title_wr"><img src="/img/index/main_notice_icon.png" alt="아이콘"> KCDF 갤러리 안내</div>
<div class="main_gal_menu">
<ul>
<li><a href="/web/content.do?proFn=kcdf_gallery" target="_blank"><img src="/img/index/main_gallery_menu01.png" alt="KCDF 갤러리 소개"></a></li>
<li><a href="/web/cop/resve/selectResveList.do?viewCnd=resveList" target="_blank"><img src="/img/index/main_gallery_menu02.png" alt="KCDF 갤러리 대관신청"></a></li>
<li><a href="https://library.kcdf.kr/web/" target="_blank" ><img src="/img/index/main_gallery_menu03.png" alt="KCDF 도서관 바로가기"></a></li>
<li><a href="http://kcdfshop.kr/" target="_blank" ><img src="/img/index/main_gallery_menu04.png" alt="KCDF 온라인샵 바로가기"></a></li>
</ul>
</div>
</div>
<!-- KCDF 갤러리 전시 -->
<div class="main_gal_right">
<div class="main_title_wr"><img src="/img/index/main_gallery2_icon.png" alt="아이콘"> KCDF 갤러리 전시</div>
<div class="flexslider02 main_gal_img">
<ul class="slides">
<c:forEach var="result" items="${popupzoneList_02}" varStatus="status">
<li>
<div alt="${result.pozNm}" style="cursor:pointer; background-image:url(<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${result.popupzoneImageFile}"/>);"
<c:if test="${result.istarget eq 'C'}" >
onclick="javascript:location.href='${result.mlink}';"
</c:if>
<c:if test="${result.istarget eq 'N'}" >
onclick="window.open('${result.mlink}', '_blank');"
</c:if>
>
</div>
</li>
</c:forEach>
</ul>
</div>
<!-- FlexSlider -->
<script type="text/javascript">
(function() {
// store the slider in a local variable
var $window = $(window),
flexslider = { vars:{} };
// tiny helper function to add breakpoints
function getGridSize() {
return (window.innerWidth < 600) ? 1 :
(window.innerWidth < 900) ? 1 : 1;
}
$window.load(function() {
$('.flexslider02').flexslider({
slideshow: false,
animation: "slide",
animationSpeed: 400,
animationLoop: false,
itemWidth: 463,
itemMargin: 10,
minItems: getGridSize(), // use function to pull in initial value
maxItems: getGridSize(), // use function to pull in initial value
start: function(slider){
$('body').removeClass('loading');
flexslider = slider;
}
});
});
// check grid size on resize event
$window.resize(function() {
var gridSize = getGridSize();
flexslider.vars.minItems = gridSize;
flexslider.vars.maxItems = gridSize;
});
}());
</script>
</div>
<div class="mobile_bottom">
<!-- KCDF 블로그 -->
<div class="main_blog">
<div class="main_title_wr"><img src="/img/index/main_blog_icon.png" alt="아이콘"> 한국공예디자인문화진흥원 블로그</div>
<ul class="main_blog_list">
<c:forEach var="result" items="${popupzoneList_03}" varStatus="status">
<li alt="${fn:substring(result.pozNm,0,7)}" style="background:url('<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${result.popupzoneImageFile}"/>') no-repeat center #f3f3f3; background-size:cover;cursor:pointer;"
<c:if test="${result.istarget eq 'C'}" >
onclick="javascript:location.href='${result.mlink}';"
</c:if>
<c:if test="${result.istarget eq 'N'}" >
onclick="window.open('${result.mlink}', '_blank');"
</c:if>
>
<div class="blog_thum_bg" style="width: 100%;">${result.pozNm}</div></li>
</c:forEach>
</ul>
</div>
<!-- 우수문화상품지정제 190207 수정s -->
<c:if test="${not empty popupzoneList_04}" >
<div class="main_kribbon"><!-- 190207 링크추가 수정-->
<div class="kribbon_thumnail" alt="${popupzoneList_04[0].pozNm}" style="background:url('<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${popupzoneList_04[0].popupzoneImageFile}"/>') no-repeat center; background-size:contain;"></div>
<div class="kribbon_left">
<div class="btn">
<a href="${popupzoneList_04[0].mlink}"
<c:if test="${popupzoneList_04[0].istarget ne 'C'}" >
target="_blank"
</c:if>
>바로가기</a>
</div>
</div>
<div class="kribbon_right">
<div class="title">우수문화상품지정제</div>
<div class="text">
우수문화상품 지정제도는
한국의 문화적 가치를 담은 우수문화상품을
지정하여 한복의 옷고름 모양을 딴
K-ribbon 마크를 부착하고, 체계적인
관리와 브랜드마케팅을 통해
‘코리아프리미엄’을 창출하고자 하는
제도 입니다.
<p class="maTop10">2015년 11월 부터 시행되었으며,
문화콘텐츠, 한복, 공예품, 한식·식품 등
한국을 대표할 수 있는 문화상품들을
대상으로 합니다. </p>
</div>
</div>
</div>
</c:if>
<!-- 정기구독 s 190207 수정-->
<c:if test="${not empty popupzoneList_05}" >
<div class="main_magazine"><!-- 190207 링크추가 수정-->
<div class="magazine_thumnail" alt="${popupzoneList_05[0].pozNm}" style="background:url('<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${popupzoneList_05[0].popupzoneImageFile}"/>') no-repeat center; background-size:contain"></div>
<div class="btn">
<a href="${popupzoneList_05[0].mlink}"
<c:if test="${popupzoneList_05[0].istarget ne 'C'}" >
target="_blank"
</c:if>
><img src="/img/index/main_magazine_btn.png" alt="정기구독신청"></a></div>
<div class="text01">
「공예+디자인」은<br>
한국공예디자인문화진흥원이<br>
격월로 발행하는 공예·디자인<br>
전문간행물입니다.
</div>
<div class="text02">공예 + 디자인 격월발행</div>
</div>
</c:if>
</div>
</div>
</div>
<!-- 배너 -->
<div id="link_wrap">
<div class="link_wrap_1300">
<div class="flexslider03 banner_img">
<!--190207 수정 s-->
<ul class="slides">
<c:forEach var="banner" items="${bannerList}" varStatus="status">
<li>
<div alt="${banner.bannerNm}" style="background:url(<c:url value='/cmm/fms/getImage.do'/>?atchFileId=<c:out value="${banner.bannerImageFile}"/>) no-repeat center; background-size:contain ;cursor: pointer;";
<c:if test="${banner.istarget ne 'C'}" >
onclick="window.open('${banner.linkUrl}', '_blank');"
</c:if>
<c:if test="${banner.istarget eq 'C'}" >
onclick="window.open('${banner.linkUrl}', '_self');"
</c:if>
></div>
</li>
</c:forEach>
</ul>
<!--190207 수정 e-->
</div>
<!-- FlexSlider -->
<script type="text/javascript">
(function() {
// store the slider in a local variable
var $window = $(window),
flexslider = { vars:{} };
// tiny helper function to add breakpoints
function getGridSize() {
return (window.innerWidth < 500) ? 3 :
(window.innerWidth < 900) ? 5 : 8;
}
$window.load(function() {
$('.flexslider03').flexslider({
slideshow: false,
animation: "slide",
animationSpeed: 400,
animationLoop: false,
itemWidth: 140,
itemMargin: 30, // 190207 수정
minItems: getGridSize(), // use function to pull in initial value
maxItems: getGridSize(), // use function to pull in initial value
start: function(slider){
$('body').removeClass('loading');
flexslider = slider;
}
});
});
// check grid size on resize event
$window.resize(function() {
var gridSize = getGridSize();
flexslider.vars.minItems = gridSize;
flexslider.vars.maxItems = gridSize;
});
}());
</script>
</div>
</div>
</section>
<form name="frm" action="web/cop/bbsWeb/selectBoardArticle.do" method="get">
<input type="hidden" name="bbsId" />
<input type="hidden" name="nttId" value="0" />
</form>
<form name="frmSecd" action="web/cop/bbsWeb/selectBoardArticle.do" method="get">
<input type="hidden" name="bbsId" />
<input type="hidden" name="nttId" value="0" />
<input type="hidden" name="seCd" />
</form>
<!-- 레이어 팝업 -->
<c:if test="${fn:length(popupList) > 0}" >
<style type="text/css">
.pop-layer .pop-container {padding: 0px 0px;}
.pop-layer p.ctxt {color: #666;line-height: 25px;}
.pop-layer .btn-r {width: 100%; padding-top: 10px;border-top: 1px solid #DDD;text-align: right;}
.pop-layer {display: none;position: absolute;background-color: #fff;border: 1px solid #3571B5;z-index: 10;}
</style>
<c:forEach var="popupListData" items="${popupList}" varStatus="status" end="4">
<c:if test="${popupListData.popupType eq 'L'}">
<style type="text/css">
#layer_pop_${popupListData.popupId}{
top: ${popupListData.popupVrticlLc}px;
left: ${popupListData.popupWidthLc}px;
height: auto;
}
</style>
<div id="layer_pop_${popupListData.popupId}" class="pop-layer">
<div class="pop-container">
<div class="pop-conts">
<!--content //-->
${popupListData.nttCn}
<div class="btn-r">
<a href="#" onclick="fn_layerClose('${popupListData.popupId}'); return false;" class="btn-layerClose">Close</a>
<br/>
하루동안 창을 열지 않음 <input type="checkbox" name="chkPopup" value="" onClick="fnPopupCheck('${popupListData.popupId}' , 'layer')" title="하루동안창열지않기체크">
</div>
<!--// content-->
</div>
</div>
</div>
</c:if>
</c:forEach>
</c:if>
<!-- 레이어 팝업 끝-->
</body>
</html>

View File

@ -13,138 +13,18 @@
<script src="/publish/js/swiper.min.js"></script>
<script type="text/javascript">
let cookieCache = null; // 쿠키 데이터를 캐시할 변수
$(document).ready(function() {
// http => https 로 이동
if(${Env eq 'prod'}){
httpsRedirect();
}
// 슬라이드 이미지 변경
//setMainSlideImgChange();
//슬라이드 이미지 변경 => Double
// 9월 30일 개천절
// 10월 4일 한글날
//setMainSlideImgChangeDouble();
//추석연휴 고객센터 안내 팝업
var holidayShow = false;
var rsvSDate = "2024-11-01";
var rsvEDate = "2024-11-01";
var now = new Date();
now = leadingZeros(now.getFullYear(), 4) + '-' + leadingZeros(now.getMonth() + 1, 2) + '-' + leadingZeros(now.getDate(), 2);
if (now < rsvSDate || now > rsvEDate) {
$('.pointPop').hide();
}
// 2단팝업 제거
var agreePrivateSDate = "2024-11-29";
var agreePrivateNow = new Date();
agreePrivateNow = leadingZeros(agreePrivateNow.getFullYear(), 4) + '-' + leadingZeros(agreePrivateNow.getMonth() + 1, 2) + '-' + leadingZeros(agreePrivateNow.getDate(), 2);
if (agreePrivateNow < agreePrivateSDate) {
$("#agreePrivatePop_20241129").show();
}else{
$("#agreePrivatePop_20241129").hide();
}
//개인정보처리방침 팝업 날짜 설정
var agreePrivateSDate = "2024-11-23";
var agreePrivateNow = new Date();
agreePrivateNow = leadingZeros(agreePrivateNow.getFullYear(), 4) + '-' + leadingZeros(agreePrivateNow.getMonth() + 1, 2) + '-' + leadingZeros(agreePrivateNow.getDate(), 2);
if (agreePrivateNow < agreePrivateSDate) {
$("#agreePrivatePop_20241121").show();
$("#agreePrivatePop_20241122").hide();
}else{
$("#agreePrivatePop_20241121").hide();
$("#agreePrivatePop_20241122").show();
}
//메인 팝업 호출 여부
var evntPopCk = fnGetCookie('layer_evntPayPop'); // 이벤트 쿠키
var cookieDelPopCk = fnGetCookie('layer_cookieDelPop'); // 브라우저 쿠키
var agreePrivatePopCk = fnGetCookie('layer_agreePrivatePop');
console.log("# 팝업 레이어 : START");
console.log("layer_evntPayPop : " + evntPopCk);
console.log("layer_cookieDelPop : " + cookieDelPopCk);
if(agreePrivatePopCk != null){//개인정보 및 이용약관 개정 팝업 노출, 3일안보기 쿠키 있으면 팝업 안모여준다.
$(".agreePrivatePop").css("display","none");
$(".agreePrivatePop").hide();
}
if(evntPopCk != null && cookieDelPopCk != null){//팝업 쿠키가 모두 있는 경우 안보여준다.
console.log("eventLayerPop : STEP 1. 이벤트 팝업 쿠키가 모두 있는 경우 안보여준다.");
$(".eventLayerPop").css("display","none");
$(".eventLayerPop").hide();
}else if(evntPopCk == null && cookieDelPopCk == null){// 이벤트 팝업 쿠키가 모두 없으면 팝업 보여주기
console.log("eventLayerPop : STEP 2. 이벤트 팝업 쿠키가 모두 없으면 팝업 보여주기.");
$(".eventLayerPop").css("display","block");
$(".eventLayerPop").show();
}else if(evntPopCk != null || cookieDelPopCk != null){
console.log("eventLayerPop : STEP 3. 이벤트 팝업 쿠키가 하나라도 있으면 보여주기");
$(".eventLayerPop").css("display", "block");
$(".eventLayerPop").show();
if (fnGetCookie('layer_evntPayPop') != null) { //첫결제 이벤트 쿠키가 없으면 보여주기
console.log("이벤트 쿠키 있음 : HIDE");
$('.payEventPop').css("display","none");
$('.payEventPop').hide();
}
if (fnGetCookie('layer_cookieDelPop') != null) { //포인트 안내 팝업, 3일 안보기 체크
console.log("포인트 쿠키 있음 : HIDE");
$('.delCookiePop').css("display","none");
$('.delCookiePop').hide();
}
}
//레이어 팝업이 하나도 없으면 배경도 안보이도록 처리
if($(".layer_popup:visible").length == 0){
$(".layer_popup_wrap").hide();
}
if (fnGetCookie('todayClose') != null) { //상단팝업
scrTop = $(window).scrollTop();
var bodyWid = $("body").width();
var windowHei = $("window").height();
var topBnnHei = $(".topBanner").height();
var hdHei = $("header").height();
$(".topBanner").hide();
$("header").removeClass("bnnOn");
$(".mainContent").removeClass("bnnOn");
$(".allMenu").removeClass("bnnOn");
}
/* if(fnGetCookie('tdClose') != null ){ //좌측팝업
$(".mainContent").removeClass("bnnOn");
$(".allMenu").removeClass("bnnOn");
$(".popLayer").removeClass("on");
} */
var bdWid = $("body").width();
if (fnGetCookie('tdClose') == null && bdWid > 769) { //좌측팝업
$(".mainContent").addClass("bnnOn");
$(".allMenu").addClass("bnnOn");
$(".popLayer").addClass("on");
}
//그림문자 리스트 불러오기
document.letterForm.categoryCode.value = "best"
fnPhotoListAjax();
//장문문자 로딩시 데이터 불러오기
//fnLongLetterListBlind();
/* 메인-문자샘플 탭 선택 시 활성화 */
$(".tab_depth1 a").click(function() {
@ -321,24 +201,14 @@ $(document).ready(function() {
/**
이벤트 팝업 호출 처리
*/
/*
var payCount = '${payCount}';
var eventYn = false;
<c:if test="${not empty resultEvent}">
eventYn = true;
</c:if>
var blineCode = '${blineCode}';
blineCode = $.trim(blineCode);
if (blineCode == null || blineCode == "" || blineCode == undefined) {
blineCode = "N";
}
console.log("");
console.log("이벤트 팝업 호출 처리");
console.log("payCount : " + payCount);
console.log("eventYn : " + eventYn);
console.log("blineCode : " + blineCode);
if(payCount < 1 && eventYn && blineCode == 'N'){//결제내역이 하나도 없고, 이벤트가 진행중이면 팝업 호출
console.log("이벤트 팝업 함수 CALL");
remoteEventPayPop(payCount);
@ -351,11 +221,130 @@ $(document).ready(function() {
if($(".layer_popup:visible").length == 0){
$(".layer_popup_wrap").hide();
}
} */
setTimeout(function () {
hidePopupByCookie();
}, 300);
});
/* ********************************************************
* 쿠키설정
******************************************************** */
/**
* 쿠키 설정 함수
* @param {string} name - 쿠키 이름
* @param {string} value - 쿠키 값
* @param {number} days - 쿠키 유지 기간 (일 단위)
*/
function setMainCookie(name, value, expires) {
var todayDate = new Date();
todayDate.setDate(todayDate.getDate() + expires);
document.cookie = name + "=" + escape(value) + "; path=/; expires=" + todayDate.toGMTString() + ";"
// 캐시에도 즉시 반영하여 최신 데이터 유지
if (cookieCache !== null) {
cookieCache[name] = value;
}
console.log("# 팝업 레이어 : END");
}
/**
* 쿠키 가져오기 함수
* @param {string} name - 가져올 쿠키의 이름
* @returns {string|null} - 쿠키 값 (없으면 null 반환)
*/
function getMainCookie(name) {
let allCookies = getAllCookies(); // 쿠키 전체를 한 번만 가져옴
return allCookies[name] || null; // 해당 쿠키가 있으면 반환, 없으면 null
}
/**
* 전체 쿠키를 한 번만 읽어서 객체(Map)로 변환하는 함수
*/
function getAllCookies() {
if (cookieCache !== null) {
return cookieCache; // 기존 캐시된 값이 있으면 재조회하지 않고 반환
}
let cookieObj = {};
let cookies = document.cookie.split(";");
for (let i = 0; i < cookies.length; i++) {
let c = cookies[i].trim();
let parts = c.split("=");
let key = parts[0];
let value = parts.slice(1).join("=");
cookieObj[key] = value;
}
cookieCache = cookieObj; // 쿠키 데이터를 캐시에 저장
console.log('cookieCache : ', cookieCache);
return cookieObj;
}
/**
* "3일간 보지 않음" 체크 시 실행되는 함수
* @param {string} popupId - 닫을 팝업 ID
*/
window.fnPopupChk = function (popupId) {
setMainCookie("hidePopup_" + popupId, "true", 3); // 3일간 유지되는 쿠키 설정
$("#" + popupId).hide(); // 해당 팝업 즉시 숨김 처리
};
/**
* 페이지 로딩 시 쿠키 확인 후 팝업 숨김 처리
*/
function hidePopupByCookie() {
let showPopup = false; // 팝업이 하나라도 보일 경우 true로 변경
$(".layer_popup").each(function () {
let popupId = $(this).attr("id"); // 현재 팝업의 ID 가져오기
console.log('popupId : ', popupId);
if (getMainCookie("hidePopup_" + popupId)) {
$(this).hide(); // 쿠키가 존재하면 해당 팝업 숨김 처리
} else {
$(this).show(); // 쿠키가 없으면 해당 팝업 표시
showPopup = true; // 팝업이 하나라도 보이면 true 설정
}
});
// 쿠키에 의해 숨겨지지 않은 팝업이 하나라도 있다면 `.eventLayerPop`을 표시
if (showPopup) {
$(".eventLayerPop").show();
} else {
$(".eventLayerPop").hide();
}
}
/**
* 팝업 닫기 버튼 클릭 시 해당 팝업 숨김 처리
*/
$(".popup_close").on("click", function () {
$(this).closest(".layer_popup").hide(); // 가장 가까운 `.layer_popup` 요소 숨김
hidePopupByCookie(); // 전체 팝업 표시 여부 다시 확인
});
/* ********************************************************
* //쿠키설정
******************************************************** */
function leadingZeros(n, digits) {
var zero = '';
n = n.toString();
@ -367,90 +356,6 @@ function leadingZeros(n, digits) {
return zero + n;
}
// 슬라이드 이미지 변경
function setMainSlideImgChange() {
var parentsDayShow = false;
var rsvDate = "2023-10-10";
var now = new Date();
now = leadingZeros(now.getFullYear(), 4) + '-' + leadingZeros(now.getMonth() + 1, 2) + '-' + leadingZeros(now.getDate(), 2);
if (now >= rsvDate) {
parentsDayShow = true;
}
// 석가탄신일 => 현충일 이미지로 변경
if (parentsDayShow == true) {
$("#mainSlideImg_1001").attr("src", "/publish/images/main/f_visual_01_20231006.jpg");
$("#mainSlideImg_1001").attr("alt", "문자는 이제, 문자온! 단 한번, 국내 최저가! 인생 최저가! 첫결제 단문 7.5원 장문 32원 그림 59원 Halloween 즐겁고 유쾌한 할로윈데이 보내세요 가을엔 독서 같이 책읽으실래요?");
$("#mainSlideImg_1002").attr("src", "/publish/images/main/f_visual_03_20231006.jpg");
$("#mainSlideImg_1002").attr("alt", "다른 사이트에는 없다! 오직 문자온에만 있다! 최고의 디자이너가 직접 제작하는 그림문자 맞춤제작을 통해 나만의 문자를 디자인 해보세요. 가을은 캠핑의 계절! 낭만캠핑 캠핑하기 좋은 계절, 가을이 돌아왔습니다. 즐거운 캠핑을 떠나고 싶으신가요? 지금 이벤트에 참여하시면, 캠핑 지원금을 드립니다. 지금 바로 참여하세요! 즐거운 캠핑 지원금 문자온에서 확인해보세요! HALLOWEEN 할로윈이벤트 이벤트에 참여하시고 무시무시한 혜택을 받아보세요 이벤트 기간 2099.10.01 10.31 이벤트 대상 10,000원 이상 구매한 모든 고객 event 01 5만원 이상 구매시 5,000원할인쿠폰 증정! event02 이벤트 기간동안 무료배송! event03 어플 설치 시 10% 추가 할인 쿠폰 증정! HALLOWEEN 할로윈 코스튬 할로윈 분위기에 맞게 코스튬을 하고 와요! 할로윈 CAKE 할로윈을 맞이하여 호박케이크를 만들어봐요! 문자온 영어학원 T.031.123.4567");
// Main Visual Swiper
getMainVisualSwiper();
}
}
//슬라이드 이미지 변경 => Double
// 9월 30일 개천절
// 10월 4일 한글날
function setMainSlideImgChangeDouble() {
var showMainSlideImg1 = false;
var showMainSlideImg2 = false;
var rsvDate1 = "2023-09-30";
var rsvDate2 = "2023-10-04";
var now = new Date();
now = leadingZeros(now.getFullYear(), 4) + '-' + leadingZeros(now.getMonth() + 1, 2) + '-' + leadingZeros(now.getDate(), 2);
if (now >= rsvDate2) {
showMainSlideImg2 = true;
}
else if (now >= rsvDate1) {
showMainSlideImg1 = true;
}
if (showMainSlideImg1 == true) {
$("#mainSlideImg_1001").attr("src", "/publish/images/main/f_visual_01_20230930.jpg");
$("#mainSlideImg_1001").attr("alt", "문자는 이제, 문자온! 단 한번, 국내 최저가! 인생 최저가! 첫결제 단문 7.5원 장문 32원 그림 59원 책과 함께 하는 가을 여행 10월 9일 한글날 아름다운 우리말을 사용하며, 행복한 한글날 보내시길 바랍니다.");
$("#mainSlideImg_1002").attr("src", "/publish/images/main/f_visual_03_20230930.jpg");
$("#mainSlideImg_1002").attr("alt", "다른 사이트에는 없다! 오직 문자온에만 있다! 최고의 디자이너가 직접 제작하는 그림문자 맞춤제작을 통해 나만의 문자를 디자인 해보세요. AUTUMN 가을맞이 정기세일 9.15-10.15 가을맞이 특별한 세일 전품목 최대 70% 할인의 기회를 누리세요! 10월 3일(화) 휴진 개천절 휴진안내 예약 및 내원에 착오 없으시길 바랍니다. 건강한 10월 보내세요 S M T W T F S 1 2-3(휴진) 4 5 6 7 10월 3일은 개천절은 하늘이 열린날 개천절 휴/진/안/내");
// Main Visual Swiper
getMainVisualSwiper();
}
if (showMainSlideImg2 == true) {
$("#mainSlideImg_1001").attr("src", "/publish/images/main/f_visual_01_20231004.jpg");
$("#mainSlideImg_1001").attr("alt", "문자는 이제, 문자온! 단 한번, 국내 최저가! 인생 최저가! 첫결제 단문 7.5원 장문 32원 그림 59원 책과 함께 하는 가을 여행 10월 9일 한글날 아름다운 우리말을 사용하며, 행복한 한글날 보내시길 바랍니다.");
$("#mainSlideImg_1002").attr("src", "/publish/images/main/f_visual_03_20231004.jpg");
$("#mainSlideImg_1002").attr("alt", "다른 사이트에는 없다! 오직 문자온에만 있다! 최고의 디자이너가 직접 제작하는 그림문자 맞춤제작을 통해 나만의 문자를 디자인 해보세요. Fall in Music Autumn Concert 09/15(토) 출연가수 온밴드, 온스파, 온와이스, 온뱅, 문자아이들, 온마이걸 주관: 문자온 코리아 협찬: 문자온추진위원회 후원 : 문자온추진위원회 한글날 한글날 이벤트 3행시 짓기 #한글날 #쿠폰 #이벤트 #좋아요 #댓글 이벤트 기간 2023.10.01 ~ 2023.10.06 당첨상품 음료 기프티콘 쿠폰(200명) 100% 국내산 유기농 우리김치 김장김치 예약판매 최적의 산지에서 수확한 신선한 배추와 엄선된 양념으로 보다 깊은 감칠맛을 선사합니다. 행사기간 2029.10.20~11.7");
// Main Visual Swiper
getMainVisualSwiper();
}
}
// Main Visual Swiper
function getMainVisualSwiper() {
var mainSwiper = new Swiper('.visual_swiper', {
effect: "fade",
slidesPerView: 1,
spaceBetween: 0,
speed : 400,
loop: true,
autoplay: {
delay: 3000,
disableOnInteraction: false,
},
pagination: {
el: '.swiper-pagination',
clickable: true,
},
navigation: {
nextEl: '.visual_swiper .swiper-button-next',
prevEl: '.visual_swiper .swiper-button-prev',
},
});
}
//http => https 로 이동
function httpsRedirect() {
@ -505,6 +410,8 @@ function addrRecvListAjax() {
});
}
//Show Html
function getAddrRecvListShow(jsonList, addrRecvListSize) {
var addrGrpId = "";
@ -780,14 +687,6 @@ function fnPhotoListAjax() {
});
}
//메인화면 첫 로딩시 인기장문문자 히든 시켜두기
function fnLongLetterListBlind(){
fnLetterListAjax();
$("#photoLoad").css('display','block')
$("#letterLoad").css('display','none')
}
//장문, 단문 문자 샘플 로드
function fnLetterListAjax() {
@ -896,65 +795,7 @@ function fn_egov_inqire_notice(bbsId, nttId) {
document.searchForm.submit();
}
/* ********************************************************
* 쿠키설정
******************************************************** */
//쿠키설정
function fnSetCookieEventPopup(name, value, expiredays) {
console.log("cash name ::: " + name);
var todayDate = new Date();
todayDate.setDate(todayDate.getDate() + expiredays);
document.cookie = name + "=" + escape(value) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}
//쿠키정보 가져오기
function fnGetCookie(name) {
var prefix = name + "=";
var cookieStartIndex = document.cookie.indexOf(prefix);
if (cookieStartIndex == -1) return null;
var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}
/* ********************************************************
* 체크버튼 클릭시
******************************************************** */
function fnPopupChk(popupId , typeFlag) {
var pcVal = $('#'+popupId).is(':checked');
if(pcVal){
fnSetCookieEventPopup(typeFlag+"_"+popupId , "done" , 3);
}
if(popupId == 'cookieDelPop'){
console.log(popupId);
$('.cookieDelPopClose').click(); //팝업 자동으로 닫기
}
if(popupId == 'evntPayPop'){
console.log(popupId);
$('.evntPayPopClose').click(); //팝업 자동으로 닫기
}
if(popupId == 'pointPop'){
console.log(popupId);
$('.pointPopClose').click(); //팝업 자동으로 닫기
}
if(popupId == 'agreePrivatePop'){
console.log(popupId);
$('.agreePrivatePopClose').click(); //팝업 자동으로 닫기
}
//fn_layerClose(popupId);
//레이어 팝업이 하나도 없으면 배경도 안보이도록 처리
if($(".layer_popup:visible").length == 0){
$(".layer_popup_wrap").hide();
}
}
function fnMainImgSendMsg(atchFileId, fileSn, strImgPath){
@ -1034,12 +875,12 @@ function popScrCloseSetting(){
//이벤트 팝업 호출
function remoteEventPayPop(payCount) {
/* function remoteEventPayPop(payCount) {
if (fnGetCookie('layer_evntPayPop') != null) { //첫결제 이벤트 팝업 3일 안보기 체크
console.log("이벤트 쿠키 있음 : HIDE");
$('.payEventPop').css("display","none");
$('.payEventPop').hide();
// $('.payEventPop').css("display","none");
// $('.payEventPop').hide();
}else{
console.log("이벤트 쿠키 없음 : SHOW");
@ -1051,9 +892,9 @@ function remoteEventPayPop(payCount) {
window.open("about:blank", 'eventPayPop', 'width=700, height=700, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
document.eventForm.action = "<c:url value='/web/event/selectEventPopAjax.do'/>";
document.eventForm.target = "eventPayPop";
document.eventForm.submit(); */
document.eventForm.submit();
}
*/
function fnEventLoginChk(){
var userId = '${userId}';
@ -1201,32 +1042,41 @@ function fn_click_banner_add_stat(bannerMenuCode){
</form>
<!-- 이벤트 팝업 -->
<div class="layer_popup_wrap eventLayerPop" style="display:none;">
<div class="layer_popup_wrap eventLayerPop" style="display:none; ">
<!-- <div class="layer_popup_wrap eventLayerPop"> -->
<div class="popup_inner">
<%-- <div class="layer_popup pointPop chusPopup">
<c:forEach var="result" items="${mainPopupList}" varStatus="status">
<div class="layer_popup" id="<c:out value='${result.popId}'/>">
<div class="layer_popup_cont">
<img src="/publish/images/main/popup03.jpg" alt="[추석 연휴 고객센터 운영 안내] 풍성하고 넉넉한 한가위 되시길 기원하며, 추석 연휴 동안의 고객센터 운영에 대하여 안내드립니다. 연휴기간 : 09월 16일(월) ~ 09월 18일(수) - 고객센터(1551-8011)를 통한 전화상담은 운영되지 않습니다. - 온라인(카카오톡/홈페이지1:1문의/E-mail) 상담은 24시간 접수 가능합니다. - 접수된 문의는 순차적으로 처리되며 빠른 시일 내에 답변드리도록 하겠습니다. 감사합니다">
<img src="/cmm/fms/getImage.do?atchFileId=<c:out value='${result.mainzoneImageFile}'/>"
alt="<c:out value='${result.content}'/>"
<c:if test="${not empty result.mainPopupLinkList}"> usemap="#<c:out value='${result.popId}'/>map"</c:if> />
<c:if test="${not empty result.mainPopupLinkList }">
<map name="${result.popId }map">
<c:forEach var="low" items="${result.mainPopupLinkList }">
<area href="${low.mlink }" coords="${low.coords }" shape="rect">
</c:forEach>
</map>
</c:if>
</div>
<div class="popup_btm">
<input type="checkbox" id="pointPop" name="pointPop" onclick="javascript:fnPopupChk('pointPop' , 'layer')"><label for="pointPop">3일간 열지 않음</label>
<button type="button" class="popup_close pointPopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div> --%>
<input type="checkbox" id="label${status.index }"
onclick="javascript:fnPopupChk('<c:out value='${result.popId}'/>')">
<label for="label${status.index }">3일간 열지 않음</label>
<!-- 20241101 작업공지 팝업 -->
<div class="layer_popup pointPop">
<div class="layer_popup_cont">
<img src="/publish/images/main/popup05_241101.jpg" alt="작업공지 문자온 대표전화 서비스 일시 중단 안내 ARS시스템 점검으로 인하여 다음과 같이 대표전화 서비스가 일시 중단되오니 서비스 이용에 참고하시기 바랍니다.작업일시 : 2024.11.01(금), 15:00 ~ 17:30 작업내용 : ARS시스템 정기점검 작업영향 : 작업시간 동안 고객센터(1551-8011)를 통한 전화상담 중지 ※ 온라인(카카오톡/홈페이지1:1문의/E-mail) 상담은 가능하며, 접수된 문의는 빠른 시일 내에 순차적으로 답변드리도록 하겠습니다. 감사합니다.">
</div>
<div class="popup_btm">
<input type="checkbox" id="pointPop" name="pointPop" onclick="javascript:fnPopupChk('pointPop' , 'layer')"><label for="pointPop">3일간 열지 않음</label>
<button type="button" class="popup_close pointPopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
<button type="button" class="popup_close <c:out value='${result.popId}'/>Close">
<img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기">
</button>
</div>
</div>
</c:forEach>
</div>
</div>
<!-- 20241028 이용약관, 개인정보처리방침 팝업 -->
<div class="layer_popup agreePrivatePop" id="agreePrivatePop_20241105" style="display: none;">
<!-- <div class="layer_popup agreePrivatePop" id="agreePrivatePop_20241105">
<div class="layer_popup_cont">
<img src="/publish/images/main/popup04_241028.jpg" alt="이용약관, 개인정보처리방침 개정 안내 변함없는 문자온 서비스 이용에 감사의 말씀 드립니다. 당사 이용약관 및 개인정보처리방침이 개정되오니 서비스 이용에 참고하시기 바랍니다. 이용약관 공지사항 개인정보처리방침 공지사항 항상 최선의 서비스를 제공할 수 있도록 노력하겠습니다. 감사합니다." usemap="#popup-service-map">
<map name="popup-service-map">
@ -1238,70 +1088,15 @@ function fn_click_banner_add_stat(bannerMenuCode){
<input type="checkbox" id="agreePrivatePop" name="agreePrivatePop" onclick="javascript:fnPopupChk('agreePrivatePop' , 'layer')"><label for="agreePrivatePop">3일간 열지 않음</label>
<button type="button" class="popup_close agreePrivatePopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div>
<!-- 20241105 이용약관 팝업 -->
<div class="layer_popup agreePrivatePop" id="agreePrivatePop_20241106" style="display: none;">
<div class="layer_popup_cont">
<img src="/publish/images/main/popup04_241105.jpg" alt="이용약관 개정 안내 변함없는 문자온 서비스 이용에 감사의 말씀 드립니다. 당사 이용약관이 개정되오니 서비스 이용에 참고하시기 바랍니다. 이용약관 공지사항 항상 최선의 서비스를 제공할 수 있도록 노력하겠습니다. 감사합니다." usemap="#popup-use-map">
<map name="popup-use-map">
<area href="https://www.munjaon.co.kr/web/cop/bbs/NoticeDetail.do?bbsId=BBSMSTR_000000000721&nttId=700" coords="35,295,378,352" shape="rect">
</map>
</div>
<div class="popup_btm">
<input type="checkbox" id="agreePrivatePop" name="agreePrivatePop" onclick="javascript:fnPopupChk('agreePrivatePop' , 'layer')"><label for="agreePrivatePop">3일간 열지 않음</label>
<button type="button" class="popup_close agreePrivatePopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div>
<!-- 세로가 짧은 팝업 2개일때 -->
<div class="popup_range" id="agreePrivatePop_20241129">
<!-- 20241119 보안강화 인증 수단 도입 안내 팝업 -->
<div class="layer_popup agreePrivatePop" style="margin: 0 0 20px 30px;" id="agreePrivatePop_20241121">
<div class="layer_popup_cont">
<img src="/publish/images/main/popup06_241119.jpg" alt="보안강화 인증수단 도입 안내 2024년11월 17일자로 보안강화를 위해 서비스 로그인시 휴대폰 본인인증 기능을 도입하였으니 서비스 이용에 참고하시기 바랍니다." usemap="#popup-user-map1" style="height:220px; width:413px;">
<map name="popup-user-map1">
<area href="https://www.munjaon.co.kr/web/cop/bbs/NoticeDetail.do?bbsId=BBSMSTR_000000000723&nttId=720" coords="65,148,345,182" shape="rect">
</map>
</div>
<div class="popup_btm">
<input type="checkbox" id="agreePrivatePop" name="agreePrivatePop" onclick="javascript:fnPopupChk('agreePrivatePop' , 'layer')"><label for="agreePrivatePop">3일간 열지 않음</label>
<button type="button" class="popup_close agreePrivatePopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div>
<!-- 20241122 보안강화 인증 수단 도입 안내 팝업 -->
<div class="layer_popup agreePrivatePop" style="margin: 0 0 20px 30px;" id="agreePrivatePop_20241122">
<div class="layer_popup_cont">
<img src="/publish/images/main/popup06_241122.jpg" alt="보안로그인 서비스 안내 계정 보안 강화를 위해 도입한 기존 보안로그인 서비스를 2024년 11월 22일자로 개선 및 추가하오니 이용에 참고하시기 바랍니다." usemap="#popup-user-map2" style="height:220px; width:413px;">
<map name="popup-user-map2">
<area href="https://www.munjaon.co.kr/web/cop/bbs/NoticeDetail.do?bbsId=BBSMSTR_000000000723&nttId=726&seCmmnCdId=&frstRegisterId=&viewsYn=&menuNo=&searchBgnDe=&searchEndDe=&pageIndex=1&searchSortCnd=&searchSortOrd=&searchCnd=&searchWrd=&pageUnit=10" coords="65,148,345,182" shape="rect">
</map>
</div>
<div class="popup_btm">
<input type="checkbox" id="agreePrivatePop" name="agreePrivatePop" onclick="javascript:fnPopupChk('agreePrivatePop' , 'layer')"><label for="agreePrivatePop">3일간 열지 않음</label>
<button type="button" class="popup_close agreePrivatePopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div>
<!-- 20241119 이용약관 팝업 -->
<div class="layer_popup agreePrivatePop">
<div class="layer_popup_cont">
<img src="/publish/images/main/popup04_241119.jpg" alt="이용약관 개정 안내 변함없는 문자온 서비스 이용에 감사의 말씀 드립니다. 당사 이용약관이 개정되오니 서비스 이용에 참고하시기 바랍니다." usemap="#popup-use-map1" style="height:220px; width:413px;">
<map name="popup-use-map1">
<area href="https://www.munjaon.co.kr/web/cop/bbs/NoticeDetail.do?bbsId=BBSMSTR_000000000721&nttId=700" coords="65,148,345,182" shape="rect">
</map>
</div>
<div class="popup_btm">
<input type="checkbox" id="agreePrivatePop" name="agreePrivatePop" onclick="javascript:fnPopupChk('agreePrivatePop' , 'layer')"><label for="agreePrivatePop">3일간 열지 않음</label>
<button type="button" class="popup_close agreePrivatePopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div>
</div>
<!--// 세로가 짧은 팝업 2개일때 -->
</div> -->
<!-- 20241224 브라우저 쿠키 삭제 방법 안내 팝업 -->
<!--
20241224 브라우저 쿠키 삭제 방법 안내 팝업
<div class="layer_popup delCookiePop">
<div class="layer_popup_cont">
<img src="/publish/images/main/popup07.jpg" alt="브라우저 쿠키 삭제 방법 안내 2024. 12. 23.자로 사이트 일부가 개편됨에 따라, 원활한 서비스 이용을 위한 “쿠키 및 기타 사이트 데이터”삭제 방법을 다음과 같이 안내해 드립니다. ※ 버튼 클릭 시 기능이 작동하지 않는 경우 해당 조치 필요 항상 최선의 서비스를 제공할 수 있도록 노력하겠습니다. 감사합니다." usemap="#popup-use-map7">
@ -1314,7 +1109,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<button type="button" class="popup_close cookieDelPopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div>
<!--// 20241224 브라우저 쿠키 삭제 방법 안내 팝업 -->
// 20241224 브라우저 쿠키 삭제 방법 안내 팝업
<div class="layer_popup payEventPop">
<div class="layer_popup_cont">
@ -1327,7 +1122,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<input type="checkbox" id="evntPayPop" name="evntPayPop" onclick="javascript:fnPopupChk('evntPayPop' , 'layer')"><label for="evntPayPop">3일간 열지 않음</label>
<button type="button" class="popup_close evntPayPopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div>
</div> -->
<%-- <div class="layer_popup pointPop">
<div class="layer_popup_cont">
@ -1340,8 +1135,6 @@ function fn_click_banner_add_stat(bannerMenuCode){
<button type="button" class="popup_close pointPopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
</div>
</div> --%>
</div>
</div>
<!-- 신고 알림 팝업 -->
<div class="tooltip-wrap">

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1468,8 +1468,8 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
/* 발송관리 */
.table_tab_wrap .tab_depth1 {position: absolute; top: 50%; right: 20px; transform: translateY(-50%); text-align: center;}
.table_tab_wrap .tab_depth1 a {width: 150px;}
/*.kakao_rev_content .rev_admin_in{width: calc(100% / 3 - 20px);}*/
.kakao_rev_content .rev_admin_in{width: calc(100% / 2 - 20px);}
.kakao_rev_content .rev_admin_in{width: calc(100% / 3 - 20px);}
/*.kakao_rev_content .rev_admin_in{width: calc(100% / 2 - 20px);}*/
/*// 발송관리 */
/*발송결과*/
@ -2126,6 +2126,8 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.res_info .res_info_in .res_info_btm {margin:20px 0 0 0;padding:10px;background:#fff;border-radius:5px;box-sizing:border-box;}
.res_info .res_info_in .res_info_btm dl {display:flex;padding:8px 10px;font-size:16px;font-weight:300;justify-content:space-between; color:#222;}
.res_info .res_info_in .res_info_btm dl.charge_line {border-top:1px solid #e6e6e6; text-align:center;}
.res_info .res_info_in .res_info_btm dl dt.charge_title {font-size:15px; padding:0 0 0 5px;}
.res_info .res_info_in .res_info_btm dl dt {font-weight:400;}
.res_info .res_info_in .res_info_btm dl dt.btm_charge {font-size:16px;}
.res_info .res_info_in .res_info_btm dl dd span {font-weight:500;}
@ -2143,6 +2145,9 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
/* right area 문자 미리보기 */
.send_top .resultcont_right {flex-basis: calc(100% - 68% - 80px); position: relative;min-height:630px;}
.send_top .send_general.sec .resultcont_right {min-height:auto;}
.send_top .resultcont_right .tab_phone {display: none; }
.send_top .resultcont_right .tab_phone.current {display: block;}
/* phone 기본 -- sticky */
.send_top .resultcont_right .phone {width: 374px; position: absolute; right: -2px; top: 0;}
.send_top .resultcont_right .phone .phoneIn {background-image: url(/publish/images/content/phoneBg.png); height: 720px; background-size: 100% auto; background-repeat: no-repeat; }
@ -2177,7 +2182,7 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
/* 알림톡 미리보기 */
.send_top .resultcont_right .phone_kakao {width: 374px; position: absolute; right:0; top: 0;}
.send_top .resultcont_right .phone_kakako .phoneIn{height: 690px; width:340px; background-image: url(/publish/images/content/kakaoBg.png); padding: 27px 25px 0 25px;}
.send_top .resultcont_right .phone_kakako .phoneIn{height: 720px; width:346px; background-image: url(/publish/images/content/kakaoBg.png); padding: 27px 25px 0 25px; margin:0 0 0 -12px;}
.send_top .resultcont_right .phone_kakako .prev_p{padding: 0 0 0 10px; border: 0; letter-spacing: -0.25px;}
.send_top .resultcont_right .phone_kakako .prev_p img{margin: 0 10px 0 0;}
.send_top .resultcont_right .phone_kakako .allimtalk_title{position: relative; width: calc(100% - 20px); background-color: #fae100; font-family: 'LotteMartDream'; font-size: 18px; padding: 12px 21px; border-radius: 5px 5px 0 0; box-sizing: border-box;}

View File

@ -18,7 +18,8 @@
<!-- <p>***<span class="font1"> (컨텐츠)</span> : 반복적으로 사용 안함</p>
<p>***<span class="font2"> (보드)</span> : 반복적으로 사용</p> -->
<ul class="page">
<li><a href="/publish/index_2025.html">index_2025.html</a>메인비주얼 아래 슬라이드 배너박스를 관리자페이지에서 텍스트 및 아이콘 등록 가능 하도록 수정</li>
<li><a href="/publish/textingmsg_2025_detail_kakao.html">textingmsg_2025_detail_kakao.html</a>[개선] 카카오 발송결과 상세</li>
<li><a href="/publish/index_2025.html">index_2025.html</a>메인비주얼 아래 서비스안내 배너를 관리자페이지에서 텍스트 및 아이콘 등록 가능 하도록 수정</li>
<li><a href="/publish/textingmsg_2025_detail.html">textingmsg_2025_detail.html</a>[개선] 발송결과 상세 수정</li>
<li><a href="/publish/textingmsg_2025_list.html">textingmsg_2025_list.html</a>[개선] 발송결과 수정</li>
<li><a href="/publish/service3_spam_2024.html">service3_spam_2024.html</a>불법스팸방지정책 (2024.11.29)</li>

View File

@ -933,6 +933,25 @@ function contentTab(obj, tabId){
currTabId = tabId;
}
//콘텐츠 - 발송결과 미리보기 tab
function phoneTab(obj, tabId){
var $tab = $(obj).closest("li");
$tab.addClass("active");
$tab.find("button").attr("title", "선택됨");
$tab.siblings("li.tab").removeClass("active");
$tab.siblings("li.btn_tab").removeClass("active");
$tab.siblings("li.tab").find("button").removeAttr("title");
var $tabCn = $("#tab_phone_" + tabId);
$tabCn.fadeIn(0);
$tabCn.addClass("current");
$(".tab_phone").not($tabCn).removeClass("current");
$(".tab_phone").not($tabCn).fadeOut(0);
currTabId = tabId;
}
/* 회원가입 약관동의 list */
function clause_list(obj){
var listBody = $(obj).parents(".clause_list_head").siblings(".clause_list_body");

File diff suppressed because it is too large Load Diff

View File

@ -220,8 +220,7 @@
<ul class="tabType1">
<li class="tab active"><button type="button" onclick="TabType5(this,'1');return false;">문자</button>
</li>
<li class="tab "><button type="button"
onclick="TabType5(this,'2');return false;">카카오톡</button></li>
<li class="tab "><button type="button" onclick="TabType5(this,'2');return false;">카카오톡</button></li>
</ul>
<!--// tab button -->
</div>
@ -613,7 +612,6 @@
<div class="titBox_result">
<p>- 최대 3개월간의 발송내역만 확인하실 수 있습니다.</p>
<p>- 전송내역이 필요한 경우 기간 내에 다운로드하여 주시기 바랍니다.</p>
<p>- 단문문자는 최대 24시간, 장문 및 그림문자는 최대 72시간까지 결과값이 수신되지 않은 경우 실패(비과금) 처리됩니다.</p>
</div>
<!--// 발송결과 개선 : 문구추가 -->
@ -638,11 +636,11 @@
<button type="button" class="btnType6">조회</button>
</div>
<div class="btn_right">
<label for="" class="label">발신번호 선택</label>
<label for="" class="label">채널선택</label>
<select name="" id="" class="selType2">
<option value="">발신번호</option>
<option value="">발신번호</option>
<option value="">발신번호</option>
<option value="">채널ID</option>
<option value="">채널명</option>
<option value="">내용</option>
</select>
<div class="search">
<label for="id" class="label"></label>
@ -695,7 +693,7 @@
</dl>
</div>
</div>
<!-- <div class="rev_admin_in">
<div class="rev_admin_in">
<div class="rev_admin_top clearfix">
<p>친구톡</p>
<p><span>171</span></p>
@ -714,7 +712,7 @@
<dd><span class="c_e40000">0</span></dd>
</dl>
</div>
</div> -->
</div>
</div>
<div class="list_tab_wrap2 type4">
@ -728,44 +726,24 @@
<!--// tab button -->
</div>
<!-- 발송관리 > 전체 -->
<div class="price_history_cont" id="listTab_2">
<div class="price_history_cont price_wrap" id="listTab_2">
<div class="table_tab_wrap">
<!-- tab button -->
<ul>
<li class="tab active"><button type="button">전체</button></li>
<li class="tab"><button type="button">대기</button></li>
<li class="tab"><button type="button">성공</button></li>
<li class="tab"><button type="button">실패</button></li>
<li class="tab"><button type="button">즉시</button></li>
<li class="tab"><button type="button">예약</button></li>
</ul>
<!--// tab button -->
<!-- 발송화면 개선 : 발송결과 추가-->
<div class="tab_btnbox" style="z-index:999;">
<button type="button" class="btnType btnType14 check_validity" >발송결과<i class="qmMark"></i></button>
<div class="info_hover_cont send_hover_cont">
<dl>
<dt class="c_666">[<span>대기</span>]</dt>
<dd>발송은 성공하였으며, 수신자측 통신사로부터 수신여부를
확인중인 상태</dd>
<dt class="c_002c9a">[<span>성공</span>]</dt>
<dd>발송 및 수신이 완료된 상태</dd>
<dt class="c_e40000">[<span>실패</span>]</dt>
<dd>결번, 일시정지, 전화번호 오류 등의 사유로 발송이
불가한 상태</dd>
<dt class="c_222">[<span>예약</span>]</dt>
<dd>예약 발송 대기 상태</dd>
</dl>
</div>
</div>
<!--// 발송화면 개선 : 발송결과 추가-->
</div>
<div class="table_cont current">
<div class="list_info">
<p>총 발송건수 <span class="c_e40000">171</span></p>
<div>
<p class="cf_text c_e40000">※ 예약문자 발송취소는 예약 발송시간 기준 5분 전까지만 가능</p>
<p class="cf_text c_e40000">※ 예약 발송취소는 예약 발송시간 기준 5분 전까지만 가능</p>
<label for="" class="label">줄보기 선택</label>
<select id="" class="selType2">
<option>10개보기</option>
@ -779,17 +757,16 @@
<colgroup>
<col style="width: 45px;">
<col style="width: 12%;">
<col style="width: 8%;">
<col style="width: 7%;">
<col style="width: auto;">
<col style="width: 7%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 8%;">
<col style="width: 8%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 6%;">
<col style="width: 9%;">
<col style="width: 11%;">
</colgroup>
<thead>
<tr>
@ -813,30 +790,36 @@
<input type="button" class="sort sortBtn" id="sort_msgGroupCnt">
</div>
</th>
<th colspan="4">카카오톡 결과</th>
<th colspan="2">대체문자 결과</th>
<th rowspan="2">금액</th>
<th rowspan="2">예약관리</th>
<th colspan="3">카카오톡결과</th>
<th colspan="2">대체문자결과</th>
<th rowspan="2">금액(원)</th>
<th rowspan="2">진행상황</th>
</tr>
<tr>
<th>대기</th>
<th>성공</th>
<th>실패</th>
<th>예약</th>
<th>성공</th>
<th>실패</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<label for="" class="label">선택</label>
<input type="checkbox">
<input type="checkbox" disabled>
</td>
<td>2024-01-09 17:42</td>
<td>단문</td>
<td class="result_cont"><a href="#">내용을 클릭하면 상세보기 화면으로 이동합니다.</a></td>
<td>125,895</td>
<td>알림톡</td>
<td class="result_cont">
<div class="icon_wrap">
<span class="re">예약</span>
<span class="di">분할</span>
<a href="#">내용을 클릭하면 상세보기 화면으로 이동합니다.</a>
</div>
</td>
<td>0</td>
<td>
<p class="c_666">0</p>
</td>
@ -850,41 +833,124 @@
<p class="c_002c9a">0</p>
</td>
<td>
<p class="c_002c9a">0</p>
<p class="c_e40000">0</p>
</td>
<td>
<p class="c_e40000">125,895</p>
</td>
<td>
8,485,258원
8,485,258
</td>
<td>
<p><button class="btnType btnType20">예약취소</button></p>
</td>
</tr>
<tr>
<td>
<label for="" class="label">선택</label>
<input type="checkbox">
</td>
<td>2024-01-09 17:42</td>
<td>친구톡</td>
<td class="result_cont">
<div class="icon_wrap">
<span class="re">예약</span>
<a href="#">내용을 클릭하면 상세보기 화면으로 이동합니다.</a>
</div>
</td>
<td>0</td>
<td>
<p class="c_666">0</p>
</td>
<td>
<p class="c_002c9a">0</p>
</td>
<td>
<p class="c_e40000">0</p>
</td>
<td>
<p class="c_002c9a">0</p>
</td>
<td>
<p class="c_e40000">0</p>
</td>
<td>-</td>
<td>예약취소</td>
</tr>
<tr>
<td>
<label for="" class="label">선택</label>
<input type="checkbox">
</td>
<td>2024-01-09 17:42</td>
<td>친구톡</td>
<td class="result_cont">
<div class="icon_wrap">
<a href="#">내용을 클릭하면 상세보기 화면으로 이동합니다.</a>
</div>
</td>
<td>458,002</td>
<td>
<p class="c_666">1</p>
</td>
<td>
<p class="c_002c9a">458,000</p>
</td>
<td>
<p class="c_e40000">1</p>
</td>
<td>
<p class="c_002c9a">1</p>
</td>
<td>
<p class="c_e40000">1</p>
</td>
<td>12,580</td>
<td>진행중</td>
</tr>
<tr>
<td>
<label for="" class="label">선택</label>
<input type="checkbox">
</td>
<td>2024-01-09 17:42</td>
<td>친구톡</td>
<td class="result_cont">
<div class="icon_wrap">
<a href="#">내용을 클릭하면 상세보기 화면으로 이동합니다.</a>
</div>
</td>
<td>458,002</td>
<td>
<p class="c_666">1</p>
</td>
<td>
<p class="c_002c9a">458,000</p>
</td>
<td>
<p class="c_e40000">1</p>
</td>
<td>
<p class="c_002c9a">1</p>
</td>
<td>
<p class="c_e40000">1</p>
</td>
<td>12,580</td>
<td>완료</td>
</tr>
</tbody>
</table>
</div>
<!--// 발송화면 개선 : 카카오톡 테이블 수정 -->
<div class="table_btn clearfix">
<div class="table_btn_left">
<button type="button" data-tooltip="rev_popup02" class="btnType btnType15"><i
class="add_img"></i>그룹등록</button>
<button type="button" class="btnType btnType15"><i class="remove_img"></i>주소록에서
번호 삭제</button>
<button type="button" class="btnType btnType15">수신거부번호 등록</button>
<button type="button" onclick="" class="btnType btnType15"><i class="remove_img"></i>선택삭제</button>
</div>
<div class="table_btn_right">
<button type="button" class="excel_btn btnType"><i class="downroad"></i>엑셀
다운로드</button>
<button type="button" class="print_btn btnType"><i class="print_img"></i>발송결과
출력하기</button>
<button type="button" class="excel_btn btnType"><i class="downroad"></i>엑셀 다운로드</button>
</div>
</div>
<!-- pagination -->
<ul class="pagination">
<li class="page_first"><button><img src="/publish/images/content/page_first.png"