관심자료 css, 관심온오프

This commit is contained in:
JSYOO 2021-11-09 10:16:03 +09:00
parent c1e3a619e0
commit 647f05974b
45 changed files with 2013 additions and 1023 deletions

View File

@ -11,7 +11,7 @@ public interface InterestService
public int countListInterests(CollectionVO vo);
public void deleteInterests(List<Integer> mbInterestIdList, String mbInfoId);
public void deleteInterests(List<String> masterIdList, String mbInfoId);
public void insertInterest(CollectionVO vo);

View File

@ -45,12 +45,11 @@ public class InterestServiceImpl implements InterestService
* (non-Javadoc)
* @see nlib.col.service.CollectionService#deleteInterests(java.util.List)
*/
public void deleteInterests(List<Integer> mbInterestIdList,String mbInfoId) {
public void deleteInterests(List<String> masterIdList,String mbInfoId) {
CollectionVO vo = new CollectionVO();
vo.setMbInfoId(mbInfoId);
for(Integer mbInterestId : mbInterestIdList) {
vo.setMbInterestId(mbInterestId);
for(String masterId : masterIdList) {
vo.setMasterId(masterId);
interestDAO.deleteInterests(vo);
}
}

View File

@ -23,7 +23,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
import nlib.cmm.NlibCommonController;
import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
import nlib.cmm.service.PagingVO;
import nlib.col.service.RisService;
import nlib.col.service.CollectionService;
import nlib.col.service.CollectionVO;
import nlib.col.service.DeptVO;
import nlib.col.service.InterestService;
@ -68,6 +70,9 @@ public class InterestController extends NlibCommonController
@Resource(name = "codeService")
private CodeService codeService;
@Resource(name = "collectionService")
private CollectionService collectionService;
/**
* 관심 자료 화면을 호출한다.
*
@ -99,14 +104,17 @@ public class InterestController extends NlibCommonController
*
* @param req
* @return
* @throws Exception
*/
@RequestMapping(value="/interest/listInterestsAjax.do")
public ResponseEntity<String> listInterestsAjax(HttpServletRequest req,
Authentication authentication, @RequestBody CollectionVO searchCollectionVO) {
public ResponseEntity<String> listInterestsAjax(HttpServletRequest req, HttpServletRequest request,
Authentication authentication, @RequestBody CollectionVO searchCollectionVO) throws Exception {
if(searchCollectionVO.getPageIndex() < 1) searchCollectionVO.setPageIndex(1);
if(searchCollectionVO.getPageSize() < 1) searchCollectionVO.setPageSize(DEFUALT_PAGE_SIZE);
List<CollectionVO> operList = new ArrayList();
int totalCount= 0;
//사용자 정보를 가져온다.
NlibLoginVO loginVO = getNlibLoginVO(authentication);
@ -119,6 +127,8 @@ public class InterestController extends NlibCommonController
List = interestService.listInterests(searchCollectionVO);
totalCount = interestService.countListInterests(searchCollectionVO);
String mbInfoId = getMbInfoId(request);
operList = collectionService.setDetailInfoForList(List, getMbInfoId(request), NlibProperty.getString("thumbnail.image.url.small"));
//-------------------------------
// JSON변환 응답 처리
//-------------------------------
@ -127,9 +137,17 @@ public class InterestController extends NlibCommonController
// itemsCount: 255
// }
HashMap<String, Object> retMap = new HashMap<String, Object>();
retMap.put("data", List);
retMap.put("data", operList);
retMap.put("itemsCount", totalCount);
PagingVO pageVO = new PagingVO();
pageVO.setPagingVO(totalCount, searchCollectionVO.getPageIndex(), searchCollectionVO.getPageSize());
retMap.put("pagingPageIndex" , pageVO.getPageIndex());
retMap.put("pagingTotRecordCount", pageVO.getTotRecordCount());
retMap.put("pagingStartPage" , pageVO.getStartPage());
retMap.put("pagingEndPage" , pageVO.getEndPage());
retMap.put("pagingLastPage" , pageVO.getLastPage());
return makeResponseEntityJson(retMap);
}
@ -139,9 +157,9 @@ public class InterestController extends NlibCommonController
*/
@RequestMapping(value="/interest/deleteInterests.ajax")
@ResponseBody
public void deleteInterests(@RequestParam(value="mbInterestIdList[]") List<Integer> mbInterestIdList,Authentication authentication) {
public void deleteInterests(@RequestParam(value="masterIdList[]") List<String> masterIdList,Authentication authentication) {
NlibLoginVO loginVO = getNlibLoginVO(authentication);
interestService.deleteInterests(mbInterestIdList,loginVO.getMbInfoId());
interestService.deleteInterests(masterIdList,loginVO.getMbInfoId());
}
/**

View File

@ -45,24 +45,22 @@ public class NlibSearchVO extends PagingVO {
private String reQuery = ""; //결과내 재검색
private String reQueryChk ="query"; //결과내재검색 체크 유지
private String realQuery =""; //사용자페이지에 보여줄 검색내용
private String lib_total_totalCount = ""; //전체의 COUNT
private String lib_loan_totalCount = ""; //대출의 COUNT
private String lib_online_totalCount = ""; //온라인열람의 COUNT
private String lib_offline_totalCount = ""; //방문열람의 COUNT
private String lib_etc_totalCount = ""; //기타의 COUNT
private String totalCount = ""; //현재 선택된 콜렉션의 COUNT
private String totalCount = "0"; //현재 선택된 콜렉션의 COUNT
private String filter_class = ""; //필터 더보기버튼 유지+depth1 open
private String filter_sido ; //필터 더보기버튼 유지+depth1 open
private String filter_thema ; //필터 더보기버튼 유지+depth1 open
private String filter_category ; //필터 더보기버튼 유지+depth1 open
private String filter_info_sido ; //필터 더보기버튼 유지
private String filter_info_type ; //필터 더보기버튼 유지
private String filter_agency ; // 생산기관은 depth1 이므로 filter_agency로 checked,검색필터유지
private String filter_mylist; //검색결과 필터 순서 저장
private String filter_info_mylist; //검색결과 필터 info 순서 저장
private String filter_creatYyyy =""; //생산년도 필터
private String first_agency ; //생산기관 선택
private String first_category ; //주제분야() 선택
private String second_category ; //주제분야() 선택
private String first_class ; //자료유형() 선택
@ -79,48 +77,18 @@ public class NlibSearchVO extends PagingVO {
public void setFilter_class(String filter_class) {
this.filter_class = filter_class;
}
public String getFilter_sido() {
return filter_sido;
}
public void setFilter_sido(String filter_sido) {
this.filter_sido = filter_sido;
}
public String getFilter_thema() {
return filter_thema;
}
public void setFilter_thema(String filter_thema) {
this.filter_thema = filter_thema;
}
public String getFilter_category() {
return filter_category;
}
public void setFilter_category(String filter_category) {
this.filter_category = filter_category;
}
public String getFilter_info_sido() {
return filter_info_sido;
}
public void setFilter_info_sido(String filter_info_sido) {
this.filter_info_sido = filter_info_sido;
}
public String getFilter_info_type() {
return filter_info_type;
}
public void setFilter_info_type(String filter_info_type) {
this.filter_info_type = filter_info_type;
}
public String getFilter_mylist() {
return filter_mylist;
}
public void setFilter_mylist(String filter_mylist) {
this.filter_mylist = filter_mylist;
}
public String getFilter_info_mylist() {
return filter_info_mylist;
}
public void setFilter_info_mylist(String filter_info_mylist) {
this.filter_info_mylist = filter_info_mylist;
}
public String getReQuery() {
return reQuery;
}
@ -332,6 +300,23 @@ public class NlibSearchVO extends PagingVO {
public void setOrgCountList(List<HashMap<String, String>> orgCountList) {
this.orgCountList = orgCountList;
}
public String getRealQuery() {
String realQuery="";
if(StringUtil.getString(this.query,"") != "")
realQuery = this.query;
if(StringUtil.getString(this.reQuery,"") != "")
{
if(realQuery.length() > 0)
{
realQuery += "(" + this.reQuery + ")";
}else
{
realQuery = this.reQuery;
}
}
return realQuery;
}
//검색요청시 URL 생성
public MultiValueMap<String, String> getSearchMap() {
@ -352,13 +337,13 @@ public class NlibSearchVO extends PagingVO {
add(map,"USE_STATUS",this.useStatus);
add(map,"TYPE_DIV_CD",this.typeDivCd);
add(map,"SUBJECT_CODE",this.subjectCode);
add(map,"ORG_NM,",this.orgNm);
add(map,"listCount",this.listCount);
add(map,"SUBJECT_CATE_DEPTH","2"); //주제분야 2뎁스까지 나오게 고정
add(map,"DIV_CATE_DEPTH","2"); //자료유형 2뎁스까지 나오게 고정
add(map,"DTLS_TYPE_DIV_CD",StringUtil.getString(this.second_class,"").replace(",","|"));
add(map,"SUBJECT_CODE",StringUtil.getString(this.second_category,"").replace(",","|"));
add(map,"ORG_NM",StringUtil.getString(this.filter_agency,"").replace(",","|"));
return map;
}
@ -381,4 +366,16 @@ public class NlibSearchVO extends PagingVO {
this.lib_total_totalCount = totalCount;
}
}
public String getFirst_agency() {
return first_agency;
}
public void setFirst_agency(String first_agency) {
this.first_agency = first_agency;
}
public String getFilter_agency() {
return filter_agency;
}
public void setFilter_agency(String filter_agency) {
this.filter_agency = filter_agency;
}
}

View File

@ -204,16 +204,24 @@ public class NlibSearchServiceImpl implements NlibSearchService{
orgList = (JsonArray) filterObject.get("ORG_NM");
}
}
if(subjectList.size()>0)
{
filterObject =(JsonObject) subjectList.get(0);
filterObject = (JsonObject) filterObject.get("Categories");
subjectList = (JsonArray) filterObject.get("Category");
};
if(typeList.size()>0)
{
filterObject =(JsonObject) typeList.get(0);
filterObject = (JsonObject) filterObject.get("Categories");
typeList = (JsonArray) filterObject.get("Category");
};
if(orgList.size()>0)
{
filterObject =(JsonObject) orgList.get(0);
filterObject = (JsonObject) filterObject.get("Categories");
orgList = (JsonArray) filterObject.get("Category");
};
for(k = 0; k < subjectList.size(); k++){
HashMap<String,String> temp = new HashMap<String,String>();
filterObject = (JsonObject)subjectList.get(k);

View File

@ -18,6 +18,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import cmm.Constant;

View File

@ -31,7 +31,7 @@ public interface MemberService
public DataApiResVO certificateMember(DataApiReqVO reqVO);
public NlibLoginVO insertMemberInfo(NlibLoginVO vo) throws Exception;
public void insertMemberInfo(NlibLoginVO vo) throws Exception;
public DataApiResVO sendEmailForMemberJoining(DataApiReqVO reqVO);
@ -51,7 +51,7 @@ public interface MemberService
public String createInitPwd();
public String selectAlreadySignUpId(OAuthUniversalUser oauthUser) throws Exception;
public NlibLoginVO selectAlreadySignUpId(OAuthUniversalUser oauthUser) throws Exception;
public void insertMemberSns(OAuthUniversalUser oauthUser);

View File

@ -38,6 +38,7 @@ public class NlibLoginVO implements Serializable {
private String mbInfoId; /* 회원아이디 (ex: M1000000001) */
private String loginUserId; /* 로그인사용자ID (이메일주소) */
private String name; /* 사용자명 */
private String nameTemp = ""; /* 비밀번호찾기시 사용자이름 임시저장용 */
private String mobileNo; /* 휴대전화번호 */
private String password; /* 비밀번호 */
private String email; /* 이메일 */
@ -83,7 +84,12 @@ public class NlibLoginVO implements Serializable {
private boolean alerted = false; /* 로그인 후, 읽지 않은 알림 표출 여부 */
private String infoRecvEmailYn = ""; /* 대출/열람 수신동의(이메일) */
private String infoRecvSmsYn = ""; /* 대출/열람 수신동의(SMS) */
private String mktRecvEmailYn = ""; /* 지방문화원 소식/홍보 수신동의(이메일) */
private String mktRecvSmsYn = ""; /* 지방문화원 소식/홍보 수신동의 (SMS)*/
private String previousPage =""; /* 이전 페이지명 저장 */
/**
* 개인정보 암호화 내용 양방황 암호화 처리 대상인 항목에 대하여 인코딩 처리
*/
@ -420,4 +426,52 @@ public class NlibLoginVO implements Serializable {
this.emailTemp = emailTemp;
}
public String getInfoRecvEmailYn() {
return infoRecvEmailYn;
}
public void setInfoRecvEmailYn(String infoRecvEmailYn) {
this.infoRecvEmailYn = infoRecvEmailYn;
}
public String getInfoRecvSmsYn() {
return infoRecvSmsYn;
}
public void setInfoRecvSmsYn(String infoRecvSmsYn) {
this.infoRecvSmsYn = infoRecvSmsYn;
}
public String getMktRecvEmailYn() {
return mktRecvEmailYn;
}
public void setMktRecvEmailYn(String mktRecvEmailYn) {
this.mktRecvEmailYn = mktRecvEmailYn;
}
public String getMktRecvSmsYn() {
return mktRecvSmsYn;
}
public void setMktRecvSmsYn(String mktRecvSmsYn) {
this.mktRecvSmsYn = mktRecvSmsYn;
}
public String getNameTemp() {
return nameTemp;
}
public void setNameTemp(String nameTemp) {
this.nameTemp = nameTemp;
}
public String getPreviousPage() {
return previousPage;
}
public void setPreviousPage(String previousPage) {
this.previousPage = previousPage;
}
}

View File

@ -38,7 +38,7 @@ public interface MemberDAO
public void insertMemberSns(OAuthUniversalUser oauthUser);
public String selectAlreadySignUpId(OAuthUniversalUser oauthUser) throws Exception;
public NlibLoginVO selectAlreadySignUpId(OAuthUniversalUser oauthUser) throws Exception;
public List<NlibLoginVO> selectAlreadySignUpMobile(NlibLoginVO loginVO) throws Exception;

View File

@ -41,8 +41,7 @@ public class MemberServiceImpl implements MemberService
return null;
}
public NlibLoginVO insertMemberInfo(NlibLoginVO vo) throws Exception {
NlibLoginVO result =new NlibLoginVO();
public void insertMemberInfo(NlibLoginVO vo) throws Exception {
//회원정보 암호화
String encodedText=null;
encodedText = egovPasswordEncoder.encryptPassword(vo.getLoginUserId()+vo.getPassword());
@ -50,9 +49,7 @@ public class MemberServiceImpl implements MemberService
vo.encodePrivateInfo();
//회원가입 정보
memberDAO.insertMemberInfo(vo);
//가입한 정보의 UID select
result=memberDAO.selectAlreadySignUpMobile(vo).get(0);
return result;
}
public DataApiResVO sendEmailForMemberJoining(DataApiReqVO reqVO) {
@ -205,7 +202,7 @@ public class MemberServiceImpl implements MemberService
return dummyPW;
}
public String selectAlreadySignUpId(OAuthUniversalUser oauthUser) throws Exception {
public NlibLoginVO selectAlreadySignUpId(OAuthUniversalUser oauthUser) throws Exception {
//이메일 암호화
oauthUser.setSnsEmail(ariaCrypto.encode(oauthUser.getSnsUserId()));
return memberDAO.selectAlreadySignUpId(oauthUser);

View File

@ -79,10 +79,12 @@ public class UserInfoServiceImpl implements UserInfoService
*/
public NlibLoginVO selectMyInfo(NlibLoginVO vo) throws Exception {
vo.setMobileNo(ariaCrypto.encode(vo.getMobileNo()));
vo.setEmail(ariaCrypto.encode(vo.getEmail()));
NlibLoginVO loginVO =userInfoDAO.selectMyInfo(vo);
// 개인정보 암호화 내용 복호화 처리
if(loginVO != null) {
loginVO.setMobileNo(AriaCrypto.decode(loginVO.getMobileNo()));
loginVO.setEmail(AriaCrypto.decode(loginVO.getEmail()));
}
return loginVO;
}

View File

@ -115,12 +115,15 @@ public class MemberController extends NlibCommonController{
/* 이메일 메시지 및 템플릿 정보 */
//템플릿 파일경로
@Value("#{properties['mailing.sender.membership.template']}")
private String template;
@Value("#{properties['mailing.sender.membership.signUpTemplate']}")
private String signUpTemplate;
@Value("#{properties['mailing.sender.membership.pwdTemplate']}")
private String pwdTemplate;
@Value("#{properties['mailing.sender.membership.certTemplate']}")
private String certTemplate;
//보내는 사람 이메일주소
@Value("#{properties['mailing.sender.membership.email']}")
private String senderAddr;
@ -133,10 +136,18 @@ public class MemberController extends NlibCommonController{
@Value("#{properties['sms.sender.phone.number']}")
private String senderNumber;
//hostName(이미지 접근)
@Value("#{properties['host.name']}")
private String hostName;
//게스트 USERID
@Value("#{properties['guest.userid']}")
private String gUserId;
//마이페이지 uri
@Value("#{properties['mypage.uri']}")
private String myPageUri;
@Autowired
private EmailSender emailSender;
@ -214,20 +225,23 @@ public class MemberController extends NlibCommonController{
OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId);
String mId = null;
if(!(oauthUser == null))
{
// 등록된 ID가 있는 확인
if(!(StringUtil.getString(oauthUser.getSnsUserId(),"")== ""))
mId =memberService.selectAlreadySignUpId(oauthUser);
vo = memberService.selectAlreadySignUpId(oauthUser);
}
/* 등록된 ID가 있을때 통합처리 */
if(!StringUtil.getString(mId, "").equals(""))
if(vo != null && !StringUtil.getString(vo.getMbInfoId(), "").equals(""))
{
oauthUser.setMbInfoId(mId);
oauthUser.setMbInfoId(vo.getMbInfoId());
memberService.insertMemberSns(oauthUser);
vo.setEmail(StringUtil.maskEmail(ariaCrypto.decode(vo.getEmail())));
vo.setName(StringUtil.maskName(vo.getName()));
System.out.println(oauthUser.getSnsUserId());
oauthUser.setSnsUserId(StringUtil.maskEmail(oauthUser.getSnsUserId()));
model.addAttribute("NlibLoginVO",vo);
model.addAttribute("oauthUser",oauthUser);
//통합처리 url
return "nlib/member/accountConsolidationForm";
}
@ -245,7 +259,7 @@ public class MemberController extends NlibCommonController{
// 등록된 전화번호가 있는 확인 (리스트)
voList = memberService.selectAlreadySignUpMobile(vo);
vo.decodePrivateInfo();
vo.setMobileNo(ariaCrypto.decode(vo.getMobileNo()));
//사용자ID 마스킹처리
for(int i=0;voList.size()>i;i++)
@ -256,6 +270,7 @@ public class MemberController extends NlibCommonController{
model.addAttribute("cnt",voList.size());
model.addAttribute("result",voList);
model.addAttribute("vo",vo);
return "nlib/member/alreadySignUpPopup";
}
@ -264,7 +279,7 @@ public class MemberController extends NlibCommonController{
* @exception Exception
*/
@RequestMapping(value="/member/snsAccountLink.ajax" , method=RequestMethod.POST)
public @ResponseBody String snsAccountLink(NlibLoginVO vo,HttpServletResponse response,Authentication authentication,HttpServletRequest request,HttpSession session) throws Exception{
public @ResponseBody String snsAccountLink(NlibLoginVO vo,HttpServletResponse response,Authentication authentication,ModelMap model,HttpServletRequest request,HttpSession session) throws Exception{
NlibLoginVO loginVO = new NlibLoginVO();
loginVO.setMbInfoId(vo.getMbInfoId());
@ -283,6 +298,8 @@ public class MemberController extends NlibCommonController{
OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId);
oauthUser.setMbInfoId(vo.getMbInfoId());
memberService.insertMemberSns(oauthUser);
model.addAttribute("oauthUser",oauthUser);
model.addAttribute("NlibLoginVO",vo);
msg="link";
}else {
msg="mismatch";
@ -351,8 +368,6 @@ public class MemberController extends NlibCommonController{
model.addAttribute("url","${pageContext.request.contextPath}"+NlibProperty.getString("member.new.url"));
return "nlib/cmm/alert";
}
/*vo.setMobileVrfctNo(vo.getMobileVrfctNo());
vo.setMobileVrfctDd(vo.getMobileVrfctNo());*/
}
//이메일인증시 sns제공 이메일과 회원가입폼 이메일 비교
if(!(vo.getEmail().equals(oauthUser.getSnsUserId())))
@ -368,25 +383,36 @@ public class MemberController extends NlibCommonController{
}
//문화원코드
String councilCd = (String)session.getAttribute("councilCd");
String councilNm = (String)session.getAttribute("councilNm");
//클라이언트 IP주소
vo.setIp(getRemoteIP(request));
//회원정보 insert
NlibLoginVO result =memberService.insertMemberInfo(vo);
memberService.insertMemberInfo(vo);
//sns 테이블 insert
oauthUser.setMbInfoId(result.getMbInfoId());
oauthUser.setMbInfoId(vo.getMbInfoId());
memberService.insertMemberSns(oauthUser);
// 결과가 정상이면, 안내 메일 발송
// > 템플릿파일에서 내용 mailing.sender.membership.template
// > 템플릿파일에서 내용 mailing.sender.membership.signUpTemplate
// > 발송처리 요청
Map<String, Object> replaceContents = new HashMap<String, Object>();
replaceContents.put("${contents}", vo.getName());
emailUtil.sendEmail(vo.getLoginUserId(),"온라인자료대출시스템 회원가입을 축하드립니다.",replaceContents,template);
vo.setEmail(ariaCrypto.decode(vo.getEmail()));
SimpleDateFormat format = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String time = format.format(date);
Map<String, Object> replaceContents = new HashMap<String, Object>();
replaceContents.put("${name}", vo.getName());
replaceContents.put("${email}", vo.getEmail());
replaceContents.put("${councilNm}", councilNm);
replaceContents.put("${hostName}", hostName);
replaceContents.put("${time}", time);
emailUtil.sendEmail(vo.getEmail(),"온라인자료대출시스템 회원가입을 축하드립니다.",replaceContents,signUpTemplate);
model.addAttribute("result",vo);
return "nlib/member/insertMemberInfoResult";
}
/**
@ -406,7 +432,8 @@ public class MemberController extends NlibCommonController{
authUser.setSnsEmail(email);
String mbInfoId="";
String chk= memberService.selectAlreadySignUpId(authUser);
NlibLoginVO chk = new NlibLoginVO();
chk = memberService.selectAlreadySignUpId(authUser);
String jsessionId = session.getId();
@ -415,7 +442,7 @@ public class MemberController extends NlibCommonController{
mbInfoId= loginVO.getMbInfoId();
//중복된 아이디가 있을시(로그인시 본인의 mbInfoId 동일한경우는 제외)
if(chk != null && !(chk.equals(mbInfoId)))
if(chk != null && !(chk.getMbInfoId().equals(mbInfoId)))
{
map.put("msg","이미 사용중인 이메일입니다.");
@ -453,12 +480,22 @@ public class MemberController extends NlibCommonController{
//이메일 발송
// 결과가 정상이면, 안내 메일 발송
// > 템플릿파일에서 내용 mailing.sender.membership.template
// > 템플릿파일에서 내용 mailing.sender.membership.certTemplate
// > 발송처리 요청
Map<String, Object> replaceContents = new HashMap<String, Object>();
replaceContents.put("${contents}", "인증번호는"+CertNumber+"입니다.");
emailUtil.sendEmail(email,"온라인자료대출시스템 이메일 인증번호",replaceContents,template);
SimpleDateFormat format = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String time = format.format(date);
String councilNm = (String)session.getAttribute("councilNm");
replaceContents.put("${certNumber}", CertNumber);
replaceContents.put("${time}", time);
replaceContents.put("${hostName}", hostName);
replaceContents.put("${councilNm}", councilNm);
emailUtil.sendEmail(email,"온라인자료대출시스템 이메일 인증번호입니다.",replaceContents,certTemplate);
map.put("msg","이메일 인증번호가 발송됐습니다.");
map.put("emailCertYn","Y");
return map;
@ -628,6 +665,7 @@ public class MemberController extends NlibCommonController{
loginVO.setEmail(StringUtil.maskEmail(loginVO.getEmail()));
loginVO.setName(StringUtil.maskName(loginVO.getName()));
model.addAttribute("loginVO",loginVO);
model.addAttribute("myPageUri",myPageUri);
return "nlib/member/deleteMembershipForm";
}
@ -671,8 +709,8 @@ public class MemberController extends NlibCommonController{
* @exception Exception
*/
@RequestMapping(value="/member/initPasswordForm.do")
public String searchIdForm(HttpServletResponse response,HttpServletRequest request) throws Exception{
public String searchIdForm(NlibLoginVO vo,HttpServletResponse response,HttpServletRequest request,ModelMap model) throws Exception{
model.addAttribute("loginVO", vo);
return "nlib/member/initPasswordForm";
}
@ -681,21 +719,34 @@ public class MemberController extends NlibCommonController{
* @exception Exception
*/
@RequestMapping(value="/member/initPassword.ajax")
public @ResponseBody String initPassword(NlibLoginVO vo,HttpServletResponse response,HttpServletRequest request,ModelMap model) throws Exception{
vo.encodePrivateInfo();
public @ResponseBody String initPassword(NlibLoginVO vo,HttpSession session,HttpServletResponse response,HttpServletRequest request,ModelMap model) throws Exception{
//내정보페이지, 회원가입시 핸드폰번호가 같을시 비밀번호 초기화
String email = vo.getEmail();
vo.setEmail("");
//mbinfo를 이용해 조회
NlibLoginVO loginVO=userInfoService.selectMyInfo(vo);
EmailVO email = new EmailVO();
if(!email.equals(loginVO.getEmail()))
{
return "fail";
}
String name="";
// 정보 수정시 비밀번호 찾기 , 회원가입시 비밀번호찾기 메일발송시(마스킹) 차별화
if(vo != null && "alreadySignUpPopup".equals(vo.getPreviousPage()) )
{
name = vo.getNameTemp();
}else {
name = loginVO.getName();
}
String message = null;
//비밀번호 초기화 변수 생성
String InitPwd=memberService.createInitPwd();
String encodedText=null;
vo.decodePrivateInfo();
String initPwd=memberService.createInitPwd();
//vo.decodePrivateInfo();
if(loginVO!=null)
{
@ -703,14 +754,27 @@ public class MemberController extends NlibCommonController{
// > 템플릿파일에서 내용 mailing.sender.membership.pwdtemplate
// > 발송처리 요청
SimpleDateFormat format = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String time = format.format(date);
String councilNm = (String)session.getAttribute("councilNm");
Map<String, Object> replaceContents = new HashMap<String, Object>();
replaceContents.put("${contents}", InitPwd);
emailUtil.sendEmail(vo.getEmail(),"온라인자료대출시스템 비밀번호 초기화 메일입니다.",replaceContents,pwdTemplate);
System.out.println(loginVO.getLoginUserId()+initPwd);
loginVO.setPassword(egovPasswordEncoder.encryptPassword(loginVO.getLoginUserId()+initPwd));
memberService.changePassword(loginVO);
replaceContents.put("${initPwd}", initPwd);
replaceContents.put("${time}", time);
replaceContents.put("${hostName}", hostName);
replaceContents.put("${councilNm}", councilNm);
replaceContents.put("${name}", name);
emailUtil.sendEmail(email,"온라인자료대출시스템 비밀번호 초기화 메일입니다.",replaceContents,pwdTemplate);
message="초기화된 비밀번호가 이메일로 발송됐습니다.";
message="success";
}else {
message="일치하는 아이디가 없습니다.";
message="fail";
}
return message;
@ -733,15 +797,15 @@ public class MemberController extends NlibCommonController{
String message="";
if(loginVO!=null && (loginVO.getPassword().equals(password)))
if(loginVO!=null && loginVO.getPassword().equals(password))
{
loginVO.setPassword(newPassword);
loginVO.encodePrivateInfo();
//암호화된 비밀번호로 수정
memberService.changePassword(loginVO);
message="비밀번호 변경이 처리되었습니다.";
message="success";
}else {
message="기존 비밀번호가 올바르지 않습니다.";
message="fail";
}
return message;

View File

@ -13,6 +13,7 @@ import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@ -80,6 +81,9 @@ public class UserInfoController extends NlibCommonController {
@Resource(name = "qrCodeService")
private QRCodeUtil qrCodeService;
//마이페이지 uri
@Value("#{properties['mypage.uri']}")
private String myPageUri;
/**
* 정보 조회
@ -109,7 +113,6 @@ public class UserInfoController extends NlibCommonController {
snsList = userInfoService.selectSnsSignUpList(loginVO);
String encodedText=null;
System.out.println(loginVO.getLoginUserId()+vo.getPassword());
encodedText = egovPasswordEncoder.encryptPassword(loginVO.getLoginUserId()+vo.getPassword());
vo.setPassword(encodedText);
@ -143,7 +146,7 @@ public class UserInfoController extends NlibCommonController {
||loginVO.getEmailVrfctDd() == null)
{
model.addAttribute("msg","이메일인증이 정상적이지않습니다.");
model.addAttribute("url","${pageContext.request.contextPath}"+"/userInfo/getMyInfo.do");
model.addAttribute("url",myPageUri);
return "nlib/cmm/alert";
}
vo.setEmail(loginVO.getEmailTemp());
@ -155,7 +158,7 @@ public class UserInfoController extends NlibCommonController {
||loginVO.getMobileVrfctDd() == null)
{
model.addAttribute("msg","핸드폰인증이 정상적이지않습니다.");
model.addAttribute("url","${pageContext.request.contextPath}"+"/userInfo/getMyInfo.do");
model.addAttribute("url",myPageUri);
return "nlib/cmm/alert";
}
vo.setMobileNo(loginVO.getMobileTemp());
@ -170,9 +173,11 @@ public class UserInfoController extends NlibCommonController {
NlibLoginVO sessionVO=(NlibLoginVO) SecUserDetailsService.loadUserByUsername(vo.getLoginUserId());
//세션에 수정정보로 주입
replaceNlibLoginVO(request,sessionVO);
replaceNlibLoginVO(request,loginVO);
return "nlib/userInfo/getMyInfo";
model.addAttribute("msg","수정되었습니다.");
model.addAttribute("url",myPageUri);
return "nlib/cmm/alert";
}
/**
@ -180,8 +185,9 @@ public class UserInfoController extends NlibCommonController {
* @exception Exception
*/
@RequestMapping(value="/userInfo/pwCertMyInfo.do")
public String pwCertMyInfo(HttpServletResponse response,HttpServletRequest request) throws Exception{
public String pwCertMyInfo(HttpServletResponse response,HttpServletRequest request,ModelMap model) throws Exception{
NlibLoginVO nlibLoginVO = getNlibLoginVO(request);
model.addAttribute("loginVO",nlibLoginVO);
return "nlib/userInfo/pwCertMyInfo";
}

View File

@ -53,7 +53,7 @@
SET
USE_YN="N"
WHERE 1=1
AND MB_INTEREST_ID = #{mbInterestId}
AND MASTER_ID = #{masterId}
AND MB_INFO_ID = #{mbInfoId}
</update>

View File

@ -30,6 +30,10 @@
, B.SNS_TYPE
, B.SNS_ID
, 'ROLE_USER' AS AUTHORITY_LIST
, A.INFO_RECV_EMAIL_YN
, A.INFO_RECV_SMS_YN
, A.MKT_RECV_EMAIL_YN
, A.MKT_RECV_SMS_YN
FROM UAC_CLTR_DB.MB_INFO A /* 사용자정보 */
JOIN UAC_CLTR_DB.MB_SNS B /* 사용자 SNS 정보 */
ON A.MB_INFO_ID = B.MB_INFO_ID

View File

@ -23,9 +23,9 @@
<!-- 회원가입 -->
<insert id="insertMemberInfo" parameterType="NlibLoginVO">
<selectKey resultType="java.lang.String" keyProperty="mbInfoId" order="BEFORE">
<selectKey keyProperty="mbInfoId" resultType="String" order="BEFORE">
SELECT CONCAT(LEFT(MAX(MB_INFO_ID),2),
LPAD(RIGHT(MAX(MB_INFO_ID),9)+1,9,0)) FROM MB_INFO;
LPAD(RIGHT(MAX(MB_INFO_ID),9)+1,9,0)) AS mbInfoId FROM MB_INFO;
</selectKey>
INSERT INTO
MB_INFO
@ -51,6 +51,10 @@
,MOBILE_VRFCT_DD
,IP
,LAST_ACCESS_DD
,INFO_RECV_EMAIL_YN
,INFO_RECV_SMS_YN
,MKT_RECV_EMAIL_YN
,MKT_RECV_SMS_YN
)
VALUES
(
@ -75,6 +79,10 @@
,STR_TO_DATE(#{mobileVrfctDd},'%Y-%m-%d %H:%i:%S')
,#{ip}
,NOW()
,#{infoRecvEmailYn}
,#{infoRecvSmsYn}
,#{mktRecvEmailYn}
,#{mktRecvSmsYn}
)
</insert>
@ -87,33 +95,31 @@
,MOD_ID = #{mbInfoId}
,MOD_DD = NOW()
WHERE 1=1
AND EMAIL = #{email}
AND MB_INFO_ID = #{mbInfoId}
</update>
<!-- 회원가입시 SNS인증한 계정 ID와 일치하는 계정이 있는지 체크 -->
<select id="selectAlreadySignUpId" parameterType="egovframework.com.ext.oauth.service.OAuthUniversalUser" resultType="String">
SELECT
MB_INFO_ID
FROM
(
<select id="selectAlreadySignUpId" parameterType="egovframework.com.ext.oauth.service.OAuthUniversalUser" resultType="NlibLoginVO">
SELECT
MB_INFO_ID
,LOGIN_USER_ID
,NAME
,EMAIL
FROM
MB_INFO
WHERE 1=1
AND (LOGIN_USER_ID = #{snsUserId} OR EMAIL = #{snsEmail})
UNION ALL
(
SELECT
MB_INFO_ID
,SNS_USER_ID LOGIN_USER_ID
,"" EMAIL
s1.MB_INFO_ID
,s1.LOGIN_USER_ID LOGIN_USER_ID
,s1.EMAIL EMAIL
,s1.NAME
,s1.STATUS
FROM
MB_SNS
MB_INFO s1, MB_SNS s2
WHERE 1=1
AND SNS_USER_ID = #{snsUserId}
AND UNLINK_DD IS NULL
AND s1.MB_INFO_ID = s2.MB_INFO_ID
AND s1.LOGIN_USER_ID = #{snsUserId} OR s1.EMAIL = #{snsEmail} OR s2.SNS_USER_ID = #{snsUserId}
AND s2.UNLINK_DD IS NULL
AND s1.STATUS ="S"
) MB
LIMIT 1;
</select>
@ -130,7 +136,7 @@
MB_INFO
WHERE 1=1
AND MOBILE_NO = #{mobileNo}
LIMIT 1
AND STATUS ="S"
</select>
<!-- 회원가입시 sns 계정 추가 , 기존 계정 ID와 일치시 통합처리시 추가 -->
@ -189,14 +195,16 @@
MB_INFO
SET
LEAVE_SITE_DATE = DATE_FORMAT(CURDATE(), '%Y%m%d')
,LOGIN_USER_ID=#{loginUserId} + '-' + {mbInfoId}
,STATUS = "D"
,BIRTHDAY = NULL
,ZIP_CODE = NULL
,ADDRESS = NULL
,ADDRESS_DETAIL = NULL
,GENDER = NULL
,EMAIL = NULL
,PASSWORD = NULL
,MOBILE_NO = "-"
,EMAIL = "-"
,PASSWORD = "-"
WHERE 1=1
AND MB_INFO_ID = #{mbInfoId}
</update>

View File

@ -47,6 +47,8 @@
,LOGIN_USER_ID
,MOBILE_NO
,PASSWORD
,NAME
,EMAIL
FROM
MB_INFO
WHERE 1=1
@ -81,6 +83,10 @@
,GENDER=#{gender}
,MOD_ID=#{mbInfoId}
,MOD_DD=NOW()
,INFO_RECV_SMS_YN=#{infoRecvSmsYn}
,INFO_RECV_EMAIL_YN=#{infoRecvEmailYn}
,MKT_RECV_SMS_YN=#{mktRecvSmsYn}
,MKT_RECV_EMAIL_YN=#{mktRecvEmailYn}
WHERE 1=1
AND MB_INFO_ID=#{mbInfoId}
</update>

File diff suppressed because one or more lines are too long

View File

@ -169,22 +169,29 @@
<div class="list">
<div class="icon"><img src="/images/icon/icon-data-use.png" alt="이용상태 아이콘"></div>
<div class="title">이용상태</div>
<div class="con">대출중 (대기자 <span>0</span>명)</div>
<div class="con"><c:out value="${result.useStatusNm}"/> <span>(대기자 <c:out value="${result.awaiterCnt}"/>명)</span></div>
</div>
<div class="list">
<div class="icon"><img src="/images/icon/icon-data-return.png" alt="달력 아이콘"></div>
<div class="title">반납예정일</div>
<div class="con"><span>2021-08-27</span></div>
<div class="con"><span><c:out value="${result.rtnExpctDd}"/></span></div>
</div>
<div class="list">
<div class="icon"><img src="/images/icon/icon-data-loan.png" alt="대출 아이콘"></div>
<div class="title">대출</div>
<div class="con"><span class="poss">예약가능</span></div>
<div class="con">
<c:if test="${result.bookLentPsblYn eq 'Y' && result.rsrvPsblYn eq 'Y'}"><span class="poss">신청가능</span></c:if>
<c:if test="${result.bookLentPsblYn eq 'N' && result.rsrvPsblYn eq 'Y' }"><span class="poss">예약가능</span></c:if>
<c:if test="${result.bookLentPsblYn ne 'Y' && result.rsrvPsblYn ne 'Y'}"><span class="imposs">신청/예약불가</span></c:if>
</div>
</div>
<div class="list">
<div class="icon"><img src="/images/icon/icon-data-visit.png" alt="방문 아이콘"></div>
<div class="title">방문열람</div>
<div class="con"><span class="imposs">신청불가</span></div>
<div class="con">
<c:if test="${result.reqPsblYn eq 'Y' }"><span class="poss">신청가능</span></c:if>
<c:if test="${result.reqPsblYn ne 'Y' }"><span class="imposs">신청불가</span></c:if>
</div>
</div>
</div>
<div class="text-box">
@ -199,7 +206,7 @@
<button type="button" class="down-btn">down-btn</button>
</div>
<div class="bottom h-down">
<p><span>1부</span> 역사 속의 경주1 - 경주, 조선의 500년 역사를 찾다</p>
<p><span>1부</span> <c:out value="${result.bookIndex }"/></p>
<p><span>2부</span> 역사 속의 경주2 - 금오산을 바라본 조선문인의 시선</p>
<p><span>3부</span> 경주문화제 핫이슈 - 타향살이 100년 ‘청와대 미남석불’, 이제는 고향 경주의 품으로</p>
<p><span>4부</span> 경주문화제 핫이슈 - 타향살이 100년 ‘청와대 미남석불’, 이제는 고향 경주의 품으로</p>

View File

@ -53,6 +53,19 @@
window.onload = function() {
<%//상단 검색바 셋팅%>
$("#top_query").val('${searchVO.query}');
if(sfield == "TITLE")
{
$("#sfield").val(sfield);
}
var sfield = '${searchVO.sfield}';
if(sfield == "TITLE")
{
$("#sfield").val(sfield);
}
// 페이지 크기 변경시 재조회
$("#pageSize").on("change", function(e) {
fnFilterSch();
@ -79,7 +92,7 @@ window.onload = function() {
//초기값
fnSetInitialValue();
//생산기관적용버튼
//생산년도적용버튼
filter_creatYyyyAply();
//필터클릭체크
reference_filterClk();
@ -88,13 +101,12 @@ window.onload = function() {
fnLabel_reference();
//초기화
reference_filterReset();
}; // window.onload
//페이지 로드시 초기값셋팅
function fnSetInitialValue()
{
//상세검색
$("#top_query").val("${searchVO.query}");
//탭
$("#"+"${searchVO.collection}").parent().addClass('current');
//페이징
@ -115,15 +127,6 @@ function fnSetInitialValue()
}else{
$("#m-year-1").prop('checked',true);
}
//상단 검색바
$("#top_query").val('${searchVO.query}');
var sfield = '${searchVO.sfield}';
if(sfield = "TITLE")
{
$("#sfield").val(sfield);
}
}
//탭 이동
function fnTabMoveSch(collection){
@ -164,13 +167,10 @@ function fn_search_article(pageIndex) {
<input type="hidden" id="filter_creatYyyy" name="filter_creatYyyy" value='${searchVO.filter_creatYyyy}' />
<input type="hidden" name="filter_class" value='${searchVO.first_class}' />
<input type="hidden" name="filter_sido" />
<input type="hidden" name="filter_thema" />
<input type="hidden" name="filter_category" value='${searchVO.filter_category}'/>
<input type="hidden" name="filter_info_sido" />
<input type="hidden" name="filter_info_type" />
<input type="hidden" id="filter_mylist" name="filter_mylist" value='${searchVO.filter_mylist}'/>
<input type="hidden" name="filter_class" value="<c:out value='${searchVO.filter_class}'/>" />
<input type="hidden" name="filter_category" value="<c:out value='${searchVO.filter_category}'/>"/>
<input type="hidden" id="filter_agency" name="filter_agency" value="<c:out value='${searchVO.filter_agency}'/>"/>
<input type="hidden" id="filter_mylist" name="filter_mylist" value="<c:out value='${searchVO.filter_mylist}'/>"/>
<div class="location data">
<h2 class="blind">소장자료 섹션영역</h2>
<div class="inner">
@ -211,7 +211,7 @@ function fn_search_article(pageIndex) {
<li>
<div class="depth-1 <c:if test="${fn:contains(searchVO.filter_class, firstClassList.column1) }"> on</c:if>">
<div class="check">
<input type="checkbox" value="${firstClassList.column1}" name="first_class" id="data-type-chk${fcStatus.index+1}" <c:if test="${fn:contains(searchVO.first_class, firstClassList.column1) }">checked="checked"</c:if> />
<input type="checkbox" value="${firstClassList.column1}" name="first_class" id="data-type-chk${fcStatus.index+1}" <c:if test="${fn:contains(searchVO.filter_class, firstClassList.column1) }">checked="checked"</c:if> />
<label for="data-type-chk${fcStatus.index+1}">${firstClassList.sCodeNm}(<span>${firstClassList.cnt }</span>) </label>
</div>
</div>
@ -245,7 +245,7 @@ function fn_search_article(pageIndex) {
<c:if test="${firstCategoryInfo.upClsfId eq '2' }">
<li>
<div class="depth-1 <c:if test="${fn:contains(searchVO.filter_category, firstCategoryInfo.clsfId) }"> on</c:if>">
<div class="check"><input type="checkbox" value="${firstCategoryInfo.clsfId}" id="theme-chk${count+1}" name="first_category" <c:if test="${fn:contains(searchVO.first_category, firstCategoryInfo.clsfId) }">checked="checked"</c:if>/><label for="theme-chk${count+1}">${firstCategoryInfo.clsfNm}(<span>${firstCategoryInfo.cnt}</span>)</label></div>
<div class="check"><input type="checkbox" value="${firstCategoryInfo.clsfId}" id="theme-chk${count+1}" name="first_category" <c:if test="${fn:contains(searchVO.filter_category, firstCategoryInfo.clsfId) }">checked="checked"</c:if>/><label for="theme-chk${count+1}">${firstCategoryInfo.clsfNm}(<span>${firstCategoryInfo.cnt}</span>)</label></div>
</div>
<ul class="depth-2">
<c:forEach var="secondCategoryInfo" items="${secondCategoryList}" varStatus="seStatus">
@ -294,7 +294,7 @@ function fn_search_article(pageIndex) {
<c:forEach var="result" items="${searchVO.orgCountList}" varStatus="status">
<li>
<div class="depth-1">
<div class="check"><input type="checkbox" id="agency-chk1"/><label for="agency-chk1">${result.org_nm}(${result.org_cnt})</label></div>
<div class="check"><input type="checkbox" id="agency-chk${status.index+1}" value="${result.org_nm}" name="first_agency" <c:if test="${fn:contains(searchVO.filter_agency,result.org_nm)}">checked="checked"</c:if>/><label for="agency-chk${status.index+1}">${result.org_nm}(${result.org_cnt})</label></div>
</div>
</li>
</c:forEach>
@ -318,16 +318,16 @@ function fn_search_article(pageIndex) {
</ul>
<div class="title">
<span class="count">총 <em>
<c:choose>
<c:when test="${!empty searchVO.totalCount }">
<c:out value="${searchVO.totalCount}"/>
<c:when test="${searchVO.realQuery ne '' && (!empty searchVO.realQuery) }">
<span class="count"><strong>${searchVO.realQuery}</strong>에 대한 검색결과는 총 <em>
<fmt:formatNumber value="${searchVO.totalCount}" pattern="#,###" /></em>건 입니다.
</span>
</c:when>
<c:otherwise>
0
<span class="count">총<em><fmt:formatNumber value="${searchVO.totalCount}" pattern="#,###" /></em> 건</span>
</c:otherwise>
</c:choose>
</em>건</span>
<div class="list-search-wrap list-top">
<div class="re-search">
<label for="reQueryChk"><input type="checkbox" id="reQueryChk" name="reQueryChk" value="query" <c:if test="${searchVO.reQueryChk eq 'reQuery' }">checked="checked"</c:if>>결과 내 재검색</label>
@ -360,10 +360,22 @@ function fn_search_article(pageIndex) {
</div>
<c:forEach var="result" items="${searchVO.resultList}"> <!-- 리스트 출력 시작 -->
<div class="list">
<div class="t-data" onclick="goDetail('${result.masterId}');">
<div class="img"><a href="#">
<img src="${result.rprsThumbUrl}" alt="${result.title }">
</a><span class="favorites"><img src="images/icon/icon-cart-Favorites.png" class="off" alt="즐겨찾기 아이콘"><img src="images/icon/icon-cart-Favorites-on.png" class="on" alt="즐겨찾기 아이콘"></span>
<div class="t-data">
<div class="img"><a href="javascript:void(0)"><img src="${result.rprsThumbUrl }" alt="" width="60" height="91" title="상세보기" onclick="goDetail('${result.masterId}');"></a>
<sec:authorize access="isAuthenticated()">
<c:if test='${result.MUseYn == "Y"}'>
<span id="favorites_${result.masterId}" class="favorites" onclick="fn_changeInterest('${result.masterId }', 'off')" title="관심자료에서 삭제합니다.">
<img src="/images/icon/icon-cart-Favorites-on.png" class="off" alt="즐겨찾기 아이콘">
<img src="/images/icon/icon-cart-Favorites.png" class="on" alt="즐겨찾기 아이콘">
</span>
</c:if>
<c:if test='${result.MUseYn != "Y"}'>
<span id="favorites_${result.masterId}" class="favorites" onclick="fn_changeInterest('${result.masterId }', 'on')" title="관심자료로 등록합니다.">
<img src="/images/icon/icon-cart-Favorites.png" class="off" alt="즐겨찾기 아이콘">
<img src="/images/icon/icon-cart-Favorites-on.png" class="on" alt="즐겨찾기 아이콘">
</span>
</c:if>
</sec:authorize>
</div>
<div class="type">
<c:if test="${(!empty result.openDivCd) && (result.openDivCd ne '3') }">
@ -408,7 +420,7 @@ function fn_search_article(pageIndex) {
</c:if>
</c:otherwise>
</c:choose>
<c:if test="${(!empty result.openDivCd) && (result.openDivCd ne '3') }">
<c:if test="${(!empty result.openDivCd) && (result.openDivCd ne '3') && (!empty result.interfaceId)}">
<button type="button" class="btn-color">원문보기</button>
</c:if>
<button type="button" class="btn-gray" onclick="risShow('${result.masterId}')";>RIS</button>

View File

@ -23,11 +23,18 @@
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
<%
Date nowTime = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sf2 = new SimpleDateFormat("a hh:mm:ss");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
@ -35,8 +42,45 @@
<title>Insert title here</title>
</head>
<body>
<h1>계정이 통합되었습니다.</h1>
${result.name } ${result.email }
<!-- 계정연결완료 섹션 -->
<div class="location join succ connect">
<h2 class="blind">계정연결완료 섹션영역</h2>
<div class="inner">
<div class="row-top icon">
<div class="icon"><img src="/images/icon/icon-connect.png" alt="자물쇠 아이콘"></div>
<p>계정연결 완료</p>
</div>
<div class="contents row-bottom">
<div class="join-box">
<div class="success">
<div class="text">
<p>기가입 계정에
<span>
<c:if test="${oauthUser.snsType eq 'NAVER'}">네이버</c:if>
<c:if test="${oauthUser.snsType eq 'KAKAO'}">카카오</c:if>
<c:if test="${oauthUser.snsType eq 'GOOGLE'}">구글</c:if>
</span>계정이 통합되었습니다.
</p>
<p><button type="button"><span class="name"><c:out value="${NlibLoginVO.name }"/></span><span class="mail"><c:out value="${NlibLoginVO.email }"/></span></button></p>
</div>
<div class="box">
<div class="icon">
<c:if test="${oauthUser.snsType eq 'NAVER'}"><img src="/images/icon/icon-naver-login.png" alt="네이버 아이콘"></c:if>
<c:if test="${oauthUser.snsType eq 'KAKAO'}"><img src="/images/icon/icon-kakao-login.png" alt="카카오 아이콘"></c:if>
<c:if test="${oauthUser.snsType eq 'GOOGLE'}"><img src="/images/icon/icon-google-login.png" alt="구글 아이콘"></c:if>
</div>
<div class="text">
<p><c:out value="${oauthUser.snsUserId }"/></p>
<p><span class="date"><%= sf.format(nowTime) %></span><span class="time"><%= sf2.format(nowTime) %> 연결완료</span></p>
</div>
</div>
<div class="btn">
<a href="/" class="btn-color">소장자료관으로</a>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -10,10 +10,6 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script>
function notAlreadySingUp()
{
window.close();
}
$(document).ready(function(){
var cnt=${cnt};
@ -22,14 +18,25 @@ $(document).ready(function(){
} else {
window.close();
}
<%//비밀번호 찾기 페이지에서 다시 돌아왔을 경우 %>
var previousPage = "${vo.previousPage}";
if(previousPage == "alreadySignUpPopup")
{
$("#alreadySingUpForm").css("display","none");
$("#selectAccountForm").css("display","block");
}
});
function selectAccount(mbInfoId,name,Email)
function selectAccount(mbInfoId,name,email)
{
$("#alreadySingUpForm").css("display","none");
$("#mbInfoId").val(mbInfoId);
$("#selectName").val(name);
$("#selectEmail").val(Email);
$("#selectName").text(name);
$("#selectEmail").text(email);
$("#nameTemp").val(name);
$("#emailTemp").val(email);
$("#selectAccountForm").css("display","block");
}
function goPrevious()
@ -41,7 +48,7 @@ function goPrevious()
function accountLink()
{
password=$("#selectPassword").val();
console.log(password);
if(password == "")
{
alert("비밀번호 입력이 필요합니다.");
@ -52,8 +59,10 @@ function accountLink()
url : "${pageContext.request.contextPath}/member/snsAccountLink.ajax",
type : "POST",
async: false,
data : {"mbInfoId":$("#mbInfoId").val(),
"password":password
data : {"mbInfoId":$("#mbInfoId").val()
,"password":password
,"name":$("#nameTemp").val()
,"email":$("#emailTemp").val()
},
success : function(result){
if(result=="link")
@ -76,7 +85,64 @@ function accountLink()
</head>
<body>
<form id="alreadySingUpForm" name="alreadySingUpForm">
<p1>서비스에 이미 가입된 계정이 있습니다.</p1>
<!-- 계정연결 팝업 -->
<div class="pop-login-connect">
<div class="row Title">
<p>계정연결</p>
<h3>서비스에 이미 가입된<br>계정이 있습니다.</h3>
</div>
<div class="inner">
<div class="row Text">
<p>계정연결을 통해 간편하게 <span>로그인할 계정</span>을 선택하세요.</p>
</div>
<div class="row First">
<c:forEach items="${result}" var="result" varStatus="status">
<div class="Btn" onClick="selectAccount('<c:out value="${result.mbInfoId}"/>','<c:out value="${result.name}"/>','<c:out value="${result.email}"/>');">
<button type="button"><span class="name"><c:out value="${result.name}"/></span><span class="mail"><c:out value="${result.email}"/></span></button>
</div>
</c:forEach>
</div>
<div class="row btn">
<p><a href="javascript:void(0);" class="cancel" onclick="fn_closeLayerPopup();">아니요, 내가 아닙니다.</a></p>
</div>
<button type="button" class="login-close" onclick="fn_closeLayerPopup();"></button>
</div>
<div class="Bg"></div>
</div>
</form>
<form id="selectAccountForm" name="selectAccountForm" style="display:none;">
<input type="hidden" id="mbInfoId" name="mbInfoId" value="<c:out value='${vo.mbInfoId }'/>">
<input type="hidden" id="nameTemp" name="nameTemp" value="<c:out value='${vo.nameTemp }'/>">
<input type="hidden" id="emailTemp" name="emailTemp" value="<c:out value='${vo.emailTemp }'/>">
<input type="hidden" id="mobileNo" name="mobileNo" value="<c:out value='${vo.mobileNo }'/>">
<input type="hidden" id="previousPage" name="previousPage" value="alreadySignUpPopup">
<!-- 계정연결 비밀번호 팝업 -->
<div class="pop-login-password">
<div class="row Title">
<p>계정연결</p>
<h3>비밀번호 입력</h3>
</div>
<div class="inner">
<div class="row Text">
<p>선택한 계정의 <span>비밀번호</span>를 입력해주세요!</p>
</div>
<div class="row First">
<div class="Btn"><button type="button"><span class="name" id="selectName" name="selectName"><c:out value="${vo.nameTemp}"/></span><span class="mail" id="selectEmail" name="selectEmail"><c:out value="${vo.emailTemp}"/></span></button></div>
<div class="passwd"><input type="password" id="selectPassword" name="selectPassword" placeholder="비밀번호"></div>
</div>
<div class="row btn">
<p><a href="javascript:void(0);" class="cancel" onclick="forgetPassword('selectAccountForm');">비밀번호를 잊으셨나요? &gt;</a></p>
</div>
<div class="row btn-box">
<button type="button" class="btn btn-gray" onclick="goPrevious();" id="cancel">이전으로</button>
<button type="button" class="btn btn-color" onclick="accountLink();" >계정 연결하기</button>
</div>
<button type="button" class="login-close" onclick="fn_closeLayerPopup();"></button>
</div>
<div class="Bg"></div>
</div>
</form>
<%-- <p1>서비스에 이미 가입된 계정이 있습니다.</p1>
<table>
<c:forEach items="${result}" var="result" varStatus="status">
@ -96,7 +162,7 @@ function accountLink()
<input type="password" id="selectPassword" name="selectPassword" placeholder="비밀번호"><br>
<a href="javascript:notAlreadySingUp();" onclick="return false;">비밀번호를 잊으셨나요?</a>
<input type="button" onclick="goPrevious();" value="이전으로"><input type="button" onclick="accountLink();" value="계정 연결하기">
<input type="hidden" id="mbInfoId" name="mbInfoId">
<input type="hidden" id="mbInfoId" name="mbInfoId"> --%>
</form>
</body>
</html>

View File

@ -44,7 +44,7 @@ function deleteMembership()
if(result=="delete")
{
alert("탈퇴처리 되었습니다.감사합니다.");
location.href="${pageContext.request.contextPath}/index.do"
location.href="${pageContext.request.contextPath}/logout";
}else if(result=="mismatch")
{
alert("비밀번호가 일치하지 않습니다.다시 확인해주세요.");
@ -59,11 +59,38 @@ function deleteMembership()
</head>
<body>
<form id="deleteMembershipForm" name="deleteMembershipForm">
<p1>회원탈퇴</p1><br>
이름 : <c:out value="${loginVO.name }"/><br>
이메일 : <c:out value="${loginVO.email }"/><br>
<input type="password" id="password" name="password" placeholder="비밀번호"><br>
<input type="button" onclick="deleteMembership();" value="탈퇴하기"><input type="button" onclick="location.href='${pageContext.request.contextPath}/userInfo/putMyInfo.do'" value="취소">
<!-- 회원탈퇴 섹션 -->
<div class="location secession">
<h2 class="blind">회원탈퇴 섹션영역</h2>
<div class="inner">
<div class="row-top icon">
<div class="icon"><img src="/images/icon/icon-secession.png" alt="회원탈퇴 아이콘"></div>
<p>회원탈퇴 안내</p>
</div>
<div class="contents row-bottom">
<div class="sec-box">
<div class="text">
<p>문화원 소장자료관 <span>회원탈퇴</span> 안내입니다.</p>
<div class="inner-box">
<p>문화원 소장자료관 홈페이지 회원탈퇴 시, 홈페이지에서 제공하는 모든 서비스를 이용하실 수 없게 됩니다.</p>
<p>회원탈퇴 시, 회원정보 복원이 불가능합니다.</p>
<p>회원탈퇴 시, 회원 정보는 즉시 삭제되며, 계정과 연계된 모든 정보도 함께 삭제됩니다.</p>
<p>대출중인 자료가 있을 경우 회원탈퇴가 불가능합니다. </p>
</div>
</div>
<div class="box">
<p><span class="name">이름</span><span class="con"><c:out value="${loginVO.name }"/></span></p>
<p><span class="name">이메일</span><span class="con"><c:out value="${loginVO.email }"/></span></p>
<p><input type="password" id="password" name="password" placeholder="비밀번호"></p>
</div>
<div class="btn-box">
<button type="button" class="btn btn-color" onclick="deleteMembership();">탈퇴하기</button>
<button type="button" class="btn btn-gray" onclick="location.href='${myPageUri}'">취소</button>
</div>
</div>
</div>
</div>
</div>
</form>
</body>
</html>

View File

@ -24,44 +24,108 @@
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(document).ready(function() {
var previousPage ="${loginVO.previousPage}";
if(previousPage == "alreadySignUpPopup")
{
document.getElementById("cancle").setAttribute("onClick", "fn_cancle()");
}else
{
document.getElementById("cancle").setAttribute("onClick", "fn_closeLayerPopup()");
}
});
function goFindPw(){
var data = $("form[name=initPw]").serialize();
if(confirm("비밀번호를 초기화 하시겠습니까?"))
var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
if($("#initPw [name=email]").val() == "")
{
$("#initPw [name=email]").focus();
alert("이메일을 입력해주세요.");
return false;
}
if(!regExp.test($("#initPw [name=email]").val()))
{
$("#initPw [name=email]").focus();
alert("이메일을 다시 확인해주세요. (예: example@mail.com)");
return false;
}
$.ajax({
url : "${pageContext.request.contextPath}/member/initPassword.ajax",
type : "POST",
data : data,
success : function(result){
if(result == "success")
{
alert("입력하신 이메일로 임시 비밀번호가 발송되었습니다. 메일을 확인해주세요.");
var previousPage ="${loginVO.previousPage}";
if(previousPage == "alreadySignUpPopup")
{
document.initPw.action="${pageContext.request.contextPath}/member/selectAlreadySignUpMobilePopup.do";
fn_layerPopFormSubmit("initPw",false);
}else{
fn_closeLayerPopup();
}
alert(result);
location.href='${pageContext.request.contextPath}/login/loginForm.do';
}
else if(result == "fail")
{
alert("일치하는 정보가 없습니다. 다시 확인해주세요.");
}
},error : function(){
alert("이메일 발송에 실패하였습니다.");
}
})
}
function fn_cancle()
{
document.initPw.action="${pageContext.request.contextPath}/member/selectAlreadySignUpMobilePopup.do";
fn_layerPopFormSubmit("initPw",false);
}
</script>
</head>
<body>
<form id="initPw" name="initPw" method="post">
<h1>비밀번호 찾기</h1>
<p>회원님의 본인확인을 위해 가입시 등록하신 이메일을 입력하여 주시기 바랍니다.</p><br>
Email <input type="text" id="email" name="email">
<input type="button" onclick ="goFindPw();" value="임시비밀번호 받기">
<input type="hidden" id="mbInfoId" name="mbInfoId" value="${loginVO.mbInfoId }">
<input type="hidden" id="nameTemp" name="nameTemp" value="${loginVO.nameTemp }">
<input type="hidden" id="emailTemp" name="emailTemp" value="${loginVO.emailTemp }">
<input type="hidden" id="mobileNo" name="mobileNo" value="${loginVO.mobileNo }">
<input type="hidden" id="previousPage" name="previousPage" value="${loginVO.previousPage}">
<div class="pop-find">
<div class="row Title">
<p>내 정보</p>
<h3>비밀번호 찾기</h3>
</div>
<div class="inner">
<div class="row Text">
<p>이메일 정보가 확인되면 해당 메일로<br><span>임시비밀번호</span>를 보내드립니다.</p>
</div>
<div class="row find">
<p><input type="text" name="email" placeholder="example@mail.com" class="find-input" onKeypress="javascript:if(event.keyCode==13) {goFindPw();}"/></p>
<p class="text">- 임시 비밀번호가 발급된 후 [마이페이지 &gt; 회원정보관리 &gt; 내 정보]에서 비밀번호를 수정해주세요.</p>
</div>
<div class="row btn-box">
<button type="button" class="btn btn-color" onclick="goFindPw();">확인</button>
<button type="button" class="btn btn-gray close" id="cancle">취소</button>
</div>
<button type="button" class="find-close" onclick="fn_closeLayerPopup();"></button>
</div>
<div class="Bg"></div>
</div>
</form>
</body>
</html>

View File

@ -1,36 +0,0 @@
<%
/**
* <pre>
* @Class Name : initPasswordResult.jsp
*
* @Description : 비밀번호 찾기 결과
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
비밀번호찾기 결과페이지
</body>
</html>

View File

@ -37,19 +37,52 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript" defer="defer">
function signUp(){
<%//패스워드 정규식 9자이상 소문자, 숫자 ,특수문자%>
var regExp = /^(?=.*[a-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{9,}$/i;
var p = document.getElementById('password');
var p_cf = document.getElementById('passwordConfirm');
if(p.value != p_cf.value)
var flag = false;
if($("#name").val() == "")
{
alert("비밀번호가 일치하지 않습니다. 확인해 주세요.");
p_cf.focus();
$("#name").focus();
alert("이름을 입력해주세요.");
return false;
}
$("input[name='gender']").each( function () {
if (this.checked) {
flag = !flag;
return;
}
});
if (!flag) {
$("#m").focus();
alert("성별을 체크해주세요.");
return false;
}
if(!checkBirthday())
{
$("#birth_yy").focus();
alert("생년월일이 형식에 맞지 않습니다. 확인해주세요.");
return false;
}
if($("#mobileNo_1").val() == "" || $("#mobileNo_2").val() == "" || $("#mobileNo_3").val() == "")
{
$("#mobileNo_1").focus();
alert("휴대폰 번호를 입력해주세요.");
return false;
}
if($("#mobileCertYn").val()!="Y")
{
alert("휴대전화 인증이 필요합니다.");
alert("휴대폰 인증이 필요합니다.");
return false;
}
if($("#email").val() == "")
{
$("#email").focus();
alert("이메일을 입력해주세요.");
return false;
}
if($("#emailCertYn").val()!="Y")
@ -57,36 +90,60 @@ function signUp(){
alert("이메일 인증이 필요합니다.");
return false;
}
if($("#zipCode").val()=="" || $("#address").val()=="")
{
$("#zipCode").focus();
alert("주소를 입력해주세요.");
return false;
}
if(!checkBirthday())
{
alert("생년월일이 형식에 맞지 않습니다. 확인해주세요.");
if(!regExp.test(p.value)){
p.focus();
alert("9자리 이상, 숫자/문자/특수문자를 혼합하여 입력해주세요.");
return false;
}
if(p.value != p_cf.value)
{
p_cf.focus();
alert("비밀번호가 일치하지 않습니다. 확인해 주세요.");
return false;
}
if($("input[name='infoRecvEmailYnChk']").is(":checked") == false && $("input[name='infoRecvSmsYnChk']").is(":checked") == false)
{
$("#service-chk1").focus();
alert("대출/열람 정보 수신동의를 하나 이상 선택해주세요.");
return false;
}
if(confirm("회원가입하시겠습니까?")){
$("#birthday").val($("#birth_yy").val()+$("#birth_mm").val()+$("#birth_dd").val());
$("#MobileNo").val($("#mobileNo_1").val()+$("#mobileNo_2").val()+$("#mobileNo_3").val());
if($("input[name='infoRecvSmsYnChk']").is(":checked"))$("#infoRecvSmsYn").val("Y");
else $("#infoRecvSmsYn").val("N");
if($("input[name='infoRecvEmailYnChk']").is(":checked"))$("#infoRecvEmailYn").val("Y");
else $("#infoRecvEmailYn").val("N");
if($("input[name='mktRecvSmsYnChk']").is(":checked"))$("#mktRecvSmsYn").val("Y");
else $("#mktRecvSmsYn").val("N");
if($("input[name='mktRecvEmailYnChk']").is(":checked"))$("#mktRecvEmailYn").val("Y");
else $("#mktRecvEmailYn").val("N");
<%
//연락받을 이메일 입력
%>
$("#loginUserId").val($("#email").val());
document.joinForm.action="${pageContext.request.contextPath}/member/insertMemberInfo.do";
document.joinForm.submit();
var form = document.joinForm;
form.action="${pageContext.request.contextPath}/member/insertMemberInfo.do";
form.submit();
}
return false;
}
$(document).ready(function() {
$("input:radio[name='gender']:radio[value='${loginVO.snsGender}']").prop('checked', true);
birthdaySelectBox();
$("input:checkbox[name='gender']:checkbox[value='${loginVO.snsGender}']").prop('checked', true);
var birthday="${loginVO.snsBirthday}";
console.log("${loginVO.snsBirthday}");
if(!birthday == "")
{
@ -99,24 +156,53 @@ $(document).ready(function() {
birth_dd = birth_dd.substr(1,1)
}
$("#birth_yy").val(birth_yy)
$("#birth_yy").val(birth_yy).prop("selected", true);
$("#birth_mm").val(birth_mm).prop("selected", true);
$("#birth_dd").val(birth_dd)
$("#birth_dd").val(birth_dd).prop("selected", true);
}
var MobileNo="${loginVO.snsMobileNo}";
if(!MobileNo == "")
{
var mobileNo_1 = "";
var mobileNo_2 = "";
var mobileNo_3 = "";
if(MobileNo.length == 11)
{
mobileNo_1 =MobileNo.substr(0,3);
mobileNo_2 =MobileNo.substr(3,4);
mobileNo_3 =MobileNo.substr(7,4);
}
if(MobileNo.length == 10)
{
mobileNo_1 =MobileNo.substr(0,3);
mobileNo_2 =MobileNo.substr(3,3);
mobileNo_3 =MobileNo.substr(6,4);
}
$("#mobileNo_1").val(mobileNo_1);
$("#mobileNo_2").val(mobileNo_2);
$("#mobileNo_3").val(mobileNo_3);
}
<%
//핸드폰 번호가 변하는것 실시간 감지
%>
$("#mobileNo").on("propertychange change keyup paste input", function() {
if($("#snsMobileNo").val() == $("#mobileNo").val())
$("#mobileNo_1,#mobileNo_2,#mobileNo_3").on("propertychange change keyup paste input", function() {
if($("#snsMobileNo").val() == $("#mobileNo_1").val()+ $("#mobileNo_2").val()+ $("#mobileNo_3").val())
{
$("#mobileCertYn").val("Y");
$("#mobileCertSendBtn").css("display","none");
$("#mobileReSend").css("display","none");
$("#mobileCertForm").css("display","none");
$("#mobileSuc").css("display","");
}else{
$("#mobileCertYn").val("N");
$("#mobileCertSendBtn").css("display","block");
$("#mobileCertSendBtn").css("display","");
$("#mobileReSend").css("display","");
$("#mobileSuc").css("display","none");
}
});
<%
@ -127,11 +213,13 @@ $(document).ready(function() {
{
$("#emailCertYn").val("Y");
$("#emailCertSendBtn").css("display","none");
$("#emailReSend").css("display","none");
$("#emailCertForm").css("display","none");
}else{
$("#emailCertYn").val("N");
$("#emailCertSendBtn").css("display","block");
$("#emailCertSendBtn").css("display","");
$("#emailReSend").css("display","");
}
});
})
@ -160,7 +248,7 @@ function emailCert(){
if(result.emailCertYn=="Y")
{
$("#emailCertYn").val("N");
$("#emailCertForm").css("display","block")
$("#emailCertForm").css("display","")
}
if(result.emailCertYn=="N")
{
@ -205,11 +293,12 @@ function certEmailCheck(){
%>
function mobileCert(){
$("#mobileNo").val($("#mobileNo").val().replace(/-/gi,""));
var mobileNo = $("#mobileNo_1").val()+ $("#mobileNo_2").val()+ $("#mobileNo_3").val();
mobileNo = mobileNo.replace(/-/gi,"");
$("#mobileNo").val(mobileNo);
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#mobileNo").val()) || $("#mobileNo").val()==""){
if(!regExp.test(mobileNo) || mobileNo==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
@ -219,11 +308,12 @@ function mobileCert(){
url : "${pageContext.request.contextPath}/member/mobileCertNum.ajax",
type : "POST",
async: false,
data : {"mobileNo" : $("#mobileNo").val()},
data : {"mobileNo" : mobileNo},
success : function(result){
alert("인증번호가 발송됐습니다.");
$("#mobileCertYn").val("N");
$("#mobileCertForm").css("display","block")
$("#mobileSuc").css("display","none");
$("#mobileCertForm").css("display","")
},error : function(){
}
})
@ -247,6 +337,7 @@ function certMobileCheck(){
{
alert("인증되었습니다.");
$("#mobileCertYn").val("Y");
$("#mobileSuc").css("display","");
document.joinForm.action="${pageContext.request.contextPath}/member/selectAlreadySignUpMobilePopup.do";
fn_layerPopFormSubmit("joinForm",false);
}else
@ -267,9 +358,9 @@ document.addEventListener('keydown', function(event) {
function checkBirthday() {
var birthday;
var yy = $("#birth_yy").val();
var yy = $("#birth_yy option:selected").val();
var mm = $("#birth_mm option:selected").val();
var dd = $("#birth_dd").val();
var dd = $("#birth_dd option:selected").val();
var lang = "ko_KR";
var oyy = $("#birth_yy");
@ -354,165 +445,177 @@ function calcAge(birth) {
}
</script>
<style type="text/css">
body {
padding-top:0px;
margin-top:0px;
background-color:#f5f5f5;
}
.page-header {
padding-top:0px;
margin-top:0px;
}
.form-horizontal .control-label.text-left{
text-align:left;
}
.form-horizontal .form-group {
height:50px;
}
h3 span.ok {
color:#01A9DB;
}
label.error {
font-family:"돋움", Dotum, "Apple SD Gothic Neo", Helvetica, Sans-serif;
font-size:9pt;
font-weight:600;
padding:3px 0 0 10px;
color:#FF0000;
display:block;
}
</style>
</head>
<body>
<div id="wrap">
<br><br>
<b><font size="6" color="gray">회원가입</font></b>
<br><br><br>
<!-- 회원가입 섹션 -->
<div class="location join">
<h2 class="blind">회원가입 섹션영역</h2>
<div class="inner">
<div class="row-top">
<div class="location-box">
<ul class="loc">
<li>HOME</li>
<li class="on">회원가입</li>
</ul>
<ul class="tit">
<li><span>회원</span>가입</li>
</ul>
</div>
<div class="arr"><img src="/images/icon/icon-join-arr2.png" alt="화살표 아이콘"></div>
</div>
<div class="contents row-bottom">
<div class="join-box">
<div class="step">
<div class="s1">
<div class="icon"><img src="/images/icon/icon-join-step-suc.png" alt="인증 성공 아이콘"></div>
<div class="text"><p>STEP 01</p><p>본인인증</p></div>
</div>
<div class="s2">
<div class="icon"><img src="/images/icon/icon-join-step-suc.png" alt="인증 성공 아이콘"></div>
<div class="text"><p>STEP 02</p><p>약관동의</p></div>
</div>
<div class="s3 on">
<div class="icon"><img src="/images/icon/icon-join-step3-on.png" alt="정보입력 아이콘"></div>
<div class="text"><p>STEP 03</p><p>정보입력</p></div>
</div>
</div>
<form id="joinForm" name="joinForm" method="post" onsubmit="return signUp()">
<table>
<tr>
<td id="title">이메일</td>
<td>
<input type="email" id="email" name="email" maxlength="30" required value="<c:out value="${loginVO.snsUserId}"/>" ><button type="button" id="emailCertSendBtn" name="emailCertSendBtn" style="text-align:left;display:none;" class="btn-warning" onclick="emailCert()" required>인증번호 받기</button>
<div id="emailCertForm" style="display:none;"><br><input type='text' id='emailVrfctNo' name='emailVrfctNo'> <button type='button' style='text-align:left;' class='btn-warning' onclick='certEmailCheck()' >인증번호 확인</button></div>
</td>
</tr>
<tr>
<td id="title">이름</td>
<td>
<input type="text" id="name" name="name" minlength="2" maxlength="20" value="<c:out value="${loginVO.snsName}"/>" required >
</td>
</tr>
<tr>
<td id="title">성별</td>
<td>
<input type="radio" name="gender" value="M" required>남자
<input type="radio" name="gender" value="F" required>여자
</td>
</tr>
<tr>
<td id="title">생년월일</td>
<td>
<input type="text" id="birth_yy" name="birth_yy" maxlength="4" placeholder="년(4자)" required>
<select id="birth_mm" name="birth_mm" required>
<option value="">월</option>
<option value="01" >1</option>
<option value="02" >2</option>
<option value="03" >3</option>
<option value="04" >4</option>
<option value="05" >5</option>
<option value="06" >6</option>
<option value="07" >7</option>
<option value="08" >8</option>
<option value="09" >9</option>
<option value="10" >10</option>
<option value="11" >11</option>
<option value="12" >12</option>
</select>
<input type="text" id="birth_dd" name="birth_dd" size="2" maxlength="2" placeholder="일" size="4" required>
</td>
</tr>
<tr>
<td id="title">비밀번호</td>
<td>
<input type="password" id="password" name="password" minlength="8" maxlength="16"
oninvalid="this.setCustomValidity('8~16자 영문 , 숫자, 특수문자를 사용하세요.')"
oninput="this.setCustomValidity('')"
pattern="^(?=.*[a-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,16}$" required>
</td>
</tr>
<tr>
<td id="title">비밀번호 확인</td>
<td>
<input type="password" id="passwordConfirm" name="passwordConfirm" minlength="8" maxlength="16" required>
</td>
</tr>
<tr>
<td id="title">주소</td>
<td>
<input type="text" id="zipCode" name="zipCode" readonly><button type="button" style="text-align:left;" class="btn-warning" onclick="sample6_execDaumPostcode()">주소검색</button><br>
<input type="text" id="address" name="address" readonly><input type="text" id="addressDetail" name="addressDetail" >
</td>
</tr>
<tr>
<td id="title">휴대전화</td>
<td id="Cert">
<input type="text" id="mobileNo" name="mobileNo" value="<c:out value="${loginVO.snsMobileNo}"/>" required ><button type="button" id="mobileCertSendBtn" name="mobileCertSendBtn" style="text-align:left;display:none;" class="btn-warning" onclick="mobileCert()" required>인증번호 받기</button>
<div id="mobileCertForm" style="display:none;"><br><input type='text' id='mobileVrfctNo' name='mobileVrfctNo'> <button type='button' style='text-align:left;' class='btn-warning' onclick='certMobileCheck()' >인증번호 확인</button></div>
</td>
</tr>
</table>
<br>
<div class="info">
<form id="joinForm" name="joinForm" method="post" class="mt-5 form-container">
<input type="hidden" id="birthday" name="birthday" >
<input type="hidden" id="mobileNo" name="mobileNo" >
<input type="hidden" id="mobileCertYn" name="mobileCertYn" value="Y">
<input type="hidden" id="emailCertYn" name="emailCertYn" value="Y">
<input type="hidden" id="loginUserId" name="loginUserId" >
<input type="hidden" id="snsMobileNo" name="snsMobileNo" value="<c:out value="${loginVO.snsMobileNo}"/>">
<input type="hidden" id="snsUserId" name="snsUserId" value="<c:out value="${loginVO.snsUserId}"/>">
<input type="hidden" id="infoRecvSmsYn" name="infoRecvSmsYn" >
<input type="hidden" id="infoRecvEmailYn" name="infoRecvEmailYn">
<input type="hidden" id="mktRecvSmsYn" name="mktRecvSmsYn">
<input type="hidden" id="mktRecvEmailYn" name="mktRecvEmailYn">
<input type="submit" value="가입"/>
<h2 style="margin-top:0;">회원정보</h2>
<div class="form-group Username">
<label>이름</label>
<div class="con">
<input class="form-control" type="text" id="name" name="name" minlength="2" maxlength="20" value="<c:out value="${loginVO.snsName}"/>" placeholder="이름을 입력하세요" />
</div>
</div>
<div class="form-group Usersex">
<label>성별</label>
<div class="con">
<div class="chk"><input type="checkbox" id="m" class="sex" name="gender" value="M" ><label for="m">남자</label></div>
<div class="chk"><input type="checkbox" id="w" class="sex" name="gender" value="F"><label for="w">여자</label></div>
</div>
</div>
<div class="form-group Userbirth">
<label>생년월일</label>
<div class="con">
<select name="birth_yy" id="birth_yy"></select> 년
<select name="birth_mm" id="birth_mm"></select> 월
<select name="birth_dd" id="birth_dd"></select> 일
</div>
</div>
<div class="form-group Usermobile">
<label>휴대폰 번호</label>
<div class="con mobile">
<div class="row">
<input class="form-control mobile1" type="text" id="mobileNo_1" value="010" maxlength="3" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/> -
<input class="form-control mobile2" type="text" id="mobileNo_2" value="" maxlength="4" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/> -
<input class="form-control mobile3" type="text" id="mobileNo_3" value="" maxlength="4" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/>
<button type="button" class="btn-color" id="mobileCertSendBtn" name="mobileCertSendBtn" style="display:none;" onclick="mobileCert();">인증하기</button>
<button type="button" class="btn-black" id="mobileReSend" style="display:none;" onclick="mobileCert();">재전송</button>
</div>
<div class="row" id="mobileCertForm" style="display:none;">
<input class="form-control cer" type="text" id='mobileVrfctNo' name='mobileVrfctNo' placeholder=" SMS로 발송된 인증번호를 입력하세요"/>
<button type="button" class="btn-gray" onclick='certMobileCheck();'>확인</button>
<span id="mobileSuc" class="suc">인증이 완료되었습니다.</span>
</div>
</div>
</div>
<div class="form-group Useremail">
<label>이메일</label>
<div class="con email">
<div class="row">
<input class="form-control email1" type="email" id="email" name="email" placeholder="example@mail.com" maxlength="30" value="<c:out value="${loginVO.snsUserId}"/>" />
<button type="button" class="btn-color" id="emailCertSendBtn" name="emailCertSendBtn" style="display:none;" onclick="emailCert();">인증하기</button>
<button type="button" class="btn-black" id="emailReSend" style="display:none;" onclick="emailCert();">재전송</button>
</div>
<div class="row" id="emailCertForm" style="display:none;">
<input class="form-control cer" type="text" id='emailVrfctNo' name='emailVrfctNo' placeholder=" 이메일로 발송된 인증번호를 입력하세요"/>
<button type="button" class="btn-gray" onclick='certEmailCheck()'>확인</button>
<span id="emailSuc" class="suc">인증이 완료되었습니다.</span>
<span class="chk-suc"></span>
</div>
</div>
</div>
<div class="form-group Useraddr">
<label>주소</label>
<div class="con addr">
<div class="row">
<input class="form-control addr1" type="text" id="zipCode" name="zipCode" readonly placeholder="우편번호" />
<button type="button" class="btn-color" onclick="sample6_execDaumPostcode();">우편번호</button>
</div>
<div class="row">
<input class="form-control addr2" type="text" id="address" name="address" readonly placeholder="주소" />
<input class="form-control addr3" type="text" id="addressDetail" name="addressDetail" placeholder="상세주소" />
</div>
</div>
</div>
<div class="form-group Password">
<label>비밀번호</label>
<div class="con">
<input class="form-control" type="password" id="password" name="password" placeholder="비밀번호" />
<span>9자리 이상, 숫자/문자/특수문자를 혼합하여 입력</span>
<input class="form-control" type="password" id="passwordConfirm" name="passwordConfirm" placeholder="비밀번호 확인" />
<span class="suc">일치합니다.</span>
<span class="fail">일치하지 않습니다.</span>
<span class="text">- 입력하신 비밀번호는 ‘계정 연결’, ‘내 정보 확인’, ‘회원탈퇴’ 시, 회원님의 정보보호 및 본인확인을 위해 사용됩니다.</span>
</div>
</div>
<h2>서비스 알림 수신 동의</h2>
<div class="form-group service">
<div class="left">
<div class="chk"><input type="checkbox" id="service-chk1" class="ser-chk1" name="" checked><label for="service-chk1">대출/열람 정보 수신동의 [필수/1건 이상 선택]</label></div>
</div>
<div class="right">
<div class="chk"><input type="checkbox" id="service-chk1-1" class="ser-chk1-1" name="infoRecvSmsYnChk" checked><label for="service-chk1-1">문자(SMS)</label></div>
<div class="chk"><input type="checkbox" id="service-chk1-2" class="ser-chk1-1" name="infoRecvEmailYnChk" checked><label for="service-chk1-2">이메일</label></div>
</div>
<p class="bg">- 문자(SMS)/이메일 수신동의를 하시면 ‘자료반납’, ‘자료연체’, ‘예약자료 도착’, ‘열람신청 승인’, ‘열람신청 반려’ 알림을 받으실 수 있습니다.</p>
</div>
<div class="form-group service">
<div class="left">
<div class="chk"><input type="checkbox" id="service-chk2" class="ser-chk2" name=""><label for="service-chk2">지방문화원 소식/홍보 알림 수신동의 [선택]</label></div>
</div>
<div class="right">
<div class="chk"><input type="checkbox" id="service-chk2-1" class="ser-chk2-2" name="mktRecvSmsYnChk"><label for="service-chk2-1">문자(SMS)</label></div>
<div class="chk"><input type="checkbox" id="service-chk2-2" class="ser-chk2-2" name="mktRecvEmailYnChk"><label for="service-chk2-2">이메일</label></div>
</div>
<p class="bg">- 문자(SMS)/이메일 수신동의를 하시면 문화원 소식이나 주요 행사 등의 정보를 빠르게 만나실 수 있습니다.</p>
<p>- 회원가입완료, 임시비밀번호 발급관련 내용의 경우 수신 동의와 상관없이 이메일로 발송됩니다.</p>
</div>
<div class="btn-box">
<button type="button" class="btn btn-gray" id="cancel">취소</button>
<button type="button" class="btn btn-color" onclick="signUp();">가입하기</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>

View File

@ -30,7 +30,35 @@
<title>Insert title here</title>
</head>
<body>
가입되셨습니다. 환영합니다
<!-- 회원가입완료 섹션 -->
<div class="location join succ">
<h2 class="blind">회원가입완료 섹션영역</h2>
<div class="inner">
<div class="row-top icon">
<div class="icon"><img src="/images/icon/icon-join-suc.png" alt="화살표 아이콘"></div>
<p>통합회원가입 완료</p>
</div>
<div class="contents row-bottom">
<div class="join-box">
<div class="success">
<div class="text">
<p>반갑습니다!</p>
<p>지방문화원 소장자료관 <span>통합회원가입이 완료</span>되었습니다.</p>
<p><span>${result.name }</span>님의 지방문화원 소장자료관 회원증이 발급되었으며, <span>[회원증] 메뉴</span>를 통해 확인하실 수 있습니다.</p>
<p>가입시 입력된 정보는 <span>[마이페이지 &gt; 회원정보관리 &gt; 수정하기]</span>에서 수정 가능합니다.</p>
</div>
<div class="box">
<p>지방문화원 소장자료관 가입 및 이용 안내</p>
<p>문화원별 소장자료관은 통합회원으로 관리/운영됩니다.<br>가입하신 계정을 통해 <span>전국 모든 문화원 소장자료관 이용이 가능</span>합니다.</p>
</div>
<div class="btn">
<a href="/" class="btn-color">소장자료관으로</a>
</div>
</div>
</div>
</div>
</div>
</div>
</body>

View File

@ -52,19 +52,76 @@ function snsCertForm(){
}
location.href="${pageContext.request.contextPath}/member/insertMemberInfoForm.do";
}
function cancle(){
location.href="${pageContext.request.contextPath}/login/memberSnsForm.do";
}
</script>
</head>
<body>
<div style="width:500px;">
<form id="termsForm" name="termsForm">
<p1><c:out value="${termTitle}" escapeXml="false"/></p1>
<textarea style="height:200px;width:500px;"><c:out value="${termContent}" escapeXml="false"/></textarea>
<br><div style="float: right;"><input type="checkbox" name="agree" >동의</div>
<p1><c:out value="${privacyTitle}" escapeXml="false"/></p1>
<textarea style="height:200px;width:500px;"><c:out value="${privacyContent}" escapeXml="false"/></textarea>
<br><div style="float: right;"><input type="checkbox" name="agree" >동의</div>
<br><br><input type="button" value="다음" onclick="snsCertForm();" style="float: right;">
</form>
<!-- 회원가입 섹션 -->
<section class="location join">
<h2 class="blind">회원가입 섹션영역</h2>
<div class="inner">
<div class="row-top">
<div class="location-box">
<ul class="loc">
<li>HOME</li>
<li class="on">회원가입</li>
</ul>
<ul class="tit">
<li><span>회원</span>가입</li>
</ul>
</div>
<div class="arr"><img src="/images/icon/icon-join-arr2.png" alt="화살표 아이콘"></div>
</div>
<div class="row-bottom">
<div class="join-box">
<div class="step">
<div class="s1">
<div class="icon"><img src="/images/icon/icon-join-step-suc.png" alt="인증 성공 아이콘"></div>
<div class="text"><p>STEP 01</p><p>본인인증</p></div>
</div>
<div class="s2 on">
<div class="icon"><img src="/images/icon/icon-join-step2-on.png" alt="약관동의 아이콘"></div>
<div class="text"><p>STEP 02</p><p>약관동의</p></div>
</div>
<div class="s3">
<div class="icon"><img src="/images/icon/icon-join-step3.png" alt="정보입력 아이콘"></div>
<div class="text"><p>STEP 03</p><p>정보입력</p></div>
</div>
</div>
<div class="privacy-box">
<div class="use">
<div class="con-1">
<div class="title"><c:out value="${termTitle}" escapeXml="false"/></div>
<div class="chk"><input type="checkbox" id="pri-chk1" name="agree"><label for="pri-chk1">동의합니다.</label></div>
</div>
<div class="con-2">
<div class="textarea mCustomScrollbar" data-mcs-theme="dark-2">
<c:out value="${termContent}" escapeXml="false"/>
</div>
</div>
</div>
<div class="pri">
<div class="con-1">
<div class="title"><c:out value="${privacyTitle}" escapeXml="false"/></div>
<div class="chk"><input type="checkbox" id="pri-chk2" name="agree"><label for="pri-chk2">동의합니다.</label></div>
</div>
<div class="con-2">
<div class="textarea mCustomScrollbar" data-mcs-theme="dark-2">
<c:out value="${privacyContent}" escapeXml="false"/>
</div>
</div>
</div>
</div>
<div class="btn-box">
<button type="button" class="btn btn-gray" id="cancel" onclick="cancle();">취소</button>
<button type="button" class="btn btn-color" id="submit" onclick="snsCertForm();">다음</button>
</div>
</div>
</div>
</div>
</section>
</body>
</html>

View File

@ -31,13 +31,125 @@
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">상세 검색</c:set>
<script src="/js/default.js"></script>
<script src="/js/nlib.js"></script>
<script>
$(document).ready(function() {
// $('.pop-advanced-search').fadeIn();
// $('html,body').addClass('no-scroll');
// 상세검색 팝업 - 문화원정보 선택영역 초기작업 메서드 분리
var depth2H = 0;
$('.pop-advanced-search .depth1-check input').each(function () {
if ($(this).is(":checked")) { // 활성화 line에 높이 잡아주기
$('.depth1').removeClass('on');
$(this).parents('.depth1').addClass('on');
depth2H = $(this).parents('.depth1-check').next('.depth2').outerHeight();
$(this).parents('.line').siblings('.line').attr('style', '');
$(this).parents('.line').height(depth2H + 50);
}
$(this).siblings('.tab-name').on('click', function() {
$('.depth1').removeClass('on');
$(this).parents('.depth1').addClass('on');
depth2H = $(this).parents('.depth1-check').next('.depth2').outerHeight();
$('.line').attr('style', '');
$(this).parents('.line').height(depth2H + 50);
});
});
$('.pop-advanced-search .depth2 input').change(function() {
var html = "";
var depth1 = "";
var depth2 = "";
if ($(this).is(':checked')) {
depth1 = $(this).parents('.depth2').siblings('.depth1-check').find('label').text();
depth2 = $("label[for='"+$(this).attr('id')+"']").text();
html = "<li><button type=\"button\" onclick=\"function('');\" title=\"삭제\" name=\""+ $(this).attr('id') +"\">" + depth1 + "<span class=\"sign\"> > </span>"+ depth2 +"</button></li>"
$(this).parents('.depth2').siblings('.depth1-check').find('input').prop('checked', true);
$(this).parents('.conditions-box').siblings('.selected-conditions').find('.conditions').append(html);
} else {
$("button[name="+$(this).attr('id')+"]").remove();
if ($(this).parents('.depth2').find('input:checked').length <= 0) {
$(this).parents('.depth2').siblings('.depth1-check').find('input').prop('checked', false);
}
}
//filter_mylist clk array
var filter_mylist = "";
var filter_mylist_clk = "";
filter_mylist = $('#d_filter_mylist').val();
if($(this).attr('name') == 'second_class'){
filter_mylist_clk = 'class_'+$(this).val() +',';
}else if($(this).attr('name') == 'second_category'){
filter_mylist_clk = 'category_'+$(this).val() +',';
}
if($(this).is(":checked")){
filter_mylist += filter_mylist_clk;
}else{
filter_mylist = filter_mylist.replace(filter_mylist_clk,'');
}
$('#d_filter_mylist').val(filter_mylist);
//depth-1
var on_classArr = document.querySelectorAll("div.depth1.on");
var filter_class = "" ;
var filter_category = "" ;
for(var i=0; i<on_classArr.length; i++){
if($(on_classArr[i]).find('input').attr('name') == 'first_class') {
filter_class = $(on_classArr[i]).find('input').val();
}else{
filter_category = $(on_classArr[i]).find('input').val();
}
}
var listForm = document.forms["d_referencelistForm"];
listForm.filter_class.value = filter_class;
listForm.filter_category.value = filter_category;
});
// 상세검색 초기화
$('.pop-advanced-search .btn-reset-conditions').on('click', function() {
$("input[id^='"+$(this).attr('name')+"-chk']").each(function() {
$(this).prop('checked', false);
});
$(this).parents('.title').siblings('.conditions').find('*').remove();
});
// depth-1 열고 닫기
$('.filter-tit .btn-toggle').on('click', function() {
if($(this).text() == '닫기') {
$(this).text('열기');
$(this).parent('.filter-tit').siblings('.filter-list').stop().slideUp();
$('.filter .btn-toggle-more').css('display','none');
} else {
$(this).text('닫기');
$(this).parent('.filter-tit').siblings('.filter-list').stop().slideDown();
$('.filter .btn-toggle-more').css('display','block');
}
});
// depth-2 열고 닫기
$('.filter .depth-1 .btn-toggle').on('click', function () {
var _this = $(this).parents('li').index();
if ($(this).text() == '닫기') {
$(this).text('열기');
$(this).siblings('.check').find('.tab-name').trigger("click");
} else {
$(this).text('닫기');
$(this).siblings('.check').find('.tab-name').trigger("click");
}
});
$('.filter-wrap .tab-name').on('click', function() {
if ($('body').hasClass('pop-filter')) {
$(this).parents('.depth-1').removeClass('on');
}
});
$('#d_referencelistForm input[name=ageCode]').change(function () {
var id = $(this).attr('id');
@ -51,20 +163,62 @@ $(document).ready(function() {
$("#times-chk1").prop('checked',false);
}
});
if(document.getElementById("referencelistForm")){
//상세검색 세팅
detailSearchSetting();
}
});
function d_search(){
if($("#d_creatYyyyStart").val() != "" && $("#d_creatYyyyEnd").val() != "")
{
$("#d_filter_creatYyyy").val("date");
$("#d_filter_mylist").val($("#d_filter_mylist").val() + "creat_date,");
}else{
$("#d_filter_creatYyyy").val("all");
}
document.d_referencelistForm.submit();
}
//소장자료페이지 로드시 상세검색 세팅
function detailSearchSetting(){
$("#d_query").val($("#query").val());
$("#d_creatYyyyStart").val($("#creatYyyyStart").val());
$("#d_creatYyyyEnd").val($("#creatYyyyEnd").val());
var mylist_arr = $("#referencelistForm [name=filter_mylist]").val().split(",");
var chk_value = "";
for(var i=0; i<mylist_arr.length; i++){
chk_value = mylist_arr[i].substring((mylist_arr[i].indexOf("_")+1));
if(mylist_arr[i].indexOf("class")>=0)
{
$("#d_referencelistForm [name=second_class]").each(function (index, item) {
if($(this).val() == chk_value)
{
$(this).trigger("click");
}
});
}else if(mylist_arr[i].indexOf("category")>=0)
{
$("#d_referencelistForm [name=second_category]").each(function (index, item) {
if($(this).val() == chk_value)
{
$(this).trigger("click");
}
});
}
}
};
</script>
<div class="pop-wrap">
<div class="Title">
<span>상세 검색</span>
<span>검색어와, 검색조건들을 통해서 더 정확한 정보를 찾아보세요.</span>
<span><a href="javascript:;" class="btn-close-pop"><img src="/images/btn/btn-pop-close.png" alt="닫기 아이콘"></a></span>
<span><a href="javascript:;" class="btn-close-pop" onclick="fn_closeLayerPopup();"><img src="/images/btn/btn-pop-close.png" alt="닫기 아이콘"></a></span>
</div>
<form action="/search/searchList.do" id="d_referencelistForm" name="d_referencelistForm" class="mCustomScrollbar" data-mcs-theme="dark-2">
<form action="/search/searchList.do" method="POST" id="d_referencelistForm" name="d_referencelistForm" class="mCustomScrollbar" data-mcs-theme="dark-2">
<input type="hidden" id="d_filter_class" name="filter_class">
<input type="hidden" id="d_filter_category" name="filter_category">
<input type="hidden" id="d_filter_mylist" name="filter_mylist">
@ -149,13 +303,13 @@ function d_search(){
<c:forEach var="firstCategoryInfo" items="${firstCategoryList}" varStatus="status">
<c:if test="${firstCategoryInfo.upClsfId eq '2' }">
<div class="depth1">
<div class="depth1-check check tab"><input type="checkbox" value="${firstCategoryInfo.remark}" id="subject-chk${count+1}" name="first_category"/><label for="subject-chk${count+1}">${firstCategoryInfo.clsfNm}</label>
<div class="depth1-check check tab"><input type="checkbox" value="${firstCategoryInfo.clsfId}" id="subject-chk${count+1}" name="first_category"/><label for="subject-chk${count+1}">${firstCategoryInfo.clsfNm}</label>
<button type="button" class="tab-name">${firstCategoryInfo.clsfNm}</button>
</div>
<ul class="depth2">
<c:forEach var="secondCategoryInfo" items="${secondCategoryList}" varStatus="seStatus">
<c:if test="${firstCategoryInfo.clsfId eq secondCategoryInfo.upClsfId }">
<li><div class="check"><input type="checkbox" value="${secondCategoryInfo.remark}" id="subject-chk${count+1}-${seStatus.index+1}" name="second_category" /><label for="subject-chk${count+1}-${seStatus.index+1}">${secondCategoryInfo.clsfNm}</label></div></li>
<li><div class="check"><input type="checkbox" value="${secondCategoryInfo.clsfId}" id="subject-chk${count+1}-${seStatus.index+1}" name="second_category" /><label for="subject-chk${count+1}-${seStatus.index+1}">${secondCategoryInfo.clsfNm}</label></div></li>
</c:if>
</c:forEach>
</ul>
@ -208,7 +362,7 @@ function d_search(){
<div class="btn-wrap">
<button type="button" class="btn btn-white" id="cmm_popudp_del">초기화</button>
<button type="button" onclick="d_search();" class="btn btn-color" id="cmm_popudp_submit">검색</button>
<button type="button" class="btn btn-gray btn-close-pop">닫기</button>
<button type="button" class="btn btn-gray btn-close-pop" onclick="fn_closeLayerPopup();">닫기</button>
</div>
</form>
</div>

View File

@ -34,12 +34,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<title>Insert title here</title>
<script type="text/javaScript" language="javascript" defer="defer">
$(document).ready(function() {
// sns연동이 하나일때 연결해제버튼 제거
if($("input[name='unlinkBtn']").length==1)
if($("inputinput[name='unlinkBtn']").length==1)
{
$("input[name='unlinkBtn']").remove();
};
@ -48,27 +46,29 @@ $(document).ready(function() {
//새비밀번호,새비밀번호확인이 일치하는지 확인
%>
$("#newPassword,#newPasswordConfirm").on("propertychange change keyup paste", function() {
if($("#newPassword").val() == $("#newPasswordConfirm").val())
if($("#newPassword").val() == $("#newPasswordConfirm").val() && $("#newPassword").length > 0)
{
$("#passwordMsg *").remove();
$("#passwordMsg").append("<a>비밀번호가 일치합니다.</a>");
$("#passwdMatch").text("일치합니다.");
}else{
$("#passwordMsg *").remove();
$("#passwordMsg").append("<a>비밀번호가 일치하지않습니다.</a>");
$("#passwdMatch").text("일치하지 않습니다.");
}
});
<%
//핸드폰 번호가 변하는것 실시간 감지
%>
$("#mobileNo").on("propertychange change keyup paste input", function() {
if($("#userMobileNo").val() == $("#mobileNo").val())
$("#mobileNo_1,#mobileNo_2,#mobileNo_3").on("propertychange change keyup paste input", function() {
if($("#userMobileNo").val() == $("#mobileNo_1").val()+ $("#mobileNo_2").val()+ $("#mobileNo_3").val())
{
$("#mobileCertYn").val("Y");
$("#mobileCertSendBtn").css("display","none");
$("#mobileReSend").css("display","none");
$("#mobileCertForm").css("display","none");
$("#mobileSuc").css("display","");
}else{
$("#mobileCertYn").val("N");
$("#mobileCertSendBtn").css("display","block");
$("#mobileCertSendBtn").css("display","");
$("#mobileReSend").css("display","");
$("#mobileSuc").css("display","none");
}
});
<%
@ -78,61 +78,154 @@ $(document).ready(function() {
if($("#userEmail").val() == $("#email").val())
{
$("#emailCertYn").val("Y");
$("#emailSuc").css("display","");
$("#emailCertSendBtn").css("display","none");
$("#emailCertForm").css("display","none");
}else{
$("#emailCertYn").val("N");
$("#emailCertSendBtn").css("display","block");
$("#emailSuc").css("display","none");
$("#emailCertSendBtn").css("display","");
}
});
$("input:radio[name='gender']:radio[value='${loginVO.gender}']").prop("checked",true);
$("input:checkbox[name='gender']:checkbox[value='${loginVO.gender}']").prop("checked",true);
birthdaySelectBox();
var birthday='${loginVO.birthday}';
$("#birth_yy").val(birthday.substr(0,4));
$("#birth_mm").val(birthday.substr(4,2));
$("#birth_dd").val(birthday.substr(6,2));
var birth_yy = birthday.substr(0,4);
var birth_mm = birthday.substr(4,2);
var birth_dd = birthday.substr(6,2);
$("#birth_yy").val(birth_yy).prop("selected", true);
$("#birth_mm").val(birth_mm).prop("selected", true);
$("#birth_dd").val(birth_dd).prop("selected", true);
var MobileNo="${loginVO.mobileNo}";
if(!MobileNo == "")
{
var mobileNo_1 = "";
var mobileNo_2 = "";
var mobileNo_3 = "";
if(MobileNo.length == 11)
{
mobileNo_1 =MobileNo.substr(0,3);
mobileNo_2 =MobileNo.substr(3,4);
mobileNo_3 =MobileNo.substr(7,4);
}
if(MobileNo.length == 10)
{
mobileNo_1 =MobileNo.substr(0,3);
mobileNo_2 =MobileNo.substr(3,3);
mobileNo_3 =MobileNo.substr(6,4);
}
$("#mobileNo_1").val(mobileNo_1);
$("#mobileNo_2").val(mobileNo_2);
$("#mobileNo_3").val(mobileNo_3);
}
})
function update(){
if($("#emailCertYn").val()!="Y")
var flag = false;
if($("#name").val() == "")
{
alert("이메일 인증이 필요합니다.");
$("#name").focus();
alert("이름을 입력해주세요.");
return false;
}
$("input[name='gender']").each( function () {
if (this.checked) {
flag = !flag;
return;
}
});
if (!flag) {
$("#m").focus();
alert("성별을 체크해주세요.");
return false;
}
if(!checkBirthday())
{
alert("생년월일이 형식에 맞지 않습니다. 확인해주세요.");
return false;
}
if($("#mobileCertYn").val()!="Y")
if($("#mobileNo_1").val() == "" || $("#mobileNo_2").val() == "" || $("#mobileNo_3").val() == "")
{
alert("휴대전화 인증이 필요합니다.");
$("#mobileNo_1").focus();
alert("휴대폰 번호를 입력해주세요.");
return false;
}
if($("#mobileCertYn").val()!="Y")
{
alert("휴대폰 인증이 필요합니다.");
return false;
}
if($("#email").val() == "")
{
$("#email").focus();
alert("이메일을 입력해주세요.");
return false;
}
if($("#emailCertYn").val()!="Y")
{
alert("이메일 인증이 필요합니다.");
return false;
}
if($("#zipCode").val()=="" || $("#address").val()=="")
{
$("#zipCode").focus();
alert("주소를 입력해주세요.");
return false;
}
if(confirm("정보를 수정하시겠습니까?")){
$("#birthday").val($("#birth_yy").val()+$("#birth_mm").val()+$("#birth_dd").val());
$("#mobileNo").val($("#mobileNo_1").val()+$("#mobileNo_2").val()+$("#mobileNo_3").val());
if($("input[name='infoRecvSmsYnChk']").is(":checked"))$("#infoRecvSmsYn").val("Y");
else $("#infoRecvSmsYn").val("N");
if($("input[name='infoRecvEmailYnChk']").is(":checked"))$("#infoRecvEmailYn").val("Y");
else $("#infoRecvEmailYn").val("N");
if($("input[name='mktRecvSmsYnChk']").is(":checked"))$("#mktRecvSmsYn").val("Y");
else $("#mktRecvSmsYn").val("N");
if($("input[name='mktRecvEmailYnChk']").is(":checked"))$("#mktRecvEmailYn").val("Y");
else $("#mktRecvEmailYn").val("N");
var form = document.updateForm;
form.action="${pageContext.request.contextPath}/userInfo/updateMyInfo.do";
form.submit();
return true;
}
return false;
}
function pwdChangePop(){
if($(".pop-change").is(":visible"))
{
$(".pop-change").css("display","none");
}else{
$(".pop-change").css("display","");
}
$("#password").val("");
$("#newPassword").val("");
$("#newPasswordConfirm").val("");
}
function changePassword(){
<%//패스워드 정규식 9자이상 소문자, 숫자 ,특수문자%>
var regExp = /^(?=.*[a-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{9,}$/i;
var p = document.getElementById('newPassword');
var p_cf = document.getElementById('newPasswordConfirm');
if(!regExp.test(p.value)){
p.focus();
alert("9자리 이상, 숫자/문자/특수문자를 혼합하여 입력해주세요.");
return false;
}
if(p.value != p_cf.value)
{
alert("새 비밀번호가 일치하지 않습니다. 확인해 주세요.");
@ -147,7 +240,17 @@ function changePassword(){
,"newPassword" : $("#newPassword").val()
},
success : function(result){
alert(result);
if(result == "success");
{
alert("비밀번호 변경이 처리되었습니다.");
pwdChangePop();
}
if(result == "fail")
{
alert("기존 비밀번호가 올바르지 않습니다.");
}
},error : function(){
}
})
@ -180,11 +283,13 @@ function emailCert(){
if(result.emailCertYn=="Y")
{
$("#emailCertYn").val("N");
$("#emailCertForm").css("display","block")
$("#emailSuc").css("display","none");
$("#emailCertForm").css("display","")
}
if(result.emailCertYn=="N")
{
$("#emailCertYn").val("N");
$("#emailSuc").css("display","none");
$("#emailCertForm").css("display","none")
}
},error : function(){
@ -211,6 +316,7 @@ function certEmailCheck(){
{
alert("인증되었습니다.");
$("#emailCertYn").val("Y");
$("#emailSuc").css("display","");
}else
{
alert("인증번호가 일치하지않습니다.");
@ -225,9 +331,10 @@ function certEmailCheck(){
//핸드폰 인증번호 받기
%>
function mobileCert(){
var mobileNo = $("#mobileNo_1").val()+ $("#mobileNo_2").val()+ $("#mobileNo_3").val();
mobileNo = mobileNo.replace(/-/gi,"");
$("#mobileNo").val(mobileNo);
$("#mobileNo").val($("#mobileNo").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#mobileNo").val()) || $("#mobileNo").val()==""){
@ -245,7 +352,8 @@ function mobileCert(){
success : function(result){
alert("인증번호가 발송됐습니다.");
$("#mobileCertYn").val("N");
$("#mobileCertForm").css("display","block")
$("#mobileSuc").css("display","none");
$("#mobileCertForm").css("display","")
},error : function(){
}
@ -271,6 +379,7 @@ function certMobileCheck(){
{
alert("인증되었습니다.");
$("#mobileCertYn").val("Y");
$("#mobileSuc").css("display","");
}else{
alert("인증번호가 일치하지않습니다.");
}
@ -287,9 +396,9 @@ document.addEventListener('keydown', function(event) {
function checkBirthday() {
var birthday;
var yy = $("#birth_yy").val();
var yy = $("#birth_yy option:selected").val();
var mm = $("#birth_mm option:selected").val();
var dd = $("#birth_dd").val();
var dd = $("#birth_dd option:selected").val();
var lang = "ko_KR";
var oyy = $("#birth_yy");
@ -386,7 +495,7 @@ function snsUnlink(snsId){
data : {mbSnsId:snsId},
success : function(result){
alert("연동이 해지되었습니다.");
$("#s"+snsId).remove();
$("#sns_"+snsId).remove();
if($("input[name='unlinkBtn']").length==1)
{
$("input[name='unlinkBtn']").remove();
@ -399,186 +508,196 @@ function snsUnlink(snsId){
}
</script>
<style type="text/css">
body {
padding-top:0px;
margin-top:0px;
background-color:#f5f5f5;
}
.page-header {
padding-top:0px;
margin-top:0px;
}
.form-horizontal .control-label.text-left{
text-align:left;
}
.form-horizontal .form-group {
height:50px;
}
h3 span.ok {
color:#01A9DB;
}
label.error {
font-family:"돋움", Dotum, "Apple SD Gothic Neo", Helvetica, Sans-serif;
font-size:9pt;
font-weight:600;
padding:3px 0 0 10px;
color:#FF0000;
display:block;
}
</style>
</head>
<body>
<div id="wrap">
<br><br>
<b><font size="6" color="gray">정보수정</font></b>
<br><br><br>
<form id="updateForm" name="updateForm" method="post" onsubmit="return update()" action="${pageContext.request.contextPath}/userInfo/updateMyInfo.do">
<table>
<tr>
<td id="title">이메일</td>
<td>
<input type="email" id="email" name="email" maxlength="30" required value=<c:out value="${loginVO.email}"/> ><button type="button" id="emailCertSendBtn" name="emailCertSendBtn" style="text-align:left;display:none;" class="btn-warning" onclick="emailCert()" required>인증번호 받기</button>
<div id="emailCertForm" style="display:none;"><br><input type='text' id='emailVrfctNo' name='emailVrfctNo'> <button type='button' style='text-align:left;' class='btn-warning' onclick='certEmailCheck()' >인증번호 확인</button></div>
</td>
</tr>
<tr>
<td id="title">이름</td>
<td>
<input type="text" id="name" name="name" minlength="2" maxlength="20" required value=<c:out value="${loginVO.name}"/>>
</td>
</tr>
<tr>
<td id="title">성별</td>
<td>
<input type="radio" name="gender" value="M" required>남자
<input type="radio" name="gender" value="F" required>여자
</td>
</tr>
<tr>
<td id="title">생년월일</td>
<td>
<input type="text" id="birth_yy" name="birth_yy" maxlength="4" placeholder="년(4자)" required >
<select id="birth_mm" name="birth_mm" required>
<option value="">월</option>
<option value="01" >01</option>
<option value="02" >02</option>
<option value="03" >03</option>
<option value="04" >04</option>
<option value="05" >05</option>
<option value="06" >06</option>
<option value="07" >07</option>
<option value="08" >08</option>
<option value="09" >09</option>
<option value="10" >10</option>
<option value="11" >11</option>
<option value="12" >12</option>
</select>
<input type="text" id="birth_dd" name="birth_dd" size="2" maxlength="2" placeholder="일" size="4" required>
</td>
</tr>
<tr>
<td id="title">주소</td>
<td>
<input type="text" id="zipCode" name="zipCode" value="<c:out value="${loginVO.zipCode}"/>" readonly ><button type="button" style="text-align:left;" class="btn-warning" onclick="sample6_execDaumPostcode()">주소검색</button><br>
<input type="text" id="address" name="address" value="<c:out value="${loginVO.address}" escapeXml="false"/>" readonly />
<input type="text" id="addressDetail" name="addressDetail" value="<c:out value="${loginVO.addressDetail}"/>" />
</td>
</tr>
<tr>
<td id="title">휴대전화</td>
<td id="Cert">
<input type="text" id="mobileNo" name="mobileNo" required value="<c:out value="${loginVO.mobileNo}"/>" ><button type="button" id="mobileCertSendBtn" style="text-align:left;display:none;" class="btn-warning" onclick="mobileCert()" required>인증번호 받기</button>
<div id="mobileCertForm" style="display:none;"><br><input type='text' id='mobileVrfctNo' name='mobileVrfctNo'> <button type='button' style='text-align:left;' class='btn-warning' onclick='certMobileCheck()' >인증번호 확인</button></div>
</td>
</tr>
</table>
<br>
<input type="hidden" id="mobileCertYn" name="mobileCertYn" value=<c:out value="Y"/>>
<input type="hidden" id="emailCertYn" name="emailCertYn" value="Y">
<input type="hidden" id="loginUserId" name="loginUserId" value='<c:out value="${loginVO.loginUserId}"/>'>
<input type="hidden" id="userEmail" name="userEmail" value='<c:out value="${loginVO.email}"/>'>
<input type="hidden" id="userMobileNo" name="userMobileNo" value='<c:out value="${loginVO.mobileNo}"/>'>
<input type="hidden" id="birthday" name="birthday" >
<input type="hidden" id="mbInfoId" name="mbInfoId" value="<c:out value="${loginVO.mbInfoId}"/>" >
<input type="hidden" id="extMobileNo" name="extMobileNo" value="<c:out value="${loginVO.mobileNo}"/>">
<input type="submit" value="수정"/> <input type="button" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/getMyInfo.do';" value="취소">
</form>
<a href="${pageContext.request.contextPath}/member/deleteMembershipForm.do">소장자료관을 더 이상 사용하고 싶지 않으신가요?</a>
<!-- 내정보 수정 섹션 -->
<div class="location join modify">
<h2 class="blind">내정보 수정 섹션영역</h2>
<div class="inner">
<div class="row-top">
<div class="location-box">
<ul class="loc">
<li>HOME</li>
<li>마이페이지</li>
<li>회원정보관리</li>
<li class="on">내 정보</li>
</ul>
<ul class="tit">
<li><span>내정보</span></li>
</ul>
</div>
<div class="arr"><img src="/images/icon/icon-join-arr2.png" alt="화살표 아이콘"></div>
</div>
<div class="contents row-bottom">
<div class="join-box">
<div class="info">
<form id="updateForm" name="updateForm" class="mt-5 form-container" method="post" action="${pageContext.request.contextPath}/userInfo/updateMyInfo.do">
<input type="hidden" id="birthday" name="birthday" >
<input type="hidden" id="mobileNo" name="mobileNo" >
<input type="hidden" id="mobileCertYn" name="mobileCertYn" value="Y">
<input type="hidden" id="emailCertYn" name="emailCertYn" value="Y">
<input type="hidden" id="loginUserId" name="loginUserId" >
<input type="hidden" id="infoRecvSmsYn" name="infoRecvSmsYn" >
<input type="hidden" id="infoRecvEmailYn" name="infoRecvEmailYn">
<input type="hidden" id="mktRecvSmsYn" name="mktRecvSmsYn">
<input type="hidden" id="mktRecvEmailYn" name="mktRecvEmailYn">
<input type="hidden" id="mbInfoId" name="mbInfoId" value="<c:out value="${loginVO.mbInfoId}"/>" >
<h2 style="margin-top:0;">회원정보</h2>
<div class="form-group Username">
<label>이름</label>
<div class="con">
<input class="form-control" type="text" id="name" name="name" minlength="2" maxlength="20" value=<c:out value="${loginVO.name}"/> placeholder="이름을 입력하세요"/>
</div>
</div>
<div class="form-group Usersex">
<label>성별</label>
<div class="con">
<div class="chk"><input type="checkbox" id="m" class="sex" name="gender" value="M" ><label for="m">남자</label></div>
<div class="chk"><input type="checkbox" id="w" class="sex" name="gender" value="F"><label for="w">여자</label></div>
</div>
</div>
<div class="form-group Userbirth">
<label>생년월일</label>
<div class="con">
<select name="birth_yy" id="birth_yy"></select> 년
<select name="birth_mm" id="birth_mm"></select> 월
<select name="birth_dd" id="birth_dd"></select> 일
</div>
</div>
<div class="form-group Userpassword">
<label>비밀번호</label>
<div class="con">
<p><button type="button" class="btn btn-color pop-change-btn" onclick="pwdChangePop();">비밀번호 변경</button></p>
<p>- 입력하신 비밀번호는 ‘계정 연결’, ‘내 정보 확인’, ‘회원탈퇴’ 시, 회원님의 정보보호 및 본인확인을 위해 사용됩니다.</p>
</div>
</div>
<div class="form-group Usermobile">
<label>휴대폰 번호</label>
<div class="con mobile">
<div class="row">
<input class="form-control mobile1" type="text" id="mobileNo_1" value="010" maxlength="3" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/> -
<input class="form-control mobile2" type="text" id="mobileNo_2" value="" maxlength="4" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/> -
<input class="form-control mobile3" type="text" id="mobileNo_3" value="" maxlength="4" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/>
<button type="button" class="btn-color" id="mobileCertSendBtn" name="mobileCertSendBtn" style="display:none;" onclick="mobileCert();">인증하기</button>
<button type="button" class="btn-black" id="mobileReSend" style="display:none;" onclick="mobileCert();">재전송</button>
</div>
<div class="row" id="mobileCertForm" style="display:none;">
<input class="form-control cer" type="text" id='mobileVrfctNo' name='mobileVrfctNo' placeholder=" SMS로 발송된 인증번호를 입력하세요"/>
<button type="button" class="btn-gray" onclick='certMobileCheck();'>확인</button>
<span id="mobileSuc" class="suc">인증이 완료되었습니다.</span>
</div>
</div>
</div>
<div class="form-group Useremail">
<label>이메일</label>
<div class="con email">
<div class="row">
<input class="form-control email1" type="email" id="email" name="email" placeholder="example@mail.com" maxlength="30" value="<c:out value="${loginVO.email}"/>" />
<button type="button" class="btn-color" id="emailCertSendBtn" name="emailCertSendBtn" style="display:none;" onclick="emailCert();">인증하기</button>
<button type="button" class="btn-black" id="emailReSend" style="display:none;" onclick="emailCert();">재전송</button>
</div>
<div class="row" id="emailCertForm" style="display:none;">
<input class="form-control cer" type="text" id='emailVrfctNo' name='emailVrfctNo' placeholder=" 이메일로 발송된 인증번호를 입력하세요"/>
<button type="button" class="btn-gray" onclick='certEmailCheck()'>확인</button>
<span id="emailSuc" class="suc">인증이 완료되었습니다.</span>
</div>
</div>
</div>
<div class="form-group Useraddr">
<label>주소</label>
<div class="con addr">
<div class="row">
<input class="form-control addr1" type="text" id="zipCode" name="zipCode" value="<c:out value="${loginVO.zipCode}"/>" readonly placeholder="우편번호" />
<button type="button" class="btn-color" onclick="sample6_execDaumPostcode();">우편번호</button>
</div>
<div class="row">
<input class="form-control addr2" type="text" id="address" name="address" value="<c:out value="${loginVO.address}" escapeXml="false"/>" readonly placeholder="주소" />
<input class="form-control addr3" type="text" id="addressDetail" name="addressDetail" value="<c:out value="${loginVO.addressDetail}"/>" placeholder="상세주소" />
</div>
</div>
</div>
<div class="form-group Usersns">
<label>SNS 연동</label>
<div class="con sns">
<div class="row">
<c:forEach var="result" items="${snsList}" varStatus="status">
<div class="list" id="sns_<c:out value="sns_${result.mbSnsId}"/>">
<div class="sns-box ${fn:toLowerCase(result.snsType)}"><span><img src="/images/icon/icon-${fn:toLowerCase(result.snsType)}-login.png"></span><span><c:out value="${result.snsUserId}" /> <c:out value="${result.regDd}" /> 연결완료</span></div>
<c:if test="${fn:length(snsList) > 1}"><button type="button" class="btn-black" name="unlinkBtn" onclick="snsUnlink('<c:out value="${result.mbSnsId}" />');">연결해제</button></c:if>
</div>
<div>
<br>
<p1>SNS연동 </p1><br>
<c:forEach var="snsList" items="${snsList}" varStatus="status">
<a id="<c:out value="s${snsList.mbSnsId}" />"><c:out value="${snsList.snsType }" /> 이메일: <c:out value="${snsList.mbSnsId}" /> <c:out value="${snsList.regDd}" /> 연결완료 <input type="button" name="unlinkBtn" onclick=snsUnlink("<c:out value="${snsList.mbSnsId}" />"); value="연결해제"></a>
<br>
</c:forEach>
<br>
<p1>비밀번호 변경 </p1>
<form id="passwordForm" name="passwordForm" method="post" onsubmit="return changePassword()" >
<table>
<tr>
<td>
<input type="password" id="password" name="password"
placeholder="기존 비밀번호" required>
</td>
</tr>
<tr>
<td>
<input type="password" id="newPassword" name="newPassword" minlength="8" maxlength="16"
oninvalid="this.setCustomValidity('8~16자 영문 대 소문자, 숫자, 특수문자를 사용하세요.')"
oninput="this.setCustomValidity('')"
pattern="^(?=.*[a-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,16}$"
placeholder="새 비밀번호" required>
</td>
</tr>
<tr>
<td>
<input type="password" id="newPasswordConfirm" name="newPasswordConfirm" placeholder="새 비밀번호 확인" minlength="8" maxlength="16" required>
</td>
<td> <div id="passwordMsg"></div></td>
</tr>
</table>
<input type="submit" value="변경하기"/>
<input type="button" value="취소"/>
</div>
</div>
</div>
<h2>서비스 알림 수신 동의</h2>
<div class="form-group service">
<div class="left">
<div class="chk"><input type="checkbox" id="service-chk1" class="ser-chk1" name="" <c:if test="${loginVO.infoRecvSmsYn eq 'Y' and loginVO.infoRecvEmailYn eq 'Y' }">checked </c:if>><label for="service-chk1">대출/열람 정보 수신동의 [필수/1건 이상 선택]</label></div>
</div>
<div class="right">
<div class="chk"><input type="checkbox" id="service-chk1-1" class="ser-chk1-1" name="infoRecvSmsYnChk" <c:if test="${loginVO.infoRecvSmsYn eq 'Y' }">checked </c:if>><label for="service-chk1-1">문자(SMS)</label></div>
<div class="chk"><input type="checkbox" id="service-chk1-2" class="ser-chk1-1" name="infoRecvEmailYnChk" <c:if test="${loginVO.infoRecvEmailYn eq 'Y' }">checked </c:if>><label for="service-chk1-2">이메일</label></div>
</div>
<p class="bg">- 문자(SMS)/이메일 수신동의를 하시면 ‘자료반납’, ‘자료연체’, ‘예약자료 도착’, ‘열람신청 승인’, ‘열람신청 반려’ 알림을 받으실 수 있습니다.</p>
</div>
<div class="form-group service">
<div class="left">
<div class="chk"><input type="checkbox" id="service-chk2" class="ser-chk2" name="" <c:if test="${loginVO.mktRecvSmsYn eq 'Y' and loginVO.mktRecvEmailYn eq 'Y' }">checked </c:if>><label for="service-chk2">지방문화원 소식/홍보 알림 수신동의 [선택]</label></div>
</div>
<div class="right">
<div class="chk"><input type="checkbox" id="service-chk2-1" class="ser-chk2-2" name="mktRecvSmsYnChk" <c:if test="${loginVO.mktRecvSmsYn eq 'Y' }">checked </c:if>><label for="service-chk2-1">문자(SMS)</label></div>
<div class="chk"><input type="checkbox" id="service-chk2-2" class="ser-chk2-2" name="mktRecvEmailYnChk" <c:if test="${loginVO.mktRecvEmailYn eq 'Y' }">checked </c:if>><label for="service-chk2-2">이메일</label></div>
</div>
<p class="bg">- 문자(SMS)/이메일 수신동의를 하시면 문화원 소식이나 주요 행사 등의 정보를 빠르게 만나실 수 있습니다.</p>
<p>- 회원가입완료, 임시비밀번호 발급관련 내용의 경우 수신 동의와 상관없이 이메일로 발송됩니다.</p>
</div>
<p class="release"><a href="${pageContext.request.contextPath}/member/deleteMembershipForm.do">소장자료관을 더 이상 사용하고 싶지 않으신가요? &gt;</a></p>
<div class="btn-box">
<button type="button" class="btn btn-color" onclick="update();">수정하기</button>
<button type="button" class="btn btn-gray" id="cancel" href="/">취소</button>
</div>
</form>
<form id="passwordForm" name="passwordForm" method="post">
<!-- 비밀번호변경 팝업 -->
<div class="pop-change" style="display:none;">
<div class="row Title">
<p>내 정보</p>
<h3>비밀번호 변경</h3>
</div>
<div class="inner">
<div class="row change">
<p><input class="passwd" type="password" id="password" name="password" placeholder="기존 비밀번호" required/></p>
<p><input class="passwd" type="password" id="newPassword" name="newPassword" placeholder="새 비밀번호" required/></p>
<p><input class="passwd" type="password" id="newPasswordConfirm" name="newPasswordConfirm" placeholder="새 비밀번호 확인" required/></p>
<span id="passwdMatch" class="suc">일치합니다.</span>
<p class="text">9자리 이상, 숫자/문자/특수문자를 혼합하여 입력</p>
</div>
<div class="row btn-box">
<button type="button" class="btn btn-color" onclick="changePassword();">변경하기</button>
<button type="button" class="btn btn-gray close" onclick="pwdChangePop();">취소</button>
</div>
<button type="button" class="change-close" onclick="pwdChangePop();"></button>
</div>
<div class="Bg"></div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>

View File

@ -43,15 +43,57 @@ if("${message}"!="")
});
function goPutMyInfo(){
if($("#password")=="")
{
alert("비밀번호를 입력해주세요.");
return false;
}
document.pwInputForm.action="${pageContext.request.contextPath}/userInfo/putMyInfo.do";
document.pwInputForm.submit();
}
</script>
</head>
<body>
<h2>비밀번호를 입력해주세요</h2>
<form id="pwInputForm" name="pwInputForm" method="POST">
<input type="password" id="password" name="password" required><button style="text-align:left;" class="btn-warning" onclick="goPutMyInfo();">확인</button>
<input type="hidden" name="mbInfoId" value="${loginVO.mbInfoId }" >
<!-- 내 정보 패스워드 섹션 -->
<div class="location passwd">
<h2 class="blind">내 정보 패스워드 섹션영역</h2>
<div class="inner">
<div class="row-top">
<div class="location-box">
<ul class="loc">
<li>HOME</li>
<li>마이페이지</li>
<li>회원정보관리</li>
<li class="on">내 정보</li>
</ul>
<ul class="tit">
<li><span>내 정보</span></li>
</ul>
</div>
<div class="arr"><img src="/images/icon/icon-join-arr2.png" alt="화살표 아이콘"></div>
</div>
<div class="contents row-bottom">
<div class="myinfo-passwd">
<div class="inner">
<div class="icon"><img src="/images/icon/icon-myinfo-paswd.png" alt="체크 아이콘"></div>
<div class="text">
<p>회원님의 <span>소중한 정보보호를 위해 비밀번호를 다시 한 번 확인</span>합니다.</p>
<p>(회원가입 시, 등록한 비밀번호를 입력해주세요.)</p>
</div>
<div class="box">
<p><input type="password" id="password" name="password" placeholder="비밀번호" onKeypress="javascript:if(event.keyCode==13) {goPutMyInfo();}"></p>
<p><a href="javascript:void(0);" class="cancel" onclick="forgetPassword('pwInputForm');">비밀번호를 잊으셨나요? &gt;</a></p>
</div>
<div class="btn-box">
<a href="javascript:void(0)" class="btn btn-color" onclick="goPutMyInfo();">확인</a>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</body>
</html>

View File

@ -0,0 +1,33 @@
<div class="mail-form" style="width:700px;border:1px solid #ddd;margin:0 auto;">
<div style="background: url(${hostName}/images/mail/bg-certification.jpg) no-repeat;background-size:cover;">
<div style="width:640px;height:300px;padding:30px;">
<span><img src="${hostName}/images/mail/logo.png" alt="logo" style="vertical-align: middle;margin-bottom:5px;"></span>
<span style="color:#fff;font-size:18px;font-weight: bold;border-right:1px solid #ddd;height:20px;line-height: 20px;display: inline-block;padding-right:10px;margin-right:5px;">${councilNm}</span>
<span style="color:#fff;font-size:18px;font-weight: 500;">소장자료관</span>
<div style="width:60px;height:1px;background:#fff;display:block;margin:120px 0px 0px;"></div>
<p style="font-size:40px;color:#fff;letter-spacing: -2.5px;margin:25px 0px;"><strong>${councilNm}에서<br> <span style="color:#64e0ff;">이메일 인증번호</span></strong>를 발송해드립니다.</p>
</div>
</div>
<div style="margin:30px;">
<div style="background:#ebf0f4;border:1px solid #ddd;border-radius: 5px;padding:20px 20px;">
<p style="color:#333;font-size:20px;font-weight: bold;">${name} 회원님, 안녕하세요.</p>
<p style="font-size:16px;line-height:26px;"><span style="color:#d47b1c;font-weight: bold;">${time}</span><span style="color:#d47b1c;font-weight: bold;">인증하기</span>를 요청하셨습니다.</p>
</div>
</div>
<div style="margin:50px 30px;">
<p style="font-size:16px;letter-spacing: -0.5px;">인증하기 요청을 한 사람이 본인이 맞으면 아래의 인증번호를 이메일 인증번호 입력란에 입력하여 이메일 인증을 완료해주시기 바랍니다.</p>
</div>
<div style="margin:30px 30px 60px;border-top:2px solid #6c92b7;border-bottom:1px solid #6c92b7;">
<div style="width:100%;display: inline-block;vertical-align: top;">
<span style="display: inline-block;float:left;width:20%;background: #f0f4f8;padding:15px 5%;font-weight:bold;">이메일 인증번호</span>
<span style="display: inline-block;float:left;width:60%;background: #fff;padding:15px 5%;">${certNumber}</span>
</div>
</div>
<div style="background: #5c5c5c;padding:20px 5%;width:90%;display:inline-block;vertical-align: top;">
<div style="float:left;width:25%;"><img src="${hostName}/images/mail/footer-logo.png"></div>
<div style="float:left;width:75%;">
<p style="color:#fff;font-size:12px;margin:0;font-weight: bold;">본 메일은 발신전용 메일입니다.</p>
<p style="font-size:12px;color:#aaa;">서울시 마포대로49 성우빌딩 308호 TEL. 02.704-2322 FAX. 02.704-2377<br>COPYRIGHT (C)2018 The Federation of Korea Culture Center. ALL RIGHT RESERVED.</p>
</div>
</div>
</div>

View File

@ -1,12 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입완료</title>
</head>
<body>
<span style="color:orange">${contents}</span>님 회원가입이 완료되었습니다.
</body>
</html>

View File

@ -1,12 +1,33 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>비밀번호 초기화</title>
</head>
<body>
초기화된 비밀번호는 <span style="color:orange">${contents}</span> 입니다.
</body>
</html>
<div class="mail-form" style="width:700px;border:1px solid #ddd;margin:0 auto;">
<div style="background: url(${hostName}/images/mail/bg-certification.jpg) no-repeat;background-size:cover;">
<div style="width:640px;height:300px;padding:30px;">
<span><img src="${hostName}/images/mail/logo.png" alt="logo" style="vertical-align: middle;margin-bottom:5px;"></span>
<span style="color:#fff;font-size:18px;font-weight: bold;border-right:1px solid #ddd;height:20px;line-height: 20px;display: inline-block;padding-right:10px;margin-right:5px;">${councilNm}</span>
<span style="color:#fff;font-size:18px;font-weight: 500;">소장자료관</span>
<div style="width:60px;height:1px;background:#fff;display:block;margin:120px 0px 0px;"></div>
<p style="font-size:40px;color:#fff;letter-spacing: -2.5px;margin:25px 0px;"><strong>${councilNm}에서<br> <span style="color:#64e0ff;">임시 비밀번호</span></strong>를 발송해드립니다.</p>
</div>
</div>
<div style="margin:30px;">
<div style="background:#ebf0f4;border:1px solid #ddd;border-radius: 5px;padding:20px 20px;">
<p style="color:#333;font-size:20px;font-weight: bold;">${name} 회원님, 안녕하세요.</p>
<p style="font-size:16px;line-height:26px;"><span style="color:#d47b1c;font-weight: bold;">${time}</span><span style="color:#d47b1c;font-weight: bold;">임시 비밀번호</span>를 요청하셨습니다.</p>
</div>
</div>
<div style="margin:50px 30px;">
<p style="font-size:16px;letter-spacing: -0.5px;">임시 비밀번호 요청을 한 사람이 본인이 맞으면 아래의 임시비밀번호를 비밀번호 입력란에 입력하여 로그인을 완료해주시기 바랍니다.</p>
</div>
<div style="margin:30px 30px 60px;border-top:2px solid #6c92b7;border-bottom:1px solid #6c92b7;">
<div style="width:100%;display: inline-block;vertical-align: top;">
<span style="display: inline-block;float:left;width:20%;background: #f0f4f8;padding:15px 5%;font-weight:bold;">임시 비밀번호</span>
<span style="display: inline-block;float:left;width:60%;background: #fff;padding:15px 5%;">${initPwd}</span>
</div>
</div>
<div style="background: #5c5c5c;padding:20px 5%;width:90%;display:inline-block;vertical-align: top;">
<div style="float:left;width:25%;"><img src="${hostName}/images/mail/footer-logo.png"></div>
<div style="float:left;width:75%;">
<p style="color:#fff;font-size:12px;margin:0;font-weight: bold;">본 메일은 발신전용 메일입니다.</p>
<p style="font-size:12px;color:#aaa;">서울시 마포대로49 성우빌딩 308호 TEL. 02.704-2322 FAX. 02.704-2377<br>COPYRIGHT (C)2018 The Federation of Korea Culture Center. ALL RIGHT RESERVED.</p>
</div>
</div>
</div>

View File

@ -0,0 +1,39 @@
<div class="mail-form" style="width:700px;border:1px solid #ddd;margin:0 auto;">
<div style="background: url(${hostName}/images/mail/bg-membership.jpg) no-repeat;background-size:cover;">
<div style="width:640px;height:300px;padding:30px;">
<span><img src="${hostName}/images/mail/logo.png" alt="logo" style="vertical-align: middle;margin-bottom:5px;"></span>
<span style="color:#fff;font-size:18px;font-weight: bold;border-right:1px solid #ddd;height:20px;line-height: 20px;display: inline-block;padding-right:10px;margin-right:5px;">${councilNm}</span>
<span style="color:#fff;font-size:18px;font-weight: 500;">소장자료관</span>
<div style="width:60px;height:1px;background:#fff;display:block;margin:120px 0px 0px;"></div>
<p style="font-size:40px;color:#fff;letter-spacing: -2.5px;margin:25px 0px;"><strong>${councilNm} <span style="color:#64e0ff;">소장자료관 가입</span></strong><br>축하드립니다.</p>
</div>
</div>
<div style="margin:30px;">
<div style="background:#ebf0f4;border:1px solid #ddd;border-radius: 5px;padding:20px 20px;">
<p style="color:#333;font-size:20px;font-weight: bold;">${name} 회원님, 안녕하세요.</p>
<p style="font-size:16px;line-height:26px;"><span style="color:#d47b1c;font-weight: bold;">${time}</span><span style="color:#d47b1c;font-weight: bold;">${councilNm} 소장자료관</span><br>가입하셨습니다.</p>
</div>
</div>
<div style="margin:30px 30px 0px;border-top:2px solid #6c92b7;border-bottom:1px solid #6c92b7;">
<div style="width:100%;border-bottom:1px solid #ddd;display: inline-block;vertical-align: top;">
<span style="display: inline-block;float:left;width:20%;background: #f0f4f8;padding:15px 5%;font-weight:bold;">이름</span>
<span style="display: inline-block;float:left;width:60%;background: #fff;padding:15px 5%;">${name}</span>
</div>
<div style="width:100%;display: inline-block;vertical-align: top;">
<span style="display: inline-block;float:left;width:20%;background: #f0f4f8;padding:15px 5%;font-weight:bold;">메일</span>
<span style="display: inline-block;float:left;width:60%;background: #fff;padding:15px 5%;">${email}</span>
</div>
</div>
<p style="margin:5px 30px 60px; font-size:14px;">- 회원정보는 <span style="color:#d47b1c;font-weight: bold;">[마이페이지 &gt; 회원정보관리 &gt; 내 정보]</span> 에서 수정할 수 있습니다.</p>
<div style="margin:30px;">
<p style="font-size:15px;color:#333;letter-spacing: -1px;">${councilNm}에서 이용 가능한 온라인 회원증이 발급되었으며 [회원증] 메뉴를 통해 확인하실 수 있습니다.</p>
<p style="font-size:15px;color:#333;letter-spacing: -1px;">지역의 문화를 엿볼 수 있는 소장자료관에서 많은 자료들을 둘러보시고 대출/열람 서비스를 이용해보세요.</p>
</div>
<div style="background: #5c5c5c;padding:20px 5%;width:90%;display:inline-block;vertical-align: top;">
<div style="float:left;width:25%;"><img src="${hostName}/images/mail/footer-logo.png"></div>
<div style="float:left;width:75%;">
<p style="color:#fff;font-size:12px;margin:0;font-weight: bold;">본 메일은 발신전용 메일입니다.</p>
<p style="font-size:12px;color:#aaa;">서울시 마포대로49 성우빌딩 308호 TEL. 02.704-2322 FAX. 02.704-2377<br>COPYRIGHT (C)2018 The Federation of Korea Culture Center. ALL RIGHT RESERVED.</p>
</div>
</div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,3 +1,27 @@
// 회원가입 셀렉트박스
function birthdaySelectBox() {
var now = new Date();
var year = now.getFullYear();
var mon = (now.getMonth() + 1) > 9 ? ''+(now.getMonth() + 1) : '0'+(now.getMonth() + 1);
var day = (now.getDate()) > 9 ? ''+(now.getDate()) : '0'+(now.getDate());
// 년도
for(var i = 1900 ; i <= year ; i++) {
$('#birth_yy').append('<option value="' + i + '">' + i + '년</option>');
}
// 월별
for(var i=1; i <= 12; i++) {
var mm = i > 9 ? i : "0"+i ;
$('#birth_mm').append('<option value="' + mm + '">' + mm + '월</option>');
}
// 일별
for(var i=1; i <= 31; i++) {
var dd = i > 9 ? i : "0"+i ;
$('#birth_dd').append('<option value="' + dd + '">' + dd+ '일</option>');
}
};
$(document).ready(function(){
/* 상단 메뉴 Fixed */
@ -105,33 +129,6 @@ $(document).ready(function(){
});
});
// 회원가입 셀렉트박스
jQuery(function($) {
var now = new Date();
var year = now.getFullYear();
var mon = (now.getMonth() + 1) > 9 ? ''+(now.getMonth() + 1) : '0'+(now.getMonth() + 1);
var day = (now.getDate()) > 9 ? ''+(now.getDate()) : '0'+(now.getDate());
// 년도
for(var i = 1900 ; i <= year ; i++) {
$('#year').append('<option value="' + i + '">' + i + '년</option>');
}
// 월별
for(var i=1; i <= 12; i++) {
var mm = i > 9 ? i : "0"+i ;
$('#month').append('<option value="' + mm + '">' + mm + '월</option>');
}
// 일별
for(var i=1; i <= 31; i++) {
var dd = i > 9 ? i : "0"+i ;
$('#day').append('<option value="' + dd + '">' + dd+ '일</option>');
}
$("#year > option[value="+year+"]").attr("selected", "true");
$("#month > option[value="+mon+"]").attr("selected", "true");
$("#day > option[value="+day+"]").attr("selected", "true");
});
// 회원가입 체크박스
$('input.sex[type="checkbox"]').bind('click',function() {
$('input.sex[type="checkbox"]').not(this).prop("checked", false);

View File

@ -94,13 +94,40 @@ function fn_closeLayerPopup() {
}
function fn_myAlert(newAlertNum) {
if(newAlertNum == "undefined" || newAlertNum == null || newAlertNum < 1) {
return;
}
fn_openLayerPopup("알림", "아직 확인하지 않은 새로운 알림이 " + newAlertNum + "건 있습니다", "알림 목록으로", CONTEXT_PATH + "/cmm/listNotifications.do");
var notiHtml =
'<div class="row Title">' +
' <p>지방문화원 소장자료</p>' +
' <h3>알림</h3>' +
'</div>' +
'<div class="inner">' +
' <div class="row Text">' +
' <p>아직 확인하지 않은<br>새로운 알림이 <span>' + newAlertNum + '</span>건 있습니다.</p>' +
' </div>' +
' <div class="row btn-box">' +
' <button type="button" class="btn btn-color" onclick="fn_closeLayerPopup()">확인</button>' +
' <button type="submit" class="btn btn-green" onclick="location.href = \'/cmm/listNotifications.do\'; ">알림 목록으로</button>' +
' </div>' +
' <button type="button" class="notice-close" onclick="fn_closeLayerPopup()"></button>' +
'</div>' +
'<div class="Bg"></div>';
fn_layerPopWithHtml(notiHtml, "pop-notice");
}
function fn_layerPopWithHtml(cHtml, addClasses) {
$("#NLIB_LAYER_POPUP").removeClass();
$("#NLIB_LAYER_POPUP").addClass(addClasses);
$("#NLIB_LAYER_POPUP").html(cHtml);
$("#NLIB_LAYER_POPUP").show();
var classes = addClasses.split(" ");
$("." + classes[0]).fadeIn();
}
function fn_layerPopWithClass(url, addClasses) {
// 클릭 시, 로딩되도록 처리 (2021.10.20)
@ -293,4 +320,15 @@ function fn_viewItemDetailInfo(masterId){
$("#FRM_ITEM_DETAIL").submit();
}
function fn_formatDateStr(yyyymmdd, defVal) {
if(fn_isEmpty(yyyymmdd)) return defVal;
if(yyyymmdd.length == 8) {
return yyyymmdd.substr(0, 4) + "-" + yyyymmdd.substr(4,2) + "-" + yyyymmdd.substr(6);
} else if(yyyymmdd.length == 6) {
return yyyymmdd.substr(0, 4) + "-" + yyyymmdd.substr(4,2);
} else if(yyyymmdd.length == 4) {
return yyyymmdd;
}
return defVal;
}

View File

@ -1,7 +1,7 @@
//filter clk evt
function reference_filterClk(){
$(document).on("click","#referencelistForm [name=second_class],#referencelistForm [name=second_category]",function(){
$(document).on("click","#referencelistForm [name=second_class],#referencelistForm [name=second_category],#referencelistForm [name=first_agency]",function(){
//first chk
if( $(this).parents('.depth-2').find('input:checkbox[name="' + event.target.name + '"]:checked').length >= 1){
$(this).parents('.depth-2').siblings('.depth-1').find('input').prop("checked", true);
@ -12,21 +12,31 @@ function reference_filterClk(){
//filter_mylist clk array
var filter_mylist = "";
var filter_mylist_clk = "";
var filter_agency = "";
var filter_agency_clk = "";
filter_agency = $('#filter_agency').val();
filter_mylist = $('#filter_mylist').val();
if($(this).attr('name') == 'second_class'){
filter_mylist_clk = 'class_'+$(this).val() +',';
}else if($(this).attr('name') == 'second_category'){
filter_mylist_clk = 'category_'+$(this).val() +',';
}else if($(this).attr('name') == 'first_agency'){
filter_mylist_clk = 'agency_'+$(this).val() +',';
//생산기관은 1depth 이므로 별도처리
filter_agency_clk = $(this).val() +",";
}
//생산기관은 1depth 이므로 별도처리
if($(this).is(":checked")){
filter_mylist += filter_mylist_clk;
filter_agency += filter_agency_clk;
}else{
filter_mylist = filter_mylist.replace(filter_mylist_clk,'');
filter_agency = filter_agency.replace(filter_agency,'');
}
$('#filter_mylist').val(filter_mylist);
$('#filter_agency').val(filter_agency);
//depth-1
@ -98,14 +108,15 @@ function reference_filterReset(){
$("#creatYyyyEnd").val("");
$("#filter_class").val("");
$("#filter_category").val("");
$("#filter_agency").val("");
$("#filter_mylist").val("");
$("#referencelistForm [name=first_class],#referencelistForm [name=second_class],#referencelistForm [name=first_category],#referencelistForm [name=second_category],#referencelistForm [name=creatYyyyYn]").prop("checked", false);
$("#referencelistForm [name=first_class],#referencelistForm [name=second_class],#referencelistForm [name=first_category],#referencelistForm [name=second_category],#referencelistForm [name=creatYyyyYn],#referencelistForm [name=first_agency]").prop("checked", false);
fnFilterSch();
});
}
//reference 결과 필터 del 클릭
function reference_filterDel(){
$(document).on("click","#referencelistForm button[id^='c_cate_data-type-chk'],#referencelistForm button[id^='j_cate_theme-chk'],#referencelistForm button[id^='s_cate_local-chk']",function(){
$(document).on("click","#referencelistForm button[id^='c_cate_data-type-chk'],#referencelistForm button[id^='j_cate_theme-chk'],#referencelistForm button[name=first_agency_del]",function(){
var s_cate_id = $(this).attr("id");
s_cate_id = s_cate_id.substring(s_cate_id.lastIndexOf("_")+1);
@ -116,12 +127,9 @@ function reference_filterDel(){
reference_gubun_name = "second_category";
}else if( $(this).attr('id').indexOf("data-type-chk")!= -1){
reference_gubun_name = "second_class";
}else if( $(this).attr('id').indexOf("local-chk") != -1){
reference_gubun_name = "sojang_council";
}
//first
var first_nm = $(this).attr('id').replace('c_cate_', '').replace('j_cate_', '').replace('s_cate_', '');
var first_nm = $(this).attr('id').replace('c_cate_', '').replace('j_cate_', '');
first_nm = first_nm.substring(0,first_nm.indexOf("_",-2)); //data-type-chk1-4
first_nm = first_nm.substring(0,first_nm.lastIndexOf("-")) ; //data-type-chk1
@ -139,31 +147,32 @@ function reference_filterDel(){
//filter_mylist clk array remove
var filter_mylist = "";
var filter_mylist_clk = "";
var filter_agency = "";
var filter_agency_clk = "";
filter_agency = $('#filter_agency').val();
filter_mylist = $('#filter_mylist').val();
if($(this).attr('id').indexOf('c_cate_data-type') >= 0 ){
filter_mylist_clk = 'class_'+ s_cate_id +',';
}else if($(this).attr('id').indexOf('s_cate_local')>= 0 ){
filter_mylist_clk = 'council_'+ s_cate_id +',';
}else if($(this).attr('id').indexOf('j_cate_theme')>= 0 ){
filter_mylist_clk = 'category_'+ s_cate_id +',';
}else if($(this).attr('name').indexOf('first_agency_del')>= 0 ){
filter_mylist_clk = 'agency_'+ $(this).val() +',';
filter_agency_clk = $(this).val() +',';
}
filter_agency = filter_agency.replace(filter_agency_clk,'');
filter_mylist = filter_mylist.replace(filter_mylist_clk,'');
$('#filter_agency').val(filter_agency);
$('#filter_mylist').val(filter_mylist);
//depth-1
var on_classArr = document.querySelectorAll("div.depth-1.on");
var filter_class = "" ;
var filter_sido = "" ;
var filter_thema = "" ;
var filter_category = "" ;
for(var i=0; i<on_classArr.length; i++){
if($(on_classArr[i]).find('input').attr('name') == 'first_class') {
filter_class = $(on_classArr[i]).find('input').val();
}else if($(on_classArr[i]).find('input').attr('name') == 'sido_name') {
filter_sido = $(on_classArr[i]).find('input').val();
}else{
filter_category = $(on_classArr[i]).find('input').val();
}
@ -173,7 +182,6 @@ function reference_filterDel(){
var listForm = document.forms["referencelistForm"];
listForm.pageIndex.value = 1;
listForm.filter_class.value = filter_class;
listForm.filter_sido.value = filter_sido;
listForm.filter_category.value = filter_category;
fnFilterSch();
@ -201,7 +209,7 @@ function fnLabel_reference(){
first_cate_nm = util.xssCheck(first_cate_nm);
second_cate_nm = util.xssCheck(second_cate_nm);
second_cate_id = util.xssCheck(second_cate_id);
$("#reference_fillter_append").append("<li>"+ first_cate_nm + " &#62; "+ second_cate_nm + "<button type=\"button\" class=\"btn-del-filter\" id=\""+second_cate_id+"\">삭제</button></li>").text();
$("#reference_fillter_append").append("<li>"+ first_cate_nm + " &#62; "+ second_cate_nm + "<button type=\"button\" name=\"first_agency_del\" class=\"btn-del-filter\" id=\""+second_cate_id+"\">삭제</button></li>").text();
comparisonData = second_cate_id;
}
@ -238,6 +246,9 @@ function fnLabel_reference(){
}
else if(mylist_arr[j].indexOf("creat_date") >= 0){
$("#reference_fillter_append").append("<li>생산년도 &#62; " + $("#creatYyyyStart").val() + "~" + $("#creatYyyyEnd").val() +"<button type=\"button\" class=\"btn-del-filter\" id=\""+second_cate_id+"\">삭제</button></li>").text();
}else if(mylist_arr[j].indexOf("agency") >= 0){
var second_cate_nm = mylist_arr[j].substring(mylist_arr[j].indexOf("_")+1);
$("#reference_fillter_append").append("<li>생산기관 &#62; "+ second_cate_nm + "<button type=\"button\" class=\"btn-del-filter\" id=\"\" name=\"first_agency_del\" value=\""+second_cate_nm+"\">삭제</button></li>").text();
}
} //for end
@ -289,3 +300,4 @@ function fnFilterSch(){
document.referencelistForm.action="/search/searchList.do";
document.referencelistForm.submit();
}