2024-09-11 16:46 추가 게시판 작업

This commit is contained in:
myname 2024-09-11 17:10:37 +09:00
parent eed9848b8e
commit ddba301afd
362 changed files with 86947 additions and 5518 deletions

File diff suppressed because it is too large Load Diff

View File

@ -289,6 +289,8 @@ public class SiteDAOImpl implements SiteDAO{
//AdminSiteService, ManagerSiteService
public T_SITE getSiteForm(String siteIdx){
System.out.println("getSiteForm=1000="+siteIdx);
return (T_SITE) this.sessionFactory.getCurrentSession().load(T_SITE.class, siteIdx);
}

View File

@ -28,7 +28,7 @@ public class SiteManager2DAOImpl implements SiteManager2DAO{
}
//AdminMemberService, ManagerMemberService
@SuppressWarnings("unchecked")
//@SuppressWarnings("unchecked")
public List<T_SITE_MANAGER> getSiteManagerList(Integer memberIdx){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MANAGER.class);
@ -39,7 +39,7 @@ public class SiteManager2DAOImpl implements SiteManager2DAO{
}
//ManagerMemberService
@SuppressWarnings("unchecked")
//@SuppressWarnings("unchecked")
public List<VIEW_MANAGER_DATA> getSiteManagerList(Integer memberIdx, String[] qryColumns){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(VIEW_MANAGER_DATA.class);
@ -73,7 +73,7 @@ public class SiteManager2DAOImpl implements SiteManager2DAO{
return criteria.list();
}
@SuppressWarnings("deprecation")
//@SuppressWarnings("deprecation")
public Long getSiteManagerListCnt(String siteIdx, Integer memberIdx){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MANAGER.class);

View File

@ -1,41 +0,0 @@
package seed.dao;
import java.util.List;
import seed.map.T_SITE_MANAGER;
import seed.map.VIEW_MANAGER_DATA;
public interface SiteManagerDAO {
//AdminMemberService, ManagerMemberService
public List<T_SITE_MANAGER> getSiteManagerList(Integer memberIdx);
//ManagerMemberService
public List<VIEW_MANAGER_DATA> getSiteManagerList(Integer memberIdx, String[] qryColumns);
public Long getSiteManagerListCnt(String siteIdx, Integer memberIdx);
//AdminGroupsService , AdminSiteService
public Long getSiteManagerListCnt(Integer memberIdx);
//AdminSiteManagerService
public Long getSiteManagerListCnt(String siteIdx, Integer selGroup, String column, String search);
//AdminSiteManagerService
public List<T_SITE_MANAGER> getSiteManagerList(String siteIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns);
//ManagerSiteManagerService
public List<T_SITE_MANAGER> getSiteManagerList(String memberMergeSiteIdx, Integer memberIdx, String[] qryColumns);
//AdminSiteService, AdminSiteManagerService
public T_SITE_MANAGER getSiteManagerForm(Integer siteManagerIdx);
//AdminSiteManagerService
public boolean setSiteManagerRegProc(T_SITE_MANAGER tSiteManager);
//AdminSiteService, AdminSiteManagerService
public boolean setSiteManagerModProc(T_SITE_MANAGER tSiteManager);
//AdminSiteManagerService
public boolean setSiteManagerDelProc(T_SITE_MANAGER tSiteManager);
}

View File

@ -1,311 +0,0 @@
package seed.dao;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import seed.map.T_SITE_MANAGER;
import seed.map.VIEW_MANAGER_DATA;
@Repository
public class SiteManagerDAOImpl implements SiteManagerDAO{
private Logger log = Logger.getLogger(this.getClass());
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
//AdminMemberService, ManagerMemberService
@SuppressWarnings("unchecked")
public List<T_SITE_MANAGER> getSiteManagerList(Integer memberIdx){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MANAGER.class);
criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx));
return criteria.list();
}
//ManagerMemberService
@SuppressWarnings("unchecked")
public List<VIEW_MANAGER_DATA> getSiteManagerList(Integer memberIdx, String[] qryColumns){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(VIEW_MANAGER_DATA.class);
if(qryColumns != null && qryColumns.length > 0){
ProjectionList projectionList = Projections.projectionList();
boolean groupCheck = false;
for(int q=0; q<qryColumns.length; q++){
if(!groupCheck && qryColumns[q].indexOf("groupBy") >= 0){
groupCheck = true;
continue;
}
if(groupCheck){
if(qryColumns[q].indexOf("Cnt") >= 0){
String qryColumn = qryColumns[q].substring(0, qryColumns[q].indexOf("Cnt"));
projectionList.add(Projections.count(qryColumn).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}else{
projectionList.add(Projections.groupProperty(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}
}else{
projectionList.add(Projections.property(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}
}
criteria.setProjection(projectionList);
criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
}
criteria.add(Restrictions.eq("memberIdx", memberIdx));
return criteria.list();
}
@SuppressWarnings("deprecation")
public Long getSiteManagerListCnt(String siteIdx, Integer memberIdx){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MANAGER.class);
criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
criteria.add(
Restrictions.and(
Restrictions.and(
Restrictions.and(
Restrictions.eq("tSite.siteIdx", siteIdx),
Restrictions.eq("siteManagerStatus", "U")),
Restrictions.eq("tMember.memberIdx", memberIdx)),
Restrictions.eq("tMember.memberStatus", "U")));
criteria.setProjection(Projections.rowCount());
return (Long)criteria.uniqueResult();
}
//AdminGroupsService , AdminSiteService
public Long getSiteManagerListCnt(Integer memberIdx){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MANAGER.class);
criteria.add(
Restrictions.and(
Restrictions.eq("siteManagerStatus", "U"),
Restrictions.eq("tMember.memberIdx", memberIdx)));
criteria.setProjection(Projections.rowCount());
return (Long)criteria.uniqueResult();
}
//AdminSiteManagerService
@SuppressWarnings("deprecation")
public Long getSiteManagerListCnt(String siteIdx, Integer selGroup, String column, String search){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MANAGER.class);
criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
criteria.createCriteria("tMember.tGroups", "tGroups", Criteria.LEFT_JOIN);
criteria.add(Restrictions.eq("tSite.siteIdx", siteIdx));
if(!selGroup.equals(0)){
criteria.add(Restrictions.eq("tGroups.tGroup.groupIdx", selGroup));
}
if(!column.equals("")){
if(column.equals("A")){
if(!search.equals("")){
criteria.add(
Restrictions.or(
Restrictions.like("tMember.memberId", search, MatchMode.ANYWHERE),
Restrictions.like("tMember.memberName", search, MatchMode.ANYWHERE)));
}
}else{
criteria.add(Restrictions.like(column, search, MatchMode.ANYWHERE));
}
}
criteria.setProjection(Projections.rowCount());
return (Long)criteria.uniqueResult();
}
//AdminSiteManagerService
@SuppressWarnings({ "unchecked", "deprecation" })
public List<T_SITE_MANAGER> getSiteManagerList(String siteIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MANAGER.class);
criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
criteria.createCriteria("tMember.tGroups", "tGroups", Criteria.LEFT_JOIN);
if(qryColumns != null && qryColumns.length > 0){
ProjectionList projectionList = Projections.projectionList();
boolean groupCheck = false;
for(int q=0; q<qryColumns.length; q++){
if(!groupCheck && qryColumns[q].indexOf("groupBy") >= 0){
groupCheck = true;
continue;
}
if(groupCheck){
if(qryColumns[q].indexOf("Cnt") >= 0){
String qryColumn = qryColumns[q].substring(0, qryColumns[q].indexOf("Cnt"));
projectionList.add(Projections.count(qryColumn).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}else{
projectionList.add(Projections.groupProperty(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}
}else{
projectionList.add(Projections.property(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}
}
criteria.setProjection(projectionList);
criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
}
criteria.setFirstResult(page);
criteria.setMaxResults(row);
criteria.add(Restrictions.eq("tSite.siteIdx", siteIdx));
if(!selGroup.equals(0)){
criteria.add(Restrictions.eq("tGroups.tGroup.groupIdx", selGroup));
}
if(!column.equals("")){
if(column.equals("A")){
if(!search.equals("")){
criteria.add(
Restrictions.or(
Restrictions.like("tMember.memberId", search, MatchMode.ANYWHERE),
Restrictions.like("tMember.memberName", search, MatchMode.ANYWHERE)));
}
}else{
criteria.add(Restrictions.like(column, search, MatchMode.ANYWHERE));
}
}
if(orderColumn.equals("")){
orderColumn = "siteManagerIdx";
}
if(order.equals("DESC")){
criteria.addOrder(Order.desc(orderColumn));
}else{
criteria.addOrder(Order.asc(orderColumn));
}
return criteria.list();
}
//ManagerSiteManagerService
@SuppressWarnings({ "unchecked", "deprecation" })
public List<T_SITE_MANAGER> getSiteManagerList(String memberMergeSiteIdx, Integer memberIdx, String[] qryColumns){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MANAGER.class);
criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
criteria.createCriteria("tSite", "tSite", Criteria.LEFT_JOIN);
if(qryColumns != null && qryColumns.length > 0){
ProjectionList projectionList = Projections.projectionList();
boolean groupCheck = false;
for(int q=0; q<qryColumns.length; q++){
if(!groupCheck && qryColumns[q].indexOf("groupBy") >= 0){
groupCheck = true;
continue;
}
if(groupCheck){
if(qryColumns[q].indexOf("Cnt") >= 0){
String qryColumn = qryColumns[q].substring(0, qryColumns[q].indexOf("Cnt"));
projectionList.add(Projections.count(qryColumn).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}else{
projectionList.add(Projections.groupProperty(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}
}else{
projectionList.add(Projections.property(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
}
}
criteria.setProjection(projectionList);
criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
}
if(!memberMergeSiteIdx.equals("")){
criteria.add(Restrictions.ne("tSite.siteIdx", memberMergeSiteIdx));
}
criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx));
return criteria.list();
}
//AdminSiteService, AdminSiteManagerService
public T_SITE_MANAGER getSiteManagerForm(Integer siteManagerIdx){
return (T_SITE_MANAGER) this.sessionFactory.getCurrentSession().load(T_SITE_MANAGER.class, siteManagerIdx);
}
//AdminSiteService, AdminSiteManagerService, ManagerSiteService
public boolean setSiteManagerRegProc(T_SITE_MANAGER tSiteManager){
boolean success = false;
try{
this.sessionFactory.getCurrentSession().save(tSiteManager);
this.sessionFactory.getCurrentSession().flush();
this.sessionFactory.getCurrentSession().clear();
success = true;
}catch(HibernateException ex){
log.error("CHECK ERROR:",ex);
}
return success;
}
//AdminSiteService, AdminSiteManagerService
public boolean setSiteManagerModProc(T_SITE_MANAGER tSiteManager){
boolean success = false;
try{
this.sessionFactory.getCurrentSession().update(tSiteManager);
this.sessionFactory.getCurrentSession().flush();
this.sessionFactory.getCurrentSession().clear();
success = true;
}catch(HibernateException ex){
log.error("CHECK ERROR:",ex);
}
return success;
}
//AdminSiteManagerService
public boolean setSiteManagerDelProc(T_SITE_MANAGER tSiteManager){
boolean success = false;
try{
this.sessionFactory.getCurrentSession().delete(tSiteManager);
this.sessionFactory.getCurrentSession().flush();
this.sessionFactory.getCurrentSession().clear();
success = true;
}catch(HibernateException ex){
log.error("CHECK ERROR:",ex);
}
return success;
}
}

View File

@ -0,0 +1,37 @@
package seed.manager.banner.service;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;
import seed.map.T_BANNER_DATA;
public interface ManagerBannerDataService {
//ManagerBannerController
public T_BANNER_DATA getBannerDataForm(Integer bannerDataIdx);
//ManagerBannerController
public Long getBannerDataListCnt(Integer bannerSetIdx, String column, String search);
//ManagerBannerController
public List<T_BANNER_DATA> getBannerDataList(Integer bannerSetIdx);
//ManagerBannerController
public List<T_BANNER_DATA> getBannerDataList(Integer bannerSetIdx, int page, int row, String column, String search, String[] qryColumns);
//ManagerBannerController
public Integer setBannerDataRegProc(T_BANNER_DATA tBannerData, MultipartFile upFile, Integer memberIdx, String rootPath);
//ManagerBannerController
public boolean setBannerDataModProc(T_BANNER_DATA tBannerData, Integer memberIdx, MultipartFile upFile, String rootPath);
//ManagerBannerController
public boolean setBannerDataDelProc(Integer bannerDataIdx, String rootPath);
//ManagerBannerController
public boolean setBannerDataStatusProc(Integer bannerDataIdx, String status, Integer memberIdx);
//ManagerBannerController
public boolean setBannerDataOrderProc(Integer bannerSetIdx , Integer bannerDataOrder, String orderType, Integer memberIdx);
}

View File

@ -0,0 +1,257 @@
package seed.manager.banner.service;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.BannerDataDAO;
import seed.map.T_BANNER_DATA;
import seed.map.T_MEMBER;
import seed.utils.SeedFtpType;
import seed.utils.SeedUtils;
@Service
public class ManagerBannerDataServiceImpl extends AbstractServiceImpl implements ManagerBannerDataService{
private Logger log = Logger.getLogger(this.getClass());
@Autowired
private BannerDataDAO bannerDataDAO;
//ManagerBannerController
public T_BANNER_DATA getBannerDataForm(Integer bannerDataIdx){
return bannerDataDAO.getBannerDataForm(bannerDataIdx);
}
//ManagerBannerController
public Long getBannerDataListCnt(Integer bannerSetIdx, String column, String search){
return bannerDataDAO.getBannerDataListCnt(bannerSetIdx, column, search);
}
//ManagerBannerController
public List<T_BANNER_DATA> getBannerDataList(Integer bannerSetIdx){
return bannerDataDAO.getBannerDataList(bannerSetIdx);
}
//ManagerBannerController
public List<T_BANNER_DATA> getBannerDataList(Integer bannerSetIdx, int page, int row, String column, String search, String[] qryColumns){
return bannerDataDAO.getBannerDataList(bannerSetIdx, ((page-1) * row), row, column, search, qryColumns);
}
//ManagerBannerController
@Transactional
public Integer setBannerDataRegProc(T_BANNER_DATA tBannerData, MultipartFile upFile, Integer memberIdx, String rootPath){
Integer bannerDataIdx = 0;
try{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tBannerData.settMember(tMember);
tBannerData.setBannerDataOrder(bannerDataDAO.getBannerDataOrderFormCnt(tBannerData.gettBannerSet().getBannerSetIdx())+1);
tBannerData.setBannerDataStatus("U");
tBannerData.setBannerDataRegDate(new Date());
tBannerData.setBannerDataModDate(new Date());
SeedUtils.setSeedMkDirs(rootPath + "/" + tBannerData.gettBannerSet().gettSite().getSiteIdx() + "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String reFileName = tBannerData.gettBannerSet().getBannerSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tBannerData.gettBannerSet().gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx() + "/" + reFileName +
upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
upFile.transferTo(makeFile);
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerData.gettBannerSet().gettSite().getSiteIdx() + "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tBannerData.gettBannerSet().gettSite().getSiteIdx() + "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tBannerData.setBannerDataFile(upFile.getOriginalFilename());
tBannerData.setBannerDataReFile(reFileName+upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
T_BANNER_DATA tBannerDataDB = bannerDataDAO.setBannerDataRegProc(tBannerData);
if(tBannerDataDB.getBannerDataIdx() > 0){
bannerDataIdx = tBannerDataDB.getBannerDataIdx();
}
}catch(IOException e){
log.error("CHECK ERROR:",e);
}
return bannerDataIdx;
}
//ManagerBannerController
@Transactional
public boolean setBannerDataModProc(T_BANNER_DATA tBannerData, Integer memberIdx, MultipartFile upFile, String rootPath){
T_BANNER_DATA tBannerDataDB = bannerDataDAO.getBannerDataForm(tBannerData.getBannerDataIdx());
try{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tBannerDataDB.settMember(tMember);
tBannerDataDB.setBannerDataTitle(tBannerData.getBannerDataTitle());
tBannerDataDB.setBannerDataContent(tBannerData.getBannerDataContent());
tBannerDataDB.setBannerDataType(tBannerData.getBannerDataType());
tBannerDataDB.setBannerDataSdate(tBannerData.getBannerDataSdate());
tBannerDataDB.setBannerDataEdate(tBannerData.getBannerDataEdate());
tBannerDataDB.setBannerDataLink(tBannerData.getBannerDataLink());
tBannerDataDB.setBannerDataLinkType(tBannerData.getBannerDataLinkType());
tBannerDataDB.setBannerDataModDate(new Date());
if(upFile != null && upFile.getBytes().length > 0){
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerData.gettBannerSet().gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx() + "/" + tBannerDataDB.getBannerDataReFile());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerData.gettBannerSet().gettSite().getSiteIdx() + "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tBannerDataDB.getBannerDataReFile());
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
SeedUtils.setSeedMkDirs(rootPath + "/" + tBannerData.gettBannerSet().gettSite().getSiteIdx() + "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String reFileName = tBannerData.gettBannerSet().getBannerSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tBannerData.gettBannerSet().gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx() + "/" + reFileName +
upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
upFile.transferTo(makeFile);
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerData.gettBannerSet().gettSite().getSiteIdx() + "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tBannerData.gettBannerSet().gettSite().getSiteIdx() + "/upload/banner/" + tBannerData.gettBannerSet().getBannerSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tBannerDataDB.setBannerDataFile(upFile.getOriginalFilename());
tBannerDataDB.setBannerDataReFile(reFileName+upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
}
}catch(IOException e){
log.error("CHECK ERROR:",e);
}
return bannerDataDAO.setBannerDataModProc(tBannerDataDB);
}
//ManagerBannerController
@Transactional
public boolean setBannerDataDelProc(Integer bannerDataIdx, String rootPath){
T_BANNER_DATA tBannerDataDB = bannerDataDAO.getBannerDataForm(bannerDataIdx);
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerDataDB.gettBannerSet().gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerDataDB.gettBannerSet().getBannerSetIdx() + "/" + tBannerDataDB.getBannerDataReFile());
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerDataDB.gettBannerSet().gettSite().getSiteIdx() + "/upload/banner/" + tBannerDataDB.gettBannerSet().getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tBannerDataDB.getBannerDataReFile());
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
if(bannerDataDAO.getBannerDataListCnt(tBannerDataDB.gettBannerSet().getBannerSetIdx()) > 1){
bannerDataDAO.setBannerDataOrderProc(tBannerDataDB.gettBannerSet().getBannerSetIdx(), tBannerDataDB.getBannerDataOrder());
}
return bannerDataDAO.setBannerDataDelProc(tBannerDataDB);
}
//ManagerBannerController
@Transactional
public boolean setBannerDataStatusProc(Integer bannerDataIdx, String status, Integer memberIdx){
T_BANNER_DATA tBannerDataDB = bannerDataDAO.getBannerDataForm(bannerDataIdx);
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tBannerDataDB.settMember(tMember);
tBannerDataDB.setBannerDataModDate(new Date());
tBannerDataDB.setBannerDataStatus(status);
return bannerDataDAO.setBannerDataModProc(tBannerDataDB);
}
//ManagerBannerController
@Transactional
public boolean setBannerDataOrderProc(Integer bannerSetIdx, Integer bannerDataOrder, String orderType, Integer memberIdx){
boolean success = false;
Integer bannerDataOrderTmp = bannerDataOrder;
if(orderType.equals("up")){
bannerDataOrder = bannerDataOrder - 1;
}else{
bannerDataOrder = bannerDataOrder + 1;
}
T_BANNER_DATA tBannerDataOrderDB = bannerDataDAO.getBannerDataOrderForm(bannerSetIdx, bannerDataOrder);
T_BANNER_DATA tBannerDataDB = bannerDataDAO.getBannerDataOrderForm(bannerSetIdx, bannerDataOrderTmp);
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tBannerDataOrderDB.settMember(tMember);
tBannerDataDB.settMember(tMember);
tBannerDataOrderDB.setBannerDataOrder(bannerDataOrderTmp);
tBannerDataDB.setBannerDataOrder(bannerDataOrder);
if(bannerDataDAO.setBannerDataModProc(tBannerDataDB)
&& bannerDataDAO.setBannerDataModProc(tBannerDataOrderDB)){
success = true;
}
return success;
}
}

View File

@ -0,0 +1,38 @@
package seed.manager.banner.service;
import java.util.List;
import seed.map.T_BANNER_MANAGER;
public interface ManagerBannerManagerService {
//ManagerBannerController
public boolean getBannerManagerListGrantCnt(Integer bannerSetIdx, Integer memberIdx);
//ManagerBannerController
public boolean getBannerManagerListCnt(Integer bannerSetIdx, Integer memberIdx);
//ManagerBannerController
public Long getBannerManagerListCnt(Integer bannerSetIdx, Integer selGroup, String column, String search);
//CommonController
public Long getBannerManagerListCnt(String siteIdx, Integer memberIdx, String column, String search);
//CommonController
public List<T_BANNER_MANAGER> getBannerManagerList(Integer bannerSetIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns);
//ManagerBannerController
public List<T_BANNER_MANAGER> getBannerManagerList(String siteIdx, Integer memberIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns);
//CommonController
public boolean setBannerManagerRegProc(Integer bannerSetIdx, Integer[] idxsc);
//CommonController
public boolean setBannerManagerDelProc(Integer bannerManagerIdx);
//CommonController
public boolean setBannerManagerStatusProc(Integer bannerManagerIdx, String status);
//CommonController
public boolean setBannerManagerGrantProc(Integer bannerManagerIdx, String grant);
}

View File

@ -0,0 +1,188 @@
package seed.manager.banner.service;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.BannerManagerDAO;
import seed.dao.MemberDAO;
import seed.dao.SiteManager2DAO;
import seed.map.T_BANNER_MANAGER;
import seed.map.T_BANNER_SET;
import seed.map.T_MEMBER;
@Service
public class ManagerBannerManagerServiceImpl extends AbstractServiceImpl implements ManagerBannerManagerService{
@Autowired
private BannerManagerDAO bannerManagerDAO;
@Autowired
private SiteManager2DAO siteManager2DAO;
@Autowired
private MemberDAO memberDAO;
//ManagerBannerController
public boolean getBannerManagerListGrantCnt(Integer bannerSetIdx, Integer memberIdx){
boolean success = false;
if(bannerManagerDAO.getBannerManagerListGrantCnt(bannerSetIdx, memberIdx) > 0){
success = true;
}
return success;
}
//ManagerBannerController
public boolean getBannerManagerListCnt(Integer bannerSetIdx, Integer memberIdx){
boolean success = false;
if(bannerManagerDAO.getBannerManagerListCnt(bannerSetIdx, memberIdx) > 0){
success = true;
}
return success;
}
//CommonController
public Long getBannerManagerListCnt(Integer bannerSetIdx, Integer selGroup, String column, String search){
return bannerManagerDAO.getBannerManagerListCnt(bannerSetIdx, selGroup, column, search);
}
//ManagerBannerController
public Long getBannerManagerListCnt(String siteIdx, Integer memberIdx, String column, String search){
return bannerManagerDAO.getBannerManagerListCnt(siteIdx, memberIdx, column, search);
}
//CommonController
public List<T_BANNER_MANAGER> getBannerManagerList(Integer bannerSetIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns){
return bannerManagerDAO.getBannerManagerList(bannerSetIdx, ((page-1) * row), row, orderColumn, order, selGroup, column, search, qryColumns);
}
//ManagerBannerController
public List<T_BANNER_MANAGER> getBannerManagerList(String siteIdx, Integer memberIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns){
return bannerManagerDAO.getBannerManagerList(siteIdx, memberIdx, ((page-1) * row), row, orderColumn, order, column, search, qryColumns);
}
//CommonController
@Transactional
public boolean setBannerManagerRegProc(Integer bannerSetIdx, Integer[] idxsc){
boolean success = false;
if(idxsc.length > 0){
for(int i=0; i<idxsc.length; i++){
if(bannerManagerDAO.getBannerManagerListCnt(bannerSetIdx, idxsc[i]) > 0){
success = true;
}else{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(idxsc[i]);
T_BANNER_SET tBannerSet = new T_BANNER_SET();
tBannerSet.setBannerSetIdx(bannerSetIdx);
T_BANNER_MANAGER tBannerManager = new T_BANNER_MANAGER();
tBannerManager.settMember(tMember);
tBannerManager.settBannerSet(tBannerSet);
tBannerManager.setBannerManagerStatus("U");
tBannerManager.setBannerManagerGrant("S");
tBannerManager.setBannerManagerRegDate(new Date());
if(bannerManagerDAO.setBannerManagerRegProc(tBannerManager)){
success = true;
T_MEMBER tMemberDB = memberDAO.getMemberForm(idxsc[i]);
if(!tMemberDB.getMemberGrant().equals("S")){
if(tMemberDB.getMemberGrant().equals("SM")){
tMemberDB.setMemberGrant("SM");
}else{
tMemberDB.setMemberGrant("M");
}
if(!memberDAO.setMemberModProc(tMemberDB)){
success = false;
break;
}
}
}else{
success = false;
}
}
}
}
return success;
}
//CommonController
@Transactional
public boolean setBannerManagerDelProc(Integer bannerManagerIdx){
boolean success = false;
T_BANNER_MANAGER tBannerManagerDB = bannerManagerDAO.getBannerManagerForm(bannerManagerIdx);
if(bannerManagerDAO.setBannerManagerDelProc(tBannerManagerDB)){
success = true;
T_MEMBER tMemberDB = memberDAO.getMemberForm(tBannerManagerDB.gettMember().getMemberIdx());
if(!tMemberDB.getMemberGrant().equals("S")){
if(siteManager2DAO.getSiteManagerListCnt(tMemberDB.getMemberIdx()) > 0){
tMemberDB.setMemberGrant("SM");
}else if((tMemberDB.getMemberGrant().equals("SM") || tMemberDB.getMemberGrant().equals("M"))){
tMemberDB.setMemberGrant("M");
}else{
tMemberDB.setMemberGrant("N");
}
if(!memberDAO.setMemberModProc(tMemberDB)){
success = false;
}
}
}
return success;
}
//CommonController
@Transactional
public boolean setBannerManagerStatusProc(Integer bannerManagerIdx, String status){
T_BANNER_MANAGER tBannerManagerDB = bannerManagerDAO.getBannerManagerForm(bannerManagerIdx);
tBannerManagerDB.setBannerManagerStatus(status);
return bannerManagerDAO.setBannerManagerModProc(tBannerManagerDB);
}
//CommonController
@Transactional
public boolean setBannerManagerGrantProc(Integer bannerManagerIdx, String grant){
T_BANNER_MANAGER tBannerManagerDB = bannerManagerDAO.getBannerManagerForm(bannerManagerIdx);
tBannerManagerDB.setBannerManagerGrant(grant);
return bannerManagerDAO.setBannerManagerModProc(tBannerManagerDB);
}
}

View File

@ -0,0 +1,33 @@
package seed.manager.banner.service;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import seed.map.T_BANNER_SET;
public interface ManagerBannerSetService {
//ManagerBannerController
public T_BANNER_SET getBannerSetForm(Integer bannerSetIdx);
//ManagerBannerController
public Long getBannerSetListCnt(String siteIdx, String column, String search);
//ManagerBannerController
public List<T_BANNER_SET> getBannerSetList(String siteIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns);
//ManagerBannerController
public Integer setBannerSetRegProc(T_BANNER_SET tBannerSet, Integer memberIdx, HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, String rootPath);
//ManagerBannerController
public boolean setBannerSetModProc(T_BANNER_SET tBannerSet, Integer memberIdx, HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, String rootPath);
//ManagerBannerController
public boolean setBannerSetDelProc(Integer bannerSetIdx, String rootPath);
//ManagerBannerController
public boolean setBannerSetStatusProc(Integer bannerSetIdx, String status, Integer memberIdx);
}

View File

@ -0,0 +1,449 @@
package seed.manager.banner.service;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.BannerDataDAO;
import seed.dao.BannerSetDAO;
import seed.map.T_BANNER_DATA;
import seed.map.T_BANNER_SET;
import seed.map.T_MEMBER;
import seed.utils.SeedFtpType;
import seed.utils.SeedUtils;
@Service
public class ManagerBannerSetServiceImpl extends AbstractServiceImpl implements ManagerBannerSetService{
private Logger log = Logger.getLogger(this.getClass());
@Autowired
private BannerSetDAO bannerSetDAO;
@Autowired
private BannerDataDAO bannerDataDAO;
//ManagerBannerController
public T_BANNER_SET getBannerSetForm(Integer bannerSetIdx){
return bannerSetDAO.getBannerSetForm(bannerSetIdx);
}
public Long getBannerSetListCnt(String siteIdx, String column, String search){
return bannerSetDAO.getBannerSetListCnt(siteIdx, column, search);
}
public List<T_BANNER_SET> getBannerSetList(String siteIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns){
return bannerSetDAO.getBannerSetList(siteIdx, ((page-1) * row), row, orderColumn, order, column, search, qryColumns);
}
@Transactional
public Integer setBannerSetRegProc(T_BANNER_SET tBannerSet, Integer memberIdx, HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, String rootPath){
Integer bannerSetIdx = 0;
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tBannerSet.settMember(tMember);
tBannerSet.setBannerSetStatus("U");
tBannerSet.setBannerSetRegDate(new Date());
tBannerSet.setBannerSetModDate(new Date());
T_BANNER_SET tBannerSetDB = bannerSetDAO.setBannerSetRegProc(tBannerSet);
if(tBannerSetDB.getBannerSetIdx() > 0){
T_BANNER_SET tBannerSetTmp = bannerSetDAO.getBannerSetForm(tBannerSetDB.getBannerSetIdx());
try{
SeedUtils.setSeedMkDirs(rootPath + "/" + tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Iterator<String> iteratorfileNames = multipartHttpServletRequest.getFileNames();
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
while (iteratorfileNames.hasNext()) {
String fileFormName = (String)iteratorfileNames.next();
String fileFormRename = fileFormName.substring(fileFormName.indexOf("file_")+5);
MultipartFile multipartFile = multipartHttpServletRequest.getFile(fileFormName);
if(multipartFile != null && !multipartFile.isEmpty()){
String reFileName = tBannerSetTmp.getBannerSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tBannerSetTmp.gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerSetTmp.getBannerSetIdx() + "/" + reFileName +
multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
multipartFile.transferTo(makeFile);
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
if(fileFormRename.equals("bannerSetPlayImg")){
tBannerSetTmp.setBannerSetPlayImg(multipartFile.getOriginalFilename());
tBannerSetTmp.setBannerSetPlayReImg(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
}else if(fileFormRename.equals("bannerSetStopImg")){
tBannerSetTmp.setBannerSetStopImg(multipartFile.getOriginalFilename());
tBannerSetTmp.setBannerSetStopReImg(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
}else if(fileFormRename.equals("bannerSetPreImg")){
tBannerSetTmp.setBannerSetPreImg(multipartFile.getOriginalFilename());
tBannerSetTmp.setBannerSetPreReImg(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
}else if(fileFormRename.equals("bannerSetNextImg")){
tBannerSetTmp.setBannerSetNextImg(multipartFile.getOriginalFilename());
tBannerSetTmp.setBannerSetNextReImg(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
}
}
}
String filePath = rootPath.substring(0, rootPath.lastIndexOf("/site"));
if(SeedUtils.setReplaceNull(tBannerSetTmp.getBannerSetPlayImg()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/banner/btn_play.png",
rootPath + "/" + tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx() + "/btn_play.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/banner");
//WAS 파일명
seedFtpType.setFileName("btn_play.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tBannerSetTmp.setBannerSetPlayImg("btn_play.png");
tBannerSetTmp.setBannerSetPlayReImg("btn_play.png");
}
if(SeedUtils.setReplaceNull(tBannerSetTmp.getBannerSetStopImg()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/banner/btn_stop.png",
rootPath + "/" + tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx() + "/btn_stop.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/banner");
//WAS 파일명
seedFtpType.setFileName("btn_stop.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tBannerSetTmp.setBannerSetStopImg("btn_stop.png");
tBannerSetTmp.setBannerSetStopReImg("btn_stop.png");
}
if(SeedUtils.setReplaceNull(tBannerSetTmp.getBannerSetPreImg()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/banner/btn_pre.png",
rootPath + "/" + tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx() + "/btn_pre.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/banner");
//WAS 파일명
seedFtpType.setFileName("btn_pre.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tBannerSetTmp.setBannerSetPreImg("btn_pre.png");
tBannerSetTmp.setBannerSetPreReImg("btn_pre.png");
}
if(SeedUtils.setReplaceNull(tBannerSetTmp.getBannerSetNextImg()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/banner/btn_next.png",
rootPath + "/" + tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx() + "/btn_next.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetTmp.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetTmp.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/banner");
//WAS 파일명
seedFtpType.setFileName("btn_next.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tBannerSetTmp.setBannerSetNextImg("btn_next.png");
tBannerSetTmp.setBannerSetNextReImg("btn_next.png");
}
if(bannerSetDAO.setBannerSetModProc(tBannerSetTmp)){
bannerSetIdx = tBannerSetTmp.getBannerSetIdx();
}
}catch(IOException e){
log.error("CHECK ERROR:",e);
}
}
return bannerSetIdx;
}
@Transactional
public boolean setBannerSetModProc(T_BANNER_SET tBannerSet, Integer memberIdx, HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, String rootPath){
T_BANNER_SET tBannerSetDB = bannerSetDAO.getBannerSetForm(tBannerSet.getBannerSetIdx());
try{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tBannerSetDB.settMember(tMember);
tBannerSetDB.setBannerSetName(tBannerSet.getBannerSetName());
tBannerSetDB.setBannerSetWidth(tBannerSet.getBannerSetWidth());
tBannerSetDB.setBannerSetHeight(tBannerSet.getBannerSetHeight());
tBannerSetDB.setBannerDataWidth(tBannerSet.getBannerDataWidth());
tBannerSetDB.setBannerDataHeight(tBannerSet.getBannerDataHeight());
tBannerSetDB.setBannerDataPadding(tBannerSet.getBannerDataPadding());
tBannerSetDB.setBannerSetSkin(tBannerSet.getBannerSetSkin());
tBannerSetDB.setBannerSetTime(tBannerSet.getBannerSetTime());
tBannerSetDB.setBannerSetArray(tBannerSet.getBannerSetArray());
tBannerSetDB.setBannerSetPSTB(tBannerSet.getBannerSetPSTB());
tBannerSetDB.setBannerSetPSTBPosition(tBannerSet.getBannerSetPSTBPosition());
tBannerSetDB.setBannerSetPSLR(tBannerSet.getBannerSetPSLR());
tBannerSetDB.setBannerSetPSLRPosition(tBannerSet.getBannerSetPSLRPosition());
tBannerSetDB.setBannerSetPreTB(tBannerSet.getBannerSetPreTB());
tBannerSetDB.setBannerSetPreTBPosition(tBannerSet.getBannerSetPreTBPosition());
tBannerSetDB.setBannerSetPreLR(tBannerSet.getBannerSetPreLR());
tBannerSetDB.setBannerSetPreLRPosition(tBannerSet.getBannerSetPreLRPosition());
tBannerSetDB.setBannerSetNextTB(tBannerSet.getBannerSetNextTB());
tBannerSetDB.setBannerSetNextTBPosition(tBannerSet.getBannerSetNextTBPosition());
tBannerSetDB.setBannerSetNextLR(tBannerSet.getBannerSetNextLR());
tBannerSetDB.setBannerSetNextLRPosition(tBannerSet.getBannerSetNextLRPosition());
tBannerSetDB.setBannerSetType(tBannerSet.getBannerSetType());
tBannerSetDB.setBannerSetModDate(new Date());
Iterator<String> iteratorfileNames = multipartHttpServletRequest.getFileNames();
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
while (iteratorfileNames.hasNext()) {
String fileFormName = (String)iteratorfileNames.next();
String fileFormRename = fileFormName.substring(fileFormName.indexOf("file_")+5);
MultipartFile multipartFile = multipartHttpServletRequest.getFile(fileFormName);
if(multipartFile != null && !multipartFile.isEmpty()){
SeedUtils.setSeedMkDirs(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetDB.getBannerSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String reFileName = tBannerSetDB.getBannerSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerSetDB.getBannerSetIdx() + "/" + reFileName +
multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
multipartFile.transferTo(makeFile);
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetDB.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetDB.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetDB.getBannerSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
if(fileFormRename.equals("bannerSetPlayImg")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerSetDB.getBannerSetIdx() + "/" + tBannerSetDB.getBannerSetPlayReImg());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetDB.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetDB.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tBannerSetDB.getBannerSetPlayReImg());
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tBannerSetDB.setBannerSetPlayImg(multipartFile.getOriginalFilename());
tBannerSetDB.setBannerSetPlayReImg(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
}else if(fileFormRename.equals("bannerSetStopImg")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerSetDB.getBannerSetIdx() + "/" + tBannerSetDB.getBannerSetStopReImg());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetDB.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetDB.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tBannerSetDB.getBannerSetStopReImg());
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tBannerSetDB.setBannerSetStopImg(multipartFile.getOriginalFilename());
tBannerSetDB.setBannerSetStopReImg(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
}else if(fileFormRename.equals("bannerSetPreImg")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerSetDB.getBannerSetIdx() + "/" + tBannerSetDB.getBannerSetPreReImg());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetDB.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetDB.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tBannerSetDB.getBannerSetPreReImg());
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tBannerSetDB.setBannerSetPreImg(multipartFile.getOriginalFilename());
tBannerSetDB.setBannerSetPreReImg(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
}else if(fileFormRename.equals("bannerSetNextImg")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerSetDB.getBannerSetIdx() + "/" + tBannerSetDB.getBannerSetNextReImg());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetDB.gettSite().getSiteIdx() + "/upload/banner/" + tBannerSetDB.getBannerSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tBannerSetDB.getBannerSetNextReImg());
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tBannerSetDB.setBannerSetNextImg(multipartFile.getOriginalFilename());
tBannerSetDB.setBannerSetNextReImg(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
}
}
}
}catch(IOException e){
log.error("CHECK ERROR:",e);
}
return bannerSetDAO.setBannerSetModProc(tBannerSetDB);
}
@Transactional
public boolean setBannerSetDelProc(Integer bannerSetIdx, String rootPath){
T_BANNER_SET tBannerSetDB = bannerSetDAO.getBannerSetForm(bannerSetIdx);
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
SeedUtils.setSeedDeleteFiles(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/upload/banner/" + tBannerSetDB.getBannerSetIdx() , "");
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/jsp/banner/banner_" + tBannerSetDB.getBannerSetIdx() +".jsp");
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/jsp/banner/css/banner_" + tBannerSetDB.getBannerSetIdx() +".css");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetDB.gettSite().getSiteIdx() + "/jsp/banner/css");
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName("banner_" + tBannerSetDB.getBannerSetIdx() +".css");
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
SeedUtils.setSeedDeleteFile(rootPath + "/" + tBannerSetDB.gettSite().getSiteIdx()
+ "/jsp/banner/js/banner_" + tBannerSetDB.getBannerSetIdx() +".js");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tBannerSetDB.gettSite().getSiteIdx() + "/jsp/banner/js");
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName("banner_" + tBannerSetDB.getBannerSetIdx() +".js");
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
return bannerSetDAO.setBannerSetDelProc(tBannerSetDB);
}
@Transactional
public boolean setBannerSetStatusProc(Integer bannerSetIdx, String status, Integer memberIdx){
boolean success = false;
T_BANNER_SET tBannerSetDB = bannerSetDAO.getBannerSetForm(bannerSetIdx);
Iterator<T_BANNER_DATA> iteratorList = tBannerSetDB.gettBannerDatas().iterator();
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tBannerSetDB.settMember(tMember);
tBannerSetDB.setBannerSetModDate(new Date());
tBannerSetDB.setBannerSetStatus(status);
if(bannerSetDAO.setBannerSetModProc(tBannerSetDB)){
success = true;
while(iteratorList.hasNext()){
T_BANNER_DATA tBannerDataDB = bannerDataDAO.getBannerDataForm(iteratorList.next().getBannerDataIdx());
tBannerDataDB.settMember(tMember);
tBannerDataDB.setBannerDataModDate(new Date());
tBannerDataDB.setBannerDataStatus(status);
if(!bannerDataDAO.setBannerDataModProc(tBannerDataDB)){
success = false;
break;
}
}
}
return success;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -9,10 +9,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.BbsManagerDAO;
import seed.dao.MemberDAO;
import seed.dao.SiteManagerDAO;
import seed.dao.SiteManager2DAO;
import seed.map.T_BBS_MANAGER;
import seed.map.T_BBS_SET;
import seed.map.T_MEMBER;
@ -23,8 +22,8 @@ public class ManagerBbsManagerServiceImpl extends AbstractServiceImpl implements
@Autowired
private BbsManagerDAO bbsManagerDAO;
@Autowired
private SiteManagerDAO siteManagerDAO;
//@Autowired
private SiteManager2DAO siteManagerDAO;
@Autowired
private MemberDAO memberDAO;

View File

@ -9,10 +9,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.FormbuilderManagerDAO;
import seed.dao.MemberDAO;
import seed.dao.SiteManagerDAO;
import seed.dao.SiteManager2DAO;
import seed.map.T_FORMBUILDER_MANAGER;
import seed.map.T_FORMBUILDER_SET;
import seed.map.T_MEMBER;
@ -23,8 +22,8 @@ public class ManagerFormbuilderManagerServiceImpl extends AbstractServiceImpl im
@Autowired
private FormbuilderManagerDAO formbuilderManagerDAO;
@Autowired
private SiteManagerDAO siteManagerDAO;
//@Autowired
private SiteManager2DAO siteManagerDAO;
@Autowired
private MemberDAO memberDAO;

View File

@ -10,7 +10,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.BannerDataDAO;
import seed.dao.BannerManagerDAO;
import seed.dao.BannerSetDAO;
@ -37,7 +36,7 @@ import seed.dao.QuickDataDAO;
import seed.dao.QuickManagerDAO;
import seed.dao.QuickSetDAO;
import seed.dao.SiteDAO;
import seed.dao.SiteManagerDAO;
import seed.dao.SiteManager2DAO;
import seed.dao.SiteMenuDAO;
import seed.dao.SiteMenuManagerDAO;
import seed.dao.SurveyAuthDAO;
@ -130,8 +129,8 @@ public class ManagerMemberServiceImpl extends AbstractServiceImpl implements Man
@Autowired
private CommonMessageDAO commonMessageDAO;
@Autowired
private SiteManagerDAO siteManagerDAO;
//@Autowired
private SiteManager2DAO siteManagerDAO;
@Autowired
private SiteMenuManagerDAO siteMenuManagerDAO;

View File

@ -8,9 +8,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.MemberDAO;
import seed.dao.SiteManagerDAO;
import seed.dao.SiteManager2DAO;
import seed.map.T_MEMBER;
import seed.map.T_SITE;
import seed.map.T_SITE_MANAGER;
@ -20,7 +19,7 @@ import seed.map.VIEW_MANAGER_DATA;
public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implements ManagerSiteManagerService{
@Autowired
private SiteManagerDAO siteManagerDAO;
private SiteManager2DAO siteManager2DAO;
@Autowired
private MemberDAO memberDAO;
@ -28,20 +27,20 @@ public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implement
//ManagerLoginController
public List<T_SITE_MANAGER> getSiteManagerList(String memberMergeSiteIdx, Integer memberIdx, String[] qryColumns){
return siteManagerDAO.getSiteManagerList(memberMergeSiteIdx, memberIdx, qryColumns);
return siteManager2DAO.getSiteManagerList(memberMergeSiteIdx, memberIdx, qryColumns);
}
//ManagerELoginController
public List<VIEW_MANAGER_DATA> getSiteManagerList(Integer memberIdx, String[] qryColumns){
return siteManagerDAO.getSiteManagerList(memberIdx, qryColumns);
return siteManager2DAO.getSiteManagerList(memberIdx, qryColumns);
}
public boolean getSiteManagerListCnt(String siteIdx, Integer memberIdx){
boolean success = false;
if(siteManagerDAO.getSiteManagerListCnt(siteIdx, memberIdx) > 0){
if(siteManager2DAO.getSiteManagerListCnt(siteIdx, memberIdx) > 0){
success = true;
}
@ -52,7 +51,7 @@ public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implement
boolean success = false;
if(siteManagerDAO.getSiteManagerListCnt(memberIdx) > 0){
if(siteManager2DAO.getSiteManagerListCnt(memberIdx) > 0){
success = true;
}
@ -62,13 +61,13 @@ public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implement
//CommonController
public Long getSiteManagerListCnt(String siteIdx, Integer selGroup, String column, String search){
return siteManagerDAO.getSiteManagerListCnt(siteIdx, selGroup, column, search);
return siteManager2DAO.getSiteManagerListCnt(siteIdx, selGroup, column, search);
}
//CommonController
public List<T_SITE_MANAGER> getSiteManagerList(String siteIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns){
return siteManagerDAO.getSiteManagerList(siteIdx, ((page-1) * row), row, orderColumn, order, selGroup, column, search, qryColumns);
return siteManager2DAO.getSiteManagerList(siteIdx, ((page-1) * row), row, orderColumn, order, selGroup, column, search, qryColumns);
}
//CommonController
@ -81,7 +80,7 @@ public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implement
for(int i=0; i<idxsc.length; i++){
if(siteManagerDAO.getSiteManagerListCnt(siteIdx, idxsc[i]) > 0){
if(siteManager2DAO.getSiteManagerListCnt(siteIdx, idxsc[i]) > 0){
success = true;
}else{
@ -98,7 +97,7 @@ public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implement
tSiteManager.setSiteManagerStatus("U");
tSiteManager.setSiteManagerRegDate(new Date());
if(siteManagerDAO.setSiteManagerRegProc(tSiteManager)){
if(siteManager2DAO.setSiteManagerRegProc(tSiteManager)){
success = true;
@ -127,9 +126,9 @@ public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implement
boolean success = false;
T_SITE_MANAGER tSiteManagerDB = siteManagerDAO.getSiteManagerForm(siteManagerIdx);
T_SITE_MANAGER tSiteManagerDB = siteManager2DAO.getSiteManagerForm(siteManagerIdx);
if(siteManagerDAO.setSiteManagerDelProc(tSiteManagerDB)){
if(siteManager2DAO.setSiteManagerDelProc(tSiteManagerDB)){
success = true;
@ -137,7 +136,7 @@ public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implement
if(!tMemberDB.getMemberGrant().equals("S")){
if(siteManagerDAO.getSiteManagerListCnt(tMemberDB.getMemberIdx()) > 0){
if(siteManager2DAO.getSiteManagerListCnt(tMemberDB.getMemberIdx()) > 0){
tMemberDB.setMemberGrant("SM");
}else if((tMemberDB.getMemberGrant().equals("SM") || tMemberDB.getMemberGrant().equals("M"))){
tMemberDB.setMemberGrant("M");
@ -158,10 +157,10 @@ public class ManagerSiteManagerServiceImpl extends AbstractServiceImpl implement
@Transactional
public boolean setSiteManagerStatusProc(Integer siteManagerIdx, String status){
T_SITE_MANAGER tSiteManagerDB = siteManagerDAO.getSiteManagerForm(siteManagerIdx);
T_SITE_MANAGER tSiteManagerDB = siteManager2DAO.getSiteManagerForm(siteManagerIdx);
tSiteManagerDB.setSiteManagerStatus(status);
return siteManagerDAO.setSiteManagerModProc(tSiteManagerDB);
return siteManager2DAO.setSiteManagerModProc(tSiteManagerDB);
}
}

View File

@ -9,9 +9,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.MemberDAO;
import seed.dao.SiteManagerDAO;
import seed.dao.SiteManager2DAO;
import seed.dao.SiteMenuManagerDAO;
import seed.map.T_MEMBER;
import seed.map.T_SITE_MENU;
@ -24,8 +23,8 @@ public class ManagerSiteMenuManagerServiceImpl extends AbstractServiceImpl imple
@Autowired
private SiteMenuManagerDAO siteMenuManagerDAO;
@Autowired
private SiteManagerDAO siteManagerDAO;
//@Autowired
private SiteManager2DAO siteManagerDAO;
@Autowired
private MemberDAO memberDAO;

View File

@ -19,7 +19,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.MemberDAO;
import seed.dao.SiteDAO;
import seed.dao.SiteMenuAuthDAO;
@ -57,6 +56,8 @@ public class ManagerSiteServiceImpl extends AbstractServiceImpl implements Manag
//managerSiteController
public T_SITE getSiteForm(String siteIdx){
System.out.println("getSiteForm=1="+siteIdx);
return siteDAO.getSiteForm(siteIdx);
}

View File

@ -0,0 +1,16 @@
package seed.manager.skin.service;
public interface ManagerSiteSkinService {
//ManagerSiteSkinController
public String getSiteSkinHtml(String siteIdx, String pageType, String pageName, String rootPath);
//ManagerSiteSkinController
public String getSiteSkinCss(String siteIdx, String pageType, String pageName, String rootPath);
//ManagerSiteSkinController
public boolean setSiteSkinHtmlModProc(String siteIdx, String pageType, String pageName, String siteSkinHtml, String rootPath);
//ManagerSiteSkinController
public boolean setSiteSkinCssModProc(String siteIdx, String pageType, String pageName, String siteSkinCss, String rootPath);
}

View File

@ -0,0 +1,240 @@
package seed.manager.skin.service;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.utils.SeedFtpType;
import seed.utils.SeedUtils;
@Service
public class ManagerSiteSkinServiceImpl extends AbstractServiceImpl implements ManagerSiteSkinService{
private Logger log = Logger.getLogger(this.getClass());
//ManagerSiteSkinController
public synchronized String getSiteSkinHtml(String siteIdx, String pageType, String pageName, String rootPath){
StringBuffer fileHtml = new StringBuffer();
String filePath = rootPath + "/" + siteIdx + "/jsp/"+pageType+"/"+pageName+".html";
filePath = SeedUtils.setFilePathReplaceAll(filePath);
FileInputStream fileInputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
try{
File menuFile = new File(filePath);
if(menuFile.exists()){
fileInputStream = new FileInputStream(filePath);
inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
bufferedReader = new BufferedReader(inputStreamReader);
String fileBuffer = "";
while((fileBuffer = bufferedReader.readLine()) != null){
fileHtml.append(fileBuffer);
fileHtml.append("\n");
}
}
}catch(FileNotFoundException e){
log.error("CHECK ERROR:",e);
}catch(IOException e){
log.error("CHECK ERROR:",e);
}finally{
if(bufferedReader!=null){try{bufferedReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(inputStreamReader!=null){try{inputStreamReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(fileInputStream!=null){try{fileInputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
}
return fileHtml.toString();
}
//ManagerSiteSkinController
public synchronized String getSiteSkinCss(String siteIdx, String pageType, String pageName, String rootPath){
StringBuffer fileCss = new StringBuffer();
String filePath = rootPath + "/" + siteIdx + "/jsp/"+pageType+"/css/"+pageName+".css";
filePath = SeedUtils.setFilePathReplaceAll(filePath);
FileInputStream fileInputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
try{
File menuFile = new File(filePath);
if(menuFile.exists()){
fileInputStream = new FileInputStream(filePath);
inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
bufferedReader = new BufferedReader(inputStreamReader);
String fileBuffer = "";
while((fileBuffer = bufferedReader.readLine()) != null){
fileCss.append(fileBuffer);
fileCss.append("\n");
}
}
}catch(FileNotFoundException e){
log.error("CHECK ERROR:",e);
}catch(IOException e){
log.error("CHECK ERROR:",e);
}finally{
if(bufferedReader!=null){try{bufferedReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(inputStreamReader!=null){try{inputStreamReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(fileInputStream!=null){try{fileInputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
}
return fileCss.toString();
}
//ManagerSiteSkinController
public boolean setSiteSkinHtmlModProc(String siteIdx, String pageType, String pageName, String siteSkinHtml, String rootPath){
boolean success = false;
String filePath = "";
filePath = rootPath + "/" + siteIdx + "/jsp/"+pageType;
FileOutputStream htmlFileOutputStream = null;
OutputStreamWriter htmlOutputStreamWriter = null;
BufferedWriter htmlWriter = null;
FileOutputStream jspFileOutputStream = null;
OutputStreamWriter jspOutputStreamWriter = null;
BufferedWriter jspWriter = null;
try{
SeedFtpType seedFtpType = new SeedFtpType();
htmlFileOutputStream = new FileOutputStream(filePath + "/"+pageName+".html");
htmlOutputStreamWriter = new OutputStreamWriter(htmlFileOutputStream, "UTF-8");
htmlWriter = new BufferedWriter(htmlOutputStreamWriter);
htmlWriter.write(siteSkinHtml);
htmlWriter.flush();
//WEB 서버의 경로
seedFtpType.setDestFilePath(siteIdx + "/jsp/"+pageType);
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath+"/"+siteIdx + "/jsp/"+pageType);
//WAS 파일명
seedFtpType.setFileName(pageName+".html");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
jspFileOutputStream = new FileOutputStream(filePath + "/"+pageName+".jsp");
jspOutputStreamWriter = new OutputStreamWriter(jspFileOutputStream, "UTF-8");
jspWriter = new BufferedWriter(jspOutputStreamWriter);
jspWriter.write("<%@ page language='java' contentType='text/html; charset=UTF-8'%>");
jspWriter.write("\n");
jspWriter.write("<%@ taglib uri='http://www.springframework.org/tags' prefix='s'%>");
jspWriter.write("\n");
jspWriter.write("<%@ taglib uri='http://www.springframework.org/tags/form' prefix='form'%>");
jspWriter.write("\n");
jspWriter.write("<%@ taglib uri='http://java.sun.com/jsp/jstl/functions' prefix='fn'%>");
jspWriter.write("\n");
jspWriter.write("<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>");
jspWriter.write("\n");
jspWriter.write("\n");
jspWriter.write(siteSkinHtml);
jspWriter.flush();
//WEB 서버의 경로
seedFtpType.setDestFilePath(siteIdx + "/jsp/"+pageType);
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath+"/"+siteIdx + "/jsp/"+pageType);
//WAS 파일명
seedFtpType.setFileName(pageName+".jsp");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
success = true;
}catch(FileNotFoundException e){
success = false;
log.error("CHECK ERROR:",e);
}catch(IOException e){
success = false;
log.error("CHECK ERROR:",e);
}finally{
if(htmlWriter!=null){try{htmlWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(htmlOutputStreamWriter!=null){try{htmlOutputStreamWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(htmlFileOutputStream!=null){try{htmlFileOutputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(jspWriter!=null){try{jspWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(jspOutputStreamWriter!=null){try{jspOutputStreamWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(jspFileOutputStream!=null){try{jspFileOutputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
}
return success;
}
//ManagerSiteSkinController
public boolean setSiteSkinCssModProc(String siteIdx, String pageType, String pageName, String siteSkinCss, String rootPath){
boolean success = false;
String filePath = "";
filePath = rootPath + "/" + siteIdx + "/jsp/"+pageType+"/css/";
FileOutputStream htmlFileOutputStream = null;
OutputStreamWriter htmlOutputStreamWriter = null;
BufferedWriter htmlWriter = null;
try{
SeedFtpType seedFtpType = new SeedFtpType();
htmlFileOutputStream = new FileOutputStream(filePath + "/"+pageName+".css");
htmlOutputStreamWriter = new OutputStreamWriter(htmlFileOutputStream, "UTF-8");
htmlWriter = new BufferedWriter(htmlOutputStreamWriter);
htmlWriter.write(siteSkinCss);
htmlWriter.flush();
//WEB 서버의 경로
seedFtpType.setDestFilePath(siteIdx + "/jsp/"+pageType+"/css");
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath+"/"+siteIdx + "/jsp/"+pageType+"/css");
//WAS 파일명
seedFtpType.setFileName(pageName+".css");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
success = true;
}catch(FileNotFoundException e){
success = false;
log.error("CHECK ERROR:",e);
}catch(IOException e){
success = false;
log.error("CHECK ERROR:",e);
}finally{
if(htmlWriter!=null){try{htmlWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(htmlOutputStreamWriter!=null){try{htmlOutputStreamWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(htmlFileOutputStream!=null){try{htmlFileOutputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
}
return success;
}
}

View File

@ -0,0 +1,516 @@
package seed.manager.skin.web;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import seed.manager.member.service.ManagerMemberService;
import seed.manager.site.service.ManagerSiteManagerService;
import seed.manager.skin.service.ManagerSiteSkinService;
import seed.utils.InterceptorCheck;
import seed.utils.SeedUtils;
@Controller
public class ManagerSiteSkinController {
private Logger log = Logger.getLogger(this.getClass());
@Autowired
private ManagerSiteSkinService managerSiteSkinService;
@Autowired
private ManagerSiteManagerService managerSiteManagerService;
@Autowired
private ManagerMemberService managerMemberService;
@Value("#{config['root.path']}")
private String rootPath;
public void getSeedLicense(HttpServletResponse httpServletResponse){
if(SeedUtils.setReplaceNull(InterceptorCheck.getLicenseKey()).equals("")){
try {
httpServletResponse.sendRedirect("/common/seed.do");
} catch (IOException ex) {
log.error("CHECK ERROR:",ex);
}
}
}
public void setSessionRemove(HttpSession session){
session.removeAttribute("memberIdx");
session.removeAttribute("memberId");
session.removeAttribute("memberName");
session.removeAttribute("memberDept");
session.removeAttribute("memberPosition");
session.removeAttribute("memberTel");
session.removeAttribute("memberPhone");
session.removeAttribute("memberEmail1");
session.removeAttribute("memberEmail2");
session.removeAttribute("memberGrant");
session.removeAttribute("url");
session.removeAttribute("message");
session.removeAttribute("opener");
session.removeAttribute("append");
session.removeAttribute("self");
}
public void setSessionMessageRemove(HttpSession session){
session.removeAttribute("url");
session.removeAttribute("message");
session.removeAttribute("opener");
session.removeAttribute("append");
session.removeAttribute("self");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteAlertSkin.do")
public ModelAndView getSiteAlertSkin(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="alertType", required=true) String alertType){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = "";
memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
/*
try {
memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
}catch(Exception ex) {
ex.printStackTrace();
}
*/
//메뉴로 권한 관리를 하므로 기존 권한체크는 주석처리
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
System.out.println("in=");
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("url", "/uat/uia/EgovLoginUsr.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("alertType", alertType);
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteAlertSkin");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteSmartMenuSkin.do")
public ModelAndView getSmartMenuSkin(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteSmartMenuSkin");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteLoginSkin.do")
public ModelAndView getSiteLoginSkin(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="loginType", required=true) String loginType){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("loginType", loginType);
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteLoginSkin");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteMemberSkin.do")
public ModelAndView getSiteMemberSkin(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="memberType", required=true) String memberType){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("memberType", memberType);
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteMemberSkin");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteNavigationSkin.do")
public ModelAndView getSiteNavigationSkin(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteNavigationSkin");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteSatisfactionSkin.do")
public ModelAndView getSiteSatisfactionSkin(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteSatisfactionSkin");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteChargeSkin.do")
public ModelAndView getSiteChargeSkin(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteChargeSkin");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteFileuploadSkin.do")
public ModelAndView getSiteFileuploadSkin(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteFileuploadSkin");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteSkinHtml.do")
public ModelAndView getSiteSkinHtml(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="pageType", required=true) String pageType,
@RequestParam(value="pageName", required=true) String pageName){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
//권한은 별도 체크하므로 기존 권한은 주석 처리함
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("siteSkinHtml", managerSiteSkinService.getSiteSkinHtml(siteIdx, pageType, pageName, rootPath));
map.put("pageType", pageType);
map.put("pageName", pageName);
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteSkinHtml");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteSkinCss.do")
public ModelAndView getSiteSkinCss(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="pageType", required=true) String pageType,
@RequestParam(value="pageName", required=true) String pageName){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
//권한은 별도 체크하므로 기존 권한은 주석 처리함
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
map.put("siteSkinCss", managerSiteSkinService.getSiteSkinCss(siteIdx, pageType, pageName, rootPath));
map.put("pageType", pageType);
map.put("pageName", pageName);
map.put("memberAuth", memberAuth);
return new ModelAndView("/manager/skin/siteSkinCss");
}
@RequestMapping(value = "/gtm/proc/{siteIdx}/siteSkinHtmlModProc.do", method=RequestMethod.POST)
public ModelAndView setSiteSkinHtmlModProc(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="siteSkinHtml", required=true) String siteSkinHtml,
@RequestParam(value="pageType", required=true) String pageType,
@RequestParam(value="pageName", required=true) String pageName){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
if(managerSiteSkinService.setSiteSkinHtmlModProc(siteIdx, pageType, pageName, siteSkinHtml, rootPath)){
map.put("message", "common.message.mod");
}else{
map.put("message", "common.message.error.mod");
}
map.put("url", "/gtm/"+siteIdx+"/siteSkinHtml.do?pageType="+pageType+"&pageName="+pageName);
return new ModelAndView("/_common/jsp/message");
}
@RequestMapping(value = "/gtm/proc/{siteIdx}/siteSkinCssModProc.do", method=RequestMethod.POST)
public ModelAndView setSiteSkinCssModProc(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="siteSkinCss", required=true) String siteSkinCss,
@RequestParam(value="pageType", required=true) String pageType,
@RequestParam(value="pageName", required=true) String pageName){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if (!this._hasAuth(memberIdx, memberGrant, memberAuth, session, map)) {
return new ModelAndView("/_common/jsp/message");
}
/*
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
*/
if(managerSiteSkinService.setSiteSkinCssModProc(siteIdx, pageType, pageName, siteSkinCss, rootPath)){
map.put("message", "common.message.mod");
}else{
map.put("message", "common.message.error.mod");
}
map.put("url", "/gtm/"+siteIdx+"/siteSkinCss.do?pageType="+pageType+"&pageName="+pageName);
return new ModelAndView("/_common/jsp/message");
}
////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
////////////////////////////////////////////////////////////////////
private boolean _hasAuth(
int p_memberIdx
, String p_memberGrant
, boolean p_memberAuth
, HttpSession p_session
, Map<String, Object> p_map
) {
boolean b_ret = true;
//기존 권한 관리 부분을 주석 처리함 - 필요시 사용할것
/*
try {
if(p_memberIdx == 0 || (!p_memberGrant.equals("S") && !p_memberAuth)){
setSessionRemove(p_session);
p_map.put("url", "/gtm/login.do");
p_map.put("url", "/uat/uia/EgovLoginUsr.do");
p_map.put("message", "common.message.no.grant");
//return new ModelAndView("/_common/jsp/message");
b_ret = false;
}
}catch(Exception ex) {
ex.printStackTrace();
}
*/
return b_ret;
}
}

View File

@ -0,0 +1,279 @@
package seed.manager.statistics.web;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.ibm.icu.text.SimpleDateFormat;
import seed.manager.member.service.ManagerMemberService;
import seed.manager.site.service.ManagerSiteManagerService;
import seed.manager.site.service.ManagerSiteService;
import seed.manager.statistics.service.ManagerStatisticsService;
import seed.utils.InterceptorCheck;
import seed.utils.SeedUtils;
@Controller
public class ManagerStatisticsController {
private Logger log = Logger.getLogger(this.getClass());
@Autowired
private ManagerSiteService managerSiteService;
@Autowired
private ManagerStatisticsService managerStatisticsService;
@Autowired
private ManagerMemberService managerMemberService;
@Autowired
private ManagerSiteManagerService managerSiteManagerService;
public void getSeedLicense(HttpServletResponse httpServletResponse){
if(SeedUtils.setReplaceNull(InterceptorCheck.getLicenseKey()).equals("")){
try {
httpServletResponse.sendRedirect("/common/seed.do");
} catch (IOException ex) {
log.error("CHECK ERROR:",ex);
}
}
}
public void setSessionRemove(HttpSession session){
session.removeAttribute("memberIdx");
session.removeAttribute("memberId");
session.removeAttribute("memberName");
session.removeAttribute("memberDept");
session.removeAttribute("memberPosition");
session.removeAttribute("memberTel");
session.removeAttribute("memberPhone");
session.removeAttribute("memberEmail1");
session.removeAttribute("memberEmail2");
session.removeAttribute("memberGrant");
session.removeAttribute("url");
session.removeAttribute("message");
session.removeAttribute("opener");
session.removeAttribute("append");
session.removeAttribute("self");
}
public void setSessionMessageRemove(HttpSession session){
session.removeAttribute("url");
session.removeAttribute("message");
session.removeAttribute("opener");
session.removeAttribute("append");
session.removeAttribute("self");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteStatisticsList.do")
public ModelAndView getSiteStatisticsList(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="year", defaultValue="", required=false) Integer year,
@RequestParam(value="month", defaultValue="", required=false) Integer month){
System.out.println("siteidx="+siteIdx);
System.out.println("siteidx="+year);
System.out.println("siteidx="+month);
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
System.out.println("siteidx="+memberIdx);
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
Date getDate = new Date();
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMdd");
if(year == null || year.equals("")){
year = Integer.parseInt(sdfFormat.format(getDate).substring(0, 4));
}
if(month == null || month.equals("")){
month = Integer.parseInt(sdfFormat.format(getDate).substring(4, 6));
}
System.out.println("siteidx=1="+siteIdx);
try {
map.put("siteName", managerSiteService.getSiteForm(siteIdx).getSiteName());
}catch(Exception ex) {
ex.printStackTrace();
}
System.out.println("siteidx=123="+memberIdx);
map.put("siteStatisticsList", managerStatisticsService.getManagerStatisticsSiteList(siteIdx, year, month));
System.out.println("siteidx=12="+memberIdx);
map.put("yearStr", year);
map.put("monthStr", month);
return new ModelAndView("/manager/statistics/siteStatisticsList");
}
@RequestMapping(value = "/gtm/proc/{siteIdx}/siteStatisticsExcelList.do")
public ModelAndView getSiteStatisticsExcelList(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx,
@RequestParam(value="year", defaultValue="", required=false) Integer year,
@RequestParam(value="month", defaultValue="", required=false) Integer month){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
Date getDate = new Date();
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMdd");
if(year == null || year.equals("")){
year = Integer.parseInt(sdfFormat.format(getDate).substring(0, 4));
}
if(month == null || month.equals("")){
month = Integer.parseInt(sdfFormat.format(getDate).substring(4, 6));
}
ArrayList<HashMap<Object, Object>> siteStatisticsExcelArrayList = new ArrayList<HashMap<Object,Object>>();
List<HashMap<Object, Object>> siteStatisticsExcelList = managerStatisticsService.getManagerStatisticsSiteList(siteIdx, year, month);
Integer[] days = new Integer[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
days[1] = 29; //윤년 체크
}
for(int d=1; d<=days[month-1]; d++){
int cnt = 0;
HashMap<Object, Object> statisticsAllMap = new HashMap<Object, Object>();
for(int i=0; i<siteStatisticsExcelList.size(); i++){
HashMap<Object, Object> statisticsMap = siteStatisticsExcelList.get(i);
if(year == Integer.parseInt(statisticsMap.get("_accessYear").toString()) &&
month == Integer.parseInt(statisticsMap.get("_accessMonth").toString()) &&
d == Integer.parseInt(statisticsMap.get("_accessDay").toString())){
cnt += Integer.parseInt(siteStatisticsExcelList.get(i).get("_accessCount").toString());
}
}
if(month < 10){
if(d < 10){
statisticsAllMap.put("_date", year+"년 0"+month+"월 0"+d+"");
}else{
statisticsAllMap.put("_date", year+"년 0"+month+""+d+"");
}
}else{
if(d < 10){
statisticsAllMap.put("_date", year+""+month+"월 0"+d+"");
}else{
statisticsAllMap.put("_date", year+""+month+""+d+"");
}
}
statisticsAllMap.put("_cnt", cnt);
siteStatisticsExcelArrayList.add(statisticsAllMap);
}
map.put("siteName", managerSiteService.getSiteForm(siteIdx).getSiteName());
map.put("siteStatisticsExcelArrayList", siteStatisticsExcelArrayList);
return new ModelAndView("/manager/statistics/siteStatisticsExcelList");
}
@RequestMapping(value = "/gtm/{siteIdx}/siteMenuStatisticsList.do")
public ModelAndView getSiteMenuStatisticsList(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
try {
map.put("siteName", managerSiteService.getSiteForm(siteIdx).getSiteName());
}catch(Exception ex) {
ex.printStackTrace();
}
map.put("siteMenuStatisticsList", managerStatisticsService.getManagerStatisticsMenuList(siteIdx));
return new ModelAndView("/manager/statistics/siteMenuStatisticsList");
}
@RequestMapping(value = "/gtm/proc/{siteIdx}/siteMenuStatisticsExcelList.do")
public ModelAndView getSiteMenuStatisticsExcelList(HttpServletResponse httpServletResponse, HttpSession session, Map<String, Object> map,
@PathVariable(value="siteIdx") String siteIdx){
getSeedLicense(httpServletResponse);
setSessionMessageRemove(session);
Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0"));
String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N");
boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx);
if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){
setSessionRemove(session);
map.put("url", "/gtm/login.do");
map.put("message", "common.message.no.grant");
return new ModelAndView("/_common/jsp/message");
}
map.put("siteName", managerSiteService.getSiteForm(siteIdx).getSiteName());
map.put("siteMenuStatisticsExcelList", managerStatisticsService.getManagerStatisticsMenuList(siteIdx));
return new ModelAndView("/manager/statistics/siteMenuStatisticsExcelList");
}
}

View File

@ -9,9 +9,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.MemberDAO;
import seed.dao.SiteManagerDAO;
import seed.dao.SiteManager2DAO;
import seed.dao.SurveyManagerDAO;
import seed.map.T_MEMBER;
import seed.map.T_SURVEY_MANAGER;
@ -23,8 +22,8 @@ public class ManagerSurveyManagerServiceImpl extends AbstractServiceImpl impleme
@Autowired
private SurveyManagerDAO surveyManagerDAO;
@Autowired
private SiteManagerDAO siteManagerDAO;
//@Autowired
private SiteManager2DAO siteManagerDAO;
@Autowired
private MemberDAO memberDAO;

View File

@ -0,0 +1,37 @@
package seed.manager.visual.service;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;
import seed.map.T_VISUAL_DATA;
public interface ManagerVisualDataService {
//ManagerVisualController
public T_VISUAL_DATA getVisualDataForm(Integer visualDataIdx);
//ManagerVisualController
public Long getVisualDataListCnt(Integer visualSetIdx, String column, String search);
//ManagerVisualController
public List<T_VISUAL_DATA> getVisualDataList(Integer visualSetIdx);
//ManagerVisualController
public List<T_VISUAL_DATA> getVisualDataList(Integer visualSetIdx, int page, int row, String column, String search, String[] qryColumns);
//ManagerVisualController
public Integer setVisualDataRegProc(T_VISUAL_DATA tVisualData, String siteMenuIdxs, MultipartFile upFile, Integer memberIdx, String rootPath);
//ManagerVisualController
public boolean setVisualDataModProc(T_VISUAL_DATA tVisualData, String siteMenuIdxs, Integer memberIdx, MultipartFile upFile, String rootPath);
//ManagerVisualController
public boolean setVisualDataDelProc(Integer visualDataIdx, String rootPath);
//ManagerVisualController
public boolean setVisualDataStatusProc(Integer visualDataIdx, String status, Integer memberIdx);
//ManagerVisualController
public boolean setVisualDataOrderProc(Integer visualSetIdx , Integer visualDataOrder, String orderType, Integer memberIdx);
}

View File

@ -0,0 +1,259 @@
package seed.manager.visual.service;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.VisualDataDAO;
import seed.map.T_MEMBER;
import seed.map.T_VISUAL_DATA;
import seed.utils.SeedFtpType;
import seed.utils.SeedUtils;
@Service
public class ManagerVisualDataServiceImpl extends AbstractServiceImpl implements ManagerVisualDataService{
private Logger log = Logger.getLogger(this.getClass());
@Autowired
private VisualDataDAO visualDataDAO;
//ManagerVisualController
public T_VISUAL_DATA getVisualDataForm(Integer visualDataIdx){
return visualDataDAO.getVisualDataForm(visualDataIdx);
}
//ManagerVisualController
public Long getVisualDataListCnt(Integer visualSetIdx, String column, String search){
return visualDataDAO.getVisualDataListCnt(visualSetIdx, column, search);
}
//ManagerVisualController
public List<T_VISUAL_DATA> getVisualDataList(Integer visualSetIdx){
return visualDataDAO.getVisualDataList(visualSetIdx);
}
//ManagerVisualController
public List<T_VISUAL_DATA> getVisualDataList(Integer visualSetIdx, int page, int row, String column, String search, String[] qryColumns){
return visualDataDAO.getVisualDataList(visualSetIdx, ((page-1) * row), row, column, search, qryColumns);
}
//ManagerVisualController
@Transactional
public Integer setVisualDataRegProc(T_VISUAL_DATA tVisualData, String siteMenuIdxs, MultipartFile upFile, Integer memberIdx, String rootPath){
Integer visualDataIdx = 0;
try{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualData.settMember(tMember);
tVisualData.setVisualDataOrder(visualDataDAO.getVisualDataOrderFormCnt(tVisualData.gettVisualSet().getVisualSetIdx())+1);
tVisualData.setVisualDataStatus("U");
tVisualData.setVisualDataRegDate(new Date());
tVisualData.setVisualDataModDate(new Date());
SeedUtils.setSeedMkDirs(rootPath + "/" + tVisualData.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String reFileName = tVisualData.gettVisualSet().getVisualSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tVisualData.gettVisualSet().gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx() + "/" + reFileName +
upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
upFile.transferTo(makeFile);
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualData.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tVisualData.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualData.setVisualDataFile(upFile.getOriginalFilename());
tVisualData.setVisualDataReFile(reFileName+upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
T_VISUAL_DATA tVisualDataDB = visualDataDAO.setVisualDataRegProc(tVisualData);
if(tVisualDataDB.getVisualDataIdx() > 0){
visualDataIdx = tVisualDataDB.getVisualDataIdx();
}
}catch(IOException e){
log.error("CHECK ERROR:",e);
}
return visualDataIdx;
}
//ManagerVisualController
@Transactional
public boolean setVisualDataModProc(T_VISUAL_DATA tVisualData, String siteMenuIdxs, Integer memberIdx, MultipartFile upFile, String rootPath){
T_VISUAL_DATA tVisualDataDB = visualDataDAO.getVisualDataForm(tVisualData.getVisualDataIdx());
try{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualDataDB.settMember(tMember);
tVisualDataDB.setVisualDataTitle(tVisualData.getVisualDataTitle());
tVisualDataDB.setVisualDataContent(tVisualData.getVisualDataContent());
tVisualDataDB.setVisualDataType(tVisualData.getVisualDataType());
tVisualDataDB.setVisualDataSdate(tVisualData.getVisualDataSdate());
tVisualDataDB.setVisualDataEdate(tVisualData.getVisualDataEdate());
tVisualDataDB.setVisualDataLink(tVisualData.getVisualDataLink());
tVisualDataDB.setVisualDataLinkType(tVisualData.getVisualDataLinkType());
tVisualDataDB.setVisualRelationSetIdx(tVisualData.getVisualRelationSetIdx());
tVisualDataDB.setVisualDataModDate(new Date());
if(upFile != null && upFile.getBytes().length > 0){
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualData.gettVisualSet().gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx() + "/" + tVisualDataDB.getVisualDataReFile());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualData.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualDataDB.getVisualDataReFile());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
SeedUtils.setSeedMkDirs(rootPath + "/" + tVisualData.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String reFileName = tVisualData.gettVisualSet().getVisualSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tVisualData.gettVisualSet().gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx() + "/" + reFileName +
upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
upFile.transferTo(makeFile);
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualData.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tVisualData.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualData.gettVisualSet().getVisualSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualDataDB.setVisualDataFile(upFile.getOriginalFilename());
tVisualDataDB.setVisualDataReFile(reFileName+upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
}
}catch(IOException e){
log.error("CHECK ERROR:",e);
}
return visualDataDAO.setVisualDataModProc(tVisualDataDB);
}
//ManagerVisualController
@Transactional
public boolean setVisualDataDelProc(Integer visualDataIdx, String rootPath){
T_VISUAL_DATA tVisualDataDB = visualDataDAO.getVisualDataForm(visualDataIdx);
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualDataDB.gettVisualSet().gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualDataDB.gettVisualSet().getVisualSetIdx() + "/" + tVisualDataDB.getVisualDataReFile());
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualDataDB.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualDataDB.gettVisualSet().getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualDataDB.getVisualDataReFile());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
if(visualDataDAO.getVisualDataListCnt(tVisualDataDB.gettVisualSet().getVisualSetIdx()) > 1){
visualDataDAO.setVisualDataOrderProc(tVisualDataDB.gettVisualSet().getVisualSetIdx(), tVisualDataDB.getVisualDataOrder());
}
return visualDataDAO.setVisualDataDelProc(tVisualDataDB);
}
//ManagerVisualController
@Transactional
public boolean setVisualDataStatusProc(Integer visualDataIdx, String status, Integer memberIdx){
T_VISUAL_DATA tVisualDataDB = visualDataDAO.getVisualDataForm(visualDataIdx);
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualDataDB.settMember(tMember);
tVisualDataDB.setVisualDataModDate(new Date());
tVisualDataDB.setVisualDataStatus(status);
return visualDataDAO.setVisualDataModProc(tVisualDataDB);
}
//ManagerVisualController
@Transactional
public boolean setVisualDataOrderProc(Integer visualSetIdx, Integer visualDataOrder, String orderType, Integer memberIdx){
boolean success = false;
Integer visualDataOrderTmp = visualDataOrder;
if(orderType.equals("up")){
visualDataOrder = visualDataOrder - 1;
}else{
visualDataOrder = visualDataOrder + 1;
}
T_VISUAL_DATA tVisualDataOrderDB = visualDataDAO.getVisualDataOrderForm(visualSetIdx, visualDataOrder);
T_VISUAL_DATA tVisualDataDB = visualDataDAO.getVisualDataOrderForm(visualSetIdx, visualDataOrderTmp);
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualDataOrderDB.settMember(tMember);
tVisualDataDB.settMember(tMember);
tVisualDataOrderDB.setVisualDataOrder(visualDataOrderTmp);
tVisualDataDB.setVisualDataOrder(visualDataOrder);
if(visualDataDAO.setVisualDataModProc(tVisualDataDB)
&& visualDataDAO.setVisualDataModProc(tVisualDataOrderDB)){
success = true;
}
return success;
}
}

View File

@ -0,0 +1,38 @@
package seed.manager.visual.service;
import java.util.List;
import seed.map.T_VISUAL_MANAGER;
public interface ManagerVisualManagerService {
//ManagerVisualController
public boolean getVisualManagerListGrantCnt(Integer visualSetIdx, Integer memberIdx);
//ManagerVisualController
public boolean getVisualManagerListCnt(Integer visualSetIdx, Integer memberIdx);
//CommonController
public Long getVisualManagerListCnt(Integer visualSetIdx, Integer selGroup, String column, String search);
//CommonController
public Long getVisualManagerListCnt(String siteIdx, Integer memberIdx, String column, String search);
//CommonController
public List<T_VISUAL_MANAGER> getVisualManagerList(Integer visualSetIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns);
//CommonController
public List<T_VISUAL_MANAGER> getVisualManagerList(String siteIdx, Integer memberIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns);
//CommonController
public boolean setVisualManagerRegProc(Integer visualSetIdx, Integer[] idxsc);
//CommonController
public boolean setVisualManagerDelProc(Integer visualManagerIdx);
//CommonController
public boolean setVisualManagerStatusProc(Integer visualManagerIdx, String status);
//CommonController
public boolean setVisualManagerGrantProc(Integer visualManagerIdx, String grant);
}

View File

@ -0,0 +1,188 @@
package seed.manager.visual.service;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.MemberDAO;
import seed.dao.SiteManager2DAO;
import seed.dao.VisualManagerDAO;
import seed.map.T_MEMBER;
import seed.map.T_VISUAL_MANAGER;
import seed.map.T_VISUAL_SET;
@Service
public class ManagerVisualManagerServiceImpl extends AbstractServiceImpl implements ManagerVisualManagerService{
@Autowired
private VisualManagerDAO visualManagerDAO;
//@Autowired
private SiteManager2DAO siteManagerDAO;
@Autowired
private MemberDAO memberDAO;
//ManagerVisualController
public boolean getVisualManagerListGrantCnt(Integer visualSetIdx, Integer memberIdx){
boolean success = false;
if(visualManagerDAO.getVisualManagerListGrantCnt(visualSetIdx, memberIdx) > 0){
success = true;
}
return success;
}
//ManagerVisualController
public boolean getVisualManagerListCnt(Integer visualSetIdx, Integer memberIdx){
boolean success = false;
if(visualManagerDAO.getVisualManagerListCnt(visualSetIdx, memberIdx) > 0){
success = true;
}
return success;
}
//CommonController
public Long getVisualManagerListCnt(Integer visualSetIdx, Integer selGroup, String column, String search){
return visualManagerDAO.getVisualManagerListCnt(visualSetIdx, selGroup, column, search);
}
//CommonController
public Long getVisualManagerListCnt(String siteIdx, Integer memberIdx, String column, String search){
return visualManagerDAO.getVisualManagerListCnt(siteIdx, memberIdx, column, search);
}
//CommonController
public List<T_VISUAL_MANAGER> getVisualManagerList(Integer visualSetIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns){
return visualManagerDAO.getVisualManagerList(visualSetIdx, ((page-1) * row), row, orderColumn, order, selGroup, column, search, qryColumns);
}
//CommonController
public List<T_VISUAL_MANAGER> getVisualManagerList(String siteIdx, Integer memberIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns){
return visualManagerDAO.getVisualManagerList(siteIdx, memberIdx, ((page-1) * row), row, orderColumn, order, column, search, qryColumns);
}
//CommonController
@Transactional
public boolean setVisualManagerRegProc(Integer visualSetIdx, Integer[] idxsc){
boolean success = false;
if(idxsc.length > 0){
for(int i=0; i<idxsc.length; i++){
if(visualManagerDAO.getVisualManagerListCnt(visualSetIdx, idxsc[i]) > 0){
success = true;
}else{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(idxsc[i]);
T_VISUAL_SET tVisualSet = new T_VISUAL_SET();
tVisualSet.setVisualSetIdx(visualSetIdx);
T_VISUAL_MANAGER tVisualManager = new T_VISUAL_MANAGER();
tVisualManager.settMember(tMember);
tVisualManager.settVisualSet(tVisualSet);
tVisualManager.setVisualManagerStatus("U");
tVisualManager.setVisualManagerGrant("S");
tVisualManager.setVisualManagerRegDate(new Date());
if(visualManagerDAO.setVisualManagerRegProc(tVisualManager)){
success = true;
T_MEMBER tMemberDB = memberDAO.getMemberForm(idxsc[i]);
if(!tMemberDB.getMemberGrant().equals("S")){
if(tMemberDB.getMemberGrant().equals("SM")){
tMemberDB.setMemberGrant("SM");
}else{
tMemberDB.setMemberGrant("M");
}
if(!memberDAO.setMemberModProc(tMemberDB)){
success = false;
break;
}
}
}else{
success = false;
}
}
}
}
return success;
}
//CommonController
@Transactional
public boolean setVisualManagerDelProc(Integer visualManagerIdx){
boolean success = false;
T_VISUAL_MANAGER tVisualManagerDB = visualManagerDAO.getVisualManagerForm(visualManagerIdx);
if(visualManagerDAO.setVisualManagerDelProc(tVisualManagerDB)){
success = true;
T_MEMBER tMemberDB = memberDAO.getMemberForm(tVisualManagerDB.gettMember().getMemberIdx());
if(!tMemberDB.getMemberGrant().equals("S")){
if(siteManagerDAO.getSiteManagerListCnt(tMemberDB.getMemberIdx()) > 0){
tMemberDB.setMemberGrant("SM");
}else if((tMemberDB.getMemberGrant().equals("SM") || tMemberDB.getMemberGrant().equals("M"))){
tMemberDB.setMemberGrant("M");
}else{
tMemberDB.setMemberGrant("N");
}
if(!memberDAO.setMemberModProc(tMemberDB)){
success = false;
}
}
}
return success;
}
//CommonController
@Transactional
public boolean setVisualManagerStatusProc(Integer visualManagerIdx, String status){
T_VISUAL_MANAGER tVisualManagerDB = visualManagerDAO.getVisualManagerForm(visualManagerIdx);
tVisualManagerDB.setVisualManagerStatus(status);
return visualManagerDAO.setVisualManagerModProc(tVisualManagerDB);
}
//CommonController
@Transactional
public boolean setVisualManagerGrantProc(Integer visualManagerIdx, String grant){
T_VISUAL_MANAGER tVisualManagerDB = visualManagerDAO.getVisualManagerForm(visualManagerIdx);
tVisualManagerDB.setVisualManagerGrant(grant);
return visualManagerDAO.setVisualManagerModProc(tVisualManagerDB);
}
}

View File

@ -0,0 +1,36 @@
package seed.manager.visual.service;
import java.util.List;
import java.util.Map;
import seed.map.T_VISUAL_RELATION_DATA;
public interface ManagerVisualRelationDataService {
//CommonController
public List<Map<Object, Object>> getVisualRelationDataMapList(Integer visualRelationSetIdx, Integer row, String[] qryColumns);
//ManagerVisualController
public T_VISUAL_RELATION_DATA getVisualRelationDataForm(Integer visualRelationDataIdx);
//ManagerVisualController
public Long getVisualRelationDataListCnt(Integer visualRelationDataIdx, String column, String search);
//ManagerVisualController
public List<T_VISUAL_RELATION_DATA> getVisualRelationDataList(Integer visualRelationDataIdx, int page, int row, String column, String search, String[] qryColumns);
//ManagerVisualController
public Integer setVisualRelationDataRegProc(T_VISUAL_RELATION_DATA tVisualRelationData, Integer memberIdx);
//ManagerVisualController
public boolean setVisualRelationDataModProc(T_VISUAL_RELATION_DATA tVisualRelationData, Integer memberIdx);
//ManagerVisualController
public boolean setVisualRelationDataDelProc(Integer visualRelationDataIdx);
//ManagerVisualController
public boolean setVisualRelationDataStatusProc(Integer visualRelationDataIdx, String status, Integer memberIdx);
//ManagerVisualController
public boolean setVisualRelationDataOrderProc(Integer visualRelationSetIdx , Integer visualRelationDataOrder, String orderType, Integer memberIdx);
}

View File

@ -0,0 +1,146 @@
package seed.manager.visual.service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.VisualRelationDataDAO;
import seed.map.T_MEMBER;
import seed.map.T_VISUAL_RELATION_DATA;
@Service
public class ManagerVisualRelationDataServiceImpl extends AbstractServiceImpl implements ManagerVisualRelationDataService{
@Autowired
private VisualRelationDataDAO visualRelationDataDAO;
//CommonController
public List<Map<Object, Object>> getVisualRelationDataMapList(Integer visualRelationSetIdx, Integer row, String[] qryColumns){
return visualRelationDataDAO.getVisualRelationDataMapList(visualRelationSetIdx, row, qryColumns);
}
//ManagerVisualController
public T_VISUAL_RELATION_DATA getVisualRelationDataForm(Integer visualRelationDataIdx){
return visualRelationDataDAO.getVisualRelationDataForm(visualRelationDataIdx);
}
//ManagerVisualController
public Long getVisualRelationDataListCnt(Integer visualRelationDataIdx, String column, String search){
return visualRelationDataDAO.getVisualRelationDataListCnt(visualRelationDataIdx, column, search);
}
//ManagerVisualController
public List<T_VISUAL_RELATION_DATA> getVisualRelationDataList(Integer visualRelationDataIdx, int page, int row, String column, String search, String[] qryColumns){
return visualRelationDataDAO.getVisualRelationDataList(visualRelationDataIdx, ((page-1) * row), row, column, search, qryColumns);
}
//ManagerVisualController
public Integer setVisualRelationDataRegProc(T_VISUAL_RELATION_DATA tVisualRelationData, Integer memberIdx){
Integer visualRelationDataIdx = 0;
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationData.settMember(tMember);
tVisualRelationData.setVisualRelationDataOrder(visualRelationDataDAO.getVisualRelationDataOrderFormCnt(tVisualRelationData.gettVisualRelationSet().getVisualRelationSetIdx())+1);
tVisualRelationData.setVisualRelationDataStatus("U");
tVisualRelationData.setVisualRelationDataRegDate(new Date());
tVisualRelationData.setVisualRelationDataModDate(new Date());
T_VISUAL_RELATION_DATA tVisualRelationDataDB = visualRelationDataDAO.setVisualRelationDataRegProc(tVisualRelationData);
if(tVisualRelationDataDB.getVisualRelationDataIdx() > 0){
visualRelationDataIdx = tVisualRelationDataDB.getVisualRelationDataIdx();
}
return visualRelationDataIdx;
}
//ManagerVisualController
public boolean setVisualRelationDataModProc(T_VISUAL_RELATION_DATA tVisualRelationData, Integer memberIdx){
T_VISUAL_RELATION_DATA tVisualRelationDataDB = visualRelationDataDAO.getVisualRelationDataForm(tVisualRelationData.getVisualRelationDataIdx());
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationDataDB.settMember(tMember);
tVisualRelationDataDB.setVisualRelationDataName(tVisualRelationData.getVisualRelationDataName());
tVisualRelationDataDB.setVisualRelationDataLink(tVisualRelationData.getVisualRelationDataLink());
tVisualRelationDataDB.setVisualRelationDataLinkType(tVisualRelationData.getVisualRelationDataLinkType());
tVisualRelationDataDB.setVisualRelationIconIdx(tVisualRelationData.getVisualRelationIconIdx());
tVisualRelationDataDB.setVisualRelationDataModDate(new Date());
return visualRelationDataDAO.setVisualRelationDataModProc(tVisualRelationDataDB);
}
//ManagerVisualController
public boolean setVisualRelationDataDelProc(Integer visualRelationDataIdx){
T_VISUAL_RELATION_DATA tVisualRelationDataDB = visualRelationDataDAO.getVisualRelationDataForm(visualRelationDataIdx);
return visualRelationDataDAO.setVisualRelationDataDelProc(tVisualRelationDataDB);
}
//ManagerVisualController
@Transactional
public boolean setVisualRelationDataStatusProc(Integer visualRelationDataIdx, String status, Integer memberIdx){
T_VISUAL_RELATION_DATA tVisualRelationDataDB = visualRelationDataDAO.getVisualRelationDataForm(visualRelationDataIdx);
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationDataDB.settMember(tMember);
tVisualRelationDataDB.setVisualRelationDataModDate(new Date());
tVisualRelationDataDB.setVisualRelationDataStatus(status);
return visualRelationDataDAO.setVisualRelationDataModProc(tVisualRelationDataDB);
}
//ManagerVisualController
@Transactional
public boolean setVisualRelationDataOrderProc(Integer visualRelationSetIdx, Integer visualRelationDataOrder, String orderType, Integer memberIdx){
boolean success = false;
Integer visualRelationDataOrderTmp = visualRelationDataOrder;
if(orderType.equals("up")){
visualRelationDataOrder = visualRelationDataOrder - 1;
}else{
visualRelationDataOrder = visualRelationDataOrder + 1;
}
T_VISUAL_RELATION_DATA tVisualRelationDataOrderDB = visualRelationDataDAO.getVisualRelationDataOrderForm(visualRelationSetIdx, visualRelationDataOrder);
T_VISUAL_RELATION_DATA tVisualRelationDataDB = visualRelationDataDAO.getVisualRelationDataOrderForm(visualRelationSetIdx, visualRelationDataOrderTmp);
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationDataOrderDB.settMember(tMember);
tVisualRelationDataDB.settMember(tMember);
tVisualRelationDataOrderDB.setVisualRelationDataOrder(visualRelationDataOrderTmp);
tVisualRelationDataDB.setVisualRelationDataOrder(visualRelationDataOrder);
if(visualRelationDataDAO.setVisualRelationDataModProc(tVisualRelationDataDB)
&& visualRelationDataDAO.setVisualRelationDataModProc(tVisualRelationDataOrderDB)){
success = true;
}
return success;
}
}

View File

@ -0,0 +1,31 @@
package seed.manager.visual.service;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;
import seed.map.T_VISUAL_RELATION_ICON;
public interface ManagerVisualRelationIconService {
//ManagerVisualController
public T_VISUAL_RELATION_ICON getVisualRelationIconForm(Integer visualRelationIconIdx);
//ManagerVisualController
public Long getVisualRelationIconListCnt(Integer visualSetIdx, String column, String search);
//ManagerVisualController
public List<T_VISUAL_RELATION_ICON> getVisualRelationIconList(Integer visualSetIdx, int page, int row, String column, String search, String[] qryColumns);
//ManagerVisualController
public List<T_VISUAL_RELATION_ICON> getVisualRelationIconList(Integer visualSetIdx, String[] qryColumns);
//ManagerVisualController
public Integer setVisualRelationIconRegProc(T_VISUAL_RELATION_ICON tVisualRelationIcon, MultipartFile upFile, Integer memberIdx, String rootPath);
//ManagerVisualController
public boolean setVisualRelationIconModProc(T_VISUAL_RELATION_ICON tVisualRelationIcon, MultipartFile upFile, Integer memberIdx, String rootPath);
//ManagerVisualController
public boolean setVisualRelationIconDelProc(Integer visualRelationIconIdx, String rootPath);
}

View File

@ -0,0 +1,192 @@
package seed.manager.visual.service;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.VisualRelationIconDAO;
import seed.map.T_MEMBER;
import seed.map.T_VISUAL_RELATION_ICON;
import seed.utils.SeedFtpType;
import seed.utils.SeedUtils;
@Service
public class ManagerVisualRelationIconServiceImpl extends AbstractServiceImpl implements ManagerVisualRelationIconService{
@Autowired
private VisualRelationIconDAO visualRelationIconDAO;
//ManagerVisualController
public T_VISUAL_RELATION_ICON getVisualRelationIconForm(Integer visualRelationIconIdx){
return visualRelationIconDAO.getVisualRelationIconForm(visualRelationIconIdx);
}
//ManagerVisualController
public Long getVisualRelationIconListCnt(Integer visualSetIdx, String column, String search){
return visualRelationIconDAO.getVisualRelationIconListCnt(visualSetIdx, column, search);
}
//ManagerVisualController
public List<T_VISUAL_RELATION_ICON> getVisualRelationIconList(Integer visualSetIdx, int page, int row, String column, String search, String[] qryColumns){
return visualRelationIconDAO.getVisualRelationIconList(visualSetIdx, ((page-1) * row), row, column, search, qryColumns);
}
//ManagerVisualController
public List<T_VISUAL_RELATION_ICON> getVisualRelationIconList(Integer visualSetIdx, String[] qryColumns){
return visualRelationIconDAO.getVisualRelationIconList(visualSetIdx, qryColumns);
}
//ManagerVisualController
@Transactional
public Integer setVisualRelationIconRegProc(T_VISUAL_RELATION_ICON tVisualRelationIcon, MultipartFile upFile, Integer memberIdx, String rootPath){
Integer visualRelationIconIdx = 0;
try{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationIcon.settMember(tMember);
tVisualRelationIcon.setVisualRelationIconRegDate(new Date());
tVisualRelationIcon.setVisualRelationIconModDate(new Date());
SeedUtils.setSeedMkDirs(rootPath + "/" + tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String reFileName = tVisualRelationIcon.gettVisualSet().getVisualSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx() + "/" + reFileName +
upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
upFile.transferTo(makeFile);
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualRelationIcon.setVisualRelationIconFile(upFile.getOriginalFilename());
tVisualRelationIcon.setVisualRelationIconReFile(reFileName+upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
T_VISUAL_RELATION_ICON tVisualRelationIconDB = visualRelationIconDAO.setVisualRelationIconRegProc(tVisualRelationIcon);
if(tVisualRelationIconDB.getVisualRelationIconIdx() > 0){
visualRelationIconIdx = tVisualRelationIconDB.getVisualRelationIconIdx();
}
}catch(IOException e){
//log.error("CHECK ERROR:",e);
}
return visualRelationIconIdx;
}
//ManagerVisualController
@Transactional
public boolean setVisualRelationIconModProc(T_VISUAL_RELATION_ICON tVisualRelationIcon, MultipartFile upFile, Integer memberIdx, String rootPath){
T_VISUAL_RELATION_ICON tVisualRelationIconDB = visualRelationIconDAO.getVisualRelationIconForm(tVisualRelationIcon.getVisualRelationIconIdx());
try{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationIconDB.settMember(tMember);
tVisualRelationIconDB.setVisualRelationIconName(tVisualRelationIcon.getVisualRelationIconName());
tVisualRelationIconDB.setVisualRelationIconModDate(new Date());
if(upFile != null && upFile.getBytes().length > 0){
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx() + "/" + tVisualRelationIconDB.getVisualRelationIconReFile());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualRelationIconDB.getVisualRelationIconReFile());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
SeedUtils.setSeedMkDirs(rootPath + "/" + tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String reFileName = tVisualRelationIcon.gettVisualSet().getVisualSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx() + "/" + reFileName +
upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
upFile.transferTo(makeFile);
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tVisualRelationIcon.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualRelationIcon.gettVisualSet().getVisualSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualRelationIconDB.setVisualRelationIconFile(upFile.getOriginalFilename());
tVisualRelationIconDB.setVisualRelationIconReFile(reFileName+upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf(".")));
}
}catch(IOException e){
//log.error("CHECK ERROR:",e);
}
return visualRelationIconDAO.setVisualRelationIconModProc(tVisualRelationIconDB);
}
//ManagerVisualController
@Transactional
public boolean setVisualRelationIconDelProc(Integer visualRelationIconIdx, String rootPath){
T_VISUAL_RELATION_ICON tVisualRelationIconDB = visualRelationIconDAO.getVisualRelationIconForm(visualRelationIconIdx);
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualRelationIconDB.gettVisualSet().gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualRelationIconDB.gettVisualSet().getVisualSetIdx() + "/" + tVisualRelationIconDB.getVisualRelationIconReFile());
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualRelationIconDB.gettVisualSet().gettSite().getSiteIdx() + "/upload/visual/" + tVisualRelationIconDB.gettVisualSet().getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualRelationIconDB.getVisualRelationIconReFile());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
return visualRelationIconDAO.setVisualRelationIconDelProc(tVisualRelationIconDB);
}
}

View File

@ -0,0 +1,32 @@
package seed.manager.visual.service;
import java.util.List;
import seed.map.T_VISUAL_RELATION_SET;
public interface ManagerVisualRelationSetService {
//ManagerVisualController
public T_VISUAL_RELATION_SET getVisualRelationSetForm(Integer visualRelationSetIdx);
//ManagerVisualController
public Long getVisualRelationSetListCnt(Integer visualSetIdx, String column, String search);
//ManagerVisualController
public List<T_VISUAL_RELATION_SET> getVisualRelationSetList(Integer visualSetIdx, int page, int row, String column, String search, String[] qryColumns);
//ManagerVisualController
public List<T_VISUAL_RELATION_SET> getVisualRelationSetList(Integer visualSetIdx, String[] qryColumns);
//ManagerVisualController
public Integer setVisualRelationSetRegProc(T_VISUAL_RELATION_SET tVisualRelationSet, Integer memberIdx);
//ManagerVisualController
public boolean setVisualRelationSetModProc(T_VISUAL_RELATION_SET tVisualRelationSet, Integer memberIdx);
//ManagerVisualController
public boolean setVisualRelationSetDelProc(Integer visualRelationSetIdx);
//ManagerVisualController
public boolean setVisualRelationSetStatusProc(Integer visualRelationSetIdx, String status, Integer memberIdx);
}

View File

@ -0,0 +1,107 @@
package seed.manager.visual.service;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.VisualRelationSetDAO;
import seed.map.T_MEMBER;
import seed.map.T_VISUAL_RELATION_SET;
@Service
public class ManagerVisualRelationSetServiceImpl extends AbstractServiceImpl implements ManagerVisualRelationSetService{
@Autowired
private VisualRelationSetDAO visualRelationSetDAO;
//ManagerVisualController
public T_VISUAL_RELATION_SET getVisualRelationSetForm(Integer visualRelationSetIdx){
return visualRelationSetDAO.getVisualRelationSetForm(visualRelationSetIdx);
}
//ManagerVisualController
public Long getVisualRelationSetListCnt(Integer visualSetIdx, String column, String search){
return visualRelationSetDAO.getVisualRelationSetListCnt(visualSetIdx, column, search);
}
//ManagerVisualController
public List<T_VISUAL_RELATION_SET> getVisualRelationSetList(Integer visualSetIdx, int page, int row, String column, String search, String[] qryColumns){
return visualRelationSetDAO.getVisualRelationSetList(visualSetIdx, ((page-1) * row), row, column, search, qryColumns);
}
//ManagerVisualController
public List<T_VISUAL_RELATION_SET> getVisualRelationSetList(Integer visualSetIdx, String[] qryColumns){
return visualRelationSetDAO.getVisualRelationSetList(visualSetIdx, qryColumns);
}
//ManagerVisualController
public Integer setVisualRelationSetRegProc(T_VISUAL_RELATION_SET tVisualRelationSet, Integer memberIdx){
Integer visualRelationSetIdx = 0;
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationSet.settMember(tMember);
tVisualRelationSet.setVisualRelationSetStatus("U");
tVisualRelationSet.setVisualRelationSetRegDate(new Date());
tVisualRelationSet.setVisualRelationSetModDate(new Date());
T_VISUAL_RELATION_SET tVisualRelationSetDB = visualRelationSetDAO.setVisualRelationSetRegProc(tVisualRelationSet);
if(tVisualRelationSetDB.getVisualRelationSetIdx() > 0){
visualRelationSetIdx = tVisualRelationSetDB.getVisualRelationSetIdx();
}
return visualRelationSetIdx;
}
//ManagerVisualController
public boolean setVisualRelationSetModProc(T_VISUAL_RELATION_SET tVisualRelationSet, Integer memberIdx){
T_VISUAL_RELATION_SET tVisualRelationSetDB = visualRelationSetDAO.getVisualRelationSetForm(tVisualRelationSet.getVisualRelationSetIdx());
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationSetDB.settMember(tMember);
tVisualRelationSetDB.setVisualRelationSetName(tVisualRelationSet.getVisualRelationSetName());
tVisualRelationSetDB.setVisualRelationSetCount(tVisualRelationSet.getVisualRelationSetCount());
tVisualRelationSetDB.setVisualRelationSetModDate(new Date());
return visualRelationSetDAO.setVisualRelationSetModProc(tVisualRelationSetDB);
}
//ManagerVisualController
public boolean setVisualRelationSetDelProc(Integer visualRelationSetIdx){
T_VISUAL_RELATION_SET tVisualRelationSetDB = visualRelationSetDAO.getVisualRelationSetForm(visualRelationSetIdx);
return visualRelationSetDAO.setVisualRelationSetDelProc(tVisualRelationSetDB);
}
//ManagerVisualController
@Transactional
public boolean setVisualRelationSetStatusProc(Integer visualRelationSetIdx, String status, Integer memberIdx){
T_VISUAL_RELATION_SET tVisualRelationSetDB = visualRelationSetDAO.getVisualRelationSetForm(visualRelationSetIdx);
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualRelationSetDB.settMember(tMember);
tVisualRelationSetDB.setVisualRelationSetModDate(new Date());
tVisualRelationSetDB.setVisualRelationSetStatus(status);
return visualRelationSetDAO.setVisualRelationSetModProc(tVisualRelationSetDB);
}
}

View File

@ -0,0 +1,33 @@
package seed.manager.visual.service;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import seed.map.T_VISUAL_SET;
public interface ManagerVisualSetService {
//ManagerVisualController
public T_VISUAL_SET getVisualSetForm(Integer visualSetIdx);
//ManagerVisualController
public Long getVisualSetListCnt(String siteIdx, String column, String search);
//ManagerVisualController
public List<T_VISUAL_SET> getVisualSetList(String siteIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns);
//ManagerVisualController
public Integer setVisualSetRegProc(T_VISUAL_SET tVisualSet, Integer memberIdx, HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, String rootPath);
//ManagerVisualController
public boolean setVisualSetModProc(T_VISUAL_SET tVisualSet, Integer memberIdx, HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, String rootPath);
//ManagerVisualController
public boolean setVisualSetDelProc(Integer visualSetIdx, String rootPath);
//ManagerVisualController
public boolean setVisualSetStatusProc(Integer visualSetIdx, String status, Integer memberIdx);
}

View File

@ -0,0 +1,830 @@
package seed.manager.visual.service;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import egovframework.rte.fdl.cmmn.AbstractServiceImpl;
import seed.dao.VisualDataDAO;
import seed.dao.VisualSetDAO;
import seed.map.T_MEMBER;
import seed.map.T_VISUAL_DATA;
import seed.map.T_VISUAL_SET;
import seed.utils.SeedFtpType;
import seed.utils.SeedUtils;
@Service
public class ManagerVisualSetServiceImpl extends AbstractServiceImpl implements ManagerVisualSetService{
private Logger log = Logger.getLogger(this.getClass());
@Autowired
private VisualSetDAO visualSetDAO;
@Autowired
private VisualDataDAO visualDataDAO;
//ManagervisualController
public T_VISUAL_SET getVisualSetForm(Integer visualSetIdx){
return visualSetDAO.getVisualSetForm(visualSetIdx);
}
//ManagervisualController
public Long getVisualSetListCnt(String siteIdx, String column, String search){
return visualSetDAO.getVisualSetListCnt(siteIdx, column, search);
}
//ManagervisualController
public List<T_VISUAL_SET> getVisualSetList(String siteIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns){
return visualSetDAO.getVisualSetList(siteIdx, ((page-1) * row), row, orderColumn, order, column, search, qryColumns);
}
//ManagervisualController
@Transactional
public Integer setVisualSetRegProc(T_VISUAL_SET tVisualSet, Integer memberIdx, HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, String rootPath){
Integer visualSetIdx = 0;
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualSet.settMember(tMember);
tVisualSet.setVisualSetStatus("U");
tVisualSet.setVisualSetRegDate(new Date());
tVisualSet.setVisualSetModDate(new Date());
T_VISUAL_SET tVisualSetDB = visualSetDAO.setVisualSetRegProc(tVisualSet);
if(tVisualSetDB != null){
visualSetIdx = tVisualSetDB.getVisualSetIdx();
T_VISUAL_SET tVisualSetTmp = visualSetDAO.getVisualSetForm(tVisualSetDB.getVisualSetIdx());
try{
SeedUtils.setSeedMkDirs(rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Iterator<String> iteratorfileNames = multipartHttpServletRequest.getFileNames();
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
while (iteratorfileNames.hasNext()) {
String fileFormName = (String)iteratorfileNames.next();
String fileFormRename = fileFormName.substring(fileFormName.indexOf("file_")+5);
MultipartFile multipartFile = multipartHttpServletRequest.getFile(fileFormName);
if(multipartFile != null && !multipartFile.isEmpty()){
String reFileName = tVisualSetTmp.getVisualSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/" + reFileName +
multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
multipartFile.transferTo(makeFile);
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
BufferedImage bimg = ImageIO.read(new File(rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/" + reFileName +
multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."))));
if(bimg != null){
int bimgWidth = bimg.getWidth();
int bimgHeight = bimg.getHeight();
if(fileFormRename.equals("visualSetChoiceImgOn")){
tVisualSetTmp.setVisualSetChoiceImgOn(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetChoiceReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetChoiceImgOnWidth(bimgWidth);
tVisualSetTmp.setVisualSetChoiceImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetChoiceImgOver")){
tVisualSetTmp.setVisualSetChoiceImgOver(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetChoiceReImgOver(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetChoiceImgOverWidth(bimgWidth);
tVisualSetTmp.setVisualSetChoiceImgOverHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetChoiceImgOff")){
tVisualSetTmp.setVisualSetChoiceImgOff(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetChoiceReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetChoiceImgOffWidth(bimgWidth);
tVisualSetTmp.setVisualSetChoiceImgOffHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetPlayImgOn")){
tVisualSetTmp.setVisualSetPlayImgOn(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetPlayReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetPlayImgOnWidth(bimgWidth);
tVisualSetTmp.setVisualSetPlayImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetPlayImgOff")){
tVisualSetTmp.setVisualSetPlayImgOff(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetPlayReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetPlayImgOffWidth(bimgWidth);
tVisualSetTmp.setVisualSetPlayImgOffHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetStopImgOn")){
tVisualSetTmp.setVisualSetStopImgOn(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetStopReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetStopImgOnWidth(bimgWidth);
tVisualSetTmp.setVisualSetStopImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetStopImgOff")){
tVisualSetTmp.setVisualSetStopImgOff(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetStopReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetStopImgOffWidth(bimgWidth);
tVisualSetTmp.setVisualSetStopImgOffHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetPreImgOn")){
tVisualSetTmp.setVisualSetPreImgOn(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetPreReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetPreImgOnWidth(bimgWidth);
tVisualSetTmp.setVisualSetPreImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetPreImgOff")){
tVisualSetTmp.setVisualSetPreImgOff(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetPreReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetPreImgOffWidth(bimgWidth);
tVisualSetTmp.setVisualSetPreImgOffHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetNextImgOn")){
tVisualSetTmp.setVisualSetNextImgOn(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetNextReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetNextImgOnWidth(bimgWidth);
tVisualSetTmp.setVisualSetNextImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetNextImgOff")){
tVisualSetTmp.setVisualSetNextImgOff(multipartFile.getOriginalFilename());
tVisualSetTmp.setVisualSetNextReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetTmp.setVisualSetNextImgOffWidth(bimgWidth);
tVisualSetTmp.setVisualSetNextImgOffHeight(bimgHeight);
}
}
}
}
String filePath = rootPath.substring(0, rootPath.lastIndexOf("/site"));
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetChoiceImgOn()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_pagination_on.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_pagination_on.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_pagination_on.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetChoiceImgOn("btn_pagination_on.png");
tVisualSetTmp.setVisualSetChoiceReImgOn("btn_pagination_on.png");
tVisualSetTmp.setVisualSetChoiceImgOnWidth(13);
tVisualSetTmp.setVisualSetChoiceImgOnHeight(13);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetChoiceImgOver()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_pagination_over.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_pagination_over.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_pagination_over.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetChoiceImgOver("btn_pagination_over.png");
tVisualSetTmp.setVisualSetChoiceReImgOver("btn_pagination_over.png");
tVisualSetTmp.setVisualSetChoiceImgOverWidth(13);
tVisualSetTmp.setVisualSetChoiceImgOverHeight(13);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetChoiceImgOff()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_pagination_off.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_pagination_off.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_pagination_off.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetChoiceImgOff("btn_pagination_off.png");
tVisualSetTmp.setVisualSetChoiceReImgOff("btn_pagination_off.png");
tVisualSetTmp.setVisualSetChoiceImgOffWidth(13);
tVisualSetTmp.setVisualSetChoiceImgOffHeight(13);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetPlayImgOn()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_play_over.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_play_over.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_play_over.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetPlayImgOn("btn_play_over.png");
tVisualSetTmp.setVisualSetPlayReImgOn("btn_play_over.png");
tVisualSetTmp.setVisualSetPlayImgOnWidth(16);
tVisualSetTmp.setVisualSetPlayImgOnHeight(17);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetPlayImgOff()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_play.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_play.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_play.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetPlayImgOff("btn_play.png");
tVisualSetTmp.setVisualSetPlayReImgOff("btn_play.png");
tVisualSetTmp.setVisualSetPlayImgOffWidth(16);
tVisualSetTmp.setVisualSetPlayImgOffHeight(18);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetStopImgOn()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_stop_over.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_stop_over.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_stop_over.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetStopImgOn("btn_stop_over.png");
tVisualSetTmp.setVisualSetStopReImgOn("btn_stop_over.png");
tVisualSetTmp.setVisualSetStopImgOnWidth(18);
tVisualSetTmp.setVisualSetStopImgOnHeight(17);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetStopImgOff()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_stop.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_stop.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_stop.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetStopImgOff("btn_stop.png");
tVisualSetTmp.setVisualSetStopReImgOff("btn_stop.png");
tVisualSetTmp.setVisualSetStopImgOffWidth(18);
tVisualSetTmp.setVisualSetStopImgOffHeight(17);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetPreImgOn()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_pre_over.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_pre_over.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_pre_over.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetPreImgOn("btn_pre_over.png");
tVisualSetTmp.setVisualSetPreReImgOn("btn_pre_over.png");
tVisualSetTmp.setVisualSetPreImgOnWidth(12);
tVisualSetTmp.setVisualSetPreImgOnHeight(18);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetPreImgOff()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_pre.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_pre.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_pre.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetPreImgOff("btn_pre.png");
tVisualSetTmp.setVisualSetPreReImgOff("btn_pre.png");
tVisualSetTmp.setVisualSetPreImgOffWidth(12);
tVisualSetTmp.setVisualSetPreImgOffHeight(18);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetNextImgOn()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_next_over.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_next_over.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_next_over.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetNextImgOn("btn_next_over.png");
tVisualSetTmp.setVisualSetNextReImgOn("btn_next_over.png");
tVisualSetTmp.setVisualSetNextImgOnWidth(12);
tVisualSetTmp.setVisualSetNextImgOnHeight(18);
}
if(SeedUtils.setReplaceNull(tVisualSetTmp.getVisualSetNextImgOff()).equals("")){
SeedUtils.setSeedFileCopy(filePath + "/_common/_images/manager/visual/btn_next.png",
rootPath + "/" + tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx() + "/btn_next.png");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetTmp.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetTmp.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(filePath + "/_common/_images/manager/visual");
//WAS 파일명
seedFtpType.setFileName("btn_next.png");
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
tVisualSetTmp.setVisualSetNextImgOff("btn_next.png");
tVisualSetTmp.setVisualSetNextReImgOff("btn_next.png");
tVisualSetTmp.setVisualSetNextImgOffWidth(12);
tVisualSetTmp.setVisualSetNextImgOffHeight(18);
}
if(visualSetDAO.setVisualSetModProc(tVisualSetTmp)){
visualSetIdx = tVisualSetTmp.getVisualSetIdx();
}
}catch(IOException e){
log.error("CHECK ERROR:",e);
}
}
return visualSetIdx;
}
//ManagervisualController
@Transactional
public boolean setVisualSetModProc(T_VISUAL_SET tVisualSet, Integer memberIdx, HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, String rootPath){
T_VISUAL_SET tVisualSetDB = visualSetDAO.getVisualSetForm(tVisualSet.getVisualSetIdx());
try{
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualSetDB.settMember(tMember);
tVisualSetDB.setVisualSetName(tVisualSet.getVisualSetName());
tVisualSetDB.setVisualSetType(tVisualSet.getVisualSetType());
tVisualSetDB.setVisualSetRelation(tVisualSet.getVisualSetRelation());
tVisualSetDB.setVisualSetTime(tVisualSet.getVisualSetTime());
tVisualSetDB.setVisualSetWidth(tVisualSet.getVisualSetWidth());
tVisualSetDB.setVisualSetHeight(tVisualSet.getVisualSetHeight());
tVisualSetDB.setVisualSetBg(tVisualSet.getVisualSetBg());
tVisualSetDB.setVisualSetSkin(tVisualSet.getVisualSetSkin());
tVisualSetDB.setVisualSetChoiceTB(tVisualSet.getVisualSetChoiceTB());
tVisualSetDB.setVisualSetChoiceLR(tVisualSet.getVisualSetChoiceLR());
tVisualSetDB.setVisualSetChoiceTBPosition(tVisualSet.getVisualSetChoiceTBPosition());
tVisualSetDB.setVisualSetChoiceLRPosition(tVisualSet.getVisualSetChoiceLRPosition());
tVisualSetDB.setVisualSetPSTB(tVisualSet.getVisualSetPSTB());
tVisualSetDB.setVisualSetPSLR(tVisualSet.getVisualSetPSLR());
tVisualSetDB.setVisualSetPSTBPosition(tVisualSet.getVisualSetPSTBPosition());
tVisualSetDB.setVisualSetPSLRPosition(tVisualSet.getVisualSetPSLRPosition());
tVisualSetDB.setVisualSetPreTB(tVisualSet.getVisualSetPreTB());
tVisualSetDB.setVisualSetPreLR(tVisualSet.getVisualSetPreLR());
tVisualSetDB.setVisualSetPreTBPosition(tVisualSet.getVisualSetPreTBPosition());
tVisualSetDB.setVisualSetPreLRPosition(tVisualSet.getVisualSetPreLRPosition());
tVisualSetDB.setVisualSetNextTB(tVisualSet.getVisualSetNextTB());
tVisualSetDB.setVisualSetNextLR(tVisualSet.getVisualSetNextLR());
tVisualSetDB.setVisualSetNextTBPosition(tVisualSet.getVisualSetNextTBPosition());
tVisualSetDB.setVisualSetNextLRPosition(tVisualSet.getVisualSetNextLRPosition());
tVisualSetDB.setVisualSetWideImg(tVisualSet.getVisualSetWideImg());
tVisualSetDB.setVisualSetWideImgWidth(tVisualSet.getVisualSetWideImgWidth());
tVisualSetDB.setVisualSetModDate(new Date());
Iterator<String> iteratorfileNames = multipartHttpServletRequest.getFileNames();
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
while (iteratorfileNames.hasNext()) {
String fileFormName = (String)iteratorfileNames.next();
String fileFormRename = fileFormName.substring(fileFormName.indexOf("file_")+5);
MultipartFile multipartFile = multipartHttpServletRequest.getFile(fileFormName);
if(multipartFile != null && !multipartFile.isEmpty()){
SeedUtils.setSeedMkDirs(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String reFileName = tVisualSetDB.getVisualSetIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1)));
File makeFile = new File(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + reFileName +
multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
multipartFile.transferTo(makeFile);
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 파일명
seedFtpType.setFileName(reFileName + multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("regFile");
seedFtpType.setSeedFtp();
BufferedImage bimg = ImageIO.read(new File(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + reFileName +
multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."))));
if(bimg != null){
int bimgWidth = bimg.getWidth();
int bimgHeight = bimg.getHeight();
if(fileFormRename.equals("visualSetChoiceImgOn")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetChoiceReImgOn());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetChoiceReImgOn());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetChoiceImgOn(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetChoiceReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetChoiceImgOnWidth(bimgWidth);
tVisualSetDB.setVisualSetChoiceImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetChoiceImgOver")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetChoiceReImgOver());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetChoiceReImgOver());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetChoiceImgOver(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetChoiceReImgOver(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetChoiceImgOverWidth(bimgWidth);
tVisualSetDB.setVisualSetChoiceImgOverHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetChoiceImgOff")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetChoiceReImgOff());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetChoiceReImgOff());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetChoiceImgOff(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetChoiceReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetChoiceImgOffWidth(bimgWidth);
tVisualSetDB.setVisualSetChoiceImgOffHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetPlayImgOn")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetPlayReImgOn());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetPlayReImgOn());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetPlayImgOn(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetPlayReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetPlayImgOnWidth(bimgWidth);
tVisualSetDB.setVisualSetPlayImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetPlayImgOff")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetPlayReImgOff());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetPlayReImgOff());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetPlayImgOff(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetPlayReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetPlayImgOffWidth(bimgWidth);
tVisualSetDB.setVisualSetPlayImgOffHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetStopImgOn")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetStopReImgOn());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetStopReImgOn());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetStopImgOn(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetStopReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetStopImgOnWidth(bimgWidth);
tVisualSetDB.setVisualSetStopImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetStopImgOff")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetStopReImgOff());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetStopReImgOff());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetStopImgOff(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetStopReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetStopImgOffWidth(bimgWidth);
tVisualSetDB.setVisualSetStopImgOffHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetPreImgOn")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetPreReImgOn());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetPreReImgOn());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetPreImgOn(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetPreReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetPreImgOnWidth(bimgWidth);
tVisualSetDB.setVisualSetPreImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetPreImgOff")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetPreReImgOff());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetPreReImgOff());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetPreImgOff(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetPreReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetPreImgOffWidth(bimgWidth);
tVisualSetDB.setVisualSetPreImgOffHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetNextImgOn")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetNextReImgOn());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetNextReImgOn());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetNextImgOn(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetNextReImgOn(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetNextImgOnWidth(bimgWidth);
tVisualSetDB.setVisualSetNextImgOnHeight(bimgHeight);
}else if(fileFormRename.equals("visualSetNextImgOff")){
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/upload/visual/" + tVisualSetDB.getVisualSetIdx() + "/" + tVisualSetDB.getVisualSetNextReImgOff());
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/upload/visual/" + tVisualSetDB.getVisualSetIdx());
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName(tVisualSetDB.getVisualSetNextReImgOff());
//파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
tVisualSetDB.setVisualSetNextImgOff(multipartFile.getOriginalFilename());
tVisualSetDB.setVisualSetNextReImgOff(reFileName+multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")));
tVisualSetDB.setVisualSetNextImgOffWidth(bimgWidth);
tVisualSetDB.setVisualSetNextImgOffHeight(bimgHeight);
}
}
}
}
}catch(IOException e){
log.error("CHECK ERROR:",e);
}
return visualSetDAO.setVisualSetModProc(tVisualSetDB);
}
//ManagervisualController
@Transactional
public boolean setVisualSetDelProc(Integer visualSetIdx, String rootPath){
T_VISUAL_SET tVisualSetDB = visualSetDAO.getVisualSetForm(visualSetIdx);
//FTP 전송
SeedFtpType seedFtpType = new SeedFtpType();
SeedUtils.setSeedDeleteFiles(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx() +
"/upload/visual/" + tVisualSetDB.getVisualSetIdx() , "");
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/jsp/visual/visual_" + tVisualSetDB.getVisualSetIdx() +".jsp");
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/jsp/visual/css/visual_" + tVisualSetDB.getVisualSetIdx() +".css");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/jsp/visual/css");
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName("visual_" + tVisualSetDB.getVisualSetIdx() +".css");
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
SeedUtils.setSeedDeleteFile(rootPath + "/" + tVisualSetDB.gettSite().getSiteIdx()
+ "/jsp/visual/js/visual_" + tVisualSetDB.getVisualSetIdx() +".js");
//WEB 서버의 경로
seedFtpType.setDestFilePath(tVisualSetDB.gettSite().getSiteIdx() + "/jsp/visual/js");
//WAS 서버의 경로
seedFtpType.setSrcFilePath("");
//WAS 파일명
seedFtpType.setFileName("visual_" + tVisualSetDB.getVisualSetIdx() +".js");
//파일 전송 타입 regFile=파일전송, delFile=파일삭제
seedFtpType.setFtpType("delFile");
seedFtpType.setSeedFtp();
return visualSetDAO.setVisualSetDelProc(tVisualSetDB);
}
//ManagervisualController
@Transactional
public boolean setVisualSetStatusProc(Integer visualSetIdx, String status, Integer memberIdx){
boolean success = false;
T_VISUAL_SET tVisualSetDB = visualSetDAO.getVisualSetForm(visualSetIdx);
Iterator<T_VISUAL_DATA> iteratorList = tVisualSetDB.gettVisualDatas().iterator();
T_MEMBER tMember = new T_MEMBER();
tMember.setMemberIdx(memberIdx);
tVisualSetDB.settMember(tMember);
tVisualSetDB.setVisualSetModDate(new Date());
tVisualSetDB.setVisualSetStatus(status);
if(visualSetDAO.setVisualSetModProc(tVisualSetDB)){
success = true;
while(iteratorList.hasNext()){
T_VISUAL_DATA tVisualDataDB = visualDataDAO.getVisualDataForm(iteratorList.next().getVisualDataIdx());
tVisualDataDB.settMember(tMember);
tVisualDataDB.setVisualDataModDate(new Date());
tVisualDataDB.setVisualDataStatus(status);
if(!visualDataDAO.setVisualDataModProc(tVisualDataDB)){
success = false;
break;
}
}
}
return success;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -184,7 +184,7 @@
</bean>
<!-- T_SITE -->
<!-- T_SITE_MANAGER -->
<!-- T_SITE_MANAGER -->
<bean id="siteManager2DAO" class="seed.dao.SiteManager2DAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

View File

@ -96,6 +96,7 @@
<mvc:resources mapping="/kccadrPb/**" location="/kccadrPb/" />
<mvc:resources mapping="/editor/**" location="/editor/" />
<mvc:resources mapping="/codemirror/**" location="/codemirror/" />
</beans>

View File

@ -0,0 +1,396 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.banner.bannerSetForm.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.banner.nav.bannerSetView"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p></p>
</div>
</div>
</div>
</div>
<form:form id="frm" name="frm" action="/gtm/proc/${siteIdx}/bannerSetRegProc.do" method="post" enctype="multipart/form-data">
<input type="hidden" name="tSite.siteIdx" id="siteIdx" value="<c:out escapeXml='true' value='${siteIdx}' />" />
<fieldset>
<legend><s:message code="manager.banner.bannerSetForm.table.caption"/></legend>
<div class="bbs-view-layout">
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSetType"/></p>
<div class="item-box">
<input type="radio" class="radio checked" name="bannerSetType" id="bannerSetTypeNormal" value="normal" checked /><label for="bannerSetTypeNormal"><s:message code="manager.banner.bannerSetForm.bannerSetType.normal"/></label>
<input type="radio" class="radio" name="bannerSetType" id="bannerSetTypeActive" value="active" /><label for="bannerSetTypeActive"><s:message code="manager.banner.bannerSetForm.bannerSetType.active"/></label>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSetName"/></p>
<div class="item-box"><input type="text" class="width40 essential" maxlength="100" name="bannerSetName" id="bannerSetName" title="<s:message code="manager.banner.bannerSetForm.bannerSetName"/>" value="" required /></div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSetTime"/></p>
<div class="item-box"><input type="text" class="width50px essential numOnly" maxlength="10" name="bannerSetTime" id="bannerSetTime" title="<s:message code="manager.banner.bannerSetForm.bannerSetTime"/>" value="4" required /></div>
</div>
<div class="bbs-view-item" id="trBannerArray" style="display:none;">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSetArray"/></p>
<div class="item-box"><input type="text" maxlength="255" name="bannerSetArray" id="bannerSetArray" title="<s:message code="manager.banner.bannerSetForm.bannerSetArray"/>" value="" />&nbsp;&nbsp;<s:message code="manager.banner.bannerSetForm.bannerSetArray.ex"/></div>
</div>
<div class="bbs-view-item" id="trBannerWidth">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSetSize"/></p>
<div class="item-box">
<s:message code="manager.banner.bannerSetForm.bannerSetWidth"/> <input type="text" class="width50px numOnly" maxlength="10" name="bannerSetWidth" id="bannerSetWidth" title="<s:message code="manager.banner.bannerSetForm.bannerSetWidth"/>" value="" /> px<br/>
<s:message code="manager.banner.bannerSetForm.bannerSetHeight"/> <input type="text" class="width50px numOnly" maxlength="10" name="bannerSetHeight" id="bannerSetHeight" title="<s:message code="manager.banner.bannerSetForm.bannerSetHeight"/>" value="" /> px
</div>
</div>
<div class="bbs-view-item" id="trBannerDataWidth">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerDataSize"/></p>
<div class="item-box">
<s:message code="manager.banner.bannerSetForm.bannerDataWidth"/> <input type="text" class="width50px numOnly" maxlength="10" name="bannerDataWidth" id="bannerDataWidth" title="<s:message code="manager.banner.bannerSetForm.bannerDataWidth"/>" value="" /> px<br/>
<s:message code="manager.banner.bannerSetForm.bannerDataHeight"/> <input type="text" class="width50px numOnly" maxlength="10" name="bannerDataHeight" id="bannerDataHeight" title="<s:message code="manager.banner.bannerSetForm.bannerDataHeight"/>" value="" /> px
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerDataPadding"/></p>
<div class="item-box"><s:message code="manager.banner.bannerSetForm.bannerDataPadding"/> <input type="text" class="width50px essential numOnly" maxlength="10" name="bannerDataPadding" id="bannerDataPadding" title="<s:message code="manager.banner.bannerSetForm.bannerDataPadding"/>" value="" required /> px</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSetPS"/></p>
<div class="item-box">
<div style="margin-top:8px; margin-bottom:4px;">
<input type="radio" class="radio checked" name="bannerSetPSTB" id="bannerSetPSTop" value="top" checked /><label for="bannerSetPSTop"><s:message code="manager.banner.bannerSetForm.bannerSetPS.TB.top"/></label>
<input type="radio" class="radio" name="bannerSetPSTB" id="bannerSetPSBottom" value="bottom" /><label for="bannerSetPSBottom"><s:message code="manager.banner.bannerSetForm.bannerSetPS.TB.bottom"/></label><br/>
<s:message code="manager.banner.bannerSetForm.bannerSetPS.TB.position"/> <input type="text" class="width50px essential numOnly" name="bannerSetPSTBPosition" id="bannerSetPSTBPosition" title="<s:message code="manager.banner.bannerSetForm.bannerSetPS.TB.position"/>" value="" required /> %
</div>
<div style="margin-top:12px; margin-bottom:4px;">
<input type="radio" class="radio checked" name="bannerSetPSLR" id="bannerSetPSLeft" value="left" checked /><label for="bannerSetPSLeft"><s:message code="manager.banner.bannerSetForm.bannerSetPS.LR.left"/></label>
<input type="radio" class="radio" name="bannerSetPSLR" id="bannerSetPSRight" value="right" /><label for="bannerSetPSRight"><s:message code="manager.banner.bannerSetForm.bannerSetPS.LR.right"/></label><br/>
<s:message code="manager.banner.bannerSetForm.bannerSetPS.LR.position"/> <input type="text" class="width50px essential numOnly" name="bannerSetPSLRPosition" id="bannerSetPSLRPosition" title="<s:message code="manager.banner.bannerSetForm.bannerSetPS.LR.position"/>" value="" required /> %
</div>
<div class="row"><input type="file" name="file_bannerSetPlayImg" id="bannerSetPlayImg" value="" /><label for="bannerSetPlayImg"><s:message code="manager.banner.bannerSetForm.bannerSetPS.play.img"/></label><span class="file-info"><s:message code="manager.banner.bannerSetForm.bannerSetPS.play.img"/></span></div>
<div class="row"><input type="file" name="file_bannerSetStopImg" id="bannerSetStopImg" value="" /><label for="bannerSetStopImg"><s:message code="manager.banner.bannerSetForm.bannerSetPS.stop.img"/></label><span class="file-info"><s:message code="manager.banner.bannerSetForm.bannerSetPS.stop.img"/></span></div>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSetPN"/></p>
<div class="item-box">
<div style="margin-top:8px; margin-bottom:4px;">
<input type="radio" class="radio checked" name="bannerSetPreTB" id="bannerSetPreTop" value="top" checked /><label for="bannerSetPreTop"><s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.top"/></label>
<input type="radio" class="radio" name="bannerSetPreTB" id="bannerSetPreBottom" value="bottom" /><label for="bannerSetPreBottom"><s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.bottom"/></label><br/>
<s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.position"/> <input type="text" class="width50px essential numOnly" name="bannerSetPreTBPosition" id="bannerSetPreTBPosition" title="<s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.position"/>" value="" required /> %
</div>
<div style="margin-top:12px; margin-bottom:4px;">
<input type="radio" class="radio checked" name="bannerSetPreLR" id="bannerSetPreLeft" value="left" checked /><label for="bannerSetPreLeft"><s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.left"/></label>
<input type="radio" class="radio" name="bannerSetPreLR" id="bannerSetPreRight" value="right" /><label for="bannerSetPreRight"><s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.right"/></label><br/>
<s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.position"/> <input type="text" class="width50px essential numOnly" name="bannerSetPreLRPosition" id="bannerSetPreLRPosition" title="<s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.position"/>" value="" required /> %
</div>
<div class="row"><input type="file" name="file_bannerSetPreImg" id="bannerSetPreImg" value="" /><label for="bannerSetPreImg"><s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.img"/></label><span class="file-info"><s:message code="manager.banner.bannerSetForm.bannerSetPN.pre.img"/></span></div>
<div style="margin-top:8px; margin-bottom:4px;">
<input type="radio" class="radio checked" name="bannerSetNextTB" id="bannerSetNextTop" value="top" checked /><label for="bannerSetNextTop"><s:message code="manager.banner.bannerSetForm.bannerSetPN.next.top"/></label>
<input type="radio" class="radio" name="bannerSetNextTB" id="bannerSetNextBottom" value="bottom" /><label for="bannerSetNextBottom"><s:message code="manager.banner.bannerSetForm.bannerSetPN.next.bottom"/></label><br/>
<s:message code="manager.banner.bannerSetForm.bannerSetPN.next.position"/> <input type="text" class="width50px essential numOnly" name="bannerSetNextTBPosition" id="bannerSetNextTBPosition" title="<s:message code="manager.banner.bannerSetForm.bannerSetPN.next.position"/>" value="" required /> %
</div>
<div style="margin-top:12px; margin-bottom:4px;">
<input type="radio" class="radio checked" name="bannerSetNextLR" id="bannerSetNextLeft" value="left" checked /><label for="bannerSetNextLeft"><s:message code="manager.banner.bannerSetForm.bannerSetPN.next.left"/></label>
<input type="radio" class="radio" name="bannerSetNextLR" id="bannerSetNextRight" value="right" /><label for="bannerSetNextRight"><s:message code="manager.banner.bannerSetForm.bannerSetPN.next.right"/></label><br/>
<s:message code="manager.banner.bannerSetForm.bannerSetPN.next.position"/> <input type="text" class="width50px essential numOnly" name="bannerSetNextLRPosition" id="bannerSetNextLRPosition" title="<s:message code="manager.banner.bannerSetForm.bannerSetPN.next.position"/>" value="" required /> %
</div>
<div class="row"><input type="file" name="file_bannerSetNextImg" id="bannerSetNextImg" value="" /><label for="bannerSetNextImg"><s:message code="manager.banner.bannerSetForm.bannerSetPN.next.img"/></label><span class="file-info"><s:message code="manager.banner.bannerSetForm.bannerSetPN.next.img"/></span></div>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSetSkin"/></p>
<div class="item-box">
<input type="radio" class="radio checked" name="bannerSetSkin" id="bannerSetSkinA" value="A" checked /><label for="bannerSetSkinA"><s:message code="manager.banner.bannerSetForm.bannerSetSkin.A"/></label>
<input type="radio" class="radio" name="bannerSetSkin" id="bannerSetSkinB" value="B" /><label for="bannerSetSkinB"><s:message code="manager.banner.bannerSetForm.bannerSetSkin.B"/></label>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.banner.bannerSetForm.bannerSet.preview"/></p>
<div class="item-box">
<iframe id="bannerPreview" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerFormPreview.do?bannerSetType=normal&amp;bannerSetSkin=A" style="width:100%; height:200px; border:0;"></iframe>
</div>
</div>
</div>
</fieldset>
<c:if test='${memberGrant == "S" || memberAuth}'>
<div class="btn-area">
<button type="submit" class="btn-normal violet"><s:message code="common.button.save"/></button>
<a class="btn-normal lightgray" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do"><s:message code="common.button.list"/></a>
</div>
</c:if>
</form:form>
<script>
/* <![CDATA[ */
$("#bannerSetName").focus();
$("#bannerSetWidth").keyup(function(){
var value = parseInt($(this).val(),10);
$("#bannerPreview").contents().find(".bannerSetPreview").css({width :value});
});
$("#bannerSetHeight").keyup(function(){
var value = parseInt($(this).val(),10);
$("#bannerPreview").contents().find(".bannerSetPreview").css({height :value});
});
$("#bannerDataWidth").keyup(function(){
var value = parseInt($(this).val(),10);
$("#bannerPreview").contents().find(".bannerSetPreview .slick-slide img").css({width :value});
});
$("#bannerDataHeight").keyup(function(){
var value = parseInt($(this).val(),10);
$("#bannerPreview").contents().find(".bannerSetPreview .slick-slide img").css({height :value});
});
$("#bannerDataPadding").keyup(function(){
var value = parseInt($(this).val(),10);
$("#bannerPreview").contents().find(".bannerSetPreview .slick-slide img").css({borderWidth:value});
});
$("#bannerSetPSTBPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="bannerSetPSTB"]:radio:checked').val() == "top"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css({top :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css("bottom", "auto");
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css({top :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css("bottom", "auto");
}else if($('input[name="bannerSetPSTB"]:radio:checked').val() == "bottom"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css({bottom :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css("top", "auto");
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css({bottom :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css("top", "auto");
}
});
$('input[name="bannerSetPSTB"]').click(function(){
var value = parseInt($("#bannerSetPSTBPosition").val(),10);
if($('input[name="bannerSetPSTB"]:radio:checked').val() == "top"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css({top :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css("bottom", "auto");
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css({top :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css("bottom", "auto");
}else if($('input[name="bannerSetPSTB"]:radio:checked').val() == "bottom"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css({bottom :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css("top", "auto");
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css({bottom :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css("top", "auto");
}
});
$("#bannerSetPSLRPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="bannerSetPSLR"]:radio:checked').val() == "left"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css({left :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css("right", "auto");
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css({left :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css("right", "auto");
}else if($('input[name="bannerSetPSLR"]:radio:checked').val() == "right"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css({right :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css("left", "auto");
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css({right :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css("left", "auto");
}
});
$('input[name="bannerSetPSLR"]').click(function(){
var value = parseInt($("#bannerSetPSLRPosition").val(),10);
if($('input[name="bannerSetPSLR"]:radio:checked').val() == "left"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css({left :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css("right", "auto");
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css({left :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css("right", "auto");
}else if($('input[name="bannerSetPSLR"]:radio:checked').val() == "right"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css({right :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-play").css("left", "auto");
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css({right :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-stop").css("left", "auto");
}
});
$("#bannerSetPreTBPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="bannerSetPreTB"]:radio:checked').val() == "top"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css({top :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css("bottom", "auto");
}else if($('input[name="bannerSetPreTB"]:radio:checked').val() == "bottom"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css({bottom :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css("top", "auto");
}
});
$('input[name="bannerSetPreTB"]').click(function(){
var value = parseInt($("#bannerSetPreTBPosition").val(),10);
if($('input[name="bannerSetPreTB"]:radio:checked').val() == "top"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css({top :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css("bottom", "auto");
}else if($('input[name="bannerSetPreTB"]:radio:checked').val() == "bottom"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css({bottom :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css("top", "auto");
}
});
$("#bannerSetPreLRPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="bannerSetPreLR"]:radio:checked').val() == "left"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css({left :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css("right", "auto");
}else if($('input[name="bannerSetPreLR"]:radio:checked').val() == "right"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css({right :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css("left", "auto");
}
});
$('input[name="bannerSetPreLR"]').click(function(){
var value = parseInt($("#bannerSetPreLRPosition").val(),10);
if($('input[name="bannerSetPreLR"]:radio:checked').val() == "left"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css({left :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css("right", "auto");
}else if($('input[name="bannerSetPreLR"]:radio:checked').val() == "right"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css({right :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-prev").css("left", "auto");
}
});
$("#bannerSetNextTBPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="bannerSetNextTB"]:radio:checked').val() == "top"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css({top :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css("bottom", "auto");
}else if($('input[name="bannerSetNextTB"]:radio:checked').val() == "bottom"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css({bottom :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css("top", "auto");
}
});
$('input[name="bannerSetNextTB"]').click(function(){
var value = parseInt($("#bannerSetNextTBPosition").val(),10);
if($('input[name="bannerSetNextTB"]:radio:checked').val() == "top"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css({top :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css("bottom", "auto");
}else if($('input[name="bannerSetNextTB"]:radio:checked').val() == "bottom"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css({bottom :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css("top", "auto");
}
});
$("#bannerSetNextLRPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="bannerSetNextLR"]:radio:checked').val() == "left"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css({left :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css("right", "auto");
}else if($('input[name="bannerSetNextLR"]:radio:checked').val() == "right"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css({right :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css("left", "auto");
}
});
$('input[name="bannerSetNextLR"]').click(function(){
var value = parseInt($("#bannerSetNextLRPosition").val(),10);
if($('input[name="bannerSetNextLR"]:radio:checked').val() == "left"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css({left :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css("right", "auto");
}else if($('input[name="bannerSetNextLR"]:radio:checked').val() == "right"){
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css({right :value+"%"});
$("#bannerPreview").contents().find(".bannerSetPreview .slick-next").css("left", "auto");
}
});
$("input[name=bannerSetType]").change(function() {
var bannerSetType = $(this).val();
if(bannerSetType == "normal"){
$("#trBannerArray").hide();
$("#trBannerWidth").show();
$("#trBannerDataWidth").show();
}else if(bannerSetType == "active"){
$("#trBannerArray").show();
$("#trBannerWidth").hide();
$("#trBannerDataWidth").hide();
}
$("#bannerPreview").attr("src", "/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerFormPreview.do?bannerSetType="+bannerSetType+"&bannerSetSkin="+$('input[name="bannerSetSkin"]:radio:checked').val());
});
$("input[name=bannerSetSkin]").change(function() {
var bannerSetSkin = $(this).val();
$("#bannerPreview").attr("src", "/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerFormPreview.do?bannerSetType="+$('input[name="bannerSetType"]:radio:checked').val()+"&bannerSetSkin="+bannerSetSkin);
});
$("#frm").submit(function(){
if($('input[name="bannerSetType"]:radio:checked').length == 0){
alert("<s:message code="manager.banner.bannerSetForm.bannerSetType"/> <s:message code="common.message.essential"/>");
return false;
}else if($("#bannerSetName").val() == ""){
alert("<s:message code="manager.banner.bannerSetForm.bannerSetName"/> <s:message code="common.message.essential"/>");
$("#bannerSetName").focus();
return false;
}
if($('input[name="bannerSetType"]:radio:checked').val() == "normal"){
if($("#bannerSetWidth").val() == ""){
alert("<s:message code="manager.banner.bannerSetForm.bannerSetSize"/> <s:message code="manager.banner.bannerSetForm.bannerSetWidth"/> <s:message code="common.message.essential"/>");
$("#bannerSetWidth").focus();
return false;
}else if($("#bannerSetHeight").val() == ""){
alert("<s:message code="manager.banner.bannerSetForm.bannerSetSize"/> <s:message code="manager.banner.bannerSetForm.bannerSetHeight"/> <s:message code="common.message.essential"/>");
$("#bannerSetHeight").focus();
return false;
}else if($("#bannerDataWidth").val() == ""){
alert("<s:message code="manager.banner.bannerSetForm.bannerDataSize"/> <s:message code="manager.banner.bannerSetForm.bannerDataWidth"/> <s:message code="common.message.essential"/>");
$("#bannerDataWidth").focus();
return false;
}else if($("#bannerDataHeight").val() == ""){
alert("<s:message code="manager.banner.bannerSetForm.bannerDataSize"/> <s:message code="manager.banner.bannerSetForm.bannerDataHeight"/> <s:message code="common.message.essential"/>");
$("#bannerDataHeight").focus();
return false;
}
}else if($('input[name="bannerSetType"]:radio:checked').val() == "active"){
if($("#bannerSetArray").val() == ""){
alert("<s:message code="manager.banner.bannerSetForm.bannerSetArray"/> <s:message code="common.message.essential"/>");
$("#bannerSetArray").focus();
return false;
}
}
if($('input[name="bannerSetSkin"]:radio:checked').length == 0){
alert("<s:message code="manager.banner.bannerSetForm.bannerSetSkin"/> <s:message code="common.message.essential"/>");
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,289 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.banner.bannerSetPreview.title"/></title>
<script src="/js/lib/slick.min.js"></script>
<style>
.bannerSetPreview {
<c:if test='${bannerSetType == "normal"}'>
width: 600px;
height: 50px;
</c:if>
position: relative;
display: block;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-touch-callout: none;
-khtml-user-select: none;
-ms-touch-action: pan-y;
touch-action: pan-y;
-webkit-tap-highlight-color: transparent;
}
.bannerSetPreview .slick-list {
position: relative;
display: block;
overflow: hidden;
margin: 0;
padding: 0;
}
.bannerSetPreview .slick-list:focus {
outline: none;
}
.bannerSetPreview .slick-list.dragging {
cursor: pointer;
cursor: hand;
}
.bannerSetPreview .slick-track,
.bannerSetPreview .slick-list {
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.bannerSetPreview .slick-track {
position: relative;
top: 0;
left: 0;
display: block;
}
.bannerSetPreview .slick-track:before,
.bannerSetPreview .slick-track:after {
display: table;
content: '';
}
.bannerSetPreview .slick-track:after {
clear: both;
}
.bannerSetPreview .slick-loading .slick-track {
visibility: hidden;
}
.bannerSetPreview .slick-slide {
display: none;
float: left;
height: 100%;
min-height: 1px;
}
[dir='rtl'] .bannerSetPreview .slick-slide {
float: right;
}
.bannerSetPreview .slick-slide img {
display: block;
border: 5px solid #FFF;
display: block;
<c:choose>
<c:when test='${bannerSetType == "normal"}'>
width: 120px;
height: 50px;
</c:when>
<c:when test='${bannerSetType == "active"}'>
width: 100%;
</c:when>
</c:choose>
}
.bannerSetPreview .slick-slide.slick-loading img {
display: none;
}
.bannerSetPreview .slick-slide.dragging img {
pointer-events: none;
}
.bannerSetPreview.slick-initialized .slick-slide {
display: block;
}
.bannerSetPreview .slick-loading .slick-slide {
visibility: hidden;
}
.bannerSetPreview.slick-vertical .slick-slide {
display: block;
height: auto;
border: 1px solid transparent;
}
.bannerSetPreview .slick-loading .slick-list {
background: #fff url('/img/jquery-ui/ajax-loader.gif') center center no-repeat;
}
.bannerSetPreview .slick-prev {
position: absolute;
bottom: 0%;
left: 2%;
display: block;
}
.bannerSetPreview .slick-next {
position: absolute;
bottom: 0%;
left: 5%;
display: block;
}
.bannerSetPreview .slick-stop, .slick-play {
position: absolute;
bottom: 0%;
right: 1%;
display: block ;
}
</style>
</head>
<body>
<script src="/js/slick.min.js"></script>
<div class="bannerSetPreview">
<div><img src="/img/manager/banner/example-slide-1.jpg" alt="banner1" /></div>
<div><img src="/img/manager/banner/example-slide-2.jpg" alt="banner2" /></div>
<div><img src="/img/manager/banner/example-slide-3.jpg" alt="banner3" /></div>
<div><img src="/img/manager/banner/example-slide-1.jpg" alt="banner4" /></div>
<div><img src="/img/manager/banner/example-slide-2.jpg" alt="banner5" /></div>
<div><img src="/img/manager/banner/example-slide-3.jpg" alt="banner6" /></div>
</div>
<script>
/* <![CDATA[ */
var bannerSetSkin;
<c:choose>
<c:when test='${bannerSetSkin == "A"}'>
bannerSetSkin = false;
</c:when>
<c:when test='${bannerSetSkin == "B"}'>
bannerSetSkin = true;
</c:when>
</c:choose>
<c:choose>
<c:when test='${bannerSetType == "normal"}'>
var $bannerSet = $('.bannerSetPreview').slick({
vertical : bannerSetSkin,
pauseOnHover : false,
draggable: false,
arrows : true,
prevArrow : "<a href=\"#\" title=\"Previous\" class=\"slick-prev\"><img src=\"/img/manager/banner/btn_pre.png\" alt=\"Previous\"/></a>",
nextArrow : "<a href=\"#\" title=\"Next\" class=\"slick-next\"><img src=\"/img/manager/banner/btn_next.png\" alt=\"Next\"/></a><a href=\"#\" title=\"Play\" class=\"slick-play\"><img src=\"/img/manager/banner/btn_play.png\" alt=\"Play\"/></a><a href=\"#\" title=\"Stop\" class=\"slick-stop\"><img src=\"/img/manager/banner/btn_stop.png\" alt=\"Stop\"/></a>",
lazyLoad: 'ondemand',
autoplay: true,
autoplaySpeed: 2000,
dots: false,
infinite: true,
speed: 500,
slidesToShow: 5
});
</c:when>
<c:when test='${bannerSetType == "active"}'>
var $bannerSet = $('.bannerSetPreview').slick({
vertical : bannerSetSkin,
pauseOnHover : false,
draggable: false,
arrows : true,
prevArrow : "<a href=\"#\" title=\"Previous\" class=\"slick-prev\"><img src=\"/img/manager/banner/btn_pre.png\" alt=\"Previous\"/></a>",
nextArrow : "<a href=\"#\" title=\"Next\" class=\"slick-next\"><img src=\"/img/manager/banner/btn_next.png\" alt=\"Next\"/></a><a href=\"#\" title=\"Play\" class=\"slick-play\"><img src=\"/img/manager/banner/btn_play.png\" alt=\"Play\"/></a><a href=\"#\" title=\"Stop\" class=\"slick-stop\"><img src=\"/img/manager/banner/btn_stop.png\" alt=\"Stop\"/></a>",
lazyLoad: 'ondemand',
autoplay: true,
autoplaySpeed: 2000,
dots: false,
infinite: true,
speed: 500,
slidesToShow: 5,
responsive: [{
breakpoint: 1024,
settings: {
vertical : bannerSetSkin,
pauseOnHover : false,
draggable: false,
arrows : true,
prevArrow : "<a href=\"#\" title=\"Previous\" class=\"slick-prev\"><img src=\"/img/manager/banner/btn_pre.png\" alt=\"Previous\"/></a>",
nextArrow : "<a href=\"#\" title=\"Next\" class=\"slick-next\"><img src=\"/img/manager/banner/btn_next.png\" alt=\"Next\"/></a><a href=\"#\" title=\"Play\" class=\"slick-play\"><img src=\"/img/manager/banner/btn_play.png\" alt=\"Play\"/></a><a href=\"#\" title=\"Stop\" class=\"slick-stop\"><img src=\"/img/manager/banner/btn_stop.png\" alt=\"Stop\"/></a>",
lazyLoad: 'ondemand',
autoplay: true,
autoplaySpeed: 2000,
slidesToShow: 3,
dots: false,
infinite: true
}
}, {
breakpoint: 600,
settings: {
vertical : bannerSetSkin,
pauseOnHover : false,
draggable: false,
arrows : true,
prevArrow : "<a href=\"#\" title=\"Previous\" class=\"slick-prev\"><img src=\"/img/manager/banner/btn_pre.png\" alt=\"Previous\"/></a>",
nextArrow : "<a href=\"#\" title=\"Next\" class=\"slick-next\"><img src=\"/img/manager/banner/btn_next.png\" alt=\"Next\"/></a><a href=\"#\" title=\"Play\" class=\"slick-play\"><img src=\"/img/manager/banner/btn_play.png\" alt=\"Play\"/></a><a href=\"#\" title=\"Stop\" class=\"slick-stop\"><img src=\"/img/manager/banner/btn_stop.png\" alt=\"Stop\"/></a>",
lazyLoad: 'ondemand',
autoplay: true,
autoplaySpeed: 2000,
slidesToShow: 2,
dots: false,
infinite: true
}
}, {
breakpoint: 480,
settings: {
vertical : bannerSetSkin,
pauseOnHover : false,
draggable: false,
arrows : true,
prevArrow : "<a href=\"#\" title=\"Previous\" class=\"slick-prev\"><img src=\"/img/manager/banner/btn_pre.png\" alt=\"Previous\"/></a>",
nextArrow : "<a href=\"#\" title=\"Next\" class=\"slick-next\"><img src=\"/img/manager/banner/btn_next.png\" alt=\"Next\"/></a><a href=\"#\" title=\"Play\" class=\"slick-play\"><img src=\"/img/manager/banner/btn_play.png\" alt=\"Play\"/></a><a href=\"#\" title=\"Stop\" class=\"slick-stop\"><img src=\"/img/manager/banner/btn_stop.png\" alt=\"Stop\"/></a>",
lazyLoad: 'ondemand',
autoplay: true,
autoplaySpeed: 2000,
slidesToShow: 1,
dots: false,
infinite: true
}
}]
});
</c:when>
</c:choose>
$('.bannerSetPreview .slick-play').hide();
$('.bannerSetPreview .slick-play').on("click", function(){
$bannerSet.slick('slickPlay');
$(".bannerSetPreview .slick-play").hide();
$(".bannerSetPreview .slick-stop").show();
});
$('.bannerSetPreview .slick-stop').on("click", function(){
$bannerSet.slick('slickPause');
$(".bannerSetPreview .slick-stop").hide();
$(".bannerSetPreview .slick-play").show();
});
$('.bannerSetPreview .slick-prev, .slick-next').click(function(){
$(".bannerSetPreview .slick-stop").show();
$(".bannerSetPreview .slick-play").hide();
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,257 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.banner.bannerSetList.title"/></title>
<script src="/js/lib/base64.js"></script>
</head>
<body>
<c:if test='${(siteMenuIdx != "0" && menuCode == "N") || menuCode == "banner"}'>
<div class="seed-popup-wrap">
</c:if>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.banner.nav.bannerSetList"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p></p>
</div>
</div>
</div>
<div class="sch-content-wrap clear">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<c:url var="actionUrl" value="/gtm/${siteIdx}/bannerSetList.do" />
</c:when>
<c:otherwise>
<c:url var="actionUrl" value="/menu/${siteIdx}/bannerSetList.do" />
</c:otherwise>
</c:choose>
<form:form name="frmSearch" id="frmSearch" action="${actionUrl}" method="post">
<input type="hidden" name="page" value="1" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="siteMenuIdx" value="<c:out escapeXml='true' value='${siteMenuIdx}' />"/>
<input type="hidden" name="menuCode" value="<c:out escapeXml='true' value='${menuCode}' />"/>
<fieldset>
<legend>검색 폼</legend>
<select name="column" id="column" title="<s:message code="common.select.option.value"/>" class="sch-select">
<option value="A" <c:if test="${column == 'A'}">selected="selected"</c:if>><s:message code="common.select.option.value.all"/></option>
<option value="bannerSetName" <c:if test="${column == 'bannerSetName'}">selected="selected"</c:if>><s:message code="manager.banner.bannerSetList.bannerSetName"/></option>
<option value="tMember.memberName" <c:if test="${column == 'tMember.memberName'}">selected="selected"</c:if>><s:message code="common.memberName"/></option>
</select>
<input type="search" name="search" id="search" value="<c:out escapeXml='true' value='${search}' />" title="<s:message code="common.search.value"/>" class="sch-text">
<button type="submit" class="btn-page-sch"><s:message code="common.button.search"/></button>
</fieldset>
</form:form>
</div>
</div>
<form:form name="frm" id="frm" method="post" action="/gtm/proc/${siteIdx}/bannerSetStatusProc.do">
<input type="hidden" name="page" value="<c:out escapeXml='true' value='${page}' />" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="column" value="<c:out escapeXml='true' value='${column}' />" />
<input type="hidden" name="search" value="<c:out escapeXml='true' value='${search}' />" />
<div class="more-btn-box">
<button type="button" id="moreTableItem" class="more-table-item">칼럼 더보기</button>
</div>
<div class="form-wrap">
<div class="table-layout br-none">
<table>
<caption><s:message code="manager.banner.bannerSetList.table.caption"/></caption>
<colgroup>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><col class="checkbox_small" /></c:if>
<col class="title">
<col>
<col class="item-tablet-hidden">
<col class="item-mobile-hidden">
<col class="item-mobile-hidden">
</colgroup>
<thead>
<tr>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><th scope="col"><input type="checkbox" class="checkbox check-all" name="allcheck" id="allcheck" title="<s:message code="common.message.allCheck"/>" /><label for="allcheck"></label></th></c:if>
<th scope="col"><s:message code="manager.banner.bannerSetList.bannerSetName"/><span> <a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col"><s:message code="manager.banner.bannerSetList.bannerDataCnt"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="common.memberName"/><span> <a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=tMember.memberName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=tMember.memberName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.regDate"/><span> <a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetRegDate&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetRegDate&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.status"/><span> <a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetStatus&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetStatus&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty bannerSetList}">
<c:forEach items="${bannerSetList}" var="bannerSetList" varStatus="status">
<tr>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><td><input type="checkbox" class="checkbox check-base" name="idxs" id="banner_<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />" value="<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />" /><label for="banner_<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />"></label> <%-- <c:out escapeXml='true' value='${bannerSetListCnt - (page-1)*row - status.index}' /> --%></td></c:if>
<td class="al">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetEdit/<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />"><span><c:out escapeXml='true' value='${bannerSetList._bannerSetName}' /></span></a>
</c:when>
<c:when test='${menuCode == "banner"}'>
<a class="hover-link codeClick" href="/<c:out escapeXml='true' value='${siteIdx}' />/<c:out escapeXml='true' value='${menuCode}' />/<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />/mini.do"><span><c:out escapeXml='true' value='${bannerSetList._bannerSetName}' /></span></a>
</c:when>
</c:choose>
</td>
<td>
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />/bannerDataList.do"><span><c:out escapeXml='true' value='${bannerSetList._bannerDataIdxCnt}' /></span></a>
</c:when>
<c:otherwise>
<c:out escapeXml='true' value='${bannerSetList._bannerDataIdxCnt}' />
</c:otherwise>
</c:choose>
</td>
<td class="item-tablet-hidden"><c:out escapeXml='true' value='${bannerSetList._memberName}' />(<c:out escapeXml='true' value='${bannerSetList._memberId}' />)</td>
<td class="item-mobile-hidden"><c:out escapeXml='true' value='${fn:substring(bannerSetList._bannerSetRegDate, 0, 10)}' /></td>
<c:choose>
<c:when test="${bannerSetList._bannerSetStatus == 'U'}">
<td class="item-mobile-hidden skin-default"><s:message code="common.use"/></td>
</c:when>
<c:when test="${bannerSetList._bannerSetStatus == 'S'}">
<td class="state-stop item-mobile-hidden"><s:message code="common.stop"/></td>
</c:when>
<c:when test="${bannerSetList._bannerSetStatus == 'D'}">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<td class="state-delete item-mobile-hidden">
<a class="dataDel" href="/gtm/proc/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetDelProc/<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><s:message code="common.button.del"/></a>
</td>
</c:when>
<c:otherwise>
<td><s:message code="common.button.del"/></td>
</c:otherwise>
</c:choose>
</c:when>
</c:choose>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td class="no-data-colspan"><s:message code="common.message.no.data"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'>
<div class="change-state-area">
<label for="selStatus"><s:message code="common.message.choice"/></label>
<select name="selStatus" id="selStatus" title="<s:message code="common.select.option.value"/>" class="change-list">
<option value=""><s:message code="common.select.option.value"/></option>
<option value="U"><s:message code="common.select.option.value.use"/></option>
<option value="S"><s:message code="common.select.option.value.stop"/></option>
<option value="D"><s:message code="common.select.option.value.delete"/></option>
</select>
<button type="submit" class="btn-change-state"><s:message code="common.button.status"/></button>
</div>
</c:if>
</div>
</form:form>
<div class="pagination-container">
<div class="pagination-inner clear">
<div class="pagination-control prev clear">
<a class="first-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=1&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.first"/>" ><s:message code="common.page.first"/></a>
<c:choose>
<c:when test="${block > 1}">
<a class="prev-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${fPage-1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:when>
<c:otherwise>
<a class="prev-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${fPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:otherwise>
</c:choose>
</div>
<ul class="pagination clear">
<c:forEach begin="0" end="${lPage-fPage}" var="index" >
<c:choose>
<c:when test="${index+fPage==page}">
<li><a class="on" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.now"/>" ><c:out escapeXml='true' value='${page}' /></a></li>
</c:when>
<c:otherwise>
<li><a href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${index+fPage}' />&amp;row=${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<c:out escapeXml='true' value='${index+fPage}' /> <s:message code="common.page.page"/>" ><c:out escapeXml='true' value='${index+fPage}' /></a></li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
<div class="pagination-control next clear">
<c:choose>
<c:when test="${block < blocks}">
<a class="next-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${lPage+1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:when>
<c:otherwise>
<a class="next-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${lPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:otherwise>
</c:choose>
<a class="last-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${pages}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.last"/>" ><s:message code="common.page.last"/></a>
</div>
</div>
</div>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'>
<div class="btn-area">
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetForm.do" class="btn-normal violet"><s:message code="common.button.create"/></a>
</div>
</c:if>
<script>
/* <![CDATA[ */
$(".dataDel").click(function(){
if(!confirm("<s:message code='common.message.banner.set.confirm.del'/>")){
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
$(".codeClick").click(function(){
var url = $(this).attr("href");
location.replace("/common/getCode/<c:out escapeXml='true' value='${siteIdx}' />.do?getUrl="+Base64.encode(url)+"&codeType=func&pageType=manager");
return false;
});
$("#frm").submit(function(){
if(!$('input:checkbox[name="idxs"]').is(":checked")){
alert("<s:message code="common.message.no.check"/>");
return false;
}
if($("#selStatus option:selected").val() == ""){
alert("<s:message code="common.message.no.select"/>");
$("#selStatus").focus();
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
<c:if test='${(siteMenuIdx != "0" && menuCode == "N") || menuCode == "banner"}'>
</div>
</c:if>
</body>
</html>

View File

@ -0,0 +1,79 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.member.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.alert"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.alert.caption"/></p>
</div>
</div>
</div>
</div>
<div class="tab-menu cf">
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteAlertSkin.do?alertType=message" <c:if test='${alertType == "message"}'>class="on" </c:if>><s:message code="manager.skin.tab.alert.message"/></a>
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteAlertSkin.do?alertType=error" <c:if test='${alertType == "error"}'>class="on" </c:if>><s:message code="manager.skin.tab.alert.error"/></a>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="iframe" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=alert&amp;pageName=<c:out escapeXml='true' value='${alertType}' />" id="siteSkinHtml"></iframe>
<iframe class="iframe" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=alert&amp;pageName=alert" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,80 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.charge.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.charge"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.charge.caption"/></p>
</div>
</div>
</div>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=charge&amp;pageName=charge" id="siteSkinHtml"></iframe>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=charge&amp;pageName=charge" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,82 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.fileupload.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.fileupload"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.fileupload.caption"/></p>
</div>
</div>
</div>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=fileupload&amp;pageName=fileupload" id="siteSkinHtml"></iframe>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=fileupload&amp;pageName=fileupload" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,87 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.login.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.login"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.login.caption"/></p>
</div>
</div>
</div>
</div>
<div class="tab-menu cf">
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteLoginSkin.do?loginType=login" <c:if test='${loginType == "login"}'>class="on" </c:if>><s:message code="manager.skin.tab.login.login"/></a>
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteLoginSkin.do?loginType=logout" <c:if test='${loginType == "logout"}'>class="on" </c:if>><s:message code="manager.skin.tab.login.logout"/></a>
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteLoginSkin.do?loginType=loginAuth" <c:if test='${loginType == "loginAuth"}'>class="on" </c:if>><s:message code="manager.skin.tab.login.auth"/></a>
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteLoginSkin.do?loginType=loginPw" <c:if test='${loginType == "loginPw"}'>class="on" </c:if>><s:message code="manager.skin.tab.login.pw"/></a>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=login&amp;pageName=<c:out escapeXml='true' value='${loginType}' />" id="siteSkinHtml"></iframe>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=login&amp;pageName=login" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,99 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.member.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.member"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.member.caption"/></p>
</div>
</div>
</div>
</div>
<div class="tab-menu-wrap">
<div class="tab-menu cf">
<a <c:if test='${memberType == "memberFormPwDel"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberFormPwDel"><s:message code="manager.skin.tab.member.memberDel"/></a>
<a <c:if test='${memberType == "memberPwDelResult"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberPwDelResult"><s:message code="manager.skin.tab.member.memberDelResult"/></a>
</div>
<div class="tab-menu cf">
<a <c:if test='${memberType == "memberIdFind"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberIdFind"><s:message code="manager.skin.tab.member.memberIdFind"/></a>
<a <c:if test='${memberType == "memberPwFind"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberPwFind"><s:message code="manager.skin.tab.member.memberPwFind"/></a>
<a <c:if test='${memberType == "memberIdResult"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberIdResult"><s:message code="manager.skin.tab.member.memberIdResult"/></a>
<a <c:if test='${memberType == "memberPwResult"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberPwResult"><s:message code="manager.skin.tab.member.memberPwResult"/></a>
</div>
<div class="tab-menu cf">
<a <c:if test='${memberType == "memberForm"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberForm"><s:message code="manager.skin.tab.member.memberForm"/></a>
<a <c:if test='${memberType == "memberEdit"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberEdit"><s:message code="manager.skin.tab.member.memberEdit"/></a>
<a <c:if test='${memberType == "memberChk"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberChk"><s:message code="manager.skin.tab.member.memberChk"/></a>
<a <c:if test='${memberType == "memberFormPw"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberFormPw"><s:message code="manager.skin.tab.member.memberPwChk"/></a>
</div>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=member&amp;pageName=${memberType}" id="siteSkinHtml"></iframe>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=member&amp;pageName=member" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,80 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.navigation.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.navigation"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.navigation.caption"/></p>
</div>
</div>
</div>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=navigation&amp;pageName=navigation" id="siteSkinHtml"></iframe>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=navigation&amp;pageName=navigation" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,81 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.satisfaction.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.satisfaction"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.satisfaction.caption"/></p>
</div>
</div>
</div>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=satisfaction&amp;pageName=satisfaction" id="siteSkinHtml"></iframe>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=satisfaction&amp;pageName=satisfaction" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,273 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.siteSkinCss.title"/></title>
<link rel="stylesheet" href="/codemirror/lib/codemirror.css">
<link rel="stylesheet" href="/codemirror/addon/dialog/dialog.css">
<link rel="stylesheet" href="/codemirror/addon/hint/show-hint.css">
<link rel="stylesheet" href="/codemirror/addon/display/fullscreen.css">
<link rel="stylesheet" href="//fonts.googleapis.com/earlyaccess/notosanskr.css">
<style>
<!--
body { margin:0; padding:0; }
textarea { border:1px solid #ddd; border-radius:5px; vertical-align:0;font-family:"돋움", "dotum"; font-size:12px;}
.CodeMirror {
height : 466px;
}
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
.cm-tab {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
background-position: right;
background-repeat: no-repeat;
}
-->
</style>
<!-- theme css -->
<link rel="stylesheet" href="/codemirror/theme/3024-day.css">
<link rel="stylesheet" href="/codemirror/theme/3024-night.css">
<link rel="stylesheet" href="/codemirror/theme/ambiance.css">
<link rel="stylesheet" href="/codemirror/theme/base16-dark.css">
<link rel="stylesheet" href="/codemirror/theme/base16-light.css">
<link rel="stylesheet" href="/codemirror/theme/blackboard.css">
<link rel="stylesheet" href="/codemirror/theme/cobalt.css">
<link rel="stylesheet" href="/codemirror/theme/eclipse.css">
<link rel="stylesheet" href="/codemirror/theme/elegant.css">
<link rel="stylesheet" href="/codemirror/theme/erlang-dark.css">
<link rel="stylesheet" href="/codemirror/theme/lesser-dark.css">
<link rel="stylesheet" href="/codemirror/theme/mbo.css">
<link rel="stylesheet" href="/codemirror/theme/midnight.css">
<link rel="stylesheet" href="/codemirror/theme/monokai.css">
<link rel="stylesheet" href="/codemirror/theme/neat.css">
<link rel="stylesheet" href="/codemirror/theme/night.css">
<link rel="stylesheet" href="/codemirror/theme/paraiso-dark.css">
<link rel="stylesheet" href="/codemirror/theme/paraiso-light.css">
<link rel="stylesheet" href="/codemirror/theme/rubyblue.css">
<link rel="stylesheet" href="/codemirror/theme/solarized.css">
<link rel="stylesheet" href="/codemirror/theme/the-matrix.css">
<link rel="stylesheet" href="/codemirror/theme/tomorrow-night-eighties.css">
<link rel="stylesheet" href="/codemirror/theme/twilight.css">
<link rel="stylesheet" href="/codemirror/theme/vibrant-ink.css">
<link rel="stylesheet" href="/codemirror/theme/xq-dark.css">
<link rel="stylesheet" href="/codemirror/theme/xq-light.css">
<!-- theme css -->
<script src="/codemirror/lib/codemirror.js"></script>
<script src="/codemirror/mode/xml/xml.js"></script>
<script src="/codemirror/addon/dialog/dialog.js"></script>
<script src="/codemirror/addon/search/searchcursor.js"></script>
<script src="/codemirror/addon/search/search.js"></script>
<script src="/codemirror/addon/fold/xml-fold.js"></script>
<script src="/codemirror/addon/edit/matchtags.js"></script>
<script src="/codemirror/addon/edit/closetag.js"></script>
<script src="/codemirror/addon/hint/show-hint.js"></script>
<script src="/codemirror/addon/hint/xml-hint.js"></script>
<script src="/codemirror/addon/hint/html-hint.js"></script>
<script src="/codemirror/mode/javascript/javascript.js"></script>
<script src="/codemirror/mode/css/css.js"></script>
<script src="/codemirror/mode/htmlmixed/htmlmixed.js"></script>
<script src="/codemirror/addon/display/fullscreen.js"></script>
<script src="/codemirror/mode/clike/clike.js"></script>
<script src="/codemirror/keymap/extra.js"></script>
<script src="/codemirror/addon/selection/active-line.js"></script>
<script src="/codemirror/addon/edit/matchbrackets.js"></script>
<script src="/codemirror/addon/zen/zen_codemirror.min.js"></script>
<script src="/js/cookie.js"></script>
<style>
html{overflow:hidden;}
body{background:#fff;}
</style>
</head>
<body>
<form:form name="frm" id="frm" method="post" action="/gtm/proc/${siteIdx}/siteSkinCssModProc.do">
<input type="hidden" name="pageType" id="pageType" value="<c:out escapeXml='true' value='${pageType}' />" />
<input type="hidden" name="pageName" id="pageName" value="<c:out escapeXml='true' value='${pageName}' />" />
<textarea name="siteSkinCss" id="siteSkinCss" style="display:none; "><c:out escapeXml='true' value='${siteSkinCss}' /></textarea>
<textarea name="codeTextArea" id="codeTextArea" style="height:500px; width:99%;"><c:out escapeXml='true' value='${siteSkinCss}' /></textarea>
<div class="layout-footer">
<div class="skin-list-box">
<label for="layout-skin-list" class="hidden">레이아웃 스킨 선택</label>
<select onchange="selectTheme()" id="select" class="layout-skin-list">
<option selected>default</option>
<option>3024-day</option>
<option>3024-night</option>
<option>ambiance</option>
<option>base16-dark</option>
<option>base16-light</option>
<option>blackboard</option>
<option>cobalt</option>
<option>eclipse</option>
<option>elegant</option>
<option>erlang-dark</option>
<option>lesser-dark</option>
<option>mbo</option>
<option>midnight</option>
<option>monokai</option>
<option>neat</option>
<option>night</option>
<option>paraiso-dark</option>
<option>paraiso-light</option>
<option>rubyblue</option>
<option>solarized dark</option>
<option>solarized light</option>
<option>the-matrix</option>
<option>tomorrow-night-eighties</option>
<option>twilight</option>
<option>vibrant-ink</option>
<option>xq-dark</option>
<option>xq-light</option>
</select>
</div>
</div>
<!--
///////////////
Crtl-E
toMatchingTag
Ctrl-Space
autocomplete
///////////////
/////////////// Search /////////////////
Ctrl-F / Cmd-F
Start searching
Ctrl-G / Cmd-G
Find next
Shift-Ctrl-G / Shift-Cmd-G
Find previous
Shift-Ctrl-F / Cmd-Option-F
Replace
Shift-Ctrl-R / Shift-Cmd-Option-F
Replace all
/////////////// Search /////////////////
/////////////// Full Screen ////////////
F11
Full Size
ESC
Full Not Size
/////////////// Full Screen ////////////
/////////// TAB Zen Coding/////////
http://docs.emmet.io/abbreviations/syntax/
/////////// TAB Zen Coding /////////
-->
</form:form>
<script>
/* <![CDATA[ */
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
var F11key = false;
$(".CodeMirror").keyup(function(e) {
if(e.keyCode == "122" || e.keyCode == "27"){
if(F11key == false){
if(e.keyCode == "122"){ //F11
parent.jf_eventF11('${siteLayOutPosition}');
F11key = true;
}else if(e.keyCode == "27"){ //ESC
parent.jf_eventEsc('${siteLayOutPosition}');
}
}else{
parent.jf_eventEsc('${siteLayOutPosition}');
F11key = false;
}
}
});
CodeMirror.commands.autocomplete = function(cm) {
CodeMirror.showHint(cm, CodeMirror.hint.javascript);
};
var editor = CodeMirror.fromTextArea(document.getElementById("codeTextArea"), {
value: "<html>\n " + document.documentElement.innerHTML + "\n</html>",
mode: "css",
lineNumbers: true,
lines : true,
matchTags: {bothTags: true},
extraKeys: {
"Ctrl-E": "toMatchingTag",
"Ctrl-Space": "autocomplete",
"F11": function(cm) {
if (cm.getOption("fullScreen")) {
cm.setOption("fullScreen", false);
window.parent.jf_eventEsc();
return;
}
cm.setOption("fullScreen", !cm.getOption("fullScreen"));
window.parent.jf_eventF11();
},
"Esc": function(cm) {
if (cm.getOption("fullScreen")) {
cm.setOption("fullScreen", false);
window.parent.jf_eventEsc();
}
}
},
autoCloseTags: true,
styleActiveLine: true,
matchBrackets: true,
syntax: 'css', /* define Zen Coding syntax */
// send all key events to Zen Coding
onKeyEvent: function() {
return zen_editor.handleKeyEvent.apply(zen_editor, arguments);
}
});
if( typeof window.parent.isFullScreen === 'function' && window.parent.isFullScreen() ){
window.parent.jf_eventF11('reload');
}
var input = document.getElementById("select");
function selectTheme() {
var theme = input.options[input.selectedIndex].innerHTML;
editor.setOption("theme", theme);
jf_setCookie("selectTheme", theme);
}
var choice = jf_getCookie("selectTheme");
if (choice != "") {
input.value = choice;
editor.setOption("theme", choice);
$("#select").val(choice).attr("selected", "selected");
}
function jf_submit(){
$("#siteSkinCss").val(editor.getValue());
$("#frm").submit();
}
function jf_codeSubmit(){
$("#siteSkinCss").val(editor.getValue());
}
function jf_codeSetSubmit(){
editor.setValue($("#siteSkinCss").val());
}
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,274 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.siteSkinHtml.title"/></title>
<link rel="stylesheet" href="/codemirror/lib/codemirror.css">
<link rel="stylesheet" href="/codemirror/addon/dialog/dialog.css">
<link rel="stylesheet" href="/codemirror/addon/hint/show-hint.css">
<link rel="stylesheet" href="/codemirror/addon/display/fullscreen.css">
<link rel="stylesheet" href="//fonts.googleapis.com/earlyaccess/notosanskr.css">
<style>
<!--
body { margin:0; padding:0; }
textarea { border:1px solid #ddd; border-radius:5px; vertical-align:0;font-family:"돋움", "dotum"; font-size:12px;}
.CodeMirror {
height : 466px;
}
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
.cm-tab {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
background-position: right;
background-repeat: no-repeat;
}
-->
</style>
<!-- theme css -->
<link rel="stylesheet" href="/codemirror/theme/3024-day.css">
<link rel="stylesheet" href="/codemirror/theme/3024-night.css">
<link rel="stylesheet" href="/codemirror/theme/ambiance.css">
<link rel="stylesheet" href="/codemirror/theme/base16-dark.css">
<link rel="stylesheet" href="/codemirror/theme/base16-light.css">
<link rel="stylesheet" href="/codemirror/theme/blackboard.css">
<link rel="stylesheet" href="/codemirror/theme/cobalt.css">
<link rel="stylesheet" href="/codemirror/theme/eclipse.css">
<link rel="stylesheet" href="/codemirror/theme/elegant.css">
<link rel="stylesheet" href="/codemirror/theme/erlang-dark.css">
<link rel="stylesheet" href="/codemirror/theme/lesser-dark.css">
<link rel="stylesheet" href="/codemirror/theme/mbo.css">
<link rel="stylesheet" href="/codemirror/theme/midnight.css">
<link rel="stylesheet" href="/codemirror/theme/monokai.css">
<link rel="stylesheet" href="/codemirror/theme/neat.css">
<link rel="stylesheet" href="/codemirror/theme/night.css">
<link rel="stylesheet" href="/codemirror/theme/paraiso-dark.css">
<link rel="stylesheet" href="/codemirror/theme/paraiso-light.css">
<link rel="stylesheet" href="/codemirror/theme/rubyblue.css">
<link rel="stylesheet" href="/codemirror/theme/solarized.css">
<link rel="stylesheet" href="/codemirror/theme/the-matrix.css">
<link rel="stylesheet" href="/codemirror/theme/tomorrow-night-eighties.css">
<link rel="stylesheet" href="/codemirror/theme/twilight.css">
<link rel="stylesheet" href="/codemirror/theme/vibrant-ink.css">
<link rel="stylesheet" href="/codemirror/theme/xq-dark.css">
<link rel="stylesheet" href="/codemirror/theme/xq-light.css">
<!-- theme css -->
<script src="/codemirror/lib/codemirror.js"></script>
<script src="/codemirror/mode/xml/xml.js"></script>
<script src="/codemirror/addon/dialog/dialog.js"></script>
<script src="/codemirror/addon/search/searchcursor.js"></script>
<script src="/codemirror/addon/search/search.js"></script>
<script src="/codemirror/addon/fold/xml-fold.js"></script>
<script src="/codemirror/addon/edit/matchtags.js"></script>
<script src="/codemirror/addon/edit/closetag.js"></script>
<script src="/codemirror/addon/hint/show-hint.js"></script>
<script src="/codemirror/addon/hint/xml-hint.js"></script>
<script src="/codemirror/addon/hint/html-hint.js"></script>
<script src="/codemirror/mode/javascript/javascript.js"></script>
<script src="/codemirror/mode/css/css.js"></script>
<script src="/codemirror/mode/htmlmixed/htmlmixed.js"></script>
<script src="/codemirror/addon/display/fullscreen.js"></script>
<script src="/codemirror/mode/clike/clike.js"></script>
<script src="/codemirror/keymap/extra.js"></script>
<script src="/codemirror/addon/selection/active-line.js"></script>
<script src="/codemirror/addon/edit/matchbrackets.js"></script>
<script src="/codemirror/addon/zen/zen_codemirror.min.js"></script>
<script src="/js/cookie.js"></script>
<style>
html{overflow:hidden;}
body{background:#fff;}
</style>
</head>
<body>
<form:form name="frm" id="frm" method="post" action="/gtm/proc/${siteIdx}/siteSkinHtmlModProc.do">
<input type="hidden" name="pageType" id="pageType" value="<c:out escapeXml='true' value='${pageType}' />" />
<input type="hidden" name="pageName" id="pageName" value="<c:out escapeXml='true' value='${pageName}' />" />
<textarea name="siteSkinHtml" id="siteSkinHtml" style="display:none; "><c:out escapeXml='true' value='${siteSkinHtml}' /></textarea>
<textarea name="codeTextArea" id="codeTextArea" style="height:500px; width:99%;"><c:out escapeXml='true' value='${siteSkinHtml}' /></textarea>
<div class="layout-footer">
<div class="skin-list-box">
<label for="layout-skin-list" class="hidden">레이아웃 스킨 선택</label>
<select onchange="selectTheme()" id="select" class="layout-skin-list">
<option selected>default</option>
<option>3024-day</option>
<option>3024-night</option>
<option>ambiance</option>
<option>base16-dark</option>
<option>base16-light</option>
<option>blackboard</option>
<option>cobalt</option>
<option>eclipse</option>
<option>elegant</option>
<option>erlang-dark</option>
<option>lesser-dark</option>
<option>mbo</option>
<option>midnight</option>
<option>monokai</option>
<option>neat</option>
<option>night</option>
<option>paraiso-dark</option>
<option>paraiso-light</option>
<option>rubyblue</option>
<option>solarized dark</option>
<option>solarized light</option>
<option>the-matrix</option>
<option>tomorrow-night-eighties</option>
<option>twilight</option>
<option>vibrant-ink</option>
<option>xq-dark</option>
<option>xq-light</option>
</select>
</div>
</div>
<!--
///////////////
Crtl-E
toMatchingTag
Ctrl-Space
autocomplete
///////////////
/////////////// Search /////////////////
Ctrl-F / Cmd-F
Start searching
Ctrl-G / Cmd-G
Find next
Shift-Ctrl-G / Shift-Cmd-G
Find previous
Shift-Ctrl-F / Cmd-Option-F
Replace
Shift-Ctrl-R / Shift-Cmd-Option-F
Replace all
/////////////// Search /////////////////
/////////////// Full Screen ////////////
F11
Full Size
ESC
Full Not Size
/////////////// Full Screen ////////////
/////////// TAB Zen Coding/////////
http://docs.emmet.io/abbreviations/syntax/
/////////// TAB Zen Coding /////////
-->
</form:form>
<script>
/* <![CDATA[ */
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
var F11key = false;
$(".CodeMirror").keyup(function(e) {
if(e.keyCode == "122" || e.keyCode == "27"){
if(F11key == false){
if(e.keyCode == "122"){ //F11
parent.jf_eventF11('${siteLayOutPosition}');
F11key = true;
}else if(e.keyCode == "27"){ //ESC
parent.jf_eventEsc('${siteLayOutPosition}');
}
}else{
parent.jf_eventEsc('${siteLayOutPosition}');
F11key = false;
}
}
});
CodeMirror.commands.autocomplete = function(cm) {
CodeMirror.showHint(cm, CodeMirror.hint.javascript);
};
var editor = CodeMirror.fromTextArea(document.getElementById("codeTextArea"), {
value: "<html>\n " + document.documentElement.innerHTML + "\n</html>",
mode: "text/html",
lineNumbers: true,
lines : true,
matchTags: {bothTags: true},
extraKeys: {
"Ctrl-E": "toMatchingTag",
"Ctrl-Space": "autocomplete",
"F11": function(cm) {
if (cm.getOption("fullScreen")) {
cm.setOption("fullScreen", false);
window.parent.jf_eventEsc();
return;
}
cm.setOption("fullScreen", !cm.getOption("fullScreen"));
window.parent.jf_eventF11();
},
"Esc": function(cm) {
if (cm.getOption("fullScreen")) {
cm.setOption("fullScreen", false);
window.parent.jf_eventEsc();
}
}
},
autoCloseTags: true,
styleActiveLine: true,
matchBrackets: true,
syntax: 'html', /* define Zen Coding syntax */
profile: 'xhtml', /* define Zen Coding output profile */
// send all key events to Zen Coding
onKeyEvent: function() {
return zen_editor.handleKeyEvent.apply(zen_editor, arguments);
}
});
if( typeof window.parent.isFullScreen === 'function' && window.parent.isFullScreen() ){
window.parent.jf_eventF11('reload');
}
var input = document.getElementById("select");
function selectTheme() {
var theme = input.options[input.selectedIndex].innerHTML;
editor.setOption("theme", theme);
jf_setCookie("selectTheme", theme);
}
var choice = jf_getCookie("selectTheme");
if (choice != "") {
input.value = choice;
editor.setOption("theme", choice);
$("#select").val(choice).attr("selected", "selected");
}
function jf_submit(){
$("#siteSkinHtml").val(editor.getValue());
$("#frm").submit();
}
function jf_codeSubmit(){
$("#siteSkinHtml").val(editor.getValue());
}
function jf_codeSetSubmit(){
editor.setValue($("#siteSkinHtml").val());
}
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,76 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.smartmenu.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.smartmenu"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.smartmenu.caption"/></p>
</div>
</div>
</div>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=smartmenu&amp;pageName=smartmenu" id="siteSkinHtml"></iframe>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=smartmenu&amp;pageName=smartmenu" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,104 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.statistics.statisticsList.title"/></title>
<script src="http://www.google.com/jsapi"></script>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.tab.siteMenuStatisticsList"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p>메뉴명, 메뉴설정, 메뉴타입, 담당자, 메뉴순서를 변경 할 수 있는 페이지입니다.</p>
</div>
</div>
</div>
</div>
<div class="more-btn-box">
<button type="button" id="moreTableItem" class="more-table-item">칼럼 더보기</button>
</div>
<div class="table-layout inner-br-none siteMenuList">
<table>
<caption><s:message code="manager.site.siteMenuList.table.caption"/></caption>
<colgroup>
<col class="title">
<col class="item-mobile-hidden">
<col class="item-tablet-hidden">
<col class="item-tablet-hidden">
<col class="item-mobile-hidden">
<col>
</colgroup>
<thead>
<tr>
<th scope="col"><s:message code="manager.site.siteMenuList.siteMenuName"/></th>
<th scope="col" class="item-mobile-hidden"><s:message code="manager.site.siteMenuList.siteMenuLink"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="manager.site.siteMenuList.siteMenuStatus"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="manager.site.siteMenuList.siteMenuIdx"/></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.regDate"/></th>
<th scope="col"><s:message code="manager.statistics.statisticsList.cnt"/></th>
</tr>
</thead>
<tbody>
<tr>
<td class="no-data-colspan"><c:out escapeXml='true' value='${siteName}' /></td>
</tr>
<c:forEach items="${siteMenuStatisticsList}" var="siteMenuStatisticsList" varStatus="status">
<tr>
<td class="al">
<c:choose>
<c:when test='${siteMenuStatisticsList._siteMenuNameType == "T"}'>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' /></span>
</c:when>
<c:otherwise>
<div>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><img src="/site/<c:out escapeXml='true' value='${siteIdx}' />/images/menu/topMenu_<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' />_off.gif" alt="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' />" width="150px" height="40px" /></span>
<br/>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><img src="/site/<c:out escapeXml='true' value='${siteIdx}' />/images/menu/topMenu_<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' />_on.gif" alt="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' />" width="150px" height="40px" /></span>
<c:if test='${siteMenuStatisticsList._siteMenuDepth > 1}'>
<br/>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><img src="/site/<c:out escapeXml='true' value='${siteIdx}' />/images/menu/subMenu_<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' />_off.gif" alt="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' />" width="150px" height="40px" /></span>
<br/>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><img src="/site/<c:out escapeXml='true' value='${siteIdx}' />/images/menu/subMenu_<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' />_on.gif" alt="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' />" width="150px" height="40px" /></span>
</c:if>
</div>
</c:otherwise>
</c:choose>
</td>
<td class="item-mobile-hidden"><a class="menu-barogagi" href="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuLinkUrl}' />" target="_blank"><span><img src="/img/icon-go.png" alt="메뉴 바로가기" class="go-btn">GO</span></a></td>
<td class="item-tablet-hidden">
<c:choose>
<c:when test="${siteMenuStatisticsList._siteMenuStatus == 'U'}">
<p class="menu-visible on"><span>ON</span></p>
</c:when>
<c:when test="${siteMenuStatisticsList._siteMenuStatus == 'S'}">
<p class="menu-visible off"><span>OFF</span></p>
</c:when>
</c:choose>
</td>
<td class="item-tablet-hidden"><c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' /></td>
<td class="item-mobile-hidden"><c:out escapeXml='true' value='${fn:substring(siteMenuStatisticsList._siteMenuRegDate, 0, 10)}' /></td>
<td><a class="menu-barogagi hover-link" href="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuLinkUrl}' />" target="_blank"><span><c:out escapeXml='true' value='${siteMenuStatisticsList._accessCount}' /></span></a></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="btn-area">
<a class="btn-normal lightgray" href="/gtm/proc/<c:out escapeXml='true' value='${siteIdx}' />/siteMenuStatisticsExcelList.do"><s:message code="common.button.excel"/></a>
</div>
</body>
</html>

View File

@ -0,0 +1,190 @@
<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.statistics.statisticsList.title"/></title>
<script src="/js/lib/google-loader.js"></script>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.tab.siteStatisticsList"/></h3>
<!-- <div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p>통계 그래프 확인</p>
</div>
</div> -->
</div>
<div class="sch-content-wrap clear">
<form:form name="frmSearch" id="frmSearch" action="/gtm/${siteIdx}/siteStatisticsList.do" method="post">
<input type="hidden" name="page" value="1" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="siteMenuIdx" value="<c:out escapeXml='true' value='${siteMenuIdx}' />"/>
<input type="hidden" name="menuCode" value="<c:out escapeXml='true' value='${menuCode}' />"/>
<fieldset>
<legend>검색 폼</legend>
<select name="year" id="yearStr" title="<s:message code="common.select.option.value"/>" class="sch-select">
</select>
<select name="month" id="monthStr" title="<s:message code="common.select.option.value"/>" class="sch-select">
<option value="1" <c:if test="${monthStr == '1'}">selected="selected"</c:if>>1월</option>
<option value="2" <c:if test="${monthStr == '2'}">selected="selected"</c:if>>2월</option>
<option value="3" <c:if test="${monthStr == '3'}">selected="selected"</c:if>>3월</option>
<option value="4" <c:if test="${monthStr == '4'}">selected="selected"</c:if>>4월</option>
<option value="5" <c:if test="${monthStr == '5'}">selected="selected"</c:if>>5월</option>
<option value="6" <c:if test="${monthStr == '6'}">selected="selected"</c:if>>6월</option>
<option value="7" <c:if test="${monthStr == '7'}">selected="selected"</c:if>>7월</option>
<option value="8" <c:if test="${monthStr == '8'}">selected="selected"</c:if>>8월</option>
<option value="9" <c:if test="${monthStr == '9'}">selected="selected"</c:if>>9월</option>
<option value="10" <c:if test="${monthStr == '10'}">selected="selected"</c:if>>10월</option>
<option value="11" <c:if test="${monthStr == '11'}">selected="selected"</c:if>>11월</option>
<option value="12" <c:if test="${monthStr == '12'}">selected="selected"</c:if>>12월</option>
</select>
<button type="submit" class="btn-page-sch"><s:message code="common.button.search"/></button>
</fieldset>
</form:form>
</div>
</div>
<div id="month_chart" class="chart"></div>
<div class="btn-area">
<a class="btn-normal lightgray" href="/gtm/proc/<c:out escapeXml='true' value='${siteIdx}' />/siteStatisticsExcelList.do?year=${yearStr}&amp;month=<c:out escapeXml='true' value='${monthStr}' />"><s:message code="common.button.excel"/></a>
</div>
<script>
/* <![CDATA[ */
var date = new Date();
for(var year=date.getFullYear(); (date.getFullYear()-10) <= (year+1); year--){
if("${yearStr}" == year){
$("#yearStr")[0].options.add(new Option(year, year, true, true));
}else{
$("#yearStr")[0].options.add(new Option(year, year));
}
}
function requireScript( array ){
// sync 메서드는 jquery.seed.js에 들어있습니다..
return $.sync( (function(){
var retrunArray = [];
for( var i = 0; i < array.length; i++ ){
retrunArray.push([ $.getScript, array[i] ]);
}
return retrunArray;
}()) );
}
function getRandomColor() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
requireScript(['/js/lib/raphael.min.js',
'/js/lib/morris.min.js']).done(function( str ){
$('.chart').children().add('.chart-list li').remove();
// 기본 색깔 순서입니다.
var colors = ['#838bd2', '#FDB45C', '#46BFBD', '#F7464A'];
if( colors.length <= ($('.site > li').length+1) )
{
var colorSize = ($('.site > li').length+1) - colors.length; // 사용 가능한 공간 + 1
while( colorSize-- )
colors.push( getRandomColor() );
}
/***********************************************************************************************
일별통계
************************************************************************************************/
;(function(){
var year = "<c:out escapeXml='true' value='${yearStr}' />";
var month = parseInt("<c:out escapeXml='true' value='${monthStr}' />");
var LineData = [];
var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ((year % 4 === 0) && (year % 100 !== 0) || (year % 400 === 0)) {
days[1] = 29; //윤년 체크
}
for(var d=1; d<=days[month-1]; d++){
var cnt = 0;
<c:forEach items="${siteStatisticsList}" var="siteStatisticsList" varStatus="status">
if(year == "${siteStatisticsList._accessYear}" &&
(month + '') == "${siteStatisticsList._accessMonth}" &&
d == "${siteStatisticsList._accessDay}"){
cnt += <c:out value='${siteStatisticsList._accessCount}' />;
}
</c:forEach>
LineData.push({ days: [year, month, d].join('-'), count: cnt});
}
var MorrisLine = Morris.Line({
element: 'month_chart',
data: LineData,
xkey: 'days',
ykeys: ['count'],
labels: ['<c:out escapeXml='true' value='${siteName}' />'],
dateFormat: function(x){
var date = new Date(x);
return date.getFullYear() + '년 ' + (date.getMonth()+1) + '월 ' + date.getDate() + '일';
},
lineWidth: 2,
resize: false,
grid: false,
//xLabelAngle: 45,
lineColors: colors
});
MorrisLine.displayHoverForRow(new Date().getDate() - 1);
// 레이블 생성
var chartDetailList = MorrisLine.el.parent().find('.chart-detail-list');
var labels = MorrisLine.options.labels;
chartDetailList.append(function(){
var fragment = $(document.createDocumentFragment());
for( var i = 0; i < labels.length; i++ ){
fragment.append(
$('<li></li>').append(
$('<h5></h5>')
.text( labels[i] )
.prepend( $('<i></i>').css({ backgroundColor: colors[i] }) )
)
)
}
return fragment;
});
$(window).doneEvent('resize.MorrisLine', function() { MorrisLine.redraw() });
}());
/***********************************************************************************************
일별통계 끝
************************************************************************************************/
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,536 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.visual.visualSetForm.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.visual.nav.visualSetView"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p></p>
</div>
</div>
</div>
</div>
<form:form id="frm" name="frm" action="/gtm/proc/${siteIdx}/visualSetRegProc.do" method="post" enctype="multipart/form-data">
<input type="hidden" name="tSite.siteIdx" id="siteIdx" value="<c:out escapeXml='true' value='${siteIdx}' />" />
<fieldset>
<legend><s:message code="manager.visual.visualSetForm.table.caption"/></legend>
<div class="bbs-view-layout">
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetType"/></p>
<div class="item-box">
<input type="radio" class="radio checked" name="visualSetType" id="visualSetTypeNormal" value="normal" checked /><label for="visualSetTypeNormal"><s:message code="manager.visual.visualSetForm.visualSetType.normal"/></label>
<input type="radio" class="radio" name="visualSetType" id="visualSetTypeActive" value="active" /><label for="visualSetTypeActive"><s:message code="manager.visual.visualSetForm.visualSetType.active"/></label>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetName"/></p>
<div class="item-box"><input type="text" class="width40 essential" maxlength="100" name="visualSetName" id="visualSetName" title="<s:message code="manager.visual.visualSetForm.visualSetName"/>" value="" required /></div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetRelation"/></p>
<div class="item-box"><input type="checkbox" class="checkbox width-none" name="visualSetRelation" id="visualSetRelation" value="Y" /><label for="visualSetRelation"><s:message code="common.message.checkbox.check"/></label></div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetTime"/></p>
<div class="item-box"><input type="text" class="width50px essential numOnly" maxlength="10" name="visualSetTime" id="visualSetTime" title="<s:message code="manager.visual.visualSetForm.visualSetTime"/>" value="4" style="width:50px;" required /></div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetSize"/></p>
<div class="item-box">
<div class="row"><s:message code="manager.visual.visualSetForm.visualSetWidth"/> <input type="text" class="width50px numOnly" name="visualSetWidth" id="visualSetWidth" title="<s:message code="manager.visual.visualSetForm.visualSetWidth"/>" value="" required /> px </div>
<div class="row"><s:message code="manager.visual.visualSetForm.visualSetHeight"/> <input type="text" class="width50px numOnly" name="visualSetHeight" id="visualSetHeight" title="<s:message code="manager.visual.visualSetForm.visualSetHeight"/>" value="" required /> px</div>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetBg"/></p>
<div class="item-box">
<input type="checkbox" class="checkbox width-none" name="visualSetBg" id="visualSetBg" value="Y" /><label for="visualSetBg"><s:message code="common.message.checkbox.check"/></label>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetChoice"/></p>
<div class="item-box">
<div style="margin-top:8px; margin-bottom:4px;">
<div class="row"><input type="radio" class="radio" name="visualSetChoiceTB" id="visualSetChoiceTop" value="top" /><label for="visualSetChoiceTop"><s:message code="manager.visual.visualSetForm.visualSetChoice.TB.top"/></label>
<input type="radio" class="radio" name="visualSetChoiceTB" id="visualSetChoiceBottom" value="bottom" /><label for="visualSetChoiceBottom"><s:message code="manager.visual.visualSetForm.visualSetChoice.TB.bottom"/></label></div>
<div class="row"><s:message code="manager.visual.visualSetForm.visualSetChoice.TB.position"/> <input type="text" class="width50px essential numOnly" name="visualSetChoiceTBPosition" id="visualSetChoiceTBPosition" title="<s:message code="manager.visual.visualSetForm.visualSetChoice.TB.position"/>" value="" required /> px</div>
</div>
<div style="margin-top:12px; margin-bottom:10px;">
<div class="row"><input type="radio" class="radio" name="visualSetChoiceLR" id="visualSetChoiceLeft" value="left" /><label for="visualSetChoiceLeft"><s:message code="manager.visual.visualSetForm.visualSetChoice.LR.left"/></label>
<input type="radio" class="radio" name="visualSetChoiceLR" id="visualSetChoiceRight" value="right" /><label for="visualSetChoiceRight"><s:message code="manager.visual.visualSetForm.visualSetChoice.LR.right"/></label><br /></div>
<div class="row"><s:message code="manager.visual.visualSetForm.visualSetChoice.LR.position"/> <input type="text" class="width50px essential numOnly" name="visualSetChoiceLRPosition" id="visualSetChoiceLRPosition" title="<s:message code="manager.visual.visualSetForm.visualSetChoice.LR.position"/>" value="" required /> px</div>
</div>
<div class="row"><input type="file" name="file_visualSetChoiceImgOn" id="visualSetChoiceImgOn" value="" /><label for="visualSetChoiceImgOn"><s:message code="manager.visual.visualSetForm.visualSetChoice.img.on"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetChoice.img.on"/></span></div>
<div class="row"><input type="file" name="file_visualSetChoiceImgOver" id="visualSetChoiceImgOver" value="" /><label for="visualSetChoiceImgOver"><s:message code="manager.visual.visualSetForm.visualSetChoice.img.over"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetChoice.img.over"/></span></div>
<div class="row"><input type="file" name="file_visualSetChoiceImgOff" id="visualSetChoiceImgOff" value="" /><label for="visualSetChoiceImgOff"><s:message code="manager.visual.visualSetForm.visualSetChoice.img.off"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetChoice.img.off"/></span></div>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetPS"/></p>
<div class="item-box">
<div style="margin-top:8px; margin-bottom:10px;">
<div class="row"><input type="radio" class="radio" name="visualSetPSTB" id="visualSetPSTop" value="top" /><label for="visualSetPSTop"><s:message code="manager.visual.visualSetForm.visualSetPS.TB.top"/></label>
<input type="radio" class="radio" name="visualSetPSTB" id="visualSetPSBottom" value="bottom" /><label for="visualSetPSBottom"><s:message code="manager.visual.visualSetForm.visualSetPS.TB.bottom"/></label><br /></div>
<div class="row"><label for="visualSetPSTBPosition"><s:message code="manager.visual.visualSetForm.visualSetPS.TB.position"/></label> : <input type="text" class="width50px essential numOnly" name="visualSetPSTBPosition" id="visualSetPSTBPosition" title="<s:message code="manager.visual.visualSetForm.visualSetPS.TB.position"/>" value="" required /> px</div>
</div>
<div style="margin-top:12px; margin-bottom:10px;">
<div class="row"><input type="radio" class="radio" name="visualSetPSLR" id="visualSetPSLeft" value="left" /><label for="visualSetPSLeft"><s:message code="manager.visual.visualSetForm.visualSetPS.LR.left"/></label>
<input type="radio" class="radio" name="visualSetPSLR" id="visualSetPSRight" value="right" /><label for="visualSetPSRight"><s:message code="manager.visual.visualSetForm.visualSetPS.LR.right"/></label><br /></div>
<div class="row"><label for="visualSetPSLRPosition"><s:message code="manager.visual.visualSetForm.visualSetPS.LR.position"/></label> : <input type="text" class="width50px essential numOnly" name="visualSetPSLRPosition" id="visualSetPSLRPosition" title="<s:message code="manager.visual.visualSetForm.visualSetPS.LR.position"/>" value="" required /> px</div>
</div>
<div class="row"><input type="file" name="file_visualSetPlayImgOn" id="visualSetPlayImgOn" value="" /><label for="visualSetPlayImgOn"><s:message code="manager.visual.visualSetForm.visualSetPS.play.img.on"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetPS.play.img.on"/></span></div>
<div class="row"><input type="file" name="file_visualSetPlayImgOff" id="visualSetPlayImgOff" value="" /><label for="visualSetPlayImgOff"><s:message code="manager.visual.visualSetForm.visualSetPS.play.img.off"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetPS.play.img.off"/></span></div>
<div class="row"><input type="file" name="file_visualSetStopImgOn" id="visualSetStopImgOn" value="" /><label for="visualSetStopImgOn"><s:message code="manager.visual.visualSetForm.visualSetPS.stop.img.on"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetPS.stop.img.on"/></span></div>
<div class="row"><input type="file" name="file_visualSetStopImgOff" id="visualSetStopImgOff" value="" /><label for="visualSetStopImgOff"><s:message code="manager.visual.visualSetForm.visualSetPS.stop.img.off"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetPS.stop.img.off"/></span></div>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetPN"/></p>
<div class="item-box">
<div style="margin-top:8px; margin-bottom:10px;">
<div class="row"><input type="radio" class="radio" name="visualSetPreTB" id="visualSetPreTop" value="top" /><label for="visualSetPreTop"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.top"/></label>
<input type="radio" class="radio" name="visualSetPreTB" id="visualSetPreBottom" value="bottom" /><label for="visualSetPreBottom"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.bottom"/></label></div>
<div class="row"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.position"/> <input type="text" class="width50px essential numOnly" name="visualSetPreTBPosition" id="visualSetPreTBPosition" value="" required /> px</div>
</div>
<div style="margin-top:12px; margin-bottom:10px;">
<div class="row"><input type="radio" class="radio" name="visualSetPreLR" id="visualSetPreLeft" value="left" /><label for="visualSetPreLeft"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.left"/></label>
<input type="radio" class="radio" name="visualSetPreLR" id="visualSetPreRight" value="right" /><label for="visualSetPreRight"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.right"/></label></div>
<div class="row"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.position"/> <input type="text" class="width50px essential numOnly" name="visualSetPreLRPosition" id="visualSetPreLRPosition" value="" required /> px</div>
</div>
<div class="row"><input type="file" name="file_visualSetPreImgOn" id="visualSetPreImgOn" value="" /><label for="visualSetPreImgOn"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.img.on"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.img.on"/></span></div>
<div class="row"><input type="file" name="file_visualSetPreImgOff" id="visualSetPreImgOff" value="" /><label for="visualSetPreImgOff"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.img.off"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetPN.pre.img.off"/></span></div>
<div style="margin-top:8px; margin-bottom:10px;">
<div class="row"><input type="radio" class="radio" name="visualSetNextTB" id="visualSetNextTop" value="top" /><label for="visualSetNextTop"><s:message code="manager.visual.visualSetForm.visualSetPN.next.top"/></label>
<input type="radio" class="radio" name="visualSetNextTB" id="visualSetNextBottom" value="bottom" /><label for="visualSetNextBottom"><s:message code="manager.visual.visualSetForm.visualSetPN.next.bottom"/></label></div>
<div class="row"><s:message code="manager.visual.visualSetForm.visualSetPN.next.position"/> <input type="text" class="width50px essential numOnly" name="visualSetNextTBPosition" id="visualSetNextTBPosition" value="" required /> px</div>
</div>
<div style="margin-top:12px; margin-bottom:10px;">
<div class="row"><input type="radio" class="radio" name="visualSetNextLR" id="visualSetNextLeft" value="left" /><label for="visualSetNextLeft"><s:message code="manager.visual.visualSetForm.visualSetPN.next.left"/></label>
<input type="radio" class="radio" name="visualSetNextLR" id="visualSetNextRight" value="right" /><label for="visualSetNextRight"><s:message code="manager.visual.visualSetForm.visualSetPN.next.right"/></label><br /></div>
<div class="row"><s:message code="manager.visual.visualSetForm.visualSetPN.next.position"/> <input type="text" class="width50px essential numOnly" name="visualSetNextLRPosition" id="visualSetNextLRPosition" value="" required /> px</div>
</div>
<div class="row"><input type="file" name="file_visualSetNextImgOn" id="visualSetNextImgOn" value="" /><label for="visualSetNextImgOn"><s:message code="manager.visual.visualSetForm.visualSetPN.next.img.on"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetPN.next.img.on"/></span></div>
<div class="row"><input type="file" name="file_visualSetNextImgOff" id="visualSetNextImgOff" value="" /><label for="visualSetNextImgOff"><s:message code="manager.visual.visualSetForm.visualSetPN.next.img.off"/></label><span class="file-info"><s:message code="manager.visual.visualSetForm.visualSetPN.next.img.off"/></span></div>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSetSkin"/></p>
<div class="item-box">
<input type="radio" class="radio checked" name="visualSetSkin" id="visualSetSkinA" value="A" checked /><label for="visualSetSkinA">A Type</label>
<input type="radio" class="radio" name="visualSetSkin" id="visualSetSkinB" value="B" /><label for="visualSetSkinB">B Type</label>
</div>
</div>
<div class="bbs-view-item">
<p class="item-title"><s:message code="manager.visual.visualSetForm.visualSet.preview"/></p>
<div class="item-box">
<iframe id="visualPreview" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualFormPreview.do?visualSetSkin=A" style="width:100%; height:320px; border:0;"></iframe>
</div>
</div>
</div>
</fieldset>
<c:if test='${memberGrant == "S" || memberAuth}'>
<div class="btn-area">
<button type="submit" class="btn-normal violet"><s:message code="common.button.save"/></button>
<a class="btn-normal lightgray" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do"><s:message code="common.button.list"/></a>
</div>
</c:if>
</form:form>
<script>
/* <![CDATA[ */
$("#visualSetName").focus();
$("#visualSetWidth").keyup(function(){
var value = parseInt($(this).val(),10);
$("#visualPreview").contents().find("#visual_visual").css({width :value});
$("#visualPreview").contents().find("#slides_visual").css({width :value});
$("#visualPreview").contents().find(".slidesjs-container").css({width :value});
$("#visualPreview").contents().find(".slidesjs-control").css({width :value});
$("#visualPreview").contents().find(".slidesjs-slide").css({width :value});
});
$("#visualSetHeight").keyup(function(){
var value = parseInt($(this).val(),10);
$("#visualPreview").contents().find("#visual_visual").css({height :value});
$("#visualPreview").contents().find("#slides_visual").css({height :value});
$("#visualPreview").contents().find(".slidesjs-container").css({height :value});
$("#visualPreview").contents().find(".slidesjs-control").css({height :value});
$("#visualPreview").contents().find(".slidesjs-slide").css({height :value});
});
$("#visualSetChoiceTBPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="visualSetChoiceTB"]:radio:checked').val() == "top"){
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css("bottom", "auto");
}else if($('input[name="visualSetChoiceTB"]:radio:checked').val() == "bottom"){
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css("top", "auto");
}
});
$('input[name="visualSetChoiceTB"]').click(function(){
var value = parseInt($("#visualSetChoiceTBPosition").val(),10);
if($('input[name="visualSetChoiceTB"]:radio:checked').val() == "top"){
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css("bottom", "auto");
}else if($('input[name="visualSetChoiceTB"]:radio:checked').val() == "bottom"){
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css("top", "auto");
}
});
$("#visualSetChoiceLRPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="visualSetChoiceLR"]:radio:checked').val() == "left"){
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css("right", "auto");
}else if($('input[name="visualSetChoiceLR"]:radio:checked').val() == "right"){
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css("left", "auto");
}
});
$('input[name="visualSetChoiceLR"]').click(function(){
var value = parseInt($("#visualSetChoiceLRPosition").val(),10);
if($('input[name="visualSetChoiceLR"]:radio:checked').val() == "left"){
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css("right", "auto");
}else if($('input[name="visualSetChoiceLR"]:radio:checked').val() == "right"){
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-pagination_visual").css("left", "auto");
}
});
$("#visualSetPSTBPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="visualSetPSTB"]:radio:checked').val() == "top"){
$("#visualPreview").contents().find(".slidesjs-play_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-play_visual").css("bottom", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css({top :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css("bottom", "auto");
$("#visualPreview").contents().find(".slidesjs-stop_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-stop_visual").css("bottom", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css({top :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css("bottom", "auto");
}else if($('input[name="visualSetPSTB"]:radio:checked').val() == "bottom"){
$("#visualPreview").contents().find(".slidesjs-play_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-play_visual").css("top", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css({bottom :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css("top", "auto");
$("#visualPreview").contents().find(".slidesjs-stop_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-stop_visual").css("top", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css({bottom :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css("top", "auto");
}
});
$('input[name="visualSetPSTB"]').click(function(){
var value = parseInt($("#visualSetPSTBPosition").val(),10);
if($('input[name="visualSetPSTB"]:radio:checked').val() == "top"){
$("#visualPreview").contents().find(".slidesjs-play_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-play_visual").css("bottom", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css({top :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css("bottom", "auto");
$("#visualPreview").contents().find(".slidesjs-stop_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-stop_visual").css("bottom", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css({top :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css("bottom", "auto");
}else if($('input[name="visualSetPSTB"]:radio:checked').val() == "bottom"){
$("#visualPreview").contents().find(".slidesjs-play_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-play_visual").css("top", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css({bottom :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css("top", "auto");
$("#visualPreview").contents().find(".slidesjs-stop_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-stop_visual").css("top", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css({bottom :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css("top", "auto");
}
});
$("#visualSetPSLRPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="visualSetPSLR"]:radio:checked').val() == "left"){
$("#visualPreview").contents().find(".slidesjs-play_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-play_visual").css("right", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css({left :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css("right", "auto");
$("#visualPreview").contents().find(".slidesjs-stop_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-stop_visual").css("right", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css({left :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css("right", "auto");
}else if($('input[name="visualSetPSLR"]:radio:checked').val() == "right"){
$("#visualPreview").contents().find(".slidesjs-play_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-play_visual").css("left", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css({right :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css("left", "auto");
$("#visualPreview").contents().find(".slidesjs-stop_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-stop_visual").css("left", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css({right :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css("left", "auto");
}
});
$('input[name="visualSetPSLR"]').click(function(){
var value = parseInt($("#visualSetPSLRPosition").val(),10);
if($('input[name="visualSetPSLR"]:radio:checked').val() == "left"){
$("#visualPreview").contents().find(".slidesjs-play_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-play_visual").css("right", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css({left :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css("right", "auto");
$("#visualPreview").contents().find(".slidesjs-stop_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-stop_visual").css("right", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css({left :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css("right", "auto");
}else if($('input[name="visualSetPSLR"]:radio:checked').val() == "right"){
$("#visualPreview").contents().find(".slidesjs-play_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-play_visual").css("left", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css({right :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-play_visual").css("left", "auto");
$("#visualPreview").contents().find(".slidesjs-stop_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-stop_visual").css("left", "auto");
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css({right :value});
//$("#visualPreview").contents().find(".a:hover.slidesjs-stop_visual").css("left", "auto");
}
});
$("#visualSetPreTBPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="visualSetPreTB"]:radio:checked').val() == "top"){
$("#visualPreview").contents().find(".slidesjs-previous_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-previous_visual").css("bottom", "auto");
}else if($('input[name="visualSetPreTB"]:radio:checked').val() == "bottom"){
$("#visualPreview").contents().find(".slidesjs-previous_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-previous_visual").css("top", "auto");
}
});
$('input[name="visualSetPreTB"]').click(function(){
var value = parseInt($("#visualSetPreTBPosition").val(),10);
if($('input[name="visualSetPreTB"]:radio:checked').val() == "top"){
$("#visualPreview").contents().find(".slidesjs-previous_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-previous_visual").css("bottom", "auto");
}else if($('input[name="visualSetPreTB"]:radio:checked').val() == "bottom"){
$("#visualPreview").contents().find(".slidesjs-previous_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-previous_visual").css("top", "auto");
}
});
$("#visualSetPreLRPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="visualSetPreLR"]:radio:checked').val() == "left"){
$("#visualPreview").contents().find(".slidesjs-previous_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-previous_visual").css("right", "auto");
}else if($('input[name="visualSetPreLR"]:radio:checked').val() == "right"){
$("#visualPreview").contents().find(".slidesjs-previous_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-previous_visual").css("left", "auto");
}
});
$('input[name="visualSetPreLR"]').click(function(){
var value = parseInt($("#visualSetPreLRPosition").val(),10);
if($('input[name="visualSetPreLR"]:radio:checked').val() == "left"){
$("#visualPreview").contents().find(".slidesjs-previous_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-previous_visual").css("right", "auto");
}else if($('input[name="visualSetPreLR"]:radio:checked').val() == "right"){
$("#visualPreview").contents().find(".slidesjs-previous_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-previous_visual").css("left", "auto");
}
});
$("#visualSetNextTBPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="visualSetNextTB"]:radio:checked').val() == "top"){
$("#visualPreview").contents().find(".slidesjs-next_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-next_visual").css("bottom", "auto");
}else if($('input[name="visualSetNextTB"]:radio:checked').val() == "bottom"){
$("#visualPreview").contents().find(".slidesjs-next_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-next_visual").css("top", "auto");
}
});
$('input[name="visualSetNextTB"]').click(function(){
var value = parseInt($("#visualSetNextTBPosition").val(),10);
if($('input[name="visualSetNextTB"]:radio:checked').val() == "top"){
$("#visualPreview").contents().find(".slidesjs-next_visual").css({top :value});
$("#visualPreview").contents().find(".slidesjs-next_visual").css("bottom", "auto");
}else if($('input[name="visualSetNextTB"]:radio:checked').val() == "bottom"){
$("#visualPreview").contents().find(".slidesjs-next_visual").css({bottom :value});
$("#visualPreview").contents().find(".slidesjs-next_visual").css("top", "auto");
}
});
$("#visualSetNextLRPosition").keyup(function(){
var value = parseInt($(this).val(),10);
if($('input[name="visualSetNextLR"]:radio:checked').val() == "left"){
$("#visualPreview").contents().find(".slidesjs-next_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-next_visual").css("right", "auto");
}else if($('input[name="visualSetNextLR"]:radio:checked').val() == "right"){
$("#visualPreview").contents().find(".slidesjs-next_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-next_visual").css("left", "auto");
}
});
$('input[name="visualSetNextLR"]').click(function(){
var value = parseInt($("#visualSetNextLRPosition").val(),10);
if($('input[name="visualSetNextLR"]:radio:checked').val() == "left"){
$("#visualPreview").contents().find(".slidesjs-next_visual").css({left :value});
$("#visualPreview").contents().find(".slidesjs-next_visual").css("right", "auto");
}else if($('input[name="visualSetNextLR"]:radio:checked').val() == "right"){
$("#visualPreview").contents().find(".slidesjs-next_visual").css({right :value});
$("#visualPreview").contents().find(".slidesjs-next_visual").css("left", "auto");
}
});
$("input[name=visualSetSkin]").change(function() {
var visualSetSkin = $(this).val();
$("#visualPreview").attr("src", "/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualFormPreview.do?visualSetSkin="+visualSetSkin);
});
$("input[name=visualSetType]").click(function() {
if($(this).val() == "normal"){
location.replace("/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetForm.do");
}else{
location.replace("/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetFormActive.do");
}
});
$("#frm").submit(function(){
if($("#visualSetName").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetName"/> <s:message code="common.message.essential"/>");
$("#visualSetName").focus();
return false;
}else if($("#visualSetWidth").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetSize"/> <s:message code="manager.visual.visualSetForm.visualSetWidth"/> <s:message code="common.message.essential"/>");
$("#visualSetWidth").focus();
return false;
}else if($("#visualSetHeight").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetSize"/> <s:message code="manager.visual.visualSetForm.visualSetHeight"/> <s:message code="common.message.essential"/>");
$("#visualSetHeight").focus();
return false;
}
if($('input[name="visualSetChoiceTB"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetChoice"/> <s:message code="common.message.essential"/>");
return false;
}
if($('input[name="visualSetChoiceLR"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetChoice"/> <s:message code="common.message.essential"/>");
return false;
}
if($("#visualSetChoiceTBPosition").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetChoice.TB.position"/> <s:message code="common.message.essential"/>");
$("#visualSetChoiceTBPosition").focus();
return false;
}else if($("#visualSetChoiceLRPosition").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetChoice.LR.position"/> <s:message code="common.message.essential"/>");
$("#visualSetChoiceLRPosition").focus();
return false;
}
if($('input[name="visualSetPSTB"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetPS"/> <s:message code="common.message.essential"/>");
return false;
}
if($('input[name="visualSetPSLR"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetPS"/> <s:message code="common.message.essential"/>");
return false;
}
if($("#visualSetPSTBPosition").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetPS.TB.position"/> <s:message code="common.message.essential"/>");
$("#visualSetPSTBPosition").focus();
return false;
}else if($("#visualSetPSLRPosition").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetPS.LR.position"/> <s:message code="common.message.essential"/>");
$("#visualSetPSLRPosition").focus();
return false;
}
if($('input[name="visualSetPreTB"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetPN"/> <s:message code="common.message.essential"/>");
return false;
}
if($('input[name="visualSetPreLR"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetPN"/> <s:message code="common.message.essential"/>");
return false;
}
if($('input[name="visualSetNextTB"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetPN"/> <s:message code="common.message.essential"/>");
return false;
}
if($('input[name="visualSetNextLR"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetPN"/> <s:message code="common.message.essential"/>");
return false;
}
if($("#visualSetPreTBPosition").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetPN.pre.position"/> <s:message code="common.message.essential"/>");
$("#visualSetPreTBPosition").focus();
return false;
}else if($("#visualSetPreLRPosition").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetPN.pre.position"/> <s:message code="common.message.essential"/>");
$("#visualSetPreLRPosition").focus();
return false;
}else if($("#visualSetNextTBPosition").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetPN.next.position"/> <s:message code="common.message.essential"/>");
$("#visualSetNextTBPosition").focus();
return false;
}else if($("#visualSetNextLRPosition").val() == ""){
alert("<s:message code="manager.visual.visualSetForm.visualSetPN.next.position"/> <s:message code="common.message.essential"/>");
$("#visualSetNextLRPosition").focus();
return false;
}
if($('input[name="visualSetSkin"]:radio:checked').length == 0){
alert("<s:message code="manager.visual.visualSetForm.visualSetSkin"/> <s:message code="common.message.essential"/>");
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,215 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.visual.visualSetPreview.title"/></title>
<script src="/js/lib/jquery.slides.min.js"></script>
<style>
#visual {
display: none;
position:relative;
}
a.slidesjs-next_visual {
position:absolute;
top:140px;
right:0px;
width:12px;
height:18px;
background-image: url("/img/manager/visual/btn_next.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a:hover.slidesjs-next_visual {
position:absolute;
top:140px;
right:0px;
width:12px;
height:18px;
background-image: url("/img/manager/visual/btn_next_over.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a.slidesjs-previous_visual {
position:absolute;
top:140px;
left:0px;
width:12px;
height:18px;
background-image: url("/img/manager/visual/btn_pre.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a:hover.slidesjs-previous_visual {
position:absolute;
top:140px;
left:0px;
width:12px;
height:18px;
background-image: url("/img/manager/visual/btn_pre_over.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a.slidesjs-play_visual {
position:absolute;
top:10px;
right:10px;
width:16px;
height:18px;
background-image: url("/img/manager/visual/btn_play.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a:hover.slidesjs-play_visual {
position:absolute;
top:10px;
right:10px;
width:16px;
height:18px;
background-image: url("/img/manager/visual/btn_play_over.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a.slidesjs-stop_visual {
position:absolute;
top:10px;
right:10px;
width:18px;
height:17px;
background-image: url("/img/manager/visual/btn_stop.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a:hover.slidesjs-stop_visual {
position:absolute;
top:10px;
right:10px;
width:18px;
height:17px;
background-image: url("/img/manager/visual/btn_stop_over.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
.slidesjs-pagination_visual {
font-size:0;
position:absolute;
bottom:10px;
right:10px;
z-index:9999;
float: left;
list-style: none;
padding:0;
margin:0;
}
.slidesjs-pagination_visual li {
display:inline;
padding:0;
}
.slidesjs-pagination_visual li a {
float: left;
width: 13px;
height: 13px;
z-index:9999;
background-image: url("/img/manager/visual/btn_pagination_off.png");
overflow: hidden;
}
.slidesjs-pagination_visual li a:hover {
width: 13px;
height: 13px;
z-index:9999;
background-image: url("/img/manager/visual/btn_pagination_over.png");
}
.slidesjs-pagination_visual li a.active,
.slidesjs-pagination_visual li a:hover.active {
width: 13px;
height: 13px;
z-index:9999;
background-image: url("/img/manager/visual/btn_pagination_on.png");
}
</style>
</head>
<body>
<div id="visual" style="width:650px; height:300px; display: none; position:relative;">
<img src="/img/manager/visual/example-slide-1.jpg" width="650px" height="300px" alt="visual1" />
<img src="/img/manager/visual/example-slide-2.jpg" width="650px" height="300px" alt="visual2" />
<img src="/img/manager/visual/example-slide-3.jpg" width="650px" height="300px" alt="visual3" />
</div>
<script>
/* <![CDATA[ */
var visualSetSkin = "";
<c:choose>
<c:when test='${visualSetSkin == "A"}'>
visualSetSkin = "fade";
</c:when>
<c:when test='${visualSetSkin == "B"}'>
visualSetSkin = "slide";
</c:when>
</c:choose>
$('#visual').slidesjs({
width:650,
height:300,
autoHeight: false,
dataKey : "visual",
play: {
active: true,
auto: true,
interval: 4000,
swap: true,
restartDelay: 2500,
effect: visualSetSkin
},
navigation: {
effect: visualSetSkin
},
pagination: {
effect: visualSetSkin
},
effect: {
fade: {
speed: 400
}
}
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,266 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.visual.visualSetList.title"/></title>
<script src="/js/lib/base64.js"></script>
</head>
<body>
<c:if test='${(siteMenuIdx != "0" && menuCode == "N") || menuCode == "visual"}'>
<div class="seed-popup-wrap">
</c:if>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.visual.nav.visualSetList"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p></p>
</div>
</div>
</div>
<div class="sch-content-wrap clear">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<c:url var="actionUrl" value="/gtm/${siteIdx}/visualSetList.do" />
</c:when>
<c:otherwise>
<c:url var="actionUrl" value="/menu/${siteIdx}/visualSetList.do" />
</c:otherwise>
</c:choose>
<form:form name="frmSearch" id="frmSearch" action="${actionUrl}" method="post">
<input type="hidden" name="page" value="1" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="siteMenuIdx" value="<c:out escapeXml='true' value='${siteMenuIdx}' />"/>
<input type="hidden" name="menuCode" value="<c:out escapeXml='true' value='${menuCode}' />"/>
<fieldset>
<legend>검색 폼</legend>
<select name="column" id="column" title="<s:message code="common.select.option.value"/>" class="sch-select">
<option value="A" <c:if test="${column == 'A'}">selected="selected"</c:if>><s:message code="common.select.option.value.all"/></option>
<option value="visualSetName" <c:if test="${column == 'visualSetName'}">selected="selected"</c:if>><s:message code="manager.visual.visualSetList.visualSetName"/></option>
<option value="tMember.memberName" <c:if test="${column == 'tMember.memberName'}">selected="selected"</c:if>><s:message code="common.memberName"/></option>
</select>
<input type="search" name="search" id="search" value="<c:out escapeXml='true' value='${search}' />" title="<s:message code="common.search.value"/>" class="sch-text">
<button type="submit" class="btn-page-sch"><s:message code="common.button.search"/></button>
</fieldset>
</form:form>
</div>
</div>
<form:form name="frm" id="frm" method="post" action="/gtm/proc/${siteIdx}/visualSetStatusProc.do">
<input type="hidden" name="page" value="<c:out escapeXml='true' value='${page}' />" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="column" value="<c:out escapeXml='true' value='${column}' />" />
<input type="hidden" name="search" value="<c:out escapeXml='true' value='${search}' />" />
<div class="more-btn-box">
<button type="button" id="moreTableItem" class="more-table-item">칼럼 더보기</button>
</div>
<div class="form-wrap">
<div class="table-layout br-none">
<table>
<caption><s:message code="manager.visual.visualSetList.table.caption"/></caption>
<colgroup>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><col class="small_checkbox"></c:if>
<col class="title">
<col>
<col class="item-tablet-hidden">
<col class="item-mobile-hidden">
<col class="item-mobile-hidden">
</colgroup>
<thead>
<tr>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><th scope="col"><input type="checkbox" class="checkbox check-all" name="allcheck" id="allcheck" title="<s:message code="common.message.allCheck"/>" /><label for="allcheck"></label></th></c:if>
<th scope="col"><s:message code="manager.visual.visualSetList.visualSetName"/>&nbsp;&nbsp;<span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col"><s:message code="manager.visual.visualSetList.visualDataCnt"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="common.memberName"/>&nbsp;&nbsp;<span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=tMember.memberName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=tMember.memberName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.regDate"/>&nbsp;&nbsp;<span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetRegDate&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetRegDate&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.status"/>&nbsp;&nbsp;<span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetStatus&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetStatus&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty visualSetList}">
<c:forEach items="${visualSetList}" var="visualSetList" varStatus="status">
<tr>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><td><input type="checkbox" class="checkbox check-base" name="idxs" id="visual_${visualSetList._visualSetIdx}" value="<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />" /><label for="visual_${visualSetList._visualSetIdx}"></label> ${visualSetListCnt - (page-1)*row - status.index}</td></c:if>
<td class="al">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<c:choose>
<c:when test='${visualSetList._visualSetType == "normal"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetEdit/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />"><span><c:out escapeXml='true' value='${visualSetList._visualSetName}' /></span></a>
</c:when>
<c:when test='${visualSetList._visualSetType == "active"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetEditActive/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />"><span><c:out escapeXml='true' value='${visualSetList._visualSetName}' /></span></a>
</c:when>
</c:choose>
</c:when>
<c:when test='${menuCode == "visual"}'>
<a class="hover-link codeClick" href="/<c:out escapeXml='true' value='${siteIdx}' />/<c:out escapeXml='true' value='${menuCode}' />/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />/mini.do" data-seed="${visualSetList._visualSetRelation}:<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />"><span><c:out escapeXml='true' value='${visualSetList._visualSetName}' /></span></a>
</c:when>
</c:choose>
</td>
<td>
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />/visualDataList.do"><span><c:out escapeXml='true' value='${visualSetList._visualDataIdxCnt}' /></span></a>
</c:when>
<c:otherwise>
<c:out escapeXml='true' value='${visualSetList._visualDataIdxCnt}' />
</c:otherwise>
</c:choose>
</td>
<td class="item-tablet-hidden"><c:out escapeXml='true' value='${visualSetList._memberName}' />(<c:out escapeXml='true' value='${visualSetList._memberId}' />)</td>
<td class="item-mobile-hidden">${fn:substring(visualSetList._visualSetRegDate, 0, 10)}</td>
<c:choose>
<c:when test="${visualSetList._visualSetStatus == 'U'}">
<td class="item-mobile-hidden skin-default"><s:message code="common.use"/></td>
</c:when>
<c:when test="${visualSetList._visualSetStatus == 'S'}">
<td class="state-stop item-mobile-hidden"><s:message code="common.stop"/></td>
</c:when>
<c:when test="${visualSetList._visualSetStatus == 'D'}">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<td class="state-delete item-mobile-hidden">
<a class="dataDel" href="/gtm/proc/<c:out escapeXml='true' value='${siteIdx}' />/visualSetDelProc/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><s:message code="common.button.del"/></a>
</td>
</c:when>
<c:otherwise>
<td class="state-delete item-mobile-hidden"><s:message code="common.button.del"/></td>
</c:otherwise>
</c:choose>
</c:when>
</c:choose>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td class="no-data-colspan"><s:message code="common.message.no.data"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'>
<div class="change-state-area">
<label for="selStatus"><s:message code="common.message.choice"/></label>
<select name="selStatus" id="selStatus" title="<s:message code="common.select.option.value"/>" class="change-list">
<option value=""><s:message code="common.select.option.value"/></option>
<option value="U"><s:message code="common.select.option.value.use"/></option>
<option value="S"><s:message code="common.select.option.value.stop"/></option>
<option value="D"><s:message code="common.select.option.value.delete"/></option>
</select>
<button type="submit" class="btn-change-state"><s:message code="common.button.status"/></button>
</div>
</c:if>
</div>
</form:form>
<div class="pagination-container">
<div class="pagination-inner clear">
<div class="pagination-control prev clear">
<a class="first-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=1&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.first"/>" ><s:message code="common.page.first"/></a>
<c:choose>
<c:when test="${block > 1}">
<a class="prev-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${fPage-1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:when>
<c:otherwise>
<a class="prev-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${fPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:otherwise>
</c:choose>
</div>
<ul class="pagination clear">
<c:forEach begin="0" end="${lPage-fPage}" var="index" >
<c:choose>
<c:when test="${index+fPage==page}">
<li><a class="on" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.now"/>" ><c:out escapeXml='true' value='${page}' /></a></li>
</c:when>
<c:otherwise>
<li><a href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${index+fPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<c:out escapeXml='true' value='${index+fPage}' /> <s:message code="common.page.page"/>" ><c:out escapeXml='true' value='${index+fPage}' /></a></li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
<div class="pagination-control next clear">
<c:choose>
<c:when test="${block < blocks}">
<a class="next-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${lPage+1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:when>
<c:otherwise>
<a class="next-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${lPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:otherwise>
</c:choose>
<a class="last-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${pages}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.last"/>" ><s:message code="common.page.last"/></a>
</div>
</div>
</div>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'>
<div class="btn-area">
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetForm.do" class="btn-normal violet"><s:message code="common.button.create"/></a>
</div>
</c:if>
<c:if test='${(siteMenuIdx != "0" && menuCode == "N") || menuCode == "visual"}'>
</div>
</c:if>
<script>
/* <![CDATA[ */
$(".dataDel").click(function(){
if(!confirm("<s:message code='common.message.visual.set.confirm.del'/>")){
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
$(".codeClick").click(function(){
var url = $(this).attr("href");
var dataSeeds = $(this).attr("data-seed").split(":");
location.replace("/common/getCode/<c:out escapeXml='true' value='${siteIdx}' />.do?getUrl="+Base64.encode(url)+"&codeType=func&pageType=manager&codeRelation="+dataSeeds[0]+"&funcType=visual&funcSetIdx="+dataSeeds[1]);
return false;
});
$("#frm").submit(function(){
if(!$('input:checkbox[name="idxs"]').is(":checked")){
alert("<s:message code="common.message.no.check"/>");
return false;
}
if($("#selStatus option:selected").val() == ""){
alert("<s:message code="common.message.no.select"/>");
$("#selStatus").focus();
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,257 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.banner.bannerSetList.title"/></title>
<script src="/js/lib/base64.js"></script>
</head>
<body>
<c:if test='${(siteMenuIdx != "0" && menuCode == "N") || menuCode == "banner"}'>
<div class="seed-popup-wrap">
</c:if>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.banner.nav.bannerSetList"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p></p>
</div>
</div>
</div>
<div class="sch-content-wrap clear">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<c:url var="actionUrl" value="/gtm/${siteIdx}/bannerSetList.do" />
</c:when>
<c:otherwise>
<c:url var="actionUrl" value="/menu/${siteIdx}/bannerSetList.do" />
</c:otherwise>
</c:choose>
<form:form name="frmSearch" id="frmSearch" action="${actionUrl}" method="post">
<input type="hidden" name="page" value="1" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="siteMenuIdx" value="<c:out escapeXml='true' value='${siteMenuIdx}' />"/>
<input type="hidden" name="menuCode" value="<c:out escapeXml='true' value='${menuCode}' />"/>
<fieldset>
<legend>검색 폼</legend>
<select name="column" id="column" title="<s:message code="common.select.option.value"/>" class="sch-select">
<option value="A" <c:if test="${column == 'A'}">selected="selected"</c:if>><s:message code="common.select.option.value.all"/></option>
<option value="bannerSetName" <c:if test="${column == 'bannerSetName'}">selected="selected"</c:if>><s:message code="manager.banner.bannerSetList.bannerSetName"/></option>
<option value="tMember.memberName" <c:if test="${column == 'tMember.memberName'}">selected="selected"</c:if>><s:message code="common.memberName"/></option>
</select>
<input type="search" name="search" id="search" value="<c:out escapeXml='true' value='${search}' />" title="<s:message code="common.search.value"/>" class="sch-text">
<button type="submit" class="btn-page-sch"><s:message code="common.button.search"/></button>
</fieldset>
</form:form>
</div>
</div>
<form:form name="frm" id="frm" method="post" action="/gtm/proc/${siteIdx}/bannerSetStatusProc.do">
<input type="hidden" name="page" value="<c:out escapeXml='true' value='${page}' />" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="column" value="<c:out escapeXml='true' value='${column}' />" />
<input type="hidden" name="search" value="<c:out escapeXml='true' value='${search}' />" />
<div class="more-btn-box">
<button type="button" id="moreTableItem" class="more-table-item">칼럼 더보기</button>
</div>
<div class="form-wrap">
<div class="table-layout br-none">
<table>
<caption><s:message code="manager.banner.bannerSetList.table.caption"/></caption>
<colgroup>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><col class="checkbox_small" /></c:if>
<col class="title">
<col>
<col class="item-tablet-hidden">
<col class="item-mobile-hidden">
<col class="item-mobile-hidden">
</colgroup>
<thead>
<tr>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><th scope="col"><input type="checkbox" class="checkbox check-all" name="allcheck" id="allcheck" title="<s:message code="common.message.allCheck"/>" /><label for="allcheck"></label></th></c:if>
<th scope="col"><s:message code="manager.banner.bannerSetList.bannerSetName"/><span> <a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col"><s:message code="manager.banner.bannerSetList.bannerDataCnt"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="common.memberName"/><span> <a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=tMember.memberName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=tMember.memberName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.regDate"/><span> <a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetRegDate&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetRegDate&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.status"/><span> <a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetStatus&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=bannerSetStatus&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty bannerSetList}">
<c:forEach items="${bannerSetList}" var="bannerSetList" varStatus="status">
<tr>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><td><input type="checkbox" class="checkbox check-base" name="idxs" id="banner_<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />" value="<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />" /><label for="banner_<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />"></label> <%-- <c:out escapeXml='true' value='${bannerSetListCnt - (page-1)*row - status.index}' /> --%></td></c:if>
<td class="al">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetEdit/<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />"><span><c:out escapeXml='true' value='${bannerSetList._bannerSetName}' /></span></a>
</c:when>
<c:when test='${menuCode == "banner"}'>
<a class="hover-link codeClick" href="/<c:out escapeXml='true' value='${siteIdx}' />/<c:out escapeXml='true' value='${menuCode}' />/<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />/mini.do"><span><c:out escapeXml='true' value='${bannerSetList._bannerSetName}' /></span></a>
</c:when>
</c:choose>
</td>
<td>
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />/bannerDataList.do"><span><c:out escapeXml='true' value='${bannerSetList._bannerDataIdxCnt}' /></span></a>
</c:when>
<c:otherwise>
<c:out escapeXml='true' value='${bannerSetList._bannerDataIdxCnt}' />
</c:otherwise>
</c:choose>
</td>
<td class="item-tablet-hidden"><c:out escapeXml='true' value='${bannerSetList._memberName}' />(<c:out escapeXml='true' value='${bannerSetList._memberId}' />)</td>
<td class="item-mobile-hidden"><c:out escapeXml='true' value='${fn:substring(bannerSetList._bannerSetRegDate, 0, 10)}' /></td>
<c:choose>
<c:when test="${bannerSetList._bannerSetStatus == 'U'}">
<td class="item-mobile-hidden skin-default"><s:message code="common.use"/></td>
</c:when>
<c:when test="${bannerSetList._bannerSetStatus == 'S'}">
<td class="state-stop item-mobile-hidden"><s:message code="common.stop"/></td>
</c:when>
<c:when test="${bannerSetList._bannerSetStatus == 'D'}">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<td class="state-delete item-mobile-hidden">
<a class="dataDel" href="/gtm/proc/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetDelProc/<c:out escapeXml='true' value='${bannerSetList._bannerSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><s:message code="common.button.del"/></a>
</td>
</c:when>
<c:otherwise>
<td><s:message code="common.button.del"/></td>
</c:otherwise>
</c:choose>
</c:when>
</c:choose>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td class="no-data-colspan"><s:message code="common.message.no.data"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'>
<div class="change-state-area">
<label for="selStatus"><s:message code="common.message.choice"/></label>
<select name="selStatus" id="selStatus" title="<s:message code="common.select.option.value"/>" class="change-list">
<option value=""><s:message code="common.select.option.value"/></option>
<option value="U"><s:message code="common.select.option.value.use"/></option>
<option value="S"><s:message code="common.select.option.value.stop"/></option>
<option value="D"><s:message code="common.select.option.value.delete"/></option>
</select>
<button type="submit" class="btn-change-state"><s:message code="common.button.status"/></button>
</div>
</c:if>
</div>
</form:form>
<div class="pagination-container">
<div class="pagination-inner clear">
<div class="pagination-control prev clear">
<a class="first-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=1&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.first"/>" ><s:message code="common.page.first"/></a>
<c:choose>
<c:when test="${block > 1}">
<a class="prev-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${fPage-1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:when>
<c:otherwise>
<a class="prev-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${fPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:otherwise>
</c:choose>
</div>
<ul class="pagination clear">
<c:forEach begin="0" end="${lPage-fPage}" var="index" >
<c:choose>
<c:when test="${index+fPage==page}">
<li><a class="on" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.now"/>" ><c:out escapeXml='true' value='${page}' /></a></li>
</c:when>
<c:otherwise>
<li><a href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${index+fPage}' />&amp;row=${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<c:out escapeXml='true' value='${index+fPage}' /> <s:message code="common.page.page"/>" ><c:out escapeXml='true' value='${index+fPage}' /></a></li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
<div class="pagination-control next clear">
<c:choose>
<c:when test="${block < blocks}">
<a class="next-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${lPage+1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:when>
<c:otherwise>
<a class="next-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${lPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:otherwise>
</c:choose>
<a class="last-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/bannerSetList.do?page=<c:out escapeXml='true' value='${pages}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.last"/>" ><s:message code="common.page.last"/></a>
</div>
</div>
</div>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'>
<div class="btn-area">
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/bannerSetForm.do" class="btn-normal violet"><s:message code="common.button.create"/></a>
</div>
</c:if>
<script>
/* <![CDATA[ */
$(".dataDel").click(function(){
if(!confirm("<s:message code='common.message.banner.set.confirm.del'/>")){
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
$(".codeClick").click(function(){
var url = $(this).attr("href");
location.replace("/common/getCode/<c:out escapeXml='true' value='${siteIdx}' />.do?getUrl="+Base64.encode(url)+"&codeType=func&pageType=manager");
return false;
});
$("#frm").submit(function(){
if(!$('input:checkbox[name="idxs"]').is(":checked")){
alert("<s:message code="common.message.no.check"/>");
return false;
}
if($("#selStatus option:selected").val() == ""){
alert("<s:message code="common.message.no.select"/>");
$("#selStatus").focus();
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
<c:if test='${(siteMenuIdx != "0" && menuCode == "N") || menuCode == "banner"}'>
</div>
</c:if>
</body>
</html>

View File

@ -0,0 +1,79 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.member.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.alert"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.alert.caption"/></p>
</div>
</div>
</div>
</div>
<div class="tab-menu cf">
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteAlertSkin.do?alertType=message" <c:if test='${alertType == "message"}'>class="on" </c:if>><s:message code="manager.skin.tab.alert.message"/></a>
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteAlertSkin.do?alertType=error" <c:if test='${alertType == "error"}'>class="on" </c:if>><s:message code="manager.skin.tab.alert.error"/></a>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="iframe" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=alert&amp;pageName=<c:out escapeXml='true' value='${alertType}' />" id="siteSkinHtml"></iframe>
<iframe class="iframe" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=alert&amp;pageName=alert" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,99 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.skin.member.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.skin.tab.member"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p><s:message code="manager.skin.member.caption"/></p>
</div>
</div>
</div>
</div>
<div class="tab-menu-wrap">
<div class="tab-menu cf">
<a <c:if test='${memberType == "memberFormPwDel"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberFormPwDel"><s:message code="manager.skin.tab.member.memberDel"/></a>
<a <c:if test='${memberType == "memberPwDelResult"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberPwDelResult"><s:message code="manager.skin.tab.member.memberDelResult"/></a>
</div>
<div class="tab-menu cf">
<a <c:if test='${memberType == "memberIdFind"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberIdFind"><s:message code="manager.skin.tab.member.memberIdFind"/></a>
<a <c:if test='${memberType == "memberPwFind"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberPwFind"><s:message code="manager.skin.tab.member.memberPwFind"/></a>
<a <c:if test='${memberType == "memberIdResult"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberIdResult"><s:message code="manager.skin.tab.member.memberIdResult"/></a>
<a <c:if test='${memberType == "memberPwResult"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberPwResult"><s:message code="manager.skin.tab.member.memberPwResult"/></a>
</div>
<div class="tab-menu cf">
<a <c:if test='${memberType == "memberForm"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberForm"><s:message code="manager.skin.tab.member.memberForm"/></a>
<a <c:if test='${memberType == "memberEdit"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberEdit"><s:message code="manager.skin.tab.member.memberEdit"/></a>
<a <c:if test='${memberType == "memberChk"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberChk"><s:message code="manager.skin.tab.member.memberChk"/></a>
<a <c:if test='${memberType == "memberFormPw"}'>class="on"</c:if> href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteMemberSkin.do?memberType=memberFormPw"><s:message code="manager.skin.tab.member.memberPwChk"/></a>
</div>
</div>
<div class="layout-content">
<div class="layout-title">
<button type="button" class="skin-tab on" id="htmlTab"><div class="skin-div"><span>〈 / 〉</span><p>Html</p></div></button>
<button type="button" class="skin-tab" id="cssTab"><div class="skin-div"><span>〈 _ 〉</span><p>Css</p></div></button>
<div class="editor-util-btn">
<button type="button" class="editor-full-btn">에디터 전체화면</button>
</div>
</div>
<div class="editor">
<span class="rolling"></span>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinHtml.do?pageType=member&amp;pageName=${memberType}" id="siteSkinHtml"></iframe>
<iframe class="contents" src="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/siteSkinCss.do?pageType=member&amp;pageName=member" id="siteSkinCss"></iframe>
</div>
</div>
<div class="btn-area">
<button type="button" class="btn-normal violet" id="btnHtml"><s:message code="common.button.mod"/></button>
<button type="button" class="btn-normal violet DSP-NONE" id="btnCss"><s:message code="common.button.mod"/></button>
</div>
<script>
/* <![CDATA[ */
$("#btnHtml").click(function(){
$("#siteSkinHtml")[0].contentWindow.jf_submit();
});
$("#btnCss").click(function(){
$("#siteSkinCss")[0].contentWindow.jf_submit();
});
$("#htmlTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").show();
$("#siteSkinCss").hide();
$("#btnHtml").show();
$("#btnCss").hide();
});
$("#cssTab").click(function(){
$('.skin-tab').removeClass('on');
$(this).addClass('on');
$("#siteSkinHtml").hide();
$("#siteSkinCss").show();
$("#btnHtml").hide();
$("#btnCss").show();
});
$("#frm").submit(function(){
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,104 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.statistics.statisticsList.title"/></title>
<script src="http://www.google.com/jsapi"></script>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.tab.siteMenuStatisticsList"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p>메뉴명, 메뉴설정, 메뉴타입, 담당자, 메뉴순서를 변경 할 수 있는 페이지입니다.</p>
</div>
</div>
</div>
</div>
<div class="more-btn-box">
<button type="button" id="moreTableItem" class="more-table-item">칼럼 더보기</button>
</div>
<div class="table-layout inner-br-none siteMenuList">
<table>
<caption><s:message code="manager.site.siteMenuList.table.caption"/></caption>
<colgroup>
<col class="title">
<col class="item-mobile-hidden">
<col class="item-tablet-hidden">
<col class="item-tablet-hidden">
<col class="item-mobile-hidden">
<col>
</colgroup>
<thead>
<tr>
<th scope="col"><s:message code="manager.site.siteMenuList.siteMenuName"/></th>
<th scope="col" class="item-mobile-hidden"><s:message code="manager.site.siteMenuList.siteMenuLink"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="manager.site.siteMenuList.siteMenuStatus"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="manager.site.siteMenuList.siteMenuIdx"/></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.regDate"/></th>
<th scope="col"><s:message code="manager.statistics.statisticsList.cnt"/></th>
</tr>
</thead>
<tbody>
<tr>
<td class="no-data-colspan"><c:out escapeXml='true' value='${siteName}' /></td>
</tr>
<c:forEach items="${siteMenuStatisticsList}" var="siteMenuStatisticsList" varStatus="status">
<tr>
<td class="al">
<c:choose>
<c:when test='${siteMenuStatisticsList._siteMenuNameType == "T"}'>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' /></span>
</c:when>
<c:otherwise>
<div>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><img src="/site/<c:out escapeXml='true' value='${siteIdx}' />/images/menu/topMenu_<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' />_off.gif" alt="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' />" width="150px" height="40px" /></span>
<br/>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><img src="/site/<c:out escapeXml='true' value='${siteIdx}' />/images/menu/topMenu_<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' />_on.gif" alt="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' />" width="150px" height="40px" /></span>
<c:if test='${siteMenuStatisticsList._siteMenuDepth > 1}'>
<br/>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><img src="/site/<c:out escapeXml='true' value='${siteIdx}' />/images/menu/subMenu_<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' />_off.gif" alt="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' />" width="150px" height="40px" /></span>
<br/>
<span class="hover-link depth-<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuDepth}' />"><img src="/site/<c:out escapeXml='true' value='${siteIdx}' />/images/menu/subMenu_<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' />_on.gif" alt="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuName}' />" width="150px" height="40px" /></span>
</c:if>
</div>
</c:otherwise>
</c:choose>
</td>
<td class="item-mobile-hidden"><a class="menu-barogagi" href="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuLinkUrl}' />" target="_blank"><span><img src="/img/icon-go.png" alt="메뉴 바로가기" class="go-btn">GO</span></a></td>
<td class="item-tablet-hidden">
<c:choose>
<c:when test="${siteMenuStatisticsList._siteMenuStatus == 'U'}">
<p class="menu-visible on"><span>ON</span></p>
</c:when>
<c:when test="${siteMenuStatisticsList._siteMenuStatus == 'S'}">
<p class="menu-visible off"><span>OFF</span></p>
</c:when>
</c:choose>
</td>
<td class="item-tablet-hidden"><c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuIdxs}' /></td>
<td class="item-mobile-hidden"><c:out escapeXml='true' value='${fn:substring(siteMenuStatisticsList._siteMenuRegDate, 0, 10)}' /></td>
<td><a class="menu-barogagi hover-link" href="<c:out escapeXml='true' value='${siteMenuStatisticsList._siteMenuLinkUrl}' />" target="_blank"><span><c:out escapeXml='true' value='${siteMenuStatisticsList._accessCount}' /></span></a></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="btn-area">
<a class="btn-normal lightgray" href="/gtm/proc/<c:out escapeXml='true' value='${siteIdx}' />/siteMenuStatisticsExcelList.do"><s:message code="common.button.excel"/></a>
</div>
</body>
</html>

View File

@ -0,0 +1,190 @@
<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.statistics.statisticsList.title"/></title>
<script src="/js/lib/google-loader.js"></script>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.tab.siteStatisticsList"/></h3>
<!-- <div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p>통계 그래프 확인</p>
</div>
</div> -->
</div>
<div class="sch-content-wrap clear">
<form:form name="frmSearch" id="frmSearch" action="/gtm/${siteIdx}/siteStatisticsList.do" method="post">
<input type="hidden" name="page" value="1" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="siteMenuIdx" value="<c:out escapeXml='true' value='${siteMenuIdx}' />"/>
<input type="hidden" name="menuCode" value="<c:out escapeXml='true' value='${menuCode}' />"/>
<fieldset>
<legend>검색 폼</legend>
<select name="year" id="yearStr" title="<s:message code="common.select.option.value"/>" class="sch-select">
</select>
<select name="month" id="monthStr" title="<s:message code="common.select.option.value"/>" class="sch-select">
<option value="1" <c:if test="${monthStr == '1'}">selected="selected"</c:if>>1월</option>
<option value="2" <c:if test="${monthStr == '2'}">selected="selected"</c:if>>2월</option>
<option value="3" <c:if test="${monthStr == '3'}">selected="selected"</c:if>>3월</option>
<option value="4" <c:if test="${monthStr == '4'}">selected="selected"</c:if>>4월</option>
<option value="5" <c:if test="${monthStr == '5'}">selected="selected"</c:if>>5월</option>
<option value="6" <c:if test="${monthStr == '6'}">selected="selected"</c:if>>6월</option>
<option value="7" <c:if test="${monthStr == '7'}">selected="selected"</c:if>>7월</option>
<option value="8" <c:if test="${monthStr == '8'}">selected="selected"</c:if>>8월</option>
<option value="9" <c:if test="${monthStr == '9'}">selected="selected"</c:if>>9월</option>
<option value="10" <c:if test="${monthStr == '10'}">selected="selected"</c:if>>10월</option>
<option value="11" <c:if test="${monthStr == '11'}">selected="selected"</c:if>>11월</option>
<option value="12" <c:if test="${monthStr == '12'}">selected="selected"</c:if>>12월</option>
</select>
<button type="submit" class="btn-page-sch"><s:message code="common.button.search"/></button>
</fieldset>
</form:form>
</div>
</div>
<div id="month_chart" class="chart"></div>
<div class="btn-area">
<a class="btn-normal lightgray" href="/gtm/proc/<c:out escapeXml='true' value='${siteIdx}' />/siteStatisticsExcelList.do?year=${yearStr}&amp;month=<c:out escapeXml='true' value='${monthStr}' />"><s:message code="common.button.excel"/></a>
</div>
<script>
/* <![CDATA[ */
var date = new Date();
for(var year=date.getFullYear(); (date.getFullYear()-10) <= (year+1); year--){
if("${yearStr}" == year){
$("#yearStr")[0].options.add(new Option(year, year, true, true));
}else{
$("#yearStr")[0].options.add(new Option(year, year));
}
}
function requireScript( array ){
// sync 메서드는 jquery.seed.js에 들어있습니다..
return $.sync( (function(){
var retrunArray = [];
for( var i = 0; i < array.length; i++ ){
retrunArray.push([ $.getScript, array[i] ]);
}
return retrunArray;
}()) );
}
function getRandomColor() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
requireScript(['/js/lib/raphael.min.js',
'/js/lib/morris.min.js']).done(function( str ){
$('.chart').children().add('.chart-list li').remove();
// 기본 색깔 순서입니다.
var colors = ['#838bd2', '#FDB45C', '#46BFBD', '#F7464A'];
if( colors.length <= ($('.site > li').length+1) )
{
var colorSize = ($('.site > li').length+1) - colors.length; // 사용 가능한 공간 + 1
while( colorSize-- )
colors.push( getRandomColor() );
}
/***********************************************************************************************
일별통계
************************************************************************************************/
;(function(){
var year = "<c:out escapeXml='true' value='${yearStr}' />";
var month = parseInt("<c:out escapeXml='true' value='${monthStr}' />");
var LineData = [];
var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ((year % 4 === 0) && (year % 100 !== 0) || (year % 400 === 0)) {
days[1] = 29; //윤년 체크
}
for(var d=1; d<=days[month-1]; d++){
var cnt = 0;
<c:forEach items="${siteStatisticsList}" var="siteStatisticsList" varStatus="status">
if(year == "${siteStatisticsList._accessYear}" &&
(month + '') == "${siteStatisticsList._accessMonth}" &&
d == "${siteStatisticsList._accessDay}"){
cnt += <c:out value='${siteStatisticsList._accessCount}' />;
}
</c:forEach>
LineData.push({ days: [year, month, d].join('-'), count: cnt});
}
var MorrisLine = Morris.Line({
element: 'month_chart',
data: LineData,
xkey: 'days',
ykeys: ['count'],
labels: ['<c:out escapeXml='true' value='${siteName}' />'],
dateFormat: function(x){
var date = new Date(x);
return date.getFullYear() + '년 ' + (date.getMonth()+1) + '월 ' + date.getDate() + '일';
},
lineWidth: 2,
resize: false,
grid: false,
//xLabelAngle: 45,
lineColors: colors
});
MorrisLine.displayHoverForRow(new Date().getDate() - 1);
// 레이블 생성
var chartDetailList = MorrisLine.el.parent().find('.chart-detail-list');
var labels = MorrisLine.options.labels;
chartDetailList.append(function(){
var fragment = $(document.createDocumentFragment());
for( var i = 0; i < labels.length; i++ ){
fragment.append(
$('<li></li>').append(
$('<h5></h5>')
.text( labels[i] )
.prepend( $('<i></i>').css({ backgroundColor: colors[i] }) )
)
)
}
return fragment;
});
$(window).doneEvent('resize.MorrisLine', function() { MorrisLine.redraw() });
}());
/***********************************************************************************************
일별통계 끝
************************************************************************************************/
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,151 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.visual.visualSetList.title"/></title>
</head>
<body>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.visual.nav.visualSetList"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p></p>
</div>
</div>
</div>
<div class="sch-content-wrap clear">
<form:form name="frmSearch" id="frmSearch" action="/gte/${siteIdx}/visualSetList.do" method="post">
<input type="hidden" name="page" value="1" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="siteMenuIdx" value="<c:out escapeXml='true' value='${siteMenuIdx}' />"/>
<fieldset>
<legend>검색 폼</legend>
<select name="column" id="column" title="<s:message code="common.select.option.value"/>" class="sch-select">
<option value="<c:if test='${!memberGrant == "S" || !memberAuth}'>tVisualSet.</c:if>visualSetName"><s:message code="manager.visual.visualSetList.visualSetName"/></option>
</select>
<input type="search" name="search" id="search" value="<c:out escapeXml='true' value='${search}' />" title="<s:message code="common.search.value"/>" class="sch-text">
<button type="submit" class="btn-page-sch"><s:message code="common.button.search"/></button>
</fieldset>
</form:form>
</div>
</div>
<div class="more-btn-box">
<button type="button" id="moreTableItem" class="more-table-item">칼럼 더보기</button>
</div>
<div class="form-wrap">
<div class="table-layout br-none">
<table>
<caption><s:message code="manager.visual.visualSetList.table.caption"/></caption>
<colgroup>
<col class="small_checkbox">
<col class="title">
<col>
<col class="item-tablet-hidden">
<col class="item-mobile-hidden">
</colgroup>
<thead>
<tr>
<th scope="col"></th>
<th scope="col"><s:message code="manager.visual.visualSetList.visualSetName"/>&nbsp;&nbsp;<span><a href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col"><s:message code="common.data.set"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="common.regDate"/>&nbsp;&nbsp;<span><a href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetRegDate&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetRegDate&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.status"/>&nbsp;&nbsp;<span><a href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetStatus&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetStatus&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty visualSetList}">
<c:forEach items="${visualSetList}" var="visualSetList" varStatus="status">
<tr>
<td><c:out escapeXml='true' value='${visualSetListCnt - (page-1)*row - status.index}' /></td>
<td class="al">
<c:choose>
<c:when test='${visualSetList._visualSetType == "normal"}'>
<a class="hover-link" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetEdit/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />"><span><c:out escapeXml='true' value='${visualSetList._visualSetName}' /></span></a>
</c:when>
<c:when test='${visualSetList._visualSetType == "active"}'>
<a class="hover-link" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetEditActive/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />"><span><c:out escapeXml='true' value='${visualSetList._visualSetName}' /></span></a>
</c:when>
</c:choose>
</td>
<td><a class="hover-link" href="/gte/<c:out value='${siteIdx}' />/<c:out value='${visualSetList._visualSetIdx}' />/visualDataList.do?page=<c:out value='${page}' />&amp;row=<c:out value='${row}' />&amp;orderColumn=<c:out value='${orderColumn}' />&amp;order=<c:out value='${order}' />&amp;column=<c:out value='${column}' />&amp;search=<c:out value='${search}' />"><span><s:message code="common.set"/></span></a></td>
<td class="item-tablet-hidden">${fn:substring(visualSetList._visualSetRegDate, 0, 10)}</td>
<c:choose>
<c:when test="${visualSetList._visualSetStatus == 'U'}">
<td class="item-mobile-hidden skin-default"><s:message code="common.use"/></td>
</c:when>
<c:when test="${visualSetList._visualSetStatus == 'S'}">
<td class="state-stop item-mobile-hidden"><s:message code="common.stop"/></td>
</c:when>
<c:when test="${visualSetList._visualSetStatus == 'D'}">
<td class="state-delete item-mobile-hidden"><s:message code="common.button.del"/></td>
</c:when>
</c:choose>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td class="no-data-colspan"><s:message code="common.message.no.data"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
<div class="pagination-container">
<div class="pagination-inner clear">
<div class="pagination-control prev clear">
<a class="first-btn" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=1&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />" title="<s:message code="common.page.first"/>" ><s:message code="common.page.first"/></a>
<c:choose>
<c:when test="${block > 1}">
<a class="prev-btn" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${fPage-1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:when>
<c:otherwise>
<a class="prev-btn" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${fPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:otherwise>
</c:choose>
</div>
<ul class="pagination clear">
<c:forEach begin="0" end="${lPage-fPage}" var="index" >
<c:choose>
<c:when test="${index+fPage==page}">
<li><a class="on" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />" title="<s:message code="common.page.now"/>" ><c:out escapeXml='true' value='${page}' /></a></li>
</c:when>
<c:otherwise>
<li><a href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${index+fPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />" title="<c:out escapeXml='true' value='${index+fPage}' /> <s:message code="common.page.page"/>" ><c:out escapeXml='true' value='${index+fPage}' /></a></li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
<div class="pagination-control next clear">
<c:choose>
<c:when test="${block < blocks}">
<a class="next-btn" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${lPage+1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:when>
<c:otherwise>
<a class="next-btn" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${lPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:otherwise>
</c:choose>
<a class="last-btn" href="/gte/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${pages}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />" title="<s:message code="common.page.last"/>" ><s:message code="common.page.last"/></a>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,215 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.visual.visualSetPreview.title"/></title>
<script src="/js/lib/jquery.slides.min.js"></script>
<style>
#visual {
display: none;
position:relative;
}
a.slidesjs-next_visual {
position:absolute;
top:140px;
right:0px;
width:12px;
height:18px;
background-image: url("/img/manager/visual/btn_next.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a:hover.slidesjs-next_visual {
position:absolute;
top:140px;
right:0px;
width:12px;
height:18px;
background-image: url("/img/manager/visual/btn_next_over.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a.slidesjs-previous_visual {
position:absolute;
top:140px;
left:0px;
width:12px;
height:18px;
background-image: url("/img/manager/visual/btn_pre.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a:hover.slidesjs-previous_visual {
position:absolute;
top:140px;
left:0px;
width:12px;
height:18px;
background-image: url("/img/manager/visual/btn_pre_over.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a.slidesjs-play_visual {
position:absolute;
top:10px;
right:10px;
width:16px;
height:18px;
background-image: url("/img/manager/visual/btn_play.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a:hover.slidesjs-play_visual {
position:absolute;
top:10px;
right:10px;
width:16px;
height:18px;
background-image: url("/img/manager/visual/btn_play_over.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a.slidesjs-stop_visual {
position:absolute;
top:10px;
right:10px;
width:18px;
height:17px;
background-image: url("/img/manager/visual/btn_stop.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
a:hover.slidesjs-stop_visual {
position:absolute;
top:10px;
right:10px;
width:18px;
height:17px;
background-image: url("/img/manager/visual/btn_stop_over.png");
z-index:9999;
overflow: hidden;
text-indent: -9999px;
float: left;
}
.slidesjs-pagination_visual {
font-size:0;
position:absolute;
bottom:10px;
right:10px;
z-index:9999;
float: left;
list-style: none;
padding:0;
margin:0;
}
.slidesjs-pagination_visual li {
display:inline;
padding:0;
}
.slidesjs-pagination_visual li a {
float: left;
width: 13px;
height: 13px;
z-index:9999;
background-image: url("/img/manager/visual/btn_pagination_off.png");
overflow: hidden;
}
.slidesjs-pagination_visual li a:hover {
width: 13px;
height: 13px;
z-index:9999;
background-image: url("/img/manager/visual/btn_pagination_over.png");
}
.slidesjs-pagination_visual li a.active,
.slidesjs-pagination_visual li a:hover.active {
width: 13px;
height: 13px;
z-index:9999;
background-image: url("/img/manager/visual/btn_pagination_on.png");
}
</style>
</head>
<body>
<div id="visual" style="width:650px; height:300px; display: none; position:relative;">
<img src="/img/manager/visual/example-slide-1.jpg" width="650px" height="300px" alt="visual1" />
<img src="/img/manager/visual/example-slide-2.jpg" width="650px" height="300px" alt="visual2" />
<img src="/img/manager/visual/example-slide-3.jpg" width="650px" height="300px" alt="visual3" />
</div>
<script>
/* <![CDATA[ */
var visualSetSkin = "";
<c:choose>
<c:when test='${visualSetSkin == "A"}'>
visualSetSkin = "fade";
</c:when>
<c:when test='${visualSetSkin == "B"}'>
visualSetSkin = "slide";
</c:when>
</c:choose>
$('#visual').slidesjs({
width:650,
height:300,
autoHeight: false,
dataKey : "visual",
play: {
active: true,
auto: true,
interval: 4000,
swap: true,
restartDelay: 2500,
effect: visualSetSkin
},
navigation: {
effect: visualSetSkin
},
pagination: {
effect: visualSetSkin
},
effect: {
fade: {
speed: 400
}
}
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,266 @@
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="ko">
<head>
<title><s:message code="manager.visual.visualSetList.title"/></title>
<script src="/js/lib/base64.js"></script>
</head>
<body>
<c:if test='${(siteMenuIdx != "0" && menuCode == "N") || menuCode == "visual"}'>
<div class="seed-popup-wrap">
</c:if>
<div class="page-title-wrap clear">
<div class="page-title-inner">
<h3 class="page-title"><s:message code="manager.visual.nav.visualSetList"/></h3>
<div class="tooltipBox type01">
<button type="button" class="page-tip">페이지안내</button>
<div class="tooltipText">
<p></p>
</div>
</div>
</div>
<div class="sch-content-wrap clear">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<c:url var="actionUrl" value="/gtm/${siteIdx}/visualSetList.do" />
</c:when>
<c:otherwise>
<c:url var="actionUrl" value="/menu/${siteIdx}/visualSetList.do" />
</c:otherwise>
</c:choose>
<form:form name="frmSearch" id="frmSearch" action="${actionUrl}" method="post">
<input type="hidden" name="page" value="1" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="siteMenuIdx" value="<c:out escapeXml='true' value='${siteMenuIdx}' />"/>
<input type="hidden" name="menuCode" value="<c:out escapeXml='true' value='${menuCode}' />"/>
<fieldset>
<legend>검색 폼</legend>
<select name="column" id="column" title="<s:message code="common.select.option.value"/>" class="sch-select">
<option value="A" <c:if test="${column == 'A'}">selected="selected"</c:if>><s:message code="common.select.option.value.all"/></option>
<option value="visualSetName" <c:if test="${column == 'visualSetName'}">selected="selected"</c:if>><s:message code="manager.visual.visualSetList.visualSetName"/></option>
<option value="tMember.memberName" <c:if test="${column == 'tMember.memberName'}">selected="selected"</c:if>><s:message code="common.memberName"/></option>
</select>
<input type="search" name="search" id="search" value="<c:out escapeXml='true' value='${search}' />" title="<s:message code="common.search.value"/>" class="sch-text">
<button type="submit" class="btn-page-sch"><s:message code="common.button.search"/></button>
</fieldset>
</form:form>
</div>
</div>
<form:form name="frm" id="frm" method="post" action="/gtm/proc/${siteIdx}/visualSetStatusProc.do">
<input type="hidden" name="page" value="<c:out escapeXml='true' value='${page}' />" />
<input type="hidden" name="row" value="<c:out escapeXml='true' value='${row}' />" />
<input type="hidden" name="orderColumn" value="<c:out escapeXml='true' value='${orderColumn}' />" />
<input type="hidden" name="order" value="<c:out escapeXml='true' value='${order}' />" />
<input type="hidden" name="column" value="<c:out escapeXml='true' value='${column}' />" />
<input type="hidden" name="search" value="<c:out escapeXml='true' value='${search}' />" />
<div class="more-btn-box">
<button type="button" id="moreTableItem" class="more-table-item">칼럼 더보기</button>
</div>
<div class="form-wrap">
<div class="table-layout br-none">
<table>
<caption><s:message code="manager.visual.visualSetList.table.caption"/></caption>
<colgroup>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><col class="small_checkbox"></c:if>
<col class="title">
<col>
<col class="item-tablet-hidden">
<col class="item-mobile-hidden">
<col class="item-mobile-hidden">
</colgroup>
<thead>
<tr>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><th scope="col"><input type="checkbox" class="checkbox check-all" name="allcheck" id="allcheck" title="<s:message code="common.message.allCheck"/>" /><label for="allcheck"></label></th></c:if>
<th scope="col"><s:message code="manager.visual.visualSetList.visualSetName"/>&nbsp;&nbsp;<span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col"><s:message code="manager.visual.visualSetList.visualDataCnt"/></th>
<th scope="col" class="item-tablet-hidden"><s:message code="common.memberName"/>&nbsp;&nbsp;<span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=tMember.memberName&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=tMember.memberName&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.regDate"/>&nbsp;&nbsp;<span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetRegDate&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetRegDate&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
<th scope="col" class="item-mobile-hidden"><s:message code="common.status"/>&nbsp;&nbsp;<span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetStatus&amp;order=ASC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.up"/>" width="7" height="10" alt="<s:message code="common.move.up"/>" /></a></span> <span><a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=visualSetStatus&amp;order=DESC&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><img src="<s:message code="common.column.down"/>" width="7" height="10" alt="<s:message code="common.move.down"/>" /></a></span></th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty visualSetList}">
<c:forEach items="${visualSetList}" var="visualSetList" varStatus="status">
<tr>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'><td><input type="checkbox" class="checkbox check-base" name="idxs" id="visual_${visualSetList._visualSetIdx}" value="<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />" /><label for="visual_${visualSetList._visualSetIdx}"></label> ${visualSetListCnt - (page-1)*row - status.index}</td></c:if>
<td class="al">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<c:choose>
<c:when test='${visualSetList._visualSetType == "normal"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetEdit/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />"><span><c:out escapeXml='true' value='${visualSetList._visualSetName}' /></span></a>
</c:when>
<c:when test='${visualSetList._visualSetType == "active"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetEditActive/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />"><span><c:out escapeXml='true' value='${visualSetList._visualSetName}' /></span></a>
</c:when>
</c:choose>
</c:when>
<c:when test='${menuCode == "visual"}'>
<a class="hover-link codeClick" href="/<c:out escapeXml='true' value='${siteIdx}' />/<c:out escapeXml='true' value='${menuCode}' />/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />/mini.do" data-seed="${visualSetList._visualSetRelation}:<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />"><span><c:out escapeXml='true' value='${visualSetList._visualSetName}' /></span></a>
</c:when>
</c:choose>
</td>
<td>
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<a class="hover-link" href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />/visualDataList.do"><span><c:out escapeXml='true' value='${visualSetList._visualDataIdxCnt}' /></span></a>
</c:when>
<c:otherwise>
<c:out escapeXml='true' value='${visualSetList._visualDataIdxCnt}' />
</c:otherwise>
</c:choose>
</td>
<td class="item-tablet-hidden"><c:out escapeXml='true' value='${visualSetList._memberName}' />(<c:out escapeXml='true' value='${visualSetList._memberId}' />)</td>
<td class="item-mobile-hidden">${fn:substring(visualSetList._visualSetRegDate, 0, 10)}</td>
<c:choose>
<c:when test="${visualSetList._visualSetStatus == 'U'}">
<td class="item-mobile-hidden skin-default"><s:message code="common.use"/></td>
</c:when>
<c:when test="${visualSetList._visualSetStatus == 'S'}">
<td class="state-stop item-mobile-hidden"><s:message code="common.stop"/></td>
</c:when>
<c:when test="${visualSetList._visualSetStatus == 'D'}">
<c:choose>
<c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>
<td class="state-delete item-mobile-hidden">
<a class="dataDel" href="/gtm/proc/<c:out escapeXml='true' value='${siteIdx}' />/visualSetDelProc/<c:out escapeXml='true' value='${visualSetList._visualSetIdx}' />.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />"><s:message code="common.button.del"/></a>
</td>
</c:when>
<c:otherwise>
<td class="state-delete item-mobile-hidden"><s:message code="common.button.del"/></td>
</c:otherwise>
</c:choose>
</c:when>
</c:choose>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td class="no-data-colspan"><s:message code="common.message.no.data"/></td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'>
<div class="change-state-area">
<label for="selStatus"><s:message code="common.message.choice"/></label>
<select name="selStatus" id="selStatus" title="<s:message code="common.select.option.value"/>" class="change-list">
<option value=""><s:message code="common.select.option.value"/></option>
<option value="U"><s:message code="common.select.option.value.use"/></option>
<option value="S"><s:message code="common.select.option.value.stop"/></option>
<option value="D"><s:message code="common.select.option.value.delete"/></option>
</select>
<button type="submit" class="btn-change-state"><s:message code="common.button.status"/></button>
</div>
</c:if>
</div>
</form:form>
<div class="pagination-container">
<div class="pagination-inner clear">
<div class="pagination-control prev clear">
<a class="first-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=1&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.first"/>" ><s:message code="common.page.first"/></a>
<c:choose>
<c:when test="${block > 1}">
<a class="prev-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${fPage-1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:when>
<c:otherwise>
<a class="prev-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${fPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.prev"/>" ><s:message code="common.page.prev"/></a>
</c:otherwise>
</c:choose>
</div>
<ul class="pagination clear">
<c:forEach begin="0" end="${lPage-fPage}" var="index" >
<c:choose>
<c:when test="${index+fPage==page}">
<li><a class="on" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${page}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.now"/>" ><c:out escapeXml='true' value='${page}' /></a></li>
</c:when>
<c:otherwise>
<li><a href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${index+fPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<c:out escapeXml='true' value='${index+fPage}' /> <s:message code="common.page.page"/>" ><c:out escapeXml='true' value='${index+fPage}' /></a></li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
<div class="pagination-control next clear">
<c:choose>
<c:when test="${block < blocks}">
<a class="next-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${lPage+1}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:when>
<c:otherwise>
<a class="next-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${lPage}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.next"/>" ><s:message code="common.page.next"/></a>
</c:otherwise>
</c:choose>
<a class="last-btn" href="<c:choose><c:when test='${siteMenuIdx == "0" && menuCode == "N"}'>/gtm/</c:when><c:otherwise>/menu/</c:otherwise></c:choose><c:out escapeXml='true' value='${siteIdx}' />/visualSetList.do?page=<c:out escapeXml='true' value='${pages}' />&amp;row=<c:out escapeXml='true' value='${row}' />&amp;orderColumn=<c:out escapeXml='true' value='${orderColumn}' />&amp;order=<c:out escapeXml='true' value='${order}' />&amp;column=<c:out escapeXml='true' value='${column}' />&amp;search=<c:out escapeXml='true' value='${search}' />&amp;siteMenuIdx=<c:out escapeXml='true' value='${siteMenuIdx}' />&amp;menuCode=<c:out escapeXml='true' value='${menuCode}' />" title="<s:message code="common.page.last"/>" ><s:message code="common.page.last"/></a>
</div>
</div>
</div>
<c:if test='${(siteMenuIdx == "0" && menuCode == "N") && (memberGrant == "S" || memberAuth)}'>
<div class="btn-area">
<a href="/gtm/<c:out escapeXml='true' value='${siteIdx}' />/visualSetForm.do" class="btn-normal violet"><s:message code="common.button.create"/></a>
</div>
</c:if>
<c:if test='${(siteMenuIdx != "0" && menuCode == "N") || menuCode == "visual"}'>
</div>
</c:if>
<script>
/* <![CDATA[ */
$(".dataDel").click(function(){
if(!confirm("<s:message code='common.message.visual.set.confirm.del'/>")){
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
$(".codeClick").click(function(){
var url = $(this).attr("href");
var dataSeeds = $(this).attr("data-seed").split(":");
location.replace("/common/getCode/<c:out escapeXml='true' value='${siteIdx}' />.do?getUrl="+Base64.encode(url)+"&codeType=func&pageType=manager&codeRelation="+dataSeeds[0]+"&funcType=visual&funcSetIdx="+dataSeeds[1]);
return false;
});
$("#frm").submit(function(){
if(!$('input:checkbox[name="idxs"]').is(":checked")){
alert("<s:message code="common.message.no.check"/>");
return false;
}
if($("#selStatus option:selected").val() == ""){
alert("<s:message code="common.message.no.select"/>");
$("#selStatus").focus();
return false;
}
$.blockUI({ message : '<h1><img src="/img/blockbusy.gif" />&nbsp;&nbsp;<s:message code="common.message.ajaxwait"/></h1>' });
});
/* ]]> */
</script>
</body>
</html>

View File

@ -0,0 +1,8 @@
*.txt text
*.js text
*.html text
*.md text
*.json text
*.yml text
*.css text
*.svg text

6
src/main/webapp/codemirror/.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
/node_modules
/npm-debug.log
test.html
.tern-*
*~
*.swp

View File

@ -0,0 +1,3 @@
language: node_js
node_js:
- 0.8

View File

@ -0,0 +1,255 @@
List of CodeMirror contributors. Updated before every release.
4r2r
Aaron Brooks
Adam King
adanlobato
Adán Lobato
aeroson
Ahmad Amireh
Ahmad M. Zawawi
ahoward
Akeksandr Motsjonov
Albert Xing
Alexander Pavlov
Alexander Schepanovski
alexey-k
Alex Piggott
Amy
Ananya Sen
AndersMad
Andre von Houck
Andrey Lushnikov
Andy Kimball
Andy Li
angelozerr
angelo.zerr@gmail.com
Ankit Ahuja
Ansel Santosa
Anthony Grimes
areos
Atul Bhouraskar
Aurelian Oancea
Bastian Müller
benbro
Benjamin DeCoste
Ben Keen
boomyjee
borawjm
Brandon Frohs
Brett Zamir
Brian Sletten
Bruce Mitchener
Chandra Sekhar Pydi
Charles Skelton
Chris Coyier
Chris Granger
Chris Morgan
Christopher Brown
ciaranj
CodeAnimal
ComFreek
dagsta
Dan Heberden
Daniel, Dao Quang Minh
Daniel Faust
Daniel Huigens
Daniel Neel
Daniel Parnell
Danny Yoo
David Mignot
David Pathakjee
deebugger
Deep Thought
Dominator008
Domizio Demichelis
Drew Bratcher
Drew Hintz
Drew Khoury
Dror BG
duralog
edsharp
ekhaled
Eric Allam
eustas
Fauntleroy
fbuchinger
feizhang365
Felipe Lalanne
Felix Raab
Filip Noetzel
flack
ForbesLindesay
Ford_Lawnmower
Gabriel Nahmias
galambalazs
Gautam Mehta
Glenn Jorde
Glenn Ruehle
Golevka
Gordon Smith
greengiant
Guillaume Massé
Guillaume Massé
Hans Engel
Hardest
Hasan Karahan
Hocdoc
Ian Beck
Ian Wehrman
Ian Wetherbee
Ice White
ICHIKAWA, Yuji
Ingo Richter
Irakli Gozalishvili
Ivan Kurnosov
Jacob Lee
Jakub Vrana
James Campos
James Thorne
Jamie Hill
Jan Jongboom
jankeromnes
Jan Keromnes
Jan T. Sott
Jason
Jason Grout
Jason Johnston
Jason San Jose
Jason Siefken
Jean Boussier
jeffkenton
Jeff Pickhardt
jem (graphite)
Jochen Berger
John Connor
John Lees-Miller
John Snelson
jongalloway
Joost-Wim Boekesteijn
Joseph Pecoraro
Joshua Newman
jots
Juan Benavides Romero
Jucovschi Constantin
jwallers@gmail.com
kaniga
Ken Newman
Ken Rockot
Kevin Sawicki
Klaus Silveira
Koh Zi Han, Cliff
komakino
Konstantin Lopuhin
koops
ks-ifware
kubelsmieci
Lanny
leaf corcoran
Leonya Khachaturov
Liam Newman
LM
Lorenzo Stoakes
lynschinzer
Maksim Lin
Maksym Taran
Marat Dreizin
Marco Aurélio
Marijn Haverbeke
Mario Pietsch
Mark Lentczner
Martin Balek
Martín Gaitán
Mason Malone
Mateusz Paprocki
mats cronqvist
Matthew Beale
Matthias BUSSONNIER
Matt McDonald
Matt Pass
Matt Sacks
Maximilian Hils
Max Kirsch
mbarkhau
Metatheos
Micah Dubinko
Michael Lehenbauer
Michael Zhou
Mighty Guava
Miguel Castillo
Mike
Mike Brevoort
Mike Diaz
Mike Ivanov
Mike Kadin
MinRK
misfo
mps
Narciso Jaramillo
Nathan Williams
nerbert
nguillaumin
Niels van Groningen
Nikita Beloglazov
Nikita Vasilyev
nlwillia
pablo
Page
Patrick Strawderman
Paul Garvin
Paul Ivanov
Pavel Feldman
Paweł Bartkiewicz
peteguhl
peterkroon
Peter Kroon
prasanthj
Prasanth J
Rahul
Randy Edmunds
Richard Z.H. Wang
robertop23
Robert Plummer
Ruslan Osmanov
sabaca
Samuel Ainsworth
sandeepshetty
santec
Sascha Peilicke
satchmorun
sathyamoorthi
SCLINIC\jdecker
shaund
shaun gilchrist
Shmuel Englard
sonson
spastorelli
Stas Kobzar
Stefan Borsje
Steffen Beyer
Steve O'Hara
stoskov
Tarmil
tfjgeorge
Thaddee Tyl
think
Thomas Dvornik
Thomas Schmid
Tim Baumann
Timothy Farrell
Timothy Hatcher
TobiasBg
Tomas-A
Tomas Varaneckas
Tom Erik Støwer
Tom MacWright
Tony Jian
Vestimir Markov
vf
Volker Mische
William Jamieson
Wojtek Ptak
Xavier Mendez
Yunchi Luo
Yuvi Panda
Zachary Dremann

View File

@ -0,0 +1,72 @@
# How to contribute
- [Getting help](#getting-help-)
- [Submitting bug reports](#submitting-bug-reports-)
- [Contributing code](#contributing-code-)
## Getting help
Community discussion, questions, and informal bug reporting is done on the
[CodeMirror Google group](http://groups.google.com/group/codemirror).
## Submitting bug reports
The preferred way to report bugs is to use the
[GitHub issue tracker](http://github.com/marijnh/CodeMirror/issues). Before
reporting a bug, read these pointers.
**Note:** The issue tracker is for *bugs*, not requests for help. Questions
should be asked on the
[CodeMirror Google group](http://groups.google.com/group/codemirror) instead.
### Reporting bugs effectively
- CodeMirror is maintained by volunteers. They don't owe you anything, so be
polite. Reports with an indignant or belligerent tone tend to be moved to the
bottom of the pile.
- Include information about **the browser in which the problem occurred**. Even
if you tested several browsers, and the problem occurred in all of them,
mention this fact in the bug report. Also include browser version numbers and
the operating system that you're on.
- Mention which release of CodeMirror you're using. Preferably, try also with
the current development snapshot, to ensure the problem has not already been
fixed.
- Mention very precisely what went wrong. "X is broken" is not a good bug
report. What did you expect to happen? What happened instead? Describe the
exact steps a maintainer has to take to make the problem occur. We can not
fix something that we can not observe.
- If the problem can not be reproduced in any of the demos included in the
CodeMirror distribution, please provide an HTML document that demonstrates
the problem. The best way to do this is to go to
[jsbin.com](http://jsbin.com/ihunin/edit), enter it there, press save, and
include the resulting link in your bug report.
## Contributing code
- Make sure you have a [GitHub Account](https://github.com/signup/free)
- Fork [CodeMirror](https://github.com/marijnh/CodeMirror/)
([how to fork a repo](https://help.github.com/articles/fork-a-repo))
- Make your changes
- If your changes are easy to test or likely to regress, add tests.
Tests for the core go into `test/test.js`, some modes have their own
test suite under `mode/XXX/test.js`. Feel free to add new test
suites to modes that don't have one yet (be sure to link the new
tests into `test/index.html`).
- Follow the general code style of the rest of the project (see
below). Run `bin/lint` to verify that the linter is happy.
- Make sure all tests pass. Visit `test/index.html` in your browser to
run them.
- Submit a pull request
([how to create a pull request](https://help.github.com/articles/fork-a-repo))
### Coding standards
- 2 spaces per indentation level, no tabs.
- Include semicolons after statements.
- Note that the linter (`bin/lint`) which is run after each commit
complains about unused variables and functions. Prefix their names
with an underscore to muffle it.

View File

@ -0,0 +1,19 @@
Copyright (C) 2013 by Marijn Haverbeke <marijnh@gmail.com> and others
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -0,0 +1,11 @@
# CodeMirror
[![Build Status](https://secure.travis-ci.org/marijnh/CodeMirror.png?branch=master)](http://travis-ci.org/marijnh/CodeMirror)
[![NPM version](https://badge.fury.io/js/codemirror.png)](http://badge.fury.io/js/codemirror)
CodeMirror is a JavaScript component that provides a code editor in
the browser. When a mode is available for the language you are coding
in, it will color your code, and optionally help with indentation.
The project page is http://codemirror.net
The manual is at http://codemirror.net/doc/manual.html
The contributing guidelines are in [CONTRIBUTING.md](https://github.com/marijnh/CodeMirror/blob/master/CONTRIBUTING.md)

View File

@ -0,0 +1,145 @@
(function() {
"use strict";
var noOptions = {};
var nonWS = /[^\s\u00a0]/;
var Pos = CodeMirror.Pos;
function firstNonWS(str) {
var found = str.search(nonWS);
return found == -1 ? 0 : found;
}
CodeMirror.commands.toggleComment = function(cm) {
var from = cm.getCursor("start"), to = cm.getCursor("end");
cm.uncomment(from, to) || cm.lineComment(from, to);
};
CodeMirror.defineExtension("lineComment", function(from, to, options) {
if (!options) options = noOptions;
var self = this, mode = self.getModeAt(from);
var commentString = options.lineComment || mode.lineComment;
if (!commentString) {
if (options.blockCommentStart || mode.blockCommentStart) {
options.fullLines = true;
self.blockComment(from, to, options);
}
return;
}
var firstLine = self.getLine(from.line);
if (firstLine == null) return;
var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);
var pad = options.padding == null ? " " : options.padding;
var blankLines = options.commentBlankLines || from.line == to.line;
self.operation(function() {
if (options.indent) {
var baseString = firstLine.slice(0, firstNonWS(firstLine));
for (var i = from.line; i < end; ++i) {
var line = self.getLine(i), cut = baseString.length;
if (!blankLines && !nonWS.test(line)) continue;
if (line.slice(0, cut) != baseString) cut = firstNonWS(line);
self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));
}
} else {
for (var i = from.line; i < end; ++i) {
if (blankLines || nonWS.test(self.getLine(i)))
self.replaceRange(commentString + pad, Pos(i, 0));
}
}
});
});
CodeMirror.defineExtension("blockComment", function(from, to, options) {
if (!options) options = noOptions;
var self = this, mode = self.getModeAt(from);
var startString = options.blockCommentStart || mode.blockCommentStart;
var endString = options.blockCommentEnd || mode.blockCommentEnd;
if (!startString || !endString) {
if ((options.lineComment || mode.lineComment) && options.fullLines != false)
self.lineComment(from, to, options);
return;
}
var end = Math.min(to.line, self.lastLine());
if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;
var pad = options.padding == null ? " " : options.padding;
if (from.line > end) return;
self.operation(function() {
if (options.fullLines != false) {
var lastLineHasText = nonWS.test(self.getLine(end));
self.replaceRange(pad + endString, Pos(end));
self.replaceRange(startString + pad, Pos(from.line, 0));
var lead = options.blockCommentLead || mode.blockCommentLead;
if (lead != null) for (var i = from.line + 1; i <= end; ++i)
if (i != end || lastLineHasText)
self.replaceRange(lead + pad, Pos(i, 0));
} else {
self.replaceRange(endString, to);
self.replaceRange(startString, from);
}
});
});
CodeMirror.defineExtension("uncomment", function(from, to, options) {
if (!options) options = noOptions;
var self = this, mode = self.getModeAt(from);
var end = Math.min(to.line, self.lastLine()), start = Math.min(from.line, end);
// Try finding line comments
var lineString = options.lineComment || mode.lineComment, lines = [];
var pad = options.padding == null ? " " : options.padding, didSomething;
lineComment: {
if (!lineString) break lineComment;
for (var i = start; i <= end; ++i) {
var line = self.getLine(i);
var found = line.indexOf(lineString);
if (found == -1 && (i != end || i == start) && nonWS.test(line)) break lineComment;
if (i != start && found > -1 && nonWS.test(line.slice(0, found))) break lineComment;
lines.push(line);
}
self.operation(function() {
for (var i = start; i <= end; ++i) {
var line = lines[i - start];
var pos = line.indexOf(lineString), endPos = pos + lineString.length;
if (pos < 0) continue;
if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;
didSomething = true;
self.replaceRange("", Pos(i, pos), Pos(i, endPos));
}
});
if (didSomething) return true;
}
// Try block comments
var startString = options.blockCommentStart || mode.blockCommentStart;
var endString = options.blockCommentEnd || mode.blockCommentEnd;
if (!startString || !endString) return false;
var lead = options.blockCommentLead || mode.blockCommentLead;
var startLine = self.getLine(start), endLine = end == start ? startLine : self.getLine(end);
var open = startLine.indexOf(startString), close = endLine.lastIndexOf(endString);
if (close == -1 && start != end) {
endLine = self.getLine(--end);
close = endLine.lastIndexOf(endString);
}
if (open == -1 || close == -1) return false;
self.operation(function() {
self.replaceRange("", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),
Pos(end, close + endString.length));
var openEnd = open + startString.length;
if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;
self.replaceRange("", Pos(start, open), Pos(start, openEnd));
if (lead) for (var i = start + 1; i <= end; ++i) {
var line = self.getLine(i), found = line.indexOf(lead);
if (found == -1 || nonWS.test(line.slice(0, found))) continue;
var foundEnd = found + lead.length;
if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;
self.replaceRange("", Pos(i, found), Pos(i, foundEnd));
}
});
return true;
});
})();

View File

@ -0,0 +1,54 @@
(function() {
var modes = ["clike", "css", "javascript"];
for (var i = 0; i < modes.length; ++i)
CodeMirror.extendMode(modes[i], {blockCommentContinue: " * "});
function continueComment(cm) {
var pos = cm.getCursor(), token = cm.getTokenAt(pos);
if (token.type != "comment") return CodeMirror.Pass;
var mode = CodeMirror.innerMode(cm.getMode(), token.state).mode;
var insert;
if (mode.blockCommentStart && mode.blockCommentContinue) {
var end = token.string.indexOf(mode.blockCommentEnd);
var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;
if (end != -1 && end == token.string.length - mode.blockCommentEnd.length) {
// Comment ended, don't continue it
} else if (token.string.indexOf(mode.blockCommentStart) == 0) {
insert = full.slice(0, token.start);
if (!/^\s*$/.test(insert)) {
insert = "";
for (var i = 0; i < token.start; ++i) insert += " ";
}
} else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 &&
found + mode.blockCommentContinue.length > token.start &&
/^\s*$/.test(full.slice(0, found))) {
insert = full.slice(0, found);
}
if (insert != null) insert += mode.blockCommentContinue;
}
if (insert == null && mode.lineComment) {
var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment);
if (found > -1) {
insert = line.slice(0, found);
if (/\S/.test(insert)) insert = null;
else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\s*/)[0];
}
}
if (insert != null)
cm.replaceSelection("\n" + insert, "end");
else
return CodeMirror.Pass;
}
CodeMirror.defineOption("continueComments", null, function(cm, val, prev) {
if (prev && prev != CodeMirror.Init)
cm.removeKeyMap("continueComment");
if (val) {
var map = {name: "continueComment"};
map[typeof val == "string" ? val : "Enter"] = continueComment;
cm.addKeyMap(map);
}
});
})();

View File

@ -0,0 +1,32 @@
.CodeMirror-dialog {
position: absolute;
left: 0; right: 0;
background: white;
z-index: 15;
padding: .1em .8em;
overflow: hidden;
color: #333;
}
.CodeMirror-dialog-top {
border-bottom: 1px solid #eee;
top: 0;
}
.CodeMirror-dialog-bottom {
border-top: 1px solid #eee;
bottom: 0;
}
.CodeMirror-dialog input {
border: none;
outline: none;
background: transparent;
width: 20em;
color: inherit;
font-family: monospace;
}
.CodeMirror-dialog button {
font-size: 70%;
}

View File

@ -0,0 +1,121 @@
// Open simple dialogs on top of an editor. Relies on dialog.css.
(function() {
function dialogDiv(cm, template, bottom) {
var wrap = cm.getWrapperElement();
var dialog;
dialog = wrap.appendChild(document.createElement("div"));
if (bottom) {
dialog.className = "CodeMirror-dialog CodeMirror-dialog-bottom";
} else {
dialog.className = "CodeMirror-dialog CodeMirror-dialog-top";
}
if (typeof template == "string") {
dialog.innerHTML = template;
} else { // Assuming it's a detached DOM element.
dialog.appendChild(template);
}
return dialog;
}
function closeNotification(cm, newVal) {
if (cm.state.currentNotificationClose)
cm.state.currentNotificationClose();
cm.state.currentNotificationClose = newVal;
}
CodeMirror.defineExtension("openDialog", function(template, callback, options) {
closeNotification(this, null);
var dialog = dialogDiv(this, template, options && options.bottom);
var closed = false, me = this;
function close() {
if (closed) return;
closed = true;
dialog.parentNode.removeChild(dialog);
}
var inp = dialog.getElementsByTagName("input")[0], button;
if (inp) {
CodeMirror.on(inp, "keydown", function(e) {
if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }
if (e.keyCode == 13 || e.keyCode == 27) {
CodeMirror.e_stop(e);
close();
me.focus();
if (e.keyCode == 13) callback(inp.value);
}
});
if (options && options.onKeyUp) {
CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);});
}
if (options && options.value) inp.value = options.value;
inp.focus();
CodeMirror.on(inp, "blur", close);
} else if (button = dialog.getElementsByTagName("button")[0]) {
CodeMirror.on(button, "click", function() {
close();
me.focus();
});
button.focus();
CodeMirror.on(button, "blur", close);
}
return close;
});
CodeMirror.defineExtension("openConfirm", function(template, callbacks, options) {
closeNotification(this, null);
var dialog = dialogDiv(this, template, options && options.bottom);
var buttons = dialog.getElementsByTagName("button");
var closed = false, me = this, blurring = 1;
function close() {
if (closed) return;
closed = true;
dialog.parentNode.removeChild(dialog);
me.focus();
}
buttons[0].focus();
for (var i = 0; i < buttons.length; ++i) {
var b = buttons[i];
(function(callback) {
CodeMirror.on(b, "click", function(e) {
CodeMirror.e_preventDefault(e);
close();
if (callback) callback(me);
});
})(callbacks[i]);
CodeMirror.on(b, "blur", function() {
--blurring;
setTimeout(function() { if (blurring <= 0) close(); }, 200);
});
CodeMirror.on(b, "focus", function() { ++blurring; });
}
});
/*
* openNotification
* Opens a notification, that can be closed with an optional timer
* (default 5000ms timer) and always closes on click.
*
* If a notification is opened while another is opened, it will close the
* currently opened one and open the new one immediately.
*/
CodeMirror.defineExtension("openNotification", function(template, options) {
closeNotification(this, close);
var dialog = dialogDiv(this, template, options && options.bottom);
var duration = options && (options.duration === undefined ? 5000 : options.duration);
var closed = false, doneTimer;
function close() {
if (closed) return;
closed = true;
clearTimeout(doneTimer);
dialog.parentNode.removeChild(dialog);
}
CodeMirror.on(dialog, 'click', function(e) {
CodeMirror.e_preventDefault(e);
close();
});
if (duration)
doneTimer = setTimeout(close, options.duration);
});
})();

View File

@ -0,0 +1,6 @@
.CodeMirror-fullscreen {
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
height: auto;
z-index: 9;
}

View File

@ -0,0 +1,31 @@
(function() {
"use strict";
CodeMirror.defineOption("fullScreen", false, function(cm, val, old) {
if (old == CodeMirror.Init) old = false;
if (!old == !val) return;
if (val) setFullscreen(cm);
else setNormal(cm);
});
function setFullscreen(cm) {
var wrap = cm.getWrapperElement();
cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,
width: wrap.style.width, height: wrap.style.height};
wrap.style.width = "";
wrap.style.height = "auto";
wrap.className += " CodeMirror-fullscreen";
document.documentElement.style.overflow = "hidden";
cm.refresh();
}
function setNormal(cm) {
var wrap = cm.getWrapperElement();
wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, "");
document.documentElement.style.overflow = "";
var info = cm.state.fullScreenRestore;
wrap.style.width = info.width; wrap.style.height = info.height;
window.scrollTo(info.scrollLeft, info.scrollTop);
cm.refresh();
}
})();

View File

@ -0,0 +1,48 @@
(function() {
CodeMirror.defineOption("placeholder", "", function(cm, val, old) {
var prev = old && old != CodeMirror.Init;
if (val && !prev) {
cm.on("blur", onBlur);
cm.on("change", onChange);
onChange(cm);
} else if (!val && prev) {
cm.off("blur", onBlur);
cm.off("change", onChange);
clearPlaceholder(cm);
var wrapper = cm.getWrapperElement();
wrapper.className = wrapper.className.replace(" CodeMirror-empty", "");
}
if (val && !cm.hasFocus()) onBlur(cm);
});
function clearPlaceholder(cm) {
if (cm.state.placeholder) {
cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);
cm.state.placeholder = null;
}
}
function setPlaceholder(cm) {
clearPlaceholder(cm);
var elt = cm.state.placeholder = document.createElement("pre");
elt.style.cssText = "height: 0; overflow: visible";
elt.className = "CodeMirror-placeholder";
elt.appendChild(document.createTextNode(cm.getOption("placeholder")));
cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);
}
function onBlur(cm) {
if (isEmpty(cm)) setPlaceholder(cm);
}
function onChange(cm) {
var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);
wrapper.className = wrapper.className.replace(" CodeMirror-empty", "") + (empty ? " CodeMirror-empty" : "");
if (empty) setPlaceholder(cm);
else clearPlaceholder(cm);
}
function isEmpty(cm) {
return (cm.lineCount() === 1) && (cm.getLine(0) === "");
}
})();

View File

@ -0,0 +1,82 @@
(function() {
var DEFAULT_BRACKETS = "()[]{}''\"\"";
var DEFAULT_EXPLODE_ON_ENTER = "[]{}";
var SPACE_CHAR_REGEX = /\s/;
CodeMirror.defineOption("autoCloseBrackets", false, function(cm, val, old) {
if (old != CodeMirror.Init && old)
cm.removeKeyMap("autoCloseBrackets");
if (!val) return;
var pairs = DEFAULT_BRACKETS, explode = DEFAULT_EXPLODE_ON_ENTER;
if (typeof val == "string") pairs = val;
else if (typeof val == "object") {
if (val.pairs != null) pairs = val.pairs;
if (val.explode != null) explode = val.explode;
}
var map = buildKeymap(pairs);
if (explode) map.Enter = buildExplodeHandler(explode);
cm.addKeyMap(map);
});
function charsAround(cm, pos) {
var str = cm.getRange(CodeMirror.Pos(pos.line, pos.ch - 1),
CodeMirror.Pos(pos.line, pos.ch + 1));
return str.length == 2 ? str : null;
}
function buildKeymap(pairs) {
var map = {
name : "autoCloseBrackets",
Backspace: function(cm) {
if (cm.somethingSelected()) return CodeMirror.Pass;
var cur = cm.getCursor(), around = charsAround(cm, cur);
if (around && pairs.indexOf(around) % 2 == 0)
cm.replaceRange("", CodeMirror.Pos(cur.line, cur.ch - 1), CodeMirror.Pos(cur.line, cur.ch + 1));
else
return CodeMirror.Pass;
}
};
var closingBrackets = "";
for (var i = 0; i < pairs.length; i += 2) (function(left, right) {
if (left != right) closingBrackets += right;
function surround(cm) {
var selection = cm.getSelection();
cm.replaceSelection(left + selection + right);
}
function maybeOverwrite(cm) {
var cur = cm.getCursor(), ahead = cm.getRange(cur, CodeMirror.Pos(cur.line, cur.ch + 1));
if (ahead != right || cm.somethingSelected()) return CodeMirror.Pass;
else cm.execCommand("goCharRight");
}
map["'" + left + "'"] = function(cm) {
if (left == "'" && cm.getTokenAt(cm.getCursor()).type == "comment")
return CodeMirror.Pass;
if (cm.somethingSelected()) return surround(cm);
if (left == right && maybeOverwrite(cm) != CodeMirror.Pass) return;
var cur = cm.getCursor(), ahead = CodeMirror.Pos(cur.line, cur.ch + 1);
var line = cm.getLine(cur.line), nextChar = line.charAt(cur.ch), curChar = cur.ch > 0 ? line.charAt(cur.ch - 1) : "";
if (left == right && CodeMirror.isWordChar(curChar))
return CodeMirror.Pass;
if (line.length == cur.ch || closingBrackets.indexOf(nextChar) >= 0 || SPACE_CHAR_REGEX.test(nextChar))
cm.replaceSelection(left + right, {head: ahead, anchor: ahead});
else
return CodeMirror.Pass;
};
if (left != right) map["'" + right + "'"] = maybeOverwrite;
})(pairs.charAt(i), pairs.charAt(i + 1));
return map;
}
function buildExplodeHandler(pairs) {
return function(cm) {
var cur = cm.getCursor(), around = charsAround(cm, cur);
if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;
cm.operation(function() {
var newPos = CodeMirror.Pos(cur.line + 1, 0);
cm.replaceSelection("\n\n", {anchor: newPos, head: newPos}, "+input");
cm.indentLine(cur.line + 1, null, true);
cm.indentLine(cur.line + 2, null, true);
});
};
}
})();

View File

@ -0,0 +1,89 @@
/**
* Tag-closer extension for CodeMirror.
*
* This extension adds an "autoCloseTags" option that can be set to
* either true to get the default behavior, or an object to further
* configure its behavior.
*
* These are supported options:
*
* `whenClosing` (default true)
* Whether to autoclose when the '/' of a closing tag is typed.
* `whenOpening` (default true)
* Whether to autoclose the tag when the final '>' of an opening
* tag is typed.
* `dontCloseTags` (default is empty tags for HTML, none for XML)
* An array of tag names that should not be autoclosed.
* `indentTags` (default is block tags for HTML, none for XML)
* An array of tag names that should, when opened, cause a
* blank line to be added inside the tag, and the blank line and
* closing line to be indented.
*
* See demos/closetag.html for a usage example.
*/
(function() {
CodeMirror.defineOption("autoCloseTags", false, function(cm, val, old) {
if (old != CodeMirror.Init && old)
cm.removeKeyMap("autoCloseTags");
if (!val) return;
var map = {name: "autoCloseTags"};
if (typeof val != "object" || val.whenClosing)
map["'/'"] = function(cm) { return autoCloseSlash(cm); };
if (typeof val != "object" || val.whenOpening)
map["'>'"] = function(cm) { return autoCloseGT(cm); };
cm.addKeyMap(map);
});
var htmlDontClose = ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param",
"source", "track", "wbr"];
var htmlIndent = ["applet", "blockquote", "body", "button", "div", "dl", "fieldset", "form", "frameset", "h1", "h2", "h3", "h4",
"h5", "h6", "head", "html", "iframe", "layer", "legend", "object", "ol", "p", "select", "table", "ul"];
function autoCloseGT(cm) {
var pos = cm.getCursor(), tok = cm.getTokenAt(pos);
var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;
if (inner.mode.name != "xml" || !state.tagName) return CodeMirror.Pass;
var opt = cm.getOption("autoCloseTags"), html = inner.mode.configuration == "html";
var dontCloseTags = (typeof opt == "object" && opt.dontCloseTags) || (html && htmlDontClose);
var indentTags = (typeof opt == "object" && opt.indentTags) || (html && htmlIndent);
var tagName = state.tagName;
if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length - tok.end + pos.ch);
var lowerTagName = tagName.toLowerCase();
// Don't process the '>' at the end of an end-tag or self-closing tag
if (tok.type == "string" && (tok.end != pos.ch || !/[\"\']/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1) ||
tok.type == "tag" && state.type == "closeTag" ||
tok.string.indexOf("/") == (tok.string.length - 1) || // match something like <someTagName />
dontCloseTags && indexOf(dontCloseTags, lowerTagName) > -1)
return CodeMirror.Pass;
var doIndent = indentTags && indexOf(indentTags, lowerTagName) > -1;
var curPos = doIndent ? CodeMirror.Pos(pos.line + 1, 0) : CodeMirror.Pos(pos.line, pos.ch + 1);
cm.replaceSelection(">" + (doIndent ? "\n\n" : "") + "</" + tagName + ">",
{head: curPos, anchor: curPos});
if (doIndent) {
cm.indentLine(pos.line + 1);
cm.indentLine(pos.line + 2);
}
}
function autoCloseSlash(cm) {
var pos = cm.getCursor(), tok = cm.getTokenAt(pos);
var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;
if (tok.type == "string" || tok.string.charAt(0) != "<" ||
tok.start != pos.ch - 1 || inner.mode.name != "xml")
return CodeMirror.Pass;
var tagName = state.context && state.context.tagName;
if (tagName) cm.replaceSelection("/" + tagName + ">", "end");
}
function indexOf(collection, elt) {
if (collection.indexOf) return collection.indexOf(elt);
for (var i = 0, e = collection.length; i < e; ++i)
if (collection[i] == elt) return i;
return -1;
}
})();

View File

@ -0,0 +1,25 @@
(function() {
'use strict';
var listRE = /^(\s*)([*+-]|(\d+)\.)(\s*)/,
unorderedBullets = '*+-';
CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {
var pos = cm.getCursor(),
inList = cm.getStateAfter(pos.line).list !== false,
match;
if (!inList || !(match = cm.getLine(pos.line).match(listRE))) {
cm.execCommand('newlineAndIndent');
return;
}
var indent = match[1], after = match[4];
var bullet = unorderedBullets.indexOf(match[2]) >= 0
? match[2]
: (parseInt(match[3], 10) + 1) + '.';
cm.replaceSelection('\n' + indent + bullet + after, 'end');
};
}());

View File

@ -0,0 +1,87 @@
(function() {
var ie_lt8 = /MSIE \d/.test(navigator.userAgent) &&
(document.documentMode == null || document.documentMode < 8);
var Pos = CodeMirror.Pos;
var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};
function findMatchingBracket(cm, where, strict) {
var state = cm.state.matchBrackets;
var maxScanLen = (state && state.maxScanLineLength) || 10000;
var maxScanLines = (state && state.maxScanLines) || 100;
var cur = where || cm.getCursor(), line = cm.getLineHandle(cur.line), pos = cur.ch - 1;
var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];
if (!match) return null;
var forward = match.charAt(1) == ">", d = forward ? 1 : -1;
if (strict && forward != (pos == cur.ch)) return null;
var style = cm.getTokenTypeAt(Pos(cur.line, pos + 1));
var stack = [line.text.charAt(pos)], re = /[(){}[\]]/;
function scan(line, lineNo, start) {
if (!line.text) return;
var pos = forward ? 0 : line.text.length - 1, end = forward ? line.text.length : -1;
if (line.text.length > maxScanLen) return null;
if (start != null) pos = start + d;
for (; pos != end; pos += d) {
var ch = line.text.charAt(pos);
if (re.test(ch) && cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style) {
var match = matching[ch];
if (match.charAt(1) == ">" == forward) stack.push(ch);
else if (stack.pop() != match.charAt(0)) return {pos: pos, match: false};
else if (!stack.length) return {pos: pos, match: true};
}
}
}
for (var i = cur.line, found, e = forward ? Math.min(i + maxScanLines, cm.lineCount()) : Math.max(-1, i - maxScanLines); i != e; i+=d) {
if (i == cur.line) found = scan(line, i, pos);
else found = scan(cm.getLineHandle(i), i);
if (found) break;
}
return {from: Pos(cur.line, pos), to: found && Pos(i, found.pos),
match: found && found.match, forward: forward};
}
function matchBrackets(cm, autoclear) {
// Disable brace matching in long lines, since it'll cause hugely slow updates
var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;
var found = findMatchingBracket(cm);
if (!found || cm.getLine(found.from.line).length > maxHighlightLen ||
found.to && cm.getLine(found.to.line).length > maxHighlightLen)
return;
var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
var one = cm.markText(found.from, Pos(found.from.line, found.from.ch + 1), {className: style});
var two = found.to && cm.markText(found.to, Pos(found.to.line, found.to.ch + 1), {className: style});
// Kludge to work around the IE bug from issue #1193, where text
// input stops going to the textare whever this fires.
if (ie_lt8 && cm.state.focused) cm.display.input.focus();
var clear = function() {
cm.operation(function() { one.clear(); two && two.clear(); });
};
if (autoclear) setTimeout(clear, 800);
else return clear;
}
var currentlyHighlighted = null;
function doMatchBrackets(cm) {
cm.operation(function() {
if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}
if (!cm.somethingSelected()) currentlyHighlighted = matchBrackets(cm, false);
});
}
CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) {
if (old && old != CodeMirror.Init)
cm.off("cursorActivity", doMatchBrackets);
if (val) {
cm.state.matchBrackets = typeof val == "object" ? val : {};
cm.on("cursorActivity", doMatchBrackets);
}
});
CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);});
CodeMirror.defineExtension("findMatchingBracket", function(pos, strict){
return findMatchingBracket(this, pos, strict);
});
})();

View File

@ -0,0 +1,56 @@
(function() {
"use strict";
CodeMirror.defineOption("matchTags", false, function(cm, val, old) {
if (old && old != CodeMirror.Init) {
cm.off("cursorActivity", doMatchTags);
cm.off("viewportChange", maybeUpdateMatch);
clear(cm);
}
if (val) {
cm.state.matchBothTags = typeof val == "object" && val.bothTags;
cm.on("cursorActivity", doMatchTags);
cm.on("viewportChange", maybeUpdateMatch);
doMatchTags(cm);
}
});
function clear(cm) {
if (cm.state.tagHit) cm.state.tagHit.clear();
if (cm.state.tagOther) cm.state.tagOther.clear();
cm.state.tagHit = cm.state.tagOther = null;
}
function doMatchTags(cm) {
cm.state.failedTagMatch = false;
cm.operation(function() {
clear(cm);
if (cm.somethingSelected()) return;
var cur = cm.getCursor(), range = cm.getViewport();
range.from = Math.min(range.from, cur.line); range.to = Math.max(cur.line + 1, range.to);
var match = CodeMirror.findMatchingTag(cm, cur, range);
if (!match) return;
if (cm.state.matchBothTags) {
var hit = match.at == "open" ? match.open : match.close;
if (hit) cm.state.tagHit = cm.markText(hit.from, hit.to, {className: "CodeMirror-matchingtag"});
}
var other = match.at == "close" ? match.open : match.close;
if (other)
cm.state.tagOther = cm.markText(other.from, other.to, {className: "CodeMirror-matchingtag"});
else
cm.state.failedTagMatch = true;
});
}
function maybeUpdateMatch(cm) {
if (cm.state.failedTagMatch) doMatchTags(cm);
}
CodeMirror.commands.toMatchingTag = function(cm) {
var found = CodeMirror.findMatchingTag(cm, cm.getCursor());
if (found) {
var other = found.at == "close" ? found.open : found.close;
if (other) cm.setSelection(other.to, other.from);
}
};
})();

View File

@ -0,0 +1,15 @@
CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) {
if (prev == CodeMirror.Init) prev = false;
if (prev && !val)
cm.removeOverlay("trailingspace");
else if (!prev && val)
cm.addOverlay({
token: function(stream) {
for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {}
if (i > stream.pos) { stream.pos = i; return null; }
stream.pos = l;
return "trailingspace";
},
name: "trailingspace"
});
});

View File

@ -0,0 +1,93 @@
CodeMirror.registerHelper("fold", "brace", function(cm, start) {
var line = start.line, lineText = cm.getLine(line);
var startCh, tokenType;
function findOpening(openCh) {
for (var at = start.ch, pass = 0;;) {
var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);
if (found == -1) {
if (pass == 1) break;
pass = 1;
at = lineText.length;
continue;
}
if (pass == 1 && found < start.ch) break;
tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));
if (!/^(comment|string)/.test(tokenType)) return found + 1;
at = found - 1;
}
}
var startToken = "{", endToken = "}", startCh = findOpening("{");
if (startCh == null) {
startToken = "[", endToken = "]";
startCh = findOpening("[");
}
if (startCh == null) return;
var count = 1, lastLine = cm.lastLine(), end, endCh;
outer: for (var i = line; i <= lastLine; ++i) {
var text = cm.getLine(i), pos = i == line ? startCh : 0;
for (;;) {
var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);
if (nextOpen < 0) nextOpen = text.length;
if (nextClose < 0) nextClose = text.length;
pos = Math.min(nextOpen, nextClose);
if (pos == text.length) break;
if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {
if (pos == nextOpen) ++count;
else if (!--count) { end = i; endCh = pos; break outer; }
}
++pos;
}
}
if (end == null || line == end && endCh == startCh) return;
return {from: CodeMirror.Pos(line, startCh),
to: CodeMirror.Pos(end, endCh)};
});
CodeMirror.braceRangeFinder = CodeMirror.fold.brace; // deprecated
CodeMirror.registerHelper("fold", "import", function(cm, start) {
function hasImport(line) {
if (line < cm.firstLine() || line > cm.lastLine()) return null;
var start = cm.getTokenAt(CodeMirror.Pos(line, 1));
if (!/\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));
if (start.type != "keyword" || start.string != "import") return null;
// Now find closing semicolon, return its position
for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {
var text = cm.getLine(i), semi = text.indexOf(";");
if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};
}
}
var start = start.line, has = hasImport(start), prev;
if (!has || hasImport(start - 1) || ((prev = hasImport(start - 2)) && prev.end.line == start - 1))
return null;
for (var end = has.end;;) {
var next = hasImport(end.line + 1);
if (next == null) break;
end = next.end;
}
return {from: cm.clipPos(CodeMirror.Pos(start, has.startCh + 1)), to: end};
});
CodeMirror.importRangeFinder = CodeMirror.fold["import"]; // deprecated
CodeMirror.registerHelper("fold", "include", function(cm, start) {
function hasInclude(line) {
if (line < cm.firstLine() || line > cm.lastLine()) return null;
var start = cm.getTokenAt(CodeMirror.Pos(line, 1));
if (!/\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));
if (start.type == "meta" && start.string.slice(0, 8) == "#include") return start.start + 8;
}
var start = start.line, has = hasInclude(start);
if (has == null || hasInclude(start - 1) != null) return null;
for (var end = start;;) {
var next = hasInclude(end + 1);
if (next == null) break;
++end;
}
return {from: CodeMirror.Pos(start, has + 1),
to: cm.clipPos(CodeMirror.Pos(end))};
});
CodeMirror.includeRangeFinder = CodeMirror.fold.include; // deprecated

View File

@ -0,0 +1,40 @@
CodeMirror.registerHelper("fold", "comment", function(cm, start) {
var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd;
if (!startToken || !endToken) return;
var line = start.line, lineText = cm.getLine(line);
var startCh;
for (var at = start.ch, pass = 0;;) {
var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1);
if (found == -1) {
if (pass == 1) return;
pass = 1;
at = lineText.length;
continue;
}
if (pass == 1 && found < start.ch) return;
if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)))) {
startCh = found + startToken.length;
break;
}
at = found - 1;
}
var depth = 1, lastLine = cm.lastLine(), end, endCh;
outer: for (var i = line; i <= lastLine; ++i) {
var text = cm.getLine(i), pos = i == line ? startCh : 0;
for (;;) {
var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);
if (nextOpen < 0) nextOpen = text.length;
if (nextClose < 0) nextClose = text.length;
pos = Math.min(nextOpen, nextClose);
if (pos == text.length) break;
if (pos == nextOpen) ++depth;
else if (!--depth) { end = i; endCh = pos; break outer; }
++pos;
}
}
if (end == null || line == end && endCh == startCh) return;
return {from: CodeMirror.Pos(line, startCh),
to: CodeMirror.Pos(end, endCh)};
});

View File

@ -0,0 +1,75 @@
(function() {
"use strict";
function doFold(cm, pos, options, force) {
var finder = options && (options.call ? options : options.rangeFinder);
if (!finder) finder = cm.getHelper(pos, "fold");
if (!finder) return;
if (typeof pos == "number") pos = CodeMirror.Pos(pos, 0);
var minSize = options && options.minFoldSize || 0;
function getRange(allowFolded) {
var range = finder(cm, pos);
if (!range || range.to.line - range.from.line < minSize) return null;
var marks = cm.findMarksAt(range.from);
for (var i = 0; i < marks.length; ++i) {
if (marks[i].__isFold && force !== "fold") {
if (!allowFolded) return null;
range.cleared = true;
marks[i].clear();
}
}
return range;
}
var range = getRange(true);
if (options && options.scanUp) while (!range && pos.line > cm.firstLine()) {
pos = CodeMirror.Pos(pos.line - 1, 0);
range = getRange(false);
}
if (!range || range.cleared || force === "unfold") return;
var myWidget = makeWidget(options);
CodeMirror.on(myWidget, "mousedown", function() { myRange.clear(); });
var myRange = cm.markText(range.from, range.to, {
replacedWith: myWidget,
clearOnEnter: true,
__isFold: true
});
myRange.on("clear", function(from, to) {
CodeMirror.signal(cm, "unfold", cm, from, to);
});
CodeMirror.signal(cm, "fold", cm, range.from, range.to);
}
function makeWidget(options) {
var widget = (options && options.widget) || "\u2194";
if (typeof widget == "string") {
var text = document.createTextNode(widget);
widget = document.createElement("span");
widget.appendChild(text);
widget.className = "CodeMirror-foldmarker";
}
return widget;
}
// Clumsy backwards-compatible interface
CodeMirror.newFoldFunction = function(rangeFinder, widget) {
return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };
};
// New-style interface
CodeMirror.defineExtension("foldCode", function(pos, options, force) {
doFold(this, pos, options, force);
});
CodeMirror.registerHelper("fold", "combine", function() {
var funcs = Array.prototype.slice.call(arguments, 0);
return function(cm, start) {
for (var i = 0; i < funcs.length; ++i) {
var found = funcs[i](cm, start);
if (found) return found;
}
};
});
})();

View File

@ -0,0 +1,21 @@
.CodeMirror-foldmarker {
color: blue;
text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px;
font-family: arial;
line-height: .3;
cursor: pointer;
}
.CodeMirror-foldgutter {
width: .7em;
}
.CodeMirror-foldgutter-open,
.CodeMirror-foldgutter-folded {
color: #555;
cursor: pointer;
}
.CodeMirror-foldgutter-open:after {
content: "\25BE";
}
.CodeMirror-foldgutter-folded:after {
content: "\25B8";
}

View File

@ -0,0 +1,124 @@
(function() {
"use strict";
CodeMirror.defineOption("foldGutter", false, function(cm, val, old) {
if (old && old != CodeMirror.Init) {
cm.clearGutter(cm.state.foldGutter.options.gutter);
cm.state.foldGutter = null;
cm.off("gutterClick", onGutterClick);
cm.off("change", onChange);
cm.off("viewportChange", onViewportChange);
cm.off("fold", onFold);
cm.off("unfold", onFold);
cm.off("swapDoc", updateInViewport);
}
if (val) {
cm.state.foldGutter = new State(parseOptions(val));
updateInViewport(cm);
cm.on("gutterClick", onGutterClick);
cm.on("change", onChange);
cm.on("viewportChange", onViewportChange);
cm.on("fold", onFold);
cm.on("unfold", onFold);
cm.on("swapDoc", updateInViewport);
}
});
var Pos = CodeMirror.Pos;
function State(options) {
this.options = options;
this.from = this.to = 0;
}
function parseOptions(opts) {
if (opts === true) opts = {};
if (opts.gutter == null) opts.gutter = "CodeMirror-foldgutter";
if (opts.indicatorOpen == null) opts.indicatorOpen = "CodeMirror-foldgutter-open";
if (opts.indicatorFolded == null) opts.indicatorFolded = "CodeMirror-foldgutter-folded";
return opts;
}
function isFolded(cm, line) {
var marks = cm.findMarksAt(Pos(line));
for (var i = 0; i < marks.length; ++i)
if (marks[i].__isFold && marks[i].find().from.line == line) return true;
}
function marker(spec) {
if (typeof spec == "string") {
var elt = document.createElement("div");
elt.className = spec;
return elt;
} else {
return spec.cloneNode(true);
}
}
function updateFoldInfo(cm, from, to) {
var opts = cm.state.foldGutter.options, cur = from;
cm.eachLine(from, to, function(line) {
var mark = null;
if (isFolded(cm, cur)) {
mark = marker(opts.indicatorFolded);
} else {
var pos = Pos(cur, 0), func = opts.rangeFinder || cm.getHelper(pos, "fold");
var range = func && func(cm, pos);
if (range && range.from.line + 1 < range.to.line)
mark = marker(opts.indicatorOpen);
}
cm.setGutterMarker(line, opts.gutter, mark);
++cur;
});
}
function updateInViewport(cm) {
var vp = cm.getViewport(), state = cm.state.foldGutter;
if (!state) return;
cm.operation(function() {
updateFoldInfo(cm, vp.from, vp.to);
});
state.from = vp.from; state.to = vp.to;
}
function onGutterClick(cm, line, gutter) {
var opts = cm.state.foldGutter.options;
if (gutter != opts.gutter) return;
cm.foldCode(Pos(line, 0), opts.rangeFinder);
}
function onChange(cm) {
var state = cm.state.foldGutter, opts = cm.state.foldGutter.options;
state.from = state.to = 0;
clearTimeout(state.changeUpdate);
state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);
}
function onViewportChange(cm) {
var state = cm.state.foldGutter, opts = cm.state.foldGutter.options;
clearTimeout(state.changeUpdate);
state.changeUpdate = setTimeout(function() {
var vp = cm.getViewport();
if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {
updateInViewport(cm);
} else {
cm.operation(function() {
if (vp.from < state.from) {
updateFoldInfo(cm, vp.from, state.from);
state.from = vp.from;
}
if (vp.to > state.to) {
updateFoldInfo(cm, state.to, vp.to);
state.to = vp.to;
}
});
}
}, opts.updateViewportTimeSpan || 400);
}
function onFold(cm, from) {
var state = cm.state.foldGutter, line = from.line;
if (line >= state.from && line < state.to)
updateFoldInfo(cm, line, line + 1);
}
})();

View File

@ -0,0 +1,30 @@
CodeMirror.registerHelper("fold", "indent", function(cm, start) {
var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line);
if (!/\S/.test(firstLine)) return;
var getIndent = function(lineNum) {
return CodeMirror.countColumn(lineNum, null, tabSize);
};
var myIndent = getIndent(firstLine);
var lastLineInFold = null;
// Go through lines until we find a line that definitely doesn't belong in
// the block we're folding, or to the end.
for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) {
var curLine = cm.getLine(i);
var curIndent = getIndent(curLine);
if (curIndent > myIndent) {
// Lines with a greater indent are considered part of the block.
lastLineInFold = i;
} else if (!/\S/.test(curLine)) {
// Empty lines might be breaks within the block we're trying to fold.
} else {
// A non-empty line at an indent equal to or less than ours marks the
// start of another block.
break;
}
}
if (lastLineInFold) return {
from: CodeMirror.Pos(start.line, firstLine.length),
to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)
};
});
CodeMirror.indentRangeFinder = CodeMirror.fold.indent; // deprecated

View File

@ -0,0 +1,167 @@
(function() {
"use strict";
var Pos = CodeMirror.Pos;
function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }
var nameStartChar = "A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
var nameChar = nameStartChar + "\-\:\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
var xmlTagStart = new RegExp("<(/?)([" + nameStartChar + "][" + nameChar + "]*)", "g");
function Iter(cm, line, ch, range) {
this.line = line; this.ch = ch;
this.cm = cm; this.text = cm.getLine(line);
this.min = range ? range.from : cm.firstLine();
this.max = range ? range.to - 1 : cm.lastLine();
}
function tagAt(iter, ch) {
var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));
return type && /\btag\b/.test(type);
}
function nextLine(iter) {
if (iter.line >= iter.max) return;
iter.ch = 0;
iter.text = iter.cm.getLine(++iter.line);
return true;
}
function prevLine(iter) {
if (iter.line <= iter.min) return;
iter.text = iter.cm.getLine(--iter.line);
iter.ch = iter.text.length;
return true;
}
function toTagEnd(iter) {
for (;;) {
var gt = iter.text.indexOf(">", iter.ch);
if (gt == -1) { if (nextLine(iter)) continue; else return; }
if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }
var lastSlash = iter.text.lastIndexOf("/", gt);
var selfClose = lastSlash > -1 && !/\S/.test(iter.text.slice(lastSlash + 1, gt));
iter.ch = gt + 1;
return selfClose ? "selfClose" : "regular";
}
}
function toTagStart(iter) {
for (;;) {
var lt = iter.ch ? iter.text.lastIndexOf("<", iter.ch - 1) : -1;
if (lt == -1) { if (prevLine(iter)) continue; else return; }
if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }
xmlTagStart.lastIndex = lt;
iter.ch = lt;
var match = xmlTagStart.exec(iter.text);
if (match && match.index == lt) return match;
}
}
function toNextTag(iter) {
for (;;) {
xmlTagStart.lastIndex = iter.ch;
var found = xmlTagStart.exec(iter.text);
if (!found) { if (nextLine(iter)) continue; else return; }
if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }
iter.ch = found.index + found[0].length;
return found;
}
}
function toPrevTag(iter) {
for (;;) {
var gt = iter.ch ? iter.text.lastIndexOf(">", iter.ch - 1) : -1;
if (gt == -1) { if (prevLine(iter)) continue; else return; }
if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }
var lastSlash = iter.text.lastIndexOf("/", gt);
var selfClose = lastSlash > -1 && !/\S/.test(iter.text.slice(lastSlash + 1, gt));
iter.ch = gt + 1;
return selfClose ? "selfClose" : "regular";
}
}
function findMatchingClose(iter, tag) {
var stack = [];
for (;;) {
var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);
if (!next || !(end = toTagEnd(iter))) return;
if (end == "selfClose") continue;
if (next[1]) { // closing tag
for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {
stack.length = i;
break;
}
if (i < 0 && (!tag || tag == next[2])) return {
tag: next[2],
from: Pos(startLine, startCh),
to: Pos(iter.line, iter.ch)
};
} else { // opening tag
stack.push(next[2]);
}
}
}
function findMatchingOpen(iter, tag) {
var stack = [];
for (;;) {
var prev = toPrevTag(iter);
if (!prev) return;
if (prev == "selfClose") { toTagStart(iter); continue; }
var endLine = iter.line, endCh = iter.ch;
var start = toTagStart(iter);
if (!start) return;
if (start[1]) { // closing tag
stack.push(start[2]);
} else { // opening tag
for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {
stack.length = i;
break;
}
if (i < 0 && (!tag || tag == start[2])) return {
tag: start[2],
from: Pos(iter.line, iter.ch),
to: Pos(endLine, endCh)
};
}
}
}
CodeMirror.registerHelper("fold", "xml", function(cm, start) {
var iter = new Iter(cm, start.line, 0);
for (;;) {
var openTag = toNextTag(iter), end;
if (!openTag || iter.line != start.line || !(end = toTagEnd(iter))) return;
if (!openTag[1] && end != "selfClose") {
var start = Pos(iter.line, iter.ch);
var close = findMatchingClose(iter, openTag[2]);
return close && {from: start, to: close.from};
}
}
});
CodeMirror.tagRangeFinder = CodeMirror.fold.xml; // deprecated
CodeMirror.findMatchingTag = function(cm, pos, range) {
var iter = new Iter(cm, pos.line, pos.ch, range);
if (iter.text.indexOf(">") == -1 && iter.text.indexOf("<") == -1) return;
var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);
var start = end && toTagStart(iter);
if (!end || end == "selfClose" || !start || cmp(iter, pos) > 0) return;
var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};
if (start[1]) { // closing tag
return {open: findMatchingOpen(iter, start[2]), close: here, at: "close"};
} else { // opening tag
iter = new Iter(cm, to.line, to.ch, range);
return {open: here, close: findMatchingClose(iter, start[2]), at: "open"};
}
};
CodeMirror.findEnclosingTag = function(cm, pos, range) {
var iter = new Iter(cm, pos.line, pos.ch, range);
for (;;) {
var open = findMatchingOpen(iter);
if (!open) break;
var forward = new Iter(cm, pos.line, pos.ch, range);
var close = findMatchingClose(forward, open.tag);
if (close) return {open: open, close: close};
}
};
})();

View File

@ -0,0 +1,34 @@
(function() {
"use strict";
var WORD = /[\w$]+/, RANGE = 500;
CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
var word = options && options.word || WORD;
var range = options && options.range || RANGE;
var cur = editor.getCursor(), curLine = editor.getLine(cur.line);
var start = cur.ch, end = start;
while (end < curLine.length && word.test(curLine.charAt(end))) ++end;
while (start && word.test(curLine.charAt(start - 1))) --start;
var curWord = start != end && curLine.slice(start, end);
var list = [], seen = {};
function scan(dir) {
var line = cur.line, end = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;
for (; line != end; line += dir) {
var text = editor.getLine(line), m;
var re = new RegExp(word.source, "g");
while (m = re.exec(text)) {
if (line == cur.line && m[0] === curWord) continue;
if ((!curWord || m[0].indexOf(curWord) == 0) && !seen.hasOwnProperty(m[0])) {
seen[m[0]] = true;
list.push(m[0]);
}
}
}
}
scan(-1);
scan(1);
return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
});
})();

View File

@ -0,0 +1,50 @@
(function () {
"use strict";
function getHints(cm) {
var cur = cm.getCursor(), token = cm.getTokenAt(cur);
var inner = CodeMirror.innerMode(cm.getMode(), token.state);
if (inner.mode.name != "css") return;
// If it's not a 'word-style' token, ignore the token.
if (!/^[\w$_-]*$/.test(token.string)) {
token = {
start: cur.ch, end: cur.ch, string: "", state: token.state,
type: null
};
var stack = token.state.stack;
var lastToken = stack && stack.length > 0 ? stack[stack.length - 1] : "";
if (token.string == ":" || lastToken.indexOf("property") == 0)
token.type = "variable";
else if (token.string == "{" || lastToken.indexOf("rule") == 0)
token.type = "property";
}
if (!token.type)
return;
var spec = CodeMirror.resolveMode("text/css");
var keywords = null;
if (token.type.indexOf("property") == 0)
keywords = spec.propertyKeywords;
else if (token.type.indexOf("variable") == 0)
keywords = spec.valueKeywords;
if (!keywords)
return;
var result = [];
for (var name in keywords) {
if (name.indexOf(token.string) == 0 /* > -1 */)
result.push(name);
}
return {
list: result,
from: CodeMirror.Pos(cur.line, token.start),
to: CodeMirror.Pos(cur.line, token.end)
};
}
CodeMirror.registerHelper("hint", "css", getHints);
})();

View File

@ -0,0 +1,337 @@
(function () {
var langs = "ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" ");
var targets = ["_blank", "_self", "_top", "_parent"];
var charsets = ["ascii", "utf-8", "utf-16", "latin1", "latin1"];
var methods = ["get", "post", "put", "delete"];
var encs = ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"];
var media = ["all", "screen", "print", "embossed", "braille", "handheld", "print", "projection", "screen", "tty", "tv", "speech",
"3d-glasses", "resolution [>][<][=] [X]", "device-aspect-ratio: X/Y", "orientation:portrait",
"orientation:landscape", "device-height: [X]", "device-width: [X]"];
var s = { attrs: {} }; // Simple tag, reused for a whole lot of tags
var data = {
a: {
attrs: {
href: null, ping: null, type: null,
media: media,
target: targets,
hreflang: langs
}
},
abbr: s,
acronym: s,
address: s,
applet: s,
area: {
attrs: {
alt: null, coords: null, href: null, target: null, ping: null,
media: media, hreflang: langs, type: null,
shape: ["default", "rect", "circle", "poly"]
}
},
article: s,
aside: s,
audio: {
attrs: {
src: null, mediagroup: null,
crossorigin: ["anonymous", "use-credentials"],
preload: ["none", "metadata", "auto"],
autoplay: ["", "autoplay"],
loop: ["", "loop"],
controls: ["", "controls"]
}
},
b: s,
base: { attrs: { href: null, target: targets } },
basefont: s,
bdi: s,
bdo: s,
big: s,
blockquote: { attrs: { cite: null } },
body: s,
br: s,
button: {
attrs: {
form: null, formaction: null, name: null, value: null,
autofocus: ["", "autofocus"],
disabled: ["", "autofocus"],
formenctype: encs,
formmethod: methods,
formnovalidate: ["", "novalidate"],
formtarget: targets,
type: ["submit", "reset", "button"]
}
},
canvas: { attrs: { width: null, height: null } },
caption: s,
center: s,
cite: s,
code: s,
col: { attrs: { span: null } },
colgroup: { attrs: { span: null } },
command: {
attrs: {
type: ["command", "checkbox", "radio"],
label: null, icon: null, radiogroup: null, command: null, title: null,
disabled: ["", "disabled"],
checked: ["", "checked"]
}
},
data: { attrs: { value: null } },
datagrid: { attrs: { disabled: ["", "disabled"], multiple: ["", "multiple"] } },
datalist: { attrs: { data: null } },
dd: s,
del: { attrs: { cite: null, datetime: null } },
details: { attrs: { open: ["", "open"] } },
dfn: s,
dir: s,
div: s,
dl: s,
dt: s,
em: s,
embed: { attrs: { src: null, type: null, width: null, height: null } },
eventsource: { attrs: { src: null } },
fieldset: { attrs: { disabled: ["", "disabled"], form: null, name: null } },
figcaption: s,
figure: s,
font: s,
footer: s,
form: {
attrs: {
action: null, name: null,
"accept-charset": charsets,
autocomplete: ["on", "off"],
enctype: encs,
method: methods,
novalidate: ["", "novalidate"],
target: targets
}
},
frame: s,
frameset: s,
h1: s, h2: s, h3: s, h4: s, h5: s, h6: s,
head: {
attrs: {},
children: ["title", "base", "link", "style", "meta", "script", "noscript", "command"]
},
header: s,
hgroup: s,
hr: s,
html: {
attrs: { manifest: null },
children: ["head", "body"]
},
i: s,
iframe: {
attrs: {
src: null, srcdoc: null, name: null, width: null, height: null,
sandbox: ["allow-top-navigation", "allow-same-origin", "allow-forms", "allow-scripts"],
seamless: ["", "seamless"]
}
},
img: {
attrs: {
alt: null, src: null, ismap: null, usemap: null, width: null, height: null,
crossorigin: ["anonymous", "use-credentials"]
}
},
input: {
attrs: {
alt: null, dirname: null, form: null, formaction: null,
height: null, list: null, max: null, maxlength: null, min: null,
name: null, pattern: null, placeholder: null, size: null, src: null,
step: null, value: null, width: null,
accept: ["audio/*", "video/*", "image/*"],
autocomplete: ["on", "off"],
autofocus: ["", "autofocus"],
checked: ["", "checked"],
disabled: ["", "disabled"],
formenctype: encs,
formmethod: methods,
formnovalidate: ["", "novalidate"],
formtarget: targets,
multiple: ["", "multiple"],
readonly: ["", "readonly"],
required: ["", "required"],
type: ["hidden", "text", "search", "tel", "url", "email", "password", "datetime", "date", "month",
"week", "time", "datetime-local", "number", "range", "color", "checkbox", "radio",
"file", "submit", "image", "reset", "button"]
}
},
ins: { attrs: { cite: null, datetime: null } },
kbd: s,
keygen: {
attrs: {
challenge: null, form: null, name: null,
autofocus: ["", "autofocus"],
disabled: ["", "disabled"],
keytype: ["RSA"]
}
},
label: { attrs: { "for": null, form: null } },
legend: s,
li: { attrs: { value: null } },
link: {
attrs: {
href: null, type: null,
hreflang: langs,
media: media,
sizes: ["all", "16x16", "16x16 32x32", "16x16 32x32 64x64"]
}
},
map: { attrs: { name: null } },
mark: s,
menu: { attrs: { label: null, type: ["list", "context", "toolbar"] } },
meta: {
attrs: {
content: null,
charset: charsets,
name: ["viewport", "application-name", "author", "description", "generator", "keywords"],
"http-equiv": ["content-language", "content-type", "default-style", "refresh"]
}
},
meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },
nav: s,
noframes: s,
noscript: s,
object: {
attrs: {
data: null, type: null, name: null, usemap: null, form: null, width: null, height: null,
typemustmatch: ["", "typemustmatch"]
}
},
ol: { attrs: { reversed: ["", "reversed"], start: null, type: ["1", "a", "A", "i", "I"] } },
optgroup: { attrs: { disabled: ["", "disabled"], label: null } },
option: { attrs: { disabled: ["", "disabled"], label: null, selected: ["", "selected"], value: null } },
output: { attrs: { "for": null, form: null, name: null } },
p: s,
param: { attrs: { name: null, value: null } },
pre: s,
progress: { attrs: { value: null, max: null } },
q: { attrs: { cite: null } },
rp: s,
rt: s,
ruby: s,
s: s,
samp: s,
script: {
attrs: {
type: ["text/javascript"],
src: null,
async: ["", "async"],
defer: ["", "defer"],
charset: charsets
}
},
section: s,
select: {
attrs: {
form: null, name: null, size: null,
autofocus: ["", "autofocus"],
disabled: ["", "disabled"],
multiple: ["", "multiple"]
}
},
small: s,
source: { attrs: { src: null, type: null, media: null } },
span: s,
strike: s,
strong: s,
style: {
attrs: {
type: ["text/css"],
media: media,
scoped: null
}
},
sub: s,
summary: s,
sup: s,
table: s,
tbody: s,
td: { attrs: { colspan: null, rowspan: null, headers: null } },
textarea: {
attrs: {
dirname: null, form: null, maxlength: null, name: null, placeholder: null,
rows: null, cols: null,
autofocus: ["", "autofocus"],
disabled: ["", "disabled"],
readonly: ["", "readonly"],
required: ["", "required"],
wrap: ["soft", "hard"]
}
},
tfoot: s,
th: { attrs: { colspan: null, rowspan: null, headers: null, scope: ["row", "col", "rowgroup", "colgroup"] } },
thead: s,
time: { attrs: { datetime: null } },
title: s,
tr: s,
track: {
attrs: {
src: null, label: null, "default": null,
kind: ["subtitles", "captions", "descriptions", "chapters", "metadata"],
srclang: langs
}
},
tt: s,
u: s,
ul: s,
"var": s,
video: {
attrs: {
src: null, poster: null, width: null, height: null,
crossorigin: ["anonymous", "use-credentials"],
preload: ["auto", "metadata", "none"],
autoplay: ["", "autoplay"],
mediagroup: ["movie"],
muted: ["", "muted"],
controls: ["", "controls"]
}
},
wbr: s
};
var globalAttrs = {
accesskey: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
"class": null,
contenteditable: ["true", "false"],
contextmenu: null,
dir: ["ltr", "rtl", "auto"],
draggable: ["true", "false", "auto"],
dropzone: ["copy", "move", "link", "string:", "file:"],
hidden: ["hidden"],
id: null,
inert: ["inert"],
itemid: null,
itemprop: null,
itemref: null,
itemscope: ["itemscope"],
itemtype: null,
lang: ["en", "es"],
spellcheck: ["true", "false"],
style: null,
tabindex: ["1", "2", "3", "4", "5", "6", "7", "8", "9"],
title: null,
translate: ["yes", "no"],
onclick: null,
rel: ["stylesheet", "alternate", "author", "bookmark", "help", "license", "next", "nofollow", "noreferrer", "prefetch", "prev", "search", "tag"]
};
function populate(obj) {
for (var attr in globalAttrs) if (globalAttrs.hasOwnProperty(attr))
obj.attrs[attr] = globalAttrs[attr];
}
populate(s);
for (var tag in data) if (data.hasOwnProperty(tag) && data[tag] != s)
populate(data[tag]);
CodeMirror.htmlSchema = data;
function htmlHint(cm, options) {
var local = {schemaInfo: data};
if (options) for (var opt in options) local[opt] = options[opt];
return CodeMirror.hint.xml(cm, local);
}
CodeMirror.htmlHint = htmlHint; // deprecated
CodeMirror.registerHelper("hint", "html", htmlHint);
})();

View File

@ -0,0 +1,131 @@
(function () {
var Pos = CodeMirror.Pos;
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
if (arr[i] === item) {
return true;
}
}
return false;
}
return arr.indexOf(item) != -1;
}
function scriptHint(editor, keywords, getToken, options) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
if (/\b(?:string|comment)\b/.test(token.type)) return;
token.state = CodeMirror.innerMode(editor.getMode(), token.state).state;
// If it's not a 'word-style' token, ignore the token.
if (!/^[\w$_]*$/.test(token.string)) {
token = tprop = {start: cur.ch, end: cur.ch, string: "", state: token.state,
type: token.string == "." ? "property" : null};
}
// If it is a property, find out what it is a property of.
while (tprop.type == "property") {
tprop = getToken(editor, Pos(cur.line, tprop.start));
if (tprop.string != ".") return;
tprop = getToken(editor, Pos(cur.line, tprop.start));
if (!context) var context = [];
context.push(tprop);
}
return {list: getCompletions(token, context, keywords, options),
from: Pos(cur.line, token.start),
to: Pos(cur.line, token.end)};
}
function javascriptHint(editor, options) {
return scriptHint(editor, javascriptKeywords,
function (e, cur) {return e.getTokenAt(cur);},
options);
};
CodeMirror.javascriptHint = javascriptHint; // deprecated
CodeMirror.registerHelper("hint", "javascript", javascriptHint);
function getCoffeeScriptToken(editor, cur) {
// This getToken, it is for coffeescript, imitates the behavior of
// getTokenAt method in javascript.js, that is, returning "property"
// type and treat "." as indepenent token.
var token = editor.getTokenAt(cur);
if (cur.ch == token.start + 1 && token.string.charAt(0) == '.') {
token.end = token.start;
token.string = '.';
token.type = "property";
}
else if (/^\.[\w$_]*$/.test(token.string)) {
token.type = "property";
token.start++;
token.string = token.string.replace(/\./, '');
}
return token;
}
function coffeescriptHint(editor, options) {
return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken, options);
}
CodeMirror.coffeescriptHint = coffeescriptHint; // deprecated
CodeMirror.registerHelper("hint", "coffeescript", coffeescriptHint);
var stringProps = ("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight " +
"toUpperCase toLowerCase split concat match replace search").split(" ");
var arrayProps = ("length concat join splice push pop shift unshift slice reverse sort indexOf " +
"lastIndexOf every some filter forEach map reduce reduceRight ").split(" ");
var funcProps = "prototype apply call bind".split(" ");
var javascriptKeywords = ("break case catch continue debugger default delete do else false finally for function " +
"if in instanceof new null return switch throw true try typeof var void while with").split(" ");
var coffeescriptKeywords = ("and break catch class continue delete do else extends false finally for " +
"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" ");
function getCompletions(token, context, keywords, options) {
var found = [], start = token.string;
function maybeAdd(str) {
if (str.indexOf(start) == 0 && !arrayContains(found, str)) found.push(str);
}
function gatherCompletions(obj) {
if (typeof obj == "string") forEach(stringProps, maybeAdd);
else if (obj instanceof Array) forEach(arrayProps, maybeAdd);
else if (obj instanceof Function) forEach(funcProps, maybeAdd);
for (var name in obj) maybeAdd(name);
}
if (context && context.length) {
// If this is a property, see if it belongs to some object we can
// find in the current environment.
var obj = context.pop(), base;
if (obj.type && obj.type.indexOf("variable") === 0) {
if (options && options.additionalContext)
base = options.additionalContext[obj.string];
base = base || window[obj.string];
} else if (obj.type == "string") {
base = "";
} else if (obj.type == "atom") {
base = 1;
} else if (obj.type == "function") {
if (window.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') &&
(typeof window.jQuery == 'function'))
base = window.jQuery();
else if (window._ != null && (obj.string == '_') && (typeof window._ == 'function'))
base = window._();
}
while (base != null && context.length)
base = base[context.pop().string];
if (base != null) gatherCompletions(base);
} else {
// If not, just look in the window object and any local scope
// (reading into JS mode internals to get at the local and global variables)
for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);
for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name);
gatherCompletions(window);
forEach(keywords, maybeAdd);
}
return found;
}
})();

View File

@ -0,0 +1,121 @@
(function () {
"use strict";
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
if (arr[i] === item) {
return true;
}
}
return false;
}
return arr.indexOf(item) != -1;
}
function scriptHint(editor, _keywords, getToken) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
// If it's not a 'word-style' token, ignore the token.
if (!/^[\w$_]*$/.test(token.string)) {
token = tprop = {start: cur.ch, end: cur.ch, string: "", state: token.state,
className: token.string == ":" ? "pig-type" : null};
}
if (!context) var context = [];
context.push(tprop);
var completionList = getCompletions(token, context);
completionList = completionList.sort();
//prevent autocomplete for last word, instead show dropdown with one word
if(completionList.length == 1) {
completionList.push(" ");
}
return {list: completionList,
from: CodeMirror.Pos(cur.line, token.start),
to: CodeMirror.Pos(cur.line, token.end)};
}
function pigHint(editor) {
return scriptHint(editor, pigKeywordsU, function (e, cur) {return e.getTokenAt(cur);});
}
CodeMirror.pigHint = pigHint; // deprecated
CodeMirror.registerHelper("hint", "pig", pigHint);
var pigKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP "
+ "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL "
+ "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE "
+ "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE "
+ "NEQ MATCHES TRUE FALSE";
var pigKeywordsU = pigKeywords.split(" ");
var pigKeywordsL = pigKeywords.toLowerCase().split(" ");
var pigTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP";
var pigTypesU = pigTypes.split(" ");
var pigTypesL = pigTypes.toLowerCase().split(" ");
var pigBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL "
+ "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS "
+ "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG "
+ "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN "
+ "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER "
+ "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS "
+ "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA "
+ "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE "
+ "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG "
+ "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER";
var pigBuiltinsU = pigBuiltins.split(" ").join("() ").split(" ");
var pigBuiltinsL = pigBuiltins.toLowerCase().split(" ").join("() ").split(" ");
var pigBuiltinsC = ("BagSize BinStorage Bloom BuildBloom ConstantSize CubeDimensions DoubleAbs "
+ "DoubleAvg DoubleBase DoubleMax DoubleMin DoubleRound DoubleSum FloatAbs FloatAvg FloatMax "
+ "FloatMin FloatRound FloatSum GenericInvoker IntAbs IntAvg IntMax IntMin IntSum "
+ "InvokeForDouble InvokeForFloat InvokeForInt InvokeForLong InvokeForString Invoker "
+ "IsEmpty JsonLoader JsonMetadata JsonStorage LongAbs LongAvg LongMax LongMin LongSum MapSize "
+ "MonitoredUDF Nondeterministic OutputSchema PigStorage PigStreaming StringConcat StringMax "
+ "StringMin StringSize TextLoader TupleSize Utf8StorageConverter").split(" ").join("() ").split(" ");
function getCompletions(token, context) {
var found = [], start = token.string;
function maybeAdd(str) {
if (str.indexOf(start) == 0 && !arrayContains(found, str)) found.push(str);
}
function gatherCompletions(obj) {
if(obj == ":") {
forEach(pigTypesL, maybeAdd);
}
else {
forEach(pigBuiltinsU, maybeAdd);
forEach(pigBuiltinsL, maybeAdd);
forEach(pigBuiltinsC, maybeAdd);
forEach(pigTypesU, maybeAdd);
forEach(pigTypesL, maybeAdd);
forEach(pigKeywordsU, maybeAdd);
forEach(pigKeywordsL, maybeAdd);
}
}
if (context) {
// If this is a property, see if it belongs to some object we can
// find in the current environment.
var obj = context.pop(), base;
if (obj.type == "variable")
base = obj.string;
else if(obj.type == "variable-3")
base = ":" + obj.string;
while (base != null && context.length)
base = base[context.pop().string];
if (base != null) gatherCompletions(base);
}
return found;
}
})();

View File

@ -0,0 +1,95 @@
(function () {
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
if (arr[i] === item) {
return true;
}
}
return false;
}
return arr.indexOf(item) != -1;
}
function scriptHint(editor, _keywords, getToken) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
// If it's not a 'word-style' token, ignore the token.
if (!/^[\w$_]*$/.test(token.string)) {
token = tprop = {start: cur.ch, end: cur.ch, string: "", state: token.state,
className: token.string == ":" ? "python-type" : null};
}
if (!context) var context = [];
context.push(tprop);
var completionList = getCompletions(token, context);
completionList = completionList.sort();
//prevent autocomplete for last word, instead show dropdown with one word
if(completionList.length == 1) {
completionList.push(" ");
}
return {list: completionList,
from: CodeMirror.Pos(cur.line, token.start),
to: CodeMirror.Pos(cur.line, token.end)};
}
function pythonHint(editor) {
return scriptHint(editor, pythonKeywordsU, function (e, cur) {return e.getTokenAt(cur);});
}
CodeMirror.pythonHint = pythonHint; // deprecated
CodeMirror.registerHelper("hint", "python", pythonHint);
var pythonKeywords = "and del from not while as elif global or with assert else if pass yield"
+ "break except import print class exec in raise continue finally is return def for lambda try";
var pythonKeywordsL = pythonKeywords.split(" ");
var pythonKeywordsU = pythonKeywords.toUpperCase().split(" ");
var pythonBuiltins = "abs divmod input open staticmethod all enumerate int ord str "
+ "any eval isinstance pow sum basestring execfile issubclass print super"
+ "bin file iter property tuple bool filter len range type"
+ "bytearray float list raw_input unichr callable format locals reduce unicode"
+ "chr frozenset long reload vars classmethod getattr map repr xrange"
+ "cmp globals max reversed zip compile hasattr memoryview round __import__"
+ "complex hash min set apply delattr help next setattr buffer"
+ "dict hex object slice coerce dir id oct sorted intern ";
var pythonBuiltinsL = pythonBuiltins.split(" ").join("() ").split(" ");
var pythonBuiltinsU = pythonBuiltins.toUpperCase().split(" ").join("() ").split(" ");
function getCompletions(token, context) {
var found = [], start = token.string;
function maybeAdd(str) {
if (str.indexOf(start) == 0 && !arrayContains(found, str)) found.push(str);
}
function gatherCompletions(_obj) {
forEach(pythonBuiltinsL, maybeAdd);
forEach(pythonBuiltinsU, maybeAdd);
forEach(pythonKeywordsL, maybeAdd);
forEach(pythonKeywordsU, maybeAdd);
}
if (context) {
// If this is a property, see if it belongs to some object we can
// find in the current environment.
var obj = context.pop(), base;
if (obj.type == "variable")
base = obj.string;
else if(obj.type == "variable-3")
base = ":" + obj.string;
while (base != null && context.length)
base = base[context.pop().string];
if (base != null) gatherCompletions(base);
}
return found;
}
})();

View File

@ -0,0 +1,38 @@
.CodeMirror-hints {
position: absolute;
z-index: 10;
overflow: hidden;
list-style: none;
margin: 0;
padding: 2px;
-webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
-moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
box-shadow: 2px 3px 5px rgba(0,0,0,.2);
border-radius: 3px;
border: 1px solid silver;
background: white;
font-size: 90%;
font-family: monospace;
max-height: 20em;
overflow-y: auto;
}
.CodeMirror-hint {
margin: 0;
padding: 0 4px;
border-radius: 2px;
max-width: 19em;
overflow: hidden;
white-space: pre;
color: black;
cursor: pointer;
}
.CodeMirror-hint-active {
background: #08f;
color: white;
}

Some files were not shown because too many files have changed in this diff Show More