최초 커밋

This commit is contained in:
root
2026-07-23 16:15:57 +09:00
commit c8f5efb6b7
14652 changed files with 4812531 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
<?php
//if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once("../../../common.php");
extract($_REQUEST);
//아이디 중복체크
if( $ActionKind =="dupl_check" && isset($reg_mb_id) ){
$sql = "select count(*) cnt from g5_member where mb_id = TRIM('$reg_mb_id')";
$mb = sql_fetch($sql);
echo $mb["cnt"];
exit();
}
?>
+23
View File
@@ -0,0 +1,23 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if (!function_exists('egbim_img_url')) {
function egbim_img_url($path = '')
{
$baseUrl = '/egbim/img';
// Cloudflare 대시보드 URL이 아니라 실제 공개 호스트를 넣어야 합니다.
// 예: https://cdn.eg-bim.com
$cdnOrigin = '';
$cdnPathPrefix = '/egbim_img/egbim';
// 현재 버킷 디렉토리 구성은 egbim/img/* 와 동일하므로
// 공개 호스트만 정해지면 /egbim_img/egbim/<파일명> 으로 바로 매핑합니다.
if ($cdnOrigin !== '') {
$baseUrl = rtrim($cdnOrigin, '/') . $cdnPathPrefix;
}
$path = ltrim((string) $path, '/');
return $path === '' ? $baseUrl : $baseUrl . '/' . $path;
}
}
+407
View File
@@ -0,0 +1,407 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>구매하기</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
</head>
<body>
<div class="wrapper">
<input id="hid_mb_id" name="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>">
<!-- HEADER -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- //모든 팝업페이지 경로 -->
<!-- 컨텐츠 시작 -->
<div class="container buy">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">구매하기</h2>
<span>EG-BIM 구매문의 및 제품 안내</span>
</div>
</section>
<section class="contents_wrap">
<div class="ask_area">
<div class="ask_l">
<span class="mid_tit"><font class="egbim k">EG-BIM S/W</font>으로<br><b>신개념 S/W</b> 직접 경험하세요</span>
</div>
<div class="ask_r">
<span class="sub_text"><em>라이선스 중복 시 <font style="color: var(--color-orange)">이용이 제한</font></em>될 수 있습니다.</span>
<div class="ask_btn">
<a href="/egbim/bbs/descope_qa_list.php" class="btn_ask" ><i></i>EG-BIM 구매 문의</a>
<!-- <a href="#" onclick="alert('문의 게시판은 준비중입니다.'); return false;" class="btn_ask" ><i></i>EG-BIM 구매 문의</a> -->
<a href="../download/EGBIM_leaflet_v01.pdf" download class="btn_brochure"><i></i>브로슈어</a>
<a href="../download/EGBIM_manual.pdf" download class="btn_manual"><i></i>매뉴얼</a>
</div>
</div>
</div>
<div class="video_area" data-aos="fade-right" data-aos-duration="1000">
<div class="vod_wrap"><video autoplay muted loop playsinline><source src="../img/EGBIM_buy.mp4"></video></div>
<div class="contact_area">
<p>
<span class="mid_tit">구매 상담</span>
<span class="sub_text">EG-BIM 담당자에게 직접 문의하기</span>
</p>
<div class="line"></div>
<ul>
<li class="tel"><i></i><a href="tel:0214147434">02 - 2141 - 7434</a></li>
<li class="mail"><i></i>baroncs@baroncs.co.kr</li>
</ul>
</div>
</div>
</section>
</div>
<!-- //컨텐츠 시작 -->
<!-- FOOTER -->
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
$(function(){
// footer family site toggle
$('.family_btn').click(function(e){
e.stopPropagation();
$('.family_list, .family_btn').toggleClass('family_on');
});
$(document).click(function(e){
if(!$(e.target).closest('.family_wrap').length){
$('.family_list, .family_btn').removeClass('family_on');
}
});
});
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//descope 로그인, 로그아웃 js
function updateHeaderMenu() {
var isLoggedIn = !!sessionStorage.getItem("sessionJwt");
// role 체크 예시 (로그인 시 저장해놓은 값)
var isAdmin = sessionStorage.getItem('userRole') === 'super';
if (isLoggedIn) {
$('.my_join2, .my_login2').show();
$('.my_join, .my_login').hide();
// 마이페이지/관리자 메뉴 동적 출력
if (isAdmin) {
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
} else {
$('#my_join2').html("<a href='javascript:mypage03();'>마이페이지</a>");
}
} else {
$('.my_join2, .my_login2').hide();
$('.my_join, .my_login').show();
$('#my_join2').html(""); // 혹시모를 내용 초기화
}
}
function descopeLogout() {
fetch('/egbim/skin/member/basic/descope_logout.php', {
method: 'POST',
credentials: 'include' // PHPSESSID 쿠키 전송
})
.then(res => {
if (!res.ok) throw new Error('서버 로그아웃 실패');
// 1) 로컬 저장소 정리
// sessionStorage.removeItem("refreshJwt");
// sessionStorage.removeItem("sessionJwt");
// sessionStorage.removeItem("userRole");
// sessionStorage.removeItem("userName");
// sessionStorage.removeItem("loginId");
sessionStorage.clear();
localStorage.clear();
// 2) UI 갱신
updateHeaderMenu();
// 3) 로그인 페이지로 이동
window.location.href = '/egbim/index.php';
})
.catch(err => {
console.error(err);
alert('로그아웃 중 오류가 발생했습니다.');
});
}
$(document).ready(function() {
// 기존에 있던 updateHeaderMenu() 호출 뒤에
$('#my_login2 a').off('click').on('click', function(e){
e.preventDefault();
descopeLogout();
});
});
$(document).ready(function() {
updateHeaderMenu();
// (필요하다면, 로그인 성공 후에도 항상 updateHeaderMenu(); 호출)
});
//descope login
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '/egbim/skin/member/basic/descope_login.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
dataType : "json",
success : function(res){
if(res.status === "ok") {
// 토큰 저장
// sessionStorage.setItem("refreshJwt", res.refreshJwt);
sessionStorage.setItem("sessionJwt", res.sessionJwt);
// ✅ 사용자 정보 저장
if (res.user) {
sessionStorage.setItem("loginId", res.user.loginIds?.[0] || '');
sessionStorage.setItem("userName", res.user.name || '');
sessionStorage.setItem("company", res.user.customAttributes?.company || '');
sessionStorage.setItem("familyCompany", res.user.customAttributes?.familyCompany || '');
sessionStorage.setItem("position", res.user.customAttributes?.position || '');
sessionStorage.setItem("team", res.user.customAttributes?.team || '');
sessionStorage.setItem("familyUniqueKey", res.user.customAttributes?.familyUniqueKey || '');
sessionStorage.setItem("phone", res.user.phone || '');
}
// ✅ 추가: 관리자 등 정보 저장
if(res.user && res.user.roleNames && res.user.roleNames[0])
sessionStorage.setItem("userRole", res.user.roleNames[0]);
else
sessionStorage.removeItem("userRole");
// ✅ 로그인 후 메뉴 갱신
updateHeaderMenu();
// UI 처리
$('.popup_wrap').hide();
$('body').css('overflow', '');
lenis.start();
// alert('로그인 하셨습니다.');
} else {
alert(res.message || "로그인 실패");
// 🔴 실패 횟수에 따라 안내 배너 교체
if (res.failCount && res.failCount >= 8) {
updateLoginBanner("fail");
}
}
},
error : function(err){
alert(err.statusText || "통신 오류");
}
});
});
// ✅ 배너 교체 함수
function updateLoginBanner(type = "default") {
const $banner = $('#login_notice_banner');
if (!$banner.length) return;
if (type === "default") {
$banner.css({ background: "#063e01ff", color: "#fff" });
$banner.find("strong").text("[로그인 시스템 변경 안내]");
$banner.find("p.left").html(`
더 나은 보안을 위해 2025년 8월 8일부터 로그인 시스템이 변경되었습니다.<br>
기존 회원 또한 신규 시스템에 맞춰 재가입을 진행해주시기 바랍니다.
`);
$banner.find("p:last").html(`※ 로그인 및 가입 관련 문의: <strong>010-8721-7453</strong>`);
}
if (type === "fail") {
$banner.css({ background: "#6a0202ff", color: "#faf6f6ff" });
$banner.find("strong").text("[로그인 시도 제한 안내]");
$banner.find("p.left").html(`
비밀번호 입력을 <strong>7회 이상 연속 실패</strong>하셨습니다.<br>
<strong>8번째 시도부터 3분 대기</strong>가 적용됩니다.<br>
10회 이상 실패 시 계정이 잠금 처리됩니다.
`);
$banner.find("p:last").text("");
}
}
//회원가입 약관동의
// $('#fregister button[type=submit]').click(function(e){
// e.preventDefault();
// let agree11 = $('#agree11').val();
// let agree21 = $('#agree21').val();
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : "POST",
// datatype : "json",
// contentType: 'application/json; charset=utf-8',
// data : {
// 'agree11' : agree11,
// 'agree21' : agree21
// },
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// },
// error : function(err){
// alert(err);
// }
// });
// });
// 이지빔 프로그램 회원가입 url 쿼리스트링 파싱 함수
function getQueryString(name) {
const intro = document.querySelector('.intro_wrap');
intro.style.display = "none";
const mainMask = document.querySelector('.main_mask');
mainMask.classList.add('skip');
// mainMask.style.aimation = 'none';
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
//이지빔 프로그램 비밀번호 재설정 url 쿼리스트링 파싱 함수
$(document).ready(function() {
const urlParams = new URLSearchParams(window.location.search);
const popup = urlParams.get('popup');
const token = urlParams.get('t');
if (popup === 'pwreset') {
// 팝업 전체 열기
$('#pop_search').show();
$('body').css('overflow', 'hidden');
// 내부 컨텐츠 모두 숨기기
$('#pop_search .popup_contents_wrap').hide();
if (token) {
// 토큰이 있으면 비밀번호 재설정 단계
if (!sessionStorage.getItem('pwreset_shown')) {
$('#password_reset').show();
sessionStorage.setItem('pwreset_shown', '1');
}
} else {
// 토큰이 없으면 아이디 입력 단계 (첫 번째 .popup_contents_wrap)
$('#pop_search .popup_contents_wrap').first().show();
}
}
// 닫기 버튼
$('#pop_search .btn_close').on('click', function() {
$('#pop_search').hide();
$('body').css('overflow', '');
});
});
</script>
+603
View File
@@ -0,0 +1,603 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>구매하기</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
</head>
<body>
<div class="wrapper">
<input id="hid_mb_id" name="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>">
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- //모든 팝업페이지 경로 -->
<!-- 컨텐츠 시작 -->
<div class="container buy">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">구매하기</h2>
<span>EG-BIM 구매문의 및 제품 안내</span>
</div>
</section>
<section class="contents_wrap">
<div class="ask_area">
<div class="ask_l">
<span class="mid_tit"><font class="egbim k">EG-BIM S/W</font>으로<br><b>신개념 S/W</b> 직접 경험하세요</span>
</div>
<div class="ask_r">
<span class="sub_text"><em>라이선스 중복 시 <font style="color: var(--color-orange)">이용이 제한</font></em>될 수 있습니다.</span>
<div class="ask_btn">
<a href="<?php echo G5_BBS_URL ?>/qalist.php" class="btn_ask" ><i></i>EG-BIM 구매 문의</a>
<a href="../download/EGBIM_leaflet.pdf" download class="btn_brochure"><i></i>브로슈어</a>
<a href="../download/EGBIM_manual.pdf" download class="btn_manual"><i></i>매뉴얼</a>
</div>
</div>
</div>
<div class="video_area" data-aos="fade-right" data-aos-duration="1000">
<video autoplay muted loop >
<source src="../img/EGBIM_buy.mp4">
</video>
<div class="contact_area">
<span class="mid_tit">구매 상담</span>
<span class="sub_text"><em>EG-BIM 담당자에게 직접 문의하기</em></span>
<ul>
<li class="tel"><i></i>02 - 2141 - 7434</li>
<li class="mail"><i></i>baroncs@baroncs.co.kr</li>
</ul>
</div>
</div>
</section>
</div>
<!-- //컨텐츠 시작 -->
<!-- FOOTER -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').hide();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/buy.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
@@ -0,0 +1,159 @@
<?php
// header('Content-Type: application/json; charset=utf-8');
// ini_set('display_errors', 1);
// error_reporting(E_ALL);
// // 수신
// $email = trim($_POST['email'] ?? '');
// // $email = 'sdi9429@naver.com';
// if (!$email) {
// echo json_encode([
// 'status' => 'error',
// 'message' => '이메일이 전달되지 않았습니다.'
// ]);
// exit;
// }
// // Descope 설정
// $management_key = 'K32l5ORmzy32OvaaPvpdZsMY3JmKQb7a3vvrl10PgjlJUGk3K7EssMH3uW5VGQSbrgtEdPj'; // 예: P2w0N5fY1K...
// $project_id = 'P2wON5fy1K6kyia269VpeIzYP8oP'; // 예: PRJ-xxxx
// // API URL
// $url = 'https://api.descope.com/v1/mgmt/user?loginId=' . urlencode($email);
// // CURL 호출
// $ch = curl_init($url);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_HTTPHEADER, [
// "Authorization: Bearer {$project_id}:{$management_key}",
// "Content-Type: application/json"
// ]);
// // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
// $response = curl_exec($ch);
// $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// $curl_error = curl_error($ch);
// curl_close($ch);
// $response_json = json_decode($response, true);
// // 처리 로직
// if ($http_code === 200 && isset($response_json['user'])) {
// // 아이디가 이미 존재 (중복)
// echo json_encode([
// 'status' => 'duplicate',
// 'message' => '이미 등록된 이메일입니다.'
// ]);
// } elseif ($http_code === 404) {
// // 아이디가 존재하지 않음 (사용 가능)
// echo json_encode([
// 'status' => 'ok',
// 'message' => '사용 가능한 이메일입니다.'
// ]);
// } else {
// // 기타 오류
// echo json_encode([
// 'status' => 'error',
// 'message' => 'Descope API 호출 실패',
// 'http_code' => $http_code,
// 'error_detail' => $response_json,
// 'curl_error' => $curl_error
// ]);
// }
// exit;
?>
<?php
header('Content-Type: application/json; charset=utf-8');
ini_set('display_errors', 1);
error_reporting(E_ALL);
// 수신
$email = trim($_POST['email'] ?? '');
if (!$email) {
echo json_encode([
'status' => 'error',
'message' => '이메일이 전달되지 않았습니다.'
]);
exit;
}
// Descope 설정
$management_key = 'K32l5ORmzy32OvaaPvpdZsMY3JmKQb7a3vvrl10PgjlJUGk3K7EssMH3uW5VGQSbrgtEdPj';
$project_id = 'P2wON5fy1K6kyia269VpeIzYP8oP';
// API URL
$url = 'https://api.descope.com/v1/mgmt/user?loginId=' . urlencode($email);
// CURL 호출
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$project_id}:{$management_key}",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);
curl_close($ch);
$response_json = json_decode($response, true);
// ================================
// 존재하는 사용자일 때
// ================================
if ($http_code === 200 && isset($response_json['user'])) {
$user = $response_json["user"];
// 비밀번호 여부
$hasPassword = $user["providerInfo"]["email"]["password"] ?? false;
// 추가정보 입력 여부 (completeForm)
$completeForm = $user["customAttributes"]["completeForm"] ?? false;
// -------------------------
// 미완성 사용자 감지!!
// -------------------------
if (!$hasPassword && !$completeForm) {
echo json_encode([
'status' => 'incomplete',
'message' => '미완성 사용자입니다. 추가정보 입력이 필요합니다.',
'email' => $email
]);
exit;
}
// 완성된 사용자 → 재가입 불가
echo json_encode([
'status' => 'duplicate',
'message' => '이미 등록된 이메일입니다.'
]);
exit;
}
// ================================
// 신규 사용자 (404)
// ================================
if ($http_code === 404) {
echo json_encode([
'status' => 'ok',
'message' => '사용 가능한 이메일입니다.'
]);
exit;
}
// ================================
// 기타 오류
// ================================
echo json_encode([
'status' => 'error',
'message' => 'Descope API 호출 실패',
'http_code' => $http_code,
'error_detail' => $response_json,
'curl_error' => $curl_error
]);
exit;
?>
+131
View File
@@ -0,0 +1,131 @@
<?php
session_start();
function set_descope_session_cookies(array $user): void {
$expire = time() + 86400;
$cookieOptions = [
'expires' => $expire,
'path' => '/',
'samesite' => 'Lax',
];
$customAttributes = $user['customAttributes'] ?? [];
$roleNames = $user['roleNames'] ?? [];
setcookie('descope_login_id', (string)($user['loginIds'][0] ?? ''), $cookieOptions);
setcookie('descope_user_id', (string)($user['userId'] ?? ''), $cookieOptions);
setcookie('descope_user_name', (string)($user['name'] ?? ''), $cookieOptions);
setcookie('descope_user_email', (string)($user['email'] ?? ''), $cookieOptions);
setcookie('descope_user_phone', (string)($user['phone'] ?? ''), $cookieOptions);
setcookie('descope_custom_attributes', base64_encode(json_encode($customAttributes, JSON_UNESCAPED_UNICODE)), $cookieOptions);
setcookie('descope_role_names', base64_encode(json_encode($roleNames, JSON_UNESCAPED_UNICODE)), $cookieOptions);
}
$email = trim($_POST['mb_id'] ?? '');
$password = trim($_POST['mb_password'] ?? '');
if (!$email || !$password) {
echo json_encode(['status'=>'fail', 'message'=>'아이디와 비밀번호는 필수입력입니다.']);
exit;
}
$descope_project_id = "P2wON5fy1K6kyia269VpeIzYP8oP";
$api_url = "https://api.descope.com/v1/auth/password/signin";
$data = [
"loginId" => $email,
"password" => $password,
// "loginOptions" => [ ... ] // 옵션 필요시
];
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $descope_project_id,
];
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$res_data = json_decode($response, true);
if ($http_code === 200 && isset($res_data['sessionJwt'])) {
// 로그인 성공 → 실패횟수 초기화
$_SESSION['login_fail_count'] = 0;
//session으로도 저장
$_SESSION['user'] = $res_data['user']; // userId, email 등
$_SESSION['sessionJwt'] = $res_data['sessionJwt'];
$_SESSION['refreshJwt'] = $res_data['refreshJwt'];
set_descope_session_cookies($res_data['user'] ?? []);
echo json_encode([
'status' => 'ok',
'sessionJwt' => $res_data['sessionJwt'] ?? '',
// 'refreshJwt' => $res_data['refreshJwt'] ?? '',
'user' => $res_data['user'] ?? [],
'session' => $_SESSION,
]);
// } else {
// // $msg = $res_data['errorDescription'] ?? '로그인 실패';
// // echo json_encode(['status'=>'fail', 'message'=>$msg]);
// // Descope 에러 메시지
// $errorMsg = $res_data['errorDescription']
// ?? $res_data['errorMessage']
// ?? '로그인에 실패했습니다.';
// // 2) 한글 매핑
// if (stripos($errorMsg, 'invalid signin credentials') !== false) {
// $msg = '비밀번호가 일치하지 않습니다.';
// } elseif (stripos($errorMsg, 'user not found') !== false) {
// $msg = "계정을 찾을 수 없습니다.\n로그인에 문제가 있으신 경우 010-8721-7453으로 문의해 주세요.";
// } else {
// $msg = $errorMsg;
// }
// echo json_encode([
// 'status' => 'fail',
// 'message' => $msg
// ]);
// }
} else {
// 실패 → 카운트 증가
if (!isset($_SESSION['login_fail_count'])) {
$_SESSION['login_fail_count'] = 0;
}
$_SESSION['login_fail_count']++;
$failCount = $_SESSION['login_fail_count'];
// 에러 메시지 가공
$errorMsg = $res_data['errorDescription']
?? $res_data['errorMessage']
?? '로그인에 실패했습니다.';
// 한글 매핑
if (stripos($errorMsg, 'Login is temporarily locked') !== false) {
$msg = "로그인이 일시적으로 잠겼습니다. 잠시 후 다시 시도해 주세요.";
} elseif (stripos($errorMsg, 'account locked') !== false) {
$msg = "로그인 시도가 너무 많아 계정이 잠겼습니다. 관리자에게 문의해 주세요.";
} elseif (stripos($errorMsg, 'invalid signin credentials') !== false) {
$msg = "비밀번호가 일치하지 않습니다.";
} elseif (stripos($errorMsg, 'user not found') !== false) {
$msg = "계정을 찾을 수 없습니다.\n로그인에 문제가 있으신 경우 02-2141-7434으로 문의해 주세요.";
} else {
$msg = $errorMsg;
}
echo json_encode([
'status' => 'fail',
'message' => $msg,
'failCount' => $failCount
]);
}
exit;
?>
@@ -0,0 +1,35 @@
<?php
// descope_logout.php
// session_start();
// $_SESSION = [];
// if (ini_get("session.use_cookies")) {
// $p = session_get_cookie_params();
// setcookie(session_name(), '', time()-42000,
// $p['path'], $p['domain'], $p['secure'], $p['httponly']
// );
// }
// session_destroy();
// // ✅ 그누보드 세션 변수도 제거
// unset($_SESSION['ss_mb_id'], $_SESSION['ss_mb_level']);
// http_response_code(200);
// echo json_encode(['status'=>'ok']);
// exit;
session_start();
$_SESSION = [];
foreach (['PHPSESSID', 'G5sessphp', 'descope_login_id', 'descope_user_id', 'descope_user_name', 'descope_user_email', 'descope_user_phone', 'descope_custom_attributes', 'descope_role_names'] as $cookieName) {
setcookie($cookieName, '', [
'expires' => time() - 42000,
'path' => '/',
'samesite' => 'Lax',
]);
}
session_destroy();
http_response_code(200);
echo json_encode(['status'=>'ok']);
exit;
?>
@@ -0,0 +1,108 @@
<?php
// ini_set('display_errors', 1);
// ini_set('display_startup_errors', 1);
// error_reporting(E_ALL);
// header('Content-Type: application/json');
// // require_once './descope_config.php';
// $email = trim($_POST['email'] ?? '');
// $password = trim($_POST['password'] ?? '');
// $refreshJwt = trim($_POST['refreshJwt'] ?? '');
// if (!$email || !$password || !$refreshJwt) {
// echo json_encode(['status' => 'fail', 'message' => '필수값 없음']);
// exit;
// }
// // Descope API - 비밀번호 변경 엔드포인트 사용
// $url = "https://api.descope.com/v1/auth/password/update";
// $data = [
// // "loginId" => $email,
// "newPassword" => $password,
// ];
// $ch = curl_init($url);
// curl_setopt($ch, CURLOPT_HTTPHEADER, [
// "Authorization: Bearer " . $refreshJwt,
// "Content-Type: application/json"
// ]);
// curl_setopt($ch, CURLOPT_POST, 1);
// curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $response = curl_exec($ch);
// $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// curl_close($ch);
// if ($code == 200) {
// echo json_encode(['status' => 'ok']);
// } else {
// $resData = json_decode($response, true);
// $msg = $resData['errorDescription'] ?? '비밀번호 변경 실패';
// echo json_encode(['status' => 'fail', 'message' => $msg, 'raw' => $response]);
// }
// ini_set('display_errors', 1);
// ini_set('display_startup_errors', 1);
// error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
header('Content-Type: application/json');
// require_once './descope_config.php';
$projectId = 'P2wON5fy1K6kyia269VpeIzYP8oP';
$email = trim($_POST['email'] ?? '');
$password = trim($_POST['password'] ?? '');
$refreshJwt = trim($_POST['refreshJwt'] ?? '');
// if (!$email || !$password || !$refreshJwt) {
// echo json_encode(['status' => 'fail', 'message' => '필수값 없음']);
// exit;
// }
if (!$email || !$password || !$refreshJwt) {
echo json_encode([
'status' => 'fail',
'message' => '필수값 없음',
'debug' => [
'email' => $email,
'password' => $password,
'refreshJwt' => $refreshJwt // <<< 확인!
]
]);
exit;
}
// Descope API - 비밀번호 변경 엔드포인트 사용
$url = "https://api.descope.com/v1/auth/password/update";
$data = [
"loginId" => $email,
"newPassword" => $password,
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$projectId}:{$refreshJwt}",
"Content-Type: application/json",
// "x-descope-project-id: $projectId"
]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($code == 200) {
echo json_encode(['status' => 'ok']);
} else {
$resData = json_decode($response, true);
$msg = $resData['errorDescription'] ?? '비밀번호 변경 실패';
echo json_encode(['status' => 'fail', 'message' => $msg, 'raw' => $response]);
}
?>
@@ -0,0 +1,54 @@
<?php
session_start();
header('Content-Type: application/json; charset=UTF-8');
function set_descope_session_cookies(array $user): void {
$expire = time() + 86400;
$cookieOptions = [
'expires' => $expire,
'path' => '/',
'samesite' => 'Lax',
];
setcookie('descope_login_id', (string)($user['loginIds'][0] ?? ''), $cookieOptions);
setcookie('descope_user_id', (string)($user['userId'] ?? ''), $cookieOptions);
setcookie('descope_user_name', (string)($user['name'] ?? ''), $cookieOptions);
setcookie('descope_user_email', (string)($user['email'] ?? ''), $cookieOptions);
setcookie('descope_user_phone', (string)($user['phone'] ?? ''), $cookieOptions);
setcookie('descope_custom_attributes', base64_encode(json_encode($user['customAttributes'] ?? [], JSON_UNESCAPED_UNICODE)), $cookieOptions);
setcookie('descope_role_names', base64_encode(json_encode($user['roleNames'] ?? [], JSON_UNESCAPED_UNICODE)), $cookieOptions);
}
$loginId = trim((string)($_POST['loginId'] ?? ''));
$sessionJwt = trim((string)($_POST['sessionJwt'] ?? ''));
if ($loginId === '' || substr_count($sessionJwt, '.') !== 2) {
http_response_code(400);
echo json_encode(['status' => 'fail', 'message' => 'invalid session payload']);
exit;
}
$user = [
'userId' => trim((string)($_POST['userId'] ?? $loginId)),
'loginIds' => [$loginId],
'name' => trim((string)($_POST['userName'] ?? $loginId)),
'email' => trim((string)($_POST['email'] ?? $loginId)),
'phone' => trim((string)($_POST['phone'] ?? '')),
'customAttributes' => [
'company' => trim((string)($_POST['company'] ?? '')),
'familyCompany' => trim((string)($_POST['familyCompany'] ?? '')),
'position' => trim((string)($_POST['position'] ?? '')),
'team' => trim((string)($_POST['team'] ?? '')),
'familyUniqueKey' => trim((string)($_POST['familyUniqueKey'] ?? '')),
],
'roleNames' => array_values(array_filter([trim((string)($_POST['userRole'] ?? ''))])),
];
$_SESSION['user'] = $user;
$_SESSION['sessionJwt'] = $sessionJwt;
set_descope_session_cookies($user);
echo json_encode(['status' => 'ok']);
exit;
?>
@@ -0,0 +1,81 @@
<?php
// header('Content-Type: application/json');
// require_once './descope_config.php'; // Descope API 키 등 공통설정
// $email = trim($_POST['email'] ?? '');
// if (!$email) {
// echo json_encode(['status' => 'fail', 'message' => '이메일 없음']);
// exit;
// }
// // Descope OTP 메일 전송 (예: signup/send/otp)
// $url = 'https://api.descope.com/v1/auth/magiclink/email/send'; // API 버전에 맞게!
// $data = [
// "loginId" => $email,
// "user" => ["email" => $email]
// ];
// $ch = curl_init($url);
// curl_setopt($ch, CURLOPT_HTTPHEADER, [
// "Authorization: Bearer " . $DESCOPE_API_KEY,
// "Content-Type: application/json"
// ]);
// curl_setopt($ch, CURLOPT_POST, 1);
// curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $response = curl_exec($ch);
// $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// curl_close($ch);
// if ($code == 200) {
// echo json_encode(['status' => 'ok']);
// } else {
// echo json_encode(['status' => 'fail', 'message' => 'OTP 발송 실패', 'raw' => $response]);
// }
?>
<?php
header('Content-Type: application/json; charset=utf-8');
$email = $_POST['email'] ?? '';
// $email = 'sdi9429@naver.com';
// $redirectUrl = 'https://eg-bim.com/egbim/index.php?popup=pwreset';
if (!$email) exit(json_encode(['status'=>'fail', 'message'=>'이메일 누락']));
$api_key = "P2wON5fy1K6kyia269VpeIzYP8oP";
$url = "https://api.descope.com/v1/auth/password/reset";
$data = [
"loginId" => $email,
"redirectUrl" => 'https://eg-bim.com/egbim/index.php?popup=pwreset'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$api_key}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code == 200) {
$res_data = json_decode($res, true); // 응답 파싱
$linkId = $res_data['linkId'] ?? '';
echo json_encode([
'status'=>'ok',
'linkId'=>$linkId,
'raw_response'=>$res_data // (디버깅용 전체도 같이 보고 싶으면)
]);
} else {
$error_info = json_decode($res, true);
echo json_encode([
'status' => 'fail',
'message' => '발송 실패',
'http_code' => $http_code, // 예: 400, 401, 403 등
'error_detail' => $error_info, // Descope에서 보낸 상세 에러 메시지
'curl_error' => curl_error($ch) // 네트워크 문제일 경우 확인용
]);
}
?>
+148
View File
@@ -0,0 +1,148 @@
<?php
// // descope_session.php
// // 1) 에러 출력 (개발용)
// // ini_set('display_errors', 1);
// // error_reporting(E_ALL);
// // 2) 세션 시작 (중복 호출 방지)
// if (session_status() === PHP_SESSION_NONE) {
// session_start();
// }
// // 3) 로그인 검사
// // 로그인 시 $_SESSION['user']['userId'] 와 $_SESSION['user']['loginIds'][0] 를 설정해 두었다면
// // if (empty($_SESSION['user']['userId'])) {
// // // 로그인 필요 알림 후 로그인 페이지로 이동
// // echo <<<HTML
// // <script>
// // alert('Q&A를 이용하시려면 로그인이 필요합니다.');
// // window.location.href = '/egbim/index.php';
// // </script>
// // HTML;
// // exit;
// // }
// // ✅ Descope 로그인 성공 시 g5_member 세션 동기화
// $loginId = $_SESSION['user']['loginIds'][0] ?? '';
// if ($loginId === 'b24014@hanmaceng.co.kr') {
// // g5_member 계정이 이미 존재한다고 가정
// $_SESSION['ss_mb_id'] = $loginId;
// $_SESSION['ss_mb_level'] = 10;
// $is_member = true;
// $is_admin = 'super';
// $member = [
// 'mb_id' => $loginId,
// 'mb_name' => $_SESSION['user']['name'] ?? '관리자',
// 'mb_email' => $_SESSION['user']['email'] ?? '',
// 'mb_level' => 10,
// 'mb_nick' => '관리자',
// ];
// }
// // Descope 로그인 성공 시 (예: descope_session.php 내부)
// if (!empty($_SESSION['user']['loginIds'][0])) {
// $loginId = $_SESSION['user']['loginIds'][0];
// // g5_member 테이블에 계정이 존재한다고 가정
// $_SESSION['ss_mb_id'] = $loginId;
// $_SESSION['ss_mb_level'] = 10; // 관리자 레벨
// // 그누보드 전역 변수 보정
// $is_member = true;
// $is_admin = 'super';
// $member = [
// 'mb_id' => $loginId,
// 'mb_name' => $_SESSION['user']['name'] ?? '관리자',
// 'mb_email' => $_SESSION['user']['email'] ?? '',
// 'mb_level' => 10,
// 'mb_nick' => '관리자',
// ];
// }
// descope_session.php
// 1) 세션 시작
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
if (empty($_SESSION['user']['userId']) && !empty($_COOKIE['descope_login_id'])) {
$customAttributes = json_decode(base64_decode($_COOKIE['descope_custom_attributes'] ?? ''), true);
$roleNames = json_decode(base64_decode($_COOKIE['descope_role_names'] ?? ''), true);
$loginIdFromCookie = trim((string)($_COOKIE['descope_login_id'] ?? ''));
$_SESSION['user'] = [
'userId' => trim((string)($_COOKIE['descope_user_id'] ?? $loginIdFromCookie)),
'loginIds' => $loginIdFromCookie !== '' ? [$loginIdFromCookie] : [],
'name' => trim((string)($_COOKIE['descope_user_name'] ?? '')),
'email' => trim((string)($_COOKIE['descope_user_email'] ?? '')),
'phone' => trim((string)($_COOKIE['descope_user_phone'] ?? '')),
'customAttributes' => is_array($customAttributes) ? $customAttributes : [],
'roleNames' => is_array($roleNames) ? $roleNames : [],
];
}
// 2) 로그인 검사 (비로그인 차단)
// if (empty($_SESSION['user']['userId'])) {
// // 세션 없으면 바로 차단
// session_destroy();
// echo "<script>
// alert('로그인이 필요합니다.');
// // 로그인 팝업 자동 오픈 플래그 전달
// window.location.href = '/egbim/index.php?popup=login';
// </script>";
// exit;
// }
// 3) 로그인 정보 추출
$loginIds = $_SESSION['user']['loginIds'] ?? [];
$loginId = (is_array($loginIds) && !empty($loginIds)) ? $loginIds[0] : '';
$userName = $_SESSION['user']['name'] ?? '';
$userEmail = $_SESSION['user']['email'] ?? '';
// 4) 관리자/일반 사용자 구분
$ADMIN_EMAILS = [
'kjy0426@hanmaceng.co.kr',
'b24014@hanmaceng.co.kr',
'b23065@hanmaceng.co.kr',
'shyeom1@samaneng.com',
'cjy627@hanmaceng.co.kr',
'b23072@hanmaceng.co.kr',
'cozyjin@hanmaceng.co.kr',
'm24031@hanmaceng.co.kr',
'b24051@hanmaceng.co.kr',
'rmsgud1202@hanmaceng.co.kr',
'm21318@hanmaceng.co.kr',
'b25023@hanmaceng.co.kr',
'sdi9429@naver.com',
'junsuy@hanmail.net',
'ilphilo92@gmail.com'
];
// $isAdmin = in_array($loginId, $ADMIN_EMAILS, true);
$isAdmin = $loginId && in_array($loginId, $ADMIN_EMAILS, true);
// ✅ 그누보드 전역 세션 동기화
if ($loginId) {
$_SESSION['ss_mb_id'] = $loginId;
$_SESSION['ss_mb_level'] = $isAdmin ? 10 : 2;
$is_member = true;
$is_admin = $isAdmin ? 'super' : '';
$member = [
'mb_id' => $loginId,
'mb_name' => $userName ?: $loginId,
'mb_email' => $userEmail,
'mb_level' => $_SESSION['ss_mb_level'],
'mb_nick' => $userName ?: $loginId,
];
} else {
// ✅ 비회원: 로그인 세션 없음
$is_member = false;
$is_admin = '';
$member = [];
}
?>
+205
View File
@@ -0,0 +1,205 @@
<?php
// header('Content-Type: application/json; charset=utf-8');
// ini_set('display_errors', 1);
// error_reporting(E_ALL);
// $email = trim($_POST['email'] ?? '');
// $password = trim($_POST['password'] ?? '');
// if (!$email || !$password) {
// echo json_encode(['status' => 'error', 'message' => '이메일 또는 비밀번호가 없습니다.']);
// exit;
// }
// $project_id = 'P2wON5fy1K6kyia269VpeIzYP8oP'; // 너의 Descope 프로젝트 ID
// $url = 'https://api.descope.com/v1/auth/password/signup';
// $data = [
// "email" => $email,
// "password" => $password
// ];
// $ch = curl_init($url);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
// "loginId" => $email,
// "user" => [
// "loginId" => $email,
// "email" => $email
// ],
// "password" => $password
// ]));
// curl_setopt($ch, CURLOPT_HTTPHEADER, [
// "Content-Type: application/json",
// "Authorization: Bearer $project_id"
// ]);
// $response = curl_exec($ch);
// $err = curl_error($ch);
// $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// curl_close($ch);
// if ($http_code === 200) {
// echo json_encode(['status' => 'ok']);
// } else {
// $response_json = json_decode($response, true);
// echo json_encode([
// 'status' => 'error',
// 'message' => $response_json['errorDescription'] ?? 'Descope API 호출 실패',
// 'code' => $http_code,
// 'error' => $err
// ]);
// }
// exit;
?>
<?php
// ini_set('display_errors', 1);
// ini_set('display_startup_errors', 1);
// error_reporting(E_ALL);
// header('Content-Type: application/json; charset=utf-8');
// // $email = trim($_POST['email'] ?? '');
// // $password = trim($_POST['password'] ?? '');
// $email = 'sdi9429@gmail.com';
// // if (!$email || !$password) {
// // echo json_encode(['status' => 'error', 'message' => '이메일 또는 비밀번호가 없습니다.']);
// // exit;
// // }
// if (!$email) {
// echo json_encode(['status' => 'error', 'message' => '이메일이 없습니다.']);
// exit;
// }
// $project_id = 'P2wON5fy1K6kyia269VpeIzYP8oP'; // Descope 프로젝트 ID
// // // 1. 비밀번호 회원가입 (Password Signup)
// // $url_signup = 'https://api.descope.com/v1/auth/password/signup';
// // $signup_data = [
// // "loginId" => $email,
// // "user" => [
// // "loginId" => $email,
// // "email" => $email
// // ],
// // "password" => $password
// // ];
// // $ch = curl_init($url_signup);
// // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// // curl_setopt($ch, CURLOPT_POST, true);
// // curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($signup_data));
// // curl_setopt($ch, CURLOPT_HTTPHEADER, [
// // "Content-Type: application/json",
// // "Authorization: Bearer $project_id"
// // ]);
// // $response_signup = curl_exec($ch);
// // $err_signup = curl_error($ch);
// // $http_code_signup = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// // curl_close($ch);
// // if ($http_code_signup !== 200) {
// // $response_json = json_decode($response_signup, true);
// // echo json_encode([
// // 'status' => 'error',
// // 'message' => $response_json['errorDescription'] ?? 'Descope 회원가입 API 호출 실패',
// // 'code' => $http_code_signup,
// // 'error' => $err_signup
// // ]);
// // exit;
// // }
// // 2. OTP 이메일 전송
// $url = "https://api.descope.com/v1/auth/otp/signup/email";
// $data = [
// "loginId" => $email, // 이메일 주소
// "email" => $email
// ];
// $ch = curl_init($url);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
// curl_setopt($ch, CURLOPT_HTTPHEADER, [
// "Content-Type: application/json",
// "Authorization: Bearer $project_id"
// ]);
// $response = curl_exec($ch);
// $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// curl_close($ch);
// // if ($http_code === 200) {
// // echo json_encode(['status' => 'ok']);
// // } else {
// // $response_json = json_decode($response, true);
// // echo json_encode([
// // 'status' => 'error',
// // 'message' => $response_json['errorDescription'] ?? 'Descope API 호출 실패',
// // 'code' => $http_code
// // ]);
// // }
// // sessionJwt는 반드시 프론트에 넘겨야 함!
// if ($http_code === 200 && !empty($res_data['sessionJwt'])) {
// echo json_encode(['status'=>'ok', 'sessionJwt'=>$res_data['sessionJwt']]);
// } else {
// $msg = $res_data['errorDescription'] ?? 'Descope OTP 발송 실패';
// echo json_encode(['status'=>'fail', 'message'=>$msg, 'debug'=>$res_data]);
// }
// echo json_encode([
// 'status'=>'debug',
// 'raw'=> $response, // $response: curl_exec 결과
// 'php_error'=> error_get_last()
// ]);
// exit;
?>
<?php
header('Content-Type: application/json; charset=utf-8');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$email = trim($_POST['email'] ?? '');
// 생략 가능: $email = 'test123@test.com';
$project_id = 'P2wON5fy1K6kyia269VpeIzYP8oP'; // 실제 프로젝트 ID로 변경
$url = "https://api.descope.com/v1/auth/otp/signup/email";
$data = [
"loginId" => $email,
"email" => $email
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer $project_id"
]);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$res_data = json_decode($response, true); // 항상 선언
if ($http_code === 200 && isset($res_data['maskedEmail'])) {
// 성공 케이스
echo json_encode(['status' => 'ok', 'maskedEmail' => $res_data['maskedEmail']]);
} else {
// 실패 케이스
$msg = $res_data['errorDescription'] ?? 'Descope OTP 발송 실패';
echo json_encode([
'status' => 'fail',
'message' => $msg,
'debug' => $res_data
]);
}
exit;
?>
@@ -0,0 +1,32 @@
<?php
header('Content-Type: application/json; charset=utf-8');
$email = $_POST['email'] ?? '';
if (!$email) exit(json_encode(['status'=>'fail', 'message'=>'이메일 누락']));
// 아래 내용은 실제 사용중인 Descope OTP 전송 API와 맞게 수정해야 함
$api_key = "P2wON5fy1K6kyia269VpeIzYP8oP";
$url = "https://api.descope.com/v1/auth/otp/signup/email";
$data = [
"loginId" => $email,
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$api_key}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code == 200) {
echo json_encode(['status'=>'ok']);
} else {
echo json_encode(['status'=>'fail','message'=>'OTP 재전송 실패']);
}
?>
+217
View File
@@ -0,0 +1,217 @@
<?php
session_start();
// -- JSON 응답 보장 --
header('Content-Type: application/json; charset=UTF-8');
// -- 실서비스 전에는 환경변수 사용 권장 --
$projectId = 'P2wON5fy1K6kyia269VpeIzYP8oP';
$managementKey = 'K32l5ORmzy32OvaaPvpdZsMY3JmKQb7a3vvrl10PgjlJUGk3K7EssMH3uW5VGQSbrgtEdPj';
// -- POST 입력값 (여기서 name 값 등 반드시 필수체크 필요!) --
$email = trim($_POST['email'] ?? '');
$name = trim($_POST['name'] ?? '');
$password = trim($_POST['password'] ?? '');
$family = trim($_POST['familyCompany'] ?? ''); // Machine Name: familycompany
$familyUniqueKey = trim($_POST['familyUniqueKey'] ?? ''); // Machine Name: familyUniqueKey
$team = trim($_POST['team'] ?? ''); // Machine Name: team
$position = trim($_POST['position'] ?? ''); // Machine Name: position
$hp = trim($_POST['phone'] ?? ''); // phone
// $completeForm = ($_POST['completeForm'] ?? '') ? true : false; // Boolean 처리
$completeForm = filter_var($_POST['completeForm'] ?? false, FILTER_VALIDATE_BOOLEAN);
$refreshJwt = trim($_POST['refreshJwt']);
// $refreshJwt = $_SESSION['refreshJwt'] ?? '';
$company = trim($_POST['company'] ?? ''); // Machine Name: company 외부사용자 회사명
// if (!$refreshJwt) {
// // 필수 값 누락시 에러 반환
// echo json_encode(["error" => "refreshJWT is missing"]);
// exit;
// }
// if (!$refreshJwt) {
// echo json_encode([
// "status" => "fail",
// "message" => "세션이 만료되었습니다. 다시 로그인해 주세요."
// ]);
// exit;
// }
// 비밀번호 변경 요청일 때만 refreshJwt 필수
if ($password && !$refreshJwt) {
echo json_encode([
"status" => "fail",
"step" => "password",
"message" => "세션이 만료되었습니다. 다시 로그인해 주세요."
]);
exit;
}
$internalDomains = [
"hanmaceng.co.kr",
"samaneng.com",
"jangheon.co.kr",
"hallasanup.com",
"pre-cast.co.kr",
"baroncs.co.kr"
];
$TENANT_INTERNAL = "T2wQcWCBhUfJgUWHWgNwLg4iUDVY"; // Hanmac Family
$TENANT_CUSTOMER = "T2x4TDzxasp7auPCPcN8uOrxXchh"; // Customer
$TENANT_EGBIM = "T2yGFrGSnFX601G22JOMojJX7OMd"; // egBIM
$TENANT_EDU = "T31ZmUcwOZbwk0y3YmMxrPCpzpQR"; // egBIM-edu
// $domain = explode('@', $email)[1] ?? '';
$domain = strtolower(explode('@', $email)[1] ?? '');
// if (in_array($domain, $internalDomains)) {
// $tenantId = "T2wQcWCBhUfJgUWHWgNwLg4iUDVY"; //내부
// } else {
// $tenantId = "T2x4TDzxasp7auPCPcN8uOrxXchh"; //외부
// }
// if (in_array($domain, $internalDomains)) {
// // 내부 사용자 → 내부 tenant 하나만
// $userTenants = [
// [
// "tenantId" => "T2wQcWCBhUfJgUWHWgNwLg4iUDVY" // 내부 tenantId
// ]
// ];
// } else {
// // 외부 사용자 → customer + egbim 두 개 tenant 자동 등록
// $userTenants = [
// [
// "tenantId" => "T2x4TDzxasp7auPCPcN8uOrxXchh" // customer tenantId
// ],
// [
// "tenantId" => "T2yGFrGSnFX601G22JOMojJX7OMd" // egbim tenantId
// ]
// ];
// }
if (in_array($domain, $internalDomains, true)) {
// 1️⃣ 내부 사용자
$userTenants = [
[ "tenantId" => $TENANT_INTERNAL ]
];
} elseif (str_ends_with($domain, '.ac.kr')) {
// 2️⃣ 학교 사용자 (egBIM-edu)
$userTenants = [
[ "tenantId" => $TENANT_EDU ]
];
} else {
// 3️⃣ 외부 일반 사용자
$userTenants = [
[ "tenantId" => $TENANT_CUSTOMER ],
[ "tenantId" => $TENANT_EGBIM ]
];
}
//라이센스 만료일 계산
$now = new DateTime('now', new DateTimeZone('Asia/Seoul'));
$expiry = (clone $now)->modify('+90 days')->format(DateTime::ATOM);
// -- Custom Attribute 실제 Machine Name에 맞춰서 할당 (Descope 콘솔 기준) --
$custom = [
"familyCompany" => $family, // 소속 가족사
"familyUniqueKey" => $familyUniqueKey, // 사번
"team" => $team, // 소속팀
"position" => $position, // 직위
"completeForm" => $completeForm, // 정보입력완료 (Boolean)
// "egBimLExpiryDate" => $expiry //egbim 라이센스 만료일
// 필요하면 추가로 다른 Machine Name도 사용 가능
];
if (! in_array($domain, $internalDomains, true)) {
$custom["egBimLExpiryDate"] = $expiry;
}
if ($company) {
$custom["company"] = $company; // 외부사용자 회사명 추가
}
// -- 1. 사용자 정보 업데이트 --
$update_body = [
"loginId" => $email,
"email" => $email,
"name" => $name,
"phone" => $hp,
"verifiedPhone" => false,
"customAttributes" => $custom,
// "roleNames" => [ "Default User" ],
"userTenants" => $userTenants
];
$ch = curl_init('https://api.descope.com/v1/mgmt/user/update');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: Bearer {$projectId}:{$managementKey}"
],
CURLOPT_POSTFIELDS => json_encode($update_body),
]);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$res_data = json_decode($response, true);
// -- 1-1. 사용자 정보 업데이트 실패시 --
if ($http_code !== 200) {
$msg = $res_data['errorDescription'] ?? 'Descope 정보 업데이트 실패';
echo json_encode([
'status' => 'fail',
'step' => 'info',
'message' => $msg,
'raw' => $response
]);
exit;
}
// -- 2. 비밀번호 변경 (입력값이 있을 경우) --
if ($password) {
$pw_body = [
"loginId" => $email,
"newPassword" => $password
];
error_log("Descope password update payload: " . json_encode($pw_body));
error_log("Using refreshJwt for password update: " . $refreshJwt);
$ch2 = curl_init('https://api.descope.com/v1/auth/password/update');
curl_setopt_array($ch2, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: Bearer {$projectId}:{$refreshJwt}"
],
CURLOPT_POSTFIELDS => json_encode($pw_body),
]);
$response2 = curl_exec($ch2);
$http_code2 = curl_getinfo($ch2, CURLINFO_HTTP_CODE);
curl_close($ch2);
$res_data2 = json_decode($response2, true);
if ($http_code2 !== 200) {
$msg2 = $res_data2['errorDescription'] ?? 'Descope 비밀번호 변경 실패';
echo json_encode([
'status' => 'fail',
'step' => 'password',
'message' => $msg2,
'raw' => $response2
]);
exit;
}
}
// -- 3. 모두 성공 --
echo json_encode(['status' => 'ok']);
?>
@@ -0,0 +1,45 @@
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
header('Content-Type: application/json');
require_once './descope_config.php';
$email = trim($_POST['email'] ?? '');
$password = trim($_POST['password'] ?? '');
$refreshJwt = trim($_POST['refreshJwt'] ?? '');
if (!$email || !$password || !$refreshJwt) {
echo json_encode(['status' => 'fail', 'message' => '필수값 없음']);
exit;
}
// Descope API - 비밀번호 변경 엔드포인트 사용
$url = "https://api.descope.com/v1/auth/password/update";
$data = [
"loginId" => $email,
"newPassword" => $password,
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer " . $refreshJwt,
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($code == 200) {
echo json_encode(['status' => 'ok']);
} else {
$resData = json_decode($response, true);
$msg = $resData['errorDescription'] ?? '비밀번호 변경 실패';
echo json_encode(['status' => 'fail', 'message' => $msg, 'raw' => $response]);
}
?>
@@ -0,0 +1,32 @@
<?php
$projectId = 'P2wON5fy1K6kyia269VpeIzYP8oP';
$managementKey = 'K32l5ORmzy32OvaaPvpdZsMY3JmKQb7a3vvrl10PgjlJUGk3K7EssMH3uW5VGQSbrgtEdPj';
$loginId = 'sdi9429@gmail.com'; // 테스트할 사용자
$status = 'disabled'; // 또는 'enabled'
$headers = [
"Content-Type: application/json",
"Authorization: Bearer {$projectId}:{$managementKey}"
];
$body = [
"loginId" => $loginId,
"status" => $status
];
$ch = curl_init('https://api.descope.com/v1/mgmt/user/update/status');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// 결과 출력
header('Content-Type: application/json');
echo json_encode([
'httpCode' => $httpCode,
'response' => json_decode($response, true)
]);
@@ -0,0 +1,95 @@
<?php
// header('Content-Type: application/json');
// $management_key = 'P2wON5fy1K6kyia269VpeIzYP8oP:K2ycqpjeh1voPBdxXxzB3ScZOQ6v9aiLmU2cIj70X1H8Kcoz0KWfCWmofUwAsAkJroXA8QC';
// // userId 또는 loginId 사용 가능
// $userId = $_POST['userId'] ?? '';
// $loginId = $_POST['loginId'] ?? '';
// if (!$userId && !$loginId) {
// echo json_encode(['status' => 'fail', 'message' => 'userId 또는 loginId 누락']);
// exit;
// }
// $url = "https://api.descope.com/v1/mgmt/user/delete";
// $payload = json_encode([
// "userId" => $userId,
// "loginId" => $loginId
// ]);
// $headers = [
// "Authorization: Bearer $management_key",
// "Content-Type: application/json"
// ];
// $ch = curl_init($url);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
// curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// $response = curl_exec($ch);
// $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// curl_close($ch);
// if ($http_code === 200) {
// echo json_encode(['status' => 'ok', 'message' => '탈퇴 성공']);
// } else {
// echo json_encode([
// 'status' => 'fail',
// 'message' => '탈퇴 실패',
// 'code' => $http_code,
// 'response' => $response
// ]);
// }
?>
<?php
header('Content-Type: application/json');
// TODO: 환경변수/별도 설정파일에서 읽어오세요.
$management_key = 'P2wON5fy1K6kyia269VpeIzYP8oP:K32l5ORmzy32OvaaPvpdZsMY3JmKQb7a3vvrl10PgjlJUGk3K7EssMH3uW5VGQSbrgtEdPj';
$userId = $_POST['userId'] ?? '';
$loginId = $_POST['loginId'] ?? '';
if (!$userId && !$loginId) {
echo json_encode(['status' => 'fail', 'message' => 'userId 또는 loginId가 필요합니다.']);
exit;
}
$url = "https://api.descope.com/v1/mgmt/user/delete";
$payload = [];
if ($userId) $payload['userId'] = $userId;
if ($loginId) $payload['loginId'] = $loginId;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$management_key}",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
curl_close($ch);
if ($err) {
echo json_encode(['status' => 'fail', 'message' => 'cURL error', 'error' => $err]);
exit;
}
if ($http_code === 200) {
echo json_encode(['status' => 'ok', 'message' => '탈퇴 처리 완료']);
} else {
echo json_encode([
'status' => 'fail',
'message' => 'Descope delete 실패',
'code' => $http_code,
'res' => $response
]);
}
?>
@@ -0,0 +1,347 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/egbim/skin/member/basic/descope_session.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/egbim/bbs/userlist_admin_guard.php';
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Descope 유저 리스트</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<style>
#tableContainer { max-height: 80vh; overflow-y: auto; overflow-x: hidden; }
#floatingScroll {
position: sticky; bottom: 0; left: 0; right: 0;
height: 16px; overflow-x: auto; overflow-y: hidden;
background: #f9f9f9; border-top: 1px solid #ccc; z-index: 50;
}
#floatingScrollInner { height: 1px; }
thead th { position: sticky; top: 0; z-index: 60; background: #e5e7eb; }
</style>
</head>
<body class="bg-gray-100 p-6">
<div class="max-w-[1800px] mx-auto pb-10 bg-white shadow rounded-lg pl-5 pt-5 pr-5">
<h1 class="text-2xl font-bold mb-4">Descope 유저 리스트</h1>
<!-- ✅ 검색 영역 -->
<div class="flex items-center gap-2 mb-4">
<select id="mode" class="border px-2 py-1 rounded">
<option value="created">가입일 기준</option>
<option value="lastSignIn">마지막 로그인 기준</option>
<option value="license">라이센스 만료일 기준</option>
<option value="serverLogin">최근 로그인 기준 (EGBIM)</option> <!-- ✅ 추가 -->
</select>
<input type="text" id="startDate" placeholder="시작일" class="border px-2 py-1 rounded">
<span>~</span>
<input type="text" id="endDate" placeholder="종료일" class="border px-2 py-1 rounded">
<button id="filterBtn" class="bg-blue-500 text-white px-4 py-1 rounded">검색</button>
<button id="resetBtn" class="bg-gray-400 text-white px-4 py-1 rounded">초기화</button>
<!-- ✅ 테넌트 체크박스 -->
<div id="tenantFilter" class="flex items-center gap-2 ml-4">
<label><input type="checkbox" name="tenant" value="Hanmac Family"> Hanmac Family</label>
<label><input type="checkbox" name="tenant" value="Customer"> Customer</label>
<label><input type="checkbox" name="tenant" value="egBIM-edu"> egBIM-edu</label>
</div>
<!-- ✅ CSV 대량 생성 버튼 -->
<button id="btn-import-descope" class="bg-green-600 text-white px-4 py-1 rounded hover:bg-green-700">계정 일괄 생성</button>
<!-- ✅ CSV Import 팝업 -->
<div id="importModal" class="fixed inset-0 bg-black bg-opacity-40 flex items-center justify-center hidden z-50">
<div class="bg-white rounded-lg shadow-lg p-6 w-[590px] max-w-[90%] relative">
<h2 class="text-lg font-semibold mb-4">Descope 대량 생성</h2>
<label class="block text-sm font-medium mb-1">Google Sheet CSV URL</label>
<input id="csvUrl" type="url"
class="w-full border px-3 py-2 rounded mb-3"
placeholder="https://docs.google.com/spreadsheets/d/.../export?format=csv&gid=..." />
<label class="block text-sm font-medium mb-1">egBIM 라이선스 만료일</label>
<input id="expiry" type="date" class="w-full border px-3 py-2 rounded mb-3" />
<!-- <label class="inline-flex items-center mb-4">
<input id="sendReset" type="checkbox" class="mr-2" checked>
<span>비밀번호 재설정 메일 발송</span>
</label> -->
<!-- ✅ Tenant Type 선택 -->
<label class="block text-sm font-medium mb-1">소속 테넌트 선택</label>
<div class="flex gap-4 mb-3">
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="customer" checked />
<span>Customer (외부)</span>
</label>
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="family" />
<span>Hanmac Family (내부)</span>
</label>
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="edu" />
<span>egBIM-edu (교육용)</span>
</label>
</div>
<div id="importMsg" class="text-gray-500 text-sm mb-4"></div>
<div class="flex justify-end gap-2">
<button id="importCancel" class="px-4 py-1 bg-gray-400 text-white rounded">취소</button>
<button id="importRun" class="px-4 py-1 bg-blue-600 text-white rounded">실행</button>
</div>
</div>
</div>
<!-- ✅ 우측 검색창 -->
<div class="flex justify-end flex-1">
<input type="text" id="keyword" placeholder="소속 가족사 / 외부회사 검색"
class="border px-2 py-1 rounded w-72">
<button id="keywordBtn"
class="ml-2 bg-blue-500 text-white px-4 py-1 rounded">검색</button>
</div>
</div>
<!-- ✅ 테이블 -->
<div id="tableContainer" class="w-full pb-10 bg-white shadow rounded-lg overflow-x-auto">
<table id="userTableWrapper"
class="min-w-[2500px] text-sm text-center text-gray-700 border table-fixed">
<thead class="bg-gray-200 text-xs uppercase">
<tr>
<th class="px-4 py-2 w-12">#</th>
<th class="px-4 py-2 min-w-[150px]">Login ID</th>
<th class="px-4 py-2 min-w-[160px]">Display Name</th>
<th class="px-4 py-2 min-w-[140px]">직위</th>
<th class="px-4 py-2 min-w-[180px]">Phone</th>
<th class="px-4 py-2 min-w-[250px]">Created Time</th>
<th class="px-4 py-2 min-w-[220px]">Tenants</th>
<th class="px-4 py-2 min-w-[160px]">소속 가족사</th>
<th class="px-4 py-2 min-w-[200px]">소속회사(외부용)</th>
<th class="px-4 py-2 min-w-[100px]">Status</th>
<th class="px-4 py-2 min-w-[220px]">Email</th>
<th class="px-4 py-2 min-w-[140px]">정보입력완료</th>
<th class="px-4 py-2 min-w-[200px]">egBIM 라이센스 만료일</th>
<th class="px-4 py-2 min-w-[120px]">사번</th>
<th class="px-4 py-2 min-w-[180px]">마지막 접속 IP</th>
<th class="px-4 py-2 min-w-[200px]">Beps 마지막 로그인날짜</th>
<th class="px-4 py-2 min-w-[210px]">egBIM 최근 로그인</th>
<th class="px-4 py-2 min-w-[200px]">소속센터/부/실</th>
</tr>
</thead>
<tbody id="userTable" class="divide-y"></tbody>
</table>
</div>
<div id="floatingScroll"><div id="floatingScrollInner"></div></div>
</div>
<script>
function formatDate(value) {
if (!value) return "";
let ts = parseInt(value, 10);
if (isNaN(ts)) return value;
if (ts < 1e12) ts *= 1000; // 초 단위 → 밀리초 보정
return new Date(ts).toLocaleString("ko-KR");
}
// ✅ EGBIM DB에서 오는 VARCHAR (ex: "2025-09-16 18:49:48") 전용 포맷터
function formatServerLogin(value) {
if (!value) return "-";
// "2025-09-16 18:49:48"
const parts = value.split(" ");
if (parts.length < 2) return value;
const datePart = parts[0].replace(/-/g, ". "); // "2025. 09. 16"
const timePart = parts[1]; // "18:49:48"
let [h, m, s] = timePart.split(":").map(Number);
const meridiem = h >= 12 ? "오후" : "오전";
if (h === 0) h = 12;
else if (h > 12) h -= 12;
return `${datePart}. ${meridiem} ${h}:${String(m).padStart(2,"0")}:${String(s).padStart(2,"0")}`;
}
function loadUserList(start=null, end=null, mode="created") {
let url = "/egbim/bbs/descope_user_list.php";
const params = [];
if (start) params.push("start=" + encodeURIComponent(start));
if (end) params.push("end=" + encodeURIComponent(end));
if (mode) params.push("mode=" + encodeURIComponent(mode));
const keyword = $("#keyword").val().trim();
if (keyword) params.push("keyword=" + encodeURIComponent(keyword));
const tenants = $("input[name='tenant']:checked")
.map(function(){ return this.value; })
.get();
if (tenants.length) {
params.push("tenants=" + encodeURIComponent(tenants.join(",")));
}
if (params.length) url += "?" + params.join("&");
$.getJSON(url, function(data) {
let rows = "";
if (data.status === "ok" && data.users) {
data.users.forEach((u, idx) => {
let tenantInfo = "";
if (u.userTenants && Array.isArray(u.userTenants)) {
tenantInfo = u.userTenants.map(t => t.tenantName || "").join("<br>");
}
rows += `
<tr class="hover:bg-gray-50">
<td class="px-4 py-2 text-center">${idx+1}</td>
<td class="px-4 py-2">${u.loginIds?.[0] || "-"}</td>
<td class="px-4 py-2">${u.name || "-"}</td>
<td class="px-4 py-2">${u.customAttributes?.position || "-"}</td>
<td class="px-4 py-2">${u.phone || "-"}</td>
<td class="px-4 py-2">${formatDate(u.createdTime) || "-"}</td>
<td class="px-4 py-2">${tenantInfo || "-"}</td>
<td class="px-4 py-2">${u.customAttributes?.familyCompany || "-"}</td>
<td class="px-4 py-2">${u.customAttributes?.company || "-"}</td>
<td class="px-4 py-2">${u.status || "-"}</td>
<td class="px-4 py-2">${u.email || "-"}</td>
<td class="px-4 py-2">${u.customAttributes?.completeForm ? "완료" : "미완료"}</td>
<td class="px-4 py-2">${formatDate(u.customAttributes?.egBimLExpiryDate) || "-"}</td>
<td class="px-4 py-2">${u.customAttributes?.familyUniqueKey || "-"}</td>
<td class="px-4 py-2">${u.customAttributes?.lastAccessIp || "-"}</td>
<td class="px-4 py-2">${formatDate(u.customAttributes?.lastSignInDate) || "-"}</td>
<!-- ✅ EGBIM 최근 로그인 표시 -->
<td class="px-4 py-2">${formatServerLogin(u.customAttributes?.serverLastLogin) || "-"}</td>
<td class="px-4 py-2">${u.customAttributes?.team || "-"}</td>
</tr>`;
});
} else {
rows = `<tr><td colspan="18" class="text-center text-red-500">데이터 없음</td></tr>`;
}
$("#userTable").html(rows);
const $tableContainer = $("#tableContainer");
const $scroll = $("#floatingScroll");
const $scrollInner = $("#floatingScrollInner");
function syncWidth() {
const tableWidth = $("#userTableWrapper").outerWidth();
const containerWidth = $tableContainer.width();
$scrollInner.width(Math.max(tableWidth, containerWidth));
}
$scroll.off("scroll").on("scroll", () =>
$tableContainer.scrollLeft($scroll.scrollLeft())
);
$tableContainer.off("scroll").on("scroll", () =>
$scroll.scrollLeft($tableContainer.scrollLeft())
);
setTimeout(syncWidth, 500);
$(window).off("resize.syncScroll").on("resize.syncScroll", syncWidth);
});
}
// ✅ 체크박스 클릭 시 즉시 필터링
$(document).on("change", "input[name='tenant']", function() {
loadUserList($("#startDate").val(), $("#endDate").val(), $("#mode").val());
});
$(document).ready(function() {
flatpickr("#startDate", { dateFormat: "Y-m-d" });
flatpickr("#endDate", { dateFormat: "Y-m-d" });
$("#filterBtn").on("click", function() {
loadUserList($("#startDate").val(), $("#endDate").val(), $("#mode").val());
});
$("#resetBtn").on("click", function() {
$("#startDate").val("");
$("#endDate").val("");
$("#mode").val("created");
$("input[name='tenant']").prop("checked", false);
$("#keyword").val(""); // ✅ 검색창 초기화
loadUserList();
});
$("#keywordBtn").on("click", function() {
loadUserList($("#startDate").val(), $("#endDate").val(), $("#mode").val());
});
$("#keyword").on("keypress", function(e) {
if (e.which === 13) {
loadUserList($("#startDate").val(), $("#endDate").val(), $("#mode").val());
}
});
loadUserList();
});
</script>
</body>
</html>
<script>
$(function(){
// ✅ 모달 열기
$("#btn-import-descope").on("click", () => {
$("#importModal").removeClass("hidden");
$("#importMsg").text("");
$("#importRun").prop("disabled", false).text("실행");
});
// ✅ 모달 닫기 (밖 클릭 포함)
$("#importCancel, #importModal").on("click", (e) => {
if (e.target.id === "importCancel" || e.target.id === "importModal") {
$("#importModal").addClass("hidden");
}
});
// ✅ 실행 버튼 클릭
$("#importRun").on("click", async () => {
const csvUrl = $("#csvUrl").val().trim();
const expiry = $("#expiry").val().trim();
const tenantType = $('input[name="tenant_type"]:checked').val(); // ✅ 올바른 name 참조
if (!csvUrl) {
$("#importMsg").text("❗ CSV URL을 입력하세요.");
return;
}
$("#importRun").prop("disabled", true).text("실행 중...");
$("#importMsg").html("<span class='text-blue-600'>처리 중입니다... 잠시만 기다려주세요.</span>");
try {
const res = await fetch("/egbim/bbs/descope_import.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
csv_url: csvUrl,
expiry: expiry,
tenant_type: tenantType // ✅ 서버로 전달
})
});
const data = await res.json();
console.log("📦 응답:", data);
if (data.status === "ok") {
$("#importMsg").html(`
✅ 완료: <b>${data.created}</b> 생성 /
<b>${data.updated}</b> 갱신 /
<b>${data.failed}</b> 실패
`);
if (data.failed > 0 && data.errors?.length) {
console.warn("실패 목록:", data.errors);
$("#importMsg").append(`<br><span class='text-gray-600'>일부 실패 로그는 콘솔에서 확인하세요.</span>`);
}
} else {
$("#importMsg").html(`❌ 실패: ${data.message || "서버 오류"}`);
console.error("서버 응답:", data);
}
} catch (err) {
console.error("통신 오류:", err);
$("#importMsg").html("<span class='text-red-600'>❌ 통신 오류가 발생했습니다.</span>");
} finally {
$("#importRun").prop("disabled", false).text("실행");
}
});
});
</script>
@@ -0,0 +1,350 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/egbim/skin/member/basic/descope_session.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/egbim/bbs/userlist_admin_guard.php';
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Descope 유저 리스트</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<link rel="stylesheet" type="text/css" href="https://rawgit.com/vitmalina/w2ui/master/dist/w2ui.min.css">
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<style>
#tableContainer { max-height: 80vh; overflow-y: auto; overflow-x: hidden; }
#floatingScroll {
position: sticky; bottom: 0; left: 0; right: 0;
height: 16px; overflow-x: auto; overflow-y: hidden;
background: #f9f9f9; border-top: 1px solid #ccc; z-index: 50;
}
#floatingScrollInner { height: 1px; }
thead th { position: sticky; top: 0; z-index: 60; background: #e5e7eb; }
</style>
</head>
<body class="bg-gray-100 p-6">
<div class="max-w-[1800px] mx-auto pb-10 bg-white shadow rounded-lg pl-5 pt-5 pr-5">
<h1 class="text-2xl font-bold mb-4">Descope 유저 리스트</h1>
<!-- ✅ 검색 영역 -->
<div class="flex items-center gap-2 mb-4">
<select id="mode" class="border px-2 py-1 rounded">
<option value="created">가입일 기준</option>
<option value="lastSignIn">마지막 로그인 기준</option>
<option value="license">라이센스 만료일 기준</option>
<option value="serverLogin">최근 로그인 기준 (EGBIM)</option> <!-- ✅ 추가 -->
</select>
<input type="text" id="startDate" placeholder="시작일" class="border px-2 py-1 rounded">
<span>~</span>
<input type="text" id="endDate" placeholder="종료일" class="border px-2 py-1 rounded">
<button id="filterBtn" class="bg-blue-500 text-white px-4 py-1 rounded">검색</button>
<button id="resetBtn" class="bg-gray-400 text-white px-4 py-1 rounded">초기화</button>
<!-- ✅ 테넌트 체크박스 -->
<div id="tenantFilter" class="flex items-center gap-2 ml-4">
<label><input type="checkbox" name="tenant" value="Hanmac Family"> Hanmac Family</label>
<label><input type="checkbox" name="tenant" value="Customer"> Customer</label>
<label><input type="checkbox" name="tenant" value="egBIM-edu"> egBIM-edu</label>
</div>
<!-- ✅ CSV 대량 생성 버튼 -->
<button id="btn-import-descope" class="bg-green-600 text-white px-4 py-1 rounded hover:bg-green-700">계정 일괄 생성</button>
<!-- ✅ CSV Import 팝업 -->
<div id="importModal" class="fixed inset-0 bg-black bg-opacity-40 flex items-center justify-center hidden z-50">
<div class="bg-white rounded-lg shadow-lg p-6 w-[590px] max-w-[90%] relative">
<h2 class="text-lg font-semibold mb-4">Descope 대량 생성</h2>
<label class="block text-sm font-medium mb-1">Google Sheet CSV URL</label>
<input id="csvUrl" type="url"
class="w-full border px-3 py-2 rounded mb-3"
placeholder="https://docs.google.com/spreadsheets/d/.../export?format=csv&gid=..." />
<label class="block text-sm font-medium mb-1">egBIM 라이선스 만료일</label>
<input id="expiry" type="date" class="w-full border px-3 py-2 rounded mb-3" />
<!-- <label class="inline-flex items-center mb-4">
<input id="sendReset" type="checkbox" class="mr-2" checked>
<span>비밀번호 재설정 메일 발송</span>
</label> -->
<!-- ✅ Tenant Type 선택 -->
<label class="block text-sm font-medium mb-1">소속 테넌트 선택</label>
<div class="flex gap-4 mb-3">
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="customer" checked />
<span>Customer (외부)</span>
</label>
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="family" />
<span>Hanmac Family (내부)</span>
</label>
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="edu" />
<span>egBIM-edu (교육용)</span>
</label>
</div>
<div id="importMsg" class="text-gray-500 text-sm mb-4"></div>
<div class="flex justify-end gap-2">
<button id="importCancel" class="px-4 py-1 bg-gray-400 text-white rounded">취소</button>
<button id="importRun" class="px-4 py-1 bg-blue-600 text-white rounded">실행</button>
</div>
</div>
</div>
<!-- ✅ 우측 검색창 -->
<div class="flex justify-end flex-1">
<input type="text" id="keyword" placeholder="소속 가족사 / 외부회사 검색"
class="border px-2 py-1 rounded w-72">
<button id="keywordBtn"
class="ml-2 bg-blue-500 text-white px-4 py-1 rounded">검색</button>
</div>
</div>
<div id="grid" style="width: 1700px; height: 500px; overflow: hidden;"></div>
<br>
<button class="w2ui-btn" onclick="loadData()">Load Data</button>
<!-- <button class="w2ui-btn" onclick="loadData('data/list.json')">Load Data</button> -->
<script type="module">
import { w2grid } from 'https://rawgit.com/vitmalina/w2ui/master/dist/w2ui.es6.min.js'
let grid = new w2grid({
name: 'grid',
box: '#grid',
show: {
header: true,
footer: true,
toolbar: true,
lineNumbers: true
},
columns: [
{ field: 'loginIds', text: '아이디', size: '30%', searchable: true, sortable: true },
{ field: 'name', text: '이름', size: '100px', searchable: true, sortable: true },
{ field: 'email', text: '이메일', size: '40%', searchable: true, sortable: true },
{ field: 'phone', text: '연락처', size: '100px', searchable: true, sortable: true },
{ field: 'createdTime', text: '가입일', size: '150px', searchable: true, sortable: true },
{ field: 'customAttributes.position', text: '직위', size: '80px', searchable: true, sortable: true },
{ field: 'customAttributes.familyCompany', text: '가족사', size: '250px', searchable: true, sortable: true },
{ field: 'customAttributes.company', text: '회사', size: '250px', searchable: true, sortable: true },
{ field: 'customAttributes.serverLastLogin', text: '최종로그인시간', size: '150px', searchable: true, sortable: true },
{ field: 'customAttributes.team', text: '소속센터/부/실', size: '150px', searchable: true, sortable: true },
{ field: 'customAttributes.egBimLExpiryDate', text: 'egBIM 라이센스 만료일', size: '150px', searchable: true, sortable: true },
{ field: 'tenantText', text: '테넌트', size: '150px', searchable: true, sortable: true },
{ field: 'customAttributes.familyUniqueKey', text: '사번', size: '150px', searchable: true, sortable: true },
{ field: 'customAttributes.completeForm', text: '정보입력완료', size: '150px', searchable: true, sortable: true },
]
})
window.loadData = function() {
let start=null, end=null, mode="created";
let l_url = "/egbim/bbs/descope_user_list_w2.php";
const params = [];
if (start) params.push("start=" + encodeURIComponent(start));
if (end) params.push("end=" + encodeURIComponent(end));
if (mode) params.push("mode=" + encodeURIComponent(mode));
const keyword = $("#keyword").val().trim();
if (keyword) params.push("keyword=" + encodeURIComponent(keyword));
const tenants = $("input[name='tenant']:checked")
.map(function(){ return this.value; })
.get();
if (tenants.length) {
params.push("tenants=" + encodeURIComponent(tenants.join(",")));
}
if (params.length) l_url += "?" + params.join("&");
// console.error(l_url);
grid.load(l_url)
}
</script>
<script>
function formatDate(value) {
if (!value) return "";
let ts = parseInt(value, 10);
if (isNaN(ts)) return value;
if (ts < 1e12) ts *= 1000; // 초 단위 → 밀리초 보정
return new Date(ts).toLocaleString("ko-KR");
}
// ✅ EGBIM DB에서 오는 VARCHAR (ex: "2025-09-16 18:49:48") 전용 포맷터
function formatServerLogin(value) {
if (!value) return "-";
// "2025-09-16 18:49:48"
const parts = value.split(" ");
if (parts.length < 2) return value;
const datePart = parts[0].replace(/-/g, ". "); // "2025. 09. 16"
const timePart = parts[1]; // "18:49:48"
let [h, m, s] = timePart.split(":").map(Number);
const meridiem = h >= 12 ? "오후" : "오전";
if (h === 0) h = 12;
else if (h > 12) h -= 12;
return `${datePart}. ${meridiem} ${h}:${String(m).padStart(2,"0")}:${String(s).padStart(2,"0")}`;
}
function loadUserList(start=null, end=null, mode="created") {
let url = "/egbim/bbs/descope_user_list.php";
const params = [];
if (start) params.push("start=" + encodeURIComponent(start));
if (end) params.push("end=" + encodeURIComponent(end));
if (mode) params.push("mode=" + encodeURIComponent(mode));
const keyword = $("#keyword").val().trim();
if (keyword) params.push("keyword=" + encodeURIComponent(keyword));
const tenants = $("input[name='tenant']:checked")
.map(function(){ return this.value; })
.get();
if (tenants.length) {
params.push("tenants=" + encodeURIComponent(tenants.join(",")));
}
if (params.length) url += "?" + params.join("&");
$.getJSON(url, function(data) {
let rows = "";
if (data.status === "ok" && data.users) {
try{
data.users.forEach((u, idx) => {
let tenantInfo = "";
if (u.userTenants && Array.isArray(u.userTenants)) {
tenantInfo = u.userTenants.map(t => t.tenantName || "").join("<br>");
}
if (idx == 2){
throw new Error("stop");
}
});
} catch (error){
console.error("오류 상세:" + error);
}
}
});
//grid.render('#main');
}
// ✅ 체크박스 클릭 시 즉시 필터링
$(document).on("change", "input[name='tenant']", function() {
loadUserList($("#startDate").val(), $("#endDate").val(), $("#mode").val());
});
$(document).ready(function() {
flatpickr("#startDate", { dateFormat: "Y-m-d" });
flatpickr("#endDate", { dateFormat: "Y-m-d" });
$("#filterBtn").on("click", function() {
loadUserList($("#startDate").val(), $("#endDate").val(), $("#mode").val());
});
$("#resetBtn").on("click", function() {
$("#startDate").val("");
$("#endDate").val("");
$("#mode").val("created");
$("input[name='tenant']").prop("checked", false);
$("#keyword").val(""); // ✅ 검색창 초기화
loadUserList();
});
$("#keywordBtn").on("click", function() {
loadUserList($("#startDate").val(), $("#endDate").val(), $("#mode").val());
});
$("#keyword").on("keypress", function(e) {
if (e.which === 13) {
loadUserList($("#startDate").val(), $("#endDate").val(), $("#mode").val());
}
});
loadUserList();
});
</script>
</body>
</html>
<script>
$(function(){
// ✅ 모달 열기
$("#btn-import-descope").on("click", () => {
$("#importModal").removeClass("hidden");
$("#importMsg").text("");
$("#importRun").prop("disabled", false).text("실행");
});
// ✅ 모달 닫기 (밖 클릭 포함)
$("#importCancel, #importModal").on("click", (e) => {
if (e.target.id === "importCancel" || e.target.id === "importModal") {
$("#importModal").addClass("hidden");
}
});
// ✅ 실행 버튼 클릭
$("#importRun").on("click", async () => {
const csvUrl = $("#csvUrl").val().trim();
const expiry = $("#expiry").val().trim();
const tenantType = $('input[name="tenant_type"]:checked').val(); // ✅ 올바른 name 참조
if (!csvUrl) {
$("#importMsg").text("❗ CSV URL을 입력하세요.");
return;
}
$("#importRun").prop("disabled", true).text("실행 중...");
$("#importMsg").html("<span class='text-blue-600'>처리 중입니다... 잠시만 기다려주세요.</span>");
try {
const res = await fetch("/egbim/bbs/descope_import.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
csv_url: csvUrl,
expiry: expiry,
tenant_type: tenantType // ✅ 서버로 전달
})
});
const data = await res.json();
console.log("📦 응답:", data);
if (data.status === "ok") {
$("#importMsg").html(`
✅ 완료: <b>${data.created}</b> 생성 /
<b>${data.updated}</b> 갱신 /
<b>${data.failed}</b> 실패
`);
if (data.failed > 0 && data.errors?.length) {
console.warn("실패 목록:", data.errors);
$("#importMsg").append(`<br><span class='text-gray-600'>일부 실패 로그는 콘솔에서 확인하세요.</span>`);
}
} else {
$("#importMsg").html(`❌ 실패: ${data.message || "서버 오류"}`);
console.error("서버 응답:", data);
}
} catch (err) {
console.error("통신 오류:", err);
$("#importMsg").html("<span class='text-red-600'>❌ 통신 오류가 발생했습니다.</span>");
} finally {
$("#importRun").prop("disabled", false).text("실행");
}
});
});
</script>
@@ -0,0 +1,465 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/egbim/skin/member/basic/descope_session.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/egbim/bbs/userlist_admin_guard.php';
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Descope 유저 리스트</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/vitmalina/w2ui@master/dist/w2ui.min.css"/>
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<!-- ✅ w2ui 최신 버전 (ORB 차단 방지용) -->
<!-- <link rel="stylesheet" type="text/css" href="https://rawgit.com/vitmalina/w2ui/master/dist/w2ui.min.css"> -->
<!-- <script type="module" src="https://unpkg.com/w2ui/dist/w2ui.es6.min.js"></script> -->
<style>
/* ✅ 헤더 텍스트만 가운데 정렬 */
.w2ui-grid-columns td.w2ui-head > div {
text-align: center !important;
}
/* ✅ w2ui 그리드 전체 폰트 크기 조정 */
.w2ui-grid * {
font-family: 'Pretendard', 'Noto Sans KR', sans-serif !important;
font-size: 15px !important;
}
</style>
</head>
<body class="bg-gray-100 p-6">
<div class="max-w-[1900px] mx-auto pb-10 bg-white shadow rounded-lg pl-5 pt-5 pr-5">
<h1 class="text-2xl font-bold mb-4">EG-BIM 사용자 리스트</h1>
<!-- ✅ 검색 영역 -->
<div class="flex items-center gap-2 mb-4">
<select id="mode" class="border px-2 py-1 rounded">
<option value="created">가입일 기준</option>
<!-- <option value="lastSignIn">마지막 로그인 기준</option> -->
<option value="license">라이센스 만료일 기준</option>
<option value="serverLogin" selected>최종 로그인 시간 기준</option>
</select>
<input type="text" id="startDate" placeholder="시작일" class="border px-2 py-1 rounded">
<span>~</span>
<input type="text" id="endDate" placeholder="종료일" class="border px-2 py-1 rounded">
<button id="filterBtn" class="bg-blue-500 text-white px-4 py-1 rounded">검색</button>
<button id="resetBtn" class="bg-gray-400 text-white px-4 py-1 rounded">초기화</button>
<!-- ✅ 테넌트 체크박스 -->
<div id="tenantFilter" class="flex items-center gap-2 ml-4">
<label><input type="checkbox" name="tenant" value="Hanmac Family"> Hanmac Family</label>
<label><input type="checkbox" name="tenant" value="Customer"> Customer</label>
<label><input type="checkbox" name="tenant" value="egBIM-edu"> egBIM-edu</label>
</div>
<div class="flex-grow"></div>
<!-- ✅ CSV 버튼 -->
<div>
<button id="btn-import-descope" class="bg-green-600 text-white px-4 py-1 rounded hover:bg-green-700 ml-auto">CSV 일괄 생성</button>
<button id="btn-import-descope" class="bg-blue-600 text-white px-4 py-1 rounded hover:bg-blue-700 ml-auto" onclick="location.href='/egbim/skin/sales/sales_schedules.skin.php'">영업 관리</button>
</div>
</div>
<!-- ✅ w2ui Grid -->
<div id="grid" style="width: 100%; height: 720px;"></div>
</div>
<!-- ✅ CSV Import Modal -->
<div id="importModal" class="fixed inset-0 bg-black bg-opacity-40 flex items-center justify-center hidden z-50">
<div class="bg-white rounded-lg shadow-lg p-6 w-[590px] max-w-[90%] relative">
<h2 class="text-lg font-semibold mb-4">Descope 대량 생성</h2>
<label class="block text-sm font-medium mb-1">Google Sheet CSV URL</label>
<input id="csvUrl" type="url"
class="w-full border px-3 py-2 rounded mb-3"
placeholder="https://docs.google.com/spreadsheets/d/.../export?format=csv&gid=..." />
<label class="block text-sm font-medium mb-1">egBIM 라이선스 만료일</label>
<input id="expiry" type="date" class="w-full border px-3 py-2 rounded mb-3" />
<label class="block text-sm font-medium mb-1">소속 테넌트 선택</label>
<div class="flex gap-4 mb-3">
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="customer" checked />
<span>Customer (외부)</span>
</label>
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="family" />
<span>Hanmac Family (내부)</span>
</label>
<label class="flex items-center gap-1">
<input type="radio" name="tenant_type" value="edu" />
<span>egBIM-edu (교육용)</span>
</label>
</div>
<div id="importMsg" class="text-gray-500 text-sm mb-4"></div>
<div class="flex justify-end gap-2">
<button id="importCancel" class="px-4 py-1 bg-gray-400 text-white rounded">취소</button>
<button id="importRun" class="px-4 py-1 bg-blue-600 text-white rounded">실행</button>
</div>
</div>
</div>
<script type="module">
import { w2grid, w2utils } from 'https://cdn.jsdelivr.net/gh/vitmalina/w2ui@master/dist/w2ui.es6.min.js'
// ✅ Grid 생성
let grid = new w2grid({
name: 'descope_users',
box: '#grid',
show: {
toolbar: true,
footer: true,
toolbarSearch: true,
toolbarReload: true,
toolbarColumns: true,
lineNumbers: true
},
multiSearch: true,
reorderColumns: true,
searches: [
{ field: 'loginIds', label: '아이디', type: 'text' },
{ field: 'name', label: '이름', type: 'text' },
{ field: 'email', label: '이메일', type: 'text' },
{ field: 'phone', label: '연락처', type: 'text' },
{ field: 'createdTime', label: '가입일', type: 'date' },
{ field: 'customAttributes.position', label: '직위', type: 'text' },
{ field: 'customAttributes.familyCompany', label: '가족사', type: 'text' },
{ field: 'customAttributes.company', label: '회사명', type: 'text', operator: 'contains' },
{ field: 'customAttributes.serverLastLogin', label: 'EGBIM 로그인일', type: 'date' },
{ field: 'customAttributes.recentLoginCount1m', label: '최근 1개월 로그인 횟수', type: 'int' },
{ field: 'customAttributes.recentLoginDays1m', label: '최근 1개월 로그인 일수', type: 'int' },
{ field: 'customAttributes.team', label: '소속센터/부/실', type: 'text' },
{ field: 'customAttributes.egBimLExpiryDate', label: '라이선스 만료일', type: 'date' },
{ field: 'tenantText', label: '테넌트', type: 'list', options: { items: ['Hanmac Family', 'Customer, egBIM', 'egBIM-edu'] } },
{ field: 'customAttributes.familyUniqueKey', label: '사번', type: 'text' },
{ field: 'customAttributes.completeForm', label: '정보입력완료', type: 'list', options: { items: ['완료', '미완료'] } },
],
columns: [
{ field: 'loginIds', text: '아이디', size: '200px', searchable: true, sortable: true },
{ field: 'name', text: '이름', size: '90px', searchable: true, sortable: true },
{ field: 'email', text: '이메일', size: '200px', searchable: true, sortable: true },
{ field: 'phone', text: '연락처', size: '140px', searchable: true, sortable: true },
{
field: 'createdTime',
text: '가입일',
size: '170px',
sortable: true,
render: (rec) => {
const v = rec.createdTime
if (!v) return '-'
let ts = Number(v)
let date = null
// ✅ 숫자 형태일 경우
if (!isNaN(ts) && ts > 0) {
// 10자리면 초 단위, 13자리면 밀리초 단위
if (ts < 1e12) ts *= 1000
date = new Date(ts)
}
// ✅ 문자열일 경우 (ex: "2025-11-03T02:28:51Z", "2025-11-03 11:37:11")
else {
date = new Date(String(v).replace(' ', 'T'))
}
// ✅ Invalid Date 방지
if (isNaN(date.getTime())) return '-'
// ✅ 한국시간(KST)으로 변환 (Descope는 UTC 반환)
const local = new Date(date.getTime() + (9 * 60 * 60 * 1000))
const y = local.getFullYear()
const m = String(local.getMonth() + 1).padStart(2, '0')
const d = String(local.getDate()).padStart(2, '0')
const hh = String(local.getHours()).padStart(2, '0')
const mm = String(local.getMinutes()).padStart(2, '0')
const ss = String(local.getSeconds()).padStart(2, '0')
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
},
{ field: 'customAttributes.position', text: '직위', size: '80px', searchable: true, sortable: true },
{ field: 'customAttributes.familyCompany', text: '가족사', size: '80px', searchable: true, sortable: true },
{
field: 'customAttributes.company',
text: '회사명',
size: '200px',
sortable: true,
render: (record) => {
if (record?.w2ui?.summary) {
// ✅ summary row 전용 렌더링
return record?.customAttributes?.company || ''
}
return record?.customAttributes?.company || '-'
}
},
{
field: 'customAttributes.serverLastLogin',
text: '최종로그인시간',
size: '170px',
sortable: true,
render: (rec) => formatDateTimeLocal(rec?.customAttributes?.serverLastLogin)
},
{
field: 'customAttributes.recentLoginCount1m',
text: '최근 1개월 로그인 횟수',
size: '130px',
sortable: true,
render: (rec) => `${Number(rec?.customAttributes?.recentLoginCount1m || 0)}회`
},
{
field: 'customAttributes.recentLoginDays1m',
text: '최근 1개월 로그인 일수',
size: '130px',
sortable: true,
render: (rec) => `${Number(rec?.customAttributes?.recentLoginDays1m || 0)}일`
},
{ field: 'customAttributes.team', text: '소속센터/부/실', size: '150px', searchable: true, sortable: true },
{
field: 'customAttributes.egBimLExpiryDate',
text: 'egBIM 라이센스 만료일',
size: '170px',
sortable: true,
render: (rec) => formatDateTime(rec?.customAttributes?.egBimLExpiryDate)
},
{ field: 'tenantText', text: '테넌트', size: '130px', searchable: true, sortable: true },
{ field: 'customAttributes.familyUniqueKey', text: '사번', size: '80px', searchable: true, sortable: true },
{ field: 'customAttributes.completeForm', text: '정보입력완료', size: '130px', searchable: true, sortable: true },
]
});
// ✅ 회사 고유 개수 계산 함수
function countUniqueCompanies(records) {
const set = new Set()
records.forEach(r => {
const company = r?.customAttributes?.company || ''
if (company.trim() !== '') set.add(company.trim())
})
return set.size
}
// ✅ 데이터 로드
async function loadDescopeUsers() {
try {
grid.lock('데이터 불러오는 중...', true); // ✅ 수정
const params = [];
const start = $("#startDate").val();
const end = $("#endDate").val();
const mode = $("#mode").val();
const tenants = $("input[name='tenant']:checked").map(function(){ return this.value }).get();
if (start) params.push("start=" + encodeURIComponent(start));
if (end) params.push("end=" + encodeURIComponent(end));
if (mode) params.push("mode=" + encodeURIComponent(mode));
if (tenants.length) params.push("tenants=" + encodeURIComponent(tenants.join(",")));
const url = "/egbim/bbs/descope_user_list_w2.php" + (params.length ? "?" + params.join("&") : "");
const res = await fetch(url);
const data = await res.json();
if (data.status === "success" || data.status === "ok") {
grid.records = data.records.map((u, i) => ({ recid: i + 1, ...u }));
grid.total = data.total || grid.records.length;
const companyCount = countUniqueCompanies(grid.records);
grid.summary = [
{
recid: 'S-1',
name: '<span style="float:right;font-weight:bold;">총 회사 수</span>',
customAttributes: { company: `<b>${companyCount}</b> 개` }
}
];
grid.refresh();
} else {
console.error("❌ 서버 응답 오류:", data);
w2alert("데이터를 불러오는 중 오류가 발생했습니다.");
}
} catch (err) {
console.error("❌ 통신 오류:", err);
w2alert("서버와의 통신에 실패했습니다.");
} finally {
grid.unlock(); // ✅ 수정
}
}
// ✅ refresh 시 summary 자동 갱신
grid.on('refresh', () => {
if (!grid.records.length) return
const visible = grid.records.filter(r => !r.hidden)
const companyCount = countUniqueCompanies(visible)
grid.summary = [
{
recid: 'S-1',
name: '<span style="float:right;font-weight:bold;">총 회사 수</span>',
customAttributes: { company: `<b>${companyCount}</b> 개` }
}
]
})
// ✅ 초기 실행
$(function() {
flatpickr("#startDate", { dateFormat: "Y-m-d" });
flatpickr("#endDate", { dateFormat: "Y-m-d" });
// 최초 진입은 날짜 제한 없이 최종 로그인 순으로 조회
$("#mode").val("serverLogin");
$("#filterBtn").on("click", loadDescopeUsers);
$("#resetBtn").on("click", function(){
$("#startDate").val(""); $("#endDate").val("");
$("input[name='tenant']").prop("checked", false);
$("#mode").val("created");
loadDescopeUsers();
});
$("input[name='tenant']").on("change", loadDescopeUsers);
loadDescopeUsers();
});
// ✅ KST로 이미 저장된 날짜 포맷 함수 (UTC 변환 없음 - serverLastLogin, egBimLExpiryDate 전용)
function formatDateTimeLocal(value) {
if (!value || value === 'null' || value === 'undefined') return '-'
let date
if (/^\d+$/.test(value)) {
let ts = parseInt(value, 10)
if (ts < 1e12) ts *= 1000
date = new Date(ts)
} else {
const str = value.replace(' ', 'T')
date = new Date(str)
}
if (isNaN(date.getTime()) || date.getFullYear() < 2000) return '-'
const y = date.getFullYear()
const m = String(date.getMonth() + 1).padStart(2, '0')
const d = String(date.getDate()).padStart(2, '0')
const hh = String(date.getHours()).padStart(2, '0')
const mm = String(date.getMinutes()).padStart(2, '0')
const ss = String(date.getSeconds()).padStart(2, '0')
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
// ✅ 공통 날짜 포맷 함수 (UTC → KST 변환, Descope 전용)
function formatDateTime(value) {
if (!value || value === 'null' || value === 'undefined') return '-'
let date
// ✅ 숫자형 timestamp
if (/^\d+$/.test(value)) {
let ts = parseInt(value, 10)
if (ts < 1e12) ts *= 1000
date = new Date(ts)
} else {
const str = value.replace(' ', 'T')
date = new Date(str)
}
if (isNaN(date.getTime()) || date.getFullYear() < 2000) return '-'
// ✅ 한국시간(KST)으로 변환 (Descope는 UTC 반환)
const local = new Date(date.getTime() + (9 * 60 * 60 * 1000))
const y = local.getFullYear()
const m = String(local.getMonth() + 1).padStart(2, '0')
const d = String(local.getDate()).padStart(2, '0')
const hh = String(local.getHours()).padStart(2, '0')
const mm = String(local.getMinutes()).padStart(2, '0')
const ss = String(local.getSeconds()).padStart(2, '0')
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
// ✅ CSV 모달 동작
$(function(){
$("#btn-import-descope").on("click", () => {
$("#importModal").removeClass("hidden");
$("#importMsg").text("");
});
$("#importCancel, #importModal").on("click", (e) => {
if (e.target.id === "importCancel" || e.target.id === "importModal") {
$("#importModal").addClass("hidden");
}
});
$("#importRun").on("click", async () => {
const csvUrl = $("#csvUrl").val().trim();
const expiry = $("#expiry").val().trim();
const tenantType = $('input[name="tenant_type"]:checked').val();
if (!csvUrl) { $("#importMsg").text("❗ CSV URL을 입력하세요."); return; }
$("#importRun").prop("disabled", true).text("실행 중...");
$("#importMsg").html("<span class='text-blue-600'>처리 중입니다...</span>");
try {
const res = await fetch("/egbim/bbs/descope_import.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ csv_url: csvUrl, expiry: expiry, tenant_type: tenantType })
});
const data = await res.json();
if (data.status === "ok") {
let msg = `✅ 완료: 생성 ${data.created}, 갱신 ${data.updated}, 실패 ${data.failed}<br>`;
if (data.failed > 0 && data.errors && data.errors.length) {
msg += "<div class='mt-2 text-red-600 text-sm'>";
msg += "<b>중복 또는 오류 계정:</b><br>";
data.errors.forEach(err => {
let errorMsg = '알 수 없는 오류입니다';
if (err.error) {
try {
const parsed = JSON.parse(err.error.replace(/^create:\d+\s*/, ''));
const rawMsg = parsed.errorMessage || parsed.errorDescription || err.error;
// 🔥 영어 → 한글 변환
if (rawMsg.includes("existing user")) {
errorMsg = "이미 존재하는 계정입니다";
} else if (rawMsg.includes("Failed to create user")) {
errorMsg = "계정 생성에 실패했습니다";
} else if (rawMsg.includes("Invalid")) {
errorMsg = "잘못된 형식의 데이터입니다";
} else {
errorMsg = rawMsg; // 기타는 그대로
}
} catch (e) {
errorMsg = "계정 생성 중 오류가 발생했습니다";
}
}
msg += `• ${err.loginId || err.login_id} → ${errorMsg}<br>`;
});
msg += "</div>";
}
$("#importMsg").html(msg);
} else {
$("#importMsg").html(`❌ 실패: ${data.message}`);
}
} catch (err) {
$("#importMsg").html("❌ 통신 오류 발생");
} finally {
$("#importRun").prop("disabled", false).text("실행");
}
});
});
</script>
</body>
</html>
@@ -0,0 +1,93 @@
<?php
// header('Content-Type: application/json');
// $management_key = 'P2wON5fy1K6kyia269VpeIzYP8oP:K2ycqpjeh1voPBdxXxzB3ScZOQ6v9aiLmU2cIj70X1H8Kcoz0KWfCWmofUwAsAkJroXA8QC';
// $loginId = $_POST['loginId'] ?? '';
// $url = "https://api.descope.com/v2/mgmt/user/search";
// $payload = json_encode([
// "loginId" => $loginId,
// "limit" => 1
// ]);
// $headers = [
// "Authorization: Bearer $management_key",
// "Content-Type: application/json"
// ];
// $ch = curl_init($url);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
// curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// $response = curl_exec($ch);
// $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// curl_close($ch);
// if ($http_code === 200) {
// $res = json_decode($response, true);
// if (!empty($res['users'][0])) {
// // ✅ 먼저 $user에 복사
// $user = $res['users'][0];
// // ✅ 값이 없으면 테스트용 기본값 삽입
// $user['name'] = $user['name'] ?: '홍길동';
// $user['phone'] = $user['phone'] ?: '01012345678';
// $user['customAttributes']['company'] = $user['customAttributes']['company'] ?? '한맥ENG';
// $user['customAttributes']['team'] = $user['customAttributes']['team'] ?? '설계팀';
// $user['customAttributes']['employeeId'] = $user['customAttributes']['employeeId'] ?? 'HM2024';
// // ✅ 수정된 $user 사용
// echo json_encode(['status' => 'ok', 'user' => $user]);
// } else {
// echo json_encode(['status' => 'fail', 'message' => '사용자를 찾을 수 없음']);
// }
// } else {
// echo json_encode(['status' => 'fail', 'message' => 'Descope API 오류', 'code' => $http_code]);
// }
?>
<?php
header('Content-Type: application/json');
$management_key = 'P2wON5fy1K6kyia269VpeIzYP8oP:K32l5ORmzy32OvaaPvpdZsMY3JmKQb7a3vvrl10PgjlJUGk3K7EssMH3uW5VGQSbrgtEdPj';
$loginId = $_POST['loginId'] ?? '';
$url = "https://api.descope.com/v2/mgmt/user/search";
$payload = json_encode([
"loginId" => $loginId,
"limit" => 1
]);
$headers = [
"Authorization: Bearer $management_key",
"Content-Type: application/json"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code === 200) {
$res = json_decode($response, true);
if (!empty($res['users'][0])) {
$user = $res['users'][0];
// ✅ 실제 값이 있으면 그대로 사용, 없으면 빈 문자열
$user['name'] = $user['name'] ?? '';
$user['phone'] = $user['phone'] ?? '';
$user['customAttributes']['company'] = $user['customAttributes']['company'] ?? '';
$user['customAttributes']['team'] = $user['customAttributes']['team'] ?? '';
$user['customAttributes']['employeeId'] = $user['customAttributes']['employeeId'] ?? '';
echo json_encode(['status' => 'ok', 'user' => $user]);
} else {
echo json_encode(['status' => 'fail', 'message' => '사용자를 찾을 수 없음']);
}
} else {
echo json_encode(['status' => 'fail', 'message' => 'Descope API 오류', 'code' => $http_code]);
}
@@ -0,0 +1,88 @@
<?php
// descope_verify.php
// _GNUBOARD_ 등 시스템 상수 포함 필요
include_once('../../common.php');
// POST 데이터 받기
$otp_code = trim($_POST['otp_code'] ?? '');
$email = trim($_POST['email'] ?? '');
// $email = 'sdi9429@gmail.com'; // ★ 실제 인증번호 메일 받은 주소
// $otp_code = '378484';
if (strlen($otp_code) !== 6) {
echo json_encode(['status'=>'fail', 'message'=>'잘못된 인증번호']);
exit;
}
// 1. Descope API에 검증 요청 (curl 또는 file_get_contents)
$descope_project_id = "P2wON5fy1K6kyia269VpeIzYP8oP";
$descope_api_url = "https://api.descope.com/v1/auth/otp/verify/email"; // email 인증 기준
// $data = [
// 'loginId' => $email, // 이메일 아이디
// 'code' => $otp_code, // 입력받은 6자리 코드
// ];
// $headers = [
// 'Content-Type: application/json',
// 'Accept: application/json',
// "x-descope-project-id: $descope_project_id"
// ];
// $ch = curl_init();
// curl_setopt($ch, CURLOPT_URL, $descope_api_url);
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
// curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// $response = curl_exec($ch);
// $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// curl_close($ch);
// $res_data = json_decode($response, true);
// if ($http_code === 200 && isset($res_data['user'])) {
// // 인증 성공
// echo json_encode(['status'=>'ok']);
// } else {
// // 실패, 에러 메시지 출력
// $msg = $res_data['errorDescription'] ?? '인증 실패';
// echo json_encode(['status'=>'fail', 'message'=>$msg]);
// }
$data = [
'loginId' => $email,
'code' => $otp_code,
];
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $descope_project_id,
];
$ch = curl_init('https://api.descope.com/v1/auth/otp/verify/email');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$res_data = json_decode($response, true);
if ($http_code === 200 && isset($res_data['sessionJwt'])) {
// 인증 성공
echo json_encode([
'status'=>'ok',
'refreshJwt' => $res_data['refreshJwt'] ?? '',
]);
} else {
// 인증 실패
$msg = $res_data['errorDescription'] ?? '인증 실패';
echo json_encode(['status'=>'fail', 'message'=>$msg]);
}
exit;
?>
+204
View File
@@ -0,0 +1,204 @@
<?php
// // descope_verify.php
// // _GNUBOARD_ 등 시스템 상수 포함 필요
// include_once('../../common.php');
// // POST 데이터 받기
// $otp_code = trim($_POST['otp_code'] ?? '');
// $email = trim($_POST['email'] ?? '');
// // $email = 'sdi9429@gmail.com'; // ★ 실제 인증번호 메일 받은 주소
// // $otp_code = '378484';
// if (strlen($otp_code) !== 6) {
// echo json_encode(['status'=>'fail', 'message'=>'잘못된 인증번호']);
// exit;
// }
// // 1. Descope API에 검증 요청 (curl 또는 file_get_contents)
// $descope_project_id = "P2wON5fy1K6kyia269VpeIzYP8oP";
// $descope_api_url = "https://api.descope.com/v1/auth/otp/verify/email"; // email 인증 기준
// // $data = [
// // 'loginId' => $email, // 이메일 아이디
// // 'code' => $otp_code, // 입력받은 6자리 코드
// // ];
// // $headers = [
// // 'Content-Type: application/json',
// // 'Accept: application/json',
// // "x-descope-project-id: $descope_project_id"
// // ];
// // $ch = curl_init();
// // curl_setopt($ch, CURLOPT_URL, $descope_api_url);
// // curl_setopt($ch, CURLOPT_POST, true);
// // curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
// // curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// // $response = curl_exec($ch);
// // $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// // curl_close($ch);
// // $res_data = json_decode($response, true);
// // if ($http_code === 200 && isset($res_data['user'])) {
// // // 인증 성공
// // echo json_encode(['status'=>'ok']);
// // } else {
// // // 실패, 에러 메시지 출력
// // $msg = $res_data['errorDescription'] ?? '인증 실패';
// // echo json_encode(['status'=>'fail', 'message'=>$msg]);
// // }
// $data = [
// 'loginId' => $email,
// 'code' => $otp_code,
// ];
// $headers = [
// 'Content-Type: application/json',
// 'Authorization: Bearer ' . $descope_project_id,
// ];
// $ch = curl_init('https://api.descope.com/v1/auth/otp/verify/email');
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
// curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// $response = curl_exec($ch);
// $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// curl_close($ch);
// $res_data = json_decode($response, true);
// if ($http_code === 200 && isset($res_data['sessionJwt'])) {
// // 인증 성공
// echo json_encode([
// 'status'=>'ok',
// 'refreshJwt' => $res_data['refreshJwt'] ?? '',
// ]);
// } else {
// // 인증 실패
// $msg = $res_data['errorDescription'] ?? '인증 실패';
// echo json_encode(['status'=>'fail', 'message'=>$msg]);
// }
// exit;
?>
<?php
// descope_verify.php
header('Content-Type: application/json; charset=UTF-8');
$commonPath = dirname(__DIR__, 3) . '/common.php';
if (file_exists($commonPath)) {
include_once($commonPath);
}
// POST 데이터 받기
$otp_code = trim($_POST['otp_code'] ?? '');
$email = trim($_POST['email'] ?? '');
if (strlen($otp_code) !== 6 || !$email) {
echo json_encode(['status'=>'fail', 'message'=>'잘못된 입력']);
exit;
}
// Descope 설정
$projectId = 'P2wON5fy1K6kyia269VpeIzYP8oP';
$managementKey = 'K32l5ORmzy32OvaaPvpdZsMY3JmKQb7a3vvrl10PgjlJUGk3K7EssMH3uW5VGQSbrgtEdPj'; // baron Access Key
// 1. OTP 인증 요청
$data = [
'loginId' => $email,
'code' => $otp_code,
];
$headers = [
'Content-Type: application/json',
'Authorization: Bearer ' . $projectId,
];
$ch = curl_init('https://api.descope.com/v1/auth/otp/verify/email');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// 응답 파싱
$res_data = json_decode($response, true);
if ($http_code === 200 && isset($res_data['user'])) {
$user = $res_data['user'];
$userId = $user['userId'] ?? '';
$email = $user['email'] ?? '';
$refreshJwt = $res_data['refreshJwt'] ?? '';
// 도메인 분리
$domain = explode('@', $email)[1];
$internalDomains = [
"hanmaceng.co.kr",
"samaneng.com",
"jangheon.co.kr",
"hallasanup.com",
"pre-cast.co.kr",
"baroncs.co.kr"
];
// 테넌트 결정
if (in_array($domain, $internalDomains)) {
$tenantId = "T2wQcWCBhUfJgUWHWgNwLg4iUDVY"; // 내부
$isInternal = true;
} else {
$tenantId = "T2x4TDzxasp7auPCPcN8uOrxXchh"; // 외부
$isInternal = false;
}
// 2. 테넌트 연결 요청
$tenantPayload = [
"identifier" => $userId,
"tenantId" => $tenantId,
"roleNames" => ["Default User"]
];
$ch2 = curl_init('https://api.descope.com/v1/mgmt/user/update/tenant/add');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_POST, true);
curl_setopt($ch2, CURLOPT_POSTFIELDS, json_encode($tenantPayload));
curl_setopt($ch2, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$projectId}:{$managementKey}",
"Content-Type: application/json"
]);
$tenantRes = curl_exec($ch2);
$tenantHttpCode = curl_getinfo($ch2, CURLINFO_HTTP_CODE);
curl_close($ch2);
// if ($tenantHttpCode !== 200) {
// echo json_encode(['status'=>'fail', 'message'=>'테넌트 연결 실패', 'descope_response' => $tenantRes]);
// exit;
// }
// ✅ 중복 연결은 오류로 간주하지 않음
if ($tenantHttpCode !== 200 && !str_contains($tenantRes, 'Tenant already exists')) {
echo json_encode(['status'=>'fail', 'message'=>'테넌트 연결 실패', 'descope_response' => $tenantRes]);
exit;
}
// 성공 응답
echo json_encode([
'status' => 'ok',
'refreshJwt' => $refreshJwt,
'loginId' => $email,
'isInternal' => $isInternal
]);
} else {
$msg = $res_data['errorDescription'] ?? '인증 실패';
echo json_encode(['status'=>'fail', 'message'=>$msg]);
}
exit;
?>
@@ -0,0 +1,37 @@
<?php
// descope_verify_magiclink.php
header('Content-Type: application/json');
$api_key = "P2wON5fy1K6kyia269VpeIzYP8oP"; // 본인 Descope API Key로 교체
$token = $_POST['token'] ?? '';
if (!$token) exit(json_encode(['status'=>'fail', 'message'=>'토큰 없음']));
$url = "https://api.descope.com/v1/auth/magiclink/verify";
$data = [ "token" => $token ];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $api_key",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$resData = json_decode($response, true);
if ($code == 200 && !empty($resData['refreshJwt'])) {
echo json_encode([
'status' => 'ok',
'refreshJwt' => $resData['refreshJwt'],
'email' => $resData['user']['email'] ?? ($resData['user']['loginIds'][0] ?? '')
]);
} else {
$msg = $resData['errorDescription'] ?? '인증 실패';
echo json_encode(['status'=>'fail', 'message'=>$msg, 'raw'=>$resData]);
}
?>
@@ -0,0 +1,43 @@
<?php
header('Content-Type: application/json');
require_once './descope_config.php';
$email = trim($_POST['email'] ?? '');
$otp_code = trim($_POST['otp_code'] ?? '');
if (!$email || !$otp_code) {
echo json_encode(['status' => 'fail', 'message' => '이메일/OTP 없음']);
exit;
}
// Descope OTP 인증 (verify)
$url = 'https://api.descope.com/v1/auth/otp/verify/email';
$data = [
"loginId" => $email,
"code" => $otp_code
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer " . $DESCOPE_API_KEY,
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$resData = json_decode($response, true);
if ($code == 200 && isset($resData['refreshJwt'])) {
echo json_encode([
'status' => 'ok',
'refreshJwt' => $resData['refreshJwt'],
]);
} else {
$msg = $resData['errorDescription'] ?? 'OTP 인증 실패';
echo json_encode(['status' => 'fail', 'message' => $msg, 'raw' => $response]);
}
+671
View File
@@ -0,0 +1,671 @@
<?php include_once __DIR__ . '/asset_urls.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>도면관리</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css" />
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/floorplan.js"></script>
</head>
<body>
<!-- "js__"로 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- //모든 팝업페이지 경로 -->
<div class="container floorplan">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">도면관리</h2>
<span>대량의 설계도면의 효율적 관리</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>도면을 열지 않고도 도면을 쉽게 찾고 확인하며,<br> 쉽게 수정하고, 쉽게 출력하는 도면관리 기능 제공</span>
<p>도면안에 기입되는 공사명, 도면명, 도면번호 등의 도면정보를 통하여<br>
도면을 쉽게 찾고 쉽게 수정, 편리하게 인쇄하면서 <br class="brk">대량의 설계도면을 효율적으로 관리하는 기능을 제공합니다.</p>
</div>
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_elements_wrap">
<div class="dia_element dia_element01">
<i></i>
<span class="dia_tit">편리한<br><em>도면탐색 및 도면정보열람</em></span>
<div class="line"></div>
</div>
<div class="dia_element dia_element02">
<i></i>
<span class="dia_tit">도면정보<br><em>일괄수정</em></span>
<div class="line"></div>
</div>
<div class="dia_element dia_element03">
<i></i>
<span class="dia_tit">여러도면<br><em>일괄출력</em></span>
<div class="line"></div>
</div>
</div>
<div class="dia_circles_wrap">
<div class="circle_dash"></div>
<div class="circle_belt"></div>
<div class="circle_core">
<span>효율적인</span>
<span>도면관리</span>
</div>
<div class="circle_dots move">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
</div>
</section>
<section class="key find layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">도면탐색과<br> <em>도면정보열람</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class="on"><span><em>01</em>사용자 지정 폴더</span></li>
<li><span><em>02</em>도면정보 열람</span></li>
<li><span><em>03</em>도면 미리보기</span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div id="content1" class="find01">
<span class="sub_tit">사용자 지정폴더</span>
<div class="sub_text">
폴더 탐색에서 자주 사용하는 폴더를 드래그 앤 드랍하여 사용자 지정 폴더함에 추가하면,<br> 해당 폴더를 빠르게 찾아갈 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<object data="<?php echo egbim_img_url('find_img_01_01.svg'); ?>" alt="" class="apx"></object>
<img src="<?php echo egbim_img_url('find_img_01.png'); ?>" alt="">
</div>
<div class="text">
<div class="top">
자주 사용하는 폴더를<br>
<b>사용자 지정 폴더함에 추가</b>
</div>
<div class="line">
<img src="<?php echo egbim_img_url('ico_find_tri.svg'); ?>" alt="">
</div>
<div class="bottom">
<img src="<?php echo egbim_img_url('ico_find_01.svg'); ?>" alt="">
<div class="bottom_txt">
<b>폴더 탐색시간을 줄여</b><br>
효율적인 작업 가능
</div>
</div>
</div>
</div>
</div>
<div id="content2" class="find02">
<span class="sub_tit">도면정보 열람</span>
<div class="sub_text">
공사명,도면명, 도면번호 등의 원하는 도면정보를 불러와 확인 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('find_img_02_01.png'); ?>" alt="" class="apx">
<img src="<?php echo egbim_img_url('find_img_02.png'); ?>" alt="">
</div>
<div class="text">
<div class="top">
<b>내가 원하는 도면정보 확인</b>
</div>
<div class="line">
<img src="<?php echo egbim_img_url('ico_find_tri.svg'); ?>" alt="">
</div>
<div class="bottom">
<img src="<?php echo egbim_img_url('ico_find_02.svg'); ?>" alt="">
<div class="bottom_txt">
<b>도면 정보를</b><br>
<b>빠르게 확인하여</b><br><br class="brk">
정확성과 효율성 향상
</div>
</div>
</div>
</div>
</div>
<div id="content3" class="find03">
<span class="sub_tit">도면 미리보기</span>
<div class="sub_text">
듀얼 모드에서 도면 미리보기 창을 분리하여 사용할 수 있습니다. <br>
미리보기 창을 각각 다른 모니터에 배치하여 도면을 직접 열지 않고도 미리보기를 통해 편리하게 확인할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('find_img_03_02.png'); ?>" alt="" class="apx">
<div class="find_03_move">
<img src="<?php echo egbim_img_url('find_img_03_03.png'); ?>" alt="">
<img src="<?php echo egbim_img_url('find_img_03_01.png'); ?>" alt="" class="element">
<img src="<?php echo egbim_img_url('find_img_03.png'); ?>" alt="">
</div>
</div>
<div class="text">
<div class="top">
듀얼 모드로<br>
<b>도면 미리보기 창을 분리</b>
</div>
<div class="line">
<img src="<?php echo egbim_img_url('ico_find_tri.svg'); ?>" alt="">
</div>
<div class="bottom">
<img src="<?php echo egbim_img_url('ico_find_03.svg'); ?>" alt="">
<div class="bottom_txt">
<b>도면을 열지 않고</b><br>
편리한 도면 확인
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="key info layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">도면정보 선택<br> <em>및 정보수정</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class=" on"><span><em>01</em>도면정보 수정</span></li>
<li><span><em>02</em>열람하고자 하는 도면정보 선택 </span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div id="content4" class="info01">
<span class="sub_tit">도면정보 수정</span>
<div class="sub_text">
원하는 도면정보를 선택하여 여러도면을 일괄적으로 수정 할 수있으며, <br>
엑셀처럼 드래그방식으로 수정이 가능합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('info_img_01_01.svg'); ?>" alt="" class="apx">
<img src="<?php echo egbim_img_url('info_img_01.png'); ?>" alt="">
</div>
<div class="text">
<div class="top">
<b>엑셀 드래그 방식</b>으로<br>
<b>일괄 수정 가능</b>
</div>
<div class="line">
<img src="<?php echo egbim_img_url('ico_find_tri.svg'); ?>" alt="">
</div>
<div class="bottom">
<img src="<?php echo egbim_img_url('ico_info_01.svg'); ?>" alt="">
<div class="bottom_txt">
<b>단순반복 작업을 줄여</b><br>
정확하고 빠른 수정 가능
</div>
</div>
</div>
</div>
</div>
<div id="content5" class="info02">
<span class="sub_tit">열람하고자 하는 도면정보 선택</span>
<div class="sub_text">
표시하고자 하는 도면정보를 선택하여 도면목록에 추가 및 삭제 할 수 있으며, <br>
어떤 정보가 수정중인지 표시하여 알려줍니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('info_img_02_01.png'); ?>" alt="" class="apx">
<img src="<?php echo egbim_img_url('info_img_02.png'); ?>" alt="">
</div>
<div class="text">
<div class="top">
도면정보를 선택하여<br>
<b>도면목록 추가및 삭제</b>
</div>
<div class="line">
<img src="<?php echo egbim_img_url('ico_find_tri.svg'); ?>" alt="">
</div>
<div class="bottom">
<img src="<?php echo egbim_img_url('ico_info_02.svg'); ?>" alt="">
<div class="bottom_txt">
<b>유연한 도면관리로</b><br>
효율적인 작업 가능
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="key print layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">인쇄옵션 설정과<br> <em>일괄출력</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class="on"><span><em>01</em>인쇄 파일 선택 및 인쇄설정값 표시</span></li>
<li><span><em>02</em>출력옵션 설정 및 미리보기</span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div id="content6" class="print01">
<span class="sub_tit">인쇄 파일 선택 및 인쇄설정값 표시</span>
<div class="sub_text">
탐색창에서 선택한 폴더의 도면목록이 표시되며 출력도면을 선택 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('print_img_01.png'); ?>" alt="">
</div>
<div class="text">
<div class="top">
도면목록이 표시되어<br>
<b>다중선택및 인쇄설정값 확인</b>
</div>
<div class="line">
<img src="<?php echo egbim_img_url('ico_find_tri.svg'); ?>" alt="">
</div>
<div class="bottom">
<img src="<?php echo egbim_img_url('ico_print_01.svg'); ?>" alt="">
<div class="bottom_txt">
<b>도면을 한눈에 확인하고 </b><br><br class="brk">
다중출력 작업을 <br>
손쉽게 처리 가능
</div>
</div>
</div>
</div>
</div>
<div id="content7" class="print02">
<span class="sub_tit">출력옵션 설정 및 미리보기</span>
<div class="sub_text">
인쇄옵션을 개별 또는 일괄로 변경 가능하며 출력전 미리보기가 가능합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('print_img_02.png'); ?>" alt="">
</div>
<div class="text">
<div class="top">
인쇄옵션<br>
<b>개별 또는 일괄 변경</b> 및<br>
<b>출력 전 미리보기</b>
</div>
<div class="line">
<img src="<?php echo egbim_img_url('ico_find_tri.svg'); ?>" alt="">
</div>
<div class="bottom">
<img src="<?php echo egbim_img_url('ico_print_02.svg'); ?>" alt="">
<div class="bottom_txt">
<b>인쇄 옵션을 미리 확인하여</b><br><br class="brk">
출력 오류를 줄이고<br>
작업의 정확도 향상
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- footer -->
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
<!-- //footer -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
//console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time) => {
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
$(function(){
// footer family site toggle
$('.family_btn').click(function(e){
e.stopPropagation();
$('.family_list, .family_btn').toggleClass('family_on');
});
$(document).click(function(e){
if(!$(e.target).closest('.family_wrap').length){
$('.family_list, .family_btn').removeClass('family_on');
}
});
});
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//descope 로그인, 로그아웃 js
function updateHeaderMenu() {
var isLoggedIn = !!sessionStorage.getItem("sessionJwt");
// role 체크 예시 (로그인 시 저장해놓은 값)
var isAdmin = sessionStorage.getItem('userRole') === 'super';
if (isLoggedIn) {
$('.my_join2, .my_login2').show();
$('.my_join, .my_login').hide();
// 마이페이지/관리자 메뉴 동적 출력
if (isAdmin) {
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
} else {
$('#my_join2').html("<a href='javascript:mypage03();'>마이페이지</a>");
}
} else {
$('.my_join2, .my_login2').hide();
$('.my_join, .my_login').show();
$('#my_join2').html(""); // 혹시모를 내용 초기화
}
}
function descopeLogout() {
fetch('/egbim/skin/member/basic/descope_logout.php', {
method: 'POST',
credentials: 'include' // PHPSESSID 쿠키 전송
})
.then(res => {
if (!res.ok) throw new Error('서버 로그아웃 실패');
// 1) 로컬 저장소 정리
// sessionStorage.removeItem("refreshJwt");
// sessionStorage.removeItem("sessionJwt");
// sessionStorage.removeItem("userRole");
// sessionStorage.removeItem("userName");
// sessionStorage.removeItem("loginId");
sessionStorage.clear();
localStorage.clear();
// 2) UI 갱신
updateHeaderMenu();
// 3) 로그인 페이지로 이동
window.location.href = '/egbim/index.php';
})
.catch(err => {
console.error(err);
alert('로그아웃 중 오류가 발생했습니다.');
});
}
$(document).ready(function() {
// 기존에 있던 updateHeaderMenu() 호출 뒤에
$('#my_login2 a').off('click').on('click', function(e){
e.preventDefault();
descopeLogout();
});
});
$(document).ready(function() {
updateHeaderMenu();
// (필요하다면, 로그인 성공 후에도 항상 updateHeaderMenu(); 호출)
});
//descope login
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '/egbim/skin/member/basic/descope_login.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
dataType : "json",
success : function(res){
if(res.status === "ok") {
// 토큰 저장
// sessionStorage.setItem("refreshJwt", res.refreshJwt);
sessionStorage.setItem("sessionJwt", res.sessionJwt);
// ✅ 사용자 정보 저장
if (res.user) {
sessionStorage.setItem("loginId", res.user.loginIds?.[0] || '');
sessionStorage.setItem("userName", res.user.name || '');
sessionStorage.setItem("company", res.user.customAttributes?.company || '');
sessionStorage.setItem("familyCompany", res.user.customAttributes?.familyCompany || '');
sessionStorage.setItem("position", res.user.customAttributes?.position || '');
sessionStorage.setItem("team", res.user.customAttributes?.team || '');
sessionStorage.setItem("familyUniqueKey", res.user.customAttributes?.familyUniqueKey || '');
sessionStorage.setItem("phone", res.user.phone || '');
}
// ✅ 추가: 관리자 등 정보 저장
if(res.user && res.user.roleNames && res.user.roleNames[0])
sessionStorage.setItem("userRole", res.user.roleNames[0]);
else
sessionStorage.removeItem("userRole");
// ✅ 로그인 후 메뉴 갱신
updateHeaderMenu();
// UI 처리
$('.popup_wrap').hide();
$('body').css('overflow', '');
lenis.start();
// alert('로그인 하셨습니다.');
} else {
alert(res.message || "로그인 실패");
// 🔴 실패 횟수에 따라 안내 배너 교체
if (res.failCount && res.failCount >= 8) {
updateLoginBanner("fail");
}
}
},
error : function(err){
alert(err.statusText || "통신 오류");
}
});
});
// ✅ 배너 교체 함수
function updateLoginBanner(type = "default") {
const $banner = $('#login_notice_banner');
if (!$banner.length) return;
if (type === "default") {
$banner.css({ background: "#063e01ff", color: "#fff" });
$banner.find("strong").text("[로그인 시스템 변경 안내]");
$banner.find("p.left").html(`
더 나은 보안을 위해 2025년 8월 8일부터 로그인 시스템이 변경되었습니다.<br>
기존 회원 또한 신규 시스템에 맞춰 재가입을 진행해주시기 바랍니다.
`);
$banner.find("p:last").html(`※ 로그인 및 가입 관련 문의: <strong>010-8721-7453</strong>`);
}
if (type === "fail") {
$banner.css({ background: "#6a0202ff", color: "#faf6f6ff" });
$banner.find("strong").text("[로그인 시도 제한 안내]");
$banner.find("p.left").html(`
비밀번호 입력을 <strong>7회 이상 연속 실패</strong>하셨습니다.<br>
<strong>8번째 시도부터 3분 대기</strong>가 적용됩니다.<br>
10회 이상 실패 시 계정이 잠금 처리됩니다.
`);
$banner.find("p:last").text("");
}
}
//회원가입 약관동의
// $('#fregister button[type=submit]').click(function(e){
// e.preventDefault();
// let agree11 = $('#agree11').val();
// let agree21 = $('#agree21').val();
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : "POST",
// datatype : "json",
// contentType: 'application/json; charset=utf-8',
// data : {
// 'agree11' : agree11,
// 'agree21' : agree21
// },
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// },
// error : function(err){
// alert(err);
// }
// });
// });
// 이지빔 프로그램 회원가입 url 쿼리스트링 파싱 함수
function getQueryString(name) {
const intro = document.querySelector('.intro_wrap');
intro.style.display = "none";
const mainMask = document.querySelector('.main_mask');
mainMask.classList.add('skip');
// mainMask.style.aimation = 'none';
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
//이지빔 프로그램 비밀번호 재설정 url 쿼리스트링 파싱 함수
$(document).ready(function() {
const urlParams = new URLSearchParams(window.location.search);
const popup = urlParams.get('popup');
const token = urlParams.get('t');
if (popup === 'pwreset') {
// 팝업 전체 열기
$('#pop_search').show();
$('body').css('overflow', 'hidden');
// 내부 컨텐츠 모두 숨기기
$('#pop_search .popup_contents_wrap').hide();
if (token) {
// 토큰이 있으면 비밀번호 재설정 단계
if (!sessionStorage.getItem('pwreset_shown')) {
$('#password_reset').show();
sessionStorage.setItem('pwreset_shown', '1');
}
} else {
// 토큰이 없으면 아이디 입력 단계 (첫 번째 .popup_contents_wrap)
$('#pop_search .popup_contents_wrap').first().show();
}
}
// 닫기 버튼
$('#pop_search .btn_close').on('click', function() {
$('#pop_search').hide();
$('body').css('overflow', '');
});
});
</script>
@@ -0,0 +1,874 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>도면관리</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/floorplan.js"></script>
</head>
<body>
<!-- "js__" 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- //모든 팝업페이지 경로 -->
<div class="container floorplan">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">도면관리</h2>
<span>대량의 설계도면의 효율적 관리</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>도면을 열지 않고도 도면을 쉽게 찾고 확인하며,<br>
쉽게 수정하고, 쉽게 출력하는 도면관리 기능 제공</span>
<p>도면안에 기입되는 공사명, 도면명, 도면번호 등의 도면정보를 통하여<br>
도면을 쉽게 찾고 쉽게 수정, 편리하게 인쇄하면서 대량의 설계도면을 효율적으로 관리하는 기능을 제공합니다.</p>
</div>
<div class="condition">
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_element_top">
<div class="dia_element dia_element01">
<i></i>
<span class="dia_tit">편리한<br><em>도면탐색 및 도면정보열람</em></span>
<div class="line"></div>
</div>
</div>
<div class="dia_circles_wrap">
<div class="circle_dash"></div>
<div class="circle_belt"></div>
<div class="circle_core">
<span>효율적인</span>
<span>도면관리</span>
</div>
<div class="circle_dots move">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
<div class="dia_element_bottom">
<div class="dia_element dia_element02">
<i></i>
<span class="dia_tit">도면정보<br><em>일괄수정</em></span>
<div class="line"></div>
</div>
<div class="dia_element dia_element03">
<i></i>
<span class="dia_tit">여러도면<br><em>일괄출력</em></span>
<div class="line"></div>
</div>
</div>
</div>
</div>
</section>
<section class="key find layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">도면탐색 과<br><em>도면정보열람</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class="on"><span><em>01</em>사용자 지정폴더</span></li>
<li><span><em>02</em>도면정보 열람</span></li>
<li><span><em>03</em>도면 미리보기</span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div class="find01">
<span class="sub_tit">사용자 지정폴더</span>
<div class="sub_text">
폴더 탐색에서 자주 사용하는 폴더를 드래그 앤 드랍하여 사용자 지정 폴더함에 추가하면,<br> 해당 폴더를 빠르게 찾아갈 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/find_img_01_01.svg" alt="" class="apx">
<img src="../img/find_img_01.png" alt="">
</div>
<div class="text">
<div class="top">
자주 사용하는 폴더를<br>
<b>사용자 지정 폴더함에 추가</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_find_01.svg" alt="">
<div class="bottom_txt">
<b>폴더 탐색시간을 줄여</b><br>
효율적인 작업 가능
</div>
</div>
</div>
</div>
</div>
<div class="find02">
<span class="sub_tit">도면정보 열람</span>
<div class="sub_text">
공사명,도면명, 도면번호 등의 원하는 도면정보를 불러와 확인 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/find_img_02_01.png" alt="" class="apx">
<img src="../img/find_img_02.png" alt="">
</div>
<div class="text">
<div class="top">
<b>내가 원하는 도면정보 확인</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_find_02.svg" alt="">
<div class="bottom_txt">
<b>도면 정보</b><br>
<b>빠르게 확인하여</b><br>
정확성과 효율성 향상
</div>
</div>
</div>
</div>
</div>
<div class="find03">
<span class="sub_tit">도면 미리보기</span>
<div class="sub_text">
듀얼 모드에서 도면 미리보기 창을 분리하여 사용할 수 있습니다. <br>
미리보기 창을 각각 다른 모니터에 배치하여 도면을 직접 열지 않고도 미리보기를 통해 편리하게 확인할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/find_img_03_02.png" alt="" class="apx">
<div class="find_03_move">
<div><img src="../img/find_img_03.png" alt=""></div>
<div><img src="../img/find_img_03_01.png" alt="" class="element"></div>
<div><img src="../img/find_img_03_03.png" alt=""></div>
</div>
</div>
<div class="text">
<div class="top">
듀얼 모드로<br>
<b>도면 미리보기 창을 분리</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_find_03.svg" alt="">
<div class="bottom_txt">
<b>도면을 열지 않고</b><br>
편리한 도면 확인
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="key info layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">도면정보 선택<br><em>및 정보수정</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class=" on"><span><em>01</em>도면정보 수정</span></li>
<li><span><em>02</em>열람하고자 하는 도면정보 선택 </span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div class="info01">
<span class="sub_tit">도면정보 수정</span>
<div class="sub_text">
원하는 도면정보를 선택하여 여러도면을 일괄적으로 수정 할 수있으며, <br>
엑셀처럼 드래그방식으로 수정이 가능합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/info_img_01_01.svg" alt="" class="apx">
<img src="../img/info_img_01.png" alt="">
</div>
<div class="text">
<div class="top">
<b>엑셀 드래그 방식</b>으로<br>
<b>일괄 수정 가능</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_info_01.svg" alt="">
<div class="bottom_txt">
<b>단순반복 작업을 줄여</b><br>
정확하고 빠른 수정 가능
</div>
</div>
</div>
</div>
</div>
<div class="info02">
<span class="sub_tit">열람하고자 하는 도면정보 선택</span>
<div class="sub_text">
표시하고자 하는 도면정보를 선택하여 도면목록에 추가 및 삭제 할 수 있으며, <br>
어떤 정보가 수정중인지 표시하여 알려줍니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/info_img_02_01.png" alt="" class="apx">
<img src="../img/info_img_02.png" alt="">
</div>
<div class="text">
<div class="top">
도면정보를 선택하여<br>
<b>도면목록 추가및 삭제</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_info_02.svg" alt="">
<div class="bottom_txt">
<b>유연한 도면관리로</b><br>
효율적인 작업 가능
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="key print layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">인쇄옵션 설정과<br><em>일괄출력</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class="on"><span><em>01</em>인쇄 파일 선택 및 인쇄설정값 표시</span></li>
<li><span><em>02</em>출력옵션 설정 및 미리보기</span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div class="print01">
<span class="sub_tit">인쇄 파일 선택 및 인쇄설정값 표시</span>
<div class="sub_text">
탐색창에서 선택한 폴더의 도면목록이 표시되며 출력도면을 선택 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/print_img_01.png" alt="">
</div>
<div class="text">
<div class="top">
도면목록이 표시되어<br>
<b>다중선택및 인쇄설정값 확인</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_print_01.svg" alt="">
<div class="bottom_txt">
<b>도면을 한눈에 확인하고 </b><br>
다중출력 작업을 <br>
손쉽게 처리가능
</div>
</div>
</div>
</div>
</div>
<div class="print02">
<span class="sub_tit">출력옵션 설정 및 미리보기</span>
<div class="sub_text">
인쇄옵션을 개별 또는 일괄로 변경 가능 하며 출력전 미리보기가 가능합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/print_img_02.png" alt="">
</div>
<div class="text">
<div class="top">
인쇄옵션<br>
<b>개별 또는 일괄 변경</b> 및<br>
<b>출력 전 미리보기</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_print_02.svg" alt="">
<div class="bottom_txt">
<b>인쇄 옵션을 미리 확인하여</b><br>
출력 오류를 줄이고<br>
작업의 정확도 향상
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- footer -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //footer -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
//console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x == "tmp_1=John"){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
$('.btn_close').show();
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').hide();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
alert($('#update_mb_password_re').val());
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
alert('1');
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/floorplan.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
@@ -0,0 +1,875 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>도면관리</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/floorplan.js"></script>
</head>
<body>
<!-- "js__" 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- //모든 팝업페이지 경로 -->
<div class="container floorplan">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">도면관리</h2>
<span>대량의 설계도면의 효율적 관리</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>도면을 열지 않고도 도면을 쉽게 찾고 확인하며,<br> 쉽게 수정하고, 쉽게 출력하는 도면관리 기능 제공</span>
<p>도면안에 기입되는 공사명, 도면명, 도면번호 등의 도면정보를 통하여<br>
도면을 쉽게 찾고 쉽게 수정, 편리하게 인쇄하면서 <br class="brk">대량의 설계도면을 효율적으로 관리하는 기능을 제공합니다.</p>
</div>
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_elements_wrap">
<div class="dia_element dia_element01">
<i></i>
<span class="dia_tit">편리한<br><em>도면탐색 및 도면정보열람</em></span>
<div class="line"></div>
</div>
<div class="dia_element dia_element02">
<i></i>
<span class="dia_tit">도면정보<br><em>일괄수정</em></span>
<div class="line"></div>
</div>
<div class="dia_element dia_element03">
<i></i>
<span class="dia_tit">여러도면<br><em>일괄출력</em></span>
<div class="line"></div>
</div>
</div>
<div class="dia_circles_wrap">
<div class="circle_dash"></div>
<div class="circle_belt"></div>
<div class="circle_core">
<span>효율적인</span>
<span>도면관리</span>
</div>
<div class="circle_dots move">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
</div>
</section>
<section class="key find layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">도면탐색과<br> <em>도면정보열람</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class="on"><span><em>01</em>사용자 지정 폴더</span></li>
<li><span><em>02</em>도면정보 열람</span></li>
<li><span><em>03</em>도면 미리보기</span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div class="find01">
<span class="sub_tit">사용자 지정폴더</span>
<div class="sub_text">
폴더 탐색에서 자주 사용하는 폴더를 드래그 앤 드랍하여 사용자 지정 폴더함에 추가하면,<br> 해당 폴더를 빠르게 찾아갈 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<object data="../img/find_img_01_01.svg" alt="" class="apx"></object>
<img src="../img/find_img_01.png" alt="">
</div>
<div class="text">
<div class="top">
자주 사용하는 폴더를<br>
<b>사용자 지정 폴더함에 추가</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_find_01.svg" alt="">
<div class="bottom_txt">
<b>폴더 탐색시간을 줄여</b><br>
효율적인 작업 가능
</div>
</div>
</div>
</div>
</div>
<div class="find02">
<span class="sub_tit">도면정보 열람</span>
<div class="sub_text">
공사명,도면명, 도면번호 등의 원하는 도면정보를 불러와 확인 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/find_img_02_01.png" alt="" class="apx">
<img src="../img/find_img_02.png" alt="">
</div>
<div class="text">
<div class="top">
<b>내가 원하는 도면정보 확인</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_find_02.svg" alt="">
<div class="bottom_txt">
<b>도면 정보를</b><br>
<b>빠르게 확인하여</b><br><br class="brk">
정확성과 효율성 향상
</div>
</div>
</div>
</div>
</div>
<div class="find03">
<span class="sub_tit">도면 미리보기</span>
<div class="sub_text">
듀얼 모드에서 도면 미리보기 창을 분리하여 사용할 수 있습니다. <br>
미리보기 창을 각각 다른 모니터에 배치하여 도면을 직접 열지 않고도 미리보기를 통해 편리하게 확인할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/find_img_03_02.png" alt="" class="apx">
<div class="find_03_move">
<img src="../img/find_img_03_03.png" alt="">
<img src="../img/find_img_03_01.png" alt="" class="element">
<img src="../img/find_img_03.png" alt="">
</div>
</div>
<div class="text">
<div class="top">
듀얼 모드로<br>
<b>도면 미리보기 창을 분리</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_find_03.svg" alt="">
<div class="bottom_txt">
<b>도면을 열지 않고</b><br>
편리한 도면 확인
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="key info layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">도면정보 선택<br> <em>및 정보수정</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class=" on"><span><em>01</em>도면정보 수정</span></li>
<li><span><em>02</em>열람하고자 하는 도면정보 선택 </span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div class="info01">
<span class="sub_tit">도면정보 수정</span>
<div class="sub_text">
원하는 도면정보를 선택하여 여러도면을 일괄적으로 수정 할 수있으며, <br>
엑셀처럼 드래그방식으로 수정이 가능합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/info_img_01_01.svg" alt="" class="apx">
<img src="../img/info_img_01.png" alt="">
</div>
<div class="text">
<div class="top">
<b>엑셀 드래그 방식</b>으로<br>
<b>일괄 수정 가능</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_info_01.svg" alt="">
<div class="bottom_txt">
<b>단순반복 작업을 줄여</b><br>
정확하고 빠른 수정 가능
</div>
</div>
</div>
</div>
</div>
<div class="info02">
<span class="sub_tit">열람하고자 하는 도면정보 선택</span>
<div class="sub_text">
표시하고자 하는 도면정보를 선택하여 도면목록에 추가 및 삭제 할 수 있으며, <br>
어떤 정보가 수정중인지 표시하여 알려줍니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/info_img_02_01.png" alt="" class="apx">
<img src="../img/info_img_02.png" alt="">
</div>
<div class="text">
<div class="top">
도면정보를 선택하여<br>
<b>도면목록 추가및 삭제</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_info_02.svg" alt="">
<div class="bottom_txt">
<b>유연한 도면관리로</b><br>
효율적인 작업 가능
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="key print layout_fix_left">
<div class="left">
<div class="mid_tit">
<span data-aos="fade-right" data-aos-duration="600">인쇄옵션 설정과<br> <em>일괄출력</em></span>
</div>
<ul data-aos="fade-right" data-aos-duration="1000" data-aos-delay="300" class="js__fixLeft_tit">
<li class="on"><span><em>01</em>인쇄 파일 선택 및 인쇄설정값 표시</span></li>
<li><span><em>02</em>출력옵션 설정 및 미리보기</span></li>
</ul>
</div>
<div class="right js__fixLeft_secs">
<div class="print01">
<span class="sub_tit">인쇄 파일 선택 및 인쇄설정값 표시</span>
<div class="sub_text">
탐색창에서 선택한 폴더의 도면목록이 표시되며 출력도면을 선택 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/print_img_01.png" alt="">
</div>
<div class="text">
<div class="top">
도면목록이 표시되어<br>
<b>다중선택및 인쇄설정값 확인</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_print_01.svg" alt="">
<div class="bottom_txt">
<b>도면을 한눈에 확인하고 </b><br><br class="brk">
다중출력 작업을 <br>
손쉽게 처리 가능
</div>
</div>
</div>
</div>
</div>
<div class="print02">
<span class="sub_tit">출력옵션 설정 및 미리보기</span>
<div class="sub_text">
인쇄옵션을 개별 또는 일괄로 변경 가능하며 출력전 미리보기가 가능합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/print_img_02.png" alt="">
</div>
<div class="text">
<div class="top">
인쇄옵션<br>
<b>개별 또는 일괄 변경</b> 및<br>
<b>출력 전 미리보기</b>
</div>
<div class="line">
<img src="../img/ico_find_tri.svg" alt="">
</div>
<div class="bottom">
<img src="../img/ico_print_02.svg" alt="">
<div class="bottom_txt">
<b>인쇄 옵션을 미리 확인하여</b><br><br class="brk">
출력 오류를 줄이고<br>
작업의 정확도 향상
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- footer -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //footer -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
//console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
// $('.btn_close').hide();
// $('#pop_login').hide();
// ------유나 추가
$('.popup_wrap').hide();
$('body').css('overflow', ''); // 기본 스크롤 상태로 복귀
lenis.start();
console.log('로그인 완료 및 lenis 재시작/유나 추가')
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
$('.btn_close').show();
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
// $('.btn_close').hide();
// $('#pop_login').hide();
// $('#pop_agreement').hide();
// $('#pop_join').hide();
// $('#pop_mypage01').hide();
// $('#pop_search').hide();
// $('#pop_mypage02').hide();
// $('#pop_mypage03').hide();
// $('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
// ------유나 추가
$('.popup_wrap').hide();
$('body').css('overflow', ''); // 기본 스크롤 상태로 복귀
lenis.start();
console.log('로그인 완료 및 lenis 재시작/유나 추가')
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
alert($('#update_mb_password_re').val());
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
alert('1');
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/floorplan.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
+505
View File
@@ -0,0 +1,505 @@
<?php include_once __DIR__ . '/asset_urls.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for BIM</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css" />
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/forbim.js"></script>
</head>
<body>
<!-- "js__"로 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 컨텐츠 시작 -->
<div class="container forbim">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">for BIM</h2>
<span>디지털전환시대, 도면과 BIM모델을 동시에 본다</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>
더블클릭 한번으로<br>
도면과 함께 3D BIM모델을 볼 수 있습니다
</span>
<p>EG-BIM은 도면만으로 확인하기 어려운 많은 설계정보를 <br>
3D Viewer 를 통하여 BIM모델과 함께 쉽게 확인할 수 있는 기능을 제공합니다.</p>
</div>
<div class="visual" data-aos="fade-up" data-aos-duration="1000">
<img src="<?php echo egbim_img_url('forbim_visaul.png'); ?>" alt="">
</div>
</section>
<section class="theorys js__dark full_screen">
<span class="mid_tit" data-aos="fade-down" data-aos-duration="1000">
“ <b class="gr_txt">BIM모델 정보</b>와 <b class="og_txt">도면</b>의<br class="brk"> CROSS CHECK ”
</span>
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_elements_wrap">
<div class="dia_element">
<ul class="dia_text">
<li>위치정보</li>
<li>형상정보</li>
<li>수량정보</li>
</ul>
<div class="line"></div>
</div>
<div class="dia_element">
<ul class="dia_text">
<li>종평면도</li>
<li>일반도</li>
<li>상세도</li>
</ul>
<div class="line"></div>
</div>
</div>
<div class="dia_circles_wrap">
<div class="circle_bim">
<div class="circle_belt"></div>
<div class="circle_core">
<span>BIM 모델</span>
<i></i>
</div>
<div class="circle_dots move">
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
</div>
</div>
<div class="circle_floorplan">
<div class="circle_belt"></div>
<div class="circle_core">
<span>도면</span>
<i></i>
</div>
<div class="circle_dots move">
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
</div>
</div>
</div>
</div>
</section>
<section class="layout_fix_left process">
<div class="left" data-aos="fade-right" data-aos-duration="1000">
<div class="bg js__fixLeft_bg on"></div>
<div class="bg js__fixLeft_bg"></div>
<span class="mid_tit js__fixLeft_tit on">
<font class="num">01. </font>도면과 BIM<br> <em>동시보기</em>
</span>
<span class="mid_tit js__fixLeft_tit">
<font class="num">02. </font><em>BIM모델<br> </em>상세보기</em>
</span>
</div>
<div class="right js__fixLeft_secs">
<span class="mid_tit m" style="display:none;">
<font class="num">01. </font>도면과 BIM 동시보기
</span>
<div id="content1" class="link">
<span class="sub_tit">
<img src="<?php echo egbim_img_url('ico_forbim_link.svg'); ?>" alt="">
도면과 BIM모델의 정보연동
</span>
<div class="sub_text">
<b>도면과 BIM모델간의 정보연동</b>으로 <b>선택부재가 실시간 표시</b>되어 도면과 BIM모델을 동시에 보면서 부재의 위치 및 형상정보 등의 속성정보를 확인 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="fig01"><span>도면</span></div>
<div class="fig02"><span>BIM 모델</span></div>
<div class="fig03"><span>속성정보</span></div>
<div class="fig04"><span>선택부재 실시간 표시</span></div>
</div>
</div>
<span class="mid_tit m" style="display:none;">
<font class="num">02. </font>BIM모델 상세보기
</span>
<div id="content2" class="info">
<span class="sub_tit">
<img src="<?php echo egbim_img_url('ico_forbim_check.svg'); ?>" alt="">
BIM모델의 속성정보 및 형상 확인
</span>
<div class="sub_text">
<span>
3D Viewer의 다양한 시각적인 기능을 통해 <b>모델의 형상과 각 부재의 간섭관계 등을 상세하게 확인</b> 할 수 있습니다.
</span>
</div>
<div class="sub_figs">
<div><span>부재별 속성정보 표시, 부재별 레이어 On/Off, Clipping, 투명도 적용, 스케일 조정 등</span></div>
</div>
</div>
</div>
</section>
</div>
<!-- FOOTER -->
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time) => {
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
$(function(){
// footer family site toggle
$('.family_btn').click(function(e){
e.stopPropagation();
$('.family_list, .family_btn').toggleClass('family_on');
});
$(document).click(function(e){
if(!$(e.target).closest('.family_wrap').length){
$('.family_list, .family_btn').removeClass('family_on');
}
});
});
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//descope 로그인, 로그아웃 js
function updateHeaderMenu() {
var isLoggedIn = !!sessionStorage.getItem("sessionJwt");
// role 체크 예시 (로그인 시 저장해놓은 값)
var isAdmin = sessionStorage.getItem('userRole') === 'super';
if (isLoggedIn) {
$('.my_join2, .my_login2').show();
$('.my_join, .my_login').hide();
// 마이페이지/관리자 메뉴 동적 출력
if (isAdmin) {
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
} else {
$('#my_join2').html("<a href='javascript:mypage03();'>마이페이지</a>");
}
} else {
$('.my_join2, .my_login2').hide();
$('.my_join, .my_login').show();
$('#my_join2').html(""); // 혹시모를 내용 초기화
}
}
function descopeLogout() {
fetch('/egbim/skin/member/basic/descope_logout.php', {
method: 'POST',
credentials: 'include' // PHPSESSID 쿠키 전송
})
.then(res => {
if (!res.ok) throw new Error('서버 로그아웃 실패');
// 1) 로컬 저장소 정리
// sessionStorage.removeItem("refreshJwt");
// sessionStorage.removeItem("sessionJwt");
// sessionStorage.removeItem("userRole");
// sessionStorage.removeItem("userName");
// sessionStorage.removeItem("loginId");
sessionStorage.clear();
localStorage.clear();
// 2) UI 갱신
updateHeaderMenu();
// 3) 로그인 페이지로 이동
window.location.href = '/egbim/index.php';
})
.catch(err => {
console.error(err);
alert('로그아웃 중 오류가 발생했습니다.');
});
}
$(document).ready(function() {
// 기존에 있던 updateHeaderMenu() 호출 뒤에
$('#my_login2 a').off('click').on('click', function(e){
e.preventDefault();
descopeLogout();
});
});
$(document).ready(function() {
updateHeaderMenu();
// (필요하다면, 로그인 성공 후에도 항상 updateHeaderMenu(); 호출)
});
//descope login
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '/egbim/skin/member/basic/descope_login.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
dataType : "json",
success : function(res){
if(res.status === "ok") {
// 토큰 저장
// sessionStorage.setItem("refreshJwt", res.refreshJwt);
sessionStorage.setItem("sessionJwt", res.sessionJwt);
// ✅ 사용자 정보 저장
if (res.user) {
sessionStorage.setItem("loginId", res.user.loginIds?.[0] || '');
sessionStorage.setItem("userName", res.user.name || '');
sessionStorage.setItem("company", res.user.customAttributes?.company || '');
sessionStorage.setItem("familyCompany", res.user.customAttributes?.familyCompany || '');
sessionStorage.setItem("position", res.user.customAttributes?.position || '');
sessionStorage.setItem("team", res.user.customAttributes?.team || '');
sessionStorage.setItem("familyUniqueKey", res.user.customAttributes?.familyUniqueKey || '');
sessionStorage.setItem("phone", res.user.phone || '');
}
// ✅ 추가: 관리자 등 정보 저장
if(res.user && res.user.roleNames && res.user.roleNames[0])
sessionStorage.setItem("userRole", res.user.roleNames[0]);
else
sessionStorage.removeItem("userRole");
// ✅ 로그인 후 메뉴 갱신
updateHeaderMenu();
// UI 처리
$('.popup_wrap').hide();
$('body').css('overflow', '');
lenis.start();
// alert('로그인 하셨습니다.');
} else {
alert(res.message || "로그인 실패");
// 🔴 실패 횟수에 따라 안내 배너 교체
if (res.failCount && res.failCount >= 8) {
updateLoginBanner("fail");
}
}
},
error : function(err){
alert(err.statusText || "통신 오류");
}
});
});
// ✅ 배너 교체 함수
function updateLoginBanner(type = "default") {
const $banner = $('#login_notice_banner');
if (!$banner.length) return;
if (type === "default") {
$banner.css({ background: "#063e01ff", color: "#fff" });
$banner.find("strong").text("[로그인 시스템 변경 안내]");
$banner.find("p.left").html(`
더 나은 보안을 위해 2025년 8월 8일부터 로그인 시스템이 변경되었습니다.<br>
기존 회원 또한 신규 시스템에 맞춰 재가입을 진행해주시기 바랍니다.
`);
$banner.find("p:last").html(`※ 로그인 및 가입 관련 문의: <strong>010-8721-7453</strong>`);
}
if (type === "fail") {
$banner.css({ background: "#6a0202ff", color: "#faf6f6ff" });
$banner.find("strong").text("[로그인 시도 제한 안내]");
$banner.find("p.left").html(`
비밀번호 입력을 <strong>7회 이상 연속 실패</strong>하셨습니다.<br>
<strong>8번째 시도부터 3분 대기</strong>가 적용됩니다.<br>
10회 이상 실패 시 계정이 잠금 처리됩니다.
`);
$banner.find("p:last").text("");
}
}
//회원가입 약관동의
// $('#fregister button[type=submit]').click(function(e){
// e.preventDefault();
// let agree11 = $('#agree11').val();
// let agree21 = $('#agree21').val();
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : "POST",
// datatype : "json",
// contentType: 'application/json; charset=utf-8',
// data : {
// 'agree11' : agree11,
// 'agree21' : agree21
// },
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// },
// error : function(err){
// alert(err);
// }
// });
// });
// 이지빔 프로그램 회원가입 url 쿼리스트링 파싱 함수
function getQueryString(name) {
const intro = document.querySelector('.intro_wrap');
const mainMask = document.querySelector('.main_mask');
if (intro) {
intro.style.display = "none";
}
if (mainMask) {
mainMask.classList.add('skip');
}
// mainMask.style.aimation = 'none';
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
//이지빔 프로그램 비밀번호 재설정 url 쿼리스트링 파싱 함수
$(document).ready(function() {
const urlParams = new URLSearchParams(window.location.search);
const popup = urlParams.get('popup');
const token = urlParams.get('t');
if (popup === 'pwreset') {
// 팝업 전체 열기
$('#pop_search').show();
$('body').css('overflow', 'hidden');
// 내부 컨텐츠 모두 숨기기
$('#pop_search .popup_contents_wrap').hide();
if (token) {
// 토큰이 있으면 비밀번호 재설정 단계
if (!sessionStorage.getItem('pwreset_shown')) {
$('#password_reset').show();
sessionStorage.setItem('pwreset_shown', '1');
}
} else {
// 토큰이 없으면 아이디 입력 단계 (첫 번째 .popup_contents_wrap)
$('#pop_search .popup_contents_wrap').first().show();
}
}
// 닫기 버튼
$('#pop_search .btn_close').on('click', function() {
$('#pop_search').hide();
$('body').css('overflow', '');
});
});
</script>
@@ -0,0 +1,677 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for BIM</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/forbim.js"></script>
</head>
<body>
<!-- "js__" 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 컨텐츠 시작 -->
<div class="container forbim">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">for BIM</h2>
<span>디지털전환시대, 도면과 BIM모델을 동시에 본다</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>
더블클릭 한번으로<br>
도면과 함께 3D BIM모델을 볼 수 있습니다
</span>
<p>EG-BIM은 도면만으로 확인하기 어려운 많은 설계정보를 <br>
3D Viewer 를 통하여 BIM모델과 함께 쉽게 확인할 수 있는 기능을 제공합니다.</p>
</div>
<div class="visual" data-aos="fade-up" data-aos-duration="1000">
<img src="../img/forbim_visaul.png" alt="">
</div>
</section>
<section class="theorys js__dark">
<span class="mid_tit" data-aos="fade-down" data-aos-duration="1000">
“ <b class="gr_txt">BIM모델 정보</b>와 <b class="og_txt">도면</b>의 CROSS CHECK ”
</span>
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_element">
<ul class="dia_text">
<li>위치정보</li>
<li>형상정보</li>
<li>수량정보</li>
</ul>
<div class="line"></div>
</div>
<div class="dia_circles_wrap">
<div class="circle_bim">
<div class="circle_belt"></div>
<div class="circle_core">
<span>BIM 모델</span>
<i></i>
</div>
<div class="circle_dots move">
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
</div>
</div>
<div class="circle_floorplan">
<div class="circle_belt"></div>
<div class="circle_core">
<span>도면</span>
<i></i>
</div>
<div class="circle_dots move">
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
</div>
</div>
</div>
<div class="dia_element">
<ul class="dia_text">
<li>종평면도</li>
<li>일반도</li>
<li>상세도</li>
</ul>
<div class="line"></div>
</div>
</div>
</section>
<section class="layout_fix_left process">
<div class="left" data-aos="fade-right" data-aos-duration="1000">
<div class="bg js__fixLeft_bg on"></div>
<div class="bg js__fixLeft_bg"></div>
<span class="mid_tit js__fixLeft_tit on"><font class="num">01. </font>도면과 BIM<br><em>동시보기</em>
</span>
<span class="mid_tit js__fixLeft_tit"><font class="num">02. </font><em>BIM모델<br></em> 상세보기</em></span>
</div>
<div class="right js__fixLeft_secs">
<div>
<span class="sub_tit">
<img src="../img/ico_forbim_link.svg" alt="">
도면과 BIM모델의 정보연동
</span>
<div class="sub_text">
<b>도면과 BIM모델간의 정보연동</b>으로 <b>선택부재가 실시간 표시</b>되어 도면과 BIM모델을 동시에 보면서 부재의 위치 및 형상정보 등의 속정정보를 확인 할 수 있습니다.
</div>
<div class="sub_figs">
<img src="../img/forbim_process_01.png">
</div>
</div>
<div>
<span class="sub_tit">
<img src="../img/ico_forbim_check.svg" alt="">
BIM모델의 속성정보 및 형상 확인
</span>
<div class="sub_text">
<span>
3D Viewer의 다양한 시각적인 기능을 통해 <b>모델의 형상과 각 부재의 간섭관계 등을 상세하게 확인</b> 할 수 있습니다.
</span>
</div>
<div class="sub_figs">
<img src="../img/forbim_process_02.png">
</div>
</div>
</div>
</section>
</div>
<!-- FOOTER -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x == "tmp_1=John"){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').hide();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/forbim.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
@@ -0,0 +1,693 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for BIM</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/forbim.js"></script>
</head>
<body>
<!-- "js__" 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 컨텐츠 시작 -->
<div class="container forbim">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">for BIM</h2>
<span>디지털전환시대, 도면과 BIM모델을 동시에 본다</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>
더블클릭 한번으로<br>
도면과 함께 3D BIM모델을 볼 수 있습니다
</span>
<p>EG-BIM은 도면만으로 확인하기 어려운 많은 설계정보를 <br>
3D Viewer 를 통하여 BIM모델과 함께 쉽게 확인할 수 있는 기능을 제공합니다.</p>
</div>
<div class="visual" data-aos="fade-up" data-aos-duration="1000">
<img src="../img/forbim_visaul.png" alt="">
</div>
</section>
<section class="theorys js__dark">
<span class="mid_tit" data-aos="fade-down" data-aos-duration="1000">
“ <b class="gr_txt">BIM모델 정보</b>와 <b class="og_txt">도면</b>의<br class="brk"> CROSS CHECK ”
</span>
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_elements_wrap">
<div class="dia_element">
<ul class="dia_text">
<li>위치정보</li>
<li>형상정보</li>
<li>수량정보</li>
</ul>
<div class="line"></div>
</div>
<div class="dia_element">
<ul class="dia_text">
<li>종평면도</li>
<li>일반도</li>
<li>상세도</li>
</ul>
<div class="line"></div>
</div>
</div>
<div class="dia_circles_wrap">
<div class="circle_bim">
<div class="circle_belt"></div>
<div class="circle_core">
<span>BIM 모델</span>
<i></i>
</div>
<div class="circle_dots move">
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
</div>
</div>
<div class="circle_floorplan">
<div class="circle_belt"></div>
<div class="circle_core">
<span>도면</span>
<i></i>
</div>
<div class="circle_dots move">
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
</div>
</div>
</div>
</div>
</section>
<section class="layout_fix_left process">
<div class="left" data-aos="fade-right" data-aos-duration="1000">
<div class="bg js__fixLeft_bg on"></div>
<div class="bg js__fixLeft_bg"></div>
<span class="mid_tit js__fixLeft_tit on"><font class="num">01. </font>도면과 BIM<br> <em>동시보기</em></span>
<span class="mid_tit js__fixLeft_tit"><font class="num">02. </font><em>BIM모델<br> </em>상세보기</em></span>
</div>
<div class="right js__fixLeft_secs">
<span class="mid_tit m" style="display:none;"><font class="num">01. </font>도면과 BIM 동시보기</span>
<div class="link">
<span class="sub_tit">
<img src="../img/ico_forbim_link.svg" alt="">
도면과 BIM모델의 정보연동
</span>
<div class="sub_text">
<b>도면과 BIM모델간의 정보연동</b>으로 <b>선택부재가 실시간 표시</b>되어 도면과 BIM모델을 동시에 보면서 부재의 위치 및 형상정보 등의 속성정보를 확인 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="fig01"><span>도면</span></div>
<div class="fig02"><span>BIM 모델</span></div>
<div class="fig03"><span>속성정보</span></div>
<div class="fig04"><span>선택부재 실시간 표시</span></div>
</div>
</div>
<span class="mid_tit m" style="display:none;"><font class="num">02. </font>BIM모델 상세보기</span>
<div class="info">
<span class="sub_tit">
<img src="../img/ico_forbim_check.svg" alt="">
BIM모델의 속성정보 및 형상 확인
</span>
<div class="sub_text">
<span>
3D Viewer의 다양한 시각적인 기능을 통해 <b>모델의 형상과 각 부재의 간섭관계 등을 상세하게 확인</b> 할 수 있습니다.
</span>
</div>
<div class="sub_figs">
<div><span>부재별 속성정보 표시, 부재별 레이어 On/Off, Clipping, 투명도 적용, 스케일 조정 등</span></div>
</div>
</div>
</div>
</section>
</div>
<!-- FOOTER -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
// $('.btn_close').hide();
// $('#pop_login').hide();
// ------유나 추가
$('.popup_wrap').hide();
$('body').css('overflow', ''); // 기본 스크롤 상태로 복귀
lenis.start();
console.log('로그인 완료 및 lenis 재시작/유나 추가')
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
// $('.btn_close').hide();
// $('#pop_login').hide();
// $('#pop_agreement').hide();
// $('#pop_join').hide();
// $('#pop_mypage01').hide();
// $('#pop_search').hide();
// $('#pop_mypage02').hide();
// $('#pop_mypage03').hide();
// $('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
// ------유나 추가
$('.popup_wrap').hide();
$('body').css('overflow', ''); // 기본 스크롤 상태로 복귀
lenis.start();
console.log('로그인 완료 및 lenis 재시작/유나 추가')
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/forbim.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
+103
View File
@@ -0,0 +1,103 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 폼메일 시작 { -->
<div id="formmail" class="new_win">
<h1 id="win_title"><?php echo $name ?>님께 메일보내기</h1>
<form name="fformmail" action="./formmail_send.php" onsubmit="return fformmail_submit(this);" method="post" enctype="multipart/form-data" style="margin:0px;">
<input type="hidden" name="to" value="<?php echo $email ?>">
<input type="hidden" name="attach" value="2">
<?php if ($is_member) { // 회원이면 ?>
<input type="hidden" name="fnick" value="<?php echo get_text($member['mb_nick']) ?>">
<input type="hidden" name="fmail" value="<?php echo $member['mb_email'] ?>">
<?php } ?>
<div class="form_01 new_win_con">
<h2 class="sound_only">메일쓰기</h2>
<ul>
<?php if (!$is_member) { ?>
<li>
<label for="fnick" class="sound_only">이름<strong>필수</strong></label>
<input type="text" name="fnick" id="fnick" required class="frm_input full_input required" placeholder="이름">
</li>
<li>
<label for="fmail" class="sound_only">E-mail<strong>필수</strong></label>
<input type="text" name="fmail" id="fmail" required class="frm_input full_input required" placeholder="E-mail">
</li>
<?php } ?>
<li>
<label for="subject" class="sound_only">제목<strong>필수</strong></label>
<input type="text" name="subject" id="subject" required class="frm_input full_input required" placeholder="제목">
</li>
<li class="chk_box">
<span class="sound_only">형식</span>
<input type="radio" name="type" value="0" id="type_text" checked>
<label for="type_text"><span></span>TEXT</label>
<input type="radio" name="type" value="1" id="type_html">
<label for="type_html"><span></span>HTML</label>
<input type="radio" name="type" value="2" id="type_both">
<label for="type_both"><span></span>TEXT+HTML</label>
</li>
<li>
<label for="content" class="sound_only">내용<strong>필수</strong></label>
<textarea name="content" id="content" required class="required"></textarea>
</li>
<li class="formmail_flie">
<div class="file_wr">
<label for="file1" class="lb_icon"><i class="fa fa-download" aria-hidden="true"></i><span class="sound_only"> 첨부 파일 1</span></label>
<input type="file" name="file1" id="file1" class="frm_file full_input">
</div>
<div class="frm_info">첨부 파일은 누락될 수 있으므로 메일을 보낸 후 파일이 첨부 되었는지 반드시 확인해 주시기 바랍니다.</div>
</li>
<li class="formmail_flie">
<div class="file_wr">
<label for="file2" class="lb_icon"><i class="fa fa-download" aria-hidden="true"></i><span class="sound_only"> 첨부 파일 2</span></label>
<input type="file" name="file2" id="file2" class="frm_file full_input">
</div>
</li>
<li>
<span class="sound_only">자동등록방지</span>
<?php echo captcha_html(); ?>
</li>
</ul>
<div class="win_btn">
<button type="submit" id="btn_submit" class="btn_b02 reply_btn">메일발송</button>
<button type="button" onclick="window.close();" class="btn_close">창닫기</button>
</div>
</div>
</form>
</div>
<script>
with (document.fformmail) {
if (typeof fname != "undefined")
fname.focus();
else if (typeof subject != "undefined")
subject.focus();
}
function fformmail_submit(f)
{
<?php echo chk_captcha_js(); ?>
if (f.file1.value || f.file2.value) {
// 4.00.11
if (!confirm("첨부파일의 용량이 큰경우 전송시간이 오래 걸립니다.\n\n메일보내기가 완료되기 전에 창을 닫거나 새로고침 하지 마십시오."))
return false;
}
document.getElementById('btn_submit').disabled = true;
return true;
}
</script>
<!-- } 폼메일 끝 -->
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 B

+519
View File
@@ -0,0 +1,519 @@
<?php include_once __DIR__ . '/asset_urls.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>인터페이스</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<!-- 듀얼모니터 시퀀스애니메이션 스크립트 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/ScrollMagic.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/animation.gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/debug.addIndicators.min.js"></script>
<!-- 듀얼모니터 시퀀스애니메이션 스크립트 -->
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/interface.js"></script>
</head>
<body>
<!-- "js__"로 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 컨텐츠 시작 -->
<div class="container interface">
<div class="mouse_mark js__mouse_mark" style="display:none"><span>SCROLL</span></div>
<div class="mouse_mark js__mouse_mark02" style="display:none"><span>SCROLL</span></div>
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">인터페이스</h2>
<span>사용자 경험을 바탕으로 한 UX 디자인 적용</span>
</div>
</section>
<section class="route js__mouse_area">
<div class="fix">
<div class="keyword">
<i class="egbim_obj k"></i>
<span>Easy & Simple</span>
<p>기존의 복잡한 작업환경에서 벗어나<br class="brk"> <b>쉽고 단순한 인터페이스</b>를 제공합니다.</p>
</div>
<div class="content">
<ul class="subs">
<li class="on">
<span class="sub_tit">Interface</span>
<span class="mid_tit">쉽고 단순한<br> <b>인터페이스</b></span>
<span class="sub_text">
사용자의 편의성을 최우선으로 고려하여, 기존의 복잡하고 혼란스러운 인터페이스 대신<br class="brk"> <b>간결하고 직관적인 메뉴 구성</b>을 통해 누구나 쉽게 사용 할 수 있는 사용자 친화적인 환경을 제공합니다.
</span>
</li>
<li>
<span class="sub_tit">Grouping</span>
<span class="mid_tit"><b>기능별로 그룹화</b>하여 <br>차별화된 디자인</span>
<span class="sub_text">
복잡한 인터페이스를 간소화하고, <b>기능별로 메뉴를 체계적으로 그룹화</b> 하여<br class="brk"> 사용자가 필요한 기능을 쉽게 찾을 수 있도록 구성했습니다.
</span>
</li>
<li>
<span class="sub_tit">Imaging</span>
<span class="mid_tit">정보전달 방식의<br> <b>이미지화</b></span>
<span class="sub_text">
객체의 속성 정보를 사용자기 쉽게 이해할 수 있도록<br class="brk"> <b>이미지와 함께 시각적으로 표현</b>하여 정보전달의 명확성를 높였습니다.
<ul>
<li>객체 종류에 따른 차별화된 속성정보 창 제공</li>
<li>객체의 기본정보, 형상정보, 위치정보 구분하여 제공</li>
<li>많은 정보의 가독성 및 가시성 증대로 작업성 향상</li>
</ul>
</span>
</li>
</ul>
<ul class="imgs">
<li class="on">
<span>파일메뉴</span>
<span>객체 주요특성 표시</span>
<span>작업환경 설정</span>
<span>명령어 아이콘</span>
<span>넓은 작업공간</span>
<div class="img_box">
<object data="<?php echo egbim_img_url('interface_img_01.svg'); ?>"></object>
</div>
</li>
<li>
<span>객체 주요특성 메뉴</span>
<span>홈 메뉴</span>
<span>작업환경 아이콘바</span>
<span>명령어 아이콘바</span>
<div class="img_box">
<object data="<?php echo egbim_img_url('interface_img_02.svg'); ?>"></object>
</div>
</li>
<li>
<span>객체 선택 속성창</span>
<div class="img_box">
<object data="<?php echo egbim_img_url('interface_img_03.svg'); ?>"></object>
</div>
</li>
</ul>
</div>
</div>
<div id="sec1"></div>
<div id="sec2"></div>
<div id="sec3"></div>
</section>
<section class="dual full_screen" id="dualm">
<div class="dual_top js__mouse_area02">
<div class="sub_tit">
듀얼모니터 작업공간 <br>
<b>두개의 모니터 사용으로 새로운 작업공간</b>을<br class="brk"> 경험 할 수 있습니다.
</div>
<div id="imagesequence" class="pin" style="text-align: center;">
<img id="myimg" src="<?php echo egbim_img_url('com_img/comp_1.png'); ?>">
</div>
</div>
<div class="detail">
<div class="sub_tit">
<b>작업공간의 분리</b> 및 <b>연동기능</b>으로<br>
편리하게 동시작업
</div>
<div class="subs">
<div class="element">
<div class="exam">
<div class="exam_01">
<span>모델공간</span>
<img src="<?php echo egbim_img_url('dual_img01_01.png'); ?>" alt="">
</div>
<div class="exam_02">
<span>레이아웃(배치)공간</span>
<img src="<?php echo egbim_img_url('dual_img01_02.png'); ?>" alt="">
</div>
</div>
<div class="sub_text">
<span>
레이아웃(배치)공간을 분리하고 연동기능 적용으로<br>
모델공간과 레이아웃공간의 <b>번거로운 이동 없이 두 공간 동시 작업</b>
</span>
</div>
</div>
<div class="element">
<div class="exam">
<div class="exam_01">
<span>작업도면</span>
<img src="<?php echo egbim_img_url('dual_img02_01.png'); ?>" alt="">
</div>
<div class="exam_02">
<span>참고도면</span>
<img src="<?php echo egbim_img_url('dual_img02_02.png'); ?>" alt="">
</div>
</div>
<div class="sub_text">
<span>
도면 작업시 참고해야할 도면의 작업공간을 따로 분리 하여<br>
<b>참고도면이 변경될 걱정없이</b> 읽기전용 모드에서 작업
</span>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- FOOTER -->
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
// 페이지 로드 시에도 실행하여 초기 상태 확인
if (window.innerWidth <= 1200) {
const element = document.getElementById('dualm');
if (element) {
console.log('b')
element.removeAttribute('id');
}
}
</script>
</body>
<script>
$(function(){
// footer family site toggle
$('.family_btn').click(function(e){
e.stopPropagation();
$('.family_list, .family_btn').toggleClass('family_on');
});
$(document).click(function(e){
if(!$(e.target).closest('.family_wrap').length){
$('.family_list, .family_btn').removeClass('family_on');
}
});
});
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//descope 로그인, 로그아웃 js
function updateHeaderMenu() {
var isLoggedIn = !!sessionStorage.getItem("sessionJwt");
// role 체크 예시 (로그인 시 저장해놓은 값)
var isAdmin = sessionStorage.getItem('userRole') === 'super';
if (isLoggedIn) {
$('.my_join2, .my_login2').show();
$('.my_join, .my_login').hide();
// 마이페이지/관리자 메뉴 동적 출력
if (isAdmin) {
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
} else {
$('#my_join2').html("<a href='javascript:mypage03();'>마이페이지</a>");
}
} else {
$('.my_join2, .my_login2').hide();
$('.my_join, .my_login').show();
$('#my_join2').html(""); // 혹시모를 내용 초기화
}
}
function descopeLogout() {
fetch('/egbim/skin/member/basic/descope_logout.php', {
method: 'POST',
credentials: 'include' // PHPSESSID 쿠키 전송
})
.then(res => {
if (!res.ok) throw new Error('서버 로그아웃 실패');
// 1) 로컬 저장소 정리
// sessionStorage.removeItem("refreshJwt");
// sessionStorage.removeItem("sessionJwt");
// sessionStorage.removeItem("userRole");
// sessionStorage.removeItem("userName");
// sessionStorage.removeItem("loginId");
sessionStorage.clear();
localStorage.clear();
// 2) UI 갱신
updateHeaderMenu();
// 3) 로그인 페이지로 이동
window.location.href = '/egbim/index.php';
})
.catch(err => {
console.error(err);
alert('로그아웃 중 오류가 발생했습니다.');
});
}
$(document).ready(function() {
// 기존에 있던 updateHeaderMenu() 호출 뒤에
$('#my_login2 a').off('click').on('click', function(e){
e.preventDefault();
descopeLogout();
});
});
$(document).ready(function() {
updateHeaderMenu();
// (필요하다면, 로그인 성공 후에도 항상 updateHeaderMenu(); 호출)
});
//descope login
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '/egbim/skin/member/basic/descope_login.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
dataType : "json",
success : function(res){
if(res.status === "ok") {
// 토큰 저장
// sessionStorage.setItem("refreshJwt", res.refreshJwt);
sessionStorage.setItem("sessionJwt", res.sessionJwt);
// ✅ 사용자 정보 저장
if (res.user) {
sessionStorage.setItem("loginId", res.user.loginIds?.[0] || '');
sessionStorage.setItem("userName", res.user.name || '');
sessionStorage.setItem("company", res.user.customAttributes?.company || '');
sessionStorage.setItem("familyCompany", res.user.customAttributes?.familyCompany || '');
sessionStorage.setItem("position", res.user.customAttributes?.position || '');
sessionStorage.setItem("team", res.user.customAttributes?.team || '');
sessionStorage.setItem("familyUniqueKey", res.user.customAttributes?.familyUniqueKey || '');
sessionStorage.setItem("phone", res.user.phone || '');
}
// ✅ 추가: 관리자 등 정보 저장
if(res.user && res.user.roleNames && res.user.roleNames[0])
sessionStorage.setItem("userRole", res.user.roleNames[0]);
else
sessionStorage.removeItem("userRole");
// ✅ 로그인 후 메뉴 갱신
updateHeaderMenu();
// UI 처리
$('.popup_wrap').hide();
$('body').css('overflow', '');
lenis.start();
// alert('로그인 하셨습니다.');
} else {
alert(res.message || "로그인 실패");
// 🔴 실패 횟수에 따라 안내 배너 교체
if (res.failCount && res.failCount >= 8) {
updateLoginBanner("fail");
}
}
},
error : function(err){
alert(err.statusText || "통신 오류");
}
});
});
// ✅ 배너 교체 함수
function updateLoginBanner(type = "default") {
const $banner = $('#login_notice_banner');
if (!$banner.length) return;
if (type === "default") {
$banner.css({ background: "#063e01ff", color: "#fff" });
$banner.find("strong").text("[로그인 시스템 변경 안내]");
$banner.find("p.left").html(`
더 나은 보안을 위해 2025년 8월 8일부터 로그인 시스템이 변경되었습니다.<br>
기존 회원 또한 신규 시스템에 맞춰 재가입을 진행해주시기 바랍니다.
`);
$banner.find("p:last").html(`※ 로그인 및 가입 관련 문의: <strong>010-8721-7453</strong>`);
}
if (type === "fail") {
$banner.css({ background: "#6a0202ff", color: "#faf6f6ff" });
$banner.find("strong").text("[로그인 시도 제한 안내]");
$banner.find("p.left").html(`
비밀번호 입력을 <strong>7회 이상 연속 실패</strong>하셨습니다.<br>
<strong>8번째 시도부터 3분 대기</strong>가 적용됩니다.<br>
10회 이상 실패 시 계정이 잠금 처리됩니다.
`);
$banner.find("p:last").text("");
}
}
//회원가입 약관동의
// $('#fregister button[type=submit]').click(function(e){
// e.preventDefault();
// let agree11 = $('#agree11').val();
// let agree21 = $('#agree21').val();
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : "POST",
// datatype : "json",
// contentType: 'application/json; charset=utf-8',
// data : {
// 'agree11' : agree11,
// 'agree21' : agree21
// },
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// },
// error : function(err){
// alert(err);
// }
// });
// });
// 이지빔 프로그램 회원가입 url 쿼리스트링 파싱 함수
function getQueryString(name) {
const intro = document.querySelector('.intro_wrap');
intro.style.display = "none";
const mainMask = document.querySelector('.main_mask');
mainMask.classList.add('skip');
// mainMask.style.aimation = 'none';
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
//이지빔 프로그램 비밀번호 재설정 url 쿼리스트링 파싱 함수
$(document).ready(function() {
const urlParams = new URLSearchParams(window.location.search);
const popup = urlParams.get('popup');
const token = urlParams.get('t');
if (popup === 'pwreset') {
// 팝업 전체 열기
$('#pop_search').show();
$('body').css('overflow', 'hidden');
// 내부 컨텐츠 모두 숨기기
$('#pop_search .popup_contents_wrap').hide();
if (token) {
// 토큰이 있으면 비밀번호 재설정 단계
if (!sessionStorage.getItem('pwreset_shown')) {
$('#password_reset').show();
sessionStorage.setItem('pwreset_shown', '1');
}
} else {
// 토큰이 없으면 아이디 입력 단계 (첫 번째 .popup_contents_wrap)
$('#pop_search .popup_contents_wrap').first().show();
}
}
// 닫기 버튼
$('#pop_search .btn_close').on('click', function() {
$('#pop_search').hide();
$('body').css('overflow', '');
});
});
</script>
@@ -0,0 +1,674 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>인터페이스</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<!-- 듀얼모니터 시퀀스애니메이션 스크립트 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/ScrollMagic.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/animation.gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/debug.addIndicators.min.js"></script>
<!-- 듀얼모니터 시퀀스애니메이션 스크립트 -->
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/interface.js"></script>
</head>
<body>
<!-- "js__" 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 컨텐츠 시작 -->
<div class="container interface">
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">인터페이스</h2>
<span>사용자 경험을 바탕으로 한 UX 디자인 적용</span>
</div>
</section>
<section class="route">
<div class="fix">
<div class="keyword">
<i class="egbim_obj k"></i>
<span>Easy & Simple</span>
<p>기존의 복잡한 작업환경에서 벗어나 <b>쉽고 단순한 인터페이스</b>를 제공합니다.</p>
</div>
<div class="content">
<ul class="subs">
<li class="on">
<span class="sub_tit">Interface</span>
<span class="mid_tit">쉽고 단순한<br><b>인터페이스</b></span>
<span class="sub_text">
사용자의 편의성을 최우선으로 고려하여, 기존의 복잡하고 혼란스러운 인터페이스 대신 <b>간결하고 직관적인 메뉴 구성</b>을 통해 누구나 쉽게 사용 할 수 있는 사용자 친화적인 환경을 제공합니다.
</span>
</li>
<li>
<span class="sub_tit">Grouping</span>
<span class="mid_tit"><b>기능별로 그룹화</b>하여<br>차별화된 디자인</span>
<span class="sub_text">
복잡한 인터페이스를 간소화하고, <b>기능별로 메뉴를 체계적으로 그룹화</b> 하여 사용자가 필요한 기능을 쉽게 찾을 수 있도록 구성했습니다.
</span>
</li>
<li>
<span class="sub_tit">Imaging</span>
<span class="mid_tit">정보전달 방식의<br><b>이미지화</b></span>
<span class="sub_text">
객체의 속성 정보를 사용자기 쉽게 이해할 수 있도로 <b>이미지와 함께 시각적으로 표현</b>하여 정보전달의 명확성를 높였습니다
<ul>
<li>객체 종류에 따른 차별화된 속성정보 창 제공</li>
<li>객체의 기본정보, 형상정보, 위치정보 구분하여 제공</li>
<li>많은 정보의 가독성 및 가시성 증대로 작업성 향상</li>
</ul>
</span>
</li>
</ul>
<ul class="imgs">
<li class="on"><img src="../img/interface_img_01.svg" alt=""></li>
<li><img src="../img/interface_img_02.svg" alt=""></li>
<li><img src="../img/interface_img_03.svg" alt=""></li>
</ul>
</div>
</div>
<div id="sec1"></div>
<div id="sec2"></div>
<div id="sec3"></div>
</section>
<section class="dual" id="dualm">
<div class="content">
<div class="fix">
<div class="sub_tit">
듀얼모니터 작업공간 <br>
<b>두개의 모니터 사용으로 새로운 작업공간</b>을 경험 할 수 있습니다.
</div>
<div id="imagesequence" class="pin" style="text-align: center;">
<img id="myimg" src="../img/com_img/comp_1.png" >
</div>
<div class="detail">
<div class="sub_tit">
<b>작업공간의 분리</b> 및 <b>연동기능</b>으로<br>
편리하게 동시작업
</div>
<div class="subs">
<div class="element">
<div class="exam">
<div class="exam_01">
<span>모델공간</span>
<img src="../img/dual_img01_01.png" alt="">
</div>
<div class="exam_02">
<span>레이아웃(배치)공간</span>
<img src="../img/dual_img01_02.png" alt="">
</div>
</div>
<div class="sub_text">
<span>
레이아웃(배치)공간을 분리하고 연동기능 적용으로<br>
모델공간과 레이아웃공간의 <b>번거로운 이동 없이 두 공간 동시 작업</b>
</span>
</div>
</div>
<div class="element">
<div class="exam">
<div class="exam_01">
<span>작업도면</span>
<img src="../img/dual_img02_01.png" alt="">
</div>
<div class="exam_02">
<span>참고도면</span>
<img src="../img/dual_img02_02.png" alt="">
</div>
</div>
<div class="sub_text">
<span>
도면 작업시 참고해야할 도면의 작업공간을 따로 분리 하여<br>
<b>참고도면이 변경될 걱정없이</b> 읽기전용 모드에서 작업
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- FOOTER -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x == "tmp_1=John"){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').hide();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/interface.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
@@ -0,0 +1,691 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>인터페이스</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<!-- 듀얼모니터 시퀀스애니메이션 스크립트 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/ScrollMagic.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/animation.gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/debug.addIndicators.min.js"></script>
<!-- 듀얼모니터 시퀀스애니메이션 스크립트 -->
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/interface.js"></script>
</head>
<body>
<!-- "js__" 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 컨텐츠 시작 -->
<div class="container interface">
<div class="mouse_mark js__mouse_mark" style="display:none"><span>SCROLL</span></div>
<div class="mouse_mark js__mouse_mark02" style="display:none"><span>SCROLL</span></div>
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">인터페이스</h2>
<span>사용자 경험을 바탕으로 한 UX 디자인 적용</span>
</div>
</section>
<section class="route js__mouse_area">
<div class="fix">
<div class="keyword">
<i class="egbim_obj k"></i>
<span>Easy & Simple</span>
<p>기존의 복잡한 작업환경에서 벗어나 <b>쉽고 단순한 인터페이스</b>를 제공합니다.</p>
</div>
<div class="content">
<ul class="subs">
<li class="on">
<span class="sub_tit">Interface</span>
<span class="mid_tit">쉽고 단순한<br><b>인터페이스</b></span>
<span class="sub_text">
사용자의 편의성을 최우선으로 고려하여, 기존의 복잡하고 혼란스러운 인터페이스 대신 <b>간결하고 직관적인 메뉴 구성</b>을 통해 누구나 쉽게 사용 할 수 있는 사용자 친화적인 환경을 제공합니다.
</span>
</li>
<li>
<span class="sub_tit">Grouping</span>
<span class="mid_tit"><b>기능별로 그룹화</b>하여<br>차별화된 디자인</span>
<span class="sub_text">
복잡한 인터페이스를 간소화하고, <b>기능별로 메뉴를 체계적으로 그룹화</b> 하여 사용자가 필요한 기능을 쉽게 찾을 수 있도록 구성했습니다.
</span>
</li>
<li>
<span class="sub_tit">Imaging</span>
<span class="mid_tit">정보전달 방식의<br><b>이미지화</b></span>
<span class="sub_text">
객체의 속성 정보를 사용자기 쉽게 이해할 수 있도로 <b>이미지와 함께 시각적으로 표현</b>하여 정보전달의 명확성를 높였습니다
<ul>
<li>객체 종류에 따른 차별화된 속성정보 창 제공</li>
<li>객체의 기본정보, 형상정보, 위치정보 구분하여 제공</li>
<li>많은 정보의 가독성 및 가시성 증대로 작업성 향상</li>
</ul>
</span>
</li>
</ul>
<ul class="imgs">
<li class="on"><img src="../img/interface_img_01.svg" alt=""></li>
<li><img src="../img/interface_img_02.svg" alt=""></li>
<li><img src="../img/interface_img_03.svg" alt=""></li>
</ul>
</div>
</div>
<div id="sec1"></div>
<div id="sec2"></div>
<div id="sec3"></div>
</section>
<section class="dual" id="dualm">
<div class="content">
<div class="fix">
<div class="dual_top js__mouse_area02">
<div class="sub_tit">
듀얼모니터 작업공간 <br>
<b>두개의 모니터 사용으로 새로운 작업공간</b>을 경험 할 수 있습니다.
</div>
<div id="imagesequence" class="pin" style="text-align: center;">
<img id="myimg" src="../img/com_img/comp_1.png" >
</div>
</div>
<div class="detail">
<div class="sub_tit">
<b>작업공간의 분리</b> 및 <b>연동기능</b>으로<br>
편리하게 동시작업
</div>
<div class="subs">
<div class="element">
<div class="exam">
<div class="exam_01">
<span>모델공간</span>
<img src="../img/dual_img01_01.png" alt="">
</div>
<div class="exam_02">
<span>레이아웃(배치)공간</span>
<img src="../img/dual_img01_02.png" alt="">
</div>
</div>
<div class="sub_text">
<span>
레이아웃(배치)공간을 분리하고 연동기능 적용으로<br>
모델공간과 레이아웃공간의 <b>번거로운 이동 없이 두 공간 동시 작업</b>
</span>
</div>
</div>
<div class="element">
<div class="exam">
<div class="exam_01">
<span>작업도면</span>
<img src="../img/dual_img02_01.png" alt="">
</div>
<div class="exam_02">
<span>참고도면</span>
<img src="../img/dual_img02_02.png" alt="">
</div>
</div>
<div class="sub_text">
<span>
도면 작업시 참고해야할 도면의 작업공간을 따로 분리 하여<br>
<b>참고도면이 변경될 걱정없이</b> 읽기전용 모드에서 작업
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- FOOTER -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x == "tmp_1=John"){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').hide();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/interface.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
+128
View File
@@ -0,0 +1,128 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 로그인 시작 { -->
<div id="mb_login" class="mbskin">
<div class="mbskin_box">
<h1><?php echo $g5['title'] ?></h1>
<div class="mb_log_cate">
<h2><span class="sound_only">회원</span>로그인</h2>
<a href="<?php echo G5_BBS_URL ?>/register.php" class="join">회원가입</a>
</div>
<form name="flogin" action="<?php echo $login_action_url ?>" onsubmit="return flogin_submit(this);" method="post">
<input type="hidden" name="url" value="<?php echo $login_url ?>">
<fieldset id="login_fs">
<legend>회원로그인</legend>
<label for="login_id" class="sound_only">회원아이디<strong class="sound_only"> 필수</strong></label>
<input type="text" name="mb_id" id="login_id" required class="frm_input required" size="20" maxLength="20" placeholder="아이디">
<label for="login_pw" class="sound_only">비밀번호<strong class="sound_only"> 필수</strong></label>
<input type="password" name="mb_password" id="login_pw" required class="frm_input required" size="20" maxLength="20" placeholder="비밀번호">
<button type="submit" class="btn_submit">로그인</button>
<div id="login_info">
<div class="login_if_auto chk_box">
<input type="checkbox" name="auto_login" id="login_auto_login" class="selec_chk">
<label for="login_auto_login"><span></span> 자동로그인</label>
</div>
<div class="login_if_lpl">
<a href="<?php echo G5_BBS_URL ?>/password_lost.php">아이디/비밀번호 찾기</a>
</div>
</div>
</fieldset>
</form>
<?php @include_once(get_social_skin_path().'/social_login.skin.php'); // 소셜로그인 사용시 소셜로그인 버튼 ?>
</div>
<?php // 쇼핑몰 사용시 여기부터 ?>
<?php if (isset($default['de_level_sell']) && $default['de_level_sell'] == 1) { // 상품구입 권한 ?>
<!-- 주문하기, 신청하기 -->
<?php if (preg_match("/orderform.php/", $url)) { ?>
<section id="mb_login_notmb">
<h2>비회원 구매</h2>
<p>비회원으로 주문하시는 경우 포인트는 지급하지 않습니다.</p>
<div id="guest_privacy">
<?php echo conv_content($default['de_guest_privacy'], $config['cf_editor']); ?>
</div>
<div class="chk_box">
<input type="checkbox" id="agree" value="1" class="selec_chk">
<label for="agree"><span></span> 개인정보수집에 대한 내용을 읽었으며 이에 동의합니다.</label>
</div>
<div class="btn_confirm">
<a href="javascript:guest_submit(document.flogin);" class="btn_submit">비회원으로 구매하기</a>
</div>
<script>
function guest_submit(f)
{
if (document.getElementById('agree')) {
if (!document.getElementById('agree').checked) {
alert("개인정보수집에 대한 내용을 읽고 이에 동의하셔야 합니다.");
return;
}
}
f.url.value = "<?php echo $url; ?>";
f.action = "<?php echo $url; ?>";
f.submit();
}
</script>
</section>
<?php } else if (preg_match("/orderinquiry.php$/", $url)) { ?>
<div id="mb_login_od_wr">
<h2>비회원 주문조회 </h2>
<fieldset id="mb_login_od">
<legend>비회원 주문조회</legend>
<form name="forderinquiry" method="post" action="<?php echo urldecode($url); ?>" autocomplete="off">
<label for="od_id" class="od_id sound_only">주문서번호<strong class="sound_only"> 필수</strong></label>
<input type="text" name="od_id" value="<?php echo $od_id; ?>" id="od_id" required class="frm_input required" size="20" placeholder="주문서번호">
<label for="od_pwd" class="od_pwd sound_only">비밀번호 <strong>필수</strong></label>
<input type="password" name="od_pwd" size="20" id="od_pwd" required class="frm_input required" placeholder="비밀번호">
<button type="submit" class="btn_submit">확인</button>
</form>
</fieldset>
<section id="mb_login_odinfo">
<p>메일로 발송해드린 주문서의 <strong>주문번호</strong> 및 주문 시 입력하신 <strong>비밀번호</strong>를 정확히 입력해주십시오.</p>
</section>
</div>
<?php } ?>
<?php } ?>
<?php // 쇼핑몰 사용시 여기까지 반드시 복사해 넣으세요 ?>
</div>
<script>
jQuery(function($){
$("#login_auto_login").click(function(){
if (this.checked) {
this.checked = confirm("자동로그인을 사용하시면 다음부터 회원아이디와 비밀번호를 입력하실 필요가 없습니다.\n\n공공장소에서는 개인정보가 유출될 수 있으니 사용을 자제하여 주십시오.\n\n자동로그인을 사용하시겠습니까?");
}
});
});
function flogin_submit(f)
{
if( $( document.body ).triggerHandler( 'login_sumit', [f, 'flogin'] ) !== false ){
return true;
}
return false;
}
</script>
<!-- } 로그인 끝 -->
+166
View File
@@ -0,0 +1,166 @@
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/common.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/include.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/popup.js?v=20260723"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
<!--popup_wrap-->
<div id="pop_login" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_container-->
<div class="popup_container login">
<!--popup_tit-->
<div class="popup_tit">
<h1 class="h_1">로그인</h1>
<h3 class="h_3">
EG-BIM 로그인 <br><br class="brk"> <strong>1:1구매문의 제품안내 서비스</strong><br> 이용하실 있습니다.
</h3>
</div>
<!--//popup_tit-->
<!-- popup_contents_wrap -->
<div class="popup_contents_wrap">
<form id="flogin" name="flogin" action="<?php //echo $login_action_url?>" onsubmit="return flogin_submit(this);" method="post">
<input type="hidden" name="url" value="<?php //echo $login_url?>">
<div class="input_wrap id">
<i class="id"></i><input type="text" name="mb_id" id="login_id" required class="id " placeholder="아이디">
</div>
<div class="input_wrap pw" style="position: relative;">
<i class="pw"></i><input type="password" name="mb_password" id="login_pw" required class="pw " size="20" maxLength="20" placeholder="비밀번호" onkeyup="ufn_loginpw_onkeyup(this);">
<!-- 👁 Font Awesome 아이콘 -->
<i id="toggle_pw"
class="fa-solid fa-eye"
style="position:absolute; right:10px; top:50%;
transform:translateY(-50%);
cursor:pointer; color:#888;"></i>
<!-- CapsLock 경고 (커서 오른쪽 표시용) -->
<div id="capslock_hint"
style="display:none;
position:absolute;
left:0;
bottom:-20px;
font-size:13px;
color:#f87171;
pointer-events:none;
animation:fadein 0.15s ease;">
⚠️ Caps Lock이 켜져 있습니다.
</div>
</div>
<style>
@keyframes fadein { from { opacity:0; } to { opacity:1; } }
</style>
<div class="join_btn_wrap">
<button type="submit" id="btn_login">로그인</button>
</div>
<div class="btn_go">
<div class="go_signup"><a href="javascript:agreement();"><span>회원가입</span><i class="arrow_r"></i></a></div>
<div class="go_find"><a href="javascript:search();"><span>비밀번호 재설정</span><i class="arrow_r"></i></a></div>
</div>
</form>
</div>
<!-- //popup_contents_wrap -->
</div>
<!--//popup_container-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<script>
function ufn_loginpw_onkeyup(l_pw){
var loginButton = document.getElementById('btn_login');
if (!loginButton) {
return;
}
loginButton.disabled = !(l_pw && l_pw.value.length > 0);
}
</script>
<script>
// (function () {
// // 1) 공지 팝업 DOM이 없으면 생성
// if (!document.getElementById('egbimNotice')) {
// $('body').append(`
// <div class="notice-backdrop" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:9998;"></div>
// <div class="notice-box" id="egbimNotice" style="display:none;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9999;background:#103a2f;color:#fff;border-radius:14px;max-width:520px;width:92%;box-shadow:0 10px 30px rgba(0,0,0,.35);padding:28px;">
// <button class="notice-close" aria-label="닫기" style="position:absolute;right:10px;top:8px;border:none;background:transparent;color:#fff;font-size:24px;cursor:pointer;">×</button>
// <h3 style="margin:0 0 10px;font-size:20px;font-weight:700;">공지사항</h3>
// <p style="line-height:1.6;margin:0 0 18px;">
// EG-BIM 프로그램 사용자 인증 신규 시스템 도입으로 인해<br>
// 기존 회원분들께서는 <strong>재가입</strong> 해주시기 바랍니다.
// </p>
// <div class="notice-actions" style="display:flex;gap:8px;justify-content:flex-end;">
// <button class="btn-ok" style="padding:10px 16px;border:none;border-radius:10px;background:#ffb02e;color:#111;cursor:pointer;font-weight:700;">확인</button>
// </div>
// </div>
// `);
// }
// // 팝업 열기/닫기
// function openNotice(onConfirm) {
// $('.notice-backdrop, #egbimNotice').fadeIn(120);
// const close = () => {
// $('#egbimNotice .btn-ok, #egbimNotice .notice-close').off('click');
// $('.notice-backdrop, #egbimNotice').fadeOut(120);
// };
// $('#egbimNotice .notice-close').on('click', close);
// $('#egbimNotice .btn-ok').on('click', function () {
// close();
// if (typeof onConfirm === 'function') onConfirm();
// });
// }
// // 2) 로그인 버튼 클릭 → 공지 팝업 먼저 띄우고, 확인 시 로그인 실행
// $('#btn_login').off('click.notice').on('click.notice', function (e) {
// e.preventDefault();
// openNotice(doLoginAjax);
// });
// })();
//
</script>
<script>
$(document).ready(function () {
// form submit (Enter 눌러도 실행됨)
$('#flogin').on('submit', function(e) {
e.preventDefault(); // 기본 제출 막기
$('#btn_login').click(); // 버튼 클릭 이벤트 재사용
});
});
document.addEventListener("DOMContentLoaded", () => {
const pwInput = document.getElementById("login_pw");
const toggle = document.getElementById("toggle_pw");
const hint = document.getElementById("capslock_hint");
// 👁 토글 기능
toggle.addEventListener("click", () => {
const isHidden = pwInput.type === "password";
pwInput.type = isHidden ? "text" : "password";
toggle.classList.toggle("fa-eye");
toggle.classList.toggle("fa-eye-slash");
});
// ⚠ CapsLock 감지
pwInput.addEventListener("keydown", e => {
const caps = e.getModifierState && e.getModifierState("CapsLock");
hint.style.display = caps ? "block" : "none";
});
pwInput.addEventListener("keyup", e => {
const caps = e.getModifierState && e.getModifierState("CapsLock");
hint.style.display = caps ? "block" : "none";
});
pwInput.addEventListener("blur", () => hint.style.display = "none");
// 🚫 한글 차단
pwInput.addEventListener("input", function() {
this.value = this.value.replace(/[-|-|-]/g, '');
});
});
</script>
+111
View File
@@ -0,0 +1,111 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 로그인 시작 { -->
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head>
<body>
<div class="wrapper">
<!-- Header -->
<header class="header">
<h1>
<img src="../img/logo_w.svg" alt="sdi">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt="sdi"></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt="sdi"></div>
</div>
</header>
<!-- //Header -->
<!--popup_wrap-->
<div class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<hgroup>
<div class="pop_close_wrap">
<button class="btn_close">
<div class="close_div"><img src="../img/ico_close.svg" alt="sdi"></div>
</button>
</div>
</hgroup>
<!--popup_content-->
<div class="popup_content login">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">Logi</span>
<div class="join_info">
<h1 class="h_1">로그인</h1>
<h3 class="h_3">
TOVA 로그인 시<br>
<strong>다운로드 및 1:1문의 서비스</strong>를<br>
이용하실 수 있습니다.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">n</span>
<div class="contents_wrap">
<form name="flogin" action="<?php echo $login_action_url?>" onsubmit="return flogin_submit(this);" method="post">
<input type="hidden" name="url" value="<?php echo $login_url?>">
<div class="input_wrap id">
<i class="id"></i><input type="text" name="mb_id" id="login_id" required class="id " size="20" maxLength="20" placeholder="아이디">
</div>
<div class="input_wrap pw">
<i class="pw"></i><input type="password" name="mb_password" id="login_pw" required class="pw " size="20" maxLength="20" placeholder="비밀번호">
</div>
<div class="join_btn_wrap">
<button type="submit">로그인</button>
</div>
<div class="btn_go">
<div class="go_signup"><a href="<?php echo G5_BBS_URL ?>/register.php"><span>회원가입</span><i class="arrow_r"></i></a></div>
<div class="go_find"><a href="<?php echo G5_BBS_URL ?>/password_lost.php"><span>아이디/비밀번호 찾기</span><i class="arrow_r"></i></a></div>
</div>
</div>
</form>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
</div>
</body>
<script>
jQuery(function($){
$("#login_auto_login").click(function(){
if (this.checked) {
this.checked = confirm("자동로그인을 사용하시면 다음부터 회원아이디와 비밀번호를 입력하실 필요가 없습니다.\n\n공공장소에서는 개인정보가 유출될 수 있으니 사용을 자제하여 주십시오.\n\n자동로그인을 사용하시겠습니까?");
}
});
});
function flogin_submit(f)
{
if( $( document.body ).triggerHandler( 'login_sumit', [f, 'flogin'] ) !== false ){
return true;
}
return false;
}
</script>
<!-- } 로그인 끝 -->
@@ -0,0 +1,66 @@
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/common.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/include.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/popup.js"></script>
<!--popup_wrap-->
<div id="pop_login" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_content-->
<div class="popup_content login">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">Logi</span>
<div class="join_info">
<h1 class="h_1">로그인</h1>
<h3 class="h_3">
EG-BIM 로그인 <br>
<strong>1:1구매문의 제품안내 서비스</strong><br>
이용하실 있습니다.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">n</span>
<div class="contents_wrap">
<form id="flogin" name="flogin" action="<?php //echo $login_action_url?>" onsubmit="return flogin_submit(this);" method="post">
<input type="hidden" name="url" value="<?php //echo $login_url?>">
<div class="input_wrap id">
<i class="id"></i><input type="text" name="mb_id" id="login_id" required class="id " size="20" maxLength="20" placeholder="아이디">
</div>
<div class="input_wrap pw">
<i class="pw"></i><input type="password" name="mb_password" id="login_pw" required class="pw " size="20" maxLength="20" placeholder="비밀번호" onkeyup="ufn_loginpw_onkeyup(this);">
</div>
<div class="join_btn_wrap">
<button type="submit" id="btn_login">로그인</button>
</div>
<div class="btn_go">
<div class="go_signup"><a href="javascript:agreement();"><span>회원가입</span><i class="arrow_r"></i></a></div>
<div class="go_find"><a href="javascript:search();"><span>아이디/비밀번호 찾기</span><i class="arrow_r"></i></a></div>
</div>
</form>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<script>
function ufn_loginpw_onkeyup(l_pw){
if(l_pw.value.length>0){
document.getElementById('btn_login').disabled = false;
}else{
document.getElementById('btn_login').disabled = true;
}
}
</script>
<!--//popup_wrap-->
@@ -0,0 +1,4 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 자신만의 코드를 넣어주세요.
+506
View File
@@ -0,0 +1,506 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Main</title>
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/reset.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/font.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/style.css" />
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/common.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/include.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/popup.js"></script>
</head>
<script>
// $(document).ready(function(){
// $(".gnb_logout").on("click", function() {
// if(!confirm("로그아웃 하시겠습니까?")){
// return false;
// }else{
// location.href="/tova/bbs/logout.php";
// }
// });
// $(".mv_op_frmat").on("click", function() {
// $("#op_id").val('');
// $("#op_pw").val('');
// if($('.mv_op_frmat_area').is(':visible')===false){
// $(".mv_op_frmat_area").css('display','block');
// $("#op_id").focus();
// }else{
// $(".mv_op_frmat_area").css('display','none');
// }
// });
// $(".move_frmat").on("click", function() {
// var op_id = $("#op_id").val();
// var op_pw = $("#op_pw").val();
// var ActionMode = 'SCREEN_15';
// if(op_id!=="" && op_pw!=="" ){
// $("#op_id").val('');
// $("#op_pw").val('');
// $(".mv_op_frmat_area").css('display','none');
// var form = document.createElement('form');
// form.setAttribute('method', 'post');
// form.setAttribute('target', 'op_frmat');
// form.setAttribute('action', "http://cloud.hanmaceng.co.kr/service/gaia/sys/controller/manage/gaiaserver_controller.php" );
// document.charset = "utf-8";
// var hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', 'ActionMode'); hiddenField.setAttribute('value', ActionMode); form.appendChild(hiddenField);
// var hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', 'op_id'); hiddenField.setAttribute('value', op_id); form.appendChild(hiddenField);
// var hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', 'op_pw'); hiddenField.setAttribute('value', op_pw); form.appendChild(hiddenField);
// document.body.appendChild(form);
// form.submit();
// /*
// //시추주상도 양식관리
// //http://cloud.hanmaceng.co.kr/service/gaia/sys/controller/manage/gaiaserver_controller.php?ActionMode=SCREEN_15
// window.open("http://cloud.hanmaceng.co.kr/service/gaia/sys/controller/manage/gaiaserver_controller.php?ActionMode=SCREEN_15&op_id="+op_id+"&op_pw="+op_pw,"op_frmat","width=1500,height=900,scrollbars=yes,status=no,location=no,directories=no,toolbar=no,menubar=no,left={$itemdata2.left},top={$itemdata2.top},resizable=yes");
// */
// }else{
// //location.href="/gaiahome/bbs/logout.php";
// $(".mv_op_frmat_area").css('display','none');
// }
// });
// });
// var ua = navigator.userAgent;
// /*-----------------------------------------------------------------------------*/
// var isie =(/msie/i).test(navigator.userAgent); //ie
// var isie6 =(/msie 6/i).test(navigator.userAgent); //ie 6
// var isie7 =(/msie 7/i).test(navigator.userAgent); //ie 7
// var isie8 =(/msie 8/i).test(navigator.userAgent); //ie 8
// var isie9 =(/msie 9/i).test(navigator.userAgent); //ie 9
// var isfirefox =(/firefox/i).test(navigator.userAgent); //firefox
// var isapple =(/applewebkit/i).test(navigator.userAgent); //safari,chrome
// var isopera =(/opera/i).test(navigator.userAgent); //opera
// /*-----------------------------------------------------------------------------*/
// var isios =(/(ipod|iphone|ipad)/i).test(navigator.userAgent);//ios
// var isipad =(/(ipad)/i).test(navigator.userAgent);//ipad
// var isandroid =(/android/i).test(navigator.userAgent);//android
// var islgtelecom =(/lgtelecom/i).test(navigator.userAgent);//lgtelecom
// var isblackberry=(/blackberry/i).test(navigator.userAgent);//blackberry
// var issamsung =(/samsung/i).test(navigator.userAgent);//samsung
// var issymbian =(/symbian/i).test(navigator.userAgent);//symbian
// var issony =(/sony/i).test(navigator.userAgent);//sony
// var isSCH =(/SCH-/i).test(navigator.userAgent);//SCH-
// var isSPH =(/SPH-/i).test(navigator.userAgent);//SPH-
// /*-----------------------------------------------------------------------------*/
// function divice_confirm() { //접속기기 구분
// $("#browserVer").val(ua);
// // alert(navigator.maxTouchPoints);
// // alert(navigator.userAgent);
// //if(isios || isipad || isandroid || islgtelecom || isblackberry || issamsung || issymbian || issony || isSCH || isSPH || navigator.appVersion.indexOf('Windows') == -1){
// if( isandroid || islgtelecom || isblackberry || issamsung || issymbian || issony || isSCH || isSPH){
// //alert("각종 모바일 접속::");
// return "M";//mobile
// }else{//web접속
// if(isios || isipad || navigator.appVersion.indexOf('Windows') == -1){
// //alert("ios 접속::");
// if((isios || isipad == -1) && navigator.maxTouchPoints>0){
// //alert('애플 모바일기기');
// return "M";//mobile
// }else{//web접속
// return "W";//web
// }
// }else{//web접속
// return "W";//web
// }
// }
// }//divice_confirm
var is_member = false;
<?php if ($is_member) { ?>
is_member = true;
<?php } ?>
</script>
<body>
<div class="wrapper main_wrap">
<input id="hid_mb_id" type="hidden"></input>
<div class="main_mask">
<!-- Header -->
<header class="header">
<h1>
<img src="<?php echo G5_URL ?>/img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my">
<img src="<?php echo G5_URL ?>/img/ico_my.svg" alt="">
<ul class="menu_my_list" style="display: none;">
<li id="my_join2" class="my_join2"><a href="javascript:mypage01();">마이페이지</a></li>
<li id="my_login2" class="my_login2"><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<li id="my_join" class="my_join"><a href="javascript:agreement();">회원가입</a></li>
<li id="my_login" class="my_login"><a href="javascript:login();">로그인</a></li>
</ul>
</div>
<div class="menu_ham"><a href="javascript:sitemap();"><img src="<?php echo G5_URL ?>/img/ico_ham.svg" alt=""></a></div>
</div>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">FAQ</a></li>
<li class="floating_buy"><a href="">구매하기</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 팝업 닫기 버튼(팝업 페이지 안에 있으니 작동안함) -->
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!-- 모든 팝업페이지 경로
페이지를 팝업으로 노출 시키니,
팝업창을 닫기 후 다시 열었을때 입력된 내용이 그대로 뜨는 현상이 있음,
이는 개발팀에 요청을해야 할 것 같긴합니다..
-->
<!-- <div class="pop_open" data-include-path="../skin/member/basic/login.skin.php"></div> -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
?>
<!-- <div class="pop_open" data-include-path="pop/pop_join.html"></div>
<div class="pop_open" data-include-path="pop/pop_login.html"></div>
<div class="pop_open" data-include-path="pop/pop_mypage01.html"></div>
<div class="pop_open" data-include-path="pop/pop_mypage02.html"></div>
<div class="pop_open" data-include-path="pop/pop_mypage03.html"></div>
<div class="pop_open" data-include-path="pop/pop_search.html"></div> -->
<!-- 모든 팝업페이지 경로 -->
<!-- main -->
<main class="main">
<ul class="pagination_main">
<li class="page_list_wrap">
<div class="page_01 page_on"><img src="<?php echo G5_URL ?>/img/logo_w.svg" alt=""></div><span class="page_num">01</span>
</li>
<li class="page_list_wrap">
<div class="page_02"><span>주요기능</span></div><span class="page_num">02</span>
</li>
<li class="page_list_wrap">
<div class="page_03"><span>공로분석</span></div><span class="page_num">03</span>
</li>
<li class="page_list_wrap">
<div class="page_04"><span>대중교통</span></div><span class="page_num">04</span>
</li>
</ul>
<div class="main_link">
<a href="#01" class="main_link_01 link_on"></a>
<a href="#02" class="main_link_02"></a>
<a href="#03" class="main_link_03"></a>
<a href="#04" class="main_link_04"></a>
</div>
<div class="bg_video">
<video id="video_play" class="bg_video_content" autoplay muted>
<source src="<?php echo G5_URL ?>/img/main_01.mp4" type="video/mp4" class="main_video_01">
</video>
</div>
<footer class="footer_off">
<div class="footer_close"></div>
<div class="footer_wrap">
<div class="footer_right">
<img src="<?php echo G5_URL ?>/img/baron_logo.svg" alt="">
<div class="footer_privercy">
<span><strong>개인정보 처리방침</strong></span>
<div class="line_div"></div>
<span>이용약관</span>
</div>
<div class="copyright">
<span>© 2017 Bron. All rights reserved.</span>
</div>
</div>
<div class="footer_left">
<ul class="footer_menu">
<li>
<a href="<?php echo G5_BBS_URL?>/value.php">TOVA 소개</a>
</li>
<li>
<a href="<?php echo G5_BBS_URL?>/primary.php">주요기능</a>
</li>
<li>
<a href="<?php echo G5_BBS_URL?>/road.php">공로분석</a>
</li>
<li>
<a href="<?php echo G5_BBS_URL?>/public.php">대중교통</a>
</li>
</ul>
<div class="footer_sitemap">
<span>TOVA의 <em>다양한 소식</em>을 만나보세요</span>
<div class="tova_sns">
<a href="" class="tova_cafe"><img src="<?php echo G5_URL ?>/img/ico_cafe.svg" alt=""></a>
<a href="" class="tova_facebook"><img src="<?php echo G5_URL ?>/img/ico_facebook.svg" alt=""></a>
</div>
<div class="family_wrap">
<div class="family_btn">
<span>Family Site</span><img src="<?php echo G5_URL ?>/img/ico_angle.svg" alt="">
</div>
<ul class="family_list">
<li><a href="http://www.hanmaceng.co.kr/" target="_blank">한맥기술</a></li>
<li><a href="http://www.samaneng.co.kr/" target="_blank">삼안</a></li>
<li><a href="http://www.jangheon.co.kr/" target="_blank">장헌산업</a></li>
<li><a href="http://www.pre-cast.co.kr/" target="_blank">피티씨</a></li>
<li><a href="http://www.hallasanup.com/" target="_blank">한라산업개발</a></li>
</ul>
</div>
</div>
</div>
</div>
</footer>
</div>
<div class="intro_wrap">
<div class="intro_content">
<div class="intro_mask"></div>
<div class="intro_txt">
<div class="txt_mask"><span class="intro_txt_01">지속적인 도전과 혁신으로</span></div>
<div class="txt_mask"><span class="intro_txt_02"><img src="<?php echo G5_URL ?>/img/logo_b.svg" alt="">는</span></div>
<div class="txt_mask"><span class="intro_txt_03"><strong>교통분석의 미래를 선도</strong>합니다.</span></div>
</div>
</div>
</div>
</main>
<!-- //main -->
</div>
</div>
</body>
<script>
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.length);
//if(ss.length == 5){
//$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//}else
//{
// alert(trim(ss));
//}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// alert(ss);
// },
error : function(err){
alert(err);
}
});
});
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
// alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
//alert(err);
// alert(err.status);
// alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
</script>
+661
View File
@@ -0,0 +1,661 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5GX3FS9R');
</script>
<!-- End Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-7J3S6MHW3Y"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-7J3S6MHW3Y');
</script>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="디지털전환시대 EG-BIM, 도면과 3차원 정보모델을 하나의 S/W로" />
<meta name="keywords" content="EG-BIM, 이지빔, egbim, eg bim, CAD, 대안CAD, 도면, BIM" />
<title>EG-BIM</title>
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/reset.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/font.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/style.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/theme/basic/skin/qa/basic/style.css?ver=2303229">
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/common.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/popup.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/index.js"></script>
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5GX3FS9R"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="wrapper">
<input id="hid_mb_id" name="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<div class="main_mask">
<!-- Header -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 모든 팝업페이지 경로 -->
<!-- main -->
<div class="main">
<ul class="pagination_main">
<li><div class="page_01 page_on">EG-BIM 소개</div><span>01</span></li>
<li><div class="page_02">인터페이스</div><span>02</span></li>
<li><div class="page_03">주요기능</div><span>03</span></li>
<li><div class="page_04">도면관리</div><span>04</span></li>
<li><div class="page_05">for BIM</div><span>05</span></li>
</ul>
<div class="main_link">
<a href="#01" class="main_link_01 link_on" onclick="location.href='<?php echo G5_BBS_URL ?>/value.php'"></a>
<a href="#02" class="main_link_02" onclick="location.href='<?php echo G5_BBS_URL ?>/interface.php'"></a>
<a href="#03" class="main_link_03" onclick="location.href='<?php echo G5_BBS_URL ?>/primary.php'"></a>
<a href="#04" class="main_link_04" onclick="location.href='<?php echo G5_BBS_URL ?>/floorplan.php'"></a>
<a href="#05" class="main_link_05" onclick="location.href='<?php echo G5_BBS_URL ?>/forbim.php'"></a>
</div>
<div class="bg_video">
<video id="video_play" autoplay muted playsinline>
<source src="<?php echo G5_URL ?>/img/main_1.mp4" type="video/mp4" class="main_video_01">
</video>
</div>
<!-- <button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button> -->
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
</div>
</div>
<div class="intro_wrap">
<div class="intro_mask"></div>
<div class="intro_txt">
<div class="txt_mask"><span><b>디지털전환시대</b></span></div>
<div class="txt_mask"><span><font class="egbim k">EG-BIM_software</font></span></div>
<div class="txt_mask"><span><em>도면</em>과 <em>3차원 정보모델</em>을 <br class="brk "><em>하나의</em> S/W로</span></div>
</div>
</div>
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
//$('.family_btn').click(function(){
// $(".family_list").toggleClass(" family_on");
//});
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
// $('.btn_close').hide();
// $('#pop_login').hide();
// ------유나 추가
$('.popup_wrap').hide();
$('body').css('overflow', ''); // 기본 스크롤 상태로 복귀
lenis.start();
console.log('로그인 완료 및 lenis 재시작/유나 추가')
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
$('.btn_close').show();
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#reg_mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
// $('.btn_close').hide();
// $('#pop_login').hide();
// $('#pop_agreement').hide();
// $('#pop_join').hide();
// $('#pop_mypage01').hide();
// $('#pop_search').hide();
// $('#pop_mypage02').hide();
// $('#pop_mypage03').hide();
// $('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
//$("#reg_form_join").hide();
//$("#pop_result").show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
// ------유나 추가
$('.popup_wrap').hide();
$('body').css('overflow', ''); // 기본 스크롤 상태로 복귀
lenis.start();
console.log('로그인 완료 및 lenis 재시작/유나 추가')
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
// var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
// if (special_pattern.test(mb_id) == true) {
// alert("아이디는 특수문자를 사용할수 없습니다.");
// mb_id.focus();
// return false;
// }
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/index.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
<script>
// 쿼리스트링 파싱 함수
function getQueryString(name) {
const intro = document.querySelector('.intro_wrap');
intro.style.display = "none";
const mainMask = document.querySelector('.main_mask');
mainMask.classList.add('skip');
// mainMask.style.aimation = 'none';
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
</script>
+709
View File
@@ -0,0 +1,709 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once __DIR__ . '/asset_urls.php';
?>
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5GX3FS9R');
</script>
<!-- End Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-7J3S6MHW3Y"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-7J3S6MHW3Y');
</script>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="디지털전환시대 EG-BIM, 도면과 3차원 정보모델을 하나의 S/W로" />
<meta name="keywords" content="EG-BIM, 이지빔, egbim, eg bim, CAD, 대안CAD, 도면, BIM, 삼안, 한맥, 바론컨설턴트" />
<meta name="naver-site-verification" content="a054b2ea2f9aeb1284d0e9409a7b117189ee7734" />
<!-- Open Graph: 카카오톡 미리보기용 -->
<meta property="og:title" content="EG-BIM" />
<meta property="og:description" content="디지털전환시대 EG-BIM, 도면과 3차원 정보모델을 하나의 S/W로" />
<meta property="og:image" content="<?php echo egbim_img_url('og-main-thumb.JPG'); ?>" />
<meta property="og:url" content="/egbim/" />
<meta property="og:type" content="website" />
<title>EG-BIM</title>
<link rel="stylesheet" href="/egbim/css/reset.css" />
<link rel="stylesheet" href="/egbim/css/font.css" />
<link rel="stylesheet" href="/egbim/css/style.css" />
<link rel="stylesheet" href="/egbim/theme/basic/skin/qa/basic/style.css?ver=2303229">
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="/egbim/js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="/egbim/js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="/egbim/js/common.js"></script>
<script type="text/javascript" src="/egbim/js/popup.js"></script>
<script>
window.EGBIM_IMG_BASE_URL = <?php echo json_encode(egbim_img_url()); ?>;
</script>
<script type="text/javascript" src="/egbim/js/index.js"></script>
<link rel="icon" href="/favicon.ico" type="image/x-icon">
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5GX3FS9R"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<!--메인페이지 공시팝업-->
<!-- <div class="notice-backdrop" id="egbimNoticeDim"></div>
<div class="notice-box" id="egbimNoticeBox" role="dialog" aria-modal="true" aria-labelledby="egbimNoticeTitle">
<button class="notice-close" id="egbimNoticeClose" aria-label="닫기">×</button>
<h3 id="egbimNoticeTitle">공지 안내</h3>
<p>
<strong>EG-BIM 프로그램 사용자 인증 신규 시스템 도입</strong>으로 인해<br>
<b>기존 회원분들께서는 재가입</b> 해주시기 바랍니다.
</p>
<div class="notice-actions">
<button class="btn-today" id="egbimNoticeToday">오늘 하루 보지 않기</button>
<button class="btn-ok" id="egbimNoticeOk">확인</button>
</div>
</div> -->
<div class="wrapper">
<div class="main_mask">
<!-- Header -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<?php
// 오늘 날짜 (Y-m-d 형식)
$main_today = date('Y-m-d');
// 시작일과 종료일
$main_startDate = '2025-12-01';
$main_endDate = '2026-07-31';
// 기간 내에 있으면 배너 표시
if ($main_today >= $main_startDate && $main_today <= $main_endDate) {
// 쿠키 확인
$popup_hidden = isset($_COOKIE['hide_popup']) ? $_COOKIE['hide_popup'] : '';
if ($popup_hidden !== date('Y-m-d'))
include_once($member_skin_path.'/main_popup.skin.php');
}
?>
<!-- 모든 팝업페이지 경로 -->
<!-- main -->
<div class="main">
<ul class="pagination_main">
<li><div class="page_01 page_on">EG-BIM 소개</div><span>01</span></li>
<li><div class="page_02">인터페이스</div><span>02</span></li>
<li><div class="page_03">주요기능</div><span>03</span></li>
<li><div class="page_04">도면관리</div><span>04</span></li>
<li><div class="page_05">for BIM</div><span>05</span></li>
</ul>
<div class="main_link">
<a href="#01" class="main_link_01 link_on" onclick="location.href='<?php echo G5_BBS_URL ?>/value.php'"></a>
<a href="#02" class="main_link_02" onclick="location.href='<?php echo G5_BBS_URL ?>/interface.php'"></a>
<a href="#03" class="main_link_03" onclick="location.href='<?php echo G5_BBS_URL ?>/primary.php'"></a>
<a href="#04" class="main_link_04" onclick="location.href='<?php echo G5_BBS_URL ?>/floorplan.php'"></a>
<a href="#05" class="main_link_05" onclick="location.href='<?php echo G5_BBS_URL ?>/forbim.php'"></a>
</div>
<div class="bg_video">
<video id="video_play" muted playsinline>
<source src="<?php echo egbim_img_url('main_1.mp4'); ?>" type="video/mp4" class="main_video_01">
</video>
</div>
<!-- <button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button> -->
<!-- FOOTER -->
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
<!-- //FOOTER -->
</div>
</div>
<div class="intro_wrap">
<div class="intro_mask"></div>
<div class="intro_txt">
<div class="txt_mask"><span><b>디지털전환시대</b></span></div>
<div class="txt_mask"><span><font class="egbim k">EG-BIM_software</font></span></div>
<div class="txt_mask"><span><em>도면</em>과 <em>3차원 정보모델</em>을 <br class="brk "><em>하나의</em> S/W로</span></div>
</div>
</div>
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
$(function(){
// footer family site toggle
$('.family_btn').click(function(e){
e.stopPropagation();
$('.family_list, .family_btn').toggleClass('family_on');
});
$(document).click(function(e){
if(!$(e.target).closest('.family_wrap').length){
$('.family_list, .family_btn').removeClass('family_on');
}
});
});
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//descope 로그인, 로그아웃 js
function updateHeaderMenu() {
var isLoggedIn = !!sessionStorage.getItem("sessionJwt");
// role 체크 예시 (로그인 시 저장해놓은 값)
var adminList = [
'b24014@hanmaceng.co.kr',
'kjy0426@hanmaceng.co.kr',
'b23065@hanmaceng.co.kr',
'b23008@baroncs.co.kr',
'cjy627@hanmaceng.co.kr',
'b23072@hanmaceng.co.kr'
];
var loginId = sessionStorage.getItem('loginId') || '';
var normalizedLoginId = loginId.toLowerCase();
var isAdmin = adminList.includes(normalizedLoginId);
if ($('#hid_mb_id').length) {
$('#hid_mb_id').val(isLoggedIn ? loginId : '');
}
if (isLoggedIn) {
$('.my_join2, .my_login2').show();
$('.my_join, .my_login').hide();
// 마이페이지/관리자 메뉴 동적 출력
if (isAdmin) {
$('#my_join2').html("<a href='https://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
} else {
$('#my_join2').html("<a href='javascript:mypage03();'>마이페이지</a>");
}
} else {
$('.my_join2, .my_login2').hide();
$('.my_join, .my_login').show();
$('#my_join2').html(""); // 혹시모를 내용 초기화
}
}
function descopeLogout() {
fetch('/egbim/skin/member/basic/descope_logout.php', {
method: 'POST',
credentials: 'include' // PHPSESSID 쿠키 전송
})
.then(res => {
if (!res.ok) throw new Error('서버 로그아웃 실패');
// 1) 로컬 저장소 정리
// sessionStorage.removeItem("refreshJwt");
// sessionStorage.removeItem("sessionJwt");
// sessionStorage.removeItem("userRole");
// sessionStorage.removeItem("userName");
// sessionStorage.removeItem("loginId");
sessionStorage.clear();
localStorage.clear();
// 2) UI 갱신
updateHeaderMenu();
window.dispatchEvent(new CustomEvent('descope-auth-changed', {
detail: { loginId: '' }
}));
// 3) 로그인 페이지로 이동
window.location.href = '/egbim/index.php';
})
.catch(err => {
console.error(err);
alert('로그아웃 중 오류가 발생했습니다.');
});
}
$(document).ready(function() {
// 기존에 있던 updateHeaderMenu() 호출 뒤에
$('#my_login2 a').off('click').on('click', function(e){
e.preventDefault();
descopeLogout();
});
});
$(document).ready(function() {
updateHeaderMenu();
// (필요하다면, 로그인 성공 후에도 항상 updateHeaderMenu(); 호출)
});
//descope login
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '/egbim/skin/member/basic/descope_login.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
dataType : "json",
success : function(res){
if(res.status === "ok") {
// 토큰 저장
// sessionStorage.setItem("refreshJwt", res.refreshJwt);
sessionStorage.setItem("sessionJwt", res.sessionJwt);
// ✅ 사용자 정보 저장
if (res.user) {
sessionStorage.setItem("loginId", res.user.loginIds?.[0] || '');
sessionStorage.setItem("userName", res.user.name || '');
sessionStorage.setItem("company", res.user.customAttributes?.company || '');
sessionStorage.setItem("familyCompany", res.user.customAttributes?.familyCompany || '');
sessionStorage.setItem("position", res.user.customAttributes?.position || '');
sessionStorage.setItem("team", res.user.customAttributes?.team || '');
sessionStorage.setItem("familyUniqueKey", res.user.customAttributes?.familyUniqueKey || '');
sessionStorage.setItem("phone", res.user.phone || '');
}
// ✅ 추가: 관리자 등 정보 저장
if(res.user && res.user.roleNames && res.user.roleNames[0])
sessionStorage.setItem("userRole", res.user.roleNames[0]);
else
sessionStorage.removeItem("userRole");
// ✅ 로그인 후 메뉴 갱신
updateHeaderMenu();
window.dispatchEvent(new CustomEvent('descope-auth-changed', {
detail: {
loginId: res.user?.loginIds?.[0] || '',
user: res.user || null
}
}));
// UI 처리
$('.popup_wrap').hide();
$('body').css('overflow', '');
lenis.start();
// alert('로그인 하셨습니다.');
} else {
alert(res.message || "로그인 실패");
// 🔴 실패 횟수에 따라 안내 배너 교체
if (res.failCount && res.failCount >= 8) {
updateLoginBanner("fail");
}
}
},
error : function(err){
alert(err.statusText || "통신 오류");
}
});
});
// ✅ 배너 교체 함수
function updateLoginBanner(type = "default") {
const $banner = $('#login_notice_banner');
if (!$banner.length) return;
if (type === "default") {
$banner.css({ background: "#063e01ff", color: "#fff" });
$banner.find("strong").text("[로그인 시스템 변경 안내]");
$banner.find("p.left").html(`
더 나은 보안을 위해 2025년 8월 8일부터 로그인 시스템이 변경되었습니다.<br>
기존 회원 또한 신규 시스템에 맞춰 재가입을 진행해주시기 바랍니다.
`);
$banner.find("p:last").html(`※ 로그인 및 가입 관련 문의: <strong>010-8721-7453</strong>`);
}
if (type === "fail") {
$banner.css({ background: "#6a0202ff", color: "#faf6f6ff" });
$banner.find("strong").text("[로그인 시도 제한 안내]");
$banner.find("p.left").html(`
비밀번호 입력을 <strong>7회 이상 연속 실패</strong>하셨습니다.<br>
<strong>8번째 시도부터 3분 대기</strong>가 적용됩니다.<br>
10회 이상 실패 시 계정이 잠금 처리됩니다.
`);
$banner.find("p:last").text("");
}
}
//회원가입 약관동의
// $('#fregister button[type=submit]').click(function(e){
// e.preventDefault();
// let agree11 = $('#agree11').val();
// let agree21 = $('#agree21').val();
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : "POST",
// datatype : "json",
// contentType: 'application/json; charset=utf-8',
// data : {
// 'agree11' : agree11,
// 'agree21' : agree21
// },
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// },
// error : function(err){
// alert(err);
// }
// });
// });
// 회원가입 약관동의 (중복 바인딩 방지용 네임스페이스 사용)
// $('#fregister button[type=submit]').off('click.agree').on('click.agree', function (e) {
// e.preventDefault();
// // ① 체크 여부는 is(':checked') 로 판단
// var agree1 = $('#agree11').is(':checked');
// var agree2 = $('#agree21').is(':checked');
// if (!(agree1 && agree2)) {
// alert('약관에 모두 동의해주세요.');
// return false;
// }
// // ② 둘 다 체크되어 있으면 서버로 넘길 값 만들기
// // (PHP register_form.php에서 $_POST['agree'], $_POST['agree2']로 받게)
// $.ajax({
// url: '<?php echo G5_URL ?>/bbs/register_form.php',
// type: 'POST',
// dataType: 'html', // or 'json' (서버 응답 형식에 맞게)
// // contentType/processData 기본값 유지 ← JSON 전송 아니면 이게 맞습니다.
// data: {
// agree: 1,
// agree2: 1
// },
// success: function (data) {
// // 통과 시 다음 화면으로 전환
// $('#pop_agreement').hide();
// $('#pop_register_form').show(); // 실제 다음 팝업 ID에 맞춰 수정
// $('body').css('overflow', 'hidden');
// },
// error: function (xhr) {
// alert('처리 중 오류가 발생했습니다.\n다시 시도해주세요.');
// }
// });
// });
// $(document).ready(function() {
// // 기존에 바인딩된 거 있으면 제거 (중복 방지)
// $('#fregister button[type=submit], #btn_agree').off('click.agree');
// $('#fregister button[type=submit], #btn_agree').on('click.agree', function(e){
// e.preventDefault();
// e.stopPropagation();
// e.stopImmediatePropagation();
// // 체크 여부는 반드시 :checked 로 확인해야 함
// var a1 = $('#agree11').is(':checked');
// var a2 = $('#agree21').is(':checked');
// if (!(a1 && a2)) {
// alert('약관에 모두 동의해주세요.');
// return false; // 진행 막기
// }
// // === 여기부터는 통과 시 동작(필요 없으면 주석 처리 가능) ===
// // AJAX 그대로 유지하되, 실제 동작하려면 서버가 받는 파라미터명에 맞추세요.
// // 서버 기본 로직은 보통 'agree', 'agree2'를 받습니다.
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : 'POST',
// dataType : 'json',
// // contentType 은 JSON 전송할 때만 쓰세요. 지금은 기본 폼 인코딩으로 보냅니다.
// // contentType: 'application/json; charset=utf-8',
// data : {
// 'agree' : a1 ? 1 : 0, // 서버가 'agree' 로 받는 경우
// 'agree2' : a2 ? 1 : 0
// },
// success : function(data){
// // 필요 시 다음 단계 이동
// // $('#pop_agreement').hide();
// // $('#pop_register_form').show();
// // $('body').css('overflow','hidden');
// },
// error : function(err){
// alert('오류가 발생했습니다. 잠시 후 다시 시도해주세요.');
// console.error(err);
// }
// });
// });
// });
//이지빔 프로그램 회원가입 url 쿼리스트링 파싱 함수
function getQueryString(name) {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
//251013 위치 이동
const intro = document.querySelector('.intro_wrap');
intro.style.display = "none";
const mainMask = document.querySelector('.main_mask');
mainMask.classList.add('skip');
// mainMask.style.aimation = 'none';
//251013 위치 이동 END
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
//이지빔 프로그램 비밀번호 재설정 url 쿼리스트링 파싱 함수
$(document).ready(function() {
const urlParams = new URLSearchParams(window.location.search);
const popup = urlParams.get('popup');
const token = urlParams.get('t');
if (popup === 'pwreset') {
// 팝업 전체 열기
$('#pop_search').show();
$('body').css('overflow', 'hidden');
// 내부 컨텐츠 모두 숨기기
$('#pop_search .popup_contents_wrap').hide();
if (token) {
// 토큰이 있으면 비밀번호 재설정 단계
if (!sessionStorage.getItem('pwreset_shown')) {
$('#password_reset').show();
sessionStorage.setItem('pwreset_shown', '1');
}
} else {
// 토큰이 없으면 아이디 입력 단계 (첫 번째 .popup_contents_wrap)
$('#pop_search .popup_contents_wrap').first().show();
}
}
// 닫기 버튼
$('#pop_search .btn_close').on('click', function() {
$('#pop_search').hide();
$('body').css('overflow', '');
});
});
//로그인 팝업창 쿼리스트링
document.addEventListener("DOMContentLoaded", function(){
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.get("popup") === "login") {
const $popup = $("#pop_login");
if ($popup.length) {
$popup.show();
// ✅ 배너가 없으면 붙이기
if (!$("#login_notice_banner").length) {
const bannerHtml = `
<div id="login_notice_banner" class="login-notice-banner" style="
background:#0f3a2f;color:#fff;border-radius:12px;padding:14px 44px 14px 14px;
position:relative;margin:0 0 12px 0;line-height:1.6;word-break:keep-all;">
<button type="button" class="lnb-close" aria-label="닫기" style="
position:absolute;right:10px;top:8px;background:transparent;border:0;
color:#fff;font-size:20px;cursor:pointer;">×</button>
<strong style="display:block;margin-bottom:6px;">[로그인 시스템 변경 안내]</strong>
<p class="left" style="margin:0 0 6px;">
더 나은 보안을 위해 2025년 8월 8일부터
로그인 시스템이 변경되었습니다.
기존 회원 또한 신규 시스템에 맞춰<br>
재가입을 진행해주시기 바랍니다.
</p>
<p style="margin:0;">※ 로그인 및 가입 관련 문의: <strong>02-2141-7434</strong></p>
</div>
`;
$("#pop_login .popup_contents_wrap").prepend(bannerHtml);
// 닫기 버튼 동작
$("#login_notice_banner .lnb-close").on("click", function(){
$("#login_notice_banner").fadeOut(120);
});
} else {
$("#login_notice_banner").show();
}
}
}
});
// //공지사항 팝업 스크립트
// (function(){
// const KEY = 'egbim_notice_2025-08-07'; // 키 바꾸면 전체 사용자에게 다시 노출
// const dim = document.getElementById('egbimNoticeDim');
// const box = document.getElementById('egbimNoticeBox');
// const btnX = document.getElementById('egbimNoticeClose');
// const btnOk = document.getElementById('egbimNoticeOk');
// const btnToday = document.getElementById('egbimNoticeToday');
// function todayStr(){
// const d = new Date(); return d.toISOString().slice(0,10);
// }
// function shouldShow(){
// const v = localStorage.getItem(KEY);
// // 항상 띄우고 싶으면 다음 줄을 `return true;` 로 바꾸세요.
// return v !== todayStr();
// }
// function openNotice(){
// dim.style.display = 'block';
// box.style.display = 'block';
// document.body.style.overflow = 'hidden';
// if (typeof lenis !== 'undefined') try{ lenis.stop(); }catch(_){}
// }
// function closeNotice(storeToday){
// if (storeToday) localStorage.setItem(KEY, todayStr());
// dim.style.display = 'none';
// box.style.display = 'none';
// document.body.style.overflow = '';
// if (typeof lenis !== 'undefined') try{ lenis.start(); }catch(_){}
// }
// btnOk.addEventListener('click', () => closeNotice(true)); // 확인 누르면 오늘은 다시 안봄
// btnToday.addEventListener('click', () => closeNotice(true)); // 오늘 하루 보지 않기
// btnX.addEventListener('click', () => closeNotice(true));
// dim.addEventListener('click', () => closeNotice(true));
// document.addEventListener('DOMContentLoaded', () => {
// if (shouldShow()) openNotice();
// });
// })();
/* 메인 마우스 클릭 문구 */
if (window.location.pathname === '/egbim/index.php' || window.location.pathname === '/egbim/' || window.location.pathname === '/egbim') {
// 커서 따라다니는 텍스트 요소 생성
const cursorText = document.createElement('div');
cursorText.className = 'cursor-text';
cursorText.textContent = 'Click!';
cursorText.style.cssText = `
position: fixed;
pointer-events: none;
z-index: 9999;
font-size: 20px;
color: #fff;
font-weight: 500;
white-space: nowrap;
transform: translate(-0%, -50%);
transition: opacity 0.3s;
`;
document.body.appendChild(cursorText);
// 마우스 움직임 추적
document.addEventListener('mousemove', (e) => {
// 마우스 위치의 요소 확인
const elementUnderMouse = document.elementFromPoint(e.clientX, e.clientY);
// footer 또는 .popup_wrap 영역인지 확인
const isInFooter = elementUnderMouse?.closest('footer');
const isInPopup = elementUnderMouse?.closest('.popup_wrap');
const isInFloating = elementUnderMouse?.closest('.floating_menu');
const isInPagination = elementUnderMouse?.closest('.pagination_main');
const isInHeader = elementUnderMouse?.closest('.js__header');
const isInSitemap = elementUnderMouse?.closest('.popup_sitemap');
// footer나 popup 영역이면 숨김
if (isInFooter || isInPopup || isInFloating || isInPagination || isInHeader || isInSitemap) {
cursorText.style.opacity = '0';
} else {
cursorText.style.opacity = '1';
// 커서 오른쪽 아래에 위치
cursorText.style.left = (e.clientX + 15) + 'px';
cursorText.style.top = (e.clientY + 15) + 'px';
}
});
// 마우스가 페이지를 벗어나면 숨김
document.addEventListener('mouseleave', () => {
cursorText.style.opacity = '0';
});
document.addEventListener('mouseenter', () => {
cursorText.style.opacity = '1';
});
}
</script>
@@ -0,0 +1,418 @@
<?php
session_start();
// include_once(G5_BBS_URL.'/login_check_tova.php');
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
add_javascript('<script src="'.G5_JS_URL.'/jquery.register_form.js"></script>', 0);
?>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Main</title>
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/reset.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/font.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/style.css" />
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="<?php echo G5_JS_URL ?>/common.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/include.js"></script>
<script type="text/javascript" src="<?php echo G5_JS_URL ?>/popup.js"></script>
</head>
<script>
// $(document).ready(function(){
// $(".gnb_logout").on("click", function() {
// if(!confirm("로그아웃 하시겠습니까?")){
// return false;
// }else{
// location.href="/tova/bbs/logout.php";
// }
// });
// $(".mv_op_frmat").on("click", function() {
// $("#op_id").val('');
// $("#op_pw").val('');
// if($('.mv_op_frmat_area').is(':visible')===false){
// $(".mv_op_frmat_area").css('display','block');
// $("#op_id").focus();
// }else{
// $(".mv_op_frmat_area").css('display','none');
// }
// });
// $(".move_frmat").on("click", function() {
// var op_id = $("#op_id").val();
// var op_pw = $("#op_pw").val();
// var ActionMode = 'SCREEN_15';
// if(op_id!=="" && op_pw!=="" ){
// $("#op_id").val('');
// $("#op_pw").val('');
// $(".mv_op_frmat_area").css('display','none');
// var form = document.createElement('form');
// form.setAttribute('method', 'post');
// form.setAttribute('target', 'op_frmat');
// form.setAttribute('action', "http://cloud.hanmaceng.co.kr/service/gaia/sys/controller/manage/gaiaserver_controller.php" );
// document.charset = "utf-8";
// var hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', 'ActionMode'); hiddenField.setAttribute('value', ActionMode); form.appendChild(hiddenField);
// var hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', 'op_id'); hiddenField.setAttribute('value', op_id); form.appendChild(hiddenField);
// var hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', 'op_pw'); hiddenField.setAttribute('value', op_pw); form.appendChild(hiddenField);
// document.body.appendChild(form);
// form.submit();
// /*
// //시추주상도 양식관리
// //http://cloud.hanmaceng.co.kr/service/gaia/sys/controller/manage/gaiaserver_controller.php?ActionMode=SCREEN_15
// window.open("http://cloud.hanmaceng.co.kr/service/gaia/sys/controller/manage/gaiaserver_controller.php?ActionMode=SCREEN_15&op_id="+op_id+"&op_pw="+op_pw,"op_frmat","width=1500,height=900,scrollbars=yes,status=no,location=no,directories=no,toolbar=no,menubar=no,left={$itemdata2.left},top={$itemdata2.top},resizable=yes");
// */
// }else{
// //location.href="/gaiahome/bbs/logout.php";
// $(".mv_op_frmat_area").css('display','none');
// }
// });
// });
// var ua = navigator.userAgent;
// /*-----------------------------------------------------------------------------*/
// var isie =(/msie/i).test(navigator.userAgent); //ie
// var isie6 =(/msie 6/i).test(navigator.userAgent); //ie 6
// var isie7 =(/msie 7/i).test(navigator.userAgent); //ie 7
// var isie8 =(/msie 8/i).test(navigator.userAgent); //ie 8
// var isie9 =(/msie 9/i).test(navigator.userAgent); //ie 9
// var isfirefox =(/firefox/i).test(navigator.userAgent); //firefox
// var isapple =(/applewebkit/i).test(navigator.userAgent); //safari,chrome
// var isopera =(/opera/i).test(navigator.userAgent); //opera
// /*-----------------------------------------------------------------------------*/
// var isios =(/(ipod|iphone|ipad)/i).test(navigator.userAgent);//ios
// var isipad =(/(ipad)/i).test(navigator.userAgent);//ipad
// var isandroid =(/android/i).test(navigator.userAgent);//android
// var islgtelecom =(/lgtelecom/i).test(navigator.userAgent);//lgtelecom
// var isblackberry=(/blackberry/i).test(navigator.userAgent);//blackberry
// var issamsung =(/samsung/i).test(navigator.userAgent);//samsung
// var issymbian =(/symbian/i).test(navigator.userAgent);//symbian
// var issony =(/sony/i).test(navigator.userAgent);//sony
// var isSCH =(/SCH-/i).test(navigator.userAgent);//SCH-
// var isSPH =(/SPH-/i).test(navigator.userAgent);//SPH-
// /*-----------------------------------------------------------------------------*/
// function divice_confirm() { //접속기기 구분
// $("#browserVer").val(ua);
// // alert(navigator.maxTouchPoints);
// // alert(navigator.userAgent);
// //if(isios || isipad || isandroid || islgtelecom || isblackberry || issamsung || issymbian || issony || isSCH || isSPH || navigator.appVersion.indexOf('Windows') == -1){
// if( isandroid || islgtelecom || isblackberry || issamsung || issymbian || issony || isSCH || isSPH){
// //alert("각종 모바일 접속::");
// return "M";//mobile
// }else{//web접속
// if(isios || isipad || navigator.appVersion.indexOf('Windows') == -1){
// //alert("ios 접속::");
// if((isios || isipad == -1) && navigator.maxTouchPoints>0){
// //alert('애플 모바일기기');
// return "M";//mobile
// }else{//web접속
// return "W";//web
// }
// }else{//web접속
// return "W";//web
// }
// }
// }//divice_confirm
</script>
<body>
<div class="wrapper main_wrap">
<div class="main_mask">
<!-- Header -->
<header class="header">
<h1>
<img src="<?php echo G5_URL ?>/img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my">
<img src="<?php echo G5_URL ?>/img/ico_my.svg" alt="">
<ul class="menu_my_list">
<!-- <li class="my_login"><a href="javascript:login();">로그인</a></li>
<li class="my_join"><a href="javascript:agreement();">회원가입</a></li> -->
<li id="mypage_btn" class="my_page"><a href="javascript:mypage01();">마이페이지</a></li>
<li id="logout_btn" class="my_logout"><a href="<?php echo G5_BBS_URL ?>/logout.php;">로그아웃</a></li>
<li id="join_btn" class="my_join"><a href="javascript:agreement();">회원가입</a></li>
<li id="login_btn" class="my_login"><a href="javascript:login();">로그인</a></li>
</ul>
</div>
<div class="menu_ham"><a href="javascript:sitemap();"><img src="<?php echo G5_URL ?>/img/ico_ham.svg" alt=""></a></div>
</div>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">FAQ</a></li>
<li class="floating_buy"><a href="">구매하기</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 팝업 닫기 버튼(팝업 페이지 안에 있으니 작동안함) -->
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!-- 모든 팝업페이지 경로
페이지를 팝업으로 노출 시키니,
팝업창을 닫기 후 다시 열었을때 입력된 내용이 그대로 뜨는 현상이 있음,
이는 개발팀에 요청을해야 할 것 같긴합니다..
-->
<!-- <div class="pop_open" data-include-path="../skin/member/basic/login.skin.php"></div> -->
<?php
require_once($member_skin_path.'/login.skin.php');
require_once($member_skin_path.'/mypage.skin.php');
require_once($member_skin_path.'/register.skin.php');
require_once($member_skin_path.'/register_form.skin.php');
require_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- <div class="pop_open" data-include-path="pop/pop_join.html"></div>
<div class="pop_open" data-include-path="pop/pop_login.html"></div>
<div class="pop_open" data-include-path="pop/pop_mypage01.html"></div>
<div class="pop_open" data-include-path="pop/pop_mypage02.html"></div>
<div class="pop_open" data-include-path="pop/pop_mypage03.html"></div>
<div class="pop_open" data-include-path="pop/pop_search.html"></div> -->
<!-- 모든 팝업페이지 경로 -->
<!-- main -->
<main class="main">
<ul class="pagination_main">
<li class="page_list_wrap">
<div class="page_01 page_on"><img src="<?php echo G5_URL ?>/img/logo_w.svg" alt=""></div><span class="page_num">01</span>
</li>
<li class="page_list_wrap">
<div class="page_02"><span>주요기능</span></div><span class="page_num">02</span>
</li>
<li class="page_list_wrap">
<div class="page_03"><span>공로분석</span></div><span class="page_num">03</span>
</li>
<li class="page_list_wrap">
<div class="page_04"><span>대중교통</span></div><span class="page_num">04</span>
</li>
</ul>
<div class="main_link">
<a href="#01" class="main_link_01 link_on"></a>
<a href="#02" class="main_link_02"></a>
<a href="#03" class="main_link_03"></a>
<a href="#04" class="main_link_04"></a>
</div>
<div class="bg_video">
<video id="video_play" class="bg_video_content" autoplay muted>
<source src="<?php echo G5_URL ?>/img/main_01.mp4" type="video/mp4" class="main_video_01">
</video>
</div>
<footer class="footer_off">
<div class="footer_close"></div>
<div class="footer_wrap">
<div class="footer_right">
<img src="<?php echo G5_URL ?>/img/baron_logo.svg" alt="">
<div class="footer_privercy">
<span><strong>개인정보 처리방침</strong></span>
<div class="line_div"></div>
<span>이용약관</span>
</div>
<div class="copyright">
<span>© 2017 Bron. All rights reserved.</span>
</div>
</div>
<div class="footer_left">
<ul class="footer_menu">
<li>
<a href="<?php echo G5_BBS_URL?>/value.php">TOVA 소개</a>
</li>
<li>
<a href="<?php echo G5_BBS_URL?>/primary.php">주요기능</a>
</li>
<li>
<a href="<?php echo G5_BBS_URL?>/road.php">공로분석</a>
</li>
<li>
<a href="<?php echo G5_BBS_URL?>/public.php">대중교통</a>
</li>
</ul>
<div class="footer_sitemap">
<span>TOVA의 <em>다양한 소식</em>을 만나보세요</span>
<div class="tova_sns">
<a href="" class="tova_cafe"><img src="<?php echo G5_URL ?>/img/ico_cafe.svg" alt=""></a>
<a href="" class="tova_facebook"><img src="<?php echo G5_URL ?>/img/ico_facebook.svg" alt=""></a>
</div>
<div class="family_wrap">
<div class="family_btn">
<span>Family Site</span><img src="<?php echo G5_URL ?>/img/ico_angle.svg" alt="">
</div>
<ul class="family_list">
<li><a href="http://www.hanmaceng.co.kr/" target="_blank">한맥기술</a></li>
<li><a href="http://www.samaneng.co.kr/" target="_blank">삼안</a></li>
<li><a href="http://www.jangheon.co.kr/" target="_blank">장헌산업</a></li>
<li><a href="http://www.pre-cast.co.kr/" target="_blank">피티씨</a></li>
<li><a href="http://www.hallasanup.com/" target="_blank">한라산업개발</a></li>
</ul>
</div>
</div>
</div>
</div>
</footer>
</div>
<div class="intro_wrap">
<div class="intro_content">
<div class="intro_mask"></div>
<div class="intro_txt">
<div class="txt_mask"><span class="intro_txt_01">지속적인 도전과 혁신으로</span></div>
<div class="txt_mask"><span class="intro_txt_02"><img src="<?php echo G5_URL ?>/img/logo_b.svg" alt="">는</span></div>
<div class="txt_mask"><span class="intro_txt_03"><strong>교통분석의 미래를 선도</strong>합니다.</span></div>
</div>
</div>
</div>
</main>
<!-- //main -->
</div>
</div>
</body>
<script>
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
alert(ss);
if(ss.length == 5){
$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage').hide();
$('#pop_search').hide();
location.reload();
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// alert(ss);
// },
error : function(err){
alert(err);
}
});
});
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
alert(ss);
if(ss.length == 5){
$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_join').hide();
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
@@ -0,0 +1,599 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5GX3FS9R');
</script>
<!-- End Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="디지털전환시대 EG-BIM, 도면과 3차원 정보모델을 하나의 S/W로" />
<meta name="keywords" content="EG-BIM, 이지빔, egbim, eg bim, CAD, 대안CAD, 도면, BIM" />
<title>EG-BIM</title>
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/reset.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/font.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/style.css" />
<link rel="stylesheet" href="<?php echo G5_URL ?>/theme/basic/skin/qa/basic/style.css?ver=2303229">
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/common.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/popup.js"></script>
<script type="text/javascript" src="<?php echo G5_URL ?>/js/index.js"></script>
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5GX3FS9R"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="wrapper">
<input id="hid_mb_id" name="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<div class="main_mask">
<!-- Header -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 모든 팝업페이지 경로 -->
<!-- main -->
<div class="main">
<ul class="pagination_main">
<li><div class="page_01 page_on">EG-BIM 소개</div><span>01</span></li>
<li><div class="page_02">인터페이스</div><span>02</span></li>
<li><div class="page_03">주요기능</div><span>03</span></li>
<li><div class="page_04">도면관리</div><span>04</span></li>
<li><div class="page_05">for BIM</div><span>05</span></li>
</ul>
<div class="main_link">
<a href="#01" class="main_link_01 link_on" onclick="location.href='<?php echo G5_BBS_URL ?>/value.php'"></a>
<a href="#02" class="main_link_02" onclick="location.href='<?php echo G5_BBS_URL ?>/interface.php'"></a>
<a href="#03" class="main_link_03" onclick="location.href='<?php echo G5_BBS_URL ?>/primary.php'"></a>
<a href="#04" class="main_link_04" onclick="location.href='<?php echo G5_BBS_URL ?>/floorplan.php'"></a>
<a href="#05" class="main_link_05" onclick="location.href='<?php echo G5_BBS_URL ?>/forbim.php'"></a>
</div>
<div class="bg_video">
<video id="video_play" autoplay muted>
<source src="<?php echo G5_URL ?>/img/main_1.mp4" type="video/mp4" class="main_video_01">
</video>
</div>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
</div>
</div>
<div class="intro_wrap">
<div class="intro_mask"></div>
<div class="intro_txt">
<div class="txt_mask"><span><b>디지털전환시대</b></span></div>
<div class="txt_mask"><span><font class="egbim k">EG-BIM_software</font></span></div>
<div class="txt_mask"><span><em>도면</em>과 <em>3차원 정보모델</em>을 <em>하나의</em> S/W로</span></div>
</div>
</div>
</div>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
//$('.family_btn').click(function(){
// $(".family_list").toggleClass(" family_on");
//});
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
$('.btn_close').show();
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#reg_mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').hide();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
//$("#reg_form_join").hide();
//$("#pop_result").show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/index.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
@@ -0,0 +1,47 @@
<?php include_once __DIR__ . '/asset_urls.php'; ?>
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<div class="footer_close"></div>
<div class="footer_wrap">
<div class="comp_info">
<a href="https://baroncs.co.kr" target="_blank" rel="noopener noreferrer"><img class="logo_baron" src="<?php echo egbim_img_url('baron_logo.svg'); ?>" alt=""></a>
<span class="ceo">대표이사 <em>장종찬</em></span>
</div>
<div class="comp_inner">
<span class="btn_privacy"><a href="javascript:privacy('privacy');"><em>개인정보 처리방침</em></a><a href="javascript:privacy('agreement');">이용약관</a></span>
<div class="comp_contact">
<ul class="footer_menu">
<li><a href="<?php echo G5_BBS_URL ?>/value.php">EG-BIM</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/interface.php">인터페이스</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/primary.php">주요기능</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/floorplan.php">도면관리</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/forbim.php">for BIM</a></li>
</ul>
<div class="footer_sitemap">
<!-- <span>TOVA의 <em>다양한 소식</em>을 만나보세요</span>
<div class="tova_sns">
<a href="https://cafe.naver.com/imtas" class="tova_cafe"><img src="<?php echo G5_URL ?>/img/ico_cafe.svg" alt=""></a>
<a href="" class="tova_facebook"><img src="<?php echo G5_URL ?>/img/ico_facebook.svg" alt=""></a>
</div>-->
<div class="family_wrap">
<div class="family_btn"><span>Family Site</span><i></i></div>
<ul class="family_list">
<li><a href="http://k-tova.com" target="_blank">TOVA</a></li>
<li><a href="http://k-gaia.co.kr" target="_blank">GAIA</a></li>
<li><a href="https://kngil.com/" target="_blank">KNGIL</a></li>
<!--li>바론컨설턴트(준비중)</li-->
<li><a href="https://baroncs.co.kr" target="_blank">(주)바론컨설턴트</a></li>
</ul>
</div>
</div>
</div>
<span class="address">[05774] 서울특별시 송파구 오금로 554(거여동)<br class="brk"> <em class="tel">Tel : 02-2141-7434</em></span>
<span class="copyright">© BARON Consultants Co,.Ltd All Rights Reserved.</span>
</div>
</div>
</footer>
@@ -0,0 +1,38 @@
<div class="footer_close"></div>
<div class="footer_wrap">
<div class="comp_info">
<img class="logo_baron" src="<?php echo G5_URL ?>/img/baron_logo.svg" alt="">
<span class="ceo">대표이사 <em>장종찬</em></span>
</div>
<div class="comp_copy">
<span class="btn_privacy"><a href="javascript:privacy('privacy');"><em>개인정보 처리방침</em></a><a href="javascript:privacy('agreement');">이용약관</a></span>
<span class="address">[05774] <em>서울특별시 송파구 오금로 554(거여동)</em></span>
<span class="copyright">© BARON Consultant Co,.Ltd All Rights Reserved.</span>
</div>
<div class="comp_contact">
<ul class="footer_menu">
<li><a href="<?php echo G5_BBS_URL ?>/value.php">EG-BIM</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/interface.php">인터페이스</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/primary.php">주요기능</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/floorplan.php">도면관리</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/forbim.php">for BIM</a></li>
</ul>
<div class="footer_sitemap">
<!-- <span>TOVA의 <em>다양한 소식</em> 만나보세요</span>
<div class="tova_sns">
<a href="https://cafe.naver.com/imtas" class="tova_cafe"><img src="<?php echo G5_URL ?>/img/ico_cafe.svg" alt=""></a>
<a href="" class="tova_facebook"><img src="<?php echo G5_URL ?>/img/ico_facebook.svg" alt=""></a>
</div>-->
<div class="family_wrap">
<div class="family_btn"><span>Family Site</span><i></i></div>
<ul class="family_list">
<li><a href="http://k-tova.com" target="_blank">TOVA</a></li>
<li><a href="http://k-gaia.co.kr" target="_blank">GAIA</a></li>
<li>바론컨설턴트(준비중)</li>
</ul>
</div>
</div>
</div>
</div>
@@ -0,0 +1,212 @@
<?php
include_once __DIR__ . '/asset_urls.php';
// include_once $_SERVER['DOCUMENT_ROOT']."/egbim/skin/member/basic/descope_session.php";
// 디버깅용 출력
echo "<!-- isAdmin = " . (isset($isAdmin) ? ($isAdmin ? "true" : "false") : "unset") . " -->";
// ✅ DB 연결
$pdo = new PDO("mysql:host=db;dbname=egbim;charset=utf8mb4", "egbim", "baron3840!!", [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
// ✅ EG-BIM (product_code=8) 기준 최신 external_version 가져오기
$stmt = $pdo->prepare("
SELECT external_version
FROM deploy_versions
WHERE product_code = 1
ORDER BY updated_at DESC
LIMIT 1
");
$stmt->execute();
$version = $stmt->fetchColumn() ?: '1.0.0'; // fallback
// ✅ 다운로드 URL 자동 생성
$download_url = "https://release-download.hmac.kr/eg-bim/{$version}/setup_eg-bim_{$version}.exe";
?>
<header class="js__header">
<h1><a href="/egbim/index.php"></a></h1>
<div class="language">
<a href="#" class="on">KR</a>
<a href="/eng/">EN</a>
</div>
<!-- ✅ 사용자 관리 아이콘 (관리자 전용, 기본 숨김) -->
<div id="userListBtnWrap" class="menu_userlist" style="display:none;">
<a href="/egbim/skin/member/basic/descope_user_list_skin_w3.php" target="_blank" rel="noopener noreferrer">
<img src="<?php echo egbim_img_url('ico_userlist.svg'); ?>" alt="사용자 관리">
</a>
</div>
<!-- ✅ 업로드 아이콘 (관리자 전용, 기본 숨김) -->
<div id="uploadBtnWrap" class="menu_upload" style="display:none;">
<a href="/egbim/sw_upload/upload_page.php">
<img src="<?php echo egbim_img_url('ico_upload.svg'); ?>" alt="업로드">
</a>
</div>
<div class="menu_my">
<img src="<?php echo egbim_img_url('ico_my.svg'); ?>" alt="">
<ul class="menu_my_list" style="display: none;">
<li id="my_join2" class="my_join2">
<!-- JS에서 "마이페이지" or "관리페이지" 링크를 넣어줌 -->
</li>
<li id="my_login2" class="my_login2">
<a href="javascript:descopeLogout();">로그아웃</a>
</li>
<li id="my_join" class="my_join">
<a href="javascript:agreement();">회원가입</a>
</li>
<li id="my_login" class="my_login">
<a href="javascript:login();">로그인</a>
</li>
</ul>
</div>
<div class="menu_ham"><a href="javascript:sitemap();"><div></div><div></div><div></div></a></div>
</header>
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="/egbim/bbs/descope_qa_list.php">
<i></i>
<span>Q&A</span>
</a></li>
<li class="floating_guide"><a href="https://baron-consultant.github.io/eg-bim_guide\help" target="_blank">
<i></i>
<span>사용가이드</span>
</a></li>
<li class="floating_download">
<a href="<?= htmlspecialchars($download_url) ?>">
<i></i>
<span>다운로드</span>
</a></li>
<li class="floating_buy"><a href="/egbim/bbs/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<script>
// 다운로드 버튼 안내
// $(document).on('click', '.floating_download a', function (e) {
// e.preventDefault(); // 링크 이동 막기
// alert('다운로드 기능은 준비중입니다.');
// });
</script>
<script>
(function () {
const ADMIN_ICON_IDS = [
'b24014@hanmaceng.co.kr',
'kjy0426@hanmaceng.co.kr',
'b23065@hanmaceng.co.kr',
'shyeom1@samaneng.com',
'cjy627@hanmaceng.co.kr',
'b23072@hanmaceng.co.kr',
'b23018@hanmaceng.co.kr',
'm20331@hanmaceng.co.kr',
'cozyjin@hanmaceng.co.kr',
'm24031@hanmaceng.co.kr',
'b24051@hanmaceng.co.kr',
'rmsgud1202@hanmaceng.co.kr',
'm21318@hanmaceng.co.kr',
'b21367@hanmaceng.co.kr',
'b25023@hanmaceng.co.kr',
'sdi9429@naver.com',
'junsuy@hanmail.net',
'ilphilo92@gmail.com'
];
function normalizeLoginId(loginId) {
return String(loginId || '').trim().toLowerCase();
}
function isAdminLoginId(loginId) {
return ADMIN_ICON_IDS.includes(normalizeLoginId(loginId));
}
function applyAdminIconVisibility(loginId) {
const visible = isAdminLoginId(loginId || sessionStorage.getItem('loginId'));
$('#uploadBtnWrap').toggle(visible);
$('#userListBtnWrap').toggle(visible);
}
// 공지 HTML (닫기 가능 / 입력 방해 X)
const bannerHtml = `
<div id="login_notice_banner" class="login-notice-banner" style="
background:#0f3a2f;color:#fff;border-radius:12px;padding:14px 44px 14px 14px;
position:relative;margin:0 0 12px 0;line-height:1.6;word-break:keep-all;">
<button type="button" class="lnb-close" aria-label="닫기" style="
position:absolute;right:10px;top:8px;background:transparent;border:0;
color:#fff;font-size:20px;cursor:pointer;">×</button>
<strong style="display:block;margin-bottom:6px;">[로그인 시스템 변경 안내]</strong>
<p class="left" style="margin:0 0 6px;">
더 나은 보안을 위해 2025년 8월 8일부터
로그인 시스템이 변경되었습니다.
기존 회원 또한 신규 시스템에 맞춰<br>
재가입을 진행해주시기 바랍니다.
</p>
<p style="margin:0;">※ 로그인 및 가입 관련 문의: <strong>02-2141-7434</strong></p>
</div>
`;
function injectBanner() {
const $wrap = $('#pop_login .popup_contents_wrap');
if (!$wrap.length) return false;
if (!$('#login_notice_banner').length) {
$wrap.prepend(bannerHtml);
// 닫기 버튼
$('#login_notice_banner .lnb-close').on('click', function () {
$('#login_notice_banner').fadeOut(120);
});
} else {
$('#login_notice_banner').show();
}
return true;
}
// 로그인 메뉴 클릭 → 기존 login() 실행 + 배너 주입(팝업 DOM 뜰 때까지 재시도)
$(document).on('click', '#my_login a, .my_login a', function (e) {
e.preventDefault();
if (typeof login === 'function') login();
let tries = 0;
const maxTries = 20; // 1초 정도 재시도(50ms*20)
const iv = setInterval(() => {
tries++;
if (injectBanner() || tries >= maxTries) clearInterval(iv);
}, 50);
});
// 혹시 로그인 팝업을 다른 곳에서 열어도 배너가 필요하면, 팝업 열릴 때 한 번 더 시도
$(document).on('show-login-popup', function () {
injectBanner();
});
$(function () {
applyAdminIconVisibility();
});
window.addEventListener('storage', function (e) {
if (e.key === 'loginId') {
applyAdminIconVisibility(e.newValue || '');
}
});
window.addEventListener('descope-auth-changed', function (e) {
applyAdminIconVisibility(e.detail?.loginId || '');
});
let checkCount = 0;
const checkInterval = setInterval(function () {
checkCount += 1;
const loginId = sessionStorage.getItem('loginId') || '';
if (loginId || checkCount >= 20) {
applyAdminIconVisibility(loginId);
clearInterval(checkInterval);
}
}, 300);
})();
</script>
@@ -0,0 +1,20 @@
<h1><a href="<?php echo G5_URL ?>/index.php"></a></h1>
<div class="menu_my">
<img src="<?php echo G5_URL ?>/img/ico_my.svg" alt="">
<ul class="menu_my_list" style="display: none;">
<li id="my_join2" class="my_join2">
<?
if ($_SESSION['is_admin']=="super"){
echo "<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>";
} else {
echo "<a href='javascript:mypage01();'>마이페이지</a>";
}
?>
</li>
<li id="my_login2" class="my_login2"><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<li id="my_join" class="my_join"><a href="javascript:agreement();">회원가입</a></li>
<li id="my_login" class="my_login"><a href="javascript:login();">로그인</a></li>
</ul>
</div>
<div class="menu_ham"><a href="javascript:sitemap();"><div></div><div></div><div></div></a></div>
+267
View File
@@ -0,0 +1,267 @@
<!--popup_wrap-->
<div id="pop_noti" class="popup_wrap popup-notice" style="display:none">
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/8.4.7/swiper-bundle.min.css"
/>
<!--popup_in-->
<div class="popup_in">
<span class="border-effect"></span>
<div class="popup_container notice">
<style>
.popup-notice a.link {
cursor: pointer;
}
.popup-notice .swiper-wrapper {
height: auto !important;
}
.popup-notice .swiper-pagination {
width: auto;
right: 8px;
left: auto;
padding: 4px 12px;
border-radius: 25px;
background: rgba(255,255,255,0.6);
font-size:14px
}
/* PC */
@media (min-width: 1280px) {
.popup-notice .popupSwiper {
max-width:900px;
}
.popup-notice .swiper-slide:nth-child(2n) {
position: relative;
}
.popup-notice .swiper-slide:nth-child(2n):before {
content:" ";
position: absolute;
left: 0;
top:0;
width: 1px;height: 100%;
background:#9E958F;
}
.popup-notice .swiper-slide {
min-width: 450px;
/* height: 598px;*/
border-radius: 4px;
}
.popup_container.notice img {
/* max-width: 450px; */
}
.popup-notice .swiper-pagination {
display:none;
}
}
@media (max-width: 721px) {
.popup_container.notice img,
.popup_container.notice img {
max-width: 640px;
margin: 0 auto;
}
}
</style>
<div class="pop-content" >
<div class="swiper popupSwiper">
<div class="swiper-wrapper">
<?php
// 오늘 날짜 (Y-m-d 형식)
$main_today = date('Y-m-d');
// 시작일과 종료일
$mainpop_startDate = '2025-12-01';
$mainpop_endDate = '2025-12-31';
// 기간 내에 있으면 배너 표시
if ($main_today >= $mainpop_startDate && $main_today <= $mainpop_endDate) {
?>
<!-- 슬라이드 1 -->
<div class="swiper-slide">
<a class="link" href="http://www.ggherald.com/default/index_view_page.php?part_idx=119&idx=74819" target="_blank" alt="‘경기헤럴드’ 기사 전문 바로가기">
<picture>
<source
media="(max-width: 721px)"
srcset="./img/main_popup/251128_main_popup_m.png"
/>
<img
src="./img/main_popup/251128_main_popup.png"
alt="EG-BIM X 의왕도시공사 민관 상호 협력 성장 지원을 위한 업무 협약 체결"
/>
</picture>
</a>
</div>
<?php
}
?>
<!-- 슬라이드 2 -->
<div class="swiper-slide">
<picture>
<source
media="(max-width: 721px)"
srcset="./img/main_popup/260703_popup_mo.png"
/>
<img
src="./img/main_popup/260703_popup.png"
alt="EG-BIM 로그인 방식 변경 안내"
/>
</picture>
</div>
</div>
<!-- 페이지네이션 -->
<div class="swiper-pagination"></div>
</div>
</div>
<div class="btn-wrap">
<button id="todayClose" type="button">오늘 하루 보지 않기</button>
<button id="popupClose" type="button">닫기</button>
</div>
</div>
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/8.4.7/swiper-bundle.min.js"></script>
<script>
(function() {
// 쿠키 읽기 함수
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length === 2) return parts.pop().split(";").shift();
return null;
}
// 페이지 로드시 쿠키 확인
var hidePopup = getCookie("hide_popup");
var today = new Date().toISOString().split('T')[0];
var popup = document.getElementById("pop_noti");
if (!popup) return;
// 오늘 날짜와 쿠키 날짜가 같으면 팝업 숨김
if (hidePopup === today) {
popup.style.display = "none";
} else {
popup.style.display = "block";
}
// 팝업 외부 클릭 시 닫기
popup.onclick = function(e) {
if (e.target === popup) {
popup.style.display = "none";
}
};
// 닫기 버튼
var closeBtn = document.getElementById("popupClose");
if (closeBtn) {
closeBtn.onclick = function() {
popup.style.display = "none";
};
}
// 오늘 하루 보지 않기 버튼
var todayChk = document.getElementById("todayClose");
if (todayChk) {
todayChk.onclick = function() {
var today = new Date();
var expire = new Date();
expire.setHours(23, 59, 59, 999);
document.cookie = "hide_popup=" + today.toISOString().split('T')[0] + "; path=/; expires=" + expire.toUTCString();
popup.style.display = "none";
};
}
let swiper = null;
let resizeTimer = null;
let currentMode = window.innerWidth >= 1280 ? 'pc' : 'mo';
function initSwiper() {
const slideCount = document.querySelectorAll(
'.popupSwiper .swiper-slide'
).length;
const isSingleSlide = slideCount <= 1;
const isPC = window.innerWidth >= 1280;
swiper = new Swiper('.popupSwiper', {
speed: 600,
watchOverflow: true,
slidesPerView: isSingleSlide ? 1 : (isPC ? 2 : 1),
slidesPerGroup: isSingleSlide ? 1 : (isPC ? 2 : 1),
loop: false, // ⭐ loop 고정 (중요)
allowTouchMove: !isPC,
observer: true,
observeParents: true,
updateOnWindowResize: false,
pagination: {
el: '.swiper-pagination',
type: 'fraction',
},
on: {
init(swiper) {
// single slide면 pagination 숨김
if (isSingleSlide && swiper.pagination?.el) {
swiper.pagination.el.style.display = 'none';
} else if (swiper.pagination?.el) {
swiper.pagination.el.style.display = isPC ? 'none' : 'block';
}
},
// fraction NaN 방어
paginationUpdate(swiper, el) {
if (el && el.textContent.includes('NaN')) {
swiper.slideTo(0, 0, false);
swiper.update();
requestAnimationFrame(() => {
swiper.pagination.render();
swiper.pagination.update();
});
}
}
}
});
}
// 최초 실행
initSwiper();
// PC ↔ MO 경계 통과 시에만 재생성
window.addEventListener('resize', function () {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(() => {
const newMode = window.innerWidth >= 1280 ? 'pc' : 'mo';
if (newMode !== currentMode) {
currentMode = newMode;
if (swiper) {
swiper.destroy(true, true);
swiper = null;
}
initSwiper();
}
}, 200);
});
})();
</script>
@@ -0,0 +1,148 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="' . $member_skin_url . '/style.css">', 0);
if ($config['cf_cert_use'] && ($config['cf_cert_simple'] || $config['cf_cert_ipin'] || $config['cf_cert_hp']))
add_javascript('<script src="'.G5_JS_URL.'/certify.js?v='.G5_JS_VER.'"></script>', 0);
?>
<!-- 기존 회원 본인인증 시작 { -->
<div class="member_cert_refresh">
<form name="fcertrefreshform" id="member_cert_refresh" action="<?php echo $action_url ?>" onsubmit="return fcertrefreshform_submit(this);" method="POST" autocomplete="off">
<input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="url" value="<?php echo $urlencode ?>">
<input type="hidden" name="cert_type" value="<?php echo $member['mb_certify']; ?>">
<input type="hidden" name="mb_id" value="<?php echo $member['mb_id']; ?>">
<input type="hidden" name="mb_hp" value="<?php echo $member['mb_hp']; ?>">
<input type="hidden" name="mb_name" value="<?php echo $member['mb_name']; ?>">
<input type="hidden" name="cert_no" value="">
<section id="member_cert_refresh_private">
<h2>(필수) 추가 개인정보처리방침 안내</h2>
<div>
<div class="tbl_head01 tbl_wrap">
<table>
<caption>추가 개인정보처리방침 안내</caption>
<thead>
<tr>
<th>목적</th>
<th>항목</th>
<th>보유기간</th>
</tr>
</thead>
<tbody>
<tr>
<td>이용자 식별 및 본인여부 확인</td>
<td>생년월일<?php echo (empty($member['mb_dupinfo']))? ", 휴대폰 번호(아이핀 제외)" : ""; ?>, 암호화된 개인식별부호(CI)</td>
<td>회원 탈퇴 시까지</td>
</tr>
</tbody>
</table>
</div>
</div>
<fieldset class="member_cert_refresh_agree">
<input type="checkbox" name="agree2" value="1" id="agree21" class="selec_chk">
<label for="agree21"><span></span><b class="sound_only">추가 개인정보처리방침에 동의합니다.</b></label>
</fieldset>
</section>
<section id="find_info" class="new_win">
<h2>인증수단 선택하기</h2>
<div class="find_btn">
<?php
if ($config['cf_cert_use']) {
echo '<div class="cert_btn">';
if ($config['cf_cert_simple']) {
echo '<button type="button" id="win_sa_kakao_cert" class="btn_submit win_sa_cert" data-type="">간편인증</button>' . PHP_EOL;
}
if ($config['cf_cert_hp'])
echo '<button type="button" id="win_hp_cert" class="btn_submit">휴대폰 본인확인</button>' . PHP_EOL;
if ($config['cf_cert_ipin'])
echo '<button type="button" id="win_ipin_cert" class="btn_submit">아이핀 본인확인</button>' . PHP_EOL;
echo '</div>';
echo '<noscript>본인확인을 위해서는 자바스크립트 사용이 가능해야합니다.</noscript>' . PHP_EOL;
}
?>
</div>
</section>
</form>
<script>
$(function() {
var pageTypeParam = "pageType=register";
var f = document.fcertrefreshform;
<?php if ($config['cf_cert_use'] && $config['cf_cert_simple']) { ?>
// 이니시스 간편인증
var url = "<?php echo G5_INICERT_URL; ?>/ini_request.php";
var type = "";
var params = "";
var request_url = "";
$(".win_sa_cert").click(function() {
if (!fcertrefreshform_submit(f)) return false;
type = $(this).data("type");
params = "?directAgency=" + type + "&" + pageTypeParam;
request_url = url + params;
call_sa(request_url);
});
<?php } ?>
<?php if ($config['cf_cert_use'] && $config['cf_cert_ipin']) { ?>
// 아이핀인증
var params = "";
$("#win_ipin_cert").click(function() {
if (!fcertrefreshform_submit(f)) return false;
params = "?" + pageTypeParam;
var url = "<?php echo G5_OKNAME_URL; ?>/ipin1.php" + params;
certify_win_open('kcb-ipin', url);
return;
});
<?php } ?>
<?php if ($config['cf_cert_use'] && $config['cf_cert_hp']) { ?>
// 휴대폰인증
var params = "";
$("#win_hp_cert").click(function() {
if (!fcertrefreshform_submit(f)) return false;
params = "?" + pageTypeParam;
<?php
switch ($config['cf_cert_hp']) {
case 'kcb':
$cert_url = G5_OKNAME_URL.'/hpcert1.php';
$cert_type = 'kcb-hp';
break;
case 'kcp':
$cert_url = G5_KCPCERT_URL.'/kcpcert_form.php';
$cert_type = 'kcp-hp';
break;
case 'lg':
$cert_url = G5_LGXPAY_URL.'/AuthOnlyReq.php';
$cert_type = 'lg-hp';
break;
default:
echo 'alert("기본환경설정에서 휴대폰 본인확인 설정을 해주십시오");';
echo 'return false;';
break;
}
?>
certify_win_open("<?php echo $cert_type; ?>", "<?php echo $cert_url; ?>" + params);
return;
});
<?php } ?>
});
function fcertrefreshform_submit(f) {
if (!f.agree2.checked) {
alert("추가 개인정보처리방침에 동의하셔야 인증을 진행하실 수 있습니다.");
f.agree2.focus();
return false;
}
return true;
}
</script>
</div>
<!-- } 기존 회원 본인인증 끝 -->
@@ -0,0 +1,130 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head>
<!-- 회원 비밀번호 확인 시작 { -->
<div id="mb_confirm" class="mbskin">
<h1><?php echo $g5['title'] ?></h1>
<p>
<strong>비밀번호를 한번 더 입력해주세요.</strong>
<?php if ($url == 'member_leave.php') { ?>
비밀번호를 입력하시면 회원탈퇴가 완료됩니다.
<?php }else{ ?>
회원님의 정보를 안전하게 보호하기 위해 비밀번호를 한번 더 확인합니다.
<?php } ?>
</p>
<form name="fmemberconfirm" action="<?php echo $url ?>" onsubmit="return fmemberconfirm_submit(this);" method="post">
<input type="hidden" name="mb_id" value="<?php echo $member['mb_id'] ?>">
<input type="hidden" name="w" value="u">
<!-- <fieldset>
<span class="confirm_id">회원아이디</span>
<span id="mb_confirm_id"><?php //echo $member['mb_id'] ?></span>
<label for="confirm_mb_password" class="sound_only">비밀번호<strong>필수</strong></label>
<input type="password" name="mb_password" id="confirm_mb_password" required class="required frm_input" size="15" maxLength="20" placeholder="비밀번호">
<input type="submit" value="확인" id="btn_submit" class="btn_submit">
</fieldset> -->
<body>
<div class="wrapper">
<!-- Header -->
<header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header>
<!-- //Header -->
<!--popup_wrap-->
<div class="popup_wrap ">
<!--popup_in-->
<div class="popup_in">
<hgroup>
<div class="pop_close_wrap">
<button class="btn_close">
<div class="close_div"><img src="../img/ico_close.svg" alt=""></div>
</button>
</div>
</hgroup>
<!--popup_content-->
<div class="popup_content join">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">My pa</span>
<div class="join_info">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
회원님의 <em>정보 보호</em>를 <br>
위하여 <em>비밀번호</em>를 한번 더 확인합니다.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">ge</span>
<div class="contents_wrap">
<div class="content">
<table class="ph">
<tbody>
<tr>
<th class="h_4">비밀번호 확인</th>
<td>
<div class="id_wrap">
<input type="password" name="mb_password" id="confirm_mb_password" required class="required frm_input" placeholder="비밀번호 입력" required>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="join_btn_wrap">
<button id="btn_submit" type="submit" class="btn_submit">확인</button>
</div>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
</div>
</body>
</form>
</div>
<script>
function fmemberconfirm_submit(f)
{
document.getElementById("btn_submit").disabled = true;
return true;
}
</script>
<!-- } 회원 비밀번호 확인 끝 -->
@@ -0,0 +1,145 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head>
<!-- 회원 비밀번호 확인 시작 { -->
<div id="mb_confirm" class="mbskin">
<h1><?php echo $g5['title'] ?></h1>
<p>
<!-- <strong>비밀번호를 한번 더 입력해주세요.</strong> -->
<?php if ($url == 'member_leave.php') { ?>
비밀번호를 입력하시면 회원탈퇴가 완료됩니다.
<?php }else{ ?>
회원님의 정보를 안전하게 보호하기 위해 비밀번호를 한번 더 확인합니다.
<?php } ?>
</p>
<form name="fmemberconfirm" action="<?php echo $url ?>" onsubmit="return fmemberconfirm_submit(this);" method="post">
<input type="hidden" name="mb_id" value="<?php echo $member['mb_id'] ?>">
<input type="hidden" name="w" value="u">
<!-- <fieldset>
<span class="confirm_id">회원아이디</span>
<span id="mb_confirm_id"><?php //echo $member['mb_id'] ?></span>
<label for="confirm_mb_password" class="sound_only">비밀번호<strong>필수</strong></label>
<input type="password" name="mb_password" id="confirm_mb_password" required class="required frm_input" size="15" maxLength="20" placeholder="비밀번호">
<input type="submit" value="확인" id="btn_submit" class="btn_submit">
</fieldset> -->
<body>
<div class="wrapper">
<!-- Header -->
<header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header>
<!-- //Header -->
<!--popup_wrap-->
<div class="popup_wrap ">
<!--popup_in-->
<div class="popup_in">
<hgroup>
<div class="pop_close_wrap">
<button class="btn_close">
<div class="close_div"><img src="../img/ico_close.svg" alt=""></div>
</button>
</div>
</hgroup>
<!--popup_content-->
<div class="popup_content join">
<!--pop_join_left-->
<div class="pop_join_left">
<?php if ($url == 'member_leave.php') { ?>
<span class="bg_tit_left">Canc</span>
<div class="join_info">
<h1 class="h_1"> 회원탈퇴 </h1>
<h3 class="h_3">
회원님의 <em>정보 보호</em>를 <br>
위하여 <em>비밀번호</em>를 한번 더 확인합니다.
</h3>
</div>
<?php }else{ ?>
<span class="bg_tit_left">My pa</span>
<div class="join_info">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
회원님의 <em>정보 보호</em>를 <br>
위하여 <em>비밀번호</em>를 한번 더 확인합니다.
</h3>
</div>
<?php } ?>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<?php if ($url == 'member_leave.php') { ?>
<span class="bg_tit_right">el</span>
<?php }else{ ?>
<span class="bg_tit_right">ge</span>
<?php } ?>
<div class="contents_wrap">
<div class="content">
<table class="ph">
<tbody>
<tr>
<th class="h_4">비밀번호 확인</th>
<td>
<div class="id_wrap">
<input type="password" name="mb_password" id="confirm_mb_password" required class="required frm_input" placeholder="비밀번호 입력" required>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="join_btn_wrap">
<button id="btn_submit" type="submit" class="btn_submit">확인</button>
</div>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
</div>
</body>
</form>
</div>
<script>
function fmemberconfirm_submit(f)
{
document.getElementById("btn_submit").disabled = true;
return true;
}
</script>
<!-- } 회원 비밀번호 확인 끝 -->
+57
View File
@@ -0,0 +1,57 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 쪽지 목록 시작 { -->
<div id="memo_list" class="new_win">
<h1 id="win_title">
<?php echo $g5['title'] ?>
<div class="win_total">전체 <?php echo $kind_title ?>쪽지 <?php echo $total_count ?>통<br></div>
</h1>
<div class="new_win_con2">
<ul class="win_ul">
<li class="<?php if ($kind == 'recv') { ?>selected<?php } ?>"><a href="./memo.php?kind=recv">받은쪽지</a></li>
<li class="<?php if ($kind == 'send') { ?>selected<?php } ?>"><a href="./memo.php?kind=send">보낸쪽지</a></li>
<li><a href="./memo_form.php">쪽지쓰기</a></li>
</ul>
<div class="memo_list">
<ul>
<?php
for ($i=0; $i<count($list); $i++) {
$readed = (substr($list[$i]['me_read_datetime'],0,1) == 0) ? '' : 'read';
$memo_preview = utf8_strcut(strip_tags($list[$i]['me_memo']), 30, '..');
?>
<li class="<?php echo $readed; ?>">
<div class="memo_li profile_big_img">
<?php echo get_member_profile_img($list[$i]['mb_id']); ?>
<?php if (! $readed){ ?><span class="no_read">안 읽은 쪽지</span><?php } ?>
</div>
<div class="memo_li memo_name">
<?php echo $list[$i]['name']; ?> <span class="memo_datetime"><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $list[$i]['send_datetime']; ?></span>
<div class="memo_preview">
<a href="<?php echo $list[$i]['view_href']; ?>"><?php echo $memo_preview; ?></a>
</div>
</div>
<a href="<?php echo $list[$i]['del_href']; ?>" onclick="del(this.href); return false;" class="memo_del"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a>
</li>
<?php } ?>
<?php if ($i==0) { echo '<li class="empty_table">자료가 없습니다.</li>'; } ?>
</ul>
</div>
<!-- 페이지 -->
<?php echo $write_pages; ?>
<p class="win_desc"><i class="fa fa-info-circle" aria-hidden="true"></i> 쪽지 보관일수는 최장 <strong><?php echo $config['cf_memo_del'] ?></strong>일 입니다.
</p>
<div class="win_btn">
<button type="button" onclick="window.close();" class="btn_close">창닫기</button>
</div>
</div>
</div>
<!-- } 쪽지 목록 끝 -->
@@ -0,0 +1,60 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 쪽지 보내기 시작 { -->
<div id="memo_write" class="new_win">
<h1 id="win_title"><i class="fa fa-envelope-o" aria-hidden="true"></i> 쪽지 보내기</h1>
<div class="new_win_con2">
<ul class="win_ul">
<li><a href="./memo.php?kind=recv">받은쪽지</a></li>
<li><a href="./memo.php?kind=send">보낸쪽지</a></li>
<li class="selected"><a href="./memo_form.php">쪽지쓰기</a></li>
</ul>
<form name="fmemoform" action="<?php echo $memo_action_url; ?>" onsubmit="return fmemoform_submit(this);" method="post" autocomplete="off">
<div class="form_01">
<h2 class="sound_only">쪽지쓰기</h2>
<ul>
<li>
<label for="me_recv_mb_id" class="sound_only">받는 회원아이디<strong>필수</strong></label>
<input type="text" name="me_recv_mb_id" value="<?php echo $me_recv_mb_id; ?>" id="me_recv_mb_id" required class="frm_input full_input required" size="47" placeholder="받는 회원아이디">
<span class="frm_info">여러 회원에게 보낼때는 컴마(,)로 구분하세요.</span>
<?php if ($config['cf_memo_send_point']) { ?>
<br ><span class="frm_info">쪽지 보낼때 회원당 <?php echo number_format($config['cf_memo_send_point']); ?>점의 포인트를 차감합니다.</span>
<?php } ?>
</li>
<li>
<label for="me_memo" class="sound_only">내용</label>
<textarea name="me_memo" id="me_memo" required class="required"><?php echo $content ?></textarea>
</li>
<li>
<span class="sound_only">자동등록방지</span>
<?php echo captcha_html(); ?>
</li>
</ul>
</div>
<div class="win_btn">
<button type="submit" id="btn_submit" class="btn btn_b02 reply_btn">보내기</button>
<button type="button" onclick="window.close();" class="btn_close">창닫기</button>
</div>
</div>
</form>
</div>
<script>
function fmemoform_submit(f)
{
<?php echo chk_captcha_js(); ?>
return true;
}
</script>
<!-- } 쪽지 보내기 끝 -->
@@ -0,0 +1,64 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$nick = get_sideview($mb['mb_id'], $mb['mb_nick'], $mb['mb_email'], $mb['mb_homepage']);
if($kind == "recv") {
$kind_str = "보낸";
$kind_date = "받은";
}
else {
$kind_str = "받는";
$kind_date = "보낸";
}
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 쪽지보기 시작 { -->
<div id="memo_view" class="new_win">
<h1 id="win_title"><?php echo $g5['title'] ?></h1>
<div class="new_win_con2">
<!-- 쪽지함 선택 시작 { -->
<ul class="win_ul">
<li class="<?php if ($kind == 'recv') { ?>selected<?php } ?>"><a href="./memo.php?kind=recv">받은쪽지</a></li>
<li class="<?php if ($kind == 'send') { ?>selected<?php } ?>"><a href="./memo.php?kind=send">보낸쪽지</a></li>
<li><a href="./memo_form.php">쪽지쓰기</a></li>
</ul>
<!-- } 쪽지함 선택 끝 -->
<article id="memo_view_contents">
<header>
<h2>쪽지 내용</h2>
</header>
<div id="memo_view_ul">
<div class="memo_view_li memo_view_name">
<ul class="memo_from">
<li class="memo_profile">
<?php echo get_member_profile_img($mb['mb_id']); ?>
</li>
<li class="memo_view_nick"><?php echo $nick ?></li>
<li class="memo_view_date"><span class="sound_only"><?php echo $kind_date ?>시간</span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $memo['me_send_datetime'] ?></li>
<li class="memo_op_btn list_btn"><a href="<?php echo $list_link ?>" class="btn_b01 btn"><i class="fa fa-list" aria-hidden="true"></i><span class="sound_only">목록</span></a></li>
<li class="memo_op_btn del_btn"><a href="<?php echo $del_link; ?>" onclick="del(this.href); return false;" class="memo_del btn_b01 btn"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a></li>
</ul>
<div class="memo_btn">
<?php if($prev_link) { ?>
<a href="<?php echo $prev_link ?>" class="btn_left"><i class="fa fa-chevron-left" aria-hidden="true"></i> 이전쪽지</a>
<?php } ?>
<?php if($next_link) { ?>
<a href="<?php echo $next_link ?>" class="btn_right">다음쪽지 <i class="fa fa-chevron-right" aria-hidden="true"></i></a>
<?php } ?>
</div>
</div>
</div>
<p>
<?php echo conv_content($memo['me_memo'], 0) ?>
</p>
</article>
<div class="win_btn">
<?php if ($kind == 'recv') { ?><a href="./memo_form.php?me_recv_mb_id=<?php echo $mb['mb_id'] ?>&amp;me_id=<?php echo $memo['me_id'] ?>" class="reply_btn">답장</a><?php } ?>
<button type="button" onclick="window.close();" class="btn_close">창닫기</button>
</div>
</div>
</div>
<!-- } 쪽지보기 끝 -->
+150
View File
@@ -0,0 +1,150 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_mypage01" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="../img/ico_close.svg" alt=""></div>
</button>
<!--popup_content-->
<div class="popup_container mypage">
<!--pop_join_left-->
<div class="popup_tit">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
소중한 <em>내 정보</em>를<br> <em>최신</em>으로 관리하세요.
</h3>
</div>
<!--//pop_join_right-->
<div class="popup_contents_wrap">
<div class="my_info">
<div class="name">
<h4>김토바님<span>(A1122)</span></h4>
<a href="<?php echo G5_BBS_URL ?>/member_confirm.php">내 정보 수정</a>
</div>
<ul class="detail">
<li>
<div class=""><i class="phone"></i>휴대전화번호</div>
<span>010-1234-5678</span>
</li>
<li>
<div><i class="email"></i>이메일</div>
<span>A1122@naver.com</span>
</li>
<li>
<div><i class="company"></i>회사정보</div>
<span>(주)BBB XXX부</span>
</li>
</ul>
</div>
<div class="my_qna">
<h4>내 문의</h4>
<table>
<thead>
<tr>
<th style="width: 10%;">번호</th>
<th style="width: 10%;">구분</th>
<th style="width: 45%;">제목</th>
<th style="width: 15%;">글쓴이</th>
<th style="width: 10%;">날짜</th>
<th style="width: 10%;">조회</th>
</tr>
</thead>
<tbody>
<tr>
<td>11</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-22</td>
<td>31</td>
</tr>
<tr>
<td>12</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-23</td>
<td>32</td>
</tr>
<tr>
<td>13</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-24</td>
<td>33</td>
</tr>
<tr class="answer">
<td></td>
<td></td>
<td class="tit"><a href=""><i class="answer"></i><em>답글</em> <span>C기능 사용 방법 문의C기능 사용 방법</span> <i
class="lock"></i> </a> </td>
<td>관리자</td>
<td>24-06-24</td>
<td>33</td>
</tr>
<tr>
<td>13</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-24</td>
<td>33</td>
</tr>
</tbody>
</table>
</div>
<div class="pagination">
<button type="button" class="btn_prev"></button>
<ul class="pagination_list">
<li class="on"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
</ul>
<button type="button" class="btn_next"></button>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
@@ -0,0 +1,159 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_mypage01" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<div class="pop_close_wrap">
<button class="btn_close">
<div class="close_div"><img src="../img/ico_close.svg" alt=""></div>
</button>
</div>
<!--popup_content-->
<div class="popup_content mypage">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">My pa</span>
<div class="join_info">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
소중한 <em>내 정보</em>를 <br>
<em>최신</em>으로 관리하세요.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">ge</span>
<div class="contents_wrap">
<div class="my_info">
<div class="name">
<h4>김토바님<span>(A1122)</span></h4>
<a href="<?php echo G5_BBS_URL ?>/member_confirm.php">내 정보 수정</a>
</div>
<ul class="detail">
<li>
<div class=""><i class="phone"></i>휴대전화번호</div>
<span>010-1234-5678</span>
</li>
<li>
<div><i class="email"></i>이메일</div>
<span>A1122@naver.com</span>
</li>
<li>
<div><i class="company"></i>회사정보</div>
<span>(주)BBB XXX부</span>
</li>
</ul>
</div>
<div class="my_qna">
<h4>내 문의</h4>
<table>
<thead>
<tr>
<th style="width: 10%;">번호</th>
<th style="width: 10%;">구분</th>
<th style="width: 45%;">제목</th>
<th style="width: 15%;">글쓴이</th>
<th style="width: 10%;">날짜</th>
<th style="width: 10%;">조회</th>
</tr>
</thead>
<tbody>
<tr>
<td>11</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-22</td>
<td>31</td>
</tr>
<tr>
<td>12</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-23</td>
<td>32</td>
</tr>
<tr>
<td>13</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-24</td>
<td>33</td>
</tr>
<tr class="answer">
<td></td>
<td></td>
<td class="tit"><a href=""><i class="answer"></i><em>답글</em> <span>C기능 사용 방법 문의C기능 사용 방법</span> <i
class="lock"></i> </a> </td>
<td>관리자</td>
<td>24-06-24</td>
<td>33</td>
</tr>
<tr>
<td>13</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-24</td>
<td>33</td>
</tr>
</tbody>
</table>
</div>
<div class="pagination">
<button type="button" class="btn_prev"></button>
<ul class="pagination_list">
<li class="on"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
</ul>
<button type="button" class="btn_next"></button>
</div>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
+59
View File
@@ -0,0 +1,59 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once('./_common.php');
?>
<!--popup_wrap-->
<div class="popup_wrap" id="pop_mypage01">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!--popup_content-->
<div class="popup_container mypage log">
<!--pop_join_left-->
<div class="popup_tit">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
회원님의 <em>정보 보호</em>를 위하여<br> <em>비밀번호</em>를 한번 더 확인합니다.
</h3>
</div>
<!--//pop_join_right-->
<div class="popup_contents_wrap">
<form id="fmyconfirmpw" name="fmyconfirmpw" action="<?php //echo $login_action_url?>" onsubmit="return fmyconfirmpw_submit(this);" method="post">
<table> <!-- class="ph"//-->
<tbody>
<tr>
<th class="h_4">비밀번호 확인</th>
<td>
<div class="id_wrap">
<input type="password" id="password_mypage" name="password_mypage" placeholder="비밀번호 입력" required onkeyup="ufn_pw_onkeyup(this);">
</div>
</td>
</tr>
</tbody>
</table>
<div class="join_btn_wrap">
<button type="submit" id="btn_re_pw" >확인</button> <!-- onclick="javascript:mypage02()" //-->
</div>
</form>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<script>
function ufn_pw_onkeyup(l_pw){
if(l_pw.value.length>0){
document.getElementById('btn_re_pw').disabled = false;
}else{
document.getElementById('btn_re_pw').disabled = true;
}
}
</script>
<!--//popup_wrap-->
@@ -0,0 +1,68 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once('./_common.php');
?>
<!--popup_wrap-->
<div class="popup_wrap" id="pop_mypage01">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!--popup_content-->
<div class="popup_content join">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">My pa</span>
<div class="join_info">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
회원님의 <em>정보 보호</em>를 <br>
위하여 <em>비밀번호</em>를 한번 더 확인합니다.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">ge</span>
<div class="contents_wrap">
<form id="fmyconfirmpw" name="fmyconfirmpw" action="<?php //echo $login_action_url?>" onsubmit="return fmyconfirmpw_submit(this);" method="post">
<div class="content">
<table> <!-- class="ph"//-->
<tbody>
<tr>
<th class="h_4">비밀번호 확인</th>
<td>
<div class="id_wrap">
<input type="password" id="password_mypage" name="password_mypage" placeholder="비밀번호 입력" required onkeyup="ufn_pw_onkeyup(this);">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="join_btn_wrap">
<button type="submit" id="btn_re_pw" >확인</button> <!-- onclick="javascript:mypage02()" //-->
</div>
</form>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<script>
function ufn_pw_onkeyup(l_pw){
if(l_pw.value.length>0){
document.getElementById('btn_re_pw').disabled = false;
}else{
document.getElementById('btn_re_pw').disabled = true;
}
}
</script>
<!--//popup_wrap-->
@@ -0,0 +1,159 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
//add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_mypage02" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_content-->
<div class="popup_content mypage">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">My pa</span>
<div class="join_info">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
소중한 <em>내 정보</em>를 <br>
<em>최신</em>으로 관리하세요.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">ge</span>
<div class="contents_wrap">
<div class="my_info">
<div class="name">
<h4>김토바님<span>(A1122)</span></h4>
<a href="<?php echo G5_BBS_URL ?>/member_confirm.php">내 정보 수정</a>
</div>
<ul class="detail">
<!-- 라이센스 구매이력 부분 -->
<li class="license"></li>
<li>
<div class=""><i class="phone"></i>휴대전화번호</div>
<span>010-1234-5678</span>
</li>
<li>
<div><i class="email"></i>이메일</div>
<span>A1122@naver.com</span>
</li>
<li>
<div><i class="company"></i>회사정보</div>
<span>(주)BBB XXX부</span>
</li>
</ul>
</div>
<div class="my_qna">
<h4>내 문의</h4>
<table>
<thead>
<tr>
<th style="width: 10%;">번호</th>
<th style="width: 10%;">구분</th>
<th style="width: 45%;">제목</th>
<th style="width: 15%;">글쓴이</th>
<th style="width: 10%;">날짜</th>
<th style="width: 10%;">조회</th>
</tr>
</thead>
<tbody>
<tr>
<td>11</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-22</td>
<td>31</td>
</tr>
<tr>
<td>12</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-23</td>
<td>32</td>
</tr>
<tr>
<td>13</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-24</td>
<td>33</td>
</tr>
<tr class="answer">
<td></td>
<td></td>
<td class="tit"><a href=""><i class="answer"></i><em>답글</em> <span>C기능 사용 방법 문의C기능 사용 방법</span> <i
class="lock"></i> </a> </td>
<td>관리자</td>
<td>24-06-24</td>
<td>33</td>
</tr>
<tr>
<td>13</td>
<td>사용</td>
<td class="tit"><a href="">C기능 사용 방법 문의 <em>[1]</em></a></td>
<td>김토바</td>
<td>24-06-24</td>
<td>33</td>
</tr>
</tbody>
</table>
</div>
<div class="pagination">
<button type="button" class="btn_prev"></button>
<ul class="pagination_list">
<li class="on"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
</ul>
<button type="button" class="btn_next"></button>
</div>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
+179
View File
@@ -0,0 +1,179 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once('./_common.php');
include_once(G5_LIB_PATH.'/latest.lib.php');
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
$session_id = isset($_SESSION['session_id']) ? $_SESSION['session_id'] : '';
$mb_name = '';
$mb_hp = '';
$mb_comp_team = '';
$mb_comp = '';
$mb_email = '';
$result = null;
if ($session_id) {
$sql1 = " select mb_name, mb_hp, mb_comp_team, mb_email, mb_comp from {$g5['member_table']} where mb_id = '{$session_id}' ";
$row1 = sql_fetch($sql1);
$mb_name = isset($row1['mb_name']) ? $row1['mb_name'] : '';
$mb_hp = isset($row1['mb_hp']) ? $row1['mb_hp'] : '';
$mb_comp_team = isset($row1['mb_comp_team']) ? $row1['mb_comp_team'] : '';
$mb_comp = isset($row1['mb_comp']) ? $row1['mb_comp'] : '';
$mb_email = isset($row1['mb_email']) ? $row1['mb_email'] : '';
$sql2 = " select * from {$g5['qa_content_table']} where mb_id = '{$session_id}' ORDER BY qa_datetime DESC limit 5";
$result = sql_query($sql2);
}
// $qa_category = $row2['qa_category'];
// $qa_subject = $row2['qa_subject'];
// $qa_content = $row2['qa_content'];
// $qa_datetime = $row2['qa_datetime'];
// $qa_status = $row2['qa_status'];
$mylist = array();
$num = 1;
// $num = $total_count - ($page - 1) * $page_rows;
// $subject_len = G5_IS_MOBILE ? $qaconfig['qa_mobile_subject_len'] : $qaconfig['qa_subject_len'];
for($i=0; $result && $row=sql_fetch_array($result); $i++) {
$mylist[$i] = $row;
$mylist[$i]['category'] = get_text($row['qa_category']);
$mylist[$i]['subject'] = conv_subject($row['qa_subject'], $subject_len, '…');
if ($stx) {
$mylist[$i]['subject'] = search_font($stx, $mylist[$i]['subject']);
}
$mylist[$i]['view_href'] = G5_BBS_URL.'/qaview.php?qa_id='.$row['qa_id'].$qstr;
$mylist[$i]['icon_file'] = '';
if(trim($row['qa_file1']) || trim($row['qa_file2']))
$mylist[$i]['icon_file'] = '<img src="'.$qa_skin_url.'/img/icon_file.gif">';
$mylist[$i]['name'] = get_text($row['qa_name']);
$mylist[$i]['date'] = substr($row['qa_datetime'], 2, 8);
$mylist[$i]['num'] = $num;
$num += 1;
}
?>
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_mypage02" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_content-->
<div class="popup_container mypage">
<!--pop_join_left-->
<div class="popup_tit">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
소중한 <em>내 정보</em>를 <br><em> 최신</em>으로 관리하세요.
</h3>
</div>
<!--//pop_join_right-->
<div class="popup_contents_wrap">
<div class="my_info">
<div class="name">
<h4><?php echo $mb_name?>님<span>(<?php echo $session_id; ?>)</span></h4>
<button onclick="javascript:mypage03();">내 정보 수정</button>
</div>
<ul class="detail">
<!-- 라이센스 구매이력 부분 -->
<li class="license"></li>
<li>
<div class=""><i class="phone"></i>휴대전화번호</div>
<span id="span_hp"><?php echo $mb_hp?></span>
</li>
<li>
<div><i class="email"></i>이메일</div>
<span id="span_email"><?php echo $mb_email?></span>
</li>
<li>
<div><i class="company"></i>회사정보</div>
<!-- <span id="span_comp"><?php //echo $mb_comp.'<br>'.$mb_comp_team?></span> -->
<span id="span_comp"><?php echo $mb_comp?></span><br>
<span id="span_comp_team"><?php echo $mb_comp_team?></span>
</li>
</ul>
</div>
<div class="my_qna">
<h4>내 문의</h4>
<table>
<thead>
<tr>
<th style="width: 7%;">번호</th>
<th style="width: 10%;">구분</th>
<th style="width: max-contents;">제목</th>
<th style="width: 10%;">등록일</th>
<th style="width: 13%;">상태</th>
</tr>
</thead>
<tbody>
<?php
for ($i=0; $i<count($mylist); $i++) {
if ($i%2==0) $lt_class = "even";
else $lt_class = "";
?>
<tr class="<?php echo $lt_class ?>">
<td class="td_num" style="text-align: center;"><?php echo $mylist[$i]['num'];?></td>
<td class="td_subject" style="text-align: center;">
<span class="bo_cate_link" style="width:80px;"><?php echo $mylist[$i]['category']; ?></span>
<!-- <a href="<?php //echo $mylist[$i]['view_href']; ?>" class="bo_tit">
<?php //echo $mylist[$i]['subject']; ?>
<?php //if ($mylist[$i]['icon_file']) echo " <i class=\"fa fa-download\" aria-hidden=\"true\"></i>" ; ?>
</a> -->
</td>
<td class="td_name"><?php echo $mylist[$i]['qa_subject']; ?></td>
<td class="td_date"><?php echo $mylist[$i]['date']; ?></td>
<td class="td_stat"><span class=" <?php echo ($mylist[$i]['qa_status'] ? 'txt_done' : 'txt_rdy'); ?>"><?php echo ($mylist[$i]['qa_status'] ? '답변완료' : '답변대기'); ?></span></td>
</tr>
<?php
}
?>
<?php if ($i == 0) { echo '<tr><td colspan="5" style="text-align:center;">게시물이 없습니다.</td></tr>'; } ?>
</tbody>
</table>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
@@ -0,0 +1,190 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once('./_common.php');
include_once(G5_LIB_PATH.'/latest.lib.php');
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
$sql1 = " select mb_name, mb_hp, mb_comp_team, mb_email, mb_comp from {$g5['member_table']} where mb_id = '{$_SESSION['session_id']}' ";
$row1 = sql_fetch($sql1);
$mb_name = $row1['mb_name'];
$mb_hp = $row1['mb_hp'];
$mb_comp_team = $row1['mb_comp_team'];
$mb_comp = $row1['mb_comp'];
$mb_email = $row1['mb_email'];
$sql2 = " select * from {$g5['qa_content_table']} where mb_id = '{$_SESSION['session_id']}' ORDER BY qa_datetime DESC limit 5";
//echo $sql2."<br>";
$result = sql_query($sql2);
// $qa_category = $row2['qa_category'];
// $qa_subject = $row2['qa_subject'];
// $qa_content = $row2['qa_content'];
// $qa_datetime = $row2['qa_datetime'];
// $qa_status = $row2['qa_status'];
$mylist = array();
$num = 1;
// $num = $total_count - ($page - 1) * $page_rows;
// $subject_len = G5_IS_MOBILE ? $qaconfig['qa_mobile_subject_len'] : $qaconfig['qa_subject_len'];
for($i=0; $row=sql_fetch_array($result); $i++) {
$mylist[$i] = $row;
$mylist[$i]['category'] = get_text($row['qa_category']);
$mylist[$i]['subject'] = conv_subject($row['qa_subject'], $subject_len, '…');
if ($stx) {
$mylist[$i]['subject'] = search_font($stx, $mylist[$i]['subject']);
}
$mylist[$i]['view_href'] = G5_BBS_URL.'/qaview.php?qa_id='.$row['qa_id'].$qstr;
$mylist[$i]['icon_file'] = '';
if(trim($row['qa_file1']) || trim($row['qa_file2']))
$mylist[$i]['icon_file'] = '<img src="'.$qa_skin_url.'/img/icon_file.gif">';
$mylist[$i]['name'] = get_text($row['qa_name']);
$mylist[$i]['date'] = substr($row['qa_datetime'], 2, 8);
$mylist[$i]['num'] = $num;
$num += 1;
}
?>
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_mypage02" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_content-->
<div class="popup_content mypage">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">My pa</span>
<div class="join_info">
<h1 class="h_1"> 마이페이지 </h1>
<h3 class="h_3">
소중한 <em>내 정보</em>를 <br>
<em>최신</em>으로 관리하세요.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">ge</span>
<div class="contents_wrap">
<div class="my_info">
<div class="name">
<h4><?php echo $mb_name?>님<span>(<?echo $_SESSION['session_id'];?>)</span></h4>
<button onclick="javascript:mypage03();">내 정보 수정</button>
</div>
<ul class="detail">
<!-- 라이센스 구매이력 부분 -->
<li class="license"></li>
<li>
<div class=""><i class="phone"></i>휴대전화번호</div>
<span id="span_hp"><?php echo $mb_hp?></span>
</li>
<li>
<div><i class="email"></i>이메일</div>
<span id="span_email"><?php echo $mb_email?></span>
</li>
<li>
<div><i class="company"></i>회사정보</div>
<!-- <span id="span_comp"><?php //echo $mb_comp.'<br>'.$mb_comp_team?></span> -->
<span id="span_comp"><?php echo $mb_comp?></span><br>
<span id="span_comp_team"><?php echo $mb_comp_team?></span>
</li>
</ul>
</div>
<div class="my_qna">
<tbody>
<h4>내 문의</h4>
<table>
<thead>
<tr>
<th style="width: 5%;">번호</th>
<th style="width: 12%;">구분</th>
<th style="width: 60%;">제목</th>
<th style="width: 10%;">등록일</th>
<th style="width: 15%;">상태</th>
</tr>
</thead>
<tbody>
<?php
for ($i=0; $i<count($mylist); $i++) {
if ($i%2==0) $lt_class = "even";
else $lt_class = "";
?>
<tr class="<?php echo $lt_class ?>">
<td class="td_num" style="text-align: center;"><?php echo $mylist[$i]['num'];?></td>
<td class="td_subject" style="text-align: center;">
<span class="bo_cate_link" style="width:80px;"><?php echo $mylist[$i]['category']; ?></span>
<!-- <a href="<?php //echo $mylist[$i]['view_href']; ?>" class="bo_tit">
<?php //echo $mylist[$i]['subject']; ?>
<?php //if ($mylist[$i]['icon_file']) echo " <i class=\"fa fa-download\" aria-hidden=\"true\"></i>" ; ?>
</a> -->
</td>
<td class="td_name"><?php echo $mylist[$i]['qa_subject']; ?></td>
<td class="td_date"><?php echo $mylist[$i]['date']; ?></td>
<td class="td_stat"><span class=" <?php echo ($mylist[$i]['qa_status'] ? 'txt_done' : 'txt_rdy'); ?>"><?php echo ($mylist[$i]['qa_status'] ? '답변완료' : '답변대기'); ?></span></td>
</tr>
<?php
}
?>
<?php if ($i == 0) { echo '<tr><td colspan="5" style="text-align:center;">게시물이 없습니다.</td></tr>'; } ?>
</tbody>
</table>
</tbody>
</div>
<!-- <div class="pagination">
<button type="button" class="btn_prev"></button>
<ul class="pagination_list">
<li class="on"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
</ul>
<button type="button" class="btn_next"></button>
</div> -->
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
+476
View File
@@ -0,0 +1,476 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once('./_common.php');
$member = array_merge(array(
'mb_id' => '',
'mb_name' => '',
'mb_hp' => '',
'mb_comp' => '',
'mb_comp_team' => '',
), is_array($member) ? $member : array());
//add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!--popup_wrap-->
<div class="popup_wrap" id="pop_mypage03">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!--popup_content-->
<div class="popup_container mypage edit">
<!--pop_join_left-->
<div class="popup_tit">
<h1 class="h_1">마이페이지</h1>
<!-- <h3 class="h_3">
소중한 <em>내 정보</em>를 <br>
<em>최신</em>으로 관리하세요.
</h3> -->
</div>
<!--//pop_join_right-->
<div class="popup_contents_wrap">
<fieldset>
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap" style="height: 400px;">
<table>
<tbody>
<tr>
<th class="h_4">아이디</th>
<td>
<div class="id_wrap">
<input type="text" class="full_input" id="show_mb_id" name="mb_id" value="<?php echo $member['mb_id'] ?>" readonly style="color: #9aa0a6;">
</div>
</td>
</tr>
<tr>
<th class="h_4">사번</th>
<td>
<div class="password_wrap">
<input type="text" name="mb_password" id="show_mb_employeeid" class="frm_input full_input" data-editable>
</div>
</td>
</tr>
<tr>
<th class="h_4">이름</th>
<td>
<div class="name_wrap">
<input type="text" id="show_mb_name" name="mb_name" value="<?php echo get_text($member['mb_name']) ?>" class="frm_input full_input" data-editable>
</div>
</td>
</tr>
<tr>
<th class="h_4">직위</th>
<td>
<div class="position_wrap">
<input type="text" id="show_mb_position" name="mb_position" class="frm_input full_input" data-editable>
</div>
</td>
</tr>
<tr>
<th class="h_4">휴대전화번호</th>
<td>
<div class="phone_wrap">
<input type="text" name="mb_hp" value="<?php echo preg_replace("/[^0-9]*/s", "", $member['mb_hp']); ?>" id="show_mb_hp" class="frm_input full_input" data-editable>
</div>
</td>
</tr>
<tr id="row_company">
<th class="h_4">회사정보</th>
<td>
<div class="company_wrap">
<input type="text" name="mb_comp" value="<?php echo get_text($member['mb_comp'])?>" id="show_mb_comp" class="frm_input" data-editable>
<input type="text" name="mb_comp_team" value="<?php echo get_text($member['mb_comp_team'])?>" id="show_mb_comp_team" class="frm_input" data-editable>
</div>
</td>
</tr>
<tr id="row_team_external" style="display:none;">
<th class="h_4">소속부서</th>
<td>
<div class="team_wrap">
<input type="text" name="mb_comp_team_ext" id="show_mb_comp_team_ext" class="frm_input" data-editable placeholder="소속부서">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="btn_confirm">
<!-- <button type="button" onclick="mypage02();" class="btn_cancel">취소</button> -->
<button type="button" id="btn_profile_edit" class="btn_submit" >정보수정</button>
</div>
<div class="sign_out">
<a href="#" id="btn_delete_account"><i class="signout"></i>회원 탈퇴하기</a>
</div>
</fieldset>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<script>
(function () {
// === 설정 ===
const INTERNAL_DOMAINS = [
"hanmaceng.co.kr","samaneng.com","jangheon.co.kr",
"hallasanup.com","pre-cast.co.kr","baroncs.co.kr"
];
const MAX_LOGINID_RETRY = 5;
// === 상태 ===
let loginIdRetryCount = 0;
// === 엘리먼트 캐시 ===
const $btn = $('#pop_mypage03 #btn_profile_edit');
const $edit = $('[data-editable]');
const $id = $('#show_mb_id'); // 아이디(=이메일, readonly)
const $empId = $('#show_mb_employeeid'); // 사번(내부)
const $name = $('#show_mb_name'); // 이름
const $pos = $('#show_mb_position'); // 직위(내부)
const $phone = $('#show_mb_hp'); // 휴대전화
const $comp = $('#show_mb_comp'); // 내부=가족사, 외부=회사명
const $team = $('#show_mb_comp_team'); // 소속부서(내/외 공통)
const $rowEmp = $empId.closest('tr');
const $rowPos = $pos.closest('tr');
const $rowCompany = $('#row_company'); // 회사정보 행
// === 전화번호 포맷/검증 ===
function autoHyphen010(inputEl) {
let v = inputEl.value.replace(/\D/g, '').slice(0, 11); // 숫자만 11자리까지
if (v.length < 4) { inputEl.value = v; return; }
if (!v.startsWith('010')) { inputEl.value = v; return; }
if (v.length <= 7) {
inputEl.value = v.slice(0,3) + '-' + v.slice(3);
} else {
inputEl.value = v.slice(0,3) + '-' + v.slice(3,7) + '-' + v.slice(7);
}
}
function isValidPhone010(str) {
return /^010-\d{4}-\d{4}$/.test((str||'').trim());
}
// === 유틸 ===
function isInternal(email) {
if (!email) return false;
const domain = (email.split('@')[1] || '').toLowerCase();
return INTERNAL_DOMAINS.includes(domain);
}
function getEmailFromUI() {
return ($id.val() || sessionStorage.getItem('loginId') || '').trim();
}
function showHint($input, msg) {
clearHint($input);
$input.addClass('input-error').after('<span class="field-hint">'+msg+'</span>');
}
function clearHint($input) {
$input.removeClass('input-error').siblings('.field-hint').remove();
}
function clearAllHints() {
$edit.each(function(){ clearHint($(this)); });
}
// === 내부/외부 UI 토글 ===
function applyTenantUI(email) {
const internal = isInternal(email);
if (internal) {
$rowEmp.show();
$rowPos.show();
$rowCompany.show();
// ✅ 회사명 → 아이디와 동일한 스타일
$comp
.prop('readonly', true)
.css('color', '#9aa0a6')
.css('background-color', 'transparent') // 🔑 핵심
.attr('placeholder', '가족사');
// 소속부서는 편집 가능
$team
.prop('readonly', false)
.css('color', '')
.css('background-color', '')
.attr('placeholder', '소속부서');
} else {
$rowEmp.hide().find('input').val('');
$rowPos.hide().find('input').val('');
$rowCompany.show();
// 외부 사용자 → 입력 가능
$comp
.prop('readonly', false)
.css('color', '')
.css('background-color', '') // 원복
.attr('placeholder', '회사명');
$team
.prop('readonly', false)
.css('color', '')
.css('background-color', '')
.attr('placeholder', '소속부서');
}
}
// === 검증 ===
function validate() {
clearAllHints();
const name = ($name.val() || '').trim();
const phone = ($phone.val() || '').trim();
const email = getEmailFromUI();
const internal = isInternal(email);
let ok = true;
if (!name) showHint($name, '이름을 입력해 주세요.'), ok = false;
if (!/^[0-9\-]{9,15}$/.test(phone)) showHint($phone, '숫자(하이픈 가능) 9~15자리로 입력해 주세요.'), ok = false;
if (internal) {
if (!($pos.val() || '').trim()) showHint($pos, '직위를 입력해 주세요.'), ok = false;
if (!($comp.val() || '').trim()) showHint($comp, '가족사를 입력해 주세요.'), ok = false;
if (!($team.val() || '').trim()) showHint($team, '소속부서를 입력해 주세요.'), ok = false;
if (!($empId.val()|| '').trim()) showHint($empId,'사번을 입력해 주세요.'), ok = false;
} else {
if (!($comp.val() || '').trim()) showHint($comp, '회사명을 입력해 주세요.'), ok = false;
if (!($team.val() || '').trim()) showHint($team, '소속부서를 입력해 주세요.'), ok = false;
}
return ok;
}
// === 저장 ===
function saveProfile() {
if (!validate()) return;
// const refreshJwt = sessionStorage.getItem('refreshJwt') || '';
// if (!refreshJwt) { alert('인증 정보가 만료되었습니다. 다시 로그인해 주세요.'); return; }
const email = getEmailFromUI();
const internal = isInternal(email);
const payload = {
email, // loginId
name: ($name.val() || '').trim(),
phone: ($phone.val() || '').trim(),
position: ($pos.val() || '').trim(), // 외부여도 전송 무해
completeForm: true
};
if (internal) {
payload.familyCompany = ($comp.val() || '').trim(); // 가족사
payload.team = ($team.val() || '').trim(); // 소속부서
payload.familyUniqueKey = ($empId.val() || '').trim(); // 사번
payload.employeeId = payload.familyUniqueKey; // 호환 키
} else {
payload.company = ($comp.val() || '').trim(); // 회사명
payload.team = ($team.val() || '').trim(); // 소속부서
}
$.ajax({
url: '/egbim/skin/member/basic/descope_update.php',
type: 'POST',
dataType: 'json',
data: payload,
beforeSend(){ $btn.prop('disabled', true).text('저장중…'); },
complete(){ $btn.prop('disabled', false).text('저장'); },
success(res){
if (res.status === 'ok') {
alert('정보가 저장되었습니다.');
closeMyPagePopup(); // ✅ 저장 성공 시 팝업 닫기
// 필요 시 전체 새고: location.reload();
} else {
alert(res.message || '저장에 실패했습니다.');
}
},
error(xhr){
alert('서버 오류: ' + (xhr.statusText||'') + '\n' + (xhr.responseText||''));
}
});
}
// === 팝업 닫기 ===
function closeMyPagePopup() {
// 닫기 버튼이 자체 로직을 가지고 있으면 그걸 트리거하는 게 가장 안전
const $closeBtn = $('#pop_mypage03 .btn_close');
if ($closeBtn.length) {
$closeBtn.trigger('click');
} else {
// 폴백: 직접 숨김 처리
$('#pop_mypage03').hide();
$('body').css('overflow','');
}
}
// === 이벤트 바인딩 ===
// 입력칸 항상 편집 가능 + 버튼은 항상 "저장"
$edit.prop('readonly', false);
$btn.text('저장');
// 전화번호 입력 바인딩(중복 방지)
$phone.off('.hp');
let hpWarnedOnce = false;
$phone
.on('input.hp', function () {
autoHyphen010(this);
hpWarnedOnce = false; // 다시 입력하면 경고 플래그 해제
})
.on('paste.hp', function () {
const el = this;
setTimeout(function(){ autoHyphen010(el); hpWarnedOnce = false; }, 0);
})
.on('blur.hp', function () {
const v = $(this).val().trim();
if (v && !isValidPhone010(v) && !hpWarnedOnce) {
hpWarnedOnce = true;
alert('휴대전화번호는 010-1234-5678 형식으로 입력해 주세요.');
setTimeout(() => { $phone.focus(); }, 0); // 즉시 focus는 blur 루프 유발
}
});
// 버튼: 바로 저장
$btn.off('click.mypage').on('click.mypage', function (e) {
e.preventDefault();
// 저장 직전 최종 포맷 체크 (한 번 더)
if (!isValidPhone010(($phone.val()||'').trim())) {
alert('휴대전화번호는 010-1234-5678 형식으로 입력해 주세요.');
$phone.focus();
return;
}
saveProfile(); // ✅ 한 번 클릭으로 바로 저장
});
// 탈퇴 버튼 클릭 → 삭제 함수 호출
$(document).on('click', '#btn_delete_account', function(e){
e.preventDefault();
deleteDescopeUser();
});
// === customAttributes 안전 접근 ===
function ca(u, keys) {
for (const k of keys) {
const v = u && u.customAttributes && u.customAttributes[k];
if (v !== undefined && v !== null && String(v).length) return v;
}
return '';
}
// === 사용자 조회 ===
function loadDescopeUser() {
const loginId = sessionStorage.getItem('loginId');
if (!loginId) {
if (loginIdRetryCount < MAX_LOGINID_RETRY) {
loginIdRetryCount++;
return setTimeout(loadDescopeUser, 150 * Math.pow(2, loginIdRetryCount - 1));
}
return;
}
loginIdRetryCount = 0;
$.ajax({
url: '/egbim/skin/member/basic/descope_user_search.php',
type: 'POST',
dataType: 'json',
data: { loginId },
// timeout: 8000,
success(res) {
if (!(res.status === 'ok' && res.user)) { alert('사용자 정보를 불러올 수 없습니다.'); return; }
const u = res.user;
const email = (u.loginIds && u.loginIds[0]) ? u.loginIds[0] : (u.email || loginId);
$id.val(email);
$name.val(u.name || '');
$phone.val(u.phone || '');
$pos.val(ca(u, ['position']) || '');
// 공통값
$comp.val(ca(u, ['familyCompany','company']) || '');
$team.val(ca(u, ['team']) || '');
$empId.val(isInternal(email) ? (ca(u, ['familyUniqueKey','employeeId']) || '') : '');
// UI 분기
applyTenantUI(email);
// 탈퇴용 ID 저장
if (u.userId) sessionStorage.setItem('descopeUserId', u.userId);
},
error(xhr) {
alert('서버 통신 오류: ' + (xhr.statusText || ''));
}
});
}
// === 외부에서 로그인 성공 시 호출됨 ===
window.onLoginSuccess = function (loginId, sessionJwt, refreshJwt) {
if (loginId) sessionStorage.setItem('loginId', loginId);
if (sessionJwt) sessionStorage.setItem('sessionJwt', sessionJwt);
if (refreshJwt) sessionStorage.setItem('refreshJwt', refreshJwt);
loadDescopeUser();
};
// === 팝업 표시될 때마다 갱신 ===
const popupEl = document.getElementById('pop_mypage03');
if (popupEl) {
new MutationObserver((muts) => {
muts.forEach((m) => {
if (m.type === 'attributes' && (m.attributeName === 'style' || m.attributeName === 'class')) {
const visible = $('#pop_mypage03').is(':visible') || $('#pop_mypage03').css('display') !== 'none';
if (visible) {
setTimeout(() => {
loadDescopeUser();
const email = getEmailFromUI();
if (email) applyTenantUI(email);
}, 50);
}
}
});
}).observe(popupEl, { attributes: true, attributeFilter: ['style','class'] });
}
// === 최초 진입 ===
document.addEventListener('DOMContentLoaded', loadDescopeUser);
// === 탈퇴 ===
window.deleteDescopeUser = function () {
// 폴백: sessionStorage → 입력칸
const userId = sessionStorage.getItem('descopeUserId') || '';
const uiLogin = ($('#show_mb_id').val() || '').trim();
const loginId = sessionStorage.getItem('loginId') || uiLogin;
if (!userId && !loginId) return alert('대상 정보가 없습니다. 다시 로그인 후 시도해 주세요.');
if (!confirm('정말 탈퇴하시겠습니까? 이 작업은 되돌릴 수 없습니다.')) return;
$.ajax({
url: '/egbim/skin/member/basic/descope_user_delete.php',
type: 'POST',
dataType: 'json',
data: { userId, loginId },
success(res) {
if (res.status === 'ok') {
alert('정상적으로 탈퇴되었습니다.');
// 🔑 sessionStorage 완전 초기화
sessionStorage.clear();
localStorage.clear();
location.reload();
} else {
alert('탈퇴 실패: ' + (res.message || '알 수 없는 오류'));
}
},
error(xhr) {
alert('서버 오류로 탈퇴 실패: ' + (xhr.statusText || ''));
}
});
};
})();
</script>
@@ -0,0 +1,210 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once('./_common.php');
//add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!--popup_wrap-->
<div class="popup_wrap" id="pop_mypage03">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!--popup_content-->
<div class="popup_content mypage_edit join">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">My pa</span>
<div class="join_info">
<h1 class="h_1">내 정보 수정</h1>
<h3 class="h_3">
소중한 <em>내 정보</em>를 <br>
<em>최신</em>으로 관리하세요.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">ge</span>
<form id="fregisterform_up" name="fregisterform_up" action="<?php //echo $register_action_url?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
<!-- <input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="url" value="<?php echo $urlencode ?>">
<input type="hidden" name="agree" value="<?php echo $agree ?>">
<input type="hidden" name="agree2" value="<?php echo $agree2 ?>">
<input type="hidden" name="cert_type" value="<?php echo $member['mb_certify']; ?>">
<input type="hidden" name="cert_no" value=""> -->
<!-- <?php //if (isset($member['mb_sex'])) { ?><input type="hidden" name="mb_sex" value="<?php //echo $member['mb_sex'] ?>"><?php //} ?> -->
<?php //if (isset($member['mb_nick_date']) && $member['mb_nick_date'] > date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400))) { // 닉네임수정일이 지나지 않았다면 ?>
<!-- <input type="hidden" name="mb_nick_default" value="<?php //echo get_text($member['mb_nick']) ?>">
<input type="hidden" name="mb_nick" value="<?php //echo get_text($member['mb_nick']) ?>"> -->
<?php //} ?>
<h6 class="important_msg pop_notice h_6">*항목은 필수 항목 입니다.</h6>
<fieldset>
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap">
<table>
<tbody>
<tr>
<th class="h_4">아이디<span class="important_msg">*</span></th>
<td>
<div class="id_wrap">
<input type="text" class="full_input" id="update_mb_id" name="mb_id" onchange="PG_pro('change');" placeholder="아이디 입력" <?php if($member['mb_id']!=""){ ?> style="width: 100% ;"<?php }?> autocomplete="off" value="<?php echo $member['mb_id'] ?>" <?php echo $required ?> <?php echo $readonly ?> maxlength="12" disabled>
<?php if($member['mb_id']==""){ ?>
<button type="button" class="chk_id" onclick="PG_pro('dupl_check');">중복확인</button>
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="" placeholder="아이디중복확인여부YN" style="width:250px; background-color:#dfe4ea "/>
<!-- hidden --><input type="hidden" id="GB_mb_id" name="GB_mb_id" value="<?php echo $member['mb_id'] ?>">
<?php }else{ ?>
<!-- hidden --><input type="hidden" id="update_mb_id" name="mb_id" value="<?php echo $member['mb_id'] ?>">
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="Y" onclick="" style="width:250px; background-color:#dfe4ea "/>
<?php } ?>
</div>
<span class="important_msg h_6">영문+숫자 4~12자(영문으로 시작)</span>
</td>
</tr>
<tr>
<th class="h_4">비밀번호<span class="important_msg">*</span></th>
<td>
<div class="password_wrap">
<input type="password" name="mb_password" id="update_mb_password" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 입력">
<input type="password" name="mb_password_re" id="update_mb_password_re" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 확인">
</div>
<span class="important_msg h_6">영문+숫자+특수기호 8자 이상</span>
</td>
</tr>
<tr>
<th class="h_4">이름<span class="important_msg">*</span></th>
<td>
<div class="name_wrap">
<input type="text" id="update_mb_name" name="mb_name" value="<?php echo get_text($member['mb_name']) ?>" <?php echo $required ?> <?php echo $name_readonly; ?> class="frm_input full_input <?php echo $required ?> <?php echo $name_readonly ?>" size="10" placeholder="이름 입력">
</div>
</td>
</tr>
<tr>
<th class="h_4">이메일<span class="important_msg">*</span></th>
<?php
if($member['mb_email']){
$mb_email_confirm = isset($member['mb_email'])?$member['mb_email']:'';
if($mb_email_confirm!=""){
$mb_email_temp = explode('@',$mb_email_confirm);
$mb_email_domain = array_pop(explode('@',$mb_email_confirm));
}
$array_domain = array('naver.com','gmail.com','daum.net' ,'hanmail.net','nate.com' ,'hotmail.com' ,'yahoo.com');
$exist_domain = false;
if (stripos(json_encode($array_domain),$mb_email_domain) !== false) {
$exist_domain = true;
}
}
?>
<td>
<div class="email_wrap">
<!-- <input type="hidden" name="old_email" value="<?php //echo $member['mb_email'] ?>">
<input type="text" name="mb_email" value="<?php //echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" required class="frm_input email full_input required" size="70" maxlength="100" placeholder="이메일 입력"> -->
<input type="text" id="update_mb_email1" name="mb_email1" value="<?php echo $mb_email_temp[0]; ?>" required class="frm_input email full_input required" size="50" maxlength="100" placeholder="메일입력" autocomplete="off">
<div>
<span>@</span>
</div>
<input type="text" id="update_domain2" value="<?php echo $mb_email_domain; ?>" placeholder="직접 입력" style="<?php echo $exist_domain===false?"display:block":"display:none"; ?>" required>
<select name="mb_email2" id="update_mb_email2" onchange="PG_changeSelect1(this);">
<option value="@naver.com" <?php echo "@".$mb_email_domain=="@naver.com"?"selected":""; ?> >naver.com</option>
<option value="@gmail.com" <?php echo "@".$mb_email_domain=="@gmail.com"?"selected":""; ?> >gmail.com</option>
<option value="@daum.net" <?php echo "@".$mb_email_domain=="@daum.net"?"selected":""; ?> >daum.net</option>
<option value="@hanmail.net" <?php echo "@".$mb_email_domain=="@hanmail.net"?"selected":""; ?> >hanmail.net</option>
<option value="@nate.com" <?php echo "@".$mb_email_domain=="@nate.com"?"selected":""; ?> >nate.com</option>
<option value="@hotmail.com" <?php echo "@".$mb_email_domain=="@hotmail.com"?"selected":""; ?> >hotmail.com</option>
<option value="@yahoo.com" <?php echo "@".$mb_email_domain=="@yahoo.com"?"selected":""; ?> >yahoo.com</option>
<option value="type" <?php echo $exist_domain===false?"selected":""; ?> type="text">직접입력</option>
</select>
<input type="hidden" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="update_mb_email" size="50" maxlength="100">
</div>
</td>
</tr>
<tr>
<th class="h_4">휴대전화번호<span class="important_msg">*</span></th>
<td>
<div class="phone_wrap">
<input type="text" name="mb_hp" value="<?php echo preg_replace("/[^0-9]*/s", "", $member['mb_hp']); ?>" id="update_mb_hp" <?php echo $hp_required; ?> <?php echo $hp_readonly; ?> class="frm_input full_input <?php echo $hp_required; ?> <?php echo $hp_readonly; ?>" maxlength="20" placeholder="휴대폰 번호">
<!-- <button type="button" onclick="" name="" class="cert_number">인증번호</button> -->
</div>
</td>
</tr>
<!-- <tr class="code" style="display: none;">
<th class="h_4">인증번호</th>
<td>
<div class="phone_wrap">
<input type="text" placeholder="인증번호 입력" required>
<span class="timer">03:00</span>
<button type="button" onclick="" name="" class="check">확인</button>
<button type="button " onclick="" name="" class="check complete" style="display: none;">인증완료</button>
</div>
</td>
</tr> -->
<tr>
<th class="h_4">회사정보<span class="important_msg">*</span></th>
<td>
<div class="company_wrap">
<input type="text" name="mb_comp" value="<?php echo get_text($member['mb_comp'])?>" id="update_mb_comp" size="70" class="frm_input" maxlength="100" placeholder="회사명 입력">
<input type="text" name="mb_comp_team" value="<?php echo get_text($member['mb_comp_team'])?>" id="update_mb_comp_team" size="70" class="frm_input" maxlength="100" placeholder="부서명 입력">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--//tbl_wrap-->
<div class="btn_confirm">
<button type="button" onclick="mypage02();" class="btn_cancel">취소</button>
<button type="submit" id="btn_submit" class="btn_submit" >정보수정</button>
</div>
<div class="sign_out">
<a href="javascript:member_leave();"><i class="signout"></i>회원 탈퇴하기</a>
</div>
</fieldset>
</form>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- <div class="join_btn_wrap">
<button type="button" onclick="" name="" class="btn_cancel">취소</button>
<button type="button" onclick="" name="" class="btn_regist">수정</button>
</div>
<div class="sign_out"><a href=""><i class="signout"></i>회원 탈퇴하기</a></div> -->
<script>
function PG_changeSelect1(p_list){
if(p_list.value == 'type'){
document.getElementById("update_domain2").style.display = "block";
}else{
document.getElementById("update_domain2").style.display = "none";
}
// if(p_list.value=='@naver.com'||p_list.value=='@gmail.com'||p_list.value=='@google.com'||p_list.value=='@hanmail.net'||p_list.value=='@nate.com'||p_list.value=='@kakao.com'){
// document.getElementById("update_domain2").style.display = "none";
// }else{
// document.getElementById("update_domain2").style.display = "block";
// }
}
//이메일 직접입력 선택 시 값 초기화
$("#update_mb_email2").change(function() {
if($("#update_mb_email2").val() == "type"){
$("#update_domain2").val('');
// $(document).on('keyup','#email_direct',function(){
// email();
// });
}
});
</script>
@@ -0,0 +1,206 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once('./_common.php');
//add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!--popup_wrap-->
<div class="popup_wrap" id="pop_mypage03">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!--popup_content-->
<div class="popup_container mypage edit">
<!--pop_join_left-->
<div class="popup_tit">
<h1 class="h_1">내 정보 수정</h1>
<h3 class="h_3">
소중한 <em>내 정보</em>를 <br>
<em>최신</em>으로 관리하세요.
</h3>
</div>
<!--//pop_join_right-->
<div class="popup_contents_wrap">
<form id="fregisterform_up" name="fregisterform_up" action="<?php //echo $register_action_url?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
<!-- <input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="url" value="<?php echo $urlencode ?>">
<input type="hidden" name="agree" value="<?php echo $agree ?>">
<input type="hidden" name="agree2" value="<?php echo $agree2 ?>">
<input type="hidden" name="cert_type" value="<?php echo $member['mb_certify']; ?>">
<input type="hidden" name="cert_no" value=""> -->
<!-- <?php //if (isset($member['mb_sex'])) { ?><input type="hidden" name="mb_sex" value="<?php //echo $member['mb_sex'] ?>"><?php //} ?> -->
<?php //if (isset($member['mb_nick_date']) && $member['mb_nick_date'] > date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400))) { // 닉네임수정일이 지나지 않았다면 ?>
<!-- <input type="hidden" name="mb_nick_default" value="<?php //echo get_text($member['mb_nick']) ?>">
<input type="hidden" name="mb_nick" value="<?php //echo get_text($member['mb_nick']) ?>"> -->
<?php //} ?>
<h6 class="important_msg pop_notice h_6">*항목은 필수 항목 입니다.</h6>
<fieldset>
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap">
<table>
<tbody>
<tr>
<th class="h_4">아이디<span class="important_msg">*</span></th>
<td>
<div class="id_wrap">
<input type="text" class="full_input" id="update_mb_id" name="mb_id" onchange="PG_pro('change');" placeholder="아이디 입력" <?php if($member['mb_id']!=""){ ?> style="width: 100% ;"<?php }?> autocomplete="off" value="<?php echo $member['mb_id'] ?>" <?php echo $required ?> <?php echo $readonly ?> maxlength="12" disabled>
<?php if($member['mb_id']==""){ ?>
<button type="button" class="chk_id" onclick="PG_pro('dupl_check');">중복확인</button>
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="" placeholder="아이디중복확인여부YN" style="width:250px; background-color:#dfe4ea "/>
<!-- hidden --><input type="hidden" id="GB_mb_id" name="GB_mb_id" value="<?php echo $member['mb_id'] ?>">
<?php }else{ ?>
<!-- hidden --><input type="hidden" id="update_mb_id" name="mb_id" value="<?php echo $member['mb_id'] ?>">
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="Y" onclick="" style="width:250px; background-color:#dfe4ea "/>
<?php } ?>
</div>
<span class="important_msg h_6">영문+숫자 4~12자(영문으로 시작)</span>
</td>
</tr>
<tr>
<th class="h_4">비밀번호<span class="important_msg">*</span></th>
<td>
<div class="password_wrap">
<input type="password" name="mb_password" id="update_mb_password" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 입력">
<input type="password" name="mb_password_re" id="update_mb_password_re" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 확인">
</div>
<span class="important_msg h_6">영문+숫자+특수기호 8자 이상</span>
</td>
</tr>
<tr>
<th class="h_4">이름<span class="important_msg">*</span></th>
<td>
<div class="name_wrap">
<input type="text" id="update_mb_name" name="mb_name" value="<?php echo get_text($member['mb_name']) ?>" <?php echo $required ?> <?php echo $name_readonly; ?> class="frm_input full_input <?php echo $required ?> <?php echo $name_readonly ?>" size="10" placeholder="이름 입력">
</div>
</td>
</tr>
<tr>
<th class="h_4">이메일<span class="important_msg">*</span></th>
<?php
if($member['mb_email']){
$mb_email_confirm = isset($member['mb_email'])?$member['mb_email']:'';
if($mb_email_confirm!=""){
$mb_email_temp = explode('@',$mb_email_confirm);
$mb_email_domain = array_pop(explode('@',$mb_email_confirm));
}
$array_domain = array('naver.com','gmail.com','daum.net' ,'hanmail.net','nate.com' ,'hotmail.com' ,'yahoo.com');
$exist_domain = false;
if (stripos(json_encode($array_domain),$mb_email_domain) !== false) {
$exist_domain = true;
}
}
?>
<td>
<div class="email_wrap">
<!-- <input type="hidden" name="old_email" value="<?php //echo $member['mb_email'] ?>">
<input type="text" name="mb_email" value="<?php //echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" required class="frm_input email full_input required" size="70" maxlength="100" placeholder="이메일 입력"> -->
<input type="text" id="update_mb_email1" name="mb_email1" value="<?php echo $mb_email_temp[0]; ?>" required class="frm_input email full_input required" size="50" maxlength="100" placeholder="메일입력" autocomplete="off">
<div>
<span>@</span>
</div>
<input type="text" id="update_domain2" value="<?php echo $mb_email_domain; ?>" placeholder="직접 입력" style="<?php echo $exist_domain===false?"display:block":"display:none"; ?>" required>
<select name="mb_email2" id="update_mb_email2" onchange="PG_changeSelect1(this);">
<option value="@naver.com" <?php echo "@".$mb_email_domain=="@naver.com"?"selected":""; ?> >naver.com</option>
<option value="@gmail.com" <?php echo "@".$mb_email_domain=="@gmail.com"?"selected":""; ?> >gmail.com</option>
<option value="@daum.net" <?php echo "@".$mb_email_domain=="@daum.net"?"selected":""; ?> >daum.net</option>
<option value="@hanmail.net" <?php echo "@".$mb_email_domain=="@hanmail.net"?"selected":""; ?> >hanmail.net</option>
<option value="@nate.com" <?php echo "@".$mb_email_domain=="@nate.com"?"selected":""; ?> >nate.com</option>
<option value="@hotmail.com" <?php echo "@".$mb_email_domain=="@hotmail.com"?"selected":""; ?> >hotmail.com</option>
<option value="@yahoo.com" <?php echo "@".$mb_email_domain=="@yahoo.com"?"selected":""; ?> >yahoo.com</option>
<option value="type" <?php echo $exist_domain===false?"selected":""; ?> type="text">직접입력</option>
</select>
<input type="hidden" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="update_mb_email" size="50" maxlength="100">
</div>
</td>
</tr>
<tr>
<th class="h_4">휴대전화번호<span class="important_msg">*</span></th>
<td>
<div class="phone_wrap">
<input type="text" name="mb_hp" value="<?php echo preg_replace("/[^0-9]*/s", "", $member['mb_hp']); ?>" id="update_mb_hp" <?php echo $hp_required; ?> <?php echo $hp_readonly; ?> class="frm_input full_input <?php echo $hp_required; ?> <?php echo $hp_readonly; ?>" maxlength="20" placeholder="휴대폰 번호">
<!-- <button type="button" onclick="" name="" class="cert_number">인증번호</button> -->
</div>
</td>
</tr>
<!-- <tr class="code" style="display: none;">
<th class="h_4">인증번호</th>
<td>
<div class="phone_wrap">
<input type="text" placeholder="인증번호 입력" required>
<span class="timer">03:00</span>
<button type="button" onclick="" name="" class="check">확인</button>
<button type="button " onclick="" name="" class="check complete" style="display: none;">인증완료</button>
</div>
</td>
</tr> -->
<tr>
<th class="h_4">회사정보<span class="important_msg">*</span></th>
<td>
<div class="company_wrap">
<input type="text" name="mb_comp" value="<?php echo get_text($member['mb_comp'])?>" id="update_mb_comp" size="70" class="frm_input" maxlength="100" placeholder="회사명 입력">
<input type="text" name="mb_comp_team" value="<?php echo get_text($member['mb_comp_team'])?>" id="update_mb_comp_team" size="70" class="frm_input" maxlength="100" placeholder="부서명 입력">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--//tbl_wrap-->
<div class="btn_confirm">
<button type="button" onclick="mypage02();" class="btn_cancel">취소</button>
<button type="submit" id="btn_submit" class="btn_submit" >정보수정</button>
</div>
<div class="sign_out">
<a href="javascript:member_leave();"><i class="signout"></i>회원 탈퇴하기</a>
</div>
</fieldset>
</form>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- <div class="join_btn_wrap">
<button type="button" onclick="" name="" class="btn_cancel">취소</button>
<button type="button" onclick="" name="" class="btn_regist">수정</button>
</div>
<div class="sign_out"><a href=""><i class="signout"></i>회원 탈퇴하기</a></div> -->
<script>
function PG_changeSelect1(p_list){
if(p_list.value == 'type'){
document.getElementById("update_domain2").style.display = "block";
}else{
document.getElementById("update_domain2").style.display = "none";
}
// if(p_list.value=='@naver.com'||p_list.value=='@gmail.com'||p_list.value=='@google.com'||p_list.value=='@hanmail.net'||p_list.value=='@nate.com'||p_list.value=='@kakao.com'){
// document.getElementById("update_domain2").style.display = "none";
// }else{
// document.getElementById("update_domain2").style.display = "block";
// }
}
//이메일 직접입력 선택 시 값 초기화
$("#update_mb_email2").change(function() {
if($("#update_mb_email2").val() == "type"){
$("#update_domain2").val('');
// $(document).on('keyup','#email_direct',function(){
// email();
// });
}
});
</script>
@@ -0,0 +1,110 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/style.css" />
<!--popup_wrap-->
<div id="pop_join" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_content-->
<!-- 2025.07 디자인팀 수정 -->
<!-- 03 사용자 인증 -->
<!-- 왼쪽 "03 사용자 인증"에 on -->
<fieldset style="display: none;">
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap">
<div class="guide_txt">
<p>계정 생성이 완료되었습니다.</p>
사용자 인증을 위해 <em>aaa@gmail.com</em> <br>아이디로 전송된 인증번호를 입력해 주세요.
</div>
<div class="verify_wrap">
<div class="code_input">
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
</div>
<div>
<span class="important_msg h_6">인증번호 불일치</span>
<button class="btn_send">인증번호 재전송 ⭮</button>
</div>
</div>
</div>
<!--//tbl_wrap-->
<div class="btn_confirm">
<button type="submit" id="btn_submit_otp_sign_up" class="btn_submit" >인증하기</button>
</div>
<script>
const inputs = document.querySelectorAll('.code-input input');
inputs.forEach((input, index) => {
console.log('dd');
input.addEventListener('input', (e) => {
const value = e.target.value;
if (!/^[0-9]$/.test(value)) {
e.target.value = '';
return;
}
if (value && index < inputs.length - 1) {
inputs[index + 1].focus();
}
});
input.addEventListener('keydown', (e) => {
if (e.key === 'Backspace' && !e.target.value && index > 0) {
inputs[index - 1].focus();
}
});
});
</script>
</fieldset>
<!-- //2025.07 디자인팀 수정-->
</div>
<!--//pop_join_right-->
<!-- 회원가입결과 시작 { register-->
<div id="pop_result" class="popup_wrap" style="display:none;">
<p class="reg_result_p">
<i class="fa fa-gift" aria-hidden="true"></i><br>
<strong><?php echo get_text($mb['mb_name']); ?></strong>님의 회원가입을 진심으로 축하합니다.
</p>
<?php if (is_use_email_certify()) { ?>
<p class="result_txt">
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.<br>
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
</p>
<div id="result_email">
<span>아이디</span>
<strong><?php echo $mb['mb_id'] ?></strong><br>
<span>이메일 주소</span>
<strong><?php echo $mb['mb_email'] ?></strong>
</div>
<p>
이메일 주소를 잘못 입력하셨다면, 사이트 관리자에게 문의해주시기 바랍니다.
</p>
<?php } ?>
<!-- } 회원가입결과 끝 -->
<div class="btn_confirm_reg">
<a href="<?php echo G5_URL ?>/" class="reg_btn_submit">메인으로</a>
</div>
</div>
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
+46
View File
@@ -0,0 +1,46 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$delete_str = "";
if ($w == 'x') $delete_str = "";
if ($w == 'u') $g5['title'] = $delete_str."글 수정";
else if ($w == 'd' || $w == 'x') $g5['title'] = $delete_str."글 삭제";
else $g5['title'] = $g5['title'];
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 비밀번호 확인 시작 { -->
<div id="pw_confirm" class="mbskin">
<h1><?php echo $g5['title'] ?></h1>
<p>
<?php if ($w == 'u') { ?>
<strong>작성자만 글을 수정할 수 있습니다.</strong>
작성자 본인이라면, 글 작성시 입력한 비밀번호를 입력하여 글을 수정할 수 있습니다.
<?php } else if ($w == 'd' || $w == 'x') { ?>
<strong>작성자만 글을 삭제할 수 있습니다.</strong>
작성자 본인이라면, 글 작성시 입력한 비밀번호를 입력하여 글을 삭제할 수 있습니다.
<?php } else { ?>
<strong>비밀글 기능으로 보호된 글입니다.</strong>
작성자와 관리자만 열람하실 수 있습니다.<br> 본인이라면 비밀번호를 입력하세요.
<?php } ?>
</p>
<form name="fboardpassword" action="<?php echo $action; ?>" method="post">
<input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
<input type="hidden" name="comment_id" value="<?php echo $comment_id ?>">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<fieldset>
<label for="pw_wr_password" class="sound_only">비밀번호<strong>필수</strong></label>
<input type="password" name="wr_password" id="password_wr_password" required class="frm_input required" size="15" maxLength="20" placeholder="비밀번호">
<input type="submit" value="확인" class="btn_submit">
</fieldset>
</form>
</div>
<!-- } 비밀번호 확인 끝 -->
@@ -0,0 +1,118 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
if($config['cf_cert_use'] && ($config['cf_cert_simple'] || $config['cf_cert_ipin'] || $config['cf_cert_hp'])) { ?>
<script src="<?php echo G5_JS_URL ?>/certify.js?v=<?php echo G5_JS_VER; ?>"></script>
<?php } ?>
<!-- 회원정보 찾기 시작 { -->
<div id="find_info" class="new_win<?php if($config['cf_cert_use'] != 0 && $config['cf_cert_find'] != 0) { ?> cert<?php } ?>">
<div class="new_win_con">
<form name="fpasswordlost" action="<?php echo $action_url ?>" onsubmit="return fpasswordlost_submit(this);" method="post" autocomplete="off">
<input type="hidden" name="cert_no" value="">
<h3>이메일로 찾기</h3>
<fieldset id="info_fs">
<p>
회원가입 시 등록하신 이메일 주소를 입력해 주세요.<br>
해당 이메일로 아이디와 비밀번호 정보를 보내드립니다.
</p>
<label for="mb_email" class="sound_only">E-mail 주소<strong class="sound_only">필수</strong></label>
<input type="text" name="mb_email" id="mb_email" required class="required frm_input full_input email" size="30" placeholder="E-mail 주소">
</fieldset>
<?php echo captcha_html(); ?>
<div class="win_btn">
<button type="submit" class="btn_submit">인증메일 보내기</button>
</div>
</form>
</div>
<?php if($config['cf_cert_use'] != 0 && $config['cf_cert_find'] != 0) { ?>
<div class="new_win_con find_btn">
<h3>본인인증으로 찾기</h3>
<div class="cert_btn">
<?php if(!empty($config['cf_cert_simple'])) { ?>
<button type="button" id="win_sa_kakao_cert" class="btn_submit win_sa_cert" data-type="">간편인증</button>
<?php } if(!empty($config['cf_cert_hp']) || !empty($config['cf_cert_ipin'])) { ?>
<?php if(!empty($config['cf_cert_hp'])) { ?>
<button type="button" id="win_hp_cert" class="btn_submit">휴대폰 본인확인</button>
<?php } if(!empty($config['cf_cert_ipin'])) { ?>
<button type="button" id="win_ipin_cert" class="btn_submit">아이핀 본인확인</button>
<?php } ?>
<?php } ?>
</div>
</div>
<?php } ?>
</div>
<script>
$(function() {
$("#reg_zip_find").css("display", "inline-block");
var pageTypeParam = "pageType=find";
<?php if($config['cf_cert_use'] && $config['cf_cert_simple']) { ?>
// TOSS 간편인증
var url = "<?php echo G5_INICERT_URL; ?>/ini_request.php";
var type = "";
var params = "";
var request_url = "";
$(".win_sa_cert").click(function() {
type = $(this).data("type");
params = "?directAgency=" + type + "&" + pageTypeParam;
request_url = url + params;
call_sa(request_url);
});
<?php } ?>
<?php if($config['cf_cert_use'] && $config['cf_cert_ipin']) { ?>
// 아이핀인증
var params = "";
$("#win_ipin_cert").click(function() {
params = "?" + pageTypeParam;
var url = "<?php echo G5_OKNAME_URL; ?>/ipin1.php"+params;
certify_win_open('kcb-ipin', url);
return;
});
<?php } ?>
<?php if($config['cf_cert_use'] && $config['cf_cert_hp']) { ?>
// 휴대폰인증
var params = "";
$("#win_hp_cert").click(function() {
params = "?" + pageTypeParam;
<?php
switch($config['cf_cert_hp']) {
case 'kcb':
$cert_url = G5_OKNAME_URL.'/hpcert1.php';
$cert_type = 'kcb-hp';
break;
case 'kcp':
$cert_url = G5_KCPCERT_URL.'/kcpcert_form.php';
$cert_type = 'kcp-hp';
break;
case 'lg':
$cert_url = G5_LGXPAY_URL.'/AuthOnlyReq.php';
$cert_type = 'lg-hp';
break;
default:
echo 'alert("기본환경설정에서 휴대폰 본인확인 설정을 해주십시오");';
echo 'return false;';
break;
}
?>
certify_win_open("<?php echo $cert_type; ?>", "<?php echo $cert_url; ?>"+params);
return;
});
<?php } ?>
});
function fpasswordlost_submit(f)
{
<?php echo chk_captcha_js(); ?>
return true;
}
</script>
<!-- } 회원정보 찾기 끝 -->
@@ -0,0 +1,404 @@
<!--popup_wrap-->
<div id="pop_search" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close" onclick="$('#view_result').html('');">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!--popup_content-->
<div class="popup_container search">
<!--pop_join_left-->
<div class="popup_tit">
<h1 class="h_1">비밀번호 <br>재설정</h1>
</div>
<!-- 2025.07 다지인팀 수정 -->
<!-- pop_join_right-->
<div class="popup_contents_wrap" style="display: none;">
<button class="btn_back" onclick="goLogin();">로그인</button>
<div class="tbl_wrap">
<div class="guide_txt"><em>계정 생성에 사용한 아이디</em> 입력해 주세요.<br>입력하신 메일 주소로 인증 링크가 발송됩니다.</div>
<div class="guide_txt"><em>(인증 링크는 3 만료됩니다.)</em></div>
<table>
<tbody>
<tr>
<th class="h_4">아이디</th>
<td>
<div class="id_wrap">
<input id="txt_name" type="text" placeholder="example@eg-bim.co.kr" required>
</div>
<!-- <span class="important_msg h_6">이메일 형식으로 작성</span> -->
<p id="email_feedback" class="important_msg h_6" style="display:none; margin-top:4px;"></p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="join_btn_wrap">
<button type="button" id="btn_id" onclick="ufn_btn_id_click();">아이디 확인</button>
</div>
<div class="inquiry">
계정이 기억나지 않을 경우<br class="brk"> <em>baroncs@baroncs.co.kr</em> 문의하시기 바랍니다.
</div>
</div>
<!--비밀번호 재설정 otp 입력 화면 -->
<!-- <div class="popup_contents_wrap" style="_display: none;">
<button class="btn_back">다른 아이디로 변경하기</button>
<div id="register_form" class="tbl_wrap">
<div class="guide_txt">
사용자 인증을 위해 <em>aaa@gmail.com</em> <br>아이디로 전송된 인증번호를 입력해 주세요.
</div>
<div class="verify_wrap">
<div class="code_input">
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
</div>
<div>
<span class="important_msg h_6">인증번호 불일치</span>
<button class="btn_send">인증번호 재전송 </button>
</div>
</div>
</div>
<div class="btn_confirm">
<button type="submit" id="btn_submit" class="btn_submit" >인증하기</button>
</div>
<script>
const inputs = document.querySelectorAll('.code-input input');
inputs.forEach((input, index) => {
console.log('dd');
input.addEventListener('input', (e) => {
const value = e.target.value;
if (!/^[0-9]$/.test(value)) {
e.target.value = '';
return;
}
if (value && index < inputs.length - 1) {
inputs[index + 1].focus();
}
});
input.addEventListener('keydown', (e) => {
if (e.key === 'Backspace' && !e.target.value && index > 0) {
inputs[index - 1].focus();
}
});
});
</script>
</div> -->
<div id="password_reset" class="popup_contents_wrap" style="display: none;">
<div class="tbl_wrap">
<!-- <div class="guide_txt">
<em>${email}</em> 계정의 비밀번호를 입력하세요.
</div> -->
<div class="guide_txt">
새로운 비밀번호를 입력하세요.
</div>
<table>
<tbody>
<tr>
<th class="h_4"> 비밀번호</th>
<td>
<input type="password" id="pw_reset1" placeholder="새 비밀번호" autocomplete="new-password">
<!-- 비밀번호 피드백 위치 -->
<p id="pw_reset1_feedback" class="important_msg h_6" style="display:none; margin-top:4px;"></p>
</td>
</tr>
<tr>
<th class="h_4">비밀번호 확인</th>
<td>
<input type="password" id="pw_reset2" placeholder="비밀번호 확인" autocomplete="new-password">
<!-- 비밀번호 확인 피드백 위치 -->
<p id="pw_reset2_feedback" class="important_msg h_6" style="display:none; margin-top:4px;"></p>
</td>
</tr>
</tbody>
</table>
<p id="pw_reset_feedback" class="important_msg h_6" style="display:none;">
비밀번호는 영문자 · 숫자 · 특수문자를 포함한 12 이상이어야 합니다.
</p>
</div>
<div class="join_btn_wrap">
<button type="button" id="btn_pw_reset" onclick="resetPassword();">비밀번호 재설정</button>
</div>
</div>
<!--//pop_join_right-->
<!-- //2025.07 다지인팀 수정 -->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<script>
// 이메일 유효성 정규식
function isValidEmail(email) {
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
}
$('#txt_name').on('input', function() {
const email = $(this).val().trim();
const fb = $('#email_feedback');
if (!email) {
fb.hide();
$('#btn_id').prop('disabled', true);
return;
}
if (isValidEmail(email)) {
fb.text('올바른 이메일 형식입니다.').css('color', 'green').show();
$('#btn_id').prop('disabled', false);
} else {
fb.text('이메일 형식으로 작성해주세요.').css('color', 'red').show();
$('#btn_id').prop('disabled', true);
}
});
//비밀번호 재설정 인증링크 보내기
$('#txt_name').on('input', function() {
if ($(this).val().trim().length > 0) {
$('#btn_id').prop('disabled', false);
} else {
$('#btn_id').prop('disabled', true);
}
});
function ufn_btn_id_click() {
var email = $('#txt_name').val().trim();
if (!email) {
alert('이메일(아이디)을 입력하세요.');
$('#txt_name').focus();
return;
}
// 비밀번호 재설정 메일 요청
$.ajax({
url: '/egbim/skin/member/basic/descope_send_otp.php', // PHP 처리 파일 경로에 맞게 수정
method: 'POST',
dataType: 'json',
data: { email: email },
success: function(res) {
if (res.status === 'ok') {
alert('인증링크가 이메일로 발송되었습니다.');
// 다음 스텝(OTP 입력창) show/hide 처리
// 예시: $('#pop_reset_otp').show(); // 또는 다음 .popup_contents_wrap show
} else {
alert(res.message || '전송 실패');
}
},
error: function(xhr) {
alert('서버 통신 오류');
}
});
}
//로그인 화면으로 돌아가기
function goLogin() {
// 전체 이동 (페이지로)
// location.href = '/login.php';
// 팝업방식 (예시)
$('#pop_search').hide();
$('#pop_login').show();
}
// //비밀번호 두 값이 모두 있을 경우에만 enabled
// $('#pw_reset1, #pw_reset2').on('input', function() {
// var pw1 = $('#pw_reset1').val();
// var pw2 = $('#pw_reset2').val();
// if (pw1.length > 0 && pw2.length > 0) {
// $('#btn_pw_reset').prop('disabled', false);
// } else {
// $('#btn_pw_reset').prop('disabled', true);
// }
// });
// //비밀번호 재설정 업데이트
// function resetPassword() {
// var pw1 = $('#pw_reset1').val();
// var pw2 = $('#pw_reset2').val();
// if (!pw1 || !pw2) {
// alert('비밀번호를 모두 입력하세요.');
// return;
// }
// if (pw1 !== pw2) {
// alert('비밀번호가 일치하지 않습니다.');
// return;
// }
// // 쿼리스트링 t(토큰) 읽어서 같이 전송
// var resetToken = new URLSearchParams(window.location.search).get('t');
// var email = window.resetEmail || ''; // 상황에 따라 email 세팅
// if (!resetToken) {
// alert('유효하지 않은 접근입니다.');
// return;
// }
// $.ajax({
// url: '/egbim1/skin/member/basic/descope_reset_password.php',
// type: 'POST',
// dataType: 'json',
// data: { email: email, password: pw1, token: resetToken },
// success: function(res) {
// if (res.status === 'ok') {
// alert('비밀번호가 성공적으로 변경되었습니다!\n로그인해주세요.');
// location.href = '/login.php';
// } else {
// alert(res.message || '비밀번호 변경 실패');
// }
// },
// error: function(xhr) {
// alert('통신 오류: ' + xhr.statusText);
// }
// });
// }
let refreshJwt = '';
let resetEmail = '';
$(document).ready(function () {
// 1. URL에서 매직링크 토큰 추출 (t 파라미터)
const resetToken = new URLSearchParams(window.location.search).get('t');
if (!resetToken) return;
// 2. Magic Link 검증: 서버에 토큰을 보내서 refreshJwt, email 받아옴
$.ajax({
url: '/egbim/skin/member/basic/descope_verify_magiclink.php',
type: 'POST',
dataType: 'json',
data: { token: resetToken },
success: function (res) {
if (res.status === 'ok') {
refreshJwt = res.refreshJwt;
resetEmail = res.email;
$('#password_reset').show(); // 비번입력창 보이기
// [추가] 인증 완료 alert를 한 번만 띄움
if (!sessionStorage.getItem('verifiedAlertShown')) {
alert('인증이 완료되었습니다!');
// alert(JSON.stringify(res, null, 2));
sessionStorage.setItem('verifiedAlertShown', '1');
}
} else {
alert(res.message || '링크 인증 실패');
}
},
error: function () {
alert('서버 통신 오류');
}
});
});
// 비밀번호 두 값이 모두 있을 경우에만 enabled
$('#pw_reset1, #pw_reset2').on('input', function () {
var pw1 = $('#pw_reset1').val();
var pw2 = $('#pw_reset2').val();
$('#btn_pw_reset').prop('disabled', pw1.length === 0 || pw2.length === 0);
});
// 비밀번호 재설정
function resetPassword() {
var pw1 = $('#pw_reset1').val();
var pw2 = $('#pw_reset2').val();
if (!pw1 || !pw2) return alert('비밀번호를 모두 입력하세요.');
if (pw1 !== pw2) return alert('비밀번호가 일치하지 않습니다.');
if (!refreshJwt || !resetEmail) return alert('인증 세션이 만료되었습니다. 다시 시도해 주세요.');
$.ajax({
url: '/egbim/skin/member/basic/descope_reset_password.php',
type: 'POST',
dataType: 'json',
data: {
email: resetEmail,
password: pw1,
refreshJwt: refreshJwt
},
success: function (res) {
// alert(res);
if (res.status === 'ok') {
alert('비밀번호가 성공적으로 변경되었습니다!\n로그인해주세요.');
location.href = 'https://eg-bim.com/egbim/index.php';
} else {
alert(res.message + '비밀번호 변경 실패');
}
},
error: function () {
alert('서버 통신 오류');
}
});
}
// (기존 validatePassword 함수가 없다면 추가)
function validatePassword(pw) {
if (pw.length < 12) return { ok: false, reason: '12자 이상이어야 합니다.' };
if (!/[A-Za-z]/.test(pw)) return { ok: false, reason: '영문자가 포함되어야 합니다.' };
if (!/[0-9]/.test(pw)) return { ok: false, reason: '숫자가 포함되어야 합니다.' };
if (!/[!@#$%^&*(),.\[\]{}\\\/~`_+\-=\|;:'"<>\?]/.test(pw))
return { ok: false, reason: '특수문자가 포함되어야 합니다.' };
return { ok: true };
}
// 실시간 피드백
$('#pw_reset1').on('input', function() {
const pw1 = $(this).val().trim();
const fb1 = $('#pw_reset1_feedback');
const check = validatePassword(pw1);
if (!pw1) {
fb1.hide();
} else if (!check.ok) {
fb1.text(check.reason).show();
} else {
fb1.hide();
}
// 버튼 활성화 토글은 아래에서 처리
toggleResetButton();
});
$('#pw_reset2').on('input', function() {
const pw1 = $('#pw_reset1').val().trim();
const pw2 = $(this).val().trim();
const fb2 = $('#pw_reset2_feedback');
if (!pw2) {
fb2.hide();
} else if (pw1 !== pw2) {
fb2.text('비밀번호가 일치하지 않습니다.').show();
} else {
fb2.hide();
}
toggleResetButton();
});
// 버튼 활성화/비활성화 함수
function toggleResetButton() {
const pw1 = $('#pw_reset1').val().trim();
const pw2 = $('#pw_reset2').val().trim();
const check = validatePassword(pw1);
const ok = pw1 && pw2 && check.ok && (pw1 === pw2);
$('#btn_pw_reset').prop('disabled', !ok);
}
</script>
@@ -0,0 +1,203 @@
<!-- 회원정보 찾기 시작 { -->
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_search" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<div class="pop_close_wrap">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
</div>
<!--popup_content-->
<div class="popup_content search join">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">ID/P</span>
<div class="join_info">
<h1 class="h_1">아이디/ <br> 비밀번호 찾기 </h1>
<h3 class="h_3">
가입 등록된 이메일로<br>
<strong>아이디 비밀번호를 발송</strong>
합니다.
</h3>
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">W</span>
<div class="contents_wrap">
<!-- 아이디/비번찾기 -->
<ul class="btn_wrap">
<li class="btn_id on"><span>아이디 찾기</span></li>
<li class="btn_pw "><span>비밀번호 찾기</span></li>
</ul>
<!-- // 아이디/비번찾기 -->
<div class="content id">
<div class="box">
<!-- 휴대전화 / 이메일 라디오 버튼 -->
<div class="radio_wrap">
<label><input type="radio" class="find_ph on" checked> 휴대전화 번호로 찾기</label>
<label><input type="radio" class="find_email"> 이메일 주소로 찾기</label>
</div>
<!-- // 휴대전화 / 이메일 라디오 버튼 -->
<!-- 휴대전화 -->
<table class="ph">
<tbody>
<tr>
<th class="h_4">이름</th>
<td>
<div class="id_wrap">
<input type="text" placeholder="이름 입력" required>
</div>
</td>
</tr>
<tr>
<th class="h_4">휴대전화번호</th>
<td>
<div class="id_wrap">
<input type="text" placeholder="휴대전화번호 입력" required>
</div>
</td>
</tr>
</tbody>
</table>
<!-- //휴대전화 -->
<!-- 이메일 -->
<table class="email" style="display: none;">
<tbody>
<tr>
<th class="h_4">이름</th>
<td>
<div class="id_wrap">
<input type="text" placeholder="이름 입력" required>
</div>
</td>
</tr>
<tr>
<th class="h_4">이메일</th>
<td>
<div class="email_wrap">
<input type="text" placeholder="이메일 입력" class="e_id" required>
<div><span>@</span></div>
<input type="text" id="custom-domain" placeholder="직접 입력" style="display: none;" required>
<select name="" id="domain-list" class="domain_list" required >
<option value="" hidden="" disabled="disabled" selected="selected">선택</option>
<option value="naver">naver.com</option>
<option value="gmail">gmail.com</option>
<option value="daum">daum.net</option>
<option value="nate">nate.com</option>
<option value="hotmail">hotmail.com</option>
<option value="yahoo">yahoo.com</option>
<option value="type" id="domain-txt" type="text">직접입력</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
<!-- //이메일 -->
</div>
<div class="join_btn_wrap">
<button type="button">확인</button>
</div>
<div class="inquiry">계정이 기억나지 않을 경우 <em>tova@hanmaceng.co.kr</em> 문의하시기 바랍니다.</div>
</div>
<div class="content pw" style="display: none;">
<div class="box">
<table>
<tbody>
<tr>
<th class="h_4">아이디</th>
<td>
<div class="id_wrap">
<input type="text" placeholder="아이디 입력" required>
<button type="button" onclick="" name="" class="chk_id">중복확인</button>
</div>
</td>
</tr>
<tr>
<th class="h_4">이메일</th>
<td class="email_confirm">
<div class="email_wrap">
<input type="text" placeholder="이메일 입력" class="e_id" required>
<div><span>@</span></div>
<input type="text" id="custom-domain" placeholder="직접 입력" style="display: none;" required>
<select name="" id="domain-list" required>
<option value="" hidden="" disabled="disabled" selected="selected">선택</option>
<option value="naver">naver.com</option>
<option value="gmail">gmail.com</option>
<option value="daum">daum.net</option>
<option value="nate">nate.com</option>
<option value="hotmail">hotmail.com</option>
<option value="yahoo">yahoo.com</option>
<option value="type" id="domain-txt" type="text">직접입력</option>
</select>
</div>
<button type="button" onclick="" name="" class="cert_number">인증번호</button>
</td>
</tr>
<tr class="code" style="display: none;">
<th class="h_4">인증번호</th>
<td>
<div class="phone_wrap">
<input type="text" placeholder="인증번호 입력" required>
<button type="button" onclick="" name="" class="check">확인</button>
<button type="button " onclick="" name="" class="check complete" style="display: none;">인증완료</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="join_btn_wrap">
<button type="button">확인</button>
</div>
<div class="inquiry">계정이 기억나지 않을 경우 <em>tova@hanmaceng.co.kr</em> 문의하시기 바랍니다.</div>
</div>
<!-- 전송완료 -->
<div class="messages pw" style="display: none;">
<i class="send"></i>
<span><em> tova@hanmaceng.co.kr</em> <br>임시 비밀번호를 전송하였습니다.
<a href="pop_login.html" class="btn_regist">로그인</a></span>
</div>
<!-- //전송완료 -->
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
<!-- } 회원정보 찾기 -->
@@ -0,0 +1,387 @@
<!-- 회원정보 찾기 시작 { -->
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_search" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<div class="pop_close_wrap">
<button class="btn_close" onclick="$('#view_result').html('');">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
</div>
<!--popup_content-->
<div class="popup_content search join">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">ID/P</span>
<div class="join_info">
<h1 class="h_1">아이디 찾기/ <br> 비밀번호 변경 </h1>
<h3 id="view_result" class="h_3"></h3>
<!--
가입 등록된 이메일로<br>
<strong>아이디 비밀번호를 발송</strong>
합니다.
//-->
</div>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">W</span>
<div class="contents_wrap">
<!-- 아이디/비번찾기 -->
<ul class="btn_wrap">
<li class="btn_id on" onclick="ufn_view_result('btn_id');"><span>아이디 찾기</span></li>
<li class="btn_pw " onclick="ufn_view_result('btn_pw');"><span>비밀번호 변경</span></li>
</ul>
<!-- // 아이디/비번찾기 -->
<div class="content id">
<div class="box">
<!-- 휴대전화 / 이메일 라디오 버튼 -->
<div class="radio_wrap">
<label><input type="radio" id="rdo_hp" class="find_ph on" checked> 휴대전화 번호로 찾기</label>
<label><input type="radio" id="rdo_email" class="find_email"> 이메일 주소로 찾기</label>
</div>
<!-- // 휴대전화 / 이메일 라디오 버튼 -->
<!-- 휴대전화 -->
<table class="ph">
<tbody>
<tr>
<th class="h_4">이름</th>
<td>
<div class="id_wrap">
<input id="txt_name" type="text" placeholder="이름 입력" required>
</div>
</td>
</tr>
<tr>
<th class="h_4">휴대전화번호</th>
<td>
<div class="id_wrap">
<input id="txt_hp" type="text" onkeyup="ufn_losthp_onkeyup(this);" placeholder="휴대전화번호 입력" required>
</div>
</td>
</tr>
</tbody>
</table>
<!-- //휴대전화 -->
<!-- 이메일 -->
<table class="email" style="display: none;">
<tbody>
<tr>
<th class="h_4">이름</th>
<td>
<div class="id_wrap">
<input type="text" id="txt_name2" placeholder="이름 입력" required>
</div>
</td>
</tr>
<tr>
<th class="h_4">이메일</th>
<td>
<div class="email_wrap">
<input type="text" id="txt_email" onkeyup="ufn_email_onkeyup(this);" placeholder="이메일 입력" class="e_id" required>
<div><span>@</span></div>
<input type="text" id="custom_domain1" placeholder="직접 입력" style="display: none;" required>
<select id="domain_list1" class="domain_list" required onchange="ufn_domain_list1_change(this);">
<option value="-" hidden="" disabled="disabled" selected="selected">선택</option>
<option value="naver.com">naver.com</option>
<option value="gmail.com">gmail.com</option>
<option value="daum.net">daum.net</option>
<option value="hanmail.net">hanmail.net</option>
<option value="nate.com">nate.com</option>
<option value="hotmail.com">hotmail.com</option>
<option value="yahoo.com">yahoo.com</option>
<option value="type" type="text">직접입력</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
<!-- //이메일 -->
</div>
<div class="join_btn_wrap">
<button type="button" id="btn_id" onclick="ufn_btn_id_click();">확인</button>
</div>
<div class="inquiry">계정이 기억나지 않을 경우 <em>baroncs@baroncs.co.kr</em> 문의하시기 바랍니다.</div>
</div>
<div id="div_pw" class="content pw" style="display: none;">
<div class="box">
<table>
<tbody>
<tr>
<th class="h_4">아이디</th>
<td>
<div class="id_wrap">
<input type="text" id="txt_lost_id" placeholder="아이디 입력" required>
</div>
</td>
</tr>
<tr>
<th class="h_4">이메일</th>
<td class="email_confirm">
<div class="email_wrap">
<input id="txt_lost_email2" onkeyup="ufn_email2_onkeyup(this);" type="text" placeholder="이메일 입력" class="e_id" required>
<div><span>@</span></div>
<input type="text" id="custom_domain2" placeholder="직접 입력" style="display: none;" required>
<select id="domain_list2" class="domain_list" required onchange="ufn_domain_list2_change(this);">
<option value="-" hidden="" disabled="disabled" selected="selected">선택</option>
<option value="naver.com">naver.com</option>
<option value="gmail.com">gmail.com</option>
<option value="daum.net">daum.net</option>
<option value="hanmail.net">hanmail.net</option>
<option value="nate.com">nate.com</option>
<option value="hotmail.com">hotmail.com</option>
<option value="yahoo.com">yahoo.com</option>
<option value="type" type="text">직접입력</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="join_btn_wrap">
<button type="button" id="btn_pw2" onclick="ufn_btn_pw2_click()">확인</button>
</div>
<div class="inquiry">계정이 기억나지 않을 경우 <em>baroncs@baroncs.co.kr</em> 문의하시기 바랍니다.</div>
</div>
</div>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<script>
function ufn_view_result(l_gbn){
if(l_gbn == "btn_id"){
$("#view_result").html("");
}else{
$("#view_result").html("아이디와 이메일 일치시에 비밀번호는<br><strong>등록된 휴대전화번호</strong>로 변경됩니다.");
}
}
function ufn_domain_list1_change(l_list){
if(l_list.value == 'type'){
document.getElementById("custom_domain1").style.display = "block";
}else{
document.getElementById("custom_domain1").style.display = "none";
}
}
function ufn_domain_list2_change(l_list){
if(l_list.value == 'type'){
document.getElementById("custom_domain2").style.display = "block";
}else{
document.getElementById("custom_domain2").style.display = "none";
}
}
function ufn_email_onkeyup(l_email){
if(l_email.value.length>0){
document.getElementById('btn_id').disabled = false;
}else{
document.getElementById('btn_id').disabled = true;
}
}
function ufn_email2_onkeyup(l_email){
if(l_email.value.length>0){
document.getElementById('btn_pw2').disabled = false;
}else{
document.getElementById('btn_pw2').disabled = true;
}
}
function ufn_losthp_onkeyup(l_hp){
if(l_hp.value.length>0){
document.getElementById('btn_id').disabled = false;
}else{
document.getElementById('btn_id').disabled = true;
}
}
//아이디찾기
function ufn_btn_id_click(){
let l_name = $('#txt_name').val();
let l_hp = $('#txt_hp').val();
let l_email = "";
let l_domain = "";
if(document.getElementById('rdo_email').checked){
if(document.getElementById('domain_list1').value == '-'){
alert("메일도메인을 선택해 주세요.");
document.getElementById('domain_list1').focus();
return false;
}
if(document.getElementById('domain_list1').value == 'type'){
if(document.getElementById('custom_domain1').value=="" || document.getElementById('custom_domain1').value=="type" ){
alert("메일도메인을 입력해 주세요.");
document.getElementById('custom_domain1').focus();
return false;
}
l_domain = document.getElementById('custom_domain1').value;
}else{
l_domain = document.getElementById('domain_list1').value;
}
l_name = $('#txt_name2').val();
l_email = $('#txt_email').val() + '@' + l_domain ;
//alert(l_email);
}
$.ajax({
url: '<?php echo G5_URL ?>/bbs/lost.php',
type: "POST",
datatype: "json",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ // 데이터를 JSON 문자열로 변환
'mb_name': l_name,
'mb_hp': l_hp,
'mb_email': l_email,
}),
success: function(data) {
var ss = '';
for (i = 0; i < data.length; i++) {
if(i == 3 ||i == 4 ||i == 5){
ss = ss + "*";
}
else{
ss = ss + data[i];
}
ss = ss.replace('"','').replace('"','');
}
//alert(ss);
if(ss.length > 0){
if(ss == "nul*"){
$("#view_result").html("<strong>일치하는 정보가 없습니다.</strong>");
}else{
if(document.getElementById('rdo_email').checked){
$('#txt_name2').val('');
$('#txt_email').val('');
$('#custom_domain1').val('');
}
$('#txt_name').val('');
$('#txt_hp').val('');
document.getElementById('btn_id').disabled = true;
$("#view_result").html("등록된 아이디는<br><strong>"+ss+"</strong> 입니다.");
}
}else{
alert("일치하는 정보가 없습니다.");
}
},
error: function(err) {
console.error("Error occurred:", err); // 콘솔에 에러 로그 출력
alert("서버와의 통신 중 오류가 발생했습니다."); // 사용자에게 의미 있는 메시지 출력
}
});
}
//비밀번호 변경
function ufn_btn_pw2_click(){
let l_id = $('#txt_lost_id').val();
let l_email = "";
let l_domain = "";
if(document.getElementById('domain_list2').value == '-'){
alert("메일도메인을 선택해 주세요.");
document.getElementById('domain_list2').focus();
return false;
}
if(document.getElementById('domain_list2').value == 'type'){
if(document.getElementById('custom_domain2').value=="" || document.getElementById('custom_domain2').value=="type" ){
alert("메일도메인을 입력해 주세요.");
document.getElementById('custom_domain2').focus();
return false;
}
l_domain = document.getElementById('custom_domain2').value;
}else{
l_domain = document.getElementById('domain_list2').value;
}
l_email = $('#txt_lost_email2').val() + '@' + l_domain ;
$.ajax({
url: '<?php echo G5_URL ?>/bbs/lost.php',
type: "POST",
datatype: "json",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ // 데이터를 JSON 문자열로 변환
'mb_id': l_id,
'mb_email': l_email,
}),
success: function(data) {
var ss = '';
for (i = 0; i < data.length; i++) {
if(i == 3 ||i == 4 ||i == 5){
ss = ss + "*";
}
else{
ss = ss + data[i];
}
ss = ss.replace('"','').replace('"','');
}
//alert(ss);
if(ss.length > 0){
if(ss == "nul*"){
$("#view_result").html("<strong>일치하는 정보가 없습니다.</strong>");
}else{
$('#txt_lost_id').val('');
$('#txt_lost_email2').val('');
document.getElementById('btn_pw2').disabled = true;
$("#view_result").html("비밀번호를<br><strong>휴대전화번호</strong>로<br> 변경했습니다.");
alert("비밀번호를 등록하신 휴대전화번호로 변경했습니다.");
}
//$("#view_result").html(ss);
}else{
alert("일치하는 정보가 없습니다.");
}
},
error: function(err) {
console.error("Error occurred:", err); // 콘솔에 에러 로그 출력
alert("서버와의 통신 중 오류가 발생했습니다."); // 사용자에게 의미 있는 메시지 출력
}
});
}
</script>
<!--//popup_wrap-->
<!-- </div>
</body> -->
<!-- } 회원정보 찾기 -->
@@ -0,0 +1,39 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="' . $member_skin_url . '/style.css">', 0);
?>
<!-- 비밀번호 재설정 시작 { -->
<div id="pw_reset" class="new_win">
<div class="new_win_con">
<form name="fpasswordreset" action="<?php echo $action_url; ?>" onsubmit="return fpasswordreset_submit(this);" method="post" autocomplete="off">
<fieldset id="info_fs">
<p>새로운 비밀번호를 입력해주세요.</p>
<label for="mb_id" class="sound_only">아이디</label>
<br>
<b>회원 아이디 : <?php echo get_text($_POST['mb_id']); ?></b>
<label for="mb_pw" class="sound_only">새 비밀번호<strong class="sound_only">필수</strong></label>
<input type="password" name="mb_password" id="mb_pw" required class="required frm_input full_input" size="30" placeholder="새 비밀번호">
<label for="mb_pw2" class="sound_only">새 비밀번호 확인<strong class="sound_only">필수</strong></label>
<input type="password" name="mb_password_re" id="mb_pw2" required class="required frm_input full_input" size="30" placeholder="새 비밀번호 확인">
</fieldset>
<div class="win_btn">
<button type="submit" class="btn_submit">확인</button>
</div>
</form>
</div>
</div>
<script>
function fpasswordreset_submit(f) {
if ($("#mb_pw").val() == $("#mb_pw2").val()) {
alert("비밀번호 변경되었습니다. 다시 로그인해 주세요.");
} else {
alert("새 비밀번호와 비밀번호 확인이 일치하지 않습니다.");
return false;
}
}
</script>
<!-- } 비밀번호 재설정 끝 -->
+77
View File
@@ -0,0 +1,77 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<div id="point" class="new_win">
<h1 id="win_title"><?php echo $g5['title'] ?></h1>
<div class="new_win_con2">
<ul class="point_all">
<li class="full_li">
보유포인트
<span><?php echo number_format($member['mb_point']); ?></span>
</li>
</ul>
<ul class="point_list">
<?php
$sum_point1 = $sum_point2 = $sum_point3 = 0;
$i = 0;
foreach((array) $list as $row){
$point1 = $point2 = 0;
$point_use_class = '';
if ($row['po_point'] > 0) {
$point1 = '+' .number_format($row['po_point']);
$sum_point1 += $row['po_point'];
} else {
$point2 = number_format($row['po_point']);
$sum_point2 += $row['po_point'];
$point_use_class = 'point_use';
}
$po_content = $row['po_content'];
$expr = '';
if($row['po_expired'] == 1)
$expr = ' txt_expired';
?>
<li class="<?php echo $point_use_class; ?>">
<div class="point_top">
<span class="point_tit"><?php echo $po_content; ?></span>
<span class="point_num"><?php if ($point1) echo $point1; else echo $point2; ?></span>
</div>
<span class="point_date1"><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $row['po_datetime']; ?></span>
<span class="point_date<?php echo $expr; ?>">
<?php if ($row['po_expired'] == 1) { ?>
만료 <?php echo substr(str_replace('-', '', $row['po_expire_date']), 2); ?>
<?php } else echo $row['po_expire_date'] == '9999-12-31' ? '&nbsp;' : $row['po_expire_date']; ?>
</span>
</li>
<?php
$i++;
} // end foreach
if ($i == 0)
echo '<li class="empty_li">자료가 없습니다.</li>';
else {
if ($sum_point1 > 0)
$sum_point1 = "+" . number_format($sum_point1);
$sum_point2 = number_format($sum_point2);
}
?>
<li class="point_status">
소계
<span><?php echo $sum_point1; ?></span>
<span><?php echo $sum_point2; ?></span>
</li>
</ul>
</div>
<?php echo get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, $_SERVER['SCRIPT_NAME'].'?'.$qstr.'&amp;page='); ?>
<button type="button" onclick="javascript:window.close();" class="btn_close">창닫기</button>
</div>
+614
View File
@@ -0,0 +1,614 @@
<?php include_once __DIR__ . '/asset_urls.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>주요기능</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css" />
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/primary.js"></script>
<script>
function goto(id) {
console.log('로그발생');
document.getElementById(id).scrollIntoView({
behavior: "instant"
});
}
</script>
</head>
<body>
<!-- "js__"로 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 모든 팝업페이지 경로 -->
<!-- 컨텐츠 시작 -->
<div class="container primary">
<div class="mouse_mark js__mouse_mark" style="display:none"><span>SCROLL</span></div>
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">주요기능</h2>
<span>쉽고 편리하게 작업 할 수 있는 다양한 기능 탑재</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>수많은 명령어들을 기능별로 그룹화하여<br><br class="brk">
페이지별로 한눈에 볼수 있게 제공</span>
<p>EG-BIM에는 1000여개가 넘는 수많은 기능과<br class="brk"> 명령어가 있습니다. <br>
사용자가 찾기 쉽고 사용하기 쉽게<br class="brk"> 기능별 페이지를 구성하여 제공합니다.</p>
</div>
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_circles_wrap">
<div class="circle_core"><span>명령어<br>전체보기</span></div>
<div class="circle_dots">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
<div class="dia_element e01">
<i></i>
<span class="dia_tit">디스플레이/ 보조기능<br><em>My Setting</em></span>
</div>
<div class="dia_element e02">
<i></i>
<span class="dia_tit">Draw/Edit +<br class="brk"> 분야별 특화명령어<br><em>명령어그룹</em></span>
</div>
<div class="dia_element e03">
<i></i>
<span class="dia_tit"><em>for Civil</em><br>특화명령어</span>
</div>
</div>
</section>
<section class="route js__mouse_area">
<div class="fix">
<ul class="subs">
<li>
<span class="sub_tit">작업환경을<br class="brk"> 내스타일에 맞게 설정</span>
<span class="mid_tit">My Setting</span>
<span class="sub_text">
작업공간의 색상 및 마우스 기능 설정 등 기본적인 Setting 항목과 그리드 및 스냅 등 <br>
작업 중 수시로 변경해야하는 ON/OFF 항목으로 페이지를 구분하여 제공합니다.
</span>
</li>
<li>
<span class="sub_tit">Draw/Edit 명령어와 특화명령어가<br class="brk"> 기본으로 제공되는</span>
<span class="mid_tit"><em>명령어그룹</em></span>
<span class="sub_text">
수많은 명령어들을 도형, 편집 등 기능별로 그룹화하여 제공 및 <br>
별도 설치하여 사용하였던 분야별 특화명령어를 기본으로 제공
</span>
</li>
<li>
<span class="sub_tit">도로 및 구조의<br class="brk"> 특정 설계도면 작업을 위한</span>
<span class="mid_tit"><em>for Civil</em></span>
<span class="sub_text">
설계도면 중 도로 분야의 도로 선형 및 횡단 작업을 위한 명령어와<br>
구조분야의 철근배근 및 철근상세도, 집계표 작업을 위한 명령어 제공
</span>
</li>
</ul>
<div class="content">
<!-- <div class="scroll_m">SCROLL</div> -->
<ul class="tabs js__mouse_not">
<li class="tabs_li"><a onclick="window.goto('sec1')">
<b>My Setting</b>
<ul>
<li>디스플레이/마우스</li>
<li>보조기능</li>
</ul>
</a></li>
<li class="tabs_li"><a onclick="window.goto('sec2')">
<b>Command</b>
<ul>
<li>도형</li>
<li>수정</li>
<li>편집</li>
<li>문자</li>
<li>치수/연산</li>
<li>블록</li>
<li>레이어</li>
<li>뷰</li>
<li>선택/조회</li>
</ul>
</a></li>
<li class="tabs_li"><a onclick="window.goto('sec3')">
<b>for Civil</b>
<ul>
<li>선형/횡단</li>
<li>구조/배근</li>
</ul>
</a></li>
</ul>
<ul class="imgs">
<li><a><img src="<?php echo egbim_img_url('primary_route_01.png'); ?>" alt=""></a></li>
<li><a><img src="<?php echo egbim_img_url('primary_route_02.png'); ?>" alt=""></a></li>
<li><a><img src="<?php echo egbim_img_url('primary_route_03.png'); ?>" alt=""></a></li>
</ul>
</div>
</div>
<div id="sec1"></div>
<div id="sec2"></div>
<div id="sec3"></div>
</section>
<section class="layout_fix_left process">
<div class="left" data-aos="fade-right" data-aos-duration="1000" data-aos-offest="-180">
<div class="bg js__fixLeft_bg on"></div>
<div class="bg js__fixLeft_bg"></div>
<div class="bg js__fixLeft_bg"></div>
<span class="mid_tit js__fixLeft_tit on">
<font class="num">01. </font><em>스타일 상세보기창</em>
</span>
<span class="mid_tit js__fixLeft_tit">
<font class="num">02. </font><em>블록창</em>
</span>
<span class="mid_tit js__fixLeft_tit">
<font class="num">03. </font><em>인쇄창</em>
</span>
</div>
<div class="right js__fixLeft_secs">
<span class="mid_tit m" style="display: none;">
<font class="num">01. </font>스타일 상세보기창
</span>
<div id="content1" class="style">
<span class="sub_tit">
선, 문자, 치수의<br class="brk"> 상세 스타일의 생성 및 수정
</span>
<div class="sub_text">
사용하고 있는 스타일의 목록을 보여주며 상세한 미리보기창과 설정가능한 모든 옵션사항을 보여줍니다. <br>새로운 스타일을 생성하거나 수정할 수 있는 기능을 제공합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('style_img_01.png'); ?>" alt="">
</div>
<div class="text">
<b>선 스타일</b>
<ul>
<li>선꼴, 블록, 문자 등을 조합하여 원하는 선스타일을 제작</li>
<li>미리보기창에서 선간격, 블록 및 문자간격 등 설정</li>
<li>건설CALS의 표준 선꼴을 제공</li>
</ul>
</div>
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('style_img_02.png'); ?>" alt="">
</div>
<div class="text">
<b>문자 스타일</b>
<ul>
<li>사용가능한 글꼴을 그룹화하여 제공</li>
<li>미리보기창에서 크기,기울기 등 형상에 대한 옵션 설정</li>
</ul>
</div>
</div>
<div class="sub_figs">
<div class="imgs">
<img src="<?php echo egbim_img_url('style_img_03.png'); ?>" alt="">
</div>
<div class="text">
<b>치수 스타일</b>
<ul>
<li>치수선 형상 및 값에 대한 상세 옵션을 기능별로 구분</li>
<li>이미지와 함께 표현 하여 이해도를 높임</li>
</ul>
</div>
</div>
</div>
<span class="mid_tit m" style="display: none;">
<font class="num">02. </font>블록창
</span>
<div id="content2" class="block">
<span class="sub_tit">
효율적인 작업을 위해<br class="brk"> 블록 라이브러리와 통합 블록창을 제공
</span>
<div class="sub_text">
<span>
다양한 종류의 블록을 라이브러리 형태로 쉽게 찾을 수 있게 제공하며,<br>
블록의 생성과 함께 속성정보 확인 및 수정 등 관리 할 수 있는 통합블록창을 제공합니다.
</span>
</div>
<div class="sub_figs">
<div class="imgs">
<div class="fig01"><span>블록 라이브러리</span></div>
<div class="fig02"><span>블록 상세창</span></div>
<i></i>
</div>
<div class="text">
<b>블록 라이브러리와 연결</b>
<ul>
<li>일반블록, 속성블록, 외부블록(참조)을 하나의 관리창 안에서 확인 및 수정기능 제공</li>
<li>블록 라이브러리와 연계하여 원하는 블록을 쉽게 찾아 추가</li>
</ul>
</div>
</div>
</div>
<span class="mid_tit m" style="display: none;">
<font class="num">03. </font>인쇄창
</span>
<div id="content3" class="print_area">
<span class="sub_tit">
도곽인식기능으로 도면마다<br class="brk"> 영역지정 없이 한번에 편리하게 인쇄
</span>
<div class="sub_text">
도곽영역을 자동으로 인식하여 한 파일 안에 여러장의 도면도, 긴 도면도 문제 없이 쉽게 출력 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<div class="fig01"><span>여러장 도면 인쇄</span></div>
<div class="fig02"><span>길이가 긴 도면 인쇄</span></div>
</div>
<div class="text">
<b>인쇄영역 자동지정 및 도곽영역 및 스케일 자동인식</b>
<ul>
<li>인쇄영역을 일일이 지정하거나 용지길이를 조정할 필요없이 자동으로 인쇄영역을 잡아주는 기능</li>
<li>도곽인식기능으로 여러장의 도면도, 길이가 긴 도면도 관계없이 한번에 출력 가능</li>
<li>사용자가 지정한 블록도 인쇄영역으로 지정 가능</li>
</ul>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- //컨텐츠 시작 -->
<!-- FOOTER -->
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time) => {
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
$(function(){
// footer family site toggle
$('.family_btn').click(function(e){
e.stopPropagation();
$('.family_list, .family_btn').toggleClass('family_on');
});
$(document).click(function(e){
if(!$(e.target).closest('.family_wrap').length){
$('.family_list, .family_btn').removeClass('family_on');
}
});
});
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//descope 로그인, 로그아웃 js
function updateHeaderMenu() {
var isLoggedIn = !!sessionStorage.getItem("sessionJwt");
// role 체크 예시 (로그인 시 저장해놓은 값)
var isAdmin = sessionStorage.getItem('userRole') === 'super';
if (isLoggedIn) {
$('.my_join2, .my_login2').show();
$('.my_join, .my_login').hide();
// 마이페이지/관리자 메뉴 동적 출력
if (isAdmin) {
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
} else {
$('#my_join2').html("<a href='javascript:mypage03();'>마이페이지</a>");
}
} else {
$('.my_join2, .my_login2').hide();
$('.my_join, .my_login').show();
$('#my_join2').html(""); // 혹시모를 내용 초기화
}
}
function descopeLogout() {
fetch('/egbim/skin/member/basic/descope_logout.php', {
method: 'POST',
credentials: 'include' // PHPSESSID 쿠키 전송
})
.then(res => {
if (!res.ok) throw new Error('서버 로그아웃 실패');
// 1) 로컬 저장소 정리
// sessionStorage.removeItem("refreshJwt");
// sessionStorage.removeItem("sessionJwt");
// sessionStorage.removeItem("userRole");
// sessionStorage.removeItem("userName");
// sessionStorage.removeItem("loginId");
sessionStorage.clear();
localStorage.clear();
// 2) UI 갱신
updateHeaderMenu();
// 3) 로그인 페이지로 이동
window.location.href = '/egbim/index.php';
})
.catch(err => {
console.error(err);
alert('로그아웃 중 오류가 발생했습니다.');
});
}
$(document).ready(function() {
// 기존에 있던 updateHeaderMenu() 호출 뒤에
$('#my_login2 a').off('click').on('click', function(e){
e.preventDefault();
descopeLogout();
});
});
$(document).ready(function() {
updateHeaderMenu();
// (필요하다면, 로그인 성공 후에도 항상 updateHeaderMenu(); 호출)
});
//descope login
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '/egbim/skin/member/basic/descope_login.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
dataType : "json",
success : function(res){
if(res.status === "ok") {
// 토큰 저장
// sessionStorage.setItem("refreshJwt", res.refreshJwt);
sessionStorage.setItem("sessionJwt", res.sessionJwt);
// ✅ 사용자 정보 저장
if (res.user) {
sessionStorage.setItem("loginId", res.user.loginIds?.[0] || '');
sessionStorage.setItem("userName", res.user.name || '');
sessionStorage.setItem("company", res.user.customAttributes?.company || '');
sessionStorage.setItem("familyCompany", res.user.customAttributes?.familyCompany || '');
sessionStorage.setItem("position", res.user.customAttributes?.position || '');
sessionStorage.setItem("team", res.user.customAttributes?.team || '');
sessionStorage.setItem("familyUniqueKey", res.user.customAttributes?.familyUniqueKey || '');
sessionStorage.setItem("phone", res.user.phone || '');
}
// ✅ 추가: 관리자 등 정보 저장
if(res.user && res.user.roleNames && res.user.roleNames[0])
sessionStorage.setItem("userRole", res.user.roleNames[0]);
else
sessionStorage.removeItem("userRole");
// ✅ 로그인 후 메뉴 갱신
updateHeaderMenu();
// UI 처리
$('.popup_wrap').hide();
$('body').css('overflow', '');
lenis.start();
// alert('로그인 하셨습니다.');
} else {
alert(res.message || "로그인 실패");
// 🔴 실패 횟수에 따라 안내 배너 교체
if (res.failCount && res.failCount >= 8) {
updateLoginBanner("fail");
}
}
},
error : function(err){
alert(err.statusText || "통신 오류");
}
});
});
// ✅ 배너 교체 함수
function updateLoginBanner(type = "default") {
const $banner = $('#login_notice_banner');
if (!$banner.length) return;
if (type === "default") {
$banner.css({ background: "#063e01ff", color: "#fff" });
$banner.find("strong").text("[로그인 시스템 변경 안내]");
$banner.find("p.left").html(`
더 나은 보안을 위해 2025년 8월 8일부터 로그인 시스템이 변경되었습니다.<br>
기존 회원 또한 신규 시스템에 맞춰 재가입을 진행해주시기 바랍니다.
`);
$banner.find("p:last").html(`※ 로그인 및 가입 관련 문의: <strong>010-8721-7453</strong>`);
}
if (type === "fail") {
$banner.css({ background: "#6a0202ff", color: "#faf6f6ff" });
$banner.find("strong").text("[로그인 시도 제한 안내]");
$banner.find("p.left").html(`
비밀번호 입력을 <strong>7회 이상 연속 실패</strong>하셨습니다.<br>
<strong>8번째 시도부터 3분 대기</strong>가 적용됩니다.<br>
10회 이상 실패 시 계정이 잠금 처리됩니다.
`);
$banner.find("p:last").text("");
}
}
//회원가입 약관동의
// $('#fregister button[type=submit]').click(function(e){
// e.preventDefault();
// let agree11 = $('#agree11').val();
// let agree21 = $('#agree21').val();
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : "POST",
// datatype : "json",
// contentType: 'application/json; charset=utf-8',
// data : {
// 'agree11' : agree11,
// 'agree21' : agree21
// },
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// },
// error : function(err){
// alert(err);
// }
// });
// });
// 이지빔 프로그램 회원가입 url 쿼리스트링 파싱 함수
function getQueryString(name) {
const intro = document.querySelector('.intro_wrap');
intro.style.display = "none";
const mainMask = document.querySelector('.main_mask');
mainMask.classList.add('skip');
// mainMask.style.aimation = 'none';
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
//이지빔 프로그램 비밀번호 재설정 url 쿼리스트링 파싱 함수
$(document).ready(function() {
const urlParams = new URLSearchParams(window.location.search);
const popup = urlParams.get('popup');
const token = urlParams.get('t');
if (popup === 'pwreset') {
// 팝업 전체 열기
$('#pop_search').show();
$('body').css('overflow', 'hidden');
// 내부 컨텐츠 모두 숨기기
$('#pop_search .popup_contents_wrap').hide();
if (token) {
// 토큰이 있으면 비밀번호 재설정 단계
if (!sessionStorage.getItem('pwreset_shown')) {
$('#password_reset').show();
sessionStorage.setItem('pwreset_shown', '1');
}
} else {
// 토큰이 없으면 아이디 입력 단계 (첫 번째 .popup_contents_wrap)
$('#pop_search .popup_contents_wrap').first().show();
}
}
// 닫기 버튼
$('#pop_search .btn_close').on('click', function() {
$('#pop_search').hide();
$('body').css('overflow', '');
});
});
</script>
@@ -0,0 +1,799 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>주요기능</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/primary.js"></script>
<script>
function goto(id) {
console.log('로그발생');
document.getElementById(id).scrollIntoView({behavior: "instant"});
}
</script>
</head>
<body>
<!-- "js__" 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 모든 팝업페이지 경로 -->
<!-- 컨텐츠 시작 -->
<div class="container primary">
<div class="mouse_mark js__mouse_mark" style="display:none"><span>SCROLL</span></div>
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">주요기능</h2>
<span>쉽고 편리하게 작업 할 수 있는 다양한 기능 탑재</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>수많은 명령어들을 기능별로 그룹화하여<br>
페이지별로 한눈에 볼수 있게 제공</span>
<p>EG-BIM에는 1000여개가 넘는 수많은 기능과 명령어가 있습니다. <br>
사용자가 찾기 쉽고 사용하기 쉽게 기능별 페이지를 구성하여 제공합니다.</p>
</div>
<div class="condition">
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_element_top">
<div class="dia_element dia_element01">
<i></i>
<span class="dia_tit">디스플레이/ 보조기능<br><em>My Setting</em></span>
</div>
<div class="dia_element dia_element02">
<i></i>
<span class="dia_tit">Draw/Edit +분야별 특화명령어<br><em>명령어그룹</em></span>
</div>
<div class="dia_element dia_element03">
<i></i>
<span class="dia_tit"><em>for Civil</em><br>특화명령어</span>
</div>
</div>
<div class="quantum_wrap">
<div class="quantum">
<div class="dia_circles_wrap">
<div class="circle_core">
<span>명령어<br>전체보기</span>
</div>
<div class="circle_dots">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
<img class="atom_all" src="../img/atom_obj.svg" width='100%'>
</div>
</div>
</div>
</div>
</section>
<section class="route js__mouse_area">
<div class="fix">
<ul class="subs">
<li>
<span class="sub_tit">작업환경을 내스타일에 맞게 설정</span>
<span class="mid_tit">My Setting</span>
<span class="sub_text">
작업공간의 색상 및 마우스 기능 설정등 기본적인 Setting 항목과 그리드 및 스냅 등 <br>
작업 중 수시로 변경해야하는 ON/OFF 항목으로 페이지를 구분하여 제공합니다
</span>
</li>
<li>
<span class="sub_tit">Draw/Edit 명령어와 특화명령어가 기본으로 제공되는</span>
<span class="mid_tit"><em>명령어그룹</em></span>
<span class="sub_text">
수많은 명령어들을 도형,편집 등 기능별로 그룹화하여 제공 <br>
별도 설치하여 사용하였던 분야별 특화명령어를 기본으로 제공
</span>
</li>
<li>
<span class="sub_tit">도로 및 구조의 특정 설계도면 작업을 위한</span>
<span class="mid_tit"><em>for Civil</em></span>
<span class="sub_text">
설계도면 중 도로분야의 도로 선형 및 횡단 작업을 위한 명령어와<br>
구조분야의 철근배근 및 철근상세도, 집계표 작업을 위한 명령어 제공
</span>
</li>
</ul>
<div class="content">
<ul class="tabs js__mouse_not">
<li class="tabs_li"><a onclick="window.goto('sec1')">
<b>My Setting</b>
<ul>
<li>디스플레이/마우스</li>
<li>보조기능</li>
</ul>
</a></li>
<li class="tabs_li"><a onclick="window.goto('sec2')">
<b>Command</b>
<ul>
<li>도형</li>
<li>수정</li>
<li>편집</li>
<li>문자</li>
<li>치수/연산</li>
<li>블록</li>
<li>레이어</li>
<li>뷰</li>
<li>선택/조회</li>
</ul>
</a></li>
<li class="tabs_li"><a onclick="window.goto('sec3')">
<b>for Civil</b>
<ul>
<li>선형/횡단</li>
<li>구조/배근</li>
</ul>
</a></li>
</ul>
<ul class="imgs">
<li><a><img src="../img/primary_route_01.png" alt=""></a></li>
<li><a><img src="../img/primary_route_02.png" alt=""></a></li>
<li><a><img src="../img/primary_route_03.png" alt=""></a></li>
</ul>
</div>
</div>
<div id="sec1"></div>
<div id="sec2"></div>
<div id="sec3"></div>
</section>
<section class="layout_fix_left process">
<div class="left" data-aos="fade-right" data-aos-duration="1000">
<div class="bg js__fixLeft_bg on"></div>
<div class="bg js__fixLeft_bg"></div>
<div class="bg js__fixLeft_bg"></div>
<span class="mid_tit js__fixLeft_tit on"><font class="num">01. </font><em>스타일 상세보기창</em></span>
<span class="mid_tit js__fixLeft_tit"><font class="num">02. </font><em>블록창</em></span>
<span class="mid_tit js__fixLeft_tit"><font class="num">03. </font><em>인쇄창</em></span>
</div>
<div class="right js__fixLeft_secs">
<div class="style">
<span class="sub_tit">
선, 문자, 치수의 상세 스타일의 생성 및 수정
</span>
<div class="sub_text">
사용하고 있는 스타일의 목록을 보여주며 상세한 미리보기창과 설정가능한 모든 옵션사항을 보여줍니다. <br>새로운 스타일을 생성하거나 수정할 수 있는 기능을 제공합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/style_img_01.png" alt="">
</div>
<div class="text">
<b>선 스타일</b>
<ul>
<li>선꼴,블록,문자등을 조합하여 원하는 선스타일을 제작</li>
<li>미리보기창에서 선간격, 블록 및 문자간격 등 설정</li>
<li>건설CALS의 표준 선꼴을 제공</li>
</ul>
</div>
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/style_img_02.png" alt="">
</div>
<div class="text">
<b>문자 스타일</b>
<ul>
<li>사용가능한 글꼴을 그룹화하여 제공</li>
<li>미리보기창에서 크기,기울기 등 형상에 대한 옵션 설정</li>
</ul>
</div>
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/style_img_03.png" alt="">
</div>
<div class="text">
<b>치수 스타일</b>
<ul>
<li>치수선 형상 및 값에 대한 상세 옵션을 기능별로 구분</li>
<li>이미지와 함께 표현 하여 이해도를 높임</li>
</ul>
</div>
</div>
</div>
<div class="block">
<span class="sub_tit">
효율적인 작업을 위해 블록 라이브러리와 통합 블록창을 제공
</span>
<div class="sub_text">
<span>
다양한 종류의 블록을 라이브러리 형태로 쉽게 찾을수 있게 제공하며,<br>
블록의 생성과 함께 속성정보 확인 및 수정 등 관리 할수 있는 통합블록창을 제공합니다.
</span>
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/block_img_01.png" alt="">
</div>
<div class="text">
<b>블록라이브러리와 연결</b>
<ul>
<li>일반블록, 속성블록, 외부블록(참조)을 하나의 관리창 안에서 확인 및 수정기능 제공</li>
<li>블록라이브러리와 연계하여 원하는 블록을 쉽게 찾아 추가</li>
</ul>
</div>
</div>
</div>
<div class="print_area">
<span class="sub_tit">
도곽인식기능으로 도면마다 영역지정 없이 한번에 편리하게 인쇄
</span>
<div class="sub_text">
도곽영역을 자동으로 인식하여 한 파일안에 여러장의 도면도, 긴도면도 문제 없이쉽게 출력 할 수 있습니다
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/printarea_img_01.png" alt="">
</div>
<div class="text">
<b>인쇄영역 자동지정 및 도곽영역 및 스케일 자동인식</b>
<ul>
<li>인쇄영역을 일일이 지정하거나 용지길이를 조정할 필요없이 자동으로 인쇄영역을 잡아주는 기능</li>
<li>도곽인식기능으로 여러장의 도면도, 길이가 긴 도면도 관계없이 한번에 출력 가능</li>
</ul>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- //컨텐츠 시작 -->
<!-- FOOTER -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
$('.btn_close').hide();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').hide();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/primary.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
@@ -0,0 +1,803 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>주요기능</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/primary.js"></script>
<script>
function goto(id) {
console.log('로그발생');
document.getElementById(id).scrollIntoView({behavior: "instant"});
}
</script>
</head>
<body>
<!-- "js__" 시작하는 클래스는 only 자바스크립트용입니다. -->
<!-- XXXX js__넣어서 css 작성 금지 XXXX -->
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<header class="js__header">
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
</header>
<!-- //Header -->
<!-- floating_menu -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- //floating_menu -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 모든 팝업페이지 경로 -->
<!-- 컨텐츠 시작 -->
<div class="container primary">
<div class="mouse_mark js__mouse_mark" style="display:none"><span>SCROLL</span></div>
<section class="intro">
<div class="top js__dark">
<h2 data-aos="fade-down" data-aos-duration="1000">주요기능</h2>
<span>쉽고 편리하게 작업 할 수 있는 다양한 기능 탑재</span>
</div>
<div class="keyword">
<i class="egbim_obj k"></i>
<span>수많은 명령어들을 기능별로 그룹화하여<br><br class="brk">
페이지별로 한눈에 볼수 있게 제공</span>
<p>EG-BIM에는 1000여개가 넘는 수많은 기능과<br class="brk"> 명령어가 있습니다. <br>
사용자가 찾기 쉽고 사용하기 쉽게<br class="brk"> 기능별 페이지를 구성하여 제공합니다.</p>
</div>
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_circles_wrap">
<div class="circle_core"><span>명령어<br>전체보기</span></div>
<div class="circle_dots">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
<div class="dia_element e01">
<i></i>
<span class="dia_tit">디스플레이/ 보조기능<br><em>My Setting</em></span>
</div>
<div class="dia_element e02">
<i></i>
<span class="dia_tit">Draw/Edit +<br class="brk"> 분야별 특화명령어<br><em>명령어그룹</em></span>
</div>
<div class="dia_element e03">
<i></i>
<span class="dia_tit"><em>for Civil</em><br>특화명령어</span>
</div>
</div>
</section>
<section class="route js__mouse_area">
<div class="fix">
<ul class="subs">
<li>
<span class="sub_tit">작업환경을<br class="brk"> 내스타일에 맞게 설정</span>
<span class="mid_tit">My Setting</span>
<span class="sub_text">
작업공간의 색상 및 마우스 기능 설정 등 기본적인 Setting 항목과 그리드 및 스냅 등 <br>
작업 중 수시로 변경해야하는 ON/OFF 항목으로 페이지를 구분하여 제공합니다.
</span>
</li>
<li>
<span class="sub_tit">Draw/Edit 명령어와 특화명령어가<br class="brk"> 기본으로 제공되는</span>
<span class="mid_tit"><em>명령어그룹</em></span>
<span class="sub_text">
수많은 명령어들을 도형, 편집 등 기능별로 그룹화하여 제공 및 <br>
별도 설치하여 사용하였던 분야별 특화명령어를 기본으로 제공
</span>
</li>
<li>
<span class="sub_tit">도로 및 구조의<br class="brk"> 특정 설계도면 작업을 위한</span>
<span class="mid_tit"><em>for Civil</em></span>
<span class="sub_text">
설계도면 중 도로 분야의 도로 선형 및 횡단 작업을 위한 명령어와<br>
구조분야의 철근배근 및 철근상세도, 집계표 작업을 위한 명령어 제공
</span>
</li>
</ul>
<div class="content">
<!-- <div class="scroll_m">SCROLL</div> -->
<ul class="tabs js__mouse_not">
<li class="tabs_li"><a onclick="window.goto('sec1')">
<b>My Setting</b>
<ul>
<li>디스플레이/마우스</li>
<li>보조기능</li>
</ul>
</a></li>
<li class="tabs_li"><a onclick="window.goto('sec2')">
<b>Command</b>
<ul>
<li>도형</li>
<li>수정</li>
<li>편집</li>
<li>문자</li>
<li>치수/연산</li>
<li>블록</li>
<li>레이어</li>
<li>뷰</li>
<li>선택/조회</li>
</ul>
</a></li>
<li class="tabs_li"><a onclick="window.goto('sec3')">
<b>for Civil</b>
<ul>
<li>선형/횡단</li>
<li>구조/배근</li>
</ul>
</a></li>
</ul>
<ul class="imgs">
<li><a><img src="../img/primary_route_01.png" alt=""></a></li>
<li><a><img src="../img/primary_route_02.png" alt=""></a></li>
<li><a><img src="../img/primary_route_03.png" alt=""></a></li>
</ul>
</div>
</div>
<div id="sec1"></div>
<div id="sec2"></div>
<div id="sec3"></div>
</section>
<section class="layout_fix_left process">
<div class="left" data-aos="fade-right" data-aos-duration="1000">
<div class="bg js__fixLeft_bg on"></div>
<div class="bg js__fixLeft_bg"></div>
<div class="bg js__fixLeft_bg"></div>
<span class="mid_tit js__fixLeft_tit on"><font class="num">01. </font><em>스타일 상세보기창</em></span>
<span class="mid_tit js__fixLeft_tit"><font class="num">02. </font><em>블록창</em></span>
<span class="mid_tit js__fixLeft_tit"><font class="num">03. </font><em>인쇄창</em></span>
</div>
<div class="right js__fixLeft_secs">
<span class="mid_tit m" style="display: none;"><font class="num">01. </font>스타일 상세보기창</span>
<div class="style">
<span class="sub_tit">
선, 문자, 치수의<br class="brk"> 상세 스타일의 생성 및 수정
</span>
<div class="sub_text">
사용하고 있는 스타일의 목록을 보여주며 상세한 미리보기창과 설정가능한 모든 옵션사항을 보여줍니다. <br>새로운 스타일을 생성하거나 수정할 수 있는 기능을 제공합니다.
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/style_img_01.png" alt="">
</div>
<div class="text">
<b>선 스타일</b>
<ul>
<li>선꼴, 블록, 문자 등을 조합하여 원하는 선스타일을 제작</li>
<li>미리보기창에서 선간격, 블록 및 문자간격 등 설정</li>
<li>건설CALS의 표준 선꼴을 제공</li>
</ul>
</div>
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/style_img_02.png" alt="">
</div>
<div class="text">
<b>문자 스타일</b>
<ul>
<li>사용가능한 글꼴을 그룹화하여 제공</li>
<li>미리보기창에서 크기,기울기 등 형상에 대한 옵션 설정</li>
</ul>
</div>
</div>
<div class="sub_figs">
<div class="imgs">
<img src="../img/style_img_03.png" alt="">
</div>
<div class="text">
<b>치수 스타일</b>
<ul>
<li>치수선 형상 및 값에 대한 상세 옵션을 기능별로 구분</li>
<li>이미지와 함께 표현 하여 이해도를 높임</li>
</ul>
</div>
</div>
</div>
<span class="mid_tit m" style="display: none;"><font class="num">02. </font>블록창</span>
<div class="block">
<span class="sub_tit">
효율적인 작업을 위해<br class="brk"> 블록 라이브러리와 통합 블록창을 제공
</span>
<div class="sub_text">
<span>
다양한 종류의 블록을 라이브러리 형태로 쉽게 찾을 수 있게 제공하며,<br>
블록의 생성과 함께 속성정보 확인 및 수정 등 관리 할 수 있는 통합블록창을 제공합니다.
</span>
</div>
<div class="sub_figs">
<div class="imgs">
<div class="fig01"><span>블록 라이브러리</span></div>
<div class="fig02"><span>블록 상세창</span></div>
<i></i>
</div>
<div class="text">
<b>블록 라이브러리와 연결</b>
<ul>
<li>일반블록, 속성블록, 외부블록(참조)을 하나의 관리창 안에서 확인 및 수정기능 제공</li>
<li>블록 라이브러리와 연계하여 원하는 블록을 쉽게 찾아 추가</li>
</ul>
</div>
</div>
</div>
<span class="mid_tit m" style="display: none;"><font class="num">03. </font>인쇄창</span>
<div class="print_area">
<span class="sub_tit">
도곽인식기능으로 도면마다<br class="brk"> 영역지정 없이 한번에 편리하게 인쇄
</span>
<div class="sub_text">
도곽영역을 자동으로 인식하여 한 파일 안에 여러장의 도면도, 긴 도면도 문제 없이 쉽게 출력 할 수 있습니다.
</div>
<div class="sub_figs">
<div class="imgs">
<div class="fig01"><span>여러장 도면 인쇄</span></div>
<div class="fig02"><span>길이가 긴 도면 인쇄</span></div>
</div>
<div class="text">
<b>인쇄영역 자동지정 및 도곽영역 및 스케일 자동인식</b>
<ul>
<li>인쇄영역을 일일이 지정하거나 용지길이를 조정할 필요없이 자동으로 인쇄영역을 잡아주는 기능</li>
<li>도곽인식기능으로 여러장의 도면도, 길이가 긴 도면도 관계없이 한번에 출력 가능</li>
<li>사용자가 지정한 블록도 인쇄영역으로 지정 가능</li>
</ul>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- //컨텐츠 시작 -->
<!-- FOOTER -->
<button class="btn_top js__top" onclick="window.scrollTo(0,0);"><div class="arrow"></div></button>
<footer class="footer_off">
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
</footer>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
if($('#hid_mb_id').val()==''){
document.getElementById('my_join2').style.display = 'none';
document.getElementById('my_login2').style.display = 'none';
document.getElementById('my_join').style.display = '';
document.getElementById('my_login').style.display = '';
}else{
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
}
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//alert(getCookie("tmp_1"));
//로그인
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
//alert('<?php echo G5_URL ?>/bbs/login.php');
$.ajax({
url : '<?php echo G5_URL ?>/bbs/login_check_tova.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success" || ss.replace('"','').replace('"','') == "super"){
//$(".popup_wrap").show();
// $('.btn_close').hide();
// $('#pop_login').hide();
// ------유나 추가
$('.popup_wrap').hide();
$('body').css('overflow', ''); // 기본 스크롤 상태로 복귀
lenis.start();
console.log('로그인 완료 및 lenis 재시작/유나 추가')
$('#hid_mb_id').val(mb_id);
document.getElementById('my_join2').style.display = '';
document.getElementById('my_login2').style.display = '';
document.getElementById('my_join').style.display = 'none';
document.getElementById('my_login').style.display = 'none';
//location.href="<?php echo G5_URL ?>/bbs/session.php?id="+mb_id;
if(ss.replace('"','').replace('"','') == "super"){
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
}else{
$('#my_join2').html("<a href='javascript:mypage01();'>마이페이지</a>");
}
}else
{
alert(trim(ss));
}
},
error : function(err){
//alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
//회원가입 약관동의
$('#fregister button[type=submit]').click(function(e){
e.preventDefault();
let agree11 = $('#agree11').val();
let agree21 = $('#agree21').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form.php',
type : "POST",
datatype : "json",
contentType: 'application/json; charset=utf-8',
data : {
'agree11' : agree11,
'agree21' : agree21
},
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
},
error : function(err){
alert(err);
}
});
});
//회원가입 정보입력
$('#fregisterform button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#reg_mb_id').val();
let mb_password = $('#reg_mb_password').val();
let mb_password_re = $('#reg_mb_password_re').val();
let mb_name = $('#reg_mb_name').val();
let mb_email1 = $('#reg_mb_email1').val();
let mb_email2 = $('#mb_email2').val();
let reg_domain2 = $('#register_domain2').val();
let mb_hp = $('#reg_mb_hp').val();
let mb_comp = $('#reg_mb_comp').val();
let mb_comp_team = $('#reg_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
if (mb_email2 == "type"){
mb_email2 = '@' + reg_domain2;
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/register_form_update.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss){
// $(".popup_wrap").show();
// $('.btn_close').hide();
// $('#pop_login').hide();
// $('#pop_agreement').hide();
// $('#pop_join').hide();
// $('#pop_mypage01').hide();
// $('#pop_search').hide();
// $('#pop_mypage02').hide();
// $('#pop_mypage03').hide();
// $('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원가입이 완료됐습니다.\n다시 로그인 해주세요');
$('#reg_mb_id').val('');
$('#reg_mb_password').val('');
$('#reg_mb_password_re').val('');
$('#reg_mb_name').val('');
$('#reg_mb_email1').val('');
$('#reg_mb_hp').val('');
$('#reg_mb_comp').val('');
$('#reg_mb_comp_team').val('');
$('#dupl_check_yn').val('N');
// ------유나 추가
$('.popup_wrap').hide();
$('body').css('overflow', ''); // 기본 스크롤 상태로 복귀
lenis.start();
console.log('로그인 완료 및 lenis 재시작/유나 추가')
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
// $.removeCookie(mb_id,{path:'<?php //echo G5_URL ?>/bbs/register_form_update.php'});
});
//회원정보 수정
$('#fregisterform_up button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#update_mb_id').val();
let mb_password = $('#update_mb_password').val();
let mb_password_re = $('#update_mb_password_re').val();
let mb_name = $('#update_mb_name').val();
let mb_email1 = $('#update_mb_email1').val();
let mb_email2 = $('#update_mb_email2').val();
let update_domain2 = $('#update_domain2').val();
if (mb_email2 == "type"){
mb_email2 = '@' + update_domain2;
}
let mb_hp = $('#update_mb_hp').val();
let mb_comp = $('#update_mb_comp').val();
let mb_comp_team = $('#update_mb_comp_team').val();
//alert(mb_password+' '+mb_password_re+' '+mb_name+' '+mb_email1+' '+mb_email2+' '+mb_hp+' '+mb_comp+' '+mb_comp_team);
if (mb_id.length < 4) {
alert('1');
alert("아이디를 4글자 이상 입력하십시오.");
mb_id.focus();
return false;
}
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi
if (special_pattern.test(mb_id) == true) {
alert("아이디는 특수문자를 사용할수 없습니다.");
mb_id.focus();
return false;
}
// 비밀번호 검사
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(mb_password)){
alert('비밀번호는 숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
mb_password.focus();
return false;
}
// if (mb_password_re.length < 8 || mb_password.length < 8) {
// alert("비밀번호를 8글자 이상 입력하십시오.");
// mb_password.focus();
// return false;
// }
// 비밀번호 & 2차비밀번호 검사
if (mb_password != mb_password_re) {
alert(mb_password_re);
alert("비밀번호가 같지 않습니다.");
mb_password_re.focus();
return false;
}
// 이름 검사
if (mb_name == "") {
if (mb_name.length < 1) {
alert("이름을 입력하십시오.");
mb_name.focus();
return false;
}
}
// 메일 검사
if (mb_email1 == "") {
if (mb_email1.length < 1) {
alert("메일 주소를 입력하십시오.");
mb_email1.focus();
return false;
}
}
// 핸드폰 번호 검사
if (mb_hp.length < 11) {
alert("휴대전화번호 11자리를 입력하십시오.");
mb_hp.focus();
return false;
}
if(isNaN(mb_hp)){
alert("휴대전화번호는 숫자만 입력가능합니다.");
mb_hp.focus();
return false;
}
// 회사명 검사
if (mb_comp == "") {
if (mb_comp.length < 1) {
alert("회사명을 입력하십시오");
mb_comp.focus();
return false;
}
}
// 팀명 검사
if (mb_comp_team == "") {
if (mb_comp_team.length < 1) {
alert("팀명을 입력하십시오");
mb_comp_team.focus();
return false;
}
}
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage03.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password,
'mb_password_re' : mb_password_re,
'mb_name' : mb_name,
'mb_email1' : mb_email1,
'mb_email2' : mb_email2,
'mb_hp' : mb_hp,
'mb_comp' : mb_comp,
'mb_comp_team' : mb_comp_team,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
if(ss.replace('"','').replace('"','') == "success"){
// $(".popup_wrap").show();
$('.btn_close').show();
$('#pop_login').hide();
$('#pop_agreement').hide();
$('#pop_join').hide();
$('#pop_mypage01').hide();
$('#pop_search').hide();
$('#pop_mypage02').show();
$('#pop_mypage03').hide();
$('#pop_privacy').hide();
// $('.register_fs').hide();
// $('.join_progress .join_step').removeClass('on');
// $('.join_progress .join_step').eq(2).addClass('on');
// $('.messages').show();
alert('회원정보 수정이 완료됐습니다.');
document.getElementById("span_email").innerText=mb_email1+mb_email2;
document.getElementById("span_hp").innerText=mb_hp;
document.getElementById("span_comp").innerText=mb_comp;
document.getElementById("span_comp_team").innerText=mb_comp_team;
// $('#update_mb_id').val('');
// $('#update_mb_password').val('');
// $('#update_mb_password_re').val('');
// $('#update_mb_name').val('');
// $('#update_mb_email1').val('');
// $('#update_mb_hp').val('');
// $('#update_mb_comp').val('');
// $('#update_mb_comp_team').val('');
// $('#dupl_check_yn').val('N');
}else{
alert('실패했습니다.');
}
},
error : function(err){
alert('에러');
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
$('#fmyconfirmpw button[type=submit]').click(function(e){
e.preventDefault();
let l_mb_password = $('#password_mypage').val();
let l_mb_id = $('#hid_mb_id').val();
$.ajax({
url : '<?php echo G5_URL ?>/bbs/mypage02.php',
data : {
'mb_id' : l_mb_id,
'mb_password' : l_mb_password,
},
type : "POST",
datatype : "json",
success : function(data){
var ss='';
for(i=0; i<data.length; i++){
ss=ss + data[i];
}
//alert(ss.replace('"','').replace('"',''));
if(ss.replace('"','').replace('"','') == "success"){
$('#password_mypage').val('');
//mypage02();
document.cookie = "tmp_1=John";
location.href="<?php echo G5_URL ?>/bbs/primary.php";
}else
{
alert(trim(ss));
$('#password_mypage').select();
}
},
error : function(err){
alert(err);
alert(err.status);
alert(err.statusText);
}
});
});
</script>
+543
View File
@@ -0,0 +1,543 @@
<?php
?>
<!--popup_wrap-->
<div class="popup_wrap" id="pop_privacy">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!--popup_wrap-->
<div class="popup_container privacy">
<div class="contents_wrap">
<ul class="tab_wrap">
<li class="tab_privacy on"><span>개인정보 보호정책</span></li>
<li class="tab_agreement"><span>이용약관</span></li>
</ul>
<div class="content pri show">
<ul class="list_1">
<li><span class="tit">제1조. 목적</span>
<ul class="list_2" maker="1">
<li>바론컨설턴트(이하 "회사")는 EG-BIM 서비스(이하 "서비스")를 이용하는 고객(이하 "이용자")의<br>
개인정보를 보호하고, 「개인정보 보호법」에 따라 책임과 의무를 다하기 위해 본 개인정보처리방침을<br>
마련했습니다. 본 방침은 이용자가 제공한 개인정보가 어떻게 수집, 이용, 보관, 보호되는지를 설명합니다.</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제2조. 개인정보의 처리목적</span>
<ul class="list_2">
<li>회사는 다음의 목적을 위해 개인정보를 처리합니다.<br>
처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며, 이용 목적이 변경되는 경우에는 <br>
「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다.<br>
<ul class="list_3">
<li>본인확인: 회원가입 및 관리를 위한 본인 확인, 전화 또는 이메일을 통한 연락</li>
<li>서비스 제공: 각종 통보 및 서비스 제공을 위한 업무 처리</li>
<li>제품소개서 다운로드: 설명자료 전달</li>
<li>상담 및 데모 신청: 상담 제공 및 데모 제공, 계약 처리자 정보 수집</li>
<li>행사 참가 신청: 참석 안내 및 세미나/설명회/교육 제공</li>
<li>보안가이드 제공: 안내자료 전달</li>
<li>기술지원 문의: 서비스 사용 지원</li>
<li>서비스 개선 의견 접수: 서비스 품질 개선</li>
<li>마케팅 활동: 동의한 고객에 한해 뉴스레터 및 매거진 발송</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제3조. 개인정보의 처리 및 보유 기간</span>
<ul class="list_2">
<li>회사는 법령에 따른 개인정보 보유 및 이용기간 또는 정보주체로부터 개인정보를 수집 시 동의받은 개인정보 보유 및 이용기간 내에서
개인정보를 처리 및 보유합니다.</li>
<li>각각의 개인정보 처리 및 보유 기간은 다음과 같습니다:
<ul class="list_3">
<li>회원정보: 회원가입일부터 회원탈퇴 후 1년까지</li>
<li>홍보, 상담, 계약용 개인정보: 2년</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제4조. 개인정보의 제3자 제공</span>
<ul class="list_2">
<li>회사는 정보주체의 개인정보를 제2조에서 명시한 범위 내에서만 처리하며, 정보 주체의 동의, 법률의 특별한 규정 등 「개인정보
보호법」 제17조 및
제18조에 해당하는 경우에만 개인정보를 제3자에게 제공합니다.</li>
<li>회사는 다음과 같이 개인정보를 제3자에게 제공하고 있습니다:
<ul class="list_3">
<li>제공받는 자: 수사기관 및 유관기관, 피신고업체</li>
<li>이용 목적: 개인정보 침해 민원 처리</li>
<li>제공하는 개인정보 항목: 성명, 연락처, 이메일</li>
<li>보유 및 이용기간: 법령에서 정한 보존기간 및 제공목적 달성 시 파기</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제5조. 개인정보 처리 위탁</span>
<ul class="list_2">
<li>회사는 개인정보 처리업무를 외부 업체에 위탁하지 않으며, 자체적으로 처리하고 있습니다.</li>
<li>회사가 특정 업무(예: 채용 업무)를 외부 업체에 위탁할 경우, <br>개인정보 처리방침 시행 전 회사 홈페이지에서 공지한 후
정보주체의 동의를 받은 후 위탁합니다.</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제6조. 정보주체의 권리·의무 및 행사 방법</span>
<ul class="list_2">
<li>정보주체는 회사에 대해 언제든지 개인정보 열람, 정정, 삭제, 처리정지 요구 등의 권리를 행사할 수 있습니다.</li>
<li>권리 행사는 다음과 같은 방법으로 할 수 있습니다:
<ul class="list_3">
<li>서면: 회사 주소로 서면 제출</li>
<li>전자우편: 회사 이메일로 요청</li>
<li>모사전송(FAX): 회사 FAX로 요청</li>
</ul>
<li>권리 행사는 정보주체의 법정대리인이나 위임을 받은 자를 통해 대리로도 가능합니다. 이 경우 “개인정보 처리 방법에 관한 고시”
별지 제11호 서식에 따른 위임장을 제출해야 합니다.</li>
<li>개인정보 열람 및 처리정지 요구는 「개인정보 보호법」 제35조 제4항, 제37조 제2항에 따라 제한될 수 있습니다.</li>
<li>개인정보의 정정 및 삭제 요구는 다른 법령에 따라 수집된 개인정보인 경우 제한될 수 있습니다.</li>
<li>회사는 권리 행사를 요청한 자가 본인 또는 정당한 대리인인지를 확인합니다.</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제7조. 처리하는 개인정보의 항목</span>
<ul class="list_2">
<li>회사는 다음의 개인정보 항목을 처리합니다:</li>
<li>수집 항목
<ul class="list_3">
<li>필수 항목: 성명, 휴대전화번호, 이메일</li>
<li>선택 항목: 회사전화번호, 문의사항</li>
<li>수집 방법: 홈페이지, 전화, 이메일을 통해 수집</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제8조. 개인정보의 파기</span>
<ul class="list_2">
<li>회사는 개인정보 보유 기간의 경과, 처리 목적 달성 등 개인정보가 불필요하게 되었을 때 지체 없이 해당 개인정보를 파기합니다.
</li>
<li>정보주체로부터 동의받은 개인정보 보유 기간이 경과하거나 처리 목적이 달성된 경우에도 다른 법령에 따라 개인정보를 계속 보존해야 할
경우에는, 해당 개인정보를 별도의 데이터베이스(DB)로 옮기거나 보관 장소를 달리하여 보존합니다.</li>
<li>개인정보 파기의 절차 및 방법은 다음과 같습니다:
<ul class="list_3">
<li>파기 절차: 회사는 파기 사유가 발생한 개인정보를 선정하고, 개인정보 보호책임자의 승인을 받아 개인정보를
파기합니다.</li>
<li>파기 방법: 전자적 파일 형태로 기록된 개인정보는 복구할 수 없도록 기술적 방법을 사용해 삭제하며, 종이 문서에
기록된 개인정보는 분쇄기로
분쇄하거나 소각하여 파기합니다.</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제9조. 개인정보의 안전성 확보 조치</span>
<ul class="list_2">
<li>회사는 개인정보의 안전성 확보를 위해 다음과 같은 조치를 취합니다:
<ul class="list_3">
<li>관리적 조치: 내부관리계획 수립·시행, 정기적 직원 교육</li>
<li>기술적 조치: 개인정보처리시스템 접근 권한 관리, 접근통제시스템 설치, 고유식별정보 암호화, 보안 프로그램 설치
</li>
<li>물리적 조치: 전산실 및 자료보관실 접근 통제</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제10조. 개인정보 자동 수집 장치의 설치·운영 및 거부에 관한 사항</span>
<ul class="list_2">
<li>회사는 쿠키(Cookie)를 사용하지 않습니다. 쿠키는 이용자의 이용 정보를 저장하고 수시로 불러오는 작은 파일로,
EG-BIM 서비스에서는 쿠키를 사용하지 않습니다.
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제11조. 개인정보 보호책임자</span>
<ul class="list_2">
<li>회사는 개인정보 처리에 관한 업무를 총괄하여 책임지고, 개인정보 처리와 관련된 정보주체의 불만처리 및 피해구제를 위해 개인정보
보호책임자를 지정하고 있습니다.</li>
<li>개인정보 보호책임자:
<ul class="list_3">
<li>성명: 염승호</li>
<li>직책: 수석연구원</li>
<li>연락처: 02-2141-7448</li>
<li>팩스번호: 02-2141-7599</li>
<li>이메일: b23008@baroncs.co.kr</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제12조. 개인정보 열람청구</span>
<ul class="list_2">
<li>정보주체는 「개인정보 보호법」 제35조에 따른 개인정보 열람 청구를 아래 부서에 할 수 있습니다. 회사는 정보주체의 개인정보
열람청구가 신속하게 처리되도록 노력하겠습니다.</li>
<li>개인정보 열람청구 접수·처리 부서:
<ul class="list_3">
<li>부서명: 총괄기획실</li>
<li>담당자: 권혁진</li>
<li>연락처: 02-2141-7465</li>
<li>팩스번호: 02-2141-7599</li>
<li>이메일: baroncs@baroncs.co.kr</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제13조. 권익침해 구제방법</span>
<ul class="list_2">
<li>정보주체는 개인정보 침해로 인한 구제를 위해 개인정보분쟁조정위원회, 한국인터넷진흥원 개인정보침해신고센터 등에 분쟁 해결이나 상담을
신청할 수 있습니다.
<ul class="list_3">
<li>개인정보분쟁조정위원회: (국번없이) 1833-6972 (www.kopico.go.kr)</li>
<li>개인정보침해신고센터: (국번없이) 118 (privacy.kisa.or.kr)</li>
<li>대검찰청: (국번없이) 1301 (www.spo.go.kr)</li>
<li>팩스번호: 02-408-1927</li>
<li>경찰청: (국번없이) 182 (www.police.go.kr)</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제14조. 개인정보 처리방침의 변경</span>
<ul class="list_2">
<li>본 개인정보처리방침은 법령, 정책 또는 보안 기술의 변경에 따라 내용의 추가, 삭제 및 수정이 있을 시, 개정 최소 7일 전에
홈페이지를 통해 사전
공지합니다.</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">부칙</span>
<ul class="list_2">
<li>제 1조 (시행일자)
<ul class="list_3">
<li>이 개인정보처리방침은 2024년 10월 1일부터 시행됩니다.</li>
</li>
</ul>
<li>제2조 (개정 및 고지의 의무)
<ul class="list_3">
<li>회사는 개인정보처리방침을 변경하는 경우, 변경사항을 시행일자 7일 전부터 서비스 내 공지사항 페이지를 통해 고지할 것입니다.
다만, 이용자의 권리나
의무에 중대한 변경이 발생하는 경우에는 시행일자 30일 전부터 고지합니다.</li>
</li>
</ul>
<li>제3조 (유효성)
<ul class="list_3">
<li>본 개인정보처리방침의 일부 조항이 법적 또는 기타 사유로 인해 무효화되거나 시행할 수 없는 경우, 나머지 조항들은 계속해서 유효합니다.
무효화된 조항은
관련 법령에 부합하는 방식으로 수정되어 효력을 지속합니다.</li>
</li>
</ul>
<li>제4조 (변경 통지의 방법)<br>
회사는 개인정보처리방침의 변경 시, 다음의 방법으로 이용자에게 고지합니다:
<ul class="list_3">
<li>서비스 초기화면 또는 팝업 공지</li>
<li>이메일 발송</li>
<li>회사 홈페이지 공지사항</li>
</li>
</ul>
<li>제5조 (비회원의 개인정보 보호)
<ul class="list_3">
<li>회사는 비회원의 개인정보도 회원과 동일한 수준으로 보호합니다. 비회원이 개인정보 제공을 거부할 경우 일부 서비스 이용에 제한이 있을 수
있습니다.</li>
</li>
</ul>
<li>제6조 (14세 미만 아동의 개인정보 보호)
<ul class="list_3">
<li>회사는 14세 미만 아동의 개인정보를 수집하지 않습니다. 만일 14세 미만 아동의 개인정보가 수집된 경우, 법정 대리인의 동의를 받아야
하며, 법정
대리인의 동의 없이 수집된 경우 이를 지체 없이 파기합니다.</li>
</li>
</ul>
<li>제7조 (개인정보의 국외 이전)
<ul class="list_3">
<li>회사는 이용자의 개인정보를 국외로 이전하지 않으며, 향후 필요한 경우, 사전에 이용자의 동의를 받습니다.</li>
</li>
</ul>
<li>제8조 (기타)
<ul class="list_3">
<li>본 방침에 명시되지 않은 사항은 회사의 내부 방침과 관련 법령에 따릅니다.</li>
</li>
</ul>
</div>
<div class="content agr">
<ul class="list_1">
<li><span class="tit">제1장 총칙</span>
<ul class="list_2" maker="1">
<li>제1조 (목적)
<ul class="list_3">
<li>이 약관은 바론컨설턴트(이하 "회사"라 합니다)가 제공하는 EG-BIM 소프트웨어(이하 "서비스"라 합니다)를 이용함에
있어 회사와 이용자 간의 권리,
의무 및 책임사항과 기타 필요한 사항을 정하는 것을 목적으로 합니다.</li>
</ul>
<li>제2조 (용어의 정의)<br>
본 약관에서 사용하는 용어의 정의는 다음과 같습니다:
<ul class="list_3">
<li>“서비스”란 회사가 제공하는 소프트웨어 및 관련 제반 서비스를 의미합니다.</li>
<li>“이용자”란 회사의 서비스에 접속하여 본 약관에 따라 회사가 제공하는 서비스를 이용하는 회원 및 비회원을 말합니다.
</li>
<li>“회원”이란 본 약관에 동의하고 회사와 이용계약을 체결한 자를 의미합니다.</li>
<li>“비회원”이란 회원가입을 하지 않고 회사가 제공하는 일부 서비스를 이용하는 자를 말합니다.</li>
</ul>
<li>제3조 (약관의 효력 및 변경)<br>
본 약관에서 사용하는 용어의 정의는 다음과 같습니다:
<ul class="list_3">
<li>본 약관은 이용자가 본 약관에 동의하고, 회사가 이에 대한 승낙을 완료함으로써 효력이 발생합니다.</li>
<li>회사는 필요한 경우 본 약관을 변경할 수 있으며, 변경된 약관은 서비스 화면에 공지된 후 효력이 발생합니다.
</li>
</ul>
<li>제4조 (약관 외 준칙)
<ul class="list_3">
<li>본 약관에 명시되지 않은 사항에 대해서는 대한민국의 관련 법령과 상관습에 따릅니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제2장 서비스 이용계약</span>
<ul class="list_2" maker="1">
<li>제5조 (이용계약의 성립)
<ul class="list_3">
<li>이용계약은 이용자가 약관의 내용에 동의하고, 회사가 제공하는 소정의 회원가입 신청서를 작성하여 가입을 완료한 후,
회사가 이를 승인함으로써 성립합니다.</li>
</ul>
<li>제6조 (이용계약의 유보와 거절)<br>
회사는 다음 각 호에 해당하는 경우 이용계약의 성립을 유보하거나 거절할 수 있습니다:
<ul class="list_3">
<li>신청서의 내용이 허위로 판명된 경우</li>
<li>서비스 제공이 기술적으로 어려운 경우</li>
</ul>
<li>제7조 (계약사항의 변경)<br>
<ul class="list_3">
<li>회원은 개인정보 관리 메뉴를 통해 언제든지 자신의 정보를 열람하고 수정할 수 있습니다. 회원의 정보가 변경된 경우
즉시 수정해야 하며, 수정하지 않아
발생하는 문제의 책임은 회원에게 있습니다.</li>
</ul>
</li>
</li>
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제3장 개인정보 보호</span>
<ul class="list_2" maker="1">
<li>제8조 (개인정보 보호의 원칙)
<ul class="list_3">
<li>회원의 개인정보는 관련 법령에 따라 보호됩니다.</li>
<li>회사는 개인정보 보호와 관련된 세부 사항을 별도로 마련한 개인정보처리방침에 따라 관리하며, 이용자는 언제든지 해당
방침을 통해 개인정보 관리에 대한
자세한 내용을 확인할 수 있습니다.</li>
</ul>
<li>제9조 (개인정보처리방침 준수)
<ul class="list_3">
<li>회사는 개인정보 보호와 관련된 구체적인 사항을 개인정보처리방침에 따라 관리합니다.</li>
<li>개인정보의 수집, 이용, 제공, 보관, 보호 등에 관한 사항은 회사의 개인정보처리방침을 따르며, 이용자는 회사
웹사이트에서 이를 확인할 수
있습니다.</li>
<li>회사는 개인정보 보호를 위해 최선을 다하며, 관련 법령에 따라 이용자의 개인정보를 안전하게 관리합니다.</li>
</ul>
<li>제10조 (14세 미만 아동의 개인정보 보호)<br>
<ul class="list_3">
<li>회사는 14세 미만 아동의 개인정보를 수집할 경우, 반드시 법정대리인의 동의를 받아야 합니다.</li>
<li>법정대리인은 아동의 개인정보 열람, 수정, 삭제를 요청할 수 있으며, 회사는 이를 신속하게 처리합니다.</li>
<li>14세 미만 아동의 개인정보 보호와 관련된 구체적인 사항은 개인정보처리방침에 명시되어 있습니다.</li>
</ul>
</li>
</li>
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제4장 서비스 제공 및 이용</span>
<ul class="list_2" maker="1">
<li>제11조 (서비스 제공)
<ul class="list_3">
<li>회사는 회원의 이용 신청을 승인한 때부터 서비스를 개시합니다. 서비스 이용은 연중무휴 24시간을 원칙으로 합니다.
</li>
</ul>
<li>제12조 (서비스의 변경 및 중단)
<ul class="list_3">
<li>회사는 서비스 제공이 어려운 경우 사전 고지 후 서비스를 변경하거나 중단할 수 있습니다.</li>
</ul>
<li>제10조 (14세 미만 아동의 개인정보 보호)<br>
<ul class="list_3">
<li>회사는 14세 미만 아동의 개인정보를 수집할 경우, 반드시 법정대리인의 동의를 받아야 합니다.</li>
<li>법정대리인은 아동의 개인정보 열람, 수정, 삭제를 요청할 수 있으며, 회사는 이를 신속하게 처리합니다.</li>
<li>14세 미만 아동의 개인정보 보호와 관련된 구체적인 사항은 개인정보처리방침에 명시되어 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제5장 정보 제공 및 광고</span>
<ul class="list_2" maker="1">
<li>제13조 (정보 제공 및 광고)
<ul class="list_3">
<li>회사는 서비스 이용 중 필요하다고 인정되는 정보 및 광고를 제공할 수 있습니다.</li>
<li>회원은 원치 않는 정보를 수신 거부할 수 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제6장 게시물 관리</span>
<ul class="list_2" maker="1">
<li>제14조 (게시물의 관리)
<ul class="list_3">
<li>회사는 회원이 게시한 내용이 불법적이거나 약관에 위배될 경우 이를 삭제할 수 있습니다.</li>
</ul>
<li>제15조 (게시물의 저작권)
<ul class="list_3">
<li>게시물의 저작권은 회원에게 있으며, 회사는 이를 서비스 홍보 및 개선 목적으로 사용할 수 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제7장 계약 해지 및 이용 제한</span>
<ul class="list_2" maker="1">
<li>제16조 (계약 해지)
<ul class="list_3">
<li>회원은 언제든지 계약 해지를 요청할 수 있으며, 회사는 신속하게 처리합니다.</li>
</ul>
<li>제17조 (이용 제한)
<ul class="list_3">
<li>회사는 회원이 약관을 위반할 경우 서비스 이용을 제한할 수 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제8장 손해 배상 및 면책 조항</span>
<ul class="list_2" maker="1">
<li>제18조 (손해 배상)
<ul class="list_3">
<li>회사는 무료로 제공되는 서비스와 관련하여 회원에게 발생한 손해에 대해 책임을 지지 않습니다.</li>
</ul>
<li>제19조 (면책 조항)
<ul class="list_3">
<li>회사는 천재지변 등 불가항력적인 사유로 인해 서비스를 제공하지 못하는 경우 책임을 지지 않습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제9장 유료 서비스</span>
<ul class="list_2" maker="1">
<li>제20조 (유료 서비스의 이용)
<ul class="list_3">
<li>회사는 회원에게 특정 서비스에 대해 유료로 제공할 수 있습니다.</li>
<li>유료 서비스의 이용 요금, 결제 방식, 환불 절차 등에 대한 상세 내용은 서비스 안내 페이지와 결제 화면에
명시합니다.</li>
<li>유료 서비스 이용 요금은 회사가 정한 결제 방식에 따라 결제됩니다. 회원은 신용카드, 계좌이체, 휴대전화 결제 등
회사가 제공하는 다양한 결제
방식을 통해 요금을 납부할 수 있습니다.</li>
<li>유료 서비스의 이용 요금은 선불 결제를 원칙으로 하며, 이용 기간 중 서비스 중지 및 해지 시 남은 이용 기간에
대한 환불은 회사의 환불 정책에
따라 처리됩니다.</li>
<li>회사는 회원의 유료 서비스 이용과 관련하여 발생한 문제에 대해 최선을 다해 해결하도록 노력합니다. 다만, 회사의
고의 또는 중대한 과실이 없는 한
회원이 유료 서비스 이용 중 입은 손해에 대해서는 책임을 지지 않습니다</li>
</ul>
<li>21조 (환불 정책)
<ul class="list_3">
<li>회원은 결제 후 7일 이내에 서비스 이용을 시작하지 않은 경우, 요금 전액을 환불받을 수 있습니다.</li>
<li>유료 서비스 이용 중 부득이한 사유로 서비스가 중지된 경우, 회사는 이용하지 않은 부분에 대해 환불 절차를
밟습니다.</li>
<li>회원의 귀책사유로 인해 서비스 이용이 중지된 경우, 환불이 불가능합니다.</li>
<li>환불은 회원이 지정한 계좌로 환불 절차를 거치며, 환불 요청 후 7일 이내에 처리됩니다.</li>
</ul>
<li>제22조 (유료 서비스의 중지 및 해지)
<ul class="list_3">
<li>회원이 유료 서비스를 해지하고자 하는 경우, 회사의 고객 지원 센터에 해지 신청을 해야 합니다.</li>
<li>회사는 회원이 약관을 위반하거나 부정한 방법으로 유료 서비스를 이용한 경우, 유료 서비스 이용을 즉시 중지하고
계약을 해지할 수 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제10장 양도 금지</span>
<ul class="list_2" maker="1">
<li>제23조 (양도 금지)
<ul class="list_3">
<li>회원은 서비스 이용권한, 기타 이용계약상의 지위를 제3자에게 양도, 증여할 수 없으며, 이를 담보로 제공할 수
없습니다.</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제11장 관할 법원</span>
<ul class="list_2" maker="1">
<li>제24조 (분쟁 해결)
<ul class="list_3">
<li>서비스 이용과 관련하여 분쟁이 발생한 경우, 회사와 회원은 성실히 협의하여 해결합니다.</li>
</ul>
<li>제25조 (관할 법원)
<ul class="list_3">
<li>본 약관에 따른 분쟁은 서울중앙지방법원을 관할 법원으로 합니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">부칙</span>
<ul class="list_2" maker="1">
<li>본 약관은 2024년 10월 1일부터 시행됩니다.
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
@@ -0,0 +1,543 @@
<?php
?>
<!--popup_wrap-->
<div class="popup_wrap" id="pop_privacy">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt=""></div>
</button>
<!--popup_wrap-->
<div class="popup_content privacy">
<div class="contents_wrap">
<ul class="tab_wrap">
<li class="tab_privacy on"><span>개인정보 보호정책</span></li>
<li class="tab_agreement"><span>이용약관</span></li>
</ul>
<div class="content pri show">
<ul class="list_1">
<li><span class="tit">제1조. 목적</span>
<ul class="list_2" maker="1">
<li>바론컨설턴트(이하 "회사")는 EG-BIM 서비스(이하 "서비스")를 이용하는 고객(이하 "이용자")의<br>
개인정보를 보호하고, 「개인정보 보호법」에 따라 책임과 의무를 다하기 위해 본 개인정보처리방침을<br>
마련했습니다. 본 방침은 이용자가 제공한 개인정보가 어떻게 수집, 이용, 보관, 보호되는지를 설명합니다.</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제2조. 개인정보의 처리목적</span>
<ul class="list_2">
<li>회사는 다음의 목적을 위해 개인정보를 처리합니다.<br>
처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며, 이용 목적이 변경되는 경우에는 <br>
「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다.<br>
<ul class="list_3">
<li>본인확인: 회원가입 및 관리를 위한 본인 확인, 전화 또는 이메일을 통한 연락</li>
<li>서비스 제공: 각종 통보 및 서비스 제공을 위한 업무 처리</li>
<li>제품소개서 다운로드: 설명자료 전달</li>
<li>상담 및 데모 신청: 상담 제공 및 데모 제공, 계약 처리자 정보 수집</li>
<li>행사 참가 신청: 참석 안내 및 세미나/설명회/교육 제공</li>
<li>보안가이드 제공: 안내자료 전달</li>
<li>기술지원 문의: 서비스 사용 지원</li>
<li>서비스 개선 의견 접수: 서비스 품질 개선</li>
<li>마케팅 활동: 동의한 고객에 한해 뉴스레터 및 매거진 발송</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제3조. 개인정보의 처리 및 보유 기간</span>
<ul class="list_2">
<li>회사는 법령에 따른 개인정보 보유 및 이용기간 또는 정보주체로부터 개인정보를 수집 시 동의받은 개인정보 보유 및 이용기간 내에서
개인정보를 처리 및 보유합니다.</li>
<li>각각의 개인정보 처리 및 보유 기간은 다음과 같습니다:
<ul class="list_3">
<li>회원정보: 회원가입일부터 회원탈퇴 후 1년까지</li>
<li>홍보, 상담, 계약용 개인정보: 2년</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제4조. 개인정보의 제3자 제공</span>
<ul class="list_2">
<li>회사는 정보주체의 개인정보를 제2조에서 명시한 범위 내에서만 처리하며, 정보 주체의 동의, 법률의 특별한 규정 등 「개인정보
보호법」 제17조 및
제18조에 해당하는 경우에만 개인정보를 제3자에게 제공합니다.</li>
<li>회사는 다음과 같이 개인정보를 제3자에게 제공하고 있습니다:
<ul class="list_3">
<li>제공받는 자: 수사기관 및 유관기관, 피신고업체</li>
<li>이용 목적: 개인정보 침해 민원 처리</li>
<li>제공하는 개인정보 항목: 성명, 연락처, 이메일</li>
<li>보유 및 이용기간: 법령에서 정한 보존기간 및 제공목적 달성 시 파기</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제5조. 개인정보 처리 위탁</span>
<ul class="list_2">
<li>회사는 개인정보 처리업무를 외부 업체에 위탁하지 않으며, 자체적으로 처리하고 있습니다.</li>
<li>회사가 특정 업무(예: 채용 업무)를 외부 업체에 위탁할 경우, <br>개인정보 처리방침 시행 전 회사 홈페이지에서 공지한 후
정보주체의 동의를 받은 후 위탁합니다.</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제6조. 정보주체의 권리·의무 및 행사 방법</span>
<ul class="list_2">
<li>정보주체는 회사에 대해 언제든지 개인정보 열람, 정정, 삭제, 처리정지 요구 등의 권리를 행사할 수 있습니다.</li>
<li>권리 행사는 다음과 같은 방법으로 할 수 있습니다:
<ul class="list_3">
<li>서면: 회사 주소로 서면 제출</li>
<li>전자우편: 회사 이메일로 요청</li>
<li>모사전송(FAX): 회사 FAX로 요청</li>
</ul>
<li>권리 행사는 정보주체의 법정대리인이나 위임을 받은 자를 통해 대리로도 가능합니다. 이 경우 “개인정보 처리 방법에 관한 고시”
별지 제11호 서식에 따른 위임장을 제출해야 합니다.</li>
<li>개인정보 열람 및 처리정지 요구는 「개인정보 보호법」 제35조 제4항, 제37조 제2항에 따라 제한될 수 있습니다.</li>
<li>개인정보의 정정 및 삭제 요구는 다른 법령에 따라 수집된 개인정보인 경우 제한될 수 있습니다.</li>
<li>회사는 권리 행사를 요청한 자가 본인 또는 정당한 대리인인지를 확인합니다.</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제7조. 처리하는 개인정보의 항목</span>
<ul class="list_2">
<li>회사는 다음의 개인정보 항목을 처리합니다:</li>
<li>수집 항목
<ul class="list_3">
<li>필수 항목: 성명, 휴대전화번호, 이메일</li>
<li>선택 항목: 회사전화번호, 문의사항</li>
<li>수집 방법: 홈페이지, 전화, 이메일을 통해 수집</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제8조. 개인정보의 파기</span>
<ul class="list_2">
<li>회사는 개인정보 보유 기간의 경과, 처리 목적 달성 등 개인정보가 불필요하게 되었을 때 지체 없이 해당 개인정보를 파기합니다.
</li>
<li>정보주체로부터 동의받은 개인정보 보유 기간이 경과하거나 처리 목적이 달성된 경우에도 다른 법령에 따라 개인정보를 계속 보존해야 할
경우에는, 해당 개인정보를 별도의 데이터베이스(DB)로 옮기거나 보관 장소를 달리하여 보존합니다.</li>
<li>개인정보 파기의 절차 및 방법은 다음과 같습니다:
<ul class="list_3">
<li>파기 절차: 회사는 파기 사유가 발생한 개인정보를 선정하고, 개인정보 보호책임자의 승인을 받아 개인정보를
파기합니다.</li>
<li>파기 방법: 전자적 파일 형태로 기록된 개인정보는 복구할 수 없도록 기술적 방법을 사용해 삭제하며, 종이 문서에
기록된 개인정보는 분쇄기로
분쇄하거나 소각하여 파기합니다.</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제9조. 개인정보의 안전성 확보 조치</span>
<ul class="list_2">
<li>회사는 개인정보의 안전성 확보를 위해 다음과 같은 조치를 취합니다:
<ul class="list_3">
<li>관리적 조치: 내부관리계획 수립·시행, 정기적 직원 교육</li>
<li>기술적 조치: 개인정보처리시스템 접근 권한 관리, 접근통제시스템 설치, 고유식별정보 암호화, 보안 프로그램 설치
</li>
<li>물리적 조치: 전산실 및 자료보관실 접근 통제</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제10조. 개인정보 자동 수집 장치의 설치·운영 및 거부에 관한 사항</span>
<ul class="list_2">
<li>회사는 쿠키(Cookie)를 사용하지 않습니다. 쿠키는 이용자의 이용 정보를 저장하고 수시로 불러오는 작은 파일로,
EG-BIM 서비스에서는 쿠키를 사용하지 않습니다.
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제11조. 개인정보 보호책임자</span>
<ul class="list_2">
<li>회사는 개인정보 처리에 관한 업무를 총괄하여 책임지고, 개인정보 처리와 관련된 정보주체의 불만처리 및 피해구제를 위해 개인정보
보호책임자를 지정하고 있습니다.</li>
<li>개인정보 보호책임자:
<ul class="list_3">
<li>성명: 박진</li>
<li>직책: 책임연구원</li>
<li>연락처: 02-2141-7485</li>
<li>팩스번호: 02-2141-7599</li>
<li>이메일: jpark@baroncs.co.kr</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제12조. 개인정보 열람청구</span>
<ul class="list_2">
<li>정보주체는 「개인정보 보호법」 제35조에 따른 개인정보 열람 청구를 아래 부서에 할 수 있습니다. 회사는 정보주체의 개인정보
열람청구가 신속하게 처리되도록 노력하겠습니다.</li>
<li>개인정보 열람청구 접수·처리 부서:
<ul class="list_3">
<li>부서명: 총괄기획실</li>
<li>담당자: 권혁진</li>
<li>연락처: 02-2141-7465</li>
<li>팩스번호: 02-2141-7599</li>
<li>이메일: baroncs@baroncs.co.kr</li>
</ul>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제13조. 권익침해 구제방법</span>
<ul class="list_2">
<li>정보주체는 개인정보 침해로 인한 구제를 위해 개인정보분쟁조정위원회, 한국인터넷진흥원 개인정보침해신고센터 등에 분쟁 해결이나 상담을
신청할 수 있습니다.
<ul class="list_3">
<li>개인정보분쟁조정위원회: (국번없이) 1833-6972 (www.kopico.go.kr)</li>
<li>개인정보침해신고센터: (국번없이) 118 (privacy.kisa.or.kr)</li>
<li>대검찰청: (국번없이) 1301 (www.spo.go.kr)</li>
<li>팩스번호: 02-408-1927</li>
<li>경찰청: (국번없이) 182 (www.police.go.kr)</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제14조. 개인정보 처리방침의 변경</span>
<ul class="list_2">
<li>본 개인정보처리방침은 법령, 정책 또는 보안 기술의 변경에 따라 내용의 추가, 삭제 및 수정이 있을 시, 개정 최소 7일 전에
홈페이지를 통해 사전
공지합니다.</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">부칙</span>
<ul class="list_2">
<li>제 1조 (시행일자)
<ul class="list_3">
<li>이 개인정보처리방침은 2024년 10월 1일부터 시행됩니다.</li>
</li>
</ul>
<li>제2조 (개정 및 고지의 의무)
<ul class="list_3">
<li>회사는 개인정보처리방침을 변경하는 경우, 변경사항을 시행일자 7일 전부터 서비스 내 공지사항 페이지를 통해 고지할 것입니다.
다만, 이용자의 권리나
의무에 중대한 변경이 발생하는 경우에는 시행일자 30일 전부터 고지합니다.</li>
</li>
</ul>
<li>제3조 (유효성)
<ul class="list_3">
<li>본 개인정보처리방침의 일부 조항이 법적 또는 기타 사유로 인해 무효화되거나 시행할 수 없는 경우, 나머지 조항들은 계속해서 유효합니다.
무효화된 조항은
관련 법령에 부합하는 방식으로 수정되어 효력을 지속합니다.</li>
</li>
</ul>
<li>제4조 (변경 통지의 방법)<br>
회사는 개인정보처리방침의 변경 시, 다음의 방법으로 이용자에게 고지합니다:
<ul class="list_3">
<li>서비스 초기화면 또는 팝업 공지</li>
<li>이메일 발송</li>
<li>회사 홈페이지 공지사항</li>
</li>
</ul>
<li>제5조 (비회원의 개인정보 보호)
<ul class="list_3">
<li>회사는 비회원의 개인정보도 회원과 동일한 수준으로 보호합니다. 비회원이 개인정보 제공을 거부할 경우 일부 서비스 이용에 제한이 있을 수
있습니다.</li>
</li>
</ul>
<li>제6조 (14세 미만 아동의 개인정보 보호)
<ul class="list_3">
<li>회사는 14세 미만 아동의 개인정보를 수집하지 않습니다. 만일 14세 미만 아동의 개인정보가 수집된 경우, 법정 대리인의 동의를 받아야
하며, 법정
대리인의 동의 없이 수집된 경우 이를 지체 없이 파기합니다.</li>
</li>
</ul>
<li>제7조 (개인정보의 국외 이전)
<ul class="list_3">
<li>회사는 이용자의 개인정보를 국외로 이전하지 않으며, 향후 필요한 경우, 사전에 이용자의 동의를 받습니다.</li>
</li>
</ul>
<li>제8조 (기타)
<ul class="list_3">
<li>본 방침에 명시되지 않은 사항은 회사의 내부 방침과 관련 법령에 따릅니다.</li>
</li>
</ul>
</div>
<div class="content agr">
<ul class="list_1">
<li><span class="tit">제1장 총칙</span>
<ul class="list_2" maker="1">
<li>제1조 (목적)
<ul class="list_3">
<li>이 약관은 바론컨설턴트(이하 "회사"라 합니다)가 제공하는 EG-BIM 소프트웨어(이하 "서비스"라 합니다)를 이용함에
있어 회사와 이용자 간의 권리,
의무 및 책임사항과 기타 필요한 사항을 정하는 것을 목적으로 합니다.</li>
</ul>
<li>제2조 (용어의 정의)<br>
본 약관에서 사용하는 용어의 정의는 다음과 같습니다:
<ul class="list_3">
<li>“서비스”란 회사가 제공하는 소프트웨어 및 관련 제반 서비스를 의미합니다.</li>
<li>“이용자”란 회사의 서비스에 접속하여 본 약관에 따라 회사가 제공하는 서비스를 이용하는 회원 및 비회원을 말합니다.
</li>
<li>“회원”이란 본 약관에 동의하고 회사와 이용계약을 체결한 자를 의미합니다.</li>
<li>“비회원”이란 회원가입을 하지 않고 회사가 제공하는 일부 서비스를 이용하는 자를 말합니다.</li>
</ul>
<li>제3조 (약관의 효력 및 변경)<br>
본 약관에서 사용하는 용어의 정의는 다음과 같습니다:
<ul class="list_3">
<li>본 약관은 이용자가 본 약관에 동의하고, 회사가 이에 대한 승낙을 완료함으로써 효력이 발생합니다.</li>
<li>회사는 필요한 경우 본 약관을 변경할 수 있으며, 변경된 약관은 서비스 화면에 공지된 후 효력이 발생합니다.
</li>
</ul>
<li>제4조 (약관 외 준칙)
<ul class="list_3">
<li>본 약관에 명시되지 않은 사항에 대해서는 대한민국의 관련 법령과 상관습에 따릅니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제2장 서비스 이용계약</span>
<ul class="list_2" maker="1">
<li>제5조 (이용계약의 성립)
<ul class="list_3">
<li>이용계약은 이용자가 약관의 내용에 동의하고, 회사가 제공하는 소정의 회원가입 신청서를 작성하여 가입을 완료한 후,
회사가 이를 승인함으로써 성립합니다.</li>
</ul>
<li>제6조 (이용계약의 유보와 거절)<br>
회사는 다음 각 호에 해당하는 경우 이용계약의 성립을 유보하거나 거절할 수 있습니다:
<ul class="list_3">
<li>신청서의 내용이 허위로 판명된 경우</li>
<li>서비스 제공이 기술적으로 어려운 경우</li>
</ul>
<li>제7조 (계약사항의 변경)<br>
<ul class="list_3">
<li>회원은 개인정보 관리 메뉴를 통해 언제든지 자신의 정보를 열람하고 수정할 수 있습니다. 회원의 정보가 변경된 경우
즉시 수정해야 하며, 수정하지 않아
발생하는 문제의 책임은 회원에게 있습니다.</li>
</ul>
</li>
</li>
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제3장 개인정보 보호</span>
<ul class="list_2" maker="1">
<li>제8조 (개인정보 보호의 원칙)
<ul class="list_3">
<li>회원의 개인정보는 관련 법령에 따라 보호됩니다.</li>
<li>회사는 개인정보 보호와 관련된 세부 사항을 별도로 마련한 개인정보처리방침에 따라 관리하며, 이용자는 언제든지 해당
방침을 통해 개인정보 관리에 대한
자세한 내용을 확인할 수 있습니다.</li>
</ul>
<li>제9조 (개인정보처리방침 준수)
<ul class="list_3">
<li>회사는 개인정보 보호와 관련된 구체적인 사항을 개인정보처리방침에 따라 관리합니다.</li>
<li>개인정보의 수집, 이용, 제공, 보관, 보호 등에 관한 사항은 회사의 개인정보처리방침을 따르며, 이용자는 회사
웹사이트에서 이를 확인할 수
있습니다.</li>
<li>회사는 개인정보 보호를 위해 최선을 다하며, 관련 법령에 따라 이용자의 개인정보를 안전하게 관리합니다.</li>
</ul>
<li>제10조 (14세 미만 아동의 개인정보 보호)<br>
<ul class="list_3">
<li>회사는 14세 미만 아동의 개인정보를 수집할 경우, 반드시 법정대리인의 동의를 받아야 합니다.</li>
<li>법정대리인은 아동의 개인정보 열람, 수정, 삭제를 요청할 수 있으며, 회사는 이를 신속하게 처리합니다.</li>
<li>14세 미만 아동의 개인정보 보호와 관련된 구체적인 사항은 개인정보처리방침에 명시되어 있습니다.</li>
</ul>
</li>
</li>
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제4장 서비스 제공 및 이용</span>
<ul class="list_2" maker="1">
<li>제11조 (서비스 제공)
<ul class="list_3">
<li>회사는 회원의 이용 신청을 승인한 때부터 서비스를 개시합니다. 서비스 이용은 연중무휴 24시간을 원칙으로 합니다.
</li>
</ul>
<li>제12조 (서비스의 변경 및 중단)
<ul class="list_3">
<li>회사는 서비스 제공이 어려운 경우 사전 고지 후 서비스를 변경하거나 중단할 수 있습니다.</li>
</ul>
<li>제10조 (14세 미만 아동의 개인정보 보호)<br>
<ul class="list_3">
<li>회사는 14세 미만 아동의 개인정보를 수집할 경우, 반드시 법정대리인의 동의를 받아야 합니다.</li>
<li>법정대리인은 아동의 개인정보 열람, 수정, 삭제를 요청할 수 있으며, 회사는 이를 신속하게 처리합니다.</li>
<li>14세 미만 아동의 개인정보 보호와 관련된 구체적인 사항은 개인정보처리방침에 명시되어 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제5장 정보 제공 및 광고</span>
<ul class="list_2" maker="1">
<li>제13조 (정보 제공 및 광고)
<ul class="list_3">
<li>회사는 서비스 이용 중 필요하다고 인정되는 정보 및 광고를 제공할 수 있습니다.</li>
<li>회원은 원치 않는 정보를 수신 거부할 수 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제6장 게시물 관리</span>
<ul class="list_2" maker="1">
<li>제14조 (게시물의 관리)
<ul class="list_3">
<li>회사는 회원이 게시한 내용이 불법적이거나 약관에 위배될 경우 이를 삭제할 수 있습니다.</li>
</ul>
<li>제15조 (게시물의 저작권)
<ul class="list_3">
<li>게시물의 저작권은 회원에게 있으며, 회사는 이를 서비스 홍보 및 개선 목적으로 사용할 수 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제7장 계약 해지 및 이용 제한</span>
<ul class="list_2" maker="1">
<li>제16조 (계약 해지)
<ul class="list_3">
<li>회원은 언제든지 계약 해지를 요청할 수 있으며, 회사는 신속하게 처리합니다.</li>
</ul>
<li>제17조 (이용 제한)
<ul class="list_3">
<li>회사는 회원이 약관을 위반할 경우 서비스 이용을 제한할 수 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제8장 손해 배상 및 면책 조항</span>
<ul class="list_2" maker="1">
<li>제18조 (손해 배상)
<ul class="list_3">
<li>회사는 무료로 제공되는 서비스와 관련하여 회원에게 발생한 손해에 대해 책임을 지지 않습니다.</li>
</ul>
<li>제19조 (면책 조항)
<ul class="list_3">
<li>회사는 천재지변 등 불가항력적인 사유로 인해 서비스를 제공하지 못하는 경우 책임을 지지 않습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제9장 유료 서비스</span>
<ul class="list_2" maker="1">
<li>제20조 (유료 서비스의 이용)
<ul class="list_3">
<li>회사는 회원에게 특정 서비스에 대해 유료로 제공할 수 있습니다.</li>
<li>유료 서비스의 이용 요금, 결제 방식, 환불 절차 등에 대한 상세 내용은 서비스 안내 페이지와 결제 화면에
명시합니다.</li>
<li>유료 서비스 이용 요금은 회사가 정한 결제 방식에 따라 결제됩니다. 회원은 신용카드, 계좌이체, 휴대전화 결제 등
회사가 제공하는 다양한 결제
방식을 통해 요금을 납부할 수 있습니다.</li>
<li>유료 서비스의 이용 요금은 선불 결제를 원칙으로 하며, 이용 기간 중 서비스 중지 및 해지 시 남은 이용 기간에
대한 환불은 회사의 환불 정책에
따라 처리됩니다.</li>
<li>회사는 회원의 유료 서비스 이용과 관련하여 발생한 문제에 대해 최선을 다해 해결하도록 노력합니다. 다만, 회사의
고의 또는 중대한 과실이 없는 한
회원이 유료 서비스 이용 중 입은 손해에 대해서는 책임을 지지 않습니다</li>
</ul>
<li>21조 (환불 정책)
<ul class="list_3">
<li>회원은 결제 후 7일 이내에 서비스 이용을 시작하지 않은 경우, 요금 전액을 환불받을 수 있습니다.</li>
<li>유료 서비스 이용 중 부득이한 사유로 서비스가 중지된 경우, 회사는 이용하지 않은 부분에 대해 환불 절차를
밟습니다.</li>
<li>회원의 귀책사유로 인해 서비스 이용이 중지된 경우, 환불이 불가능합니다.</li>
<li>환불은 회원이 지정한 계좌로 환불 절차를 거치며, 환불 요청 후 7일 이내에 처리됩니다.</li>
</ul>
<li>제22조 (유료 서비스의 중지 및 해지)
<ul class="list_3">
<li>회원이 유료 서비스를 해지하고자 하는 경우, 회사의 고객 지원 센터에 해지 신청을 해야 합니다.</li>
<li>회사는 회원이 약관을 위반하거나 부정한 방법으로 유료 서비스를 이용한 경우, 유료 서비스 이용을 즉시 중지하고
계약을 해지할 수 있습니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">제10장 양도 금지</span>
<ul class="list_2" maker="1">
<li>제23조 (양도 금지)
<ul class="list_3">
<li>회원은 서비스 이용권한, 기타 이용계약상의 지위를 제3자에게 양도, 증여할 수 없으며, 이를 담보로 제공할 수
없습니다.</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul class="list_1">
<li><span class="tit">제11장 관할 법원</span>
<ul class="list_2" maker="1">
<li>제24조 (분쟁 해결)
<ul class="list_3">
<li>서비스 이용과 관련하여 분쟁이 발생한 경우, 회사와 회원은 성실히 협의하여 해결합니다.</li>
</ul>
<li>제25조 (관할 법원)
<ul class="list_3">
<li>본 약관에 따른 분쟁은 서울중앙지방법원을 관할 법원으로 합니다.</li>
</ul>
</li>
</li>
</ul>
</ul>
<ul class="list_1">
<li><span class="tit">부칙</span>
<ul class="list_2" maker="1">
<li>본 약관은 2024년 10월 1일부터 시행됩니다.
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
+52
View File
@@ -0,0 +1,52 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 자기소개 시작 { -->
<div id="profile" class="new_win">
<h1 id="win_title"><?php echo $mb_nick ?>님의 프로필</h1>
<div class="profile_name">
<span class="my_profile_img">
<?php echo get_member_profile_img($mb['mb_id']); ?>
</span>
<?php echo $mb_nick ?>
</div>
<div class="tbl_head02 tbl_wrap new_win_con">
<table>
<tbody>
<tr>
<th scope="row"><i class="fa fa-star-o" aria-hidden="true"></i> 회원권한</th>
<td><?php echo $mb['mb_level'] ?></td>
<th scope="row"><i class="fa fa-database" aria-hidden="true"></i> 포인트</th>
<td><?php echo number_format($mb['mb_point']) ?></td>
</tr>
<tr>
<th scope="row"><i class="fa fa-clock-o" aria-hidden="true"></i> 회원가입일</th>
<td><?php echo ($member['mb_level'] >= $mb['mb_level']) ? substr($mb['mb_datetime'],0,10) ." (".number_format($mb_reg_after)." 일)" : "알 수 없음"; ?></td>
<th scope="row"><i class="fa fa-clock-o" aria-hidden="true"></i> 최종접속일</th>
<td><?php echo ($member['mb_level'] >= $mb['mb_level']) ? $mb['mb_today_login'] : "알 수 없음"; ?></td>
</tr>
<?php if ($mb_homepage) { ?>
<tr>
<th scope="row"><i class="fa fa-home" aria-hidden="true"></i> 홈페이지</th>
<td colspan="3"><a href="<?php echo $mb_homepage ?>" target="_blank"><?php echo $mb_homepage ?></a></td>
</tr>
<?php } ?>
</tbody>
</table>
<section>
<h2>인사말</h2>
<p><?php echo $mb_profile ?></p>
</section>
</div>
<div class="win_btn">
<button type="button" onclick="window.close();" class="btn_close">창닫기</button>
</div>
</div>
<!-- } 자기소개 끝 -->
+5
View File
@@ -0,0 +1,5 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
<div>recruit test</div>
@@ -0,0 +1,104 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 회원가입약관 동의 시작 { -->
<div class="register">
<form name="fregister" id="fregister" action="<?php echo $register_action_url ?>" onsubmit="return fregister_submit(this);" method="POST" autocomplete="off">
<p><i class="fa fa-check-circle" aria-hidden="true"></i> 회원가입약관 및 개인정보 수집 및 이용의 내용에 동의하셔야 회원가입 하실 수 있습니다.</p>
<?php
// 소셜로그인 사용시 소셜로그인 버튼
@include_once(get_social_skin_path().'/social_register.skin.php');
?>
<section id="fregister_term">
<h2>회원가입약관</h2>
<textarea readonly><?php echo get_text($config['cf_stipulation']) ?></textarea>
<fieldset class="fregister_agree">
<input type="checkbox" name="agree" value="1" id="agree11" class="selec_chk">
<label for="agree11"><span></span><b class="sound_only">회원가입약관의 내용에 동의합니다.</b></label>
</fieldset>
</section>
<section id="fregister_private">
<h2>개인정보 수집 및 이용</h2>
<div>
<table>
<caption>개인정보 수집 및 이용</caption>
<thead>
<tr>
<th>목적</th>
<th>항목</th>
<th>보유기간</th>
</tr>
</thead>
<tbody>
<tr>
<td>이용자 식별 및 본인여부 확인</td>
<td>아이디, 이름, 비밀번호<?php echo ($config['cf_cert_use'])? ", 생년월일, 휴대폰 번호(본인인증 할 때만, 아이핀 제외), 암호화된 개인식별부호(CI)" : ""; ?></td>
<td>회원 탈퇴 시까지</td>
</tr>
<tr>
<td>고객서비스 이용에 관한 통지,<br>CS대응을 위한 이용자 식별</td>
<td>연락처 (이메일, 휴대전화번호)</td>
<td>회원 탈퇴 시까지</td>
</tr>
</tbody>
</table>
</div>
<fieldset class="fregister_agree">
<input type="checkbox" name="agree2" value="1" id="agree21" class="selec_chk">
<label for="agree21"><span></span><b class="sound_only">개인정보 수집 및 이용의 내용에 동의합니다.</b></label>
</fieldset>
</section>
<div id="fregister_chkall" class="chk_all fregister_agree">
<input type="checkbox" name="chk_all" id="chk_all" class="selec_chk">
<label for="chk_all"><span></span>회원가입 약관에 모두 동의합니다</label>
</div>
<div class="btn_confirm">
<a href="<?php echo G5_URL ?>" class="btn_close">취소</a>
<button type="submit" class="btn_submit">회원가입</button>
</div>
</form>
<script>
function fregister_submit(f)
{
if (!f.agree.checked) {
alert("회원가입약관의 내용에 동의하셔야 회원가입 하실 수 있습니다.");
f.agree.focus();
return false;
}
if (!f.agree2.checked) {
alert("개인정보 수집 및 이용의 내용에 동의하셔야 회원가입 하실 수 있습니다.");
f.agree2.focus();
return false;
}
return true;
}
jQuery(function($){
// 모두선택
$("input[name=chk_all]").click(function() {
if ($(this).prop('checked')) {
$("input[name^=agree]").prop('checked', true);
} else {
$("input[name^=agree]").prop("checked", false);
}
});
});
</script>
</div>
<!-- } 회원가입 약관 동의 끝 -->
+452
View File
@@ -0,0 +1,452 @@
<?php
// if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
// add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
if (!isset($register_action_url)) {
$register_action_url = '';
}
?>
<!-- <head> -->
<!-- <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script> -->
<!-- </head> -->
<script src="<?php echo G5_URL ?>/js/common.js"></script>
<script src="<?php echo G5_URL ?>/js/popup.js?v=20260723"></script>
<!-- 회원가입약관 동의 시작 { -->
<!-- <body>
<div class="register"> -->
<!-- <div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_agreement" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_container-->
<div class="popup_container register">
<!--popup_tit-->
<div class="popup_tit">
<h1 class="h_1">회원가입</h1>
<!-- <ul>
<li class="join_step on">
<h4 class="h_4">01</h4>
<h4 class="h_4 txt">약관동의</h4>
</li>
<li class="join_step">
<h4 class="h_4">02</h4>
<h4 class="h_4 txt">계정 생성</h4>
</li>
<li class="join_step">
<h4 class="h_4">03</h4>
<h4 class="h_4 txt">사용자 인증</h4>
</li>
<li class="join_step">
<h4 class="h_4">04</h4>
<h4 class="h_4 txt">추가정보 입력</h4>
</li>
</ul> -->
</div>
<!--//pop_join_right-->
<div class="popup_contents_wrap">
<form name="fregister" id="fregister" action="<?php echo $register_action_url ?>" onsubmit="return fregister_submit(this);" method="POST" autocomplete="off">
<div class="tbl_wrap">
<div class="terms_wrap">
<div class="checkbox_wrap">
<h4>이용약관</h4>
<input type="checkbox" name="agree" value="1" id="agree11">
</div>
<div class="terms">
<em>EG-BIM 소프트웨어 이용약관</em> <br>
<br>
<em>제1장 총칙</em> <br>
<em>제1조 (목적)</em><br>
이 약관은 바론컨설턴트(이하 "회사"라 합니다)가 제공하는 EG-BIM 소프트웨어(이하 "서비스"라 합니다)를 이용함에 있어 회사와 이용자 간의 권리,
의무 및 책임사항과 기타 필요한 사항을 정하는 것을 목적으로 합니다.<br>
<em>제2조 (용어의 정의)</em> <br>
① 본 약관에서 사용하는 용어의 정의는 다음과 같습니다:<br>
- “서비스”란 회사가 제공하는 소프트웨어 및 관련 제반 서비스를 의미합니다.<br>
- “이용자”란 회사의 서비스에 접속하여 본 약관에 따라 회사가 제공하는 서비스를 이용하는 회원 및 비회원을 말합니다.<br>
- “회원”이란 본 약관에 동의하고 회사와 이용계약을 체결한 자를 의미합니다.<br>
- “비회원”이란 회원가입을 하지 않고 회사가 제공하는 일부 서비스를 이용하는 자를 말합니다.<br>
<em>제3조 (약관의 효력 및 변경)</em><br>
① 본 약관은 이용자가 본 약관에 동의하고, 회사가 이에 대한 승낙을 완료함으로써 효력이 발생합니다.
② 회사는 필요한 경우 본 약관을 변경할 수 있으며, 변경된 약관은 서비스 화면에 공지된 후 효력이 발생합니다.<br>
<em>제4조 (약관 외 준칙)</em><br>
본 약관에 명시되지 않은 사항에 대해서는 대한민국의 관련 법령과 상관습에 따릅니다.<br>
<em>제2장 서비스 이용계약</em><br>
<em>제5조 (이용계약의 성립)</em><br>
이용계약은 이용자가 약관의 내용에 동의하고, 회사가 제공하는 소정의 회원가입 신청서를 작성하여 가입을 완료한 후, 회사가 이를 승인함으로써 성립합니다.<br>
<em>제6조 (이용계약의 유보와 거절)</em><br>
① 회사는 다음 각 호에 해당하는 경우 이용계약의 성립을 유보하거나 거절할 수 있습니다:
- 신청서의 내용이 허위로 판명된 경우
- 서비스 제공이 기술적으로 어려운 경우<br>
<em>제7조 (계약사항의 변경)</em><br>
회원은 개인정보 관리 메뉴를 통해 언제든지 자신의 정보를 열람하고 수정할 수 있습니다. 회원의 정보가 변경된 경우 즉시 수정해야 하며, 수정하지 않아
발생하는 문제의 책임은 회원에게 있습니다.<br>
<em>제3장 개인정보 보호</em><br>
<em>제8조 (개인정보 보호의 원칙)</em><br>
① 회원의 개인정보는 관련 법령에 따라 보호됩니다.
② 회사는 개인정보 보호와 관련된 세부 사항을 별도로 마련한 개인정보처리방침에 따라 관리하며, 이용자는 언제든지 해당 방침을 통해 개인정보 관리에 대한
자세한 내용을 확인할 수 있습니다.<br>
<em>제9조 (개인정보처리방침 준수)</em><br>
① 회사는 개인정보 보호와 관련된 구체적인 사항을 개인정보처리방침에 따라 관리합니다.
② 개인정보의 수집, 이용, 제공, 보관, 보호 등에 관한 사항은 회사의 개인정보처리방침을 따르며, 이용자는 회사 웹사이트에서 이를 확인할 수
있습니다.
③ 회사는 개인정보 보호를 위해 최선을 다하며, 관련 법령에 따라 이용자의 개인정보를 안전하게 관리합니다.<br>
<em>제10조 (14세 미만 아동의 개인정보 보호)</em><br>
① 회사는 14세 미만 아동의 개인정보를 수집할 경우, 반드시 법정대리인의 동의를 받아야 합니다.
② 법정대리인은 아동의 개인정보 열람, 수정, 삭제를 요청할 수 있으며, 회사는 이를 신속하게 처리합니다.
③ 14세 미만 아동의 개인정보 보호와 관련된 구체적인 사항은 개인정보처리방침에 명시되어 있습니다.<br>
<em>제4장 서비스 제공 및 이용</em><br>
제11조 (서비스 제공)<br>
회사는 회원의 이용 신청을 승인한 때부터 서비스를 개시합니다. 서비스 이용은 연중무휴 24시간을 원칙으로 합니다.<br>
<em>제12조 (서비스의 변경 및 중단)</em> <br>
회사는 서비스 제공이 어려운 경우 사전 고지 후 서비스를 변경하거나 중단할 수 있습니다.<br>
<em>제5장 정보 제공 및 광고</em><br>
제13조 (정보 제공 및 광고)<br>
① 회사는 서비스 이용 중 필요하다고 인정되는 정보 및 광고를 제공할 수 있습니다.
② 회원은 원치 않는 정보를 수신 거부할 수 있습니다.<br>
<em>제6장 게시물 관리</em><br>
<em>제14조 (게시물의 관리)</em><br>
회사는 회원이 게시한 내용이 불법적이거나 약관에 위배될 경우 이를 삭제할 수 있습니다.<br>
<em>제15조 (게시물의 저작권)</em><br>
게시물의 저작권은 회원에게 있으며, 회사는 이를 서비스 홍보 및 개선 목적으로 사용할 수 있습니다.<br>
<em>제7장 계약 해지 및 이용 제한</em><br>
<em>제16조 (계약 해지)</em> <br>
회원은 언제든지 계약 해지를 요청할 수 있으며, 회사는 신속하게 처리합니다.<br>
<em>제17조 (이용 제한)</em><br>
회사는 회원이 약관을 위반할 경우 서비스 이용을 제한할 수 있습니다.<br>
<em>제8장 손해 배상 및 면책 조항</em><br>
<em>제18조 (손해 배상)</em><br>
회사는 무료로 제공되는 서비스와 관련하여 회원에게 발생한 손해에 대해 책임을 지지 않습니다.<br>
<em>제19조 (면책 조항)</em><br>
회사는 천재지변 등 불가항력적인 사유로 인해 서비스를 제공하지 못하는 경우 책임을 지지 않습니다.<br>
<em>제9장 유료 서비스</em> <br>
<em>20조 (유료 서비스의 이용)</em><br>
① 회사는 회원에게 특정 서비스에 대해 유료로 제공할 수 있습니다.
② 유료 서비스의 이용 요금, 결제 방식, 환불 절차 등에 대한 상세 내용은 서비스 안내 페이지와 결제 화면에 명시합니다.
③ 유료 서비스 이용 요금은 회사가 정한 결제 방식에 따라 결제됩니다. 회원은 신용카드, 계좌이체, 휴대전화 결제 등 회사가 제공하는 다양한 결제
방식을 통해 요금을 납부할 수 있습니다.
④ 유료 서비스의 이용 요금은 선불 결제를 원칙으로 하며, 이용 기간 중 서비스 중지 및 해지 시 남은 이용 기간에 대한 환불은 회사의 환불 정책에
따라 처리됩니다.
⑤ 회사는 회원의 유료 서비스 이용과 관련하여 발생한 문제에 대해 최선을 다해 해결하도록 노력합니다. 다만, 회사의 고의 또는 중대한 과실이 없는 한
회원이 유료 서비스 이용 중 입은 손해에 대해서는 책임을 지지 않습니다.<br>
<em>제21조(환불 정책)</em> <br>
① 회원은 결제 후 7일 이내에 서비스 이용을 시작하지 않은 경우, 요금 전액을 환불받을 수 있습니다.
② 유료 서비스 이용 중 부득이한 사유로 서비스가 중지된 경우, 회사는 이용하지 않은 부분에 대해 환불 절차를 밟습니다.
③ 회원의 귀책사유로 인해 서비스 이용이 중지된 경우, 환불이 불가능합니다.
④ 환불은 회원이 지정한 계좌로 환불 절차를 거치며, 환불 요청 후 7일 이내에 처리됩니다.<br>
<em>제22조 (유료 서비스의 중지 및 해지)</em><br>
① 회원이 유료 서비스를 해지하고자 하는 경우, 회사의 고객 지원 센터에 해지 신청을 해야 합니다.
② 회사는 회원이 약관을 위반하거나 부정한 방법으로 유료 서비스를 이용한 경우, 유료 서비스 이용을 즉시 중지하고 계약을 해지할 수 있습니다.<br>
<em>제10장 양도 금지</em><br>
<em>제23조 (양도 금지)</em><br>
회원은 서비스 이용권한, 기타 이용계약상의 지위를 제3자에게 양도, 증여할 수 없으며, 이를 담보로 제공할 수 없습니다.<br>
<em>제11장 관할 법원</em><br>
<em>제24조 (분쟁 해결)</em><br>
서비스 이용과 관련하여 분쟁이 발생한 경우, 회사와 회원은 성실히 협의하여 해결합니다.<br>
<em>제25조 (관할 법원)</em><br>
본 약관에 따른 분쟁은 서울중앙지방법원을 관할 법원으로 합니다.<br>
<em>부칙</em><br>
본 약관은 2024년 10월 1일부터 시행됩니다.<br>
</div>
</div>
<div class="terms_wrap">
<div class="checkbox_wrap">
<h4>개인정보 수집 및 이용 동의</h4>
<input type="checkbox" name="agree2" value="1" id="agree21">
</div>
<div class="terms">
<em>EG-BIM 서비스 개인정보처리방침</em> <br>
<br>
<em>제1조 (목적)</em><br>
바론컨설턴트(이하 "회사")는 EG-BIM 서비스(이하 "서비스")를 이용하는 고객(이하 "이용자")의 개인정보를 보호하고, 「개인정보 보호법」에 따라
책임과 의무를 다하기 위해 본 개인정보처리방침을 마련했습니다. 본 방침은 이용자가 제공한 개인정보가 어떻게 수집, 이용, 보관, 보호되는지를
설명합니다.<br>
<em>제2조 (개인정보의 처리목적)</em><br>
회사는 다음의 목적을 위해 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며, 이용 목적이 변경되는 경우에는
「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다.<br>
- 본인확인: 회원가입 및 관리를 위한 본인 확인, 전화 또는 이메일을 통한 연락<br>
- 서비스 제공: 각종 통보 및 서비스 제공을 위한 업무 처리<br>
- 제품소개서 다운로드: 설명자료 전달<br>
- 상담 및 데모 신청: 상담 제공 및 데모 제공, 계약 처리자 정보 수집<br>
- 행사 참가 신청: 참석 안내 및 세미나/설명회/교육 제공<br>
- 보안가이드 제공: 안내자료 전달<br>
- 기술지원 문의: 서비스 사용 지원<br>
- 서비스 개선 의견 접수: 서비스 품질 개선<br>
- 마케팅 활동: 동의한 고객에 한해 뉴스레터 및 매거진 발송<br>
<em>제3조 (개인정보의 처리 및 보유 기간)</em><br>
① 회사는 법령에 따른 개인정보 보유 및 이용기간 또는 정보주체로부터 개인정보를 수집 시 동의받은 개인정보 보유 및 이용기간 내에서 개인정보를 처리 및
보유합니다.<br>
② 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다:<br>
- 회원정보: 회원가입일부터 회원탈퇴 후 1년까지<br>
- 홍보, 상담, 계약용 개인정보: 2년<br>
<em>제4조 (개인정보의 제3자 제공)</em><br>
① 회사는 정보주체의 개인정보를 제2조에서 명시한 범위 내에서만 처리하며, 정보 주체의 동의, 법률의 특별한 규정 등 「개인정보 보호법」 제17조 및
제18조에 해당하는 경우에만 개인정보를 제3자에게 제공합니다.<br>
② 회사는 다음과 같이 개인정보를 제3자에게 제공하고 있습니다:<br>
- 제공받는 자: 수사기관 및 유관기관, 피신고업체<br>
- 이용 목적: 개인정보 침해 민원 처리<br>
- 제공하는 개인정보 항목: 성명, 연락처, 이메일<br>
- 보유 및 이용기간: 법령에서 정한 보존기간 및 제공목적 달성 시 파기<br>
<em>제5조 (개인정보 처리 위탁)</em><br>
① 회사는 개인정보 처리업무를 외부 업체에 위탁하지 않으며, 자체적으로 처리하고 있습니다.<br>
② 회사가 특정 업무(예: 채용 업무)를 외부 업체에 위탁할 경우, 개인정보 처리방침 시행 전 회사 홈페이지에서 공지한 후 정보주체의 동의를 받은 후
위탁합니다.<br>
<em>제6조 (정보주체의 권리·의무 및 행사 방법)</em><br>
① 정보주체는 회사에 대해 언제든지 개인정보 열람, 정정, 삭제, 처리정지 요구 등의 권리를 행사할 수 있습니다.<br>
② 권리 행사는 다음과 같은 방법으로 할 수 있습니다:<br>
- 서면: 회사 주소로 서면 제출<br>
- 전자우편: 회사 이메일로 요청<br>
- 모사전송(FAX): 회사 FAX로 요청<br>
③ 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자를 통해 대리로도 가능합니다. 이 경우 “개인정보 처리 방법에 관한 고시” 별지 제11호 서식에
따른 위임장을 제출해야 합니다.<br>
④ 개인정보 열람 및 처리정지 요구는 「개인정보 보호법」 제35조 제4항, 제37조 제2항에 따라 제한될 수 있습니다.<br>
⑤ 개인정보의 정정 및 삭제 요구는 다른 법령에 따라 수집된 개인정보인 경우 제한될 수 있습니다.<br>
⑥ 회사는 권리 행사를 요청한 자가 본인 또는 정당한 대리인인지를 확인합니다.<br>
<em>제7조 (처리하는 개인정보의 항목)</em><br>
회사는 다음의 개인정보 항목을 처리합니다:<br>
- 수집 항목:<br>
- 필수 항목: 성명, 휴대전화번호, 이메일<br>
- 선택 항목: 회사전화번호, 문의사항<br>
- 수집 방법:<br>
- 홈페이지, 전화, 이메일을 통해 수집<br>
<em>제8조 (개인정보의 파기)</em><br>
① 회사는 개인정보 보유 기간의 경과, 처리 목적 달성 등 개인정보가 불필요하게 되었을 때 지체 없이 해당 개인정보를 파기합니다.<br>
② 정보주체로부터 동의받은 개인정보 보유 기간이 경과하거나 처리 목적이 달성된 경우에도 다른 법령에 따라 개인정보를 계속 보존해야 할 경우에는, 해당
개인정보를 별도의 데이터베이스(DB)로 옮기거나 보관 장소를 달리하여 보존합니다.<br>
③ 개인정보 파기의 절차 및 방법은 다음과 같습니다:<br>
- 파기 절차: 회사는 파기 사유가 발생한 개인정보를 선정하고, 개인정보 보호책임자의 승인을 받아 개인정보를 파기합니다.<br>
- 파기 방법: 전자적 파일 형태로 기록된 개인정보는 복구할 수 없도록 기술적 방법을 사용해 삭제하며, 종이 문서에 기록된 개인정보는 분쇄기로
분쇄하거나 소각하여 파기합니다.<br>
<em>제9조 (개인정보의 안전성 확보 조치)</em><br>
회사는 개인정보의 안전성 확보를 위해 다음과 같은 조치를 취합니다:<br>
- 관리적 조치: 내부관리계획 수립·시행, 정기적 직원 교육<br>
- 기술적 조치: 개인정보처리시스템 접근 권한 관리, 접근통제시스템 설치, 고유식별정보 암호화, 보안 프로그램 설치<br>
- 물리적 조치: 전산실 및 자료보관실 접근 통제<br>
<em>제10조 (개인정보 자동 수집 장치의 설치·운영 및 거부에 관한 사항)</em><br>
회사는 쿠키(Cookie)를 사용하지 않습니다. 쿠키는 이용자의 이용 정보를 저장하고 수시로 불러오는 작은 파일로, EG-BIM 서비스에서는 쿠키를
사용하지 않습니다.<br>
<em>제11조 (개인정보 보호책임자)</em><br>
회사는 개인정보 처리에 관한 업무를 총괄하여 책임지고, 개인정보 처리와 관련된 정보주체의 불만처리 및 피해구제를 위해 개인정보 보호책임자를 지정하고
있습니다.<br>
개인정보 보호책임자:<br>
- 성명: 염승호<br>
- 직책: 수석연구원<br>
- 연락처: 02-2141-7448<br>
- 팩스번호: 02-2141-7599<br>
- 이메일: b23008@baroncs.co.kr<br>
<em>제12조 (개인정보 열람청구)</em><br>
정보주체는 「개인정보 보호법」 제35조에 따른 개인정보 열람 청구를 아래 부서에 할 수 있습니다. 회사는 정보주체의 개인정보 열람청구가 신속하게
처리되도록 노력하겠습니다.<br>
개인정보 열람청구 접수·처리 부서:<br>
- 부서명: 총괄기획실<br>
- 담당자: 권혁진<br>
- 연락처: 02-2141-7465<br>
- 팩스번호: 02-2141-7599<br>
- 이메일: baroncs@baroncs.co.kr<br>
<em>제13조 (권익침해 구제방법)</em><br>
정보주체는 개인정보 침해로 인한 구제를 위해 개인정보분쟁조정위원회, 한국인터넷진흥원 개인정보해신고센터 등에 분쟁 해결이나 상담을 신청할 수 있습니다.<br>
- 개인정보분쟁조정위원회: (국번없이) 1833-6972 (www.kopico.go.kr)<br>
- 개인정보침해신고센터: (국번없이) 118 (privacy.kisa.or.kr)<br>
- 대검찰청: (국번없이) 1301 (www.spo.go.kr)<br>
- 경찰청: (국번없이) 182 (www.police.go.kr)<br>
<em>제14조 (개인정보 처리방침의 변경)</em><br>
본 개인정보처리방침은 법령, 정책 또는 보안 기술의 변경에 따라 내용의 추가, 삭제 및 수정이 있을 시, 개정 최소 7일 전에 홈페이지를 통해 사전
공지합니다.<br>
<br>
<em>부칙</em><br>
<em>제1조 (시행일자)</em><br>
이 개인정보처리방침은 2024년 10월 1일부터 시행됩니다.<br>
<em>제2조 (개정 및 고지의 의무)</em><br>
회사는 개인정보처리방침을 변경하는 경우, 변경사항을 시행일자 7일 전부터 서비스 내 공지사항 페이지를 통해 고지할 것입니다. 다만, 이용자의 권리나
의무에 중대한 변경이 발생하는 경우에는 시행일자 30일 전부터 고지합니다.<br>
<em>제3조 (유효성)</em><br>
본 개인정보처리방침의 일부 조항이 법적 또는 기타 사유로 인해 무효화되거나 시행할 수 없는 경우, 나머지 조항들은 계속해서 유효합니다. 무효화된 조항은
관련 법령에 부합하는 방식으로 수정되어 효력을 지속합니다.<br>
<em>제4조 (변경 통지의 방법)</em><br>
회사는 개인정보처리방침의 변경 시, 다음의 방법으로 이용자에게 고지합니다:<br>
- 서비스 초기화면 또는 팝업 공지<br>
- 이메일 발송<br>
- 회사 홈페이지 공지사항<br>
<em>제5조 (비회원의 개인정보 보호)</em><br>
회사는 비회원의 개인정보도 회원과 동일한 수준으로 보호합니다. 비회원이 개인정보 제공을 거부할 경우 일부 서비스 이용에 제한이 있을 수 있습니다.<br>
<em>제6조 (14세 미만 아동의 개인정보 보호)</em><br>
회사는 14세 미만 아동의 개인정보를 수집하지 않습니다. 만일 14세 미만 아동의 개인정보가 수집된 경우, 법정 대리인의 동의를 받아야 하며, 법정
대리인의 동의 없이 수집된 경우 이를 지체 없이 파기합니다.<br>
<em>제7조 (개인정보의 국외 이전)</em><br>
회사는 이용자의 개인정보를 국외로 이전하지 않으며, 향후 필요한 경우, 사전에 이용자의 동의를 받습니다.<br>
<em>제8조 (기타)</em><br>
본 방침에 명시되지 않은 사항은 회사의 내부 방침과 관련 법령에 따릅니다.<br>
</div>
</div>
<div class="checkbox_wrap all">
<h4>약관에 모두 동의합니다.</h4>
<input type="checkbox" name="chk_all">
</div>
</div>
<div class="join_btn_wrap">
<!-- <button type="submit" onclick="javascript:join();">동의</button> -->
<button type="submit" id="btn_agree">동의</button>
</div>
</form>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_container-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
<script>
// function fregister_submit(f)
// {
// if (!f.agree11.checked) {
// alert("회원가입약관의 내용에 동의하셔야 회원가입 하실 수 있습니다.");
// f.agree11.focus();
// return false;
// }
// if (!f.agree21.checked) {
// alert("개인정보 수집 및 이용의 내용에 동의하셔야 회원가입 하실 수 있습니다.");
// f.agree21.focus();
// return false;
// }
// return true;
// }
jQuery(function($){
// 모두선택
$("input[name=chk_all]").click(function() {
if ($(this).prop('checked')) {
$("input[name^=agree]").prop('checked', true);
} else {
$("input[name^=agree]").prop("checked", false);
}
});
});
</script>
<script>
(function($){
function isAgreedAll(){
return $('#agree11').is(':checked') && $('#agree21').is(':checked');
}
// 혹시 다른 바인딩이 있으면 제거
$('#btn_agree').off('click');
$('#fregister').off('submit'); // 엔터키/기본 submit 방지
// 폼 submit도 막아둠
$('#fregister').on('submit', function(e){
e.preventDefault();
return false;
});
// 동의 버튼 클릭
$('#btn_agree').on('click', function(e){
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
if (!isAgreedAll()){
alert('약관에 모두 동의해주세요.');
return false; // 절대 넘어가지 않음
}
// 체크 완료 시에만 다음 단계로
$('#pop_agreement').hide();
$('#pop_join').show(); // 실제 다음 팝업 ID로 교체
$('body').css('overflow','hidden');
});
// (선택) 전체동의 ↔ 개별동의 동기화
const $all = $('input[name="chk_all"]');
const $a1 = $('#agree11');
const $a2 = $('#agree21');
$all.on('change', function(){
const on = $(this).is(':checked');
$a1.prop('checked', on);
$a2.prop('checked', on);
});
$a1.add($a2).on('change', function(){
$all.prop('checked', $a1.is(':checked') && $a2.is(':checked'));
});
})(jQuery);
</script>
<!-- </div> -->
<!-- } 회원가입 약관 동의 끝 -->
@@ -0,0 +1,403 @@
<?php
// if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
// add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- <head> -->
<!-- <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script> -->
<!-- </head> -->
<script src="<?php echo G5_URL ?>/js/common.js"></script>
<script src="<?php echo G5_URL ?>/js/popup.js"></script>
<!-- 회원가입약관 동의 시작 { -->
<!-- <body>
<div class="register"> -->
<!-- <div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_agreement" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_content-->
<div class="popup_content agreement">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">Sign u</span>
<div class="join_info">
<h1 class="h_1">회원가입</h1>
<h3 class="h_3">
EG-BIM 회원이 되시면<br>
<strong>1:1구매문의및 제품안내 서비스</strong>를<br>
이용하실 수 있습니다.
</h3>
</div>
<ul class="join_progress">
<li class="join_step on">
<h4 class="h_4">01</h4>
<h4 class="h_4 txt">약관동의</h4>
</li>
<li class="join_step">
<h4 class="h_4">02</h4>
<h4 class="h_4 txt">정보입력</h4>
</li>
<li class="join_step">
<h4 class="h_4">03</h4>
<h4 class="h_4 txt">가입완료</h4>
</li>
</ul>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">p</span>
<form name="fregister" id="fregister" action="<?php echo $register_action_url ?>" onsubmit="return fregister_submit(this);" method="POST" autocomplete="off">
<h6 class="important_msg pop_notice h_6">*항목은 필수 항목 입니다.</h6>
<div class="terms_wrap">
<div class="checkbox_wrap">
<h4>이용약관<span class="important_msg">*</span></h4>
<input type="checkbox" name="agree" value="1" id="agree11">
</div>
<div class="terms">
<em>EG-BIM 소프트웨어 이용약관</em> <br>
<br>
<em>제1장 총칙</em> <br>
<em>제1조 (목적)</em><br>
이 약관은 바론컨설턴트(이하 "회사"라 합니다)가 제공하는 EG-BIM 소프트웨어(이하 "서비스"라 합니다)를 이용함에 있어 회사와 이용자 간의 권리,
의무 및 책임사항과 기타 필요한 사항을 정하는 것을 목적으로 합니다.<br>
<em>제2조 (용어의 정의)</em> <br>
① 본 약관에서 사용하는 용어의 정의는 다음과 같습니다:<br>
- “서비스”란 회사가 제공하는 소프트웨어 및 관련 제반 서비스를 의미합니다.<br>
- “이용자”란 회사의 서비스에 접속하여 본 약관에 따라 회사가 제공하는 서비스를 이용하는 회원 및 비회원을 말합니다.<br>
- “회원”이란 본 약관에 동의하고 회사와 이용계약을 체결한 자를 의미합니다.<br>
- “비회원”이란 회원가입을 하지 않고 회사가 제공하는 일부 서비스를 이용하는 자를 말합니다.<br>
<em>제3조 (약관의 효력 및 변경)</em><br>
① 본 약관은 이용자가 본 약관에 동의하고, 회사가 이에 대한 승낙을 완료함으로써 효력이 발생합니다.
② 회사는 필요한 경우 본 약관을 변경할 수 있으며, 변경된 약관은 서비스 화면에 공지된 후 효력이 발생합니다.<br>
<em>제4조 (약관 외 준칙)</em><br>
본 약관에 명시되지 않은 사항에 대해서는 대한민국의 관련 법령과 상관습에 따릅니다.<br>
<em>제2장 서비스 이용계약</em><br>
<em>제5조 (이용계약의 성립)</em><br>
이용계약은 이용자가 약관의 내용에 동의하고, 회사가 제공하는 소정의 회원가입 신청서를 작성하여 가입을 완료한 후, 회사가 이를 승인함으로써 성립합니다.<br>
<em>제6조 (이용계약의 유보와 거절)</em><br>
① 회사는 다음 각 호에 해당하는 경우 이용계약의 성립을 유보하거나 거절할 수 있습니다:
- 신청서의 내용이 허위로 판명된 경우
- 서비스 제공이 기술적으로 어려운 경우<br>
<em>제7조 (계약사항의 변경)</em><br>
회원은 개인정보 관리 메뉴를 통해 언제든지 자신의 정보를 열람하고 수정할 수 있습니다. 회원의 정보가 변경된 경우 즉시 수정해야 하며, 수정하지 않아
발생하는 문제의 책임은 회원에게 있습니다.<br>
<em>제3장 개인정보 보호</em><br>
<em>제8조 (개인정보 보호의 원칙)</em><br>
① 회원의 개인정보는 관련 법령에 따라 보호됩니다.
② 회사는 개인정보 보호와 관련된 세부 사항을 별도로 마련한 개인정보처리방침에 따라 관리하며, 이용자는 언제든지 해당 방침을 통해 개인정보 관리에 대한
자세한 내용을 확인할 수 있습니다.<br>
<em>제9조 (개인정보처리방침 준수)</em><br>
① 회사는 개인정보 보호와 관련된 구체적인 사항을 개인정보처리방침에 따라 관리합니다.
② 개인정보의 수집, 이용, 제공, 보관, 보호 등에 관한 사항은 회사의 개인정보처리방침을 따르며, 이용자는 회사 웹사이트에서 이를 확인할 수
있습니다.
③ 회사는 개인정보 보호를 위해 최선을 다하며, 관련 법령에 따라 이용자의 개인정보를 안전하게 관리합니다.<br>
<em>제10조 (14세 미만 아동의 개인정보 보호)</em><br>
① 회사는 14세 미만 아동의 개인정보를 수집할 경우, 반드시 법정대리인의 동의를 받아야 합니다.
② 법정대리인은 아동의 개인정보 열람, 수정, 삭제를 요청할 수 있으며, 회사는 이를 신속하게 처리합니다.
③ 14세 미만 아동의 개인정보 보호와 관련된 구체적인 사항은 개인정보처리방침에 명시되어 있습니다.<br>
<em>제4장 서비스 제공 및 이용</em><br>
제11조 (서비스 제공)<br>
회사는 회원의 이용 신청을 승인한 때부터 서비스를 개시합니다. 서비스 이용은 연중무휴 24시간을 원칙으로 합니다.<br>
<em>제12조 (서비스의 변경 및 중단)</em> <br>
회사는 서비스 제공이 어려운 경우 사전 고지 후 서비스를 변경하거나 중단할 수 있습니다.<br>
<em>제5장 정보 제공 및 광고</em><br>
제13조 (정보 제공 및 광고)<br>
① 회사는 서비스 이용 중 필요하다고 인정되는 정보 및 광고를 제공할 수 있습니다.
② 회원은 원치 않는 정보를 수신 거부할 수 있습니다.<br>
<em>제6장 게시물 관리</em><br>
<em>제14조 (게시물의 관리)</em><br>
회사는 회원이 게시한 내용이 불법적이거나 약관에 위배될 경우 이를 삭제할 수 있습니다.<br>
<em>제15조 (게시물의 저작권)</em><br>
게시물의 저작권은 회원에게 있으며, 회사는 이를 서비스 홍보 및 개선 목적으로 사용할 수 있습니다.<br>
<em>제7장 계약 해지 및 이용 제한</em><br>
<em>제16조 (계약 해지)</em> <br>
회원은 언제든지 계약 해지를 요청할 수 있으며, 회사는 신속하게 처리합니다.<br>
<em>제17조 (이용 제한)</em><br>
회사는 회원이 약관을 위반할 경우 서비스 이용을 제한할 수 있습니다.<br>
<em>제8장 손해 배상 및 면책 조항</em><br>
<em>제18조 (손해 배상)</em><br>
회사는 무료로 제공되는 서비스와 관련하여 회원에게 발생한 손해에 대해 책임을 지지 않습니다.<br>
<em>제19조 (면책 조항)</em><br>
회사는 천재지변 등 불가항력적인 사유로 인해 서비스를 제공하지 못하는 경우 책임을 지지 않습니다.<br>
<em>제9장 유료 서비스</em> <br>
<em>20조 (유료 서비스의 이용)</em><br>
① 회사는 회원에게 특정 서비스에 대해 유료로 제공할 수 있습니다.
② 유료 서비스의 이용 요금, 결제 방식, 환불 절차 등에 대한 상세 내용은 서비스 안내 페이지와 결제 화면에 명시합니다.
③ 유료 서비스 이용 요금은 회사가 정한 결제 방식에 따라 결제됩니다. 회원은 신용카드, 계좌이체, 휴대전화 결제 등 회사가 제공하는 다양한 결제
방식을 통해 요금을 납부할 수 있습니다.
④ 유료 서비스의 이용 요금은 선불 결제를 원칙으로 하며, 이용 기간 중 서비스 중지 및 해지 시 남은 이용 기간에 대한 환불은 회사의 환불 정책에
따라 처리됩니다.
⑤ 회사는 회원의 유료 서비스 이용과 관련하여 발생한 문제에 대해 최선을 다해 해결하도록 노력합니다. 다만, 회사의 고의 또는 중대한 과실이 없는 한
회원이 유료 서비스 이용 중 입은 손해에 대해서는 책임을 지지 않습니다.<br>
<em>제21조(환불 정책)</em> <br>
① 회원은 결제 후 7일 이내에 서비스 이용을 시작하지 않은 경우, 요금 전액을 환불받을 수 있습니다.
② 유료 서비스 이용 중 부득이한 사유로 서비스가 중지된 경우, 회사는 이용하지 않은 부분에 대해 환불 절차를 밟습니다.
③ 회원의 귀책사유로 인해 서비스 이용이 중지된 경우, 환불이 불가능합니다.
④ 환불은 회원이 지정한 계좌로 환불 절차를 거치며, 환불 요청 후 7일 이내에 처리됩니다.<br>
<em>제22조 (유료 서비스의 중지 및 해지)</em><br>
① 회원이 유료 서비스를 해지하고자 하는 경우, 회사의 고객 지원 센터에 해지 신청을 해야 합니다.
② 회사는 회원이 약관을 위반하거나 부정한 방법으로 유료 서비스를 이용한 경우, 유료 서비스 이용을 즉시 중지하고 계약을 해지할 수 있습니다.<br>
<em>제10장 양도 금지</em><br>
<em>제23조 (양도 금지)</em><br>
회원은 서비스 이용권한, 기타 이용계약상의 지위를 제3자에게 양도, 증여할 수 없으며, 이를 담보로 제공할 수 없습니다.<br>
<em>제11장 관할 법원</em><br>
<em>제24조 (분쟁 해결)</em><br>
서비스 이용과 관련하여 분쟁이 발생한 경우, 회사와 회원은 성실히 협의하여 해결합니다.<br>
<em>제25조 (관할 법원)</em><br>
본 약관에 따른 분쟁은 서울중앙지방법원을 관할 법원으로 합니다.<br>
<em>부칙</em><br>
본 약관은 2024년 10월 1일부터 시행됩니다.<br>
</div>
</div>
<div class="terms_wrap">
<div class="checkbox_wrap">
<h4>개인정보 수집 및 이용 동의<span class="important_msg">*</span></h4>
<input type="checkbox" name="agree2" value="1" id="agree21">
</div>
<div class="terms">
<em>EG-BIM 서비스 개인정보처리방침</em> <br>
<br>
<em>제1조 (목적)</em><br>
바론컨설턴트(이하 "회사")는 EG-BIM 서비스(이하 "서비스")를 이용하는 고객(이하 "이용자")의 개인정보를 보호하고, 「개인정보 보호법」에 따라
책임과 의무를 다하기 위해 본 개인정보처리방침을 마련했습니다. 본 방침은 이용자가 제공한 개인정보가 어떻게 수집, 이용, 보관, 보호되는지를
설명합니다.<br>
<em>제2조 (개인정보의 처리목적)</em><br>
회사는 다음의 목적을 위해 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며, 이용 목적이 변경되는 경우에는
「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다.<br>
- 본인확인: 회원가입 및 관리를 위한 본인 확인, 전화 또는 이메일을 통한 연락<br>
- 서비스 제공: 각종 통보 및 서비스 제공을 위한 업무 처리<br>
- 제품소개서 다운로드: 설명자료 전달<br>
- 상담 및 데모 신청: 상담 제공 및 데모 제공, 계약 처리자 정보 수집<br>
- 행사 참가 신청: 참석 안내 및 세미나/설명회/교육 제공<br>
- 보안가이드 제공: 안내자료 전달<br>
- 기술지원 문의: 서비스 사용 지원<br>
- 서비스 개선 의견 접수: 서비스 품질 개선<br>
- 마케팅 활동: 동의한 고객에 한해 뉴스레터 및 매거진 발송<br>
<em>제3조 (개인정보의 처리 및 보유 기간)</em><br>
① 회사는 법령에 따른 개인정보 보유 및 이용기간 또는 정보주체로부터 개인정보를 수집 시 동의받은 개인정보 보유 및 이용기간 내에서 개인정보를 처리 및
보유합니다.<br>
② 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다:<br>
- 회원정보: 회원가입일부터 회원탈퇴 후 1년까지<br>
- 홍보, 상담, 계약용 개인정보: 2년<br>
<em>제4조 (개인정보의 제3자 제공)</em><br>
① 회사는 정보주체의 개인정보를 제2조에서 명시한 범위 내에서만 처리하며, 정보 주체의 동의, 법률의 특별한 규정 등 「개인정보 보호법」 제17조 및
제18조에 해당하는 경우에만 개인정보를 제3자에게 제공합니다.<br>
② 회사는 다음과 같이 개인정보를 제3자에게 제공하고 있습니다:<br>
- 제공받는 자: 수사기관 및 유관기관, 피신고업체<br>
- 이용 목적: 개인정보 침해 민원 처리<br>
- 제공하는 개인정보 항목: 성명, 연락처, 이메일<br>
- 보유 및 이용기간: 법령에서 정한 보존기간 및 제공목적 달성 시 파기<br>
<em>제5조 (개인정보 처리 위탁)</em><br>
① 회사는 개인정보 처리업무를 외부 업체에 위탁하지 않으며, 자체적으로 처리하고 있습니다.<br>
② 회사가 특정 업무(예: 채용 업무)를 외부 업체에 위탁할 경우, 개인정보 처리방침 시행 전 회사 홈페이지에서 공지한 후 정보주체의 동의를 받은 후
위탁합니다.<br>
<em>제6조 (정보주체의 권리·의무 및 행사 방법)</em><br>
① 정보주체는 회사에 대해 언제든지 개인정보 열람, 정정, 삭제, 처리정지 요구 등의 권리를 행사할 수 있습니다.<br>
② 권리 행사는 다음과 같은 방법으로 할 수 있습니다:<br>
- 서면: 회사 주소로 서면 제출<br>
- 전자우편: 회사 이메일로 요청<br>
- 모사전송(FAX): 회사 FAX로 요청<br>
③ 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자를 통해 대리로도 가능합니다. 이 경우 “개인정보 처리 방법에 관한 고시” 별지 제11호 서식에
따른 위임장을 제출해야 합니다.<br>
④ 개인정보 열람 및 처리정지 요구는 「개인정보 보호법」 제35조 제4항, 제37조 제2항에 따라 제한될 수 있습니다.<br>
⑤ 개인정보의 정정 및 삭제 요구는 다른 법령에 따라 수집된 개인정보인 경우 제한될 수 있습니다.<br>
⑥ 회사는 권리 행사를 요청한 자가 본인 또는 정당한 대리인인지를 확인합니다.<br>
<em>제7조 (처리하는 개인정보의 항목)</em><br>
회사는 다음의 개인정보 항목을 처리합니다:<br>
- 수집 항목:<br>
- 필수 항목: 성명, 휴대전화번호, 이메일<br>
- 선택 항목: 회사전화번호, 문의사항<br>
- 수집 방법:<br>
- 홈페이지, 전화, 이메일을 통해 수집<br>
<em>제8조 (개인정보의 파기)</em><br>
① 회사는 개인정보 보유 기간의 경과, 처리 목적 달성 등 개인정보가 불필요하게 되었을 때 지체 없이 해당 개인정보를 파기합니다.<br>
② 정보주체로부터 동의받은 개인정보 보유 기간이 경과하거나 처리 목적이 달성된 경우에도 다른 법령에 따라 개인정보를 계속 보존해야 할 경우에는, 해당
개인정보를 별도의 데이터베이스(DB)로 옮기거나 보관 장소를 달리하여 보존합니다.<br>
③ 개인정보 파기의 절차 및 방법은 다음과 같습니다:<br>
- 파기 절차: 회사는 파기 사유가 발생한 개인정보를 선정하고, 개인정보 보호책임자의 승인을 받아 개인정보를 파기합니다.<br>
- 파기 방법: 전자적 파일 형태로 기록된 개인정보는 복구할 수 없도록 기술적 방법을 사용해 삭제하며, 종이 문서에 기록된 개인정보는 분쇄기로
분쇄하거나 소각하여 파기합니다.<br>
<em>제9조 (개인정보의 안전성 확보 조치)</em><br>
회사는 개인정보의 안전성 확보를 위해 다음과 같은 조치를 취합니다:<br>
- 관리적 조치: 내부관리계획 수립·시행, 정기적 직원 교육<br>
- 기술적 조치: 개인정보처리시스템 접근 권한 관리, 접근통제시스템 설치, 고유식별정보 암호화, 보안 프로그램 설치<br>
- 물리적 조치: 전산실 및 자료보관실 접근 통제<br>
<em>제10조 (개인정보 자동 수집 장치의 설치·운영 및 거부에 관한 사항)</em><br>
회사는 쿠키(Cookie)를 사용하지 않습니다. 쿠키는 이용자의 이용 정보를 저장하고 수시로 불러오는 작은 파일로, EG-BIM 서비스에서는 쿠키를
사용하지 않습니다.<br>
<em>제11조 (개인정보 보호책임자)</em><br>
회사는 개인정보 처리에 관한 업무를 총괄하여 책임지고, 개인정보 처리와 관련된 정보주체의 불만처리 및 피해구제를 위해 개인정보 보호책임자를 지정하고
있습니다.<br>
개인정보 보호책임자:<br>
- 성명: 박진<br>
- 직책: 책임연구원<br>
- 연락처: 02-2141-7485<br>
- 팩스번호: 02-2141-7599<br>
- 이메일: jpark@baroncs.co.kr<br>
<em>제12조 (개인정보 열람청구)</em><br>
정보주체는 「개인정보 보호법」 제35조에 따른 개인정보 열람 청구를 아래 부서에 할 수 있습니다. 회사는 정보주체의 개인정보 열람청구가 신속하게
처리되도록 노력하겠습니다.<br>
개인정보 열람청구 접수·처리 부서:<br>
- 부서명: 총괄기획실<br>
- 담당자: 권혁진<br>
- 연락처: 02-2141-7465<br>
- 팩스번호: 02-2141-7599<br>
- 이메일: baroncs@baroncs.co.kr<br>
<em>제13조 (권익침해 구제방법)</em><br>
정보주체는 개인정보 침해로 인한 구제를 위해 개인정보분쟁조정위원회, 한국인터넷진흥원 개인정보해신고센터 등에 분쟁 해결이나 상담을 신청할 수 있습니다.<br>
- 개인정보분쟁조정위원회: (국번없이) 1833-6972 (www.kopico.go.kr)<br>
- 개인정보침해신고센터: (국번없이) 118 (privacy.kisa.or.kr)<br>
- 대검찰청: (국번없이) 1301 (www.spo.go.kr)<br>
- 경찰청: (국번없이) 182 (www.police.go.kr)<br>
<em>제14조 (개인정보 처리방침의 변경)</em><br>
본 개인정보처리방침은 법령, 정책 또는 보안 기술의 변경에 따라 내용의 추가, 삭제 및 수정이 있을 시, 개정 최소 7일 전에 홈페이지를 통해 사전
공지합니다.<br>
<br>
<em>부칙</em><br>
<em>제1조 (시행일자)</em><br>
이 개인정보처리방침은 2024년 10월 1일부터 시행됩니다.<br>
<em>제2조 (개정 및 고지의 의무)</em><br>
회사는 개인정보처리방침을 변경하는 경우, 변경사항을 시행일자 7일 전부터 서비스 내 공지사항 페이지를 통해 고지할 것입니다. 다만, 이용자의 권리나
의무에 중대한 변경이 발생하는 경우에는 시행일자 30일 전부터 고지합니다.<br>
<em>제3조 (유효성)</em><br>
본 개인정보처리방침의 일부 조항이 법적 또는 기타 사유로 인해 무효화되거나 시행할 수 없는 경우, 나머지 조항들은 계속해서 유효합니다. 무효화된 조항은
관련 법령에 부합하는 방식으로 수정되어 효력을 지속합니다.<br>
<em>제4조 (변경 통지의 방법)</em><br>
회사는 개인정보처리방침의 변경 시, 다음의 방법으로 이용자에게 고지합니다:<br>
- 서비스 초기화면 또는 팝업 공지<br>
- 이메일 발송<br>
- 회사 홈페이지 공지사항<br>
<em>제5조 (비회원의 개인정보 보호)</em><br>
회사는 비회원의 개인정보도 회원과 동일한 수준으로 보호합니다. 비회원이 개인정보 제공을 거부할 경우 일부 서비스 이용에 제한이 있을 수 있습니다.<br>
<em>제6조 (14세 미만 아동의 개인정보 보호)</em><br>
회사는 14세 미만 아동의 개인정보를 수집하지 않습니다. 만일 14세 미만 아동의 개인정보가 수집된 경우, 법정 대리인의 동의를 받아야 하며, 법정
대리인의 동의 없이 수집된 경우 이를 지체 없이 파기합니다.<br>
<em>제7조 (개인정보의 국외 이전)</em><br>
회사는 이용자의 개인정보를 국외로 이전하지 않으며, 향후 필요한 경우, 사전에 이용자의 동의를 받습니다.<br>
<em>제8조 (기타)</em><br>
본 방침에 명시되지 않은 사항은 회사의 내부 방침과 관련 법령에 따릅니다.<br>
</div>
</div>
<div class="checkbox_wrap all">
<h4>약관에 모두 동의합니다.</h4>
<input type="checkbox" name="chk_all">
</div>
<div class="join_btn_wrap">
<button type="submit" onclick="javascript:join();">동의</button>
</div>
</form>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
<script>
function fregister_submit(f)
{
if (!f.agree11.checked) {
alert("회원가입약관의 내용에 동의하셔야 회원가입 하실 수 있습니다.");
f.agree11.focus();
return false;
}
if (!f.agree21.checked) {
alert("개인정보 수집 및 이용의 내용에 동의하셔야 회원가입 하실 수 있습니다.");
f.agree21.focus();
return false;
}
return true;
}
jQuery(function($){
// 모두선택
$("input[name=chk_all]").click(function() {
if ($(this).prop('checked')) {
$("input[name^=agree]").prop('checked', true);
} else {
$("input[name^=agree]").prop("checked", false);
}
});
});
</script>
<!-- </div> -->
<!-- } 회원가입 약관 동의 끝 -->
@@ -0,0 +1,483 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
// add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
//add_javascript('<script src="'.G5_JS_URL.'/jquery.register_form.js"></script>', 0);
// if ($config['cf_cert_use'] && ($config['cf_cert_simple'] || $config['cf_cert_ipin'] || $config['cf_cert_hp']))
// add_javascript('<script src="'.G5_JS_URL.'/certify.js?v='.G5_JS_VER.'"></script>', 0);
//add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 회원정보 입력/수정 시작 { -->
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/style.css" />
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_join" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_content-->
<div class="popup_container register">
<!--pop_join_left-->
<div class="popup_tit">
<h1 class="h_1">회원가입</h1>
<ul>
<li class="join_step">
<h4 class="h_4">01</h4>
<h4 class="h_4 txt">약관동의</h4>
</li>
<li class="join_step on">
<h4 class="h_4">02</h4>
<h4 class="h_4 txt">계정 생성</h4>
</li>
<li class="join_step">
<h4 class="h_4">03</h4>
<h4 class="h_4 txt">사용자 인증</h4>
</li>
<li class="join_step">
<h4 class="h_4">04</h4>
<h4 class="h_4 txt">추가정보 입력</h4>
</li>
</ul>
</div>
<!--pop_join_right-->
<div id="reg_form_join" class="popup_contents_wrap">
<form id="fregisterform" name="fregisterform" action="<?php echo $register_action_url?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="url" value="<?php echo $urlencode ?>">
<input type="hidden" name="agree" value="<?php echo $agree ?>">
<input type="hidden" name="agree2" value="<?php echo $agree2 ?>">
<input type="hidden" name="cert_type" value="<?php echo $member['mb_certify']; ?>">
<input type="hidden" name="cert_no" value="">
<!-- <?php //if (isset($member['mb_sex'])) { ?><input type="hidden" name="mb_sex" value="<?php //echo $member['mb_sex'] ?>"><?php //} ?> -->
<?php //if (isset($member['mb_nick_date']) && $member['mb_nick_date'] > date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400))) { // 닉네임수정일이 지나지 않았다면 ?>
<!-- <input type="hidden" name="mb_nick_default" value="<?php //echo get_text($member['mb_nick']) ?>">
<input type="hidden" name="mb_nick" value="<?php //echo get_text($member['mb_nick']) ?>"> -->
<?php //} ?>
<!-- 2025.07 디자인팀 수정 -->
<!-- 02 계정생성 -->
<!-- 왼쪽 "02 계정생성"에 on -->
<fieldset style="_display: none;">
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap">
<div class="guide_txt">
<p>계정을 생성합니다.</p>
<em>아이디와 비밀번호</em>를 입력해 주세요.
</div>
<table>
<tbody>
<tr>
<th class="h_4">아이디</th>
<td>
<div class="id_wrap">
<input type="text" class="frm_input full_input" id="reg_mb_id" name="mb_id" onchange="PG_pro('change');" placeholder="아이디 입력" <?php if($member['mb_id']!=""){ ?> style="width: 100% ;"<?php }?> autocomplete="off" value="<?php echo $member['mb_id'] ?>" <?php echo $required ?> <?php echo $readonly ?> maxlength="30"/>
<?php if($member['mb_id']==""){ ?>
<!-- <button type="button" class="chk_id" onclick="PG_pro('dupl_check');">중복확인</button> -->
<button type="button" class="chk_id" onclick="descopeEmailCheck();">중복확인</button>
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="" placeholder="아이디중복확인여부YN" style="width:250px; background-color:#dfe4ea "/>
<!-- hidden --><input type="hidden" id="GB_mb_id" name="GB_mb_id" value="<?php echo $member['mb_id'] ?>">
<?php }else{ ?>
<!-- hidden --><input type="hidden" id="reg_mb_id" name="mb_id" value="<?php echo $member['mb_id'] ?>">
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="Y" onclick="" style="width:250px; background-color:#dfe4ea "/>
<?php } ?>
</div>
<span class="important_msg h_6">이메일 형식으로 작성</span>
</td>
</tr>
<tr>
<th class="h_4">비밀번호</th>
<td>
<div class="password_wrap">
<input type="password" name="mb_password" id="reg_mb_password" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 입력">
<input type="password" name="mb_password_re" id="reg_mb_password_re" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 확인">
</div>
<span class="important_msg h_6">영문+숫자+특수기호 8자 이상</span>
</td>
</tr>
</tbody>
</table>
</div>
<!--//tbl_wrap-->
<div class="btn_confirm">
<button type="submit" id="btn_submit" class="btn_submit" >생성하기</button>
</div>
</fieldset>
<!-- 03 사용자 인증 -->
<!-- 왼쪽 "03 사용자 인증"에 on -->
<fieldset style="display: none;">
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap">
<div class="guide_txt">
<p>계정 생성이 완료되었습니다.</p>
사용자 인증을 위해 <em>aaa@gmail.com</em> <br>아이디로 전송된 인증번호를 입력해 주세요.
</div>
<div class="verify_wrap">
<div class="code_input">
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
<input type="text" maxlength="1" inputmode="numeric" pattern="[0-9]*" />
</div>
<div>
<span class="important_msg h_6">인증번호 불일치</span>
<button class="btn_send">인증번호 재전송 ⭮</button>
</div>
</div>
</div>
<!--//tbl_wrap-->
<div class="btn_confirm">
<button type="submit" id="btn_submit" class="btn_submit" >인증하기</button>
</div>
<script>
const inputs = document.querySelectorAll('.code-input input');
inputs.forEach((input, index) => {
console.log('dd');
input.addEventListener('input', (e) => {
const value = e.target.value;
if (!/^[0-9]$/.test(value)) {
e.target.value = '';
return;
}
if (value && index < inputs.length - 1) {
inputs[index + 1].focus();
}
});
input.addEventListener('keydown', (e) => {
if (e.key === 'Backspace' && !e.target.value && index > 0) {
inputs[index - 1].focus();
}
});
});
</script>
</fieldset>
<!-- 04 추가정보 입력 -->
<!-- 왼쪽 "04 추가정보 입력"에 on -->
<fieldset style="display: none;">
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap">
<div class="guide_txt"><em>추가 정보를 입력</em>하여 <br class="brk">회원가입을 완료해 주세요.</div>
<table>
<tbody>
<tr>
<th class="h_4">가족사</th>
<td>
<div class="radio_wrap">
<label><input type="radio" class="on" name="family" value="hanmac" checked>한맥기술</label>
<label><input type="radio" name="family" value="saman">삼안</label>
<label><input type="radio" name="family" value="saman">장헌산업</label>
<label><input type="radio" name="family" value="saman">PTC</label>
<label><input type="radio" name="family" value="saman">바론컨설턴트</label>
<label><input type="radio" name="family" value="saman">한라산업개발</label>
</div>
</td>
</tr>
<tr>
<th class="h_4">이름</th>
<td>
<div class="name_wrap">
<input type="text" id="reg_mb_name" name="mb_name" value="<?php echo get_text($member['mb_name']) ?>" <?php echo $required ?> <?php echo $name_readonly; ?> class="frm_input full_input <?php echo $required ?> <?php echo $name_readonly ?>" size="10" placeholder="이름 입력">
</div>
</td>
</tr>
<tr>
<th class="h_4">직위 및 사번</th>
<td>
<div class="company_wrap">
<input type="text" name="mb_comp" value="<?php echo get_text($member['mb_comp'])?>" id="reg_mb_comp" size="70" maxlength="100" placeholder="직위 입력">
<input type="text" name="mb_comp_team" value="<?php echo get_text($member['mb_comp_team'])?>" id="reg_mb_comp_team" size="70" maxlength="100" placeholder="회사별 사번 입력">
</div>
</td>
</tr>
<tr>
<th class="h_4">소속</th>
<td>
<div class="team_wrap">
<input type="text" id="reg_mb_team" name="mb_team" value="<?php echo get_text($member['mb_team']) ?>" <?php echo $required ?> <?php echo $name_readonly; ?> class="frm_input full_input <?php echo $required ?> <?php echo $name_readonly ?>" size="10" placeholder="소속 입력">
</div>
</td>
</tr>
<tr>
<th class="h_4">휴대전화번호</th>
<td>
<div class="phone_wrap">
<input type="text" name="mb_hp" value="<?php echo get_text($member['mb_hp']) ?>" id="reg_mb_hp" <?php echo $hp_required; ?> <?php echo $hp_readonly; ?> class="frm_input full_input <?php echo $hp_required; ?> <?php echo $hp_readonly; ?>" maxlength="20" placeholder="휴대폰 번호">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--//tbl_wrap-->
<div class="btn_confirm">
<button type="submit" id="btn_submit" class="btn_submit" >저장하기</button>
</div>
</fieldset>
<!-- //2025.07 디자인팀 수정 -->
</form>
</div>
<!--//pop_join_right-->
<!-- 회원가입결과 시작 { register-->
<div id="pop_result" class="popup_wrap" style="display:none;">
<p class="reg_result_p">
<i class="fa fa-gift" aria-hidden="true"></i><br>
<strong><?php echo get_text($mb['mb_name']); ?></strong>님의 회원가입을 진심으로 축하합니다.
</p>
<?php if (is_use_email_certify()) { ?>
<p class="result_txt">
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.<br>
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
</p>
<div id="result_email">
<span>아이디</span>
<strong><?php echo $mb['mb_id'] ?></strong><br>
<span>이메일 주소</span>
<strong><?php echo $mb['mb_email'] ?></strong>
</div>
<p>
이메일 주소를 잘못 입력하셨다면, 사이트 관리자에게 문의해주시기 바랍니다.
</p>
<?php } ?>
<p class="result_txt">
회원님의 비밀번호는 아무도 알 수 없는 암호화 코드로 저장되므로 안심하셔도 좋습니다.<br>
아이디, 비밀번호 분실시에는 회원가입시 입력하신 이메일 주소를 이용하여 찾을 수 있습니다.
</p>
<p class="result_txt">
회원 탈퇴는 언제든지 가능하며 일정기간이 지난 후, 회원님의 정보는 삭제하고 있습니다.<br>
감사합니다.
</p>
<!-- } 회원가입결과 끝 -->
<div class="btn_confirm_reg">
<a href="<?php echo G5_URL ?>/" class="reg_btn_submit">메인으로</a>
</div>
</div>
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
<script>
function PG_changeSelect(p_list){
if(p_list.value == 'type'){
document.getElementById("register_domain2").style.display = "block";
}else{
document.getElementById("register_domain2").style.display = "none";
}
}//PG_changeSelect
// submit 최종 폼체크
// function fregisterform_submit(b)
// {
// var f = b.parentNode.parentNode.parentNode;
// // 회원아이디 검사
// if (f.w.value == "") {
// alert('id_check_before');
// var msg = reg_mb_id_check();
// if (msg) {
// f.mb_id.select();
// return false;
// }
// }
// if (f.w.value == "") {
// if (f.mb_password.value.length < 3) {
// alert("비밀번호를 3글자 이상 입력하십시오.");
// f.mb_password.focus();
// return false;
// }
// }
// if (f.mb_password.value != f.mb_password_re.value) {
// alert("비밀번호가 같지 않습니다.");
// f.mb_password_re.focus();
// return false;
// }
// if (f.mb_password.value.length > 0) {
// if (f.mb_password_re.value.length < 3) {
// alert("비밀번호를 3글자 이상 입력하십시오.");
// f.mb_password_re.focus();
// return false;
// }
// }
// if ($("#dupl_check_yn").val() != 'Y') {
// alert('아이디(이메일) 중복 확인을 해주세요.');
// $("#reg_mb_id").focus();
// return false;
// }
// // E-mail 검사
// var mail_temp = f.reg_mb_email1.value+''+f.reg_mb_email2.value;
// f.reg_mb_email.value = mail_temp;
// if ((f.w.value == "") || (f.w.value == "u" && f.reg_mb_email.defaultValue != mail_temp)) {
// var msg = reg_mb_email_check();
// if (msg) {
// alert(msg);
// f.reg_mb_email1.select();
// return false;
// }
// }
// }
function descopeEmailCheck() {
var email = $("#reg_mb_id").val().trim();
if (email === "") {
alert("아이디(이메일)를 입력해 주세요.");
$("#reg_mb_id").focus();
return;
}
// 이메일 유효성 검사
var re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!re.test(email)) {
alert("유효한 이메일 형식으로 입력해 주세요.");
$("#reg_mb_id").focus();
return;
}
$.ajax({
url: '/egbim/skin/member/basic/descope_check_email.php',
type: 'POST',
data: { email: email },
dataType: 'json',
success: function(res) {
if (res.status === 'ok') {
if (confirm("사용 가능한 이메일입니다.\n이 이메일로 가입하시겠습니까?")) {
$("#dupl_check_yn").val('Y');
$("#reg_mb_password").focus();
} else {
$("#reg_mb_id").val('').focus();
$("#dupl_check_yn").val('N');
}
} else if (res.status === 'duplicate') {
alert('이미 가입된 이메일입니다.\n다른 이메일을 사용해 주세요.');
$("#reg_mb_id").val('').focus();
$("#dupl_check_yn").val('N');
} else {
alert('오류가 발생했습니다:\n' + res.message);
}
},
error: function(xhr, status, error) {
alert(
'통신 중 오류가 발생했습니다.\n' +
'상태: ' + status + '\n' +
'에러: ' + error + '\n' +
'응답: ' + xhr.responseText
);
}
});
}
async function fregisterform_submit(b) {
var f = b.parentNode.parentNode.parentNode;
// 기존 유효성 검사 로직 유지
if (f.mb_password.value.length < 8) {
alert("비밀번호는 8자 이상 입력하십시오.");
f.mb_password.focus();
return false;
}
if (f.mb_password.value !== f.mb_password_re.value) {
alert("비밀번호가 같지 않습니다.");
f.mb_password_re.focus();
return false;
}
if ($("#dupl_check_yn").val() !== 'Y') {
alert('아이디(이메일) 중복 확인을 해주세요.');
$("#reg_mb_id").focus();
return false;
}
// Descope 회원가입 및 OTP 전송
const email = $("#reg_mb_id").val().trim();
const password = $("#reg_mb_password").val().trim();
try {
const res = await $.ajax({
url: '/egbim/skin/member/basic/descope_signup.php',
type: 'POST',
dataType: 'json',
data: { email: email, password: password }
});
if (res.status === 'ok') {
alert('Descope 계정 생성 및 OTP 전송 완료. 인증 단계로 진행합니다.');
// 실제 인증 단계로 UI 전환 (예: fieldset 전환)
$("fieldset").hide().eq(1).show(); // 03 사용자 인증 단계로
return false; // GnuBoard form submit 방지 후 OTP 인증 진행
} else {
alert('Descope 가입 중 오류 발생: ' + res.message);
return false;
}
} catch (err) {
alert('통신 오류가 발생했습니다.');
console.error(err);
return false;
}
}
</script>
<!-- } 회원정보 입력/수정 끝 -->
@@ -0,0 +1,514 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
add_javascript('<script src="'.G5_JS_URL.'/jquery.register_form.js"></script>', 0);
if ($config['cf_cert_use'] && ($config['cf_cert_simple'] || $config['cf_cert_ipin'] || $config['cf_cert_hp']))
add_javascript('<script src="'.G5_JS_URL.'/certify.js?v='.G5_JS_VER.'"></script>', 0);
?>
<!-- 회원정보 입력/수정 시작 { -->
<div class="register">
<form id="fregisterform" name="fregisterform" action="<?php echo $register_action_url ?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="url" value="<?php echo $urlencode ?>">
<input type="hidden" name="agree" value="<?php echo $agree ?>">
<input type="hidden" name="agree2" value="<?php echo $agree2 ?>">
<input type="hidden" name="cert_type" value="<?php echo $member['mb_certify']; ?>">
<input type="hidden" name="cert_no" value="">
<?php if (isset($member['mb_sex'])) { ?><input type="hidden" name="mb_sex" value="<?php echo $member['mb_sex'] ?>"><?php } ?>
<?php if (isset($member['mb_nick_date']) && $member['mb_nick_date'] > date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400))) { // 닉네임수정일이 지나지 않았다면 ?>
<input type="hidden" name="mb_nick_default" value="<?php echo get_text($member['mb_nick']) ?>">
<input type="hidden" name="mb_nick" value="<?php echo get_text($member['mb_nick']) ?>">
<?php } ?>
<div id="register_form" class="form_01">
<div class="register_form_inner">
<h2>사이트 이용정보 입력</h2>
<ul>
<li>
<label for="reg_mb_id">
아이디 (필수)
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">영문자, 숫자, _ 만 입력 가능. 최소 3자이상 입력하세요.</span>
</label>
<input type="text" name="mb_id" value="<?php echo $member['mb_id'] ?>" id="reg_mb_id" <?php echo $required ?> <?php echo $readonly ?> class="frm_input full_input <?php echo $required ?> <?php echo $readonly ?>" minlength="3" maxlength="20" placeholder="아이디">
<span id="msg_mb_id"></span>
</li>
<li class="half_input left_input margin_input">
<label for="reg_mb_password">비밀번호 (필수)</label>
<input type="password" name="mb_password" id="reg_mb_password" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호">
</li>
<li class="half_input left_input">
<label for="reg_mb_password_re">비밀번호 확인 (필수)</label>
<input type="password" name="mb_password_re" id="reg_mb_password_re" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 확인">
</li>
</ul>
</div>
<div class="tbl_frm01 tbl_wrap register_form_inner">
<h2>개인정보 입력</h2>
<ul>
<li>
<?php
$desc_name = '';
$desc_phone = '';
if ($config['cf_cert_use']) {
$desc_name = '<span class="cert_desc"> 본인확인 시 자동입력</span>';
$desc_phone = '<span class="cert_desc"> 본인확인 시 자동입력</span>';
if (!$config['cf_cert_simple'] && !$config['cf_cert_hp'] && $config['cf_cert_ipin']) {
$desc_phone = '';
}
if ($config['cf_cert_simple']) {
echo '<button type="button" id="win_sa_kakao_cert" class="btn_frmline win_sa_cert" data-type="">간편인증</button>'.PHP_EOL;
}
if($config['cf_cert_hp'])
echo '<button type="button" id="win_hp_cert" class="btn_frmline">휴대폰 본인확인</button>'.PHP_EOL;
if ($config['cf_cert_ipin'])
echo '<button type="button" id="win_ipin_cert" class="btn_frmline">아이핀 본인확인</button>'.PHP_EOL;
echo '<span class="cert_req">(필수)</span>';
echo '<noscript>본인확인을 위해서는 자바스크립트 사용이 가능해야합니다.</noscript>'.PHP_EOL;
}
?>
<?php
if ($config['cf_cert_use'] && $member['mb_certify']) {
switch ($member['mb_certify']) {
case "simple":
$mb_cert = "간편인증";
break;
case "ipin":
$mb_cert = "아이핀";
break;
case "hp":
$mb_cert = "휴대폰";
break;
}
?>
<div id="msg_certify">
<strong><?php echo $mb_cert; ?> 본인확인</strong><?php if ($member['mb_adult']) { ?> 및 <strong>성인인증</strong><?php } ?> 완료
</div>
<?php } ?>
</li>
<li>
<label for="reg_mb_name">이름 (필수)<?php echo $desc_name ?></label>
<input type="text" id="reg_mb_name" name="mb_name" value="<?php echo get_text($member['mb_name']) ?>" <?php echo $required ?> <?php echo $name_readonly; ?> class="frm_input full_input <?php echo $required ?> <?php echo $name_readonly ?>" size="10" placeholder="이름">
</li>
<?php if ($req_nick) { ?>
<li>
<label for="reg_mb_nick">
닉네임 (필수)
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">공백없이 한글,영문,숫자만 입력 가능 (한글2자, 영문4자 이상)<br> 닉네임을 바꾸시면 앞으로 <?php echo (int)$config['cf_nick_modify'] ?>일 이내에는 변경 할 수 없습니다.</span>
</label>
<input type="hidden" name="mb_nick_default" value="<?php echo isset($member['mb_nick'])?get_text($member['mb_nick']):''; ?>">
<input type="text" name="mb_nick" value="<?php echo isset($member['mb_nick'])?get_text($member['mb_nick']):''; ?>" id="reg_mb_nick" required class="frm_input required nospace full_input" size="10" maxlength="20" placeholder="닉네임">
<span id="msg_mb_nick"></span>
</li>
<?php } ?>
<li>
<label for="reg_mb_email">E-mail (필수)
<?php if ($config['cf_use_email_certify']) { ?>
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">
<?php if ($w=='') { echo "E-mail 로 발송된 내용을 확인한 후 인증하셔야 회원가입이 완료됩니다."; } ?>
<?php if ($w=='u') { echo "E-mail 주소를 변경하시면 다시 인증하셔야 합니다."; } ?>
</span>
<?php } ?>
</label>
<input type="hidden" name="old_email" value="<?php echo $member['mb_email'] ?>">
<input type="text" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" required class="frm_input email full_input required" size="70" maxlength="100" placeholder="E-mail">
</li>
<?php if ($config['cf_use_homepage']) { ?>
<li>
<label for="reg_mb_homepage">홈페이지<?php if ($config['cf_req_homepage']){ ?> (필수)<?php } ?></label>
<input type="text" name="mb_homepage" value="<?php echo get_text($member['mb_homepage']) ?>" id="reg_mb_homepage" <?php echo $config['cf_req_homepage']?"required":""; ?> class="frm_input full_input <?php echo $config['cf_req_homepage']?"required":""; ?>" size="70" maxlength="255" placeholder="홈페이지">
</li>
<?php } ?>
<li>
<?php if ($config['cf_use_tel']) { ?>
<label for="reg_mb_tel">전화번호<?php if ($config['cf_req_tel']) { ?> (필수)<?php } ?></label>
<input type="text" name="mb_tel" value="<?php echo get_text($member['mb_tel']) ?>" id="reg_mb_tel" <?php echo $config['cf_req_tel']?"required":""; ?> class="frm_input full_input <?php echo $config['cf_req_tel']?"required":""; ?>" maxlength="20" placeholder="전화번호">
<?php } ?>
</li>
<li>
<?php if ($config['cf_use_hp'] || ($config["cf_cert_use"] && ($config['cf_cert_hp'] || $config['cf_cert_simple']))) { ?>
<label for="reg_mb_hp">휴대폰번호<?php if (!empty($hp_required)) { ?> (필수)<?php } ?><?php echo $desc_phone ?></label>
<input type="text" name="mb_hp" value="<?php echo get_text($member['mb_hp']) ?>" id="reg_mb_hp" <?php echo $hp_required; ?> <?php echo $hp_readonly; ?> class="frm_input full_input <?php echo $hp_required; ?> <?php echo $hp_readonly; ?>" maxlength="20" placeholder="휴대폰번호">
<?php if ($config['cf_cert_use'] && ($config['cf_cert_hp'] || $config['cf_cert_simple'])) { ?>
<input type="hidden" name="old_mb_hp" value="<?php echo get_text($member['mb_hp']) ?>">
<?php } ?>
<?php } ?>
</li>
<?php if ($config['cf_use_addr']) { ?>
<li>
<label>주소</label>
<?php if ($config['cf_req_addr']) { ?> (필수)<?php } ?>
<label for="reg_mb_zip" class="sound_only">우편번호<?php echo $config['cf_req_addr']?' (필수)':''; ?></label>
<input type="text" name="mb_zip" value="<?php echo $member['mb_zip1'].$member['mb_zip2']; ?>" id="reg_mb_zip" <?php echo $config['cf_req_addr']?"required":""; ?> class="frm_input twopart_input <?php echo $config['cf_req_addr']?"required":""; ?>" size="5" maxlength="6" placeholder="우편번호">
<button type="button" class="btn_frmline" onclick="win_zip('fregisterform', 'mb_zip', 'mb_addr1', 'mb_addr2', 'mb_addr3', 'mb_addr_jibeon');">주소 검색</button><br>
<input type="text" name="mb_addr1" value="<?php echo get_text($member['mb_addr1']) ?>" id="reg_mb_addr1" <?php echo $config['cf_req_addr']?"required":""; ?> class="frm_input frm_address full_input <?php echo $config['cf_req_addr']?"required":""; ?>" size="50" placeholder="기본주소">
<label for="reg_mb_addr1" class="sound_only">기본주소<?php echo $config['cf_req_addr']?' (필수)':''; ?></label><br>
<input type="text" name="mb_addr2" value="<?php echo get_text($member['mb_addr2']) ?>" id="reg_mb_addr2" class="frm_input frm_address full_input" size="50" placeholder="상세주소">
<label for="reg_mb_addr2" class="sound_only">상세주소</label>
<br>
<input type="text" name="mb_addr3" value="<?php echo get_text($member['mb_addr3']) ?>" id="reg_mb_addr3" class="frm_input frm_address full_input" size="50" readonly="readonly" placeholder="참고항목">
<label for="reg_mb_addr3" class="sound_only">참고항목</label>
<input type="hidden" name="mb_addr_jibeon" value="<?php echo get_text($member['mb_addr_jibeon']); ?>">
</li>
<?php } ?>
</ul>
</div>
<div class="tbl_frm01 tbl_wrap register_form_inner">
<h2>기타 개인설정</h2>
<ul>
<?php if ($config['cf_use_signature']) { ?>
<li>
<label for="reg_mb_signature">서명<?php if ($config['cf_req_signature']){ ?> (필수)<?php } ?></label>
<textarea name="mb_signature" id="reg_mb_signature" <?php echo $config['cf_req_signature']?"required":""; ?> class="<?php echo $config['cf_req_signature']?"required":""; ?>" placeholder="서명"><?php echo $member['mb_signature'] ?></textarea>
</li>
<?php } ?>
<?php if ($config['cf_use_profile']) { ?>
<li>
<label for="reg_mb_profile">자기소개</label>
<textarea name="mb_profile" id="reg_mb_profile" <?php echo $config['cf_req_profile']?"required":""; ?> class="<?php echo $config['cf_req_profile']?"required":""; ?>" placeholder="자기소개"><?php echo $member['mb_profile'] ?></textarea>
</li>
<?php } ?>
<?php if ($config['cf_use_member_icon'] && $member['mb_level'] >= $config['cf_icon_level']) { ?>
<li>
<label for="reg_mb_icon" class="frm_label">
회원아이콘
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">이미지 크기는 가로 <?php echo $config['cf_member_icon_width'] ?>픽셀, 세로 <?php echo $config['cf_member_icon_height'] ?>픽셀 이하로 해주세요.<br>
gif, jpg, png파일만 가능하며 용량 <?php echo number_format($config['cf_member_icon_size']) ?>바이트 이하만 등록됩니다.</span>
</label>
<input type="file" name="mb_icon" id="reg_mb_icon">
<?php if ($w == 'u' && file_exists($mb_icon_path)) { ?>
<img src="<?php echo $mb_icon_url ?>" alt="회원아이콘">
<input type="checkbox" name="del_mb_icon" value="1" id="del_mb_icon">
<label for="del_mb_icon" class="inline">삭제</label>
<?php } ?>
</li>
<?php } ?>
<?php if ($member['mb_level'] >= $config['cf_icon_level'] && $config['cf_member_img_size'] && $config['cf_member_img_width'] && $config['cf_member_img_height']) { ?>
<li class="reg_mb_img_file">
<label for="reg_mb_img" class="frm_label">
회원이미지
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">이미지 크기는 가로 <?php echo $config['cf_member_img_width'] ?>픽셀, 세로 <?php echo $config['cf_member_img_height'] ?>픽셀 이하로 해주세요.<br>
gif, jpg, png파일만 가능하며 용량 <?php echo number_format($config['cf_member_img_size']) ?>바이트 이하만 등록됩니다.</span>
</label>
<input type="file" name="mb_img" id="reg_mb_img">
<?php if ($w == 'u' && file_exists($mb_img_path)) { ?>
<img src="<?php echo $mb_img_url ?>" alt="회원이미지">
<input type="checkbox" name="del_mb_img" value="1" id="del_mb_img">
<label for="del_mb_img" class="inline">삭제</label>
<?php } ?>
</li>
<?php } ?>
<li class="chk_box">
<input type="checkbox" name="mb_mailling" value="1" id="reg_mb_mailling" <?php echo ($w=='' || $member['mb_mailling'])?'checked':''; ?> class="selec_chk">
<label for="reg_mb_mailling">
<span></span>
<b class="sound_only">메일링서비스</b>
</label>
<span class="chk_li">정보 메일을 받겠습니다.</span>
</li>
<?php if ($config['cf_use_hp']) { ?>
<li class="chk_box">
<input type="checkbox" name="mb_sms" value="1" id="reg_mb_sms" <?php echo ($w=='' || $member['mb_sms'])?'checked':''; ?> class="selec_chk">
<label for="reg_mb_sms">
<span></span>
<b class="sound_only">SMS 수신여부</b>
</label>
<span class="chk_li">휴대폰 문자메세지를 받겠습니다.</span>
</li>
<?php } ?>
<?php if (isset($member['mb_open_date']) && $member['mb_open_date'] <= date("Y-m-d", G5_SERVER_TIME - ($config['cf_open_modify'] * 86400)) || empty($member['mb_open_date'])) { // 정보공개 수정일이 지났다면 수정가능 ?>
<li class="chk_box">
<input type="checkbox" name="mb_open" value="1" id="reg_mb_open" <?php echo ($w=='' || $member['mb_open'])?'checked':''; ?> class="selec_chk">
<label for="reg_mb_open">
<span></span>
<b class="sound_only">정보공개</b>
</label>
<span class="chk_li">다른분들이 나의 정보를 볼 수 있도록 합니다.</span>
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">
정보공개를 바꾸시면 앞으로 <?php echo (int)$config['cf_open_modify'] ?>일 이내에는 변경이 안됩니다.
</span>
<input type="hidden" name="mb_open_default" value="<?php echo $member['mb_open'] ?>">
</li>
<?php } else { ?>
<li>
정보공개
<input type="hidden" name="mb_open" value="<?php echo $member['mb_open'] ?>">
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">
정보공개는 수정후 <?php echo (int)$config['cf_open_modify'] ?>일 이내, <?php echo date("Y년 m월 j일", isset($member['mb_open_date']) ? strtotime("{$member['mb_open_date']} 00:00:00")+$config['cf_open_modify']*86400:G5_SERVER_TIME+$config['cf_open_modify']*86400); ?> 까지는 변경이 안됩니다.<br>
이렇게 하는 이유는 잦은 정보공개 수정으로 인하여 쪽지를 보낸 후 받지 않는 경우를 막기 위해서 입니다.
</span>
</li>
<?php } ?>
<?php
//회원정보 수정인 경우 소셜 계정 출력
if( $w == 'u' && function_exists('social_member_provider_manage') ){
social_member_provider_manage();
}
?>
<?php if ($w == "" && $config['cf_use_recommend']) { ?>
<li>
<label for="reg_mb_recommend" class="sound_only">추천인아이디</label>
<input type="text" name="mb_recommend" id="reg_mb_recommend" class="frm_input" placeholder="추천인아이디">
</li>
<?php } ?>
<li class="is_captcha_use">
자동등록방지
<?php echo captcha_html(); ?>
</li>
</ul>
</div>
</div>
<div class="btn_confirm">
<a href="<?php echo G5_URL ?>" class="btn_close">취소</a>
<button type="submit" id="btn_submit" class="btn_submit" accesskey="s"><?php echo $w==''?'회원가입':'정보수정'; ?></button>
</div>
</form>
</div>
<script>
$(function() {
$("#reg_zip_find").css("display", "inline-block");
var pageTypeParam = "pageType=register";
<?php if($config['cf_cert_use'] && $config['cf_cert_simple']) { ?>
// 이니시스 간편인증
var url = "<?php echo G5_INICERT_URL; ?>/ini_request.php";
var type = "";
var params = "";
var request_url = "";
$(".win_sa_cert").click(function() {
if(!cert_confirm()) return false;
type = $(this).data("type");
params = "?directAgency=" + type + "&" + pageTypeParam;
request_url = url + params;
call_sa(request_url);
});
<?php } ?>
<?php if($config['cf_cert_use'] && $config['cf_cert_ipin']) { ?>
// 아이핀인증
var params = "";
$("#win_ipin_cert").click(function() {
if(!cert_confirm()) return false;
params = "?" + pageTypeParam;
var url = "<?php echo G5_OKNAME_URL; ?>/ipin1.php"+params;
certify_win_open('kcb-ipin', url);
return;
});
<?php } ?>
<?php if($config['cf_cert_use'] && $config['cf_cert_hp']) { ?>
// 휴대폰인증
var params = "";
$("#win_hp_cert").click(function() {
if(!cert_confirm()) return false;
params = "?" + pageTypeParam;
<?php
switch($config['cf_cert_hp']) {
case 'kcb':
$cert_url = G5_OKNAME_URL.'/hpcert1.php';
$cert_type = 'kcb-hp';
break;
case 'kcp':
$cert_url = G5_KCPCERT_URL.'/kcpcert_form.php';
$cert_type = 'kcp-hp';
break;
case 'lg':
$cert_url = G5_LGXPAY_URL.'/AuthOnlyReq.php';
$cert_type = 'lg-hp';
break;
default:
echo 'alert("기본환경설정에서 휴대폰 본인확인 설정을 해주십시오");';
echo 'return false;';
break;
}
?>
certify_win_open("<?php echo $cert_type; ?>", "<?php echo $cert_url; ?>"+params);
return;
});
<?php } ?>
});
// submit 최종 폼체크
function fregisterform_submit(f)
{
// 회원아이디 검사
if (f.w.value == "") {
var msg = reg_mb_id_check();
if (msg) {
alert(msg);
f.mb_id.select();
return false;
}
}
if (f.w.value == "") {
if (f.mb_password.value.length < 3) {
alert("비밀번호를 3글자 이상 입력하십시오.");
f.mb_password.focus();
return false;
}
}
if (f.mb_password.value != f.mb_password_re.value) {
alert("비밀번호가 같지 않습니다.");
f.mb_password_re.focus();
return false;
}
if (f.mb_password.value.length > 0) {
if (f.mb_password_re.value.length < 3) {
alert("비밀번호를 3글자 이상 입력하십시오.");
f.mb_password_re.focus();
return false;
}
}
// 이름 검사
if (f.w.value=="") {
if (f.mb_name.value.length < 1) {
alert("이름을 입력하십시오.");
f.mb_name.focus();
return false;
}
/*
var pattern = /([^가-힣\x20])/i;
if (pattern.test(f.mb_name.value)) {
alert("이름은 한글로 입력하십시오.");
f.mb_name.select();
return false;
}
*/
}
<?php if($w == '' && $config['cf_cert_use'] && $config['cf_cert_req']) { ?>
// 본인확인 체크
if(f.cert_no.value=="") {
alert("회원가입을 위해서는 본인확인을 해주셔야 합니다.");
return false;
}
<?php } ?>
// 닉네임 검사
if ((f.w.value == "") || (f.w.value == "u" && f.mb_nick.defaultValue != f.mb_nick.value)) {
var msg = reg_mb_nick_check();
if (msg) {
alert(msg);
f.reg_mb_nick.select();
return false;
}
}
// E-mail 검사
if ((f.w.value == "") || (f.w.value == "u" && f.mb_email.defaultValue != f.mb_email.value)) {
var msg = reg_mb_email_check();
if (msg) {
alert(msg);
f.reg_mb_email.select();
return false;
}
}
<?php if (($config['cf_use_hp'] || $config['cf_cert_hp']) && $config['cf_req_hp']) { ?>
// 휴대폰번호 체크
var msg = reg_mb_hp_check();
if (msg) {
alert(msg);
f.reg_mb_hp.select();
return false;
}
<?php } ?>
if (typeof f.mb_icon != "undefined") {
if (f.mb_icon.value) {
if (!f.mb_icon.value.toLowerCase().match(/.(gif|jpe?g|png)$/i)) {
alert("회원아이콘이 이미지 파일이 아닙니다.");
f.mb_icon.focus();
return false;
}
}
}
if (typeof f.mb_img != "undefined") {
if (f.mb_img.value) {
if (!f.mb_img.value.toLowerCase().match(/.(gif|jpe?g|png)$/i)) {
alert("회원이미지가 이미지 파일이 아닙니다.");
f.mb_img.focus();
return false;
}
}
}
if (typeof(f.mb_recommend) != "undefined" && f.mb_recommend.value) {
if (f.mb_id.value == f.mb_recommend.value) {
alert("본인을 추천할 수 없습니다.");
f.mb_recommend.focus();
return false;
}
var msg = reg_mb_recommend_check();
if (msg) {
alert(msg);
f.mb_recommend.select();
return false;
}
}
<?php echo chk_captcha_js(); ?>
document.getElementById("btn_submit").disabled = "disabled";
return true;
}
jQuery(function($){
//tooltip
$(document).on("click", ".tooltip_icon", function(e){
$(this).next(".tooltip").fadeIn(400).css("display","inline-block");
}).on("mouseout", ".tooltip_icon", function(e){
$(this).next(".tooltip").fadeOut();
});
});
</script>
<!-- } 회원정보 입력/수정 끝 -->
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,480 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
add_javascript('<script src="'.G5_JS_URL.'/jquery.register_form.js"></script>', 0);
if ($config['cf_cert_use'] && ($config['cf_cert_simple'] || $config['cf_cert_ipin'] || $config['cf_cert_hp']))
add_javascript('<script src="'.G5_JS_URL.'/certify.js?v='.G5_JS_VER.'"></script>', 0);
?>
<!-- 회원정보 입력/수정 시작 { -->
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head>
<body>
<div class="wrapper">
<!-- Header -->
<header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header>
<!-- //Header -->
<!--popup_wrap-->
<div class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<hgroup>
<div class="pop_close_wrap">
<button class="btn_close">
<div class="close_div"><img src="../img/ico_close.svg" alt=""></div>
</button>
</div>
</hgroup>
<!--popup_content-->
<div class="popup_content join completion">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">Sign u</span>
<div class="join_info">
<h1 class="h_1">회원가입</h1>
<h3 class="h_3">
TOVA 회원이 되시면<br>
<strong>다운로드 및 1:1문의 서비스</strong>를<br>
이용하실 수 있습니다.
</h3>
</div>
<ul class="join_progress">
<li class="join_step"><h4 class="h_4">01</h4><h4 class="h_4">약관동의</h4></li>
<li class="join_step on"><h4 class="h_4">02</h4><h4 class="h_4"><strong>정보입력</strong></h4></li>
<li class="join_step"><h4 class="h_4">03</h4><h4 class="h_4">가입완료</h4></li>
</ul>
</div>
<!--//pop_join_right-->
<div class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">p</span>
<form id="fregisterform" name="fregisterform" action="<?php echo $register_action_url?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="url" value="<?php echo $urlencode ?>">
<input type="hidden" name="agree" value="<?php echo $agree ?>">
<input type="hidden" name="agree2" value="<?php echo $agree2 ?>">
<input type="hidden" name="cert_type" value="<?php echo $member['mb_certify']; ?>">
<input type="hidden" name="cert_no" value="">
<!-- <?php //if (isset($member['mb_sex'])) { ?><input type="hidden" name="mb_sex" value="<?php //echo $member['mb_sex'] ?>"><?php //} ?> -->
<?php //if (isset($member['mb_nick_date']) && $member['mb_nick_date'] > date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400))) { // 닉네임수정일이 지나지 않았다면 ?>
<!-- <input type="hidden" name="mb_nick_default" value="<?php //echo get_text($member['mb_nick']) ?>">
<input type="hidden" name="mb_nick" value="<?php //echo get_text($member['mb_nick']) ?>"> -->
<?php //} ?>
<h6 class="important_msg pop_notice h_6">*항목은 필수 항목 입니다.</h6>
<fieldset>
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap">
<table>
<tbody>
<tr>
<th class="h_4">아이디<span class="important_msg">*</span></th>
<td>
<div class="id_wrap">
<input type="text" class="frm_input full_input" id="reg_mb_id" name="mb_id" onchange="PG_pro('change');" placeholder="아이디 입력" <?php if($member['mb_id']!=""){ ?> style="width: 100% ;"<?php }?> autocomplete="off" value="<?php echo $member['mb_id'] ?>" <?php echo $required ?> <?php echo $readonly ?> maxlength="12"/>
<?php if($member['mb_id']==""){ ?>
<button type="button" class="chk_id" onclick="PG_pro('dupl_check');">중복확인</button>
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="" placeholder="아이디중복확인여부YN" style="width:250px; background-color:#dfe4ea "/>
<!-- hidden --><input type="hidden" id="GB_mb_id" name="GB_mb_id" value="<?php echo $member['mb_id'] ?>">
<?php }else{ ?>
<!-- hidden --><input type="hidden" id="reg_mb_id" name="mb_id" value="<?php echo $member['mb_id'] ?>">
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="Y" onclick="" style="width:250px; background-color:#dfe4ea "/>
<?php } ?>
</div>
<span class="important_msg h_6">영문+숫자 4~12자(영문으로 시작)</span>
</td>
</tr>
<tr>
<th class="h_4">비밀번호<span class="important_msg">*</span></th>
<td>
<div class="password_wrap">
<input type="password" name="mb_password" id="reg_mb_password" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 입력">
<input type="password" name="mb_password_re" id="reg_mb_password_re" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 확인">
</div>
<span class="important_msg h_6">영문+숫자+특수기호 8자 이상</span>
</td>
</tr>
<tr>
<th class="h_4">이름<span class="important_msg">*</span></th>
<td>
<div class="name_wrap">
<input type="text" id="reg_mb_name" name="mb_name" value="<?php echo get_text($member['mb_name']) ?>" <?php echo $required ?> <?php echo $name_readonly; ?> class="frm_input full_input <?php echo $required ?> <?php echo $name_readonly ?>" size="10" placeholder="이름 입력">
</div>
</td>
</tr>
<tr>
<th class="h_4">이메일<span class="important_msg">*</span></th>
<?php
if($member['mb_email']){
$mb_email_confirm = isset($member['mb_email'])?$member['mb_email']:'';
if($mb_email_confirm!=""){
$mb_email_temp = explode('@',$mb_email_confirm);
$mb_email_domain = array_pop(explode('@',$mb_email_confirm));
}
$array_domain = array('naver.com','gmail.com','google.com' ,'hanmail.net','nate.com' ,'kakao.com');
$exist_domain = false;
if (stripos(json_encode($array_domain),$mb_email_domain) !== false) {
$exist_domain = true;
}
}
?>
<td>
<div class="email_wrap">
<!-- <input type="hidden" name="old_email" value="<?php //echo $member['mb_email'] ?>">
<input type="text" name="mb_email" value="<?php //echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" required class="frm_input email full_input required" size="70" maxlength="100" placeholder="이메일 입력"> -->
<input type="text" id="reg_mb_email1" name="mb_email1" value="<?php echo $mb_email_temp[0]; ?>" required class="frm_input email full_input required" size="50" maxlength="100" placeholder="메일입력" autocomplete="off">
<div>
<span>@</span>
</div>
<select name="mb_email2" id="mb_email2" onchange="PG_changeSelect();">
<option value="@naver.com" <?php echo "@".$mb_email_domain=="@naver.com"?"selected":""; ?> >naver.com</option>
<option value="@gmail.com" <?php echo "@".$mb_email_domain=="@gmail.com"?"selected":""; ?> >gmail.com</option>
<option value="@google.com" <?php echo "@".$mb_email_domain=="@google.com"?"selected":""; ?> >google.com</option>
<option value="@hanmail.net" <?php echo "@".$mb_email_domain=="@hanmail.net"?"selected":""; ?> >hanmail.net</option>
<option value="@nate.com" <?php echo "@".$mb_email_domain=="@nate.com"?"selected":""; ?> >nate.com</option>
<option value="@kakao.com" <?php echo "@".$mb_email_domain=="@kakao.com"?"selected":""; ?> >kakao.com</option>
<option value="" <?php echo $exist_domain===false?"selected":""; ?> >직접입력</option>
</select>
<input type="hidden" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" size="50" maxlength="100">
</div>
</td>
</tr>
<tr>
<th class="h_4">휴대전화번호<span class="important_msg">*</span></th>
<td>
<div class="phone_wrap">
<input type="text" name="mb_hp" value="<?php echo get_text($member['mb_hp']) ?>" id="reg_mb_hp" <?php echo $hp_required; ?> <?php echo $hp_readonly; ?> class="frm_input full_input <?php echo $hp_required; ?> <?php echo $hp_readonly; ?>" maxlength="20" placeholder="휴대폰 번호">
<!-- <button type="button" onclick="" name="" class="cert_number">인증번호</button> -->
</div>
</td>
</tr>
<!-- <tr class="code" style="display: none;">
<th class="h_4">인증번호</th>
<td>
<div class="phone_wrap">
<input type="text" placeholder="인증번호 입력" required>
<span class="timer">03:00</span>
<button type="button" onclick="" name="" class="check">확인</button>
<button type="button " onclick="" name="" class="check complete" style="display: none;">인증완료</button>
</div>
</td>
</tr> -->
<tr>
<th class="h_4">회사정보<span class="select_msg">(선택)</span></th>
<td>
<div class="company_wrap">
<input type="text" name="mb_comp" value="<?php echo get_text($member['mb_comp'])?>" id="reg_mb_comp" size="70" maxlength="100" placeholder="회사명 입력">
<input type="text" name="mb_comp_team" value="<?php echo get_text($member['mb_comp_team'])?>" id="reg_mb_comp_team" size="70" maxlength="100" placeholder="부서명 입력">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--//tbl_wrap-->
<div class="btn_confirm">
<button type="submit" id="btn_submit" class="btn_submit"><?php echo $w==''?'회원가입':'정보수정'; ?></button>
</div>
</fieldset>
</form>
</div>
<!--//pop_join_right-->
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
</div>
</body>
<script>
$(function() {
$("#reg_zip_find").css("display", "inline-block");
var pageTypeParam = "pageType=register";
<?php if($config['cf_cert_use'] && $config['cf_cert_simple']) { ?>
// 이니시스 간편인증
var url = "<?php echo G5_INICERT_URL; ?>/ini_request.php";
var type = "";
var params = "";
var request_url = "";
$(".win_sa_cert").click(function() {
if(!cert_confirm()) return false;
type = $(this).data("type");
params = "?directAgency=" + type + "&" + pageTypeParam;
request_url = url + params;
call_sa(request_url);
});
<?php } ?>
<?php if($config['cf_cert_use'] && $config['cf_cert_ipin']) { ?>
// 아이핀인증
var params = "";
$("#win_ipin_cert").click(function() {
if(!cert_confirm()) return false;
params = "?" + pageTypeParam;
var url = "<?php echo G5_OKNAME_URL; ?>/ipin1.php"+params;
certify_win_open('kcb-ipin', url);
return;
});
<?php }?>
<?php if($config['cf_cert_use'] && $config['cf_cert_hp']) { ?>
// 휴대폰인증
var params = "";
$("#win_hp_cert").click(function() {
if(!cert_confirm()) return false;
params = "?" + pageTypeParam;
<?php
switch($config['cf_cert_hp']) {
case 'kcb':
$cert_url = G5_OKNAME_URL.'/hpcert1.php';
$cert_type = 'kcb-hp';
break;
case 'kcp':
$cert_url = G5_KCPCERT_URL.'/kcpcert_form.php';
$cert_type = 'kcp-hp';
break;
case 'lg':
$cert_url = G5_LGXPAY_URL.'/AuthOnlyReq.php';
$cert_type = 'lg-hp';
break;
default:
echo 'alert("기본환경설정에서 휴대폰 본인확인 설정을 해주십시오");';
echo 'return false;';
break;
}
?>
certify_win_open("<?php echo $cert_type; ?>", "<?php echo $cert_url; ?>"+params);
return;
});
<?php } ?>
});
function PG_changeSelect(){
var aaa = $("#mb_email2").val();
if(aaa==""){
//직접입력 선택시
$("#reg_mb_email1").attr('placeholder','aaa@bbb.com 메일주소');
// $("#reg_mb_email1").css('border','1px solid red');
$("#reg_mb_email1").focus();
}else{
$("#reg_mb_email1").attr('placeholder','메일입력');
$("#reg_mb_email1").focus();
}
}//PG_changeSelect
function PG_pro(str){
if(str=="change"){
//아이디 입력창 변경발생시 중복확인 다시해야함 : flag값 N로 변경
$("#dupl_check_yn").val('N');
}else if(str=="dupl_check"){
//아이디 중복체크
//ajax호출할 페이지, ajax값으로 바뀔 html, 해당 saction ID값
var reg_mb_id = $("#reg_mb_id").val();
if(reg_mb_id==""){ alert("아이디를 입력해주세요"); $("#reg_mb_id").focus(); return false;}
//var re = /^[a-z][a-zA-z0-9]{4,12}$/; //아이디 유효성 검사
var re = /^[a-zA-Z][a-zA-Z0-9]{4,12}$/; //아이디 유효성 검사
if (!re.test(reg_mb_id)) {            
alert("아이디는 영문으로 시작하는 \n4~12자의 영문 대소문자+숫자 조합으로만 가능합니다");            
$("#reg_mb_id").focus();      
   return false;       
 }
jQuery.ajax({
type:"GET",
url: "/tova/skin/member/basic/CL_Ajax_Data.php",
//dataType:"HTML", // 옵션이므로 JSON으로 받을게 아니면 안써도 됨
data:{
'ActionKind':'dupl_check',
'reg_mb_id':reg_mb_id,
},
success : function(data){
// 통신이 성공적으로 이루어졌을 때 이 함수를 타게 된다.
console.log(data);
// alert(data);
if(data=="1"){
//아이디중복체크 fail
alert("이미 사용중인 아이디입니다.\n 다시 입력해주세요");
$("#reg_mb_id").val('');
$("#dupl_check_yn").val('N');
$("#reg_mb_id").focus();
}else{
//아이디중복체크 pass
if(!confirm("사용가능한 아이디입니다. \n사용하시겠습니까?")){
$("#reg_mb_id").val('');
$("#dupl_check_yn").val('N');
return false;
}
$("#dupl_check_yn").val('Y');
$("#reg_mb_password").focus();
}
},
error : function(xhr, status, error) {
console.log(xhr);
console.log(status);
console.log(error);
alert("에러발생");
}
});
}else{}
}//PG_pro
// submit 최종 폼체크
function fregisterform_submit(f)
{
// 회원아이디 검사
if (f.w.value == "") {
var msg = reg_mb_id_check();
if (msg) {
alert(msg);
f.mb_id.select();
return false;
}
}
if (f.w.value == "") {
if (f.mb_password.value.length < 3) {
alert("비밀번호를 3글자 이상 입력하십시오.");
f.mb_password.focus();
return false;
}
}
if (f.mb_password.value != f.mb_password_re.value) {
alert("비밀번호가 같지 않습니다.");
f.mb_password_re.focus();
return false;
}
if (f.mb_password.value.length > 0) {
if (f.mb_password_re.value.length < 3) {
alert("비밀번호를 3글자 이상 입력하십시오.");
f.mb_password_re.focus();
return false;
}
}
// 이름 검사
if (f.w.value=="") {
if (f.mb_name.value.length < 1) {
alert("이름을 입력하십시오.");
f.mb_name.focus();
return false;
}
/*
var pattern = /([^가-힣\x20])/i;
if (pattern.test(f.mb_name.value)) {
alert("이름은 한글로 입력하십시오.");
f.mb_name.select();
return false;
}
*/
}
<?php if($w == '' && $config['cf_cert_use'] && $config['cf_cert_req']) { ?>
// 본인확인 체크
if(f.cert_no.value=="") {
alert("회원가입을 위해서는 본인확인을 해주셔야 합니다.");
return false;
}
<?php } ?>
// 닉네임 검사
// if ((f.w.value == "") || (f.w.value == "u" && f.mb_nick.defaultValue != f.mb_nick.value)) {
// var msg = reg_mb_nick_check();
// if (msg) {
// alert(msg);
// f.reg_mb_nick.select();
// return false;
// }
// }
// E-mail 검사
var mail_temp = f.mb_email1.value+''+f.mb_email2.value;
f.mb_email.value = mail_temp;
if ((f.w.value == "") || (f.w.value == "u" && f.mb_email.defaultValue != mail_temp)) {
//if ((f.w.value == "") || (f.w.value == "u" && f.mb_email.defaultValue != f.mb_email.value)) {
var msg = reg_mb_email_check();
if (msg) {
alert(msg);
f.reg_mb_email.select();
return false;
}
}
<?php if (($config['cf_use_hp'] || $config['cf_cert_hp']) && $config['cf_req_hp']) { ?>
// 휴대폰번호 체크
var msg = reg_mb_hp_check();
if (msg) {
alert(msg);
f.reg_mb_hp.select();
return false;
}
<?php } ?>
<?php //echo chk_captcha_js(); ?>
document.getElementById("btn_submit").disabled = "disabled";
return true;
}
jQuery(function($){
//tooltip
$(document).on("click", ".tooltip_icon", function(e){
$(this).next(".tooltip").fadeIn(400).css("display","inline-block");
}).on("mouseout", ".tooltip_icon", function(e){
$(this).next(".tooltip").fadeOut();
});
});
</script>
<!-- } 회원정보 입력/수정 끝 -->
@@ -0,0 +1,505 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
// add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
//add_javascript('<script src="'.G5_JS_URL.'/jquery.register_form.js"></script>', 0);
// if ($config['cf_cert_use'] && ($config['cf_cert_simple'] || $config['cf_cert_ipin'] || $config['cf_cert_hp']))
// add_javascript('<script src="'.G5_JS_URL.'/certify.js?v='.G5_JS_VER.'"></script>', 0);
//add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 회원정보 입력/수정 시작 { -->
<!-- <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TOVA Join</title>
<link rel="stylesheet" href="../css/reset.css" />
<link rel="stylesheet" href="../css/font.css" />
<link rel="stylesheet" href="../css/style.css" />
<script src="../js/jquery-3.6.1.min.js"></script>
<script src="../js/common.js"></script>
</head> -->
<link rel="stylesheet" href="<?php echo G5_URL ?>/css/style.css" />
<!-- <body>
<div class="wrapper"> -->
<!-- Header -->
<!-- <header class="header">
<h1>
<img src="../img/logo_w.svg" alt="">
</h1>
<div class="menu_wrap">
<div class="menu_my"><img src="../img/ico_my.svg" alt=""></div>
<div class="menu_ham"><img src="../img/ico_ham.svg" alt=""></div>
</div>
</header> -->
<!-- //Header -->
<!--popup_wrap-->
<div id="pop_join" class="popup_wrap">
<!--popup_in-->
<div class="popup_in">
<button class="btn_close">
<div class="close_div"><img src="<?php echo G5_URL ?>/img/ico_close.svg" alt="sdi"></div>
</button>
<!--popup_content-->
<div class="popup_content join completion">
<!--pop_join_left-->
<div class="pop_join_left">
<span class="bg_tit_left">Sign u</span>
<div class="join_info">
<h1 class="h_1">회원가입</h1>
<h3 class="h_3">
EG-BIM 회원이 되시면<br>
<strong>1:1구매문의및 제품안내 서비스</strong>를<br>
이용하실 수 있습니다.
</h3>
</div>
<ul class="join_progress">
<li class="join_step"><h4 class="h_4">01</h4><h4 class="h_4">약관동의</h4></li>
<li class="join_step on"><h4 class="h_4">02</h4><h4 class="h_4"><strong>정보입력</strong></h4></li>
<li class="join_step"><h4 class="h_4">03</h4><h4 class="h_4">가입완료</h4></li>
</ul>
</div>
<!--//pop_join_right-->
<div id="reg_form_join" class="pop_input_wrap pop_join_right">
<span class="bg_tit_right">p</span>
<form id="fregisterform" name="fregisterform" action="<?php echo $register_action_url?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="url" value="<?php echo $urlencode ?>">
<input type="hidden" name="agree" value="<?php echo $agree ?>">
<input type="hidden" name="agree2" value="<?php echo $agree2 ?>">
<input type="hidden" name="cert_type" value="<?php echo $member['mb_certify']; ?>">
<input type="hidden" name="cert_no" value="">
<!-- <?php //if (isset($member['mb_sex'])) { ?><input type="hidden" name="mb_sex" value="<?php //echo $member['mb_sex'] ?>"><?php //} ?> -->
<?php //if (isset($member['mb_nick_date']) && $member['mb_nick_date'] > date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400))) { // 닉네임수정일이 지나지 않았다면 ?>
<!-- <input type="hidden" name="mb_nick_default" value="<?php //echo get_text($member['mb_nick']) ?>">
<input type="hidden" name="mb_nick" value="<?php //echo get_text($member['mb_nick']) ?>"> -->
<?php //} ?>
<h6 class="important_msg pop_notice h_6">*항목은 필수 항목 입니다.</h6>
<fieldset>
<!--tbl_wrap-->
<div id="register_form" class="tbl_wrap">
<table>
<tbody>
<tr>
<th class="h_4">아이디<span class="important_msg">*</span></th>
<td>
<div class="id_wrap">
<input type="text" class="frm_input full_input" id="reg_mb_id" name="mb_id" onchange="PG_pro('change');" placeholder="아이디 입력" <?php if($member['mb_id']!=""){ ?> style="width: 100% ;"<?php }?> autocomplete="off" value="<?php echo $member['mb_id'] ?>" <?php echo $required ?> <?php echo $readonly ?> maxlength="12"/>
<?php if($member['mb_id']==""){ ?>
<button type="button" class="chk_id" onclick="PG_pro('dupl_check');">중복확인</button>
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="" placeholder="아이디중복확인여부YN" style="width:250px; background-color:#dfe4ea "/>
<!-- hidden --><input type="hidden" id="GB_mb_id" name="GB_mb_id" value="<?php echo $member['mb_id'] ?>">
<?php }else{ ?>
<!-- hidden --><input type="hidden" id="reg_mb_id" name="mb_id" value="<?php echo $member['mb_id'] ?>">
<!-- hidden --><input type="hidden" id="dupl_check_yn" name="dupl_check_yn" value="Y" onclick="" style="width:250px; background-color:#dfe4ea "/>
<?php } ?>
</div>
<span class="important_msg h_6">영문+숫자 4~12자(영문으로 시작)</span>
</td>
</tr>
<tr>
<th class="h_4">비밀번호<span class="important_msg">*</span></th>
<td>
<div class="password_wrap">
<input type="password" name="mb_password" id="reg_mb_password" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 입력">
<input type="password" name="mb_password_re" id="reg_mb_password_re" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 확인">
</div>
<span class="important_msg h_6">영문+숫자+특수기호 8자 이상</span>
</td>
</tr>
<tr>
<th class="h_4">이름<span class="important_msg">*</span></th>
<td>
<div class="name_wrap">
<input type="text" id="reg_mb_name" name="mb_name" value="<?php echo get_text($member['mb_name']) ?>" <?php echo $required ?> <?php echo $name_readonly; ?> class="frm_input full_input <?php echo $required ?> <?php echo $name_readonly ?>" size="10" placeholder="이름 입력">
</div>
</td>
</tr>
<tr>
<th class="h_4">이메일<span class="important_msg">*</span></th>
<?php
if($member['mb_email']){
$mb_email_confirm = isset($member['mb_email'])?$member['mb_email']:'';
if($mb_email_confirm!=""){
$mb_email_temp = explode('@',$mb_email_confirm);
$mb_email_domain = array_pop(explode('@',$mb_email_confirm));
}
$array_domain = array('naver.com','gmail.com','daum.net' ,'hanmail.net','nate.com' ,'hotmail.com' ,'yahoo.com');
$exist_domain = false;
if (stripos(json_encode($array_domain),$mb_email_domain) !== false) {
$exist_domain = true;
}
}
?>
<td>
<div class="email_wrap">
<input type="text" id="reg_mb_email1" name="mb_email1" value="<?php echo $mb_email_temp[0]; ?>" required class="frm_input email full_input required" size="50" maxlength="100" placeholder="메일입력" autocomplete="off">
<div>
<span>@</span>
</div>
<input type="text" id="register_domain2" placeholder="직접 입력" style="display:none;" required>
<select name="mb_email2" id="reg_mb_email2" onchange="PG_changeSelect(this);">
<option value="-" hidden="" disabled="disabled" selected="selected">선택</option>
<option value="@naver.com" <?php echo "@".$mb_email_domain=="@naver.com"?"selected":""; ?> >naver.com</option>
<option value="@gmail.com" <?php echo "@".$mb_email_domain=="@gmail.com"?"selected":""; ?> >gmail.com</option>
<option value="@daum.net" <?php echo "@".$mb_email_domain=="@daum.net"?"selected":""; ?> >daum.net</option>
<option value="@hanmail.net" <?php echo "@".$mb_email_domain=="@hanmail.net"?"selected":""; ?> >hanmail.net</option>
<option value="@nate.com" <?php echo "@".$mb_email_domain=="@nate.com"?"selected":""; ?> >nate.com</option>
<option value="@hotmail.com" <?php echo "@".$mb_email_domain=="@hotmail.com"?"selected":""; ?> >hotmail.com</option>
<option value="@yahoo.com" <?php echo "@".$mb_email_domain=="@yahoo.com"?"selected":""; ?> >yahoo.com</option>
<!-- <option value="" <?php //echo $exist_domain===false?"selected":""; ?> >직접입력</option> -->
<option value="type" type="text">직접입력</option>
</select>
<input type="hidden" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" size="50" maxlength="100">
</div>
</td>
</tr>
<tr>
<th class="h_4">휴대전화번호<span class="important_msg">*</span></th>
<td>
<div class="phone_wrap">
<input type="text" name="mb_hp" value="<?php echo get_text($member['mb_hp']) ?>" id="reg_mb_hp" <?php echo $hp_required; ?> <?php echo $hp_readonly; ?> class="frm_input full_input <?php echo $hp_required; ?> <?php echo $hp_readonly; ?>" maxlength="20" placeholder="휴대폰 번호">
<!-- <button type="button" onclick="" name="" class="cert_number">인증번호</button> -->
</div>
</td>
</tr>
<!-- <tr class="code" style="display: none;">
<th class="h_4">인증번호</th>
<td>
<div class="phone_wrap">
<input type="text" placeholder="인증번호 입력" required>
<span class="timer">03:00</span>
<button type="button" onclick="" name="" class="check">확인</button>
<button type="button " onclick="" name="" class="check complete" style="display: none;">인증완료</button>
</div>
</td>
</tr> -->
<tr>
<th class="h_4">회사정보<span class="important_msg">*</span></th>
<td>
<div class="company_wrap">
<input type="text" name="mb_comp" value="<?php echo get_text($member['mb_comp'])?>" id="reg_mb_comp" size="70" maxlength="100" placeholder="회사명 입력">
<input type="text" name="mb_comp_team" value="<?php echo get_text($member['mb_comp_team'])?>" id="reg_mb_comp_team" size="70" maxlength="100" placeholder="부서명 입력">
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--//tbl_wrap-->
<div class="btn_confirm">
<button type="submit" id="btn_submit" class="btn_submit" ><?php echo $w==''?'회원가입':'정보수정'; ?></button>
</div>
</fieldset>
</form>
</div>
<!--//pop_join_right-->
<!-- 회원가입결과 시작 { register-->
<div id="pop_result" class="popup_wrap" style="display:none;">
<p class="reg_result_p">
<i class="fa fa-gift" aria-hidden="true"></i><br>
<strong><?php echo get_text($mb['mb_name']); ?></strong>님의 회원가입을 진심으로 축하합니다.
</p>
<?php if (is_use_email_certify()) { ?>
<p class="result_txt">
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.<br>
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
</p>
<div id="result_email">
<span>아이디</span>
<strong><?php echo $mb['mb_id'] ?></strong><br>
<span>이메일 주소</span>
<strong><?php echo $mb['mb_email'] ?></strong>
</div>
<p>
이메일 주소를 잘못 입력하셨다면, 사이트 관리자에게 문의해주시기 바랍니다.
</p>
<?php } ?>
<p class="result_txt">
회원님의 비밀번호는 아무도 알 수 없는 암호화 코드로 저장되므로 안심하셔도 좋습니다.<br>
아이디, 비밀번호 분실시에는 회원가입시 입력하신 이메일 주소를 이용하여 찾을 수 있습니다.
</p>
<p class="result_txt">
회원 탈퇴는 언제든지 가능하며 일정기간이 지난 후, 회원님의 정보는 삭제하고 있습니다.<br>
감사합니다.
</p>
<!-- } 회원가입결과 끝 -->
<div class="btn_confirm_reg">
<a href="<?php echo G5_URL ?>/" class="reg_btn_submit">메인으로</a>
</div>
</div>
</div>
<!--//popup_content-->
</div>
<!--//popup_in-->
</div>
<!--//popup_wrap-->
<!-- </div>
</body> -->
<script>
$(function() {
$("#reg_zip_find").css("display", "inline-block");
var pageTypeParam = "pageType=register";
<?php if($config['cf_cert_use'] && $config['cf_cert_simple']) { ?>
// 이니시스 간편인증
var url = "<?php echo G5_INICERT_URL; ?>/ini_request.php";
var type = "";
var params = "";
var request_url = "";
$(".win_sa_cert").click(function() {
if(!cert_confirm()) return false;
type = $(this).data("type");
params = "?directAgency=" + type + "&" + pageTypeParam;
request_url = url + params;
call_sa(request_url);
});
<?php } ?>
<?php if($config['cf_cert_use'] && $config['cf_cert_ipin']) { ?>
// 아이핀인증
var params = "";
$("#win_ipin_cert").click(function() {
if(!cert_confirm()) return false;
params = "?" + pageTypeParam;
var url = "<?php echo G5_OKNAME_URL; ?>/ipin1.php"+params;
certify_win_open('kcb-ipin', url);
return;
});
<?php }?>
<?php if($config['cf_cert_use'] && $config['cf_cert_hp']) { ?>
// 휴대폰인증
var params = "";
$("#win_hp_cert").click(function() {
if(!cert_confirm()) return false;
params = "?" + pageTypeParam;
<?php
switch($config['cf_cert_hp']) {
case 'kcb':
$cert_url = G5_OKNAME_URL.'/hpcert1.php';
$cert_type = 'kcb-hp';
break;
case 'kcp':
$cert_url = G5_KCPCERT_URL.'/kcpcert_form.php';
$cert_type = 'kcp-hp';
break;
case 'lg':
$cert_url = G5_LGXPAY_URL.'/AuthOnlyReq.php';
$cert_type = 'lg-hp';
break;
default:
echo 'alert("기본환경설정에서 휴대폰 본인확인 설정을 해주십시오");';
echo 'return false;';
break;
}
?>
certify_win_open("<?php echo $cert_type; ?>", "<?php echo $cert_url; ?>"+params);
return;
});
<?php } ?>
});
function PG_changeSelect(p_list){
if(p_list.value == 'type'){
document.getElementById("register_domain2").style.display = "block";
}else{
document.getElementById("register_domain2").style.display = "none";
}
}//PG_changeSelect
function PG_pro(str){
if(str=="change"){
//아이디 입력창 변경발생시 중복확인 다시해야함 : flag값 N로 변경
$("#dupl_check_yn").val('N');
}else if(str=="dupl_check"){
//아이디 중복체크
//ajax호출할 페이지, ajax값으로 바뀔 html, 해당 saction ID값
var reg_mb_id = $("#reg_mb_id").val();
if(reg_mb_id==""){ alert("아이디를 입력해주세요"); $("#reg_mb_id").focus(); return false;}
//var re = /^[a-z][a-zA-z0-9]{4,12}$/; //아이디 유효성 검사
var re = /^[a-zA-Z][a-zA-Z0-9]{4,12}$/; //아이디 유효성 검사
if (!re.test(reg_mb_id)) {            
alert("아이디는 영문으로 시작하는 \n4~12자의 영문 대소문자+숫자 조합으로만 가능합니다");            
$("#reg_mb_id").focus();      
   return false;       
 }
jQuery.ajax({
type:"GET",
url: "/egbim/skin/member/basic/CL_Ajax_Data.php",
//dataType:"HTML", // 옵션이므로 JSON으로 받을게 아니면 안써도 됨
data:{
'ActionKind':'dupl_check',
'reg_mb_id':reg_mb_id,
},
success : function(data){
// 통신이 성공적으로 이루어졌을 때 이 함수를 타게 된다.
console.log(data);
// alert(data);
if(data=="1"){
//아이디중복체크 fail
alert("이미 사용중인 아이디입니다.\n 다시 입력해주세요");
$("#reg_mb_id").val('');
$("#dupl_check_yn").val('N');
$("#reg_mb_id").focus();
}else{
//아이디중복체크 pass
if(!confirm("사용가능한 아이디입니다. \n사용하시겠습니까?")){
$("#reg_mb_id").val('');
$("#dupl_check_yn").val('N');
return false;
}
$("#dupl_check_yn").val('Y');
$("#reg_mb_password").focus();
}
},
error : function(xhr, status, error) {
console.log(xhr);
console.log(status);
console.log(error);
alert("에러발생");
}
});
}else{}
}//PG_pro
// submit 최종 폼체크
function fregisterform_submit(b)
{
var f = b.parentNode.parentNode.parentNode;
// 회원아이디 검사
if (f.w.value == "") {
alert('id_check_before');
var msg = reg_mb_id_check();
if (msg) {
f.mb_id.select();
return false;
}
}
if (f.w.value == "") {
if (f.mb_password.value.length < 3) {
alert("비밀번호를 3글자 이상 입력하십시오.");
f.mb_password.focus();
return false;
}
}
if (f.mb_password.value != f.mb_password_re.value) {
alert("비밀번호가 같지 않습니다.");
f.mb_password_re.focus();
return false;
}
if (f.mb_password.value.length > 0) {
if (f.mb_password_re.value.length < 3) {
alert("비밀번호를 3글자 이상 입력하십시오.");
f.mb_password_re.focus();
return false;
}
}
// 이름 검사
if (f.w.value=="") {
if (f.mb_name.value.length < 1) {
alert("이름을 입력하십시오.");
f.mb_name.focus();
return false;
}
/*
var pattern = /([^가-힣\x20])/i;
if (pattern.test(f.mb_name.value)) {
alert("이름은 한글로 입력하십시오.");
f.mb_name.select();
return false;
}
*/
}
<?php if($w == '' && $config['cf_cert_use'] && $config['cf_cert_req']) { ?>
// 본인확인 체크
if(f.cert_no.value=="") {
alert("회원가입을 위해서는 본인확인을 해주셔야 합니다.");
return false;
}
<?php } ?>
// 닉네임 검사
// if ((f.w.value == "") || (f.w.value == "u" && f.mb_nick.defaultValue != f.mb_nick.value)) {
// var msg = reg_mb_nick_check();
// if (msg) {
// alert(msg);
// f.reg_mb_nick.select();
// return false;
// }
// }
// E-mail 검사
var mail_temp = f.reg_mb_email1.value+''+f.reg_mb_email2.value;
f.reg_mb_email.value = mail_temp;
if ((f.w.value == "") || (f.w.value == "u" && f.reg_mb_email.defaultValue != mail_temp)) {
var msg = reg_mb_email_check();
if (msg) {
alert(msg);
f.reg_mb_email1.select();
return false;
}
}
<?php if (($config['cf_use_hp'] || $config['cf_cert_hp']) && $config['cf_req_hp']) { ?>
// 휴대폰번호 체크
var msg = reg_mb_hp_check();
if (msg) {
alert(msg);
f.reg_mb_hp.select();
return false;
}
<?php } ?>
<?php //echo chk_captcha_js(); ?>
document.getElementById("btn_submit").disabled = "disabled";
return true;
}
jQuery(function($){
//tooltip
$(document).on("click", ".tooltip_icon", function(e){
$(this).next(".tooltip").fadeIn(400).css("display","inline-block");
}).on("mouseout", ".tooltip_icon", function(e){
$(this).next(".tooltip").fadeOut();
});
});
</script>
<!-- } 회원정보 입력/수정 끝 -->
@@ -0,0 +1,59 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
//----------------------------------------------------------
// SMS 문자전송 시작
//----------------------------------------------------------
$sms_contents = $default['de_sms_cont1'];
$sms_contents = str_replace("{이름}", $mb_name, $sms_contents);
$sms_contents = str_replace("{회원아이디}", $mb_id, $sms_contents);
$sms_contents = str_replace("{회사명}", $default['de_admin_company_name'], $sms_contents);
// 핸드폰번호에서 숫자만 취한다
$receive_number = preg_replace("/[^0-9]/", "", $mb_hp); // 수신자번호 (회원님의 핸드폰번호)
$send_number = preg_replace("/[^0-9]/", "", $default['de_admin_company_tel']); // 발신자번호
if ($w == "" && $default['de_sms_use1'] && $receive_number)
{
if ($config['cf_sms_use'] == 'icode')
{
if($config['cf_sms_type'] == 'LMS') {
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
// SMS 모듈 클래스 생성
if($port_setting !== false) {
$SMS = new LMS;
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
$strDest = array();
$strDest[] = $receive_number;
$strCallBack = $send_number;
$strCaller = iconv_euckr(trim($default['de_admin_company_name']));
$strSubject = '';
$strURL = '';
$strData = iconv_euckr($sms_contents);
$strDate = '';
$nCount = count($strDest);
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
} else {
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($receive_number, $send_number, $config['cf_icode_id'], iconv_euckr(stripslashes($sms_contents)), "");
$SMS->Send();
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
}
}
}
//----------------------------------------------------------
// SMS 문자전송 끝
//----------------------------------------------------------;
@@ -0,0 +1,44 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 회원가입결과 시작 { register-->
<div id="pop_result" class="popup_wrap">
<p class="reg_result_p">
<i class="fa fa-gift" aria-hidden="true"></i><br>
<strong><?php echo get_text($mb['mb_name']); ?></strong>님의 회원가입을 진심으로 축하합니다.
</p>
<?php if (is_use_email_certify()) { ?>
<p class="result_txt">
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.<br>
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
</p>
<div id="result_email">
<span>아이디</span>
<strong><?php echo $mb['mb_id'] ?></strong><br>
<span>이메일 주소</span>
<strong><?php echo $mb['mb_email'] ?></strong>
</div>
<p>
이메일 주소를 잘못 입력하셨다면, 사이트 관리자에게 문의해주시기 바랍니다.
</p>
<?php } ?>
<p class="result_txt">
회원님의 비밀번호는 아무도 알 수 없는 암호화 코드로 저장되므로 안심하셔도 좋습니다.<br>
아이디, 비밀번호 분실시에는 회원가입시 입력하신 이메일 주소를 이용하여 찾을 수 있습니다.
</p>
<p class="result_txt">
회원 탈퇴는 언제든지 가능하며 일정기간이 지난 후, 회원님의 정보는 삭제하고 있습니다.<br>
감사합니다.
</p>
<!-- } 회원가입결과 끝 -->
<div class="btn_confirm_reg">
<a href="<?php echo G5_URL ?>/" class="reg_btn_submit">메인으로</a>
</div>
</div>
+29
View File
@@ -0,0 +1,29 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 스크랩 목록 시작 { -->
<div id="scrap" class="new_win">
<h1 id="win_title"><?php echo $g5['title'] ?></h1>
<ul>
<?php for ($i=0; $i<count($list); $i++) { ?>
<li>
<a href="<?php echo $list[$i]['opener_href_wr_id'] ?>" class="scrap_tit" target="_blank" onclick="opener.document.location.href='<?php echo $list[$i]['opener_href_wr_id'] ?>'; return false;"><?php echo $list[$i]['subject'] ?></a>
<a href="<?php echo $list[$i]['opener_href'] ?>" class="scrap_cate" target="_blank" onclick="opener.document.location.href='<?php echo $list[$i]['opener_href'] ?>'; return false;"><?php echo $list[$i]['bo_subject'] ?></a>
<span class="scrap_datetime"><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $list[$i]['ms_datetime'] ?></span>
<a href="<?php echo $list[$i]['del_href']; ?>" onclick="del(this.href); return false;" class="scrap_del"><i class="fa fa-trash-o" aria-hidden="true"></i><span class="sound_only">삭제</span></a>
</li>
<?php } ?>
<?php if ($i == 0) echo "<li class=\"empty_li\">자료가 없습니다.</li>"; ?>
</ul>
<?php echo get_paging($config['cf_write_pages'], $page, $total_page, "?$qstr&amp;page="); ?>
<div class="win_btn">
<button type="button" onclick="window.close();" class="btn_close">창닫기</button>
</div>
</div>
<!-- } 스크랩 목록 끝 -->
@@ -0,0 +1,34 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
?>
<!-- 스크랩 시작 { -->
<div id="scrap_do" class="new_win">
<h1 id="win_title">스크랩하기</h1>
<form name="f_scrap_popin" action="./scrap_popin_update.php" method="post">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
<div class="new_win_con">
<h2 class="sound_only">제목 확인 및 댓글 쓰기</h2>
<ul>
<li class="scrap_tit">
<span class="sound_only">제목</span>
<?php echo get_text(cut_str($write['wr_subject'], 255)) ?>
</li>
<li>
<label for="wr_content">댓글작성</label>
<textarea name="wr_content" id="wr_content"></textarea>
</li>
</ul>
</div>
<p class="win_desc">스크랩을 하시면서 감사 혹은 격려의 댓글을 남기실 수 있습니다.</p>
<div class="win_btn">
<button type="submit" class="btn_submit">스크랩 확인</button>
</div>
</form>
</div>
<!-- } 스크랩 끝 -->
+104
View File
@@ -0,0 +1,104 @@
<?php
?>
<div class="popup_sitemap" id="sitemap">
<!-- Header -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- sitemap -->
<!-- <div class="sitemap">
<div class="menu1">
<a href="<?php echo G5_BBS_URL ?>/value.php">
<span></span>
</a>
</div>
<div class="bg_line1"></div>
<div class="menu2">
<a href="<?php echo G5_BBS_URL ?>/primary.php">
<span>주요기능</span>
<div class="sub_text">
<em>효율적인</em> 교통 네트워크 관리<br>
<em>강력한</em> 데이터 처리 분석<br>
<em>정밀한</em> 대중교통 분석
</div>
</a>
</div>
<div class="bg_line2"></div>
<div class="menu3">
<a href="<?php echo G5_BBS_URL ?>/road.php">
<span>공로분석</span>
<div class="sub_text">
<em>안정적, 신뢰성, 완벽한</em><br>
도로교통시스템의 수요와 성능평가 및 분석
</div>
</a>
</div>
<div class="bg_line3"></div>
<div class="menu4">
<a href="<?php echo G5_BBS_URL ?>/public.php">
<span>대중교통분석</span>
<div class="sub_text">
모든 대중교통의 <em>경로 탐색</em>
</div>
</a>
</div>
</div> -->
<div class="sitemap">
<div class="menu1">
<a href="<?php echo G5_BBS_URL ?>/value.php">
<span>EG-BIM 소개</span>
<div class="sub_text">
<em>도면편집과 관리</em>에서<br>
<em>3차원 BIM모델 정보 확인</em>까지<br>
</div>
</a>
</div>
<div class="bg_line1"></div>
<div class="menu2">
<a href="<?php echo G5_BBS_URL ?>/interface.php">
<span>인터페이스</span>
<div class="sub_text">
<em>메뉴를 단순화</em>하고,<br>
<em>듀얼모니터</em>기능을 활용한<br>
<em>새로운 작업공간</em>을 제공
</div>
</a>
</div>
<div class="bg_line2"></div>
<div class="menu3">
<a href="<?php echo G5_BBS_URL ?>/primary.php">
<span>주요기능</span>
<div class="sub_text">
수많은 명령어들을 <em>기능별로<br>
그룹화</em>하여 찾기 쉽게 제공
</div>
</a>
</div>
<div class="bg_line3"></div>
<div class="menu4">
<a href="<?php echo G5_BBS_URL ?>/floorplan.php">
<span>도면관리</span>
<div class="sub_text">
도면을 열지 않고도 <br class="brk"><em>대량의 도면 관리</em>
</div>
</a>
</div>
<div class="bg_line2"></div>
<div class="menu5">
<a href="<?php echo G5_BBS_URL ?>/forbim.php">
<span>for BIM</span>
<div class="sub_text">
설계도면과 <br class="brk">3차원 BIM모델을<br>
<em>동시에 확인</em>
</div>
</a>
</div>
</div>
</div>
@@ -0,0 +1,130 @@
<?php
?>
<div class="popup_sitemap" id="sitemap">
<!-- Header -->
<header>
<h1><a href="<?php echo G5_URL ?>/index.php"></a></h1>
<div class="menu_my">
<img src="../img/ico_my.svg" alt="">
<ul class="menu_my_list" style="display: none;">
<li id="my_join2" class="my_join2"><a href="javascript:mypage01();">마이페이지</a></li>
<li id="my_login2" class="my_login2"><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<li id="my_join" class="my_join"><a href="javascript:agreement();">회원가입</a></li>
<li id="my_login" class="my_login"><a href="javascript:login();">로그인</a></li>
</ul>
</div>
<div class="menu_ham btn_map_close"><a>
<div></div>
<div></div>
<div></div>
</a></div>
</header>
<!-- //Header -->
<div class="floating_menu">
<ul>
<li class="floating_faq"><a href="<?php echo G5_BBS_URL ?>/faq.php">
<i></i>
<span>FAQ</span>
</a></li>
<li class="floating_buy"><a href="<?php echo G5_BBS_URL ?>/buy.php">
<i></i>
<span>구매하기</span>
</a></li>
</ul>
</div>
<!-- sitemap -->
<!-- <div class="sitemap">
<div class="menu1">
<a href="<?php echo G5_BBS_URL ?>/value.php">
<span></span>
</a>
</div>
<div class="bg_line1"></div>
<div class="menu2">
<a href="<?php echo G5_BBS_URL ?>/primary.php">
<span>주요기능</span>
<div class="sub_text">
<em>효율적인</em> 교통 네트워크 관리<br>
<em>강력한</em> 데이터 처리 분석<br>
<em>정밀한</em> 대중교통 분석
</div>
</a>
</div>
<div class="bg_line2"></div>
<div class="menu3">
<a href="<?php echo G5_BBS_URL ?>/road.php">
<span>공로분석</span>
<div class="sub_text">
<em>안정적, 신뢰성, 완벽한</em><br>
도로교통시스템의 수요와 성능평가 및 분석
</div>
</a>
</div>
<div class="bg_line3"></div>
<div class="menu4">
<a href="<?php echo G5_BBS_URL ?>/public.php">
<span>대중교통분석</span>
<div class="sub_text">
모든 대중교통의 <em>경로 탐색</em>
</div>
</a>
</div>
</div> -->
<div class="sitemap">
<div class="menu1">
<a href="<?php echo G5_BBS_URL ?>/value.php">
<span>EG-BIM 소개</span>
<div class="sub_text">
<em>도면편집과 관리</em>에서<br>
<em>3차원 BIM모델 정보 확인</em>까지<br>
</div>
</a>
</div>
<div class="bg_line1"></div>
<div class="menu2">
<a href="<?php echo G5_BBS_URL ?>/interface.php">
<span>인터페이스</span>
<div class="sub_text">
<em>메뉴를 단순화</em>하고,<br>
<em>듀얼모니터</em>기능을 활용한<br>
<em>새로운 작업공간</em>을 제공
</div>
</a>
</div>
<div class="bg_line2"></div>
<div class="menu3">
<a href="<?php echo G5_BBS_URL ?>/primary.php">
<span>주요기능</span>
<div class="sub_text">
수많은 명령어들을 <em>기능별로<br>
그룹화</em>하여 찾기 쉽게 제공
</div>
</a>
</div>
<div class="bg_line3"></div>
<div class="menu4">
<a href="<?php echo G5_BBS_URL ?>/floorplan.php">
<span>도면관리</span>
<div class="sub_text">
도면을 열지 않고도 <em>대량의 도면 관리</em>
</div>
</a>
</div>
<div class="bg_line2"></div>
<div class="menu5">
<a href="<?php echo G5_BBS_URL ?>/forbim.php">
<span>for BIM</span>
<div class="sub_text">
설계도면과 3차원 BIM모델을<br>
<em>동시에 확인</em>
</div>
</a>
</div>
</div>
</div>
+335
View File
@@ -0,0 +1,335 @@
@charset "utf-8";
/* ### 기본 스타일 커스터마이징 시작 ### */
/* 기본박스 */
.mbskin {position:relative;margin:100px auto 0;width:360px;text-align:center}
.mbskin:after {right:10px;left:auto;
-webkit-transform:skew(8deg) rotate(3deg);
-moz-transform:skew(8deg) rotate(3deg);
-ms-transform:skew(8deg) rotate(3deg);
-o-transform:skew(8deg) rotate(3deg);
transform:skew(8deg) rotate(3deg)}
.mbskin .mbskin_box{border:1px solid #dde7e9;background:#fff}
.mbskin .frm_input {width:100%}
.mbskin .btn_submit {width:100%;margin:10px 0 0;height:45px;font-weight:bold;font-size:1.25em}
.mbskin h1 {margin:60px 0 30px;font-size:2em}
.mbskin .tbl_frm01 th {width:85px}
/* ### 기본 스타일 커스터마이징 끝 ### */
/* 회원가입 약관 */
.register {margin:0 auto}
.register:after {display:block;visibility:hidden;clear:both;content:""}
.register .btn_confirm .btn_submit,
.register .btn_confirm .btn_close {float:left;height:50px !important;width:49.5%;font-weight:bold;font-size:1.083em}
.register .btn_confirm {text-align:left}
.register .btn_confirm .btn_submit {margin-left:1%}
#fregister p {position:relative;text-align:center;color:#fff;height:50px;line-height:50px;font-size:1.1em;background:#f2838f;margin:0 0 10px;border-radius:5px;font-weight:bold}
#fregister p:before {content:"";position:absolute;top:0;left:0;width:5px;height:50px;border-radius:5px 0 0 5px;background:#da4453}
#fregister p i {font-size:1.2em;vertical-align:middle}
#fregister section {margin:10px auto 15px;border:1px solid #dde7e9;position:relative;border-radius:3px}
#fregister_chkall {position:relative;text-align:center;background:#f5f7fa;line-height:50px;border:1px solid #e5e9f0;border-radius:3px;margin-bottom:15px}
#fregister h2 {text-align:left;padding:20px;border-bottom:1px solid #dde7e9;font-size:1.2em}
#fregister textarea {display:block;padding:20px;width:100%;height:150px;background:#fff;border:0;line-height:1.6em}
#fregister_private {position:relative}
#fregister_private div {padding:20px;background:#fff}
#fregister_private table {width:100%;border-collapse:collapse;font-size:1em;}
#fregister_private table caption {position:absolute;font-size:0;line-height:0;overflow:hidden}
#fregister_private table th {background:#f7f7f9;width:33.33%;color:#000;padding:10px;border:1px solid #d8dbdf}
#fregister_private table td {border:1px solid #e7e9ec;padding:10px;border-top:0}
.fregister_agree {position:absolute;top:0;right:0}
.fregister_agree input[type="checkbox"] + label {color:#676e70}
.fregister_agree input[type="checkbox"] + label:hover {color:#2172f8}
.fregister_agree input[type="checkbox"] + label span {position:absolute;top:20px;right:15px;width:17px;height:17px;display:block;background:#fff;border:1px solid #999;border-radius:3px}
.fregister_agree input[type="checkbox"]:checked + label {color:#000}
.fregister_agree input[type="checkbox"]:checked + label span {background:url('./img/chk.png') no-repeat 50% 50% #3a8afd;border-color:#1471f6;border-radius:3px}
.fregister_agree.chk_all input[type="checkbox"] + label span {top:18px}
.chk_li {padding-left:20px}
#sns_register .login-sns,
#sns_register h2 {border:0 !important}
/* 회원가입 입력 */
#register_form {background:#fff;margin-bottom:20px}
#register_form h2 {padding:20px;border-bottom:1px solid #dde7e9}
.register_form_inner {background:#f7f7f7;border:1px solid #dde7e9;border-radius:3px}
.register_form_inner ul {padding:20px}
.register_form_inner label {display:block;margin-bottom:10px;line-height:24px}
.register_form_inner label.inline {display:inline}
#fregisterform .cert_desc {color:#3a8afd;}
#fregisterform .cert_req {margin-left:5px;line-height:35px;}
#fregisterform #msg_certify {margin:5px 0;padding:5px;border:1px solid #dbecff;background:#eaf4ff;text-align:center}
#fregisterform .frm_address {margin:5px 0 0}
#fregisterform #mb_addr3 {display:inline-block;margin:5px 0 0;vertical-align:middle}
#fregisterform #mb_addr_jibeon {display:block;margin:5px 0 0}
#fregisterform .btn_confirm {text-align:center}
#fregisterform .form_01 div {margin:0 0 20px}
#fregisterform .captcha {display:block;margin:5px 0 0}
#fregisterform .reg_mb_img_file img {max-width:100%;height:auto}
#reg_mb_icon, #reg_mb_img {float:right}
/* 회원가입 완료 */
#reg_result {padding:40px 30px;text-align:center;background:#edf3fc;border:1px solid #d6e2f4;border-radius:5px}
#reg_result h2 {font-size:2em;margin:0 0 20px}
#reg_result h2 strong {color:#ed6478}
#reg_result #result_email {margin:20px 0;padding:10px 50px;border-top:1px solid #e9e9e9;border-bottom:1px solid #dde4e9;background:#fff;line-height:2em}
#reg_result #result_email span {display:inline-block;width:150px}
#reg_result #result_email strong {color:#e8180c;font-size:1.2em}
#reg_result p {line-height:1.8em}
#reg_result .result_txt {text-align:left}
#reg_result .btn_confirm {margin:50px 0}
#reg_result i {font-size:3em}
#reg_result .reg_result_p {font-size:1.25em;margin:0 0 10px;color:#3684fa}
.btn_confirm_reg {margin:20px 0;text-align:center}
.reg_btn_submit {display:inline-block;background:#3a8afd;color:#fff;text-align:center;border-radius:3px;width:280px;height:57px;line-height:57px;font-size:1.2em;margin:0 auto;font-weight:bold}
.mb_log_cate h2 {width:50%;float:left;padding:20px 0;text-align:center}
.mb_log_cate .join {width:50%;float:left;padding:20px 0;text-align:center;background:#f7f7f7;color:#6e6e6e}
.mb_log_cate:after {display:block;visibility:hidden;clear:both;content:""}
.tooltip_icon {display:inline-block;vertical-align:baseline;color:#b3b5b8;border:0;font-size:1.4em;background:transparent;cursor:pointer}
.tooltip_icon:hover {color:#448bf5}
.tooltip {position:relative;width:auto;color:#fff;background:#000;padding:10px;font-size:small;line-height:18px;display:none;position:absolute;z-index:9;font-weight:normal;margin-left:15px;margin-top:10px}
.tooltip:before {content:"";position:absolute;top:0;left:-10px;width:0;height:0;border-style:solid;border-top:0px solid transparent;border-bottom:10px solid transparent;border-left:0;border-right:10px solid #000}
/* 아이디/비밀번호 찾기 */
#find_info h3 {display:none;margin-bottom:30px;text-align:center;font-size:1.1em;}
#find_info .new_win_con {background:#f7f7f7;}
#find_info.cert .new_win_con {width:460px;float:left;}
#find_info.cert .new_win_con:nth-child(2) {margin-left:10px;}
#find_info.cert h3 {display:block;}
#find_info #mb_hp_label {display:inline-block;margin-left:10px}
#find_info p {line-height:1.5em}
#find_info #mb_email {margin:10px 0}
#find_info .find_btn .btn_submit {width:30%;word-break:keep-all;}
/* 비밀번호 재설정 */
#pw_reset #info_fs {margin-bottom: 10px}
#pw_reset .frm_input {margin:10px 0 0}
/* 기존 회원 본인인증 */
#member_cert_refresh p {position:relative;text-align:center;color:#fff;height:50px;line-height:50px;font-size:1.1em;background:#f2838f;margin:0 0 10px;border-radius:5px;font-weight:bold}
#member_cert_refresh p:before {content:"";position:absolute;top:0;left:0;width:5px;height:50px;border-radius:5px 0 0 5px;background:#da4453}
#member_cert_refresh p i {font-size:1.2em;vertical-align:middle}
#member_cert_refresh section {margin:10px auto 15px;border:1px solid #dde7e9;position:relative;border-radius:3px}
#member_cert_refresh_chkall {position:relative;text-align:center;background:#f5f7fa;line-height:50px;border:1px solid #e5e9f0;border-radius:3px;margin-bottom:15px}
#member_cert_refresh h2 {text-align:left;padding:20px;border-bottom:1px solid #dde7e9;font-size:1.2em}
#member_cert_refresh textarea {display:block;padding:20px;width:100%;height:150px;background:#fff;border:0;line-height:1.6em}
#member_cert_refresh_private {position:relative}
#member_cert_refresh_private div {padding:20px;background:#fff}
#member_cert_refresh_private table {width:100%;border-collapse:collapse;font-size:1em;}
#member_cert_refresh_private table caption {position:absolute;font-size:0;line-height:0;overflow:hidden}
#member_cert_refresh_private table th {background:#f7f7f9;width:33.33%;color:#000;padding:10px;border:1px solid #d8dbdf;font-weight:bold;}
#member_cert_refresh_private table td {border:1px solid #e7e9ec;padding:10px;border-top:0}
.member_cert_refresh_agree {position:absolute;top:0;right:0}
.member_cert_refresh_agree input[type="checkbox"] + label {color:#676e70}
.member_cert_refresh_agree input[type="checkbox"] + label:hover {color:#2172f8}
.member_cert_refresh_agree input[type="checkbox"] + label span {position:absolute;top:20px;right:15px;width:17px;height:17px;display:block;background:#fff;border:1px solid #999;border-radius:3px}
.member_cert_refresh_agree input[type="checkbox"]:checked + label {color:#000}
.member_cert_refresh_agree input[type="checkbox"]:checked + label span {background:url('./img/chk.png') no-repeat 50% 50% #3a8afd;border-color:#1471f6;border-radius:3px}
.member_cert_refresh_agree.chk_all input[type="checkbox"] + label span {top:18px}
#member_cert_refresh #find_info {margin:50px 0}
#member_cert_refresh #find_info .find_btn {padding:10px 20px;background:#fff}
#member_cert_refresh #find_info .find_btn > div {margin:10px 0}
/* 로그인 */
#mb_login {}
#mb_login h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#login_fs {padding:35px}
#mb_login #login_fs .frm_input {margin:0 0 10px}
#mb_login #login_fs .btn_submit {margin:0 0 15px}
#login_info {}
#login_info:after {display:block;visibility:hidden;clear:both;content:""}
#login_info .login_if_auto {float:left}
#login_info .login_if_auto label {vertical-align:baseline;padding-left:5px}
#login_info .login_if_lpl {float:right}
#login_password_lost {display:inline-block;border:1px solid #d5d9dd;color:#3a8afd;border-radius:2px;padding:2px 5px;line-height:20px}
#mb_login_notmb {margin:30px auto;padding:20px 30px}
#mb_login_notmb h2 {font-size:1.25em;margin:20px 0 10px}
#guest_privacy {border:1px solid #ccc;text-align:left;line-height:1.6em;color:#666;background:#fafafa;padding:10px;height:150px;margin:10px 0;overflow-y:auto}
#mb_login_notmb .btn_submit {display:block;text-align:center;line-height:45px}
#mb_login_od_wr {margin:30px auto;padding:20px 30px}
#mb_login_od_wr h2 {font-size:1.25em;margin:20px 0 10px}
#mb_login_od_wr .frm_input {margin:10px 0 0}
#mb_login_od_wr p {background:#f3f3f3;margin:20px 0 0;padding:15px 20px;line-height:1.5em}
#mb_login #sns_login {margin-top:0;border-color:#edeaea;padding:25px}
#mb_login #sns_login:after {display:block;visibility:hidden;clear:both;content:""}
#mb_login #sns_login h3 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#mb_login #sns_login .sns-wrap {margin:0 !important}
#mb_login #sns_login .sns-icon {width:49% !important;float:left !important}
#mb_login #sns_login .sns-icon:nth-child(odd) {margin-right:2%}
#mb_login #sns_login .txt {font-size:0.95em;padding-left:5px !important;border-left:0 !important}
/* 쪽지 */
.memo_list {border-top:1px solid #ececec}
.memo_list li {border-bottom:1px solid #ececec;background:#fff;padding:10px 15px;list-style:none;position:relative}
.memo_list li:after {display:block;visibility:hidden;clear:both;content:""}
.memo_list li.read {background:#f6f6f6}
.memo_list li.empty_li {text-align:center;padding:20px 0;color:#666}
.memo_list .memo_li {float:left}
.memo_list .profile_big_img {position:relative;margin-right:15px}
.memo_list .profile_big_img img {border-radius:50%;width:52px;height:52px}
.memo_list .memo_li.memo_name {padding-top:5px;float:none}
.memo_list .memo_preview a{display:block;margin-right:30px;padding-top:10px;font-weight:normal !important;font-size:1.2em}
.memo_list .memo_preview a:hover{text-decoration:underline}
.memo_list .memo_name a,
.memo_list .memo_name .sv_wrap {font-weight:bold}
.memo_list .no_read {position:absolute;bottom:0;right:0;display:inline-block;background:#3a8afd;border:1px solid #e1edff;text-indent:-9999px;border-radius:10px;width:10px;height:10px;box-shadow:0 0 10px 3px #9ec3f9}
.memo_list .no_read {animation:blinker 1s linear infinite}
@keyframes blinker {
50% {opacity:0}
}
#memo_list h1#win_title {padding:10px 10px 10px 20px}
#memo_list .memo_datetime {font-size:0.92em;color:#888d92}
#memo_list .memo_del {position:absolute;right:15px;top:15px;padding:10px;color:#c7c9cb;font-size:1.4em}
#memo_list .memo_cnt {margin-top:5px;font-weight:normal;display:inline-block;font-size:1.2em}
#memo_list .pg_wrap {margin-top:10px;width:100%;float:inherit;text-align:center}
#memo_view_contents {margin-bottom:20px;border-top:1px solid #ececec;border-bottom:1px solid #ececec}
#memo_view_contents h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#memo_view_ul {margin:0;list-style:none;background:#f6f6f6}
#memo_view_ul:after {display:block;visibility:hidden;clear:both;content:""}
.memo_view_li {position:relative;/*padding:10px;float:left;width:50%*/}
.memo_view_li .profile_img img {display:none}
.memo_from {position:relative;background:#fff;border-bottom:1px solid #ececec;padding:15px 20px}
.memo_from li {float:left}
.memo_from li.memo_profile img {width:40px;height:40px;border-radius:50%}
.memo_from li:first-child {margin-right:10px}
.memo_from li.memo_view_nick {width:80%}
.memo_from li.memo_view_nick a {font-weight:bold !important}
.memo_from li.memo_view_date {display:block;color:#555;line-height:24px}
.memo_from li.memo_op_btn {position:absolute}
.memo_from li.list_btn {right:53px;}
.memo_from li.del_btn {right:15px;}
.memo_from:after {display:block;visibility:hidden;clear:both;content:""}
.memo_btn {width:100%}
.memo_btn a {display:inline-block;width:50%;font-size:1em;color:#888d92;padding:20px}
.memo_btn a.btn_right {float:right;text-align:right}
.memo_btn a i {font-size:1.2em;color:#acabab;vertical-align:bottom}
#memo_view p {padding:10px;min-height:150px;height:auto !important;height:150px;background:#fff;line-height:1.8em}
#memo_view textarea {height:100px}
#memo_write .form_01 {padding:20px;border-top:1px solid #ececec}
.reply_btn {display:inline-block;width:150px;height:45px;line-height:50px;padding:0 10px;font-weight:bold;background:#3a8afd;color:#fff;border-radius:3px;vertical-align:bottom;margin-right:5px}
#memo_write .reply_btn {font-size:1em}
/* 스크랩 */
#scrap li:after {display:block;visibility:hidden;clear:both;content:""}
#scrap li {position:relative;padding:20px;border-bottom:1px solid #ececec}
#scrap .scrap_tit {font-weight:bold;display:block;font-size:1.083em;margin-bottom:10px;line-height:1.3em}
#scrap .scrap_cate {float:left;display:block;color:#ac92ec;background:#eeeaf8;padding:3px;border-radius:3px;font-size:0.92em;margin-right:10px}
#scrap .scrap_datetime {color:#777;line-height:18px}
#scrap .scrap_del {position:absolute;top:15px;right:15px;font-size:18px;color:#c7c9cb}
#scrap .scrap_del:hover {color:#3a8afd}
#scrap_do .new_win_con {padding:0 20px}
#scrap_do textarea {width:100%;height:100px}
#scrap_do .scrap_tit {margin-bottom:10px;background:#f3f3f3;padding:10px 15px;font-size:1.2em;font-weight:bold}
#scrap_do label {display:block;margin:0 0 5px;font-size:1em}
#scrap_do .win_btn:after {display:block;visibility:hidden;clear:both;content:""}
#scrap .win_btn, #scrap_do .win_btn {margin:20px 0;text-align:center}
#scrap_do .win_btn .btn_submit {float:inherit}
#scrap_do .win_desc {margin:0 20px}
/*포인트*/
#point {text-align:center}
#point h1 {text-align:left}
#point .point_all {margin:20px 20px 15px;border-radius:5px;background:#edf3fc;border:1px solid #d6e2f4;color:#485172;font-size:1.083em}
#point .point_all:after {display:block;visibility:hidden;clear:both;content:""}
#point .point_all li {float:left;width:50%;padding:20px;text-align:left}
#point .point_all li span {float:right;color:#485172;font-weight:bold}
#point .point_all li:last-child {border-left:1px solid #d6e2f4}
#point .point_all .full_li {width:100%;border-bottom:1px solid #d6e2f4;text-align:left}
#point .point_all .full_li span {color:#000;font-weight:bold;font-size:1.2em}
#point .point_status{background:#737373;border:0;color:#fff;font-weight:bold;font-size:1.083em;text-align:left}
#point .point_status:after {display:block;visibility:hidden;clear:both;content:""}
#point .point_status span{margin-left:10px;float:right}
.point_list {}
.point_list li:first-child {border-top:1px solid #ececec}
.point_list li {border-bottom:1px solid #ececec;background:#fff;padding:15px;list-style:none;position:relative}
.point_list li:after {display:block;visibility:hidden;clear:both;content:""}
.point_list .point_use {background:#f6f6f6}
.point_list .point_use .point_num {font-size:1.25em;color:#ff4f76;font-weight:bold;float:right}
.point_list .point_num {font-size:1.25em;color:#3a8afd;font-weight:bold;position:absolute;right:15px;top:25px}
.point_list .point_top {line-height:15px;margin:0 0 5px}
.point_list .point_top:after {display:block;visibility:hidden;clear:both;content:""}
.point_list .point_tit {font-weight:bold;float:left;font-size:1.083em;display:block}
.point_list .point_date1 {float:left;color:#888d92}
.point_list .point_date {float:left;color:#888d92}
.point_list .txt_expired {color:red;margin-left:5px}
#point .pg_wrap {width:100%;float:inherit;text-align:center}
#point .btn_close {margin:20px auto}
/* 회원 비밀번호 확인 */
#mb_confirm {}
#mb_confirm h1 {margin:60px 0 30px;font-size:2em}
#mb_confirm p {padding:0 20px 40px;border-bottom:1px solid #e9e9e9;font-size:1.083em;line-height:1.4em;color:#656565}
#mb_confirm p strong {display:block;color:#3ca1ff;font-size:1.167em;margin:0 0 5px}
#mb_confirm fieldset {padding:50px;text-align:left}
#mb_confirm fieldset .frm_input {background-color:#fff !important}
#mb_confirm label {letter-spacing:-0.1em}
#mb_confirm_id {display:block;margin:5px 0 10px;font-weight:bold}
#mb_confirm .confirm_id {font-size:0.92em;color:#666}
/* 비밀글 비밀번호 확인 */
#pw_confirm h1 {margin:60px 20px 30px;font-size:2em}
#pw_confirm p {padding:0 20px 40px;border-bottom:1px solid #e9e9e9;font-size:1.083em;line-height:1.4em;color:#656565}
#pw_confirm p strong {display:block;color:#3ca1ff;font-size:1.167em;margin:0 0 5px}
#pw_confirm fieldset {padding:50px;text-align:center}
#pw_confirm fieldset .frm_input {background-color:#fff !important}
#pw_confirm label {letter-spacing:-0.1em}
#pw_confirm_id {display:inline-block;margin-right:20px;font-weight:bold}
#mb_confirm_id {}
/* 폼메일 */
#formmail textarea {height:100px}
#formmail .formmail_flie {position:relative}
#formmail .formmail_flie .file_wr {border:1px solid #ccc;background:#fff;color:#000;vertical-align:middle;border-radius:3px;padding:5px;height:40px;margin:0}
#formmail .lb_icon {position:absolute;top:1px;left:1px;border-radius:3px 0 0 3px;height:38px;line-height:38px;width:40px;background:#fff;text-align:center;color:#b2b2b2}
#formmail .frm_file {padding-left:50px}
#formmail .frm_info {color:#3497d9;font-size:0.92em}
.chk_box {position:relative}
.chk_box input[type="radio"] {position:absolute;top:0;left:0;width:0;height:0;opacity:0;outline:0;z-index:-1;overflow:hidden}
.chk_box input[type="radio"] + label {position:relative;padding-left:23px;display:inline-block;color:#676e70}
.chk_box input[type="radio"] + label span {position:absolute;top:0;left:0;width:15px;height:15px;display:block;background:#f7f8f9;border:1px solid #cdd6df;border-radius:50%}
.chk_box input[type="radio"]:checked + label {color:#3a8afd}
.chk_box input[type="radio"]:checked + label span {border-color:#3a8afd}
.chk_box input[type="radio"]:checked + label span:before {width:7px;height:7px;background:#3a8afd;content:'';position:absolute;top:3px;left:3px;border-radius:50%}
.chk_box input[type="checkbox"] + label {position:relative;color:#676e70}
.chk_box input[type="checkbox"] + label:hover {color:#2172f8}
.chk_box input[type="checkbox"] + label span {float:left;width:15px;height:15px;display:block;background:#fff;border:1px solid #d0d4df;border-radius:3px}
.chk_box input[type="checkbox"]:checked + label {color:#000}
.chk_box input[type="checkbox"]:checked + label span {background:url(./img/chk.png) no-repeat 50% 50% #3a8afd;border-color:#1471f6;border-radius:3px}
.selec_chk {position:absolute;top:0;left:0;width:0;height:0;opacity:0;outline:0;z-index:-1;overflow:hidden}
/* 자기소개 */
#profile h1 a {}
#profile table {margin-bottom:0}
#profile table th {text-align:left;padding:10px;width:100px}
#profile section {color:#6794d3;background:#fff;padding:10px;border:1px solid #eee;margin:10px 0}
#profile h2 {margin:0 0 5px}
#profile .profile_name {text-align:center;font-weight:bold}
#profile .my_profile_img {display:block;margin:20px 0 5px}
#profile .my_profile_img img {border-radius:50%}
#profile .profile_img img {border-radius:50%}
#profile .profile_name .sv_wrap {font-weight:bold;text-align:left}
+7
View File
@@ -0,0 +1,7 @@
<?php
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'status' => 'ok',
'post' => $_POST,
'method' => $_SERVER['REQUEST_METHOD']
]);
+552
View File
@@ -0,0 +1,552 @@
<?php include_once __DIR__ . '/asset_urls.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-STZ2R5Q7HG"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-STZ2R5Q7HG');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>EG-BIM 소개</title>
<link rel="stylesheet" href="../css/reset.css"/>
<link rel="stylesheet" href="../css/font.css"/>
<link rel="stylesheet" href="../css/style.css"/>
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
<script type="text/javascript" src="../js/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript" src="../js/popup.js"></script>
<script type="text/javascript" src="../js/value.js"></script>
</head>
<body>
<div class="wrapper">
<input id="hid_mb_id" type="hidden" value="<?echo $_SESSION['session_id'];?>"></input>
<!-- HEADER -->
<?php include_once($member_skin_path.'/main_header.skin.php'); ?>
<!-- //Header -->
<!-- 모든 팝업페이지 경로 -->
<?php
include_once($member_skin_path.'/login.skin.php');
include_once($member_skin_path.'/mypage01.skin.php');
include_once($member_skin_path.'/register.skin.php');
include_once($member_skin_path.'/register_form.skin.php');
include_once($member_skin_path.'/mypage02.skin.php');
include_once($member_skin_path.'/mypage03.skin.php');
include_once($member_skin_path.'/sitemap.skin.php');
include_once($member_skin_path.'/privacy.skin.php');
include_once($member_skin_path.'/password_lost.skin.php');
?>
<!-- 모든 팝업페이지 경로 -->
<!-- 컨텐츠 시작 -->
<div class="container value">
<section class="intro js__dark">
<div class="top">
<h2 data-aos="fade-down" data-aos-duration="1000">EG-BIM 소개</h2>
</div>
<div class="keyword">
<i class="egbim_obj w"></i>
<span>도면편집과 성과품 관리에서부터<br class="brk"> 3차원 BIM모델 정보 확인까지</span>
</div>
<div class="summarys_wrap">
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_element_wrap">
<div class="dia_element">
<div class="dia_tit">
<span>대량 성과품<br class="brk"> 관리</span>
</div>
<div class="dia_line"></div>
<ul class="dia_li">
<li class="dia_li_tit">꾸러미</li>
<li>도면찾기/이력관리</li>
<li>도면정보 일괄 수정</li>
<li>여러도면 다중출력</li>
</ul>
</div>
<div class="dia_element">
<div class="dia_tit">
<span>도면<br>보기/수정</span>
</div>
<div class="dia_line"></div>
<ul class="dia_li">
<li class="dia_li_tit">그리미</li>
<li>UX 디자인</li>
<li>듀얼 모니터</li>
<li>다양한 편의 기능</li>
</ul>
</div>
<div class="dia_element">
<div class="dia_tit">
<span>3D BIM<br>모델 보기</span>
</div>
<div class="dia_line"></div>
<ul class="dia_li">
<li class="dia_li_tit">3D Viewer</li>
<li>3D BIM 모델 형상<br> 및 속성 정보 보기</li>
<li>2D 설계도면 -<br class="brk"> 3D BIM 모델<br>부재 연동</li>
</ul>
</div>
</div>
<div class="dia_appendix">
<div class="app_bg">
<div class="app_etc">도면정보 연동</div>
</div>
<div class="app_bg">
<div class="app_etc">BIM모델정보 연동</div>
</div>
</div>
<div class="dia_circles_wrap">
<div class="circle_dash"></div>
<div class="circle_belt"></div>
<div class="circle_core">
<img src="<?php echo egbim_img_url('egbim_logo.svg'); ?>" alt="">
</div>
<div class="circle_dots move">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
</div>
</div>
</section>
<div class="feature_bg"></div>
<section class="feature_intro full_screen">
<span class="grand_tit" data-aos="fade-down" data-aos-duration="1000"><font class="egbim k">eg-bim LogoK</font> 특징</span>
<p data-aos="fade-up" data-aos-duration="1000">EG-BIM은 차별화된 인터페이스와<br class="brk"> 다양한 기능으로<br> 디지털전환시대에 맞는<br class="brk"> <b>편리하고 효율적인 작업환경</b>을 제공합니다.</p>
<div class="line"></div>
<div class="dot"></div>
</section>
<section class="features js__ani full_screen">
<div class="f_wrap interface" data-aos="fade-up" data-aos-delay="100" data-aos-duration="1000">
<i></i>
<span class="sub_tit">차별화된<br> 인터페이스</span>
<p class="sub_text">사용자경험을 바탕으로 수많은 메뉴들을 꼭 필요한 기능으로 단순화하여 쉽게 구성하고, 듀얼모니터 기능으로 새로운 작업환경을 제공함으로써 사용자 편의성을 강화하였습니다.</p>
</div>
<div class="f_wrap tool" data-aos="fade-up" data-aos-delay="200" data-aos-duration="1000">
<i></i>
<span class="sub_tit">다양하고 편리한<br> 도면작업 Tool</span>
<p class="sub_text">명령어에서부터 인쇄까지 도면작업에 필요한 모든 기능을 사용하기 쉽게 제공함으로써 작업성을 향상시켜줍니다.</p>
</div>
<div class="f_wrap floorplan" data-aos="fade-up" data-aos-delay="300" data-aos-duration="1000">
<i></i>
<span class="sub_tit">효율적인<br> 대량의 도면관리</span>
<p class="sub_text">도면을 하나하나 열지 않고 도면탐색 및 도면정보의 수정, 인쇄등이 가능한 별도의 도면관리 Tool을 제공하여 도면찾기 및 일괄작업이 편리합니다.</p>
</div>
<div class="f_wrap bim" data-aos="fade-up" data-aos-delay="400" data-aos-duration="1000">
<i></i>
<span class="sub_tit">3차원<br> BIM모델 보기</span>
<p class="sub_text">디지털전화시대의 BIM설계 환경에 맞게 도면과 3차원 BIM모델을 동시에 확인할 수 있어 설계정보의 Cross Check가 가능합니다.</p>
</div>
<div class="lines">
<div class="v1"></div>
<div class="v2"></div>
<div class="v3"></div>
<div class="h"></div>
<div class="d1"></div>
<div class="d2"></div>
<div class="d3"></div>
</div>
</section>
<div class="system_bg"></div>
<section class="system">
<div class="system_tit">
<span>Keywords<br><em>for System</em></span>
</div>
<div class="diagram_wrap" data-aos="fade-up" data-aos-duration="1000">
<div class="dia_element">
<ul class="dia_text">
<li>듀얼모니터기능</li>
<li>블록라이브러리</li>
<li>명령어전체보기</li>
<li>블록관리창</li>
<li>스타일상세보기</li>
<li>인쇄-도곽인식기능</li>
<li>건설CALS</li>
</ul>
<div class="line"></div>
</div>
<div class="dia_element">
<ul class="dia_text">
<li>사용자 지정폴더</li>
<li>도면 미리보기</li>
<li>도면 정보연동</li>
<li>도면정보 일괄수정</li>
<li>여러도면 일괄출력</li>
</ul>
<div class="line"></div>
</div>
<div class="dia_element">
<ul class="dia_text">
<li>BIM모델 정보연동</li>
<li>도면-BIM모델<br class="brk"> 동시보기</li>
<li>BIM모델 상세보기</li>
<li>속성정보</li>
</ul>
<div class="line"></div>
</div>
<div class="dia_element">
<ul class="dia_text">
<li>사용자경험</li>
<li>차별화된 디자인</li>
</ul>
<div class="line"></div>
</div>
<div class="dia_circles_wrap">
<div class="circle_belt"></div>
<div class="circle_core">
<span><b>그리미</b><br>도면작업</span>
<span><b>꾸러미</b><br>도면관리</span>
<span><b>3D<br class="brk"> Viewer</b><br>BIM모델보기</span>
<span><em>UX디자인</em></span>
</div>
<div class="circle_dots move">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
<div class="circle_dots">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
</div>
</section>
</div>
<!-- //컨텐츠 시작 -->
<!-- FOOTER -->
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
<!-- //FOOTER -->
</div>
<script>
AOS.init();
const lenis = new Lenis()
lenis.on('scroll', (e) => {
// console.log(e)
})
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time)=>{
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)
</script>
</body>
<script>
$(function(){
// footer family site toggle
$('.family_btn').click(function(e){
e.stopPropagation();
$('.family_list, .family_btn').toggleClass('family_on');
});
$(document).click(function(e){
if(!$(e.target).closest('.family_wrap').length){
$('.family_list, .family_btn').removeClass('family_on');
}
});
});
// 회원 탈퇴
function member_leave() {
if (confirm("회원에서 탈퇴 하시겠습니까?"))
location.href = '<?php echo G5_BBS_URL ?>/member_leave.php';
}
// 회원 탈퇴
let x = document.cookie;
if(x.includes("tmp_1=John")){
deleteCookie("tmp_1");
$('#pop_mypage02').show();
}
function deleteCookie(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/bbs;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/faq;";
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/egbim/qa;";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//descope 로그인, 로그아웃 js
function updateHeaderMenu() {
var isLoggedIn = !!sessionStorage.getItem("sessionJwt");
// role 체크 예시 (로그인 시 저장해놓은 값)
var isAdmin = sessionStorage.getItem('userRole') === 'super';
if (isLoggedIn) {
$('.my_join2, .my_login2').show();
$('.my_join, .my_login').hide();
// 마이페이지/관리자 메뉴 동적 출력
if (isAdmin) {
$('#my_join2').html("<a href='http://eg-bim.com/egbim/adm/index.php' target='_blank'>관리페이지</a>");
} else {
$('#my_join2').html("<a href='javascript:mypage03();'>마이페이지</a>");
}
} else {
$('.my_join2, .my_login2').hide();
$('.my_join, .my_login').show();
$('#my_join2').html(""); // 혹시모를 내용 초기화
}
}
function descopeLogout() {
fetch('/egbim/skin/member/basic/descope_logout.php', {
method: 'POST',
credentials: 'include' // PHPSESSID 쿠키 전송
})
.then(res => {
if (!res.ok) throw new Error('서버 로그아웃 실패');
// 1) 로컬 저장소 정리
// sessionStorage.removeItem("refreshJwt");
// sessionStorage.removeItem("sessionJwt");
// sessionStorage.removeItem("userRole");
// sessionStorage.removeItem("userName");
// sessionStorage.removeItem("loginId");
sessionStorage.clear();
localStorage.clear();
// 2) UI 갱신
updateHeaderMenu();
// 3) 로그인 페이지로 이동
window.location.href = '/egbim/index.php';
})
.catch(err => {
console.error(err);
alert('로그아웃 중 오류가 발생했습니다.');
});
}
$(document).ready(function() {
// 기존에 있던 updateHeaderMenu() 호출 뒤에
$('#my_login2 a').off('click').on('click', function(e){
e.preventDefault();
descopeLogout();
});
});
$(document).ready(function() {
updateHeaderMenu();
// (필요하다면, 로그인 성공 후에도 항상 updateHeaderMenu(); 호출)
});
//descope login
$('#flogin button[type=submit]').click(function(e){
e.preventDefault();
let mb_id = $('#login_id').val();
let mb_password = $('#login_pw').val();
$.ajax({
url : '/egbim/skin/member/basic/descope_login.php',
data : {
'mb_id' : mb_id,
'mb_password' : mb_password
},
type : "POST",
dataType : "json",
success : function(res){
if(res.status === "ok") {
// 토큰 저장
// sessionStorage.setItem("refreshJwt", res.refreshJwt);
sessionStorage.setItem("sessionJwt", res.sessionJwt);
// ✅ 사용자 정보 저장
if (res.user) {
sessionStorage.setItem("loginId", res.user.loginIds?.[0] || '');
sessionStorage.setItem("userName", res.user.name || '');
sessionStorage.setItem("company", res.user.customAttributes?.company || '');
sessionStorage.setItem("familyCompany", res.user.customAttributes?.familyCompany || '');
sessionStorage.setItem("position", res.user.customAttributes?.position || '');
sessionStorage.setItem("team", res.user.customAttributes?.team || '');
sessionStorage.setItem("familyUniqueKey", res.user.customAttributes?.familyUniqueKey || '');
sessionStorage.setItem("phone", res.user.phone || '');
}
// ✅ 추가: 관리자 등 정보 저장
if(res.user && res.user.roleNames && res.user.roleNames[0])
sessionStorage.setItem("userRole", res.user.roleNames[0]);
else
sessionStorage.removeItem("userRole");
// ✅ 로그인 후 메뉴 갱신
updateHeaderMenu();
// UI 처리
$('.popup_wrap').hide();
$('body').css('overflow', '');
lenis.start();
// alert('로그인 하셨습니다.');
} else {
alert(res.message || "로그인 실패");
// 🔴 실패 횟수에 따라 안내 배너 교체
if (res.failCount && res.failCount >= 8) {
updateLoginBanner("fail");
}
}
},
error : function(err){
alert(err.statusText || "통신 오류");
}
});
});
// ✅ 배너 교체 함수
function updateLoginBanner(type = "default") {
const $banner = $('#login_notice_banner');
if (!$banner.length) return;
if (type === "default") {
$banner.css({ background: "#063e01ff", color: "#fff" });
$banner.find("strong").text("[로그인 시스템 변경 안내]");
$banner.find("p.left").html(`
더 나은 보안을 위해 2025년 8월 8일부터 로그인 시스템이 변경되었습니다.<br>
기존 회원 또한 신규 시스템에 맞춰 재가입을 진행해주시기 바랍니다.
`);
$banner.find("p:last").html(`※ 로그인 및 가입 관련 문의: <strong>010-8721-7453</strong>`);
}
if (type === "fail") {
$banner.css({ background: "#6a0202ff", color: "#faf6f6ff" });
$banner.find("strong").text("[로그인 시도 제한 안내]");
$banner.find("p.left").html(`
비밀번호 입력을 <strong>7회 이상 연속 실패</strong>하셨습니다.<br>
<strong>8번째 시도부터 3분 대기</strong>가 적용됩니다.<br>
10회 이상 실패 시 계정이 잠금 처리됩니다.
`);
$banner.find("p:last").text("");
}
}
//회원가입 약관동의
// $('#fregister button[type=submit]').click(function(e){
// e.preventDefault();
// let agree11 = $('#agree11').val();
// let agree21 = $('#agree21').val();
// $.ajax({
// url : '<?php echo G5_URL ?>/bbs/register_form.php',
// type : "POST",
// datatype : "json",
// contentType: 'application/json; charset=utf-8',
// data : {
// 'agree11' : agree11,
// 'agree21' : agree21
// },
// success : function(data){
// var ss='';
// for(i=0; i<data.length; i++){
// ss=ss + data[i];
// }
// },
// error : function(err){
// alert(err);
// }
// });
// });
// 이지빔 프로그램 회원가입 url 쿼리스트링 파싱 함수
function getQueryString(name) {
const intro = document.querySelector('.intro_wrap');
intro.style.display = "none";
const mainMask = document.querySelector('.main_mask');
mainMask.classList.add('skip');
// mainMask.style.aimation = 'none';
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
$(document).ready(function() {
const popupParam = getQueryString('popup');
if (popupParam === 'signup') {
console.log('쿼리 감지: signup → 회원가입 팝업 자동 오픈 시도');
$('#pop_agreement').show(); // 팝업 보여주기
// 스크롤 잠금 (사용 중이면)
$('body').css('overflow', 'hidden');
if (typeof lenis !== 'undefined') {
lenis.stop();
}
}
// 팝업 닫기 버튼 이벤트 연결
$('#pop_agreement .btn_close').on('click', function() {
$('#pop_agreement').hide();
$('body').css('overflow', '');
if (typeof lenis !== 'undefined') {
lenis.start();
}
});
});
//이지빔 프로그램 비밀번호 재설정 url 쿼리스트링 파싱 함수
$(document).ready(function() {
const urlParams = new URLSearchParams(window.location.search);
const popup = urlParams.get('popup');
const token = urlParams.get('t');
if (popup === 'pwreset') {
// 팝업 전체 열기
$('#pop_search').show();
$('body').css('overflow', 'hidden');
// 내부 컨텐츠 모두 숨기기
$('#pop_search .popup_contents_wrap').hide();
if (token) {
// 토큰이 있으면 비밀번호 재설정 단계
if (!sessionStorage.getItem('pwreset_shown')) {
$('#password_reset').show();
sessionStorage.setItem('pwreset_shown', '1');
}
} else {
// 토큰이 없으면 아이디 입력 단계 (첫 번째 .popup_contents_wrap)
$('#pop_search .popup_contents_wrap').first().show();
}
}
// 닫기 버튼
$('#pop_search .btn_close').on('click', function() {
$('#pop_search').hide();
$('body').css('overflow', '');
});
});
</script>

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