최초 커밋
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 339 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 318 B |
@@ -0,0 +1,292 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
|
||||
$colspan = 5;
|
||||
|
||||
if ($is_checkbox) $colspan++;
|
||||
if ($is_good) $colspan++;
|
||||
if ($is_nogood) $colspan++;
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<!-- 게시판 목록 시작 { -->
|
||||
<div id="bo_list" style="width:<?php echo $width; ?>">
|
||||
|
||||
<!-- 게시판 카테고리 시작 { -->
|
||||
<?php if ($is_category) { ?>
|
||||
<nav id="bo_cate">
|
||||
<h2><?php echo $board['bo_subject'] ?> 카테고리</h2>
|
||||
<ul id="bo_cate_ul">
|
||||
<?php echo $category_option ?>
|
||||
</ul>
|
||||
</nav>
|
||||
<?php } ?>
|
||||
<!-- } 게시판 카테고리 끝 -->
|
||||
|
||||
<form name="fboardlist" id="fboardlist" action="<?php echo G5_BBS_URL; ?>/board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">
|
||||
|
||||
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||
<input type="hidden" name="sca" value="<?php echo $sca ?>">
|
||||
<input type="hidden" name="sst" value="<?php echo $sst ?>">
|
||||
<input type="hidden" name="sod" value="<?php echo $sod ?>">
|
||||
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||
<input type="hidden" name="sw" value="">
|
||||
|
||||
<!-- 게시판 페이지 정보 및 버튼 시작 { -->
|
||||
<div id="bo_btn_top">
|
||||
<div id="bo_list_total">
|
||||
<span>Total <?php echo number_format($total_count) ?>건</span>
|
||||
<?php echo $page ?> 페이지
|
||||
</div>
|
||||
|
||||
<ul class="btn_bo_user">
|
||||
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>
|
||||
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
|
||||
<li>
|
||||
<button type="button" class="btn_bo_sch btn_b01 btn" title="게시판 검색"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">게시판 검색</span></button>
|
||||
</li>
|
||||
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>
|
||||
<?php if ($is_admin == 'super' || $is_auth) { ?>
|
||||
<li>
|
||||
<button type="button" class="btn_more_opt is_list_btn btn_b01 btn" title="게시판 리스트 옵션"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">게시판 리스트 옵션</span></button>
|
||||
<?php if ($is_checkbox) { ?>
|
||||
<ul class="more_opt is_list_btn">
|
||||
<li><button type="submit" name="btn_submit" value="선택삭제" onclick="document.pressed=this.value"><i class="fa fa-trash-o" aria-hidden="true"></i> 선택삭제</button></li>
|
||||
<li><button type="submit" name="btn_submit" value="선택복사" onclick="document.pressed=this.value"><i class="fa fa-files-o" aria-hidden="true"></i> 선택복사</button></li>
|
||||
<li><button type="submit" name="btn_submit" value="선택이동" onclick="document.pressed=this.value"><i class="fa fa-arrows" aria-hidden="true"></i> 선택이동</button></li>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- } 게시판 페이지 정보 및 버튼 끝 -->
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption><?php echo $board['bo_subject'] ?> 목록</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<?php if ($is_checkbox) { ?>
|
||||
<th scope="col" class="all_chk chk_box">
|
||||
<input type="checkbox" id="chkall" onclick="if (this.checked) all_checked(true); else all_checked(false);" class="selec_chk">
|
||||
<label for="chkall">
|
||||
<span></span>
|
||||
<b class="sound_only">현재 페이지 게시물 전체선택</b>
|
||||
</label>
|
||||
</th>
|
||||
<?php } ?>
|
||||
<th scope="col">번호</th>
|
||||
<th scope="col">제목</th>
|
||||
<th scope="col">글쓴이</th>
|
||||
<th scope="col"><?php echo subject_sort_link('wr_hit', $qstr2, 1) ?>조회 </a></th>
|
||||
<?php if ($is_good) { ?><th scope="col"><?php echo subject_sort_link('wr_good', $qstr2, 1) ?>추천 </a></th><?php } ?>
|
||||
<?php if ($is_nogood) { ?><th scope="col"><?php echo subject_sort_link('wr_nogood', $qstr2, 1) ?>비추천 </a></th><?php } ?>
|
||||
<th scope="col"><?php echo subject_sort_link('wr_datetime', $qstr2, 1) ?>날짜 </a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for ($i=0; $i<count($list); $i++) {
|
||||
if ($i%2==0) $lt_class = "even";
|
||||
else $lt_class = "";
|
||||
?>
|
||||
<tr class="<?php if ($list[$i]['is_notice']) echo "bo_notice"; ?> <?php echo $lt_class ?>">
|
||||
<?php if ($is_checkbox) { ?>
|
||||
<td class="td_chk chk_box">
|
||||
<input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>" class="selec_chk">
|
||||
<label for="chk_wr_id_<?php echo $i ?>">
|
||||
<span></span>
|
||||
<b class="sound_only"><?php echo $list[$i]['subject'] ?></b>
|
||||
</label>
|
||||
</td>
|
||||
<?php } ?>
|
||||
<td class="td_num2">
|
||||
<?php
|
||||
if ($list[$i]['is_notice']) // 공지사항
|
||||
echo '<strong class="notice_icon">공지</strong>';
|
||||
else if ($wr_id == $list[$i]['wr_id'])
|
||||
echo "<span class=\"bo_current\">열람중</span>";
|
||||
else
|
||||
echo $list[$i]['num'];
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td class="td_subject" style="padding-left:<?php echo $list[$i]['reply'] ? (strlen($list[$i]['wr_reply'])*10) : '0'; ?>px">
|
||||
<?php
|
||||
if ($is_category && $list[$i]['ca_name']) {
|
||||
?>
|
||||
<a href="<?php echo $list[$i]['ca_name_href'] ?>" class="bo_cate_link"><?php echo $list[$i]['ca_name'] ?></a>
|
||||
<?php } ?>
|
||||
<div class="bo_tit">
|
||||
<a href="<?php echo $list[$i]['href'] ?>">
|
||||
<?php echo $list[$i]['icon_reply'] ?>
|
||||
<?php
|
||||
if (isset($list[$i]['icon_secret'])) echo rtrim($list[$i]['icon_secret']);
|
||||
?>
|
||||
<?php echo $list[$i]['subject'] ?>
|
||||
</a>
|
||||
<?php
|
||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||
// if ($list[$i]['file']['count']) { echo '<'.$list[$i]['file']['count'].'>'; }
|
||||
if (isset($list[$i]['icon_hot'])) echo rtrim($list[$i]['icon_hot']);
|
||||
if (isset($list[$i]['icon_file'])) echo rtrim($list[$i]['icon_file']);
|
||||
if (isset($list[$i]['icon_link'])) echo rtrim($list[$i]['icon_link']);
|
||||
?>
|
||||
<?php if ($list[$i]['comment_cnt']) { ?><span class="sound_only">댓글</span><span class="cnt_cmt"><?php echo $list[$i]['wr_comment']; ?></span><span class="sound_only">개</span><?php } ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="td_name sv_use"><?php echo $list[$i]['name'] ?></td>
|
||||
<td class="td_num"><?php echo $list[$i]['wr_hit'] ?></td>
|
||||
<?php if ($is_good) { ?><td class="td_num"><?php echo $list[$i]['wr_good'] ?></td><?php } ?>
|
||||
<?php if ($is_nogood) { ?><td class="td_num"><?php echo $list[$i]['wr_nogood'] ?></td><?php } ?>
|
||||
<td class="td_datetime"><?php echo $list[$i]['datetime2'] ?></td>
|
||||
|
||||
</tr>
|
||||
<?php } ?>
|
||||
<?php if (count($list) == 0) { echo '<tr><td colspan="'.$colspan.'" class="empty_table">게시물이 없습니다.</td></tr>'; } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- 페이지 -->
|
||||
<?php echo $write_pages; ?>
|
||||
<!-- 페이지 -->
|
||||
|
||||
<?php if ($list_href || $is_checkbox || $write_href) { ?>
|
||||
<div class="bo_fx">
|
||||
<?php if ($list_href || $write_href) { ?>
|
||||
<ul class="btn_bo_user">
|
||||
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>
|
||||
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
|
||||
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</form>
|
||||
|
||||
<!-- 게시판 검색 시작 { -->
|
||||
<div class="bo_sch_wrap">
|
||||
<fieldset class="bo_sch">
|
||||
<h3>검색</h3>
|
||||
<form name="fsearch" method="get">
|
||||
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||
<input type="hidden" name="sca" value="<?php echo $sca ?>">
|
||||
<input type="hidden" name="sop" value="and">
|
||||
<label for="sfl" class="sound_only">검색대상</label>
|
||||
<select name="sfl" id="sfl">
|
||||
<?php echo get_board_sfl_select_options($sfl); ?>
|
||||
</select>
|
||||
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
|
||||
<div class="sch_bar">
|
||||
<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder=" 검색어를 입력해주세요">
|
||||
<button type="submit" value="검색" class="sch_btn"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>
|
||||
</div>
|
||||
<button type="button" class="bo_sch_cls" title="닫기"><i class="fa fa-times" aria-hidden="true"></i><span class="sound_only">닫기</span></button>
|
||||
</form>
|
||||
</fieldset>
|
||||
<div class="bo_sch_bg"></div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function($){
|
||||
// 게시판 검색
|
||||
$(".btn_bo_sch").on("click", function() {
|
||||
$(".bo_sch_wrap").toggle();
|
||||
})
|
||||
$('.bo_sch_bg, .bo_sch_cls').click(function(){
|
||||
$('.bo_sch_wrap').hide();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<!-- } 게시판 검색 끝 -->
|
||||
</div>
|
||||
|
||||
<?php if($is_checkbox) { ?>
|
||||
<noscript>
|
||||
<p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
|
||||
</noscript>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($is_checkbox) { ?>
|
||||
<script>
|
||||
function all_checked(sw) {
|
||||
var f = document.fboardlist;
|
||||
|
||||
for (var i=0; i<f.length; i++) {
|
||||
if (f.elements[i].name == "chk_wr_id[]")
|
||||
f.elements[i].checked = sw;
|
||||
}
|
||||
}
|
||||
|
||||
function fboardlist_submit(f) {
|
||||
var chk_count = 0;
|
||||
|
||||
for (var i=0; i<f.length; i++) {
|
||||
if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
|
||||
chk_count++;
|
||||
}
|
||||
|
||||
if (!chk_count) {
|
||||
alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(document.pressed == "선택복사") {
|
||||
select_copy("copy");
|
||||
return;
|
||||
}
|
||||
|
||||
if(document.pressed == "선택이동") {
|
||||
select_copy("move");
|
||||
return;
|
||||
}
|
||||
|
||||
if(document.pressed == "선택삭제") {
|
||||
if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))
|
||||
return false;
|
||||
|
||||
f.removeAttribute("target");
|
||||
f.action = g5_bbs_url+"/board_list_update.php";
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 선택한 게시물 복사 및 이동
|
||||
function select_copy(sw) {
|
||||
var f = document.fboardlist;
|
||||
|
||||
if (sw == "copy")
|
||||
str = "복사";
|
||||
else
|
||||
str = "이동";
|
||||
|
||||
var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
|
||||
|
||||
f.sw.value = sw;
|
||||
f.target = "move";
|
||||
f.action = g5_bbs_url+"/move.php";
|
||||
f.submit();
|
||||
}
|
||||
|
||||
// 게시판 리스트 관리자 옵션
|
||||
jQuery(function($){
|
||||
$(".btn_more_opt.is_list_btn").on("click", function(e) {
|
||||
e.stopPropagation();
|
||||
$(".more_opt.is_list_btn").toggle();
|
||||
});
|
||||
$(document).on("click", function (e) {
|
||||
if(!$(e.target).closest('.is_list_btn').length) {
|
||||
$(".more_opt.is_list_btn").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- } 게시판 목록 끝 -->
|
||||
@@ -0,0 +1,341 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* 게시판 목록 */
|
||||
#bo_list {position:relative;margin-bottom:20px}
|
||||
#bo_list:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_list .td_board {width:120px;text-align:center}
|
||||
#bo_list .td_chk {width:30px;text-align:center;border-top:1px solid #ecf0f1;border-bottom:1px solid #ecf0f1}
|
||||
#bo_list .td_date {width:60px;text-align:center}
|
||||
#bo_list .td_datetime {width:60px;text-align:center}
|
||||
#bo_list .td_group {width:100px;text-align:center}
|
||||
#bo_list .td_mb_id {width:100px;text-align:center}
|
||||
#bo_list .td_mng {width:80px;text-align:center}
|
||||
#bo_list .td_name {width:90px;text-align:left;padding:10px 0}
|
||||
#bo_list .td_nick {width:100px;text-align:center}
|
||||
#bo_list .td_num {width:50px;text-align:center}
|
||||
#bo_list .td_num2 {width:50px;text-align:center}
|
||||
#bo_list .td_numbig {width:80px;text-align:center}
|
||||
#bo_list .txt_active {color:#5d910b}
|
||||
#bo_list .txt_expired {color:#ccc}
|
||||
#bo_list tbody tr {border-left:2px solid transparent}
|
||||
#bo_list tbody tr:hover {border-left:2px solid #253dbe}
|
||||
#bo_list tbody .even td {background:#fbfbfb}
|
||||
|
||||
#bo_cate {margin:25px 0}
|
||||
#bo_cate h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_cate ul {zoom:1}
|
||||
#bo_cate ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_cate li {display:inline-block;padding:2px}
|
||||
#bo_cate a {display:block;line-height:28px;padding:5px 15px;border-radius:30px;border:1px solid #d6e9ff;color:#6794d3}
|
||||
#bo_cate a:focus, #bo_cate a:hover, #bo_cate a:active {text-decoration:none;background:#3a8afd;color:#fff}
|
||||
#bo_cate #bo_cate_on {z-index:2;background:#3a8afd;color:#fff;font-weight:bold;border:1px solid #3a8afd;
|
||||
-webkit-box-shadow:inset 0 2px 5px rgb(33, 135, 202);
|
||||
-moz-box-shadow:inset 0 2px 5px rgb(33, 135, 202);
|
||||
box-shadow:inset 0 2px 5px rgb(33, 135, 202)}
|
||||
.td_subject img {margin-left:5px}
|
||||
|
||||
/* 게시판 목록 공통 */
|
||||
.selec_chk {position:absolute;top:0;left:0;width:0;height:0;opacity:0;outline:0;z-index:-1;overflow:hidden}
|
||||
.chk_box {position:relative}
|
||||
.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}
|
||||
.write_div .chk_box input[type="checkbox"] + label, .bo_vc_w .chk_box input[type="checkbox"] + label {padding-left:20px}
|
||||
.write_div .chk_box input[type="checkbox"] + label span, .bo_vc_w .chk_box input[type="checkbox"] + label span {position:absolute;top:2px;left:0;width:15px;height:15px;display:block;margin:0;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}
|
||||
|
||||
|
||||
#bo_btn_top {margin:10px 0}
|
||||
#bo_btn_top:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_fx {margin-bottom:5px;float:right;zoom:1}
|
||||
.bo_fx:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_fx ul {margin:0;padding:0;list-style:none}
|
||||
#bo_list_total {float:left;line-height:34px;font-size:0.92em;color:#4e546f}
|
||||
|
||||
.btn_bo_user {float:right;margin:0;padding:0;list-style:none}
|
||||
.btn_bo_user li {float:left;width:40px;text-align:center;margin-left:5px;background:#fff}
|
||||
.btn_bo_user > li {position:relative}
|
||||
.btn_bo_adm {float:left}
|
||||
.btn_bo_adm li {float:left;margin-right:5px}
|
||||
.btn_bo_adm input {padding:0 8px;border:0;background:#d4d4d4;color:#666;text-decoration:none;vertical-align:middle}
|
||||
.bo_notice td {background:#fff6fa !important;border-bottom:1px solid #f8e6ee}
|
||||
.bo_notice td a {font-weight:bold}
|
||||
.bo_notice .notice_icon {display:inline-block;line-height:25px;border-radius:5px;font-weight:bold;color:#f9267f}
|
||||
|
||||
.more_opt {display:none;position:absolute;top:45px;right:0;background:#fff;border:1px solid #b8bfc4;z-index:999}
|
||||
.more_opt:before {content:"";position:absolute;top:-8px;right:13px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #b8bfc4 transparent}
|
||||
.more_opt:after {content:"";position:absolute;top:-6px;right:13px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #fff transparent}
|
||||
.more_opt li {border-bottom:1px solid #f1f1f1;padding:10px;float:inherit;width:90px;margin:0;color:#6b757c;text-align:left}
|
||||
.more_opt li:last-child {border-bottom:0}
|
||||
.more_opt li button, .more_opt li a {width:100%;border:0;background:#fff;color:#6b757c}
|
||||
.more_opt li:hover a,
|
||||
.more_opt li:hover button {color:#000}
|
||||
.more_opt li i {float:right;line-height:20px}
|
||||
|
||||
.td_num strong {color:#000}
|
||||
.bo_cate_link {float:left;display:inline-block;margin-right:10px;background:#e2eaf6;color:#3a8afd;font-weight:normal !important;height:20px;line-height:10px;padding:5px 8px;border-radius:5px;font-size:0.95em} /* 글제목줄 분류스타일 */
|
||||
.bo_cate_link:hover {text-decoration:none}
|
||||
.bo_tit {display:block;color:#000;font-weight:bold}
|
||||
.bo_current {color:#e8180c}
|
||||
#bo_list .profile_img img {border-radius:50%}
|
||||
#bo_list .cnt_cmt {background:#e9eff5;color:#3a8afd;font-size:11px;height:16px;line-height:16px;padding:0 5px;border-radius:3px;vertical-align:middle}
|
||||
|
||||
#bo_list .bo_tit .title_icon {margin-right:2px}
|
||||
#bo_list .bo_tit .fa-heart {color:#ff0000}
|
||||
#bo_list .bo_tit .fa-lock {display:inline-block;line-height:14px;width:16px;font-size:0.833em;color:#4f818c;background:#cbe3e8;text-align:center;border-radius:2px;font-size:12px;border:1px solid #cbe3e8;vertical-align:middle}
|
||||
#bo_list .bo_tit .new_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#23db79;background:#b9ffda;text-align:center;border-radius:2px;margin-left:2px;font-weight:bold;vertical-align:middle}
|
||||
#bo_list .bo_tit .hot_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#ff0000;background:#ffb9b9;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
#bo_list .bo_tit .fa-caret-right {color:#bbb}
|
||||
#bo_list .bo_tit .fa-download {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#daae37;background:#ffefb9;text-align:center;border-radius:2px;margin-left:5px;vertical-align:middle}
|
||||
#bo_list .bo_tit .fa-link {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#b451fd;background:#edd3fd;text-align:center;border-radius:2px;margin-left:5px;vertical-align:middle}
|
||||
|
||||
.bo_sch_wrap {display:none;width:100%;height:100%;position:fixed;top:0;left:0;z-index:999}
|
||||
.bo_sch {position:absolute;top:50%;left:50%;background:#fff;text-align:left;width:330px;max-height:300px;margin-left:-125px;margin-top:-180px;overflow-y:auto;border-radius:5px;-webkit-box-shadow:1px 1px 18px rgba(0,0,0,0.2);-moz-box-shadow:1px 1px 18px rgba(0,0,0,0.2);box-shadow:1px 1px 18px rgba(0,0,0,0.2);border:1px solid #dde7e9;background:#fff;border-radius:3px}
|
||||
.bo_sch:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_sch h3 {padding:15px;border-bottom:1px solid #e8e8e8}
|
||||
.bo_sch legend {background:red}
|
||||
.bo_sch form {padding:15px;display:block}
|
||||
.bo_sch select {border:0;width:100%;height:40px;border:1px solid #d0d3db;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075)}
|
||||
.bo_sch .sch_bar {display:inline-block;width:100%;clear:both;margin-top:15px;border:1px solid #d0d3db;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075)}
|
||||
.bo_sch .sch_input {width:250px;height:38px;border:0;padding:0;background-color:transparent;float:left}
|
||||
.bo_sch .sch_btn {height:38px;float:right;color:#656565;background:none;border:0;width:40px;font-size:15px}
|
||||
.bo_sch .bo_sch_cls {position:absolute;right:0;top:0;color:#b5b8bb;border:0;padding:12px 15px;font-size:16px;background:#fff}
|
||||
.bo_sch_bg {background:#000;background:rgba(0,0,0,0.1);width:100%;height:100%}
|
||||
|
||||
/* 게시판 쓰기 */
|
||||
#char_count_desc {display:block;margin:0 0 5px;padding:0}
|
||||
#char_count_wrap {margin:5px 0 0;text-align:right}
|
||||
#char_count {font-weight:bold}
|
||||
|
||||
#autosave_wrapper {position:relative}
|
||||
#autosave_pop {display:none;z-index:10;position:absolute !important;top:34px;right:0;width:350px;height:auto !important;height:180px;max-height:180px;border:1px solid #565656;background:#fff;
|
||||
-webkit-box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2);
|
||||
-moz-box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2);
|
||||
box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2)}
|
||||
#autosave_pop:before {content:"";position:absolute;top:-8px;right:45px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #000 transparent}
|
||||
#autosave_pop:after {content:"";position:absolute;top:-7px;right:45px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #fff transparent}
|
||||
html.no-overflowscrolling #autosave_pop {height:auto;max-height:10000px !important} /* overflow 미지원 기기 대응 */
|
||||
#autosave_pop strong {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#autosave_pop div {text-align:center;margin:0 !important}
|
||||
#autosave_pop button {margin:0;padding:0;border:0}
|
||||
#autosave_pop ul {padding:15px;border-top:1px solid #e9e9e9;list-style:none;overflow-y:scroll;height:130px;border-bottom:1px solid #e8e8e8}
|
||||
#autosave_pop li {padding:8px 5px;border-bottom:1px solid #fff;background:#eee;zoom:1}
|
||||
#autosave_pop li:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#autosave_pop a {display:block;float:left}
|
||||
#autosave_pop span {display:block;float:right;font-size:0.92em;font-style:italic;color:#999}
|
||||
.autosave_close {cursor:pointer;width:100%;height:30px;background:none;color:#888;font-weight:bold;font-size:0.92em}
|
||||
.autosave_close:hover {background:#f3f3f3;color:#3597d9}
|
||||
.autosave_content {display:none}
|
||||
.autosave_del {background:url(./img/close_btn.png) no-repeat 50% 50%;text-indent:-999px;overflow:hidden;height:20px;width:20px}
|
||||
|
||||
/* 게시판 읽기 */
|
||||
#bo_v {margin-bottom:20px;background:#fff;box-sizing:border-box}
|
||||
|
||||
#bo_v_table {position:absolute;top:0;right:16px;margin:0;padding:0 5px;height:25px;background:#ff3061;color:#fff;font-weight:bold;line-height:2.2em}
|
||||
|
||||
#bo_v_title {}
|
||||
#bo_v_title .bo_v_cate {display:inline-block;line-height:20px;background:#e2eaf6;color:#3a8afd;padding:0 10px;border-radius:3px;}
|
||||
#bo_v_title .bo_v_tit {display:block;font-size:2em;margin:5px 0 0;word-break:break-all}
|
||||
|
||||
#bo_v_info {margin:0;border-bottom:1px solid #f1f1f1;color:#666}
|
||||
#bo_v_info:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_info h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
|
||||
#bo_v_info .profile_info {margin:20px 0 10px;display:inline-block;float:left}
|
||||
#bo_v_info .profile_info .pf_img {float:left;margin-right:10px}
|
||||
#bo_v_info .profile_info .pf_img img {border-radius:50%;width:50px;height:50px}
|
||||
#bo_v_info .profile_info .profile_info_ct {float:left;padding:5px 0;line-height:18px}
|
||||
|
||||
#bo_v_info strong {display:inline-block;margin:0 10px 0 0;font-weight:normal}
|
||||
#bo_v_info .sv_member,
|
||||
#bo_v_info .sv_guest,
|
||||
#bo_v_info .member,
|
||||
#bo_v_info .guest {font-weight:bold}
|
||||
#bo_v_info .profile_img {display:none}
|
||||
#bo_v_info .sv_member {color:#000}
|
||||
#bo_v_info .if_date {margin:0;color:#888}
|
||||
|
||||
#bo_v_file h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_v_file ul {margin:0;list-style:none}
|
||||
#bo_v_file li {padding:15px;position:relative;margin:10px 0;border:1px solid #dfdfdf;border-radius:5px;
|
||||
-webkit-box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%);
|
||||
-moz-box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%);
|
||||
box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%)}
|
||||
#bo_v_file li i {float:left;color:#b2b2b2;font-size:2.35em;margin-right:20px}
|
||||
#bo_v_file a {float:left;display:block;text-decoration:none;word-wrap:break-word;color:#000}
|
||||
#bo_v_file a:focus, #bo_v_file li:hover a, #bo_v_file a:active {text-decoration:underline;color:#3a8afd}
|
||||
#bo_v_file img {float:left;margin:0 10px 0 0}
|
||||
#bo_v_file .bo_v_file_cnt {color:#b2b2b2;font-size:0.92em}
|
||||
#bo_v_file li:hover {border-color:#bed4f4;color:#bed4f4}
|
||||
#bo_v_file li:hover i {color:#3a8afd}
|
||||
#bo_v_file li:hover .bo_v_file_cnt {color:#99c2fc}
|
||||
|
||||
|
||||
#bo_v_link h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_v_file ul {margin:0;list-style:none}
|
||||
#bo_v_link li {padding:15px;position:relative;margin:10px 0;border:1px solid #dfdfdf;border-radius:5px;
|
||||
-webkit-box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%);
|
||||
-moz-box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%);
|
||||
box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%)}
|
||||
#bo_v_link li i {float:left;color:#b2b2b2;font-size:2.35em;margin-right:20px}
|
||||
#bo_v_link a {float:left;display:block;text-decoration:none;word-wrap:break-word;color:#000}
|
||||
#bo_v_link a:focus, #bo_v_link li:hover a, #bo_v_link a:active {text-decoration:underline;color:#3a8afd}
|
||||
#bo_v_link .bo_v_link_cnt {color:#b2b2b2;font-size:0.92em}
|
||||
#bo_v_link li:hover {border-color:#bed4f4;color:#bed4f4}
|
||||
#bo_v_link li:hover i {color:#3a8afd}
|
||||
#bo_v_link li:hover .bo_v_link_cnt {color:#99c2fc}
|
||||
|
||||
#bo_v_top {zoom:1}
|
||||
#bo_v_top:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_top h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_v_top ul {padding:0;list-style:none;word-break:break-all;background:#fff}
|
||||
|
||||
#bo_v_bot {zoom:1}
|
||||
#bo_v_bot:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_bot h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_v_bot ul {padding:0;list-style:none}
|
||||
|
||||
.bo_v_com {margin:20px 0;float:right}
|
||||
.bo_v_com > li {position:relative;float:left;margin-left:5px}
|
||||
|
||||
.bo_v_nb {position:relative;margin:20px 0;clear:both;text-align:left}
|
||||
.bo_v_nb:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_v_nb li {border-top:1px solid #f1f1f1;padding:13px}
|
||||
.bo_v_nb li:last-child {border-bottom:1px solid #f1f1f1}
|
||||
.bo_v_nb li:hover {background:#f6f6f6}
|
||||
.bo_v_nb li i {font-size:13px;color:#b3b3b3}
|
||||
.bo_v_nb li .nb_tit {display:inline-block;padding-right:20px;color:#b3b3b3}
|
||||
.bo_v_nb li .nb_date {float:right;color:#b3b3b3}
|
||||
|
||||
#bo_v_atc {min-height:200px;height:auto !important;height:200px}
|
||||
#bo_v_atc_title {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
|
||||
#bo_v_img {width:100%;overflow:hidden;zoom:1}
|
||||
#bo_v_img:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_img a.view_image {display:block}
|
||||
#bo_v_img img {margin-bottom:20px;max-width:100%;height:auto}
|
||||
|
||||
#bo_v_con {margin:10px 0 30px;width:100%;line-height:1.7em;min-height:200px;word-break:break-all;overflow:hidden}
|
||||
#bo_v_con a {color:#000;text-decoration:underline}
|
||||
#bo_v_con img {max-width:100%;height:auto}
|
||||
|
||||
#bo_v_act {margin-bottom:30px;text-align:center}
|
||||
#bo_v_act .bo_v_act_gng {position:relative}
|
||||
#bo_v_act a {margin-right:5px;vertical-align:middle;color:#4a5158}
|
||||
#bo_v_act a:hover {background-color:#fff;color:#ff484f;border-color:#ff484f}
|
||||
#bo_v_act i {font-size:1.4em;margin-right:5px}
|
||||
#bo_v_act_good, #bo_v_act_nogood {display:none;position:absolute;top:30px;left:0;z-index:9999;padding:10px 0;width:165px;background:#ff3061;color:#fff;text-align:center}
|
||||
#bo_v_act .bo_v_good {display:inline-block;border:1px solid #dedede;width:70px;line-height:46px;border-radius:30px}
|
||||
#bo_v_act .bo_v_nogood {display:inline-block;border:1px solid #dedede;width:70px;line-height:46px;border-radius:30px}
|
||||
|
||||
#bo_v_sns {padding:0;list-style:none;zoom:1;float:left;display:inline-block}
|
||||
#bo_v_sns:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_sns li {float:left;width:135px;margin-right:5px;text-align:left}
|
||||
#bo_v_sns li a {height:35px;line-height:35px;text-align:center;border-radius:5px;color:#fff;font-size:0.95em}
|
||||
#bo_v_sns li img {vertical-align:middle;margin-right:5px}
|
||||
#bo_v_sns li .sns_f {display:block;background:#3b5997}
|
||||
#bo_v_sns li .sns_t {display:block;background:#09aeee}
|
||||
#bo_v_sns li .sns_g {display:block;background:#ea4026}
|
||||
#bo_v_sns li .sns_k {display:block;background:#fbe300}
|
||||
|
||||
#bo_v_share {position:relative;padding:20px 0}
|
||||
#bo_v_share:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_share .btn {padding:0 10px;color:#555;font-weight:normal;font-size:1em;width:80px;line-height:35px;height:35px;border-color:#d5d5d5;border-radius:5px}
|
||||
#bo_v_share .btn:hover {background:#fff}
|
||||
#bo_v_share .btn i {margin-right:5px;color:#4b5259;vertical-align:middle}
|
||||
|
||||
/* 게시판 댓글 */
|
||||
.cmt_btn {width:100%;text-align:left;border:0;border-bottom:1px solid #f0f0f0;background:#fff;font-weight:bold;margin:30px 0 0px;padding:0 0 15px}
|
||||
.cmt_btn span.total {position:relative;display:inline-block;margin-right:5px;font-size:1em;color:#3a8afd}
|
||||
.cmt_btn span.cmt_more {float:right;display:inline-block;width:15px;height:10px;background:url(./img/btn_cmt.png) no-repeat right 2px;margin-top:5px}
|
||||
.cmt_btn_op span.cmt_more {background-position:right -8px}
|
||||
.cmt_btn b {font-size:1.2em;color:#000}
|
||||
.cmt_btn span.total:after {position:absolute;bottom:-17px;left:0;display:inline-block;background:#3a8afd;content:"";width:100%;height:2px}
|
||||
#bo_vc {}
|
||||
#bo_vc h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_vc article {margin:20px 0;position:relative;border-bottom:1px solid #f0f0f0}
|
||||
#bo_vc article:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_vc article .profile_img img {border-radius:50%}
|
||||
#bo_vc article .pf_img {float:left;margin-right:10px}
|
||||
#bo_vc article .pf_img img {border-radius:50%;width:50px;height:50px}
|
||||
#bo_vc article .cm_wrap {float:left;max-width:870px;width:90%}
|
||||
#bo_vc header {position:relative;width:100%}
|
||||
#bo_vc header:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_vc header .profile_img {display:none}
|
||||
#bo_vc header .icon_reply {position:absolute;top:15px;left:-20px}
|
||||
#bo_vc .member, #bo_vc .guest, #bo_vc .sv_member, #bo_vc .sv_guest {font-weight:bold}
|
||||
.bo_vc_hdinfo {color:#777}
|
||||
#bo_vc h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_vc .cmt_contents {line-height:1.8em;padding:0 0 20px}
|
||||
#bo_vc p a {text-decoration:underline}
|
||||
#bo_vc p a.s_cmt {text-decoration:underline;color:#ed6479}
|
||||
#bo_vc_empty {margin:0;padding:80px 0 !important;color:#777;text-align:center}
|
||||
#bo_vc #bo_vc_winfo {float:left}
|
||||
#bo_vc .bo_vl_opt {position:absolute;top:0;right:0}
|
||||
|
||||
.bo_vc_act {display:none;position:absolute;right:0;top:40px;width:58px;text-align:right;border:1px solid #b8bfc4;margin:0;list-style:none;background:#fff;zoom:1;z-index:9999}
|
||||
.bo_vc_act:before {content:"";position:absolute;top:-8px;right:5px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #b8bfc4 transparent}
|
||||
.bo_vc_act:after {content:"";position:absolute;top:-6px;right:5px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #fff transparent}
|
||||
.bo_vc_act li {border-bottom:1px solid #f0f0f0}
|
||||
.bo_vc_act li:last-child {border-bottom:0}
|
||||
.bo_vc_act li a {display:inline-block;padding:10px 15px}
|
||||
.bo_vc_act li a:hover {color:#3a8afd}
|
||||
|
||||
.bo_vc_w {position:relative;margin:10px 0;display:block}
|
||||
.bo_vc_w:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_vc_w h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
.bo_vc_w #char_cnt {display:block;margin:0 0 5px}
|
||||
.bo_vc_w textarea {border:1px solid #ccc;background:#fff;color:#000;vertical-align:middle;border-radius:3px;padding:5px;width:100%;height:120px;
|
||||
-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1)}
|
||||
#wr_secret {}
|
||||
.bo_vc_w_info {margin:10px 0;float:left}
|
||||
.bo_vc_w_info:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_vc_w_info .frm_input {float:left;margin-right:5px}
|
||||
.bo_vc_w_info #captcha {padding-top:10px;display:block;clear:both}
|
||||
.bo_vc_w .btn_confirm {clear:both;margin-top:10px}
|
||||
.bo_vc_w .btn_confirm label {display:inline-block;margin-right:10px;border-radius:3px;font-size:1.5em;text-align:center}
|
||||
.bo_vc_w .btn_submit {height:45px;padding:0 20px;border-radius:3px;font-weight:bold;font-size:1.083em}
|
||||
.bo_vc_w .btn_confirm .secret_cm label {font-size:1em !important}
|
||||
.bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.secret_cm {display:inline-block;float:left}
|
||||
|
||||
#bo_vc_send_sns {display:inline-block;float:left}
|
||||
#bo_vc_sns {display:inline-block;margin:0;padding:0;list-style:none;zoom:1}
|
||||
#bo_vc_sns:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_vc_sns li {float:left;margin:0 5px 0 0}
|
||||
#bo_vc_sns .sns_li_f {border-radius:3px;background:#3a589b;height:40px;line-height:40px;padding:0 0 0 10px}
|
||||
#bo_vc_sns .sns_li_t {border-radius:3px;background:#00aced;height:40px;line-height:40px;padding:0 0 0 10px}
|
||||
#bo_vc_sns .sns_li_off {background:#bbb}
|
||||
#bo_vc_sns a {display:inline-block;padding:0 15px 0 5px}
|
||||
#bo_vc_sns input {margin:0 5px 0 0}
|
||||
|
||||
/*글쓰기*/
|
||||
#bo_w .bo_v_option li {display:inline-block;float:left;text-align:left;margin:0 5px 0 0}
|
||||
#bo_w .bo_v_option li label {vertical-align:baseline}
|
||||
#bo_w .bo_v_option .chk_box input[type="checkbox"] + label span {margin-left:0;margin-right:5px}
|
||||
#bo_w .write_div {margin:10px 0;position:relative}
|
||||
#bo_w .write_div:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_w .bo_w_info:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_w .bo_w_info .frm_input {float:left;margin-bottom:1%}
|
||||
#bo_w #wr_password, #bo_w #wr_homepage {margin-left:1%}
|
||||
#bo_w .wr_content.smarteditor2 iframe {background:#fff}
|
||||
#bo_w .bo_w_tit {position:relative}
|
||||
#bo_w .bo_w_tit .frm_input {padding-right:120px}
|
||||
#bo_w .bo_w_tit #btn_autosave {position:absolute;top:5px;right:5px;line-height:30px;height:30px}
|
||||
#bo_w .bo_w_link label {position:absolute;top:1px;left:1px;border-radius:3px 0 0 3px;height:38px;line-height:38px;width:40px;font-size:1.2em;text-align:center;color:#b2b2b2}
|
||||
#bo_w .bo_w_link .frm_input {padding-left:50px}
|
||||
#bo_w .bo_w_flie .lb_icon {position:absolute;top:0px;left:0px;border-radius:3px 0 0 3px;height:38px;line-height:38px;width:40px;font-size:1.2em;text-align:center;color:#b2b2b2}
|
||||
#bo_w .bo_w_flie .frm_file {padding-left:50px;margin-top:3px}
|
||||
#bo_w .bo_w_flie .file_wr {position:relative;border:1px solid #ccc;background:#fff;color:#000;vertical-align:middle;border-radius:3px;padding:5px;height:40px;margin:0}
|
||||
#bo_w .bo_w_flie .frm_input {margin:10px 0 0}
|
||||
#bo_w .bo_w_flie .file_del {position:absolute;top:10px;right:10px;font-size:0.92em;color:#7d7d7d}
|
||||
#bo_w .bo_w_select select {border:1px solid #d0d3db;width:100%;height:40px;border-radius:3px}
|
||||
#bo_w .btn_submit {padding:0 20px;font-size:1.167em}
|
||||
#bo_w .btn_cancel {border-radius:3px;font-size:1.167em}
|
||||
@@ -0,0 +1,300 @@
|
||||
<?php
|
||||
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
|
||||
|
||||
<!-- 게시물 읽기 시작 { -->
|
||||
|
||||
<article id="bo_v" style="width:<?php echo $width; ?>">
|
||||
<header>
|
||||
<h2 id="bo_v_title">
|
||||
<?php if ($category_name) { ?>
|
||||
<span class="bo_v_cate"><?php echo $view['ca_name']; // 분류 출력 끝 ?></span>
|
||||
<?php } ?>
|
||||
<span class="bo_v_tit">
|
||||
<?php
|
||||
echo cut_str(get_text($view['wr_subject']), 70); // 글제목 출력
|
||||
?></span>
|
||||
</h2>
|
||||
</header>
|
||||
|
||||
<section id="bo_v_info">
|
||||
<h2>페이지 정보</h2>
|
||||
<div class="profile_info">
|
||||
<div class="pf_img"><?php echo get_member_profile_img($view['mb_id']) ?></div>
|
||||
<div class="profile_info_ct">
|
||||
<span class="sound_only">작성자</span> <strong><?php echo $view['name'] ?><?php if ($is_ip_view) { echo " ($ip)"; } ?></strong><br>
|
||||
<span class="sound_only">댓글</span><strong><a href="#bo_vc"> <i class="fa fa-commenting-o" aria-hidden="true"></i> <?php echo number_format($view['wr_comment']) ?>건</a></strong>
|
||||
<span class="sound_only">조회</span><strong><i class="fa fa-eye" aria-hidden="true"></i> <?php echo number_format($view['wr_hit']) ?>회</strong>
|
||||
<strong class="if_date"><span class="sound_only">작성일</span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo date("y-m-d H:i", strtotime($view['wr_datetime'])) ?></strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 게시물 상단 버튼 시작 { -->
|
||||
<div id="bo_v_top">
|
||||
<?php ob_start(); ?>
|
||||
|
||||
<ul class="btn_bo_user bo_v_com">
|
||||
<li><a href="<?php echo $list_href ?>" class="btn_b01 btn" title="목록"><i class="fa fa-list" aria-hidden="true"></i><span class="sound_only">목록</span></a></li>
|
||||
<?php if ($reply_href) { ?><li><a href="<?php echo $reply_href ?>" class="btn_b01 btn" title="답변"><i class="fa fa-reply" aria-hidden="true"></i><span class="sound_only">답변</span></a></li><?php } ?>
|
||||
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>
|
||||
<?php if($update_href || $delete_href || $copy_href || $move_href || $search_href) { ?>
|
||||
<li>
|
||||
<button type="button" class="btn_more_opt is_view_btn btn_b01 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">게시판 리스트 옵션</span></button>
|
||||
<ul class="more_opt is_view_btn">
|
||||
<?php if ($update_href) { ?><li><a href="<?php echo $update_href ?>">수정<i class="fa fa-pencil-square-o" aria-hidden="true"></i></a></li><?php } ?>
|
||||
<?php if ($delete_href) { ?><li><a href="<?php echo $delete_href ?>" onclick="del(this.href); return false;">삭제<i class="fa fa-trash-o" aria-hidden="true"></i></a></li><?php } ?>
|
||||
<?php if ($copy_href) { ?><li><a href="<?php echo $copy_href ?>" onclick="board_move(this.href); return false;">복사<i class="fa fa-files-o" aria-hidden="true"></i></a></li><?php } ?>
|
||||
<?php if ($move_href) { ?><li><a href="<?php echo $move_href ?>" onclick="board_move(this.href); return false;">이동<i class="fa fa-arrows" aria-hidden="true"></i></a></li><?php } ?>
|
||||
<?php if ($search_href) { ?><li><a href="<?php echo $search_href ?>">검색<i class="fa fa-search" aria-hidden="true"></i></a></li><?php } ?>
|
||||
</ul>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<script>
|
||||
|
||||
jQuery(function($){
|
||||
// 게시판 보기 버튼 옵션
|
||||
$(".btn_more_opt.is_view_btn").on("click", function(e) {
|
||||
e.stopPropagation();
|
||||
$(".more_opt.is_view_btn").toggle();
|
||||
})
|
||||
;
|
||||
$(document).on("click", function (e) {
|
||||
if(!$(e.target).closest('.is_view_btn').length) {
|
||||
$(".more_opt.is_view_btn").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$link_buttons = ob_get_contents();
|
||||
ob_end_flush();
|
||||
?>
|
||||
</div>
|
||||
<!-- } 게시물 상단 버튼 끝 -->
|
||||
</section>
|
||||
|
||||
<section id="bo_v_atc">
|
||||
<h2 id="bo_v_atc_title">본문</h2>
|
||||
<div id="bo_v_share">
|
||||
<?php include_once(G5_SNS_PATH."/view.sns.skin.php"); ?>
|
||||
<?php if ($scrap_href) { ?><a href="<?php echo $scrap_href; ?>" target="_blank" class="btn btn_b03" onclick="win_scrap(this.href); return false;"><i class="fa fa-bookmark" aria-hidden="true"></i> 스크랩</a><?php } ?>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
// 파일 출력
|
||||
$v_img_count = count($view['file']);
|
||||
if($v_img_count) {
|
||||
echo "<div id=\"bo_v_img\">\n";
|
||||
|
||||
foreach($view['file'] as $view_file) {
|
||||
echo get_file_thumbnail($view_file);
|
||||
}
|
||||
|
||||
echo "</div>\n";
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- 본문 내용 시작 { -->
|
||||
<div id="bo_v_con"><?php echo get_view_thumbnail($view['content']); ?></div>
|
||||
<?php //echo $view['rich_content']; // {이미지:0} 과 같은 코드를 사용할 경우 ?>
|
||||
<!-- } 본문 내용 끝 -->
|
||||
|
||||
<?php if ($is_signature) { ?><p><?php echo $signature ?></p><?php } ?>
|
||||
|
||||
|
||||
<!-- 추천 비추천 시작 { -->
|
||||
<?php if ( $good_href || $nogood_href) { ?>
|
||||
<div id="bo_v_act">
|
||||
<?php if ($good_href) { ?>
|
||||
<span class="bo_v_act_gng">
|
||||
<a href="<?php echo $good_href.'&'.$qstr ?>" id="good_button" class="bo_v_good"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">추천</span><strong><?php echo number_format($view['wr_good']) ?></strong></a>
|
||||
<b id="bo_v_act_good"></b>
|
||||
</span>
|
||||
<?php } ?>
|
||||
<?php if ($nogood_href) { ?>
|
||||
<span class="bo_v_act_gng">
|
||||
<a href="<?php echo $nogood_href.'&'.$qstr ?>" id="nogood_button" class="bo_v_nogood"><i class="fa fa-thumbs-o-down" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></a>
|
||||
<b id="bo_v_act_nogood"></b>
|
||||
</span>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } else {
|
||||
if($board['bo_use_good'] || $board['bo_use_nogood']) {
|
||||
?>
|
||||
<div id="bo_v_act">
|
||||
<?php if($board['bo_use_good']) { ?><span class="bo_v_good"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">추천</span><strong><?php echo number_format($view['wr_good']) ?></strong></span><?php } ?>
|
||||
<?php if($board['bo_use_nogood']) { ?><span class="bo_v_nogood"><i class="fa fa-thumbs-o-down" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></span><?php } ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!-- } 추천 비추천 끝 -->
|
||||
</section>
|
||||
|
||||
<?php
|
||||
$cnt = 0;
|
||||
if ($view['file']['count']) {
|
||||
for ($i=0; $i<count($view['file']); $i++) {
|
||||
if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view'])
|
||||
$cnt++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php if($cnt) { ?>
|
||||
<!-- 첨부파일 시작 { -->
|
||||
<section id="bo_v_file">
|
||||
<h2>첨부파일</h2>
|
||||
<ul>
|
||||
<?php
|
||||
// 가변 파일
|
||||
for ($i=0; $i<count($view['file']); $i++) {
|
||||
if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view']) {
|
||||
?>
|
||||
<li>
|
||||
<i class="fa fa-folder-open" aria-hidden="true"></i>
|
||||
<a href="<?php echo $view['file'][$i]['href']; ?>" class="view_file_download">
|
||||
<strong><?php echo $view['file'][$i]['source'] ?></strong> <?php echo $view['file'][$i]['content'] ?> (<?php echo $view['file'][$i]['size'] ?>)
|
||||
</a>
|
||||
<br>
|
||||
<span class="bo_v_file_cnt"><?php echo $view['file'][$i]['download'] ?>회 다운로드 | DATE : <?php echo $view['file'][$i]['datetime'] ?></span>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- } 첨부파일 끝 -->
|
||||
<?php } ?>
|
||||
|
||||
<?php if(isset($view['link']) && array_filter($view['link'])) { ?>
|
||||
<!-- 관련링크 시작 { -->
|
||||
<section id="bo_v_link">
|
||||
<h2>관련링크</h2>
|
||||
<ul>
|
||||
<?php
|
||||
// 링크
|
||||
$cnt = 0;
|
||||
for ($i=1; $i<=count($view['link']); $i++) {
|
||||
if ($view['link'][$i]) {
|
||||
$cnt++;
|
||||
$link = cut_str($view['link'][$i], 70);
|
||||
?>
|
||||
<li>
|
||||
<i class="fa fa-link" aria-hidden="true"></i>
|
||||
<a href="<?php echo $view['link_href'][$i] ?>" target="_blank">
|
||||
<strong><?php echo $link ?></strong>
|
||||
</a>
|
||||
<br>
|
||||
<span class="bo_v_link_cnt"><?php echo $view['link_hit'][$i] ?>회 연결</span>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- } 관련링크 끝 -->
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($prev_href || $next_href) { ?>
|
||||
<ul class="bo_v_nb">
|
||||
<?php if ($prev_href) { ?><li class="btn_prv"><span class="nb_tit"><i class="fa fa-chevron-up" aria-hidden="true"></i> 이전글</span><a href="<?php echo $prev_href ?>"><?php echo $prev_wr_subject;?></a> <span class="nb_date"><?php echo str_replace('-', '.', substr($prev_wr_date, '2', '8')); ?></span></li><?php } ?>
|
||||
<?php if ($next_href) { ?><li class="btn_next"><span class="nb_tit"><i class="fa fa-chevron-down" aria-hidden="true"></i> 다음글</span><a href="<?php echo $next_href ?>"><?php echo $next_wr_subject;?></a> <span class="nb_date"><?php echo str_replace('-', '.', substr($next_wr_date, '2', '8')); ?></span></li><?php } ?>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
|
||||
<?php
|
||||
// 코멘트 입출력
|
||||
include_once(G5_BBS_PATH.'/view_comment.php');
|
||||
?>
|
||||
</article>
|
||||
<!-- } 게시판 읽기 끝 -->
|
||||
|
||||
<script>
|
||||
<?php if ($board['bo_download_point'] < 0) { ?>
|
||||
$(function() {
|
||||
$("a.view_file_download").click(function() {
|
||||
if(!g5_is_member) {
|
||||
alert("다운로드 권한이 없습니다.\n회원이시라면 로그인 후 이용해 보십시오.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var msg = "파일을 다운로드 하시면 포인트가 차감(<?php echo number_format($board['bo_download_point']) ?>점)됩니다.\n\n포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.\n\n그래도 다운로드 하시겠습니까?";
|
||||
|
||||
if(confirm(msg)) {
|
||||
var href = $(this).attr("href")+"&js=on";
|
||||
$(this).attr("href", href);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
<?php } ?>
|
||||
|
||||
function board_move(href)
|
||||
{
|
||||
window.open(href, "boardmove", "left=50, top=50, width=500, height=550, scrollbars=1");
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$("a.view_image").click(function() {
|
||||
window.open(this.href, "large_image", "location=yes,links=no,toolbar=no,top=10,left=10,width=10,height=10,resizable=yes,scrollbars=no,status=no");
|
||||
return false;
|
||||
});
|
||||
|
||||
// 추천, 비추천
|
||||
$("#good_button, #nogood_button").click(function() {
|
||||
var $tx;
|
||||
if(this.id == "good_button")
|
||||
$tx = $("#bo_v_act_good");
|
||||
else
|
||||
$tx = $("#bo_v_act_nogood");
|
||||
|
||||
excute_good(this.href, $(this), $tx);
|
||||
return false;
|
||||
});
|
||||
|
||||
// 이미지 리사이즈
|
||||
$("#bo_v_atc").viewimageresize();
|
||||
});
|
||||
|
||||
function excute_good(href, $el, $tx)
|
||||
{
|
||||
$.post(
|
||||
href,
|
||||
{ js: "on" },
|
||||
function(data) {
|
||||
if(data.error) {
|
||||
alert(data.error);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(data.count) {
|
||||
$el.find("strong").text(number_format(String(data.count)));
|
||||
if($tx.attr("id").search("nogood") > -1) {
|
||||
$tx.text("이 글을 비추천하셨습니다.");
|
||||
$tx.fadeIn(200).delay(2500).fadeOut(200);
|
||||
} else {
|
||||
$tx.text("이 글을 추천하셨습니다.");
|
||||
$tx.fadeIn(200).delay(2500).fadeOut(200);
|
||||
}
|
||||
}
|
||||
}, "json"
|
||||
);
|
||||
}
|
||||
</script>
|
||||
<!-- } 게시글 읽기 끝 -->
|
||||
@@ -0,0 +1,355 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
?>
|
||||
|
||||
<script>
|
||||
// 글자수 제한
|
||||
var char_min = parseInt(<?php echo $comment_min ?>); // 최소
|
||||
var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
</script>
|
||||
<button type="button" class="cmt_btn"><span class="total"><b>댓글</b> <?php echo $view['wr_comment']; ?></span><span class="cmt_more"></span></button>
|
||||
<!-- 댓글 시작 { -->
|
||||
<section id="bo_vc">
|
||||
<h2>댓글목록</h2>
|
||||
<?php
|
||||
$cmt_amt = count($list);
|
||||
for ($i=0; $i<$cmt_amt; $i++) {
|
||||
$comment_id = $list[$i]['wr_id'];
|
||||
$cmt_depth = strlen($list[$i]['wr_comment_reply']) * 50;
|
||||
$comment = $list[$i]['content'];
|
||||
/*
|
||||
if (strstr($list[$i]['wr_option'], "secret")) {
|
||||
$str = $str;
|
||||
}
|
||||
*/
|
||||
$comment = preg_replace("/\[\<a\s.*href\=\"(http|https|ftp|mms)\:\/\/([^[:space:]]+)\.(mp3|wma|wmv|asf|asx|mpg|mpeg)\".*\<\/a\>\]/i", "<script>doc_write(obj_movie('$1://$2.$3'));</script>", $comment);
|
||||
$cmt_sv = $cmt_amt - $i + 1; // 댓글 헤더 z-index 재설정 ie8 이하 사이드뷰 겹침 문제 해결
|
||||
$c_reply_href = $comment_common_url.'&c_id='.$comment_id.'&w=c#bo_vc_w';
|
||||
$c_edit_href = $comment_common_url.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
|
||||
$is_comment_reply_edit = ($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;
|
||||
?>
|
||||
|
||||
<article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-top-color:#e0e0e0"<?php } ?>>
|
||||
<div class="pf_img"><?php echo get_member_profile_img($list[$i]['mb_id']); ?></div>
|
||||
|
||||
<div class="cm_wrap">
|
||||
|
||||
<header style="z-index:<?php echo $cmt_sv; ?>">
|
||||
<h2><?php echo get_text($list[$i]['wr_name']); ?>님의 <?php if ($cmt_depth) { ?><span class="sound_only">댓글의</span><?php } ?> 댓글</h2>
|
||||
<?php echo $list[$i]['name'] ?>
|
||||
<?php if ($is_ip_view) { ?>
|
||||
<span class="sound_only">아이피</span>
|
||||
<span>(<?php echo $list[$i]['ip']; ?>)</span>
|
||||
<?php } ?>
|
||||
<span class="sound_only">작성일</span>
|
||||
<span class="bo_vc_hdinfo"><i class="fa fa-clock-o" aria-hidden="true"></i> <time datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($list[$i]['datetime'])) ?>"><?php echo $list[$i]['datetime'] ?></time></span>
|
||||
<?php
|
||||
include(G5_SNS_PATH.'/view_comment_list.sns.skin.php');
|
||||
?>
|
||||
</header>
|
||||
|
||||
<!-- 댓글 출력 -->
|
||||
<div class="cmt_contents">
|
||||
<p>
|
||||
<?php if (strstr($list[$i]['wr_option'], "secret")) { ?><img src="<?php echo $board_skin_url; ?>/img/icon_secret.gif" alt="비밀글"><?php } ?>
|
||||
<?php echo $comment ?>
|
||||
</p>
|
||||
<?php if($is_comment_reply_edit) {
|
||||
if($w == 'cu') {
|
||||
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
|
||||
$cmt = sql_fetch($sql);
|
||||
if (isset($cmt)) {
|
||||
if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id']))) {
|
||||
$cmt['wr_content'] = '';
|
||||
}
|
||||
$c_wr_content = $cmt['wr_content'];
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<span id="edit_<?php echo $comment_id ?>" class="bo_vc_w"></span><!-- 수정 -->
|
||||
<span id="reply_<?php echo $comment_id ?>" class="bo_vc_w"></span><!-- 답변 -->
|
||||
|
||||
<input type="hidden" value="<?php echo strstr($list[$i]['wr_option'],"secret") ?>" id="secret_comment_<?php echo $comment_id ?>">
|
||||
<textarea id="save_comment_<?php echo $comment_id ?>" style="display:none"><?php echo get_text($list[$i]['content1'], 0) ?></textarea>
|
||||
</div>
|
||||
<?php if($is_comment_reply_edit) { ?>
|
||||
<div class="bo_vl_opt">
|
||||
<button type="button" class="btn_cm_opt btn_b01 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">댓글 옵션</span></button>
|
||||
<ul class="bo_vc_act">
|
||||
<?php if ($list[$i]['is_reply']) { ?><li><a href="<?php echo $c_reply_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'c'); return false;">답변</a></li><?php } ?>
|
||||
<?php if ($list[$i]['is_edit']) { ?><li><a href="<?php echo $c_edit_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'cu'); return false;">수정</a></li><?php } ?>
|
||||
<?php if ($list[$i]['is_del']) { ?><li><a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<script>
|
||||
$(function() {
|
||||
// 댓글 옵션창 열기
|
||||
$(".btn_cm_opt").on("click", function(){
|
||||
$(this).parent("div").children(".bo_vc_act").show();
|
||||
});
|
||||
|
||||
// 댓글 옵션창 닫기
|
||||
$(document).mouseup(function (e){
|
||||
var container = $(".bo_vc_act");
|
||||
if( container.has(e.target).length === 0)
|
||||
container.hide();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</article>
|
||||
<?php } ?>
|
||||
<?php if ($i == 0) { //댓글이 없다면 ?><p id="bo_vc_empty">등록된 댓글이 없습니다.</p><?php } ?>
|
||||
|
||||
</section>
|
||||
<!-- } 댓글 끝 -->
|
||||
|
||||
<?php if ($is_comment_write) {
|
||||
if($w == '')
|
||||
$w = 'c';
|
||||
?>
|
||||
<!-- 댓글 쓰기 시작 { -->
|
||||
<aside id="bo_vc_w" class="bo_vc_w">
|
||||
<h2>댓글쓰기</h2>
|
||||
<form name="fviewcomment" id="fviewcomment" action="<?php echo $comment_action_url; ?>" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
|
||||
<input type="hidden" name="w" value="<?php echo $w ?>" id="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 $c_id ?>" id="comment_id">
|
||||
<input type="hidden" name="sca" value="<?php echo $sca ?>">
|
||||
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||
<input type="hidden" name="is_good" value="">
|
||||
|
||||
<span class="sound_only">내용</span>
|
||||
<?php if ($comment_min || $comment_max) { ?><strong id="char_cnt"><span id="char_count"></span>글자</strong><?php } ?>
|
||||
<textarea id="wr_content" name="wr_content" maxlength="10000" required class="required" title="내용" placeholder="댓글내용을 입력해주세요"
|
||||
<?php if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?php } ?>><?php echo $c_wr_content; ?></textarea>
|
||||
<?php if ($comment_min || $comment_max) { ?><script> check_byte('wr_content', 'char_count'); </script><?php } ?>
|
||||
<script>
|
||||
$(document).on("keyup change", "textarea#wr_content[maxlength]", function() {
|
||||
var str = $(this).val()
|
||||
var mx = parseInt($(this).attr("maxlength"))
|
||||
if (str.length > mx) {
|
||||
$(this).val(str.substr(0, mx));
|
||||
return false;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<div class="bo_vc_w_wr">
|
||||
<div class="bo_vc_w_info">
|
||||
<?php if ($is_guest) { ?>
|
||||
<label for="wr_name" class="sound_only">이름<strong> 필수</strong></label>
|
||||
<input type="text" name="wr_name" value="<?php echo get_cookie("ck_sns_name"); ?>" id="wr_name" required class="frm_input required" size="25" placeholder="이름">
|
||||
<label for="wr_password" class="sound_only">비밀번호<strong> 필수</strong></label>
|
||||
<input type="password" name="wr_password" id="wr_password" required class="frm_input required" size="25" placeholder="비밀번호">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) {
|
||||
?>
|
||||
<span class="sound_only">SNS 동시등록</span>
|
||||
<span id="bo_vc_send_sns"></span>
|
||||
<?php } ?>
|
||||
<?php if ($is_guest) { ?>
|
||||
<?php echo $captcha_html; ?>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<div class="btn_confirm">
|
||||
<span class="secret_cm chk_box">
|
||||
<input type="checkbox" name="wr_secret" value="secret" id="wr_secret" class="selec_chk">
|
||||
<label for="wr_secret"><span></span>비밀글</label>
|
||||
</span>
|
||||
<button type="submit" id="btn_submit" class="btn_submit">댓글등록</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</aside>
|
||||
|
||||
<script>
|
||||
var save_before = '';
|
||||
var save_html = document.getElementById('bo_vc_w').innerHTML;
|
||||
|
||||
function good_and_write()
|
||||
{
|
||||
var f = document.fviewcomment;
|
||||
if (fviewcomment_submit(f)) {
|
||||
f.is_good.value = 1;
|
||||
f.submit();
|
||||
} else {
|
||||
f.is_good.value = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function fviewcomment_submit(f)
|
||||
{
|
||||
var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
|
||||
|
||||
f.is_good.value = 0;
|
||||
|
||||
var subject = "";
|
||||
var content = "";
|
||||
$.ajax({
|
||||
url: g5_bbs_url+"/ajax.filter.php",
|
||||
type: "POST",
|
||||
data: {
|
||||
"subject": "",
|
||||
"content": f.wr_content.value
|
||||
},
|
||||
dataType: "json",
|
||||
async: false,
|
||||
cache: false,
|
||||
success: function(data, textStatus) {
|
||||
subject = data.subject;
|
||||
content = data.content;
|
||||
}
|
||||
});
|
||||
|
||||
if (content) {
|
||||
alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
|
||||
f.wr_content.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
// 양쪽 공백 없애기
|
||||
var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
|
||||
document.getElementById('wr_content').value = document.getElementById('wr_content').value.replace(pattern, "");
|
||||
if (char_min > 0 || char_max > 0)
|
||||
{
|
||||
check_byte('wr_content', 'char_count');
|
||||
var cnt = parseInt(document.getElementById('char_count').innerHTML);
|
||||
if (char_min > 0 && char_min > cnt)
|
||||
{
|
||||
alert("댓글은 "+char_min+"글자 이상 쓰셔야 합니다.");
|
||||
return false;
|
||||
} else if (char_max > 0 && char_max < cnt)
|
||||
{
|
||||
alert("댓글은 "+char_max+"글자 이하로 쓰셔야 합니다.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (!document.getElementById('wr_content').value)
|
||||
{
|
||||
alert("댓글을 입력하여 주십시오.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (typeof(f.wr_name) != 'undefined')
|
||||
{
|
||||
f.wr_name.value = f.wr_name.value.replace(pattern, "");
|
||||
if (f.wr_name.value == '')
|
||||
{
|
||||
alert('이름이 입력되지 않았습니다.');
|
||||
f.wr_name.focus();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof(f.wr_password) != 'undefined')
|
||||
{
|
||||
f.wr_password.value = f.wr_password.value.replace(pattern, "");
|
||||
if (f.wr_password.value == '')
|
||||
{
|
||||
alert('비밀번호가 입력되지 않았습니다.');
|
||||
f.wr_password.focus();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
<?php if($is_guest) echo chk_captcha_js(); ?>
|
||||
|
||||
set_comment_token(f);
|
||||
|
||||
document.getElementById("btn_submit").disabled = "disabled";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function comment_box(comment_id, work)
|
||||
{
|
||||
var el_id,
|
||||
form_el = 'fviewcomment',
|
||||
respond = document.getElementById(form_el);
|
||||
|
||||
// 댓글 아이디가 넘어오면 답변, 수정
|
||||
if (comment_id)
|
||||
{
|
||||
if (work == 'c')
|
||||
el_id = 'reply_' + comment_id;
|
||||
else
|
||||
el_id = 'edit_' + comment_id;
|
||||
}
|
||||
else
|
||||
el_id = 'bo_vc_w';
|
||||
|
||||
if (save_before != el_id)
|
||||
{
|
||||
if (save_before)
|
||||
{
|
||||
document.getElementById(save_before).style.display = 'none';
|
||||
}
|
||||
|
||||
document.getElementById(el_id).style.display = '';
|
||||
document.getElementById(el_id).appendChild(respond);
|
||||
//입력값 초기화
|
||||
document.getElementById('wr_content').value = '';
|
||||
|
||||
// 댓글 수정
|
||||
if (work == 'cu')
|
||||
{
|
||||
document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
|
||||
if (typeof char_count != 'undefined')
|
||||
check_byte('wr_content', 'char_count');
|
||||
if (document.getElementById('secret_comment_'+comment_id).value)
|
||||
document.getElementById('wr_secret').checked = true;
|
||||
else
|
||||
document.getElementById('wr_secret').checked = false;
|
||||
}
|
||||
|
||||
document.getElementById('comment_id').value = comment_id;
|
||||
document.getElementById('w').value = work;
|
||||
|
||||
if(save_before)
|
||||
$("#captcha_reload").trigger("click");
|
||||
|
||||
save_before = el_id;
|
||||
}
|
||||
}
|
||||
|
||||
function comment_delete()
|
||||
{
|
||||
return confirm("이 댓글을 삭제하시겠습니까?");
|
||||
}
|
||||
|
||||
comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서 추가 (root님)
|
||||
|
||||
<?php if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) { ?>
|
||||
|
||||
$(function() {
|
||||
// sns 등록
|
||||
$("#bo_vc_send_sns").load(
|
||||
"<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>",
|
||||
function() {
|
||||
save_html = document.getElementById('bo_vc_w').innerHTML;
|
||||
}
|
||||
);
|
||||
});
|
||||
<?php } ?>
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- } 댓글 쓰기 끝 -->
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
//댓글열기
|
||||
$(".cmt_btn").click(function(e){
|
||||
e.preventDefault();
|
||||
$(this).toggleClass("cmt_btn_op");
|
||||
$("#bo_vc").toggle();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,255 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<section id="bo_w">
|
||||
<h2 class="sound_only"><?php echo $g5['title'] ?></h2>
|
||||
|
||||
<!-- 게시물 작성/수정 시작 { -->
|
||||
<form name="fwrite" id="fwrite" action="<?php echo $action_url ?>" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" style="width:<?php echo $width; ?>">
|
||||
<input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>">
|
||||
<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="sca" value="<?php echo $sca ?>">
|
||||
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||
<input type="hidden" name="sst" value="<?php echo $sst ?>">
|
||||
<input type="hidden" name="sod" value="<?php echo $sod ?>">
|
||||
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||
<?php
|
||||
$option = '';
|
||||
$option_hidden = '';
|
||||
if ($is_notice || $is_html || $is_secret || $is_mail) {
|
||||
$option = '';
|
||||
if ($is_notice) {
|
||||
$option .= PHP_EOL.'<li class="chk_box"><input type="checkbox" id="notice" name="notice" class="selec_chk" value="1" '.$notice_checked.'>'.PHP_EOL.'<label for="notice"><span></span>공지</label></li>';
|
||||
}
|
||||
if ($is_html) {
|
||||
if ($is_dhtml_editor) {
|
||||
$option_hidden .= '<input type="hidden" value="html1" name="html">';
|
||||
} else {
|
||||
$option .= PHP_EOL.'<li class="chk_box"><input type="checkbox" id="html" name="html" onclick="html_auto_br(this);" class="selec_chk" value="'.$html_value.'" '.$html_checked.'>'.PHP_EOL.'<label for="html"><span></span>html</label></li>';
|
||||
}
|
||||
}
|
||||
if ($is_secret) {
|
||||
if ($is_admin || $is_secret==1) {
|
||||
$option .= PHP_EOL.'<li class="chk_box"><input type="checkbox" id="secret" name="secret" class="selec_chk" value="secret" '.$secret_checked.'>'.PHP_EOL.'<label for="secret"><span></span>비밀글</label></li>';
|
||||
} else {
|
||||
$option_hidden .= '<input type="hidden" name="secret" value="secret">';
|
||||
}
|
||||
}
|
||||
if ($is_mail) {
|
||||
$option .= PHP_EOL.'<li class="chk_box"><input type="checkbox" id="mail" name="mail" class="selec_chk" value="mail" '.$recv_email_checked.'>'.PHP_EOL.'<label for="mail"><span></span>답변메일받기</label></li>';
|
||||
}
|
||||
}
|
||||
echo $option_hidden;
|
||||
?>
|
||||
|
||||
<?php if ($is_category) { ?>
|
||||
<div class="bo_w_select write_div">
|
||||
<label for="ca_name" class="sound_only">분류<strong>필수</strong></label>
|
||||
<select name="ca_name" id="ca_name" required>
|
||||
<option value="">분류를 선택하세요</option>
|
||||
<?php echo $category_option ?>
|
||||
</select>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="bo_w_info write_div">
|
||||
<?php if ($is_name) { ?>
|
||||
<label for="wr_name" class="sound_only">이름<strong>필수</strong></label>
|
||||
<input type="text" name="wr_name" value="<?php echo $name ?>" id="wr_name" required class="frm_input half_input required" placeholder="이름">
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($is_password) { ?>
|
||||
<label for="wr_password" class="sound_only">비밀번호<strong>필수</strong></label>
|
||||
<input type="password" name="wr_password" id="wr_password" <?php echo $password_required ?> class="frm_input half_input <?php echo $password_required ?>" placeholder="비밀번호">
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($is_email) { ?>
|
||||
<label for="wr_email" class="sound_only">이메일</label>
|
||||
<input type="text" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input half_input email " placeholder="이메일">
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<?php if ($is_homepage) { ?>
|
||||
<label for="wr_homepage" class="sound_only">홈페이지</label>
|
||||
<input type="text" name="wr_homepage" value="<?php echo $homepage ?>" id="wr_homepage" class="frm_input half_input" size="50" placeholder="홈페이지">
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
<?php if ($option) { ?>
|
||||
<div class="write_div">
|
||||
<span class="sound_only">옵션</span>
|
||||
<ul class="bo_v_option">
|
||||
<?php echo $option ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="bo_w_tit write_div">
|
||||
<label for="wr_subject" class="sound_only">제목<strong>필수</strong></label>
|
||||
|
||||
<div id="autosave_wrapper" class="write_div">
|
||||
<input type="text" name="wr_subject" value="<?php echo $subject ?>" id="wr_subject" required class="frm_input full_input required" size="50" maxlength="255" placeholder="제목">
|
||||
<?php if ($is_member) { // 임시 저장된 글 기능 ?>
|
||||
<script src="<?php echo G5_JS_URL; ?>/autosave.js"></script>
|
||||
<?php if($editor_content_js) echo $editor_content_js; ?>
|
||||
<button type="button" id="btn_autosave" class="btn_frmline">임시 저장된 글 (<span id="autosave_count"><?php echo $autosave_count; ?></span>)</button>
|
||||
<div id="autosave_pop">
|
||||
<strong>임시 저장된 글 목록</strong>
|
||||
<ul></ul>
|
||||
<div><button type="button" class="autosave_close">닫기</button></div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="write_div">
|
||||
<label for="wr_content" class="sound_only">내용<strong>필수</strong></label>
|
||||
<div class="wr_content <?php echo $is_dhtml_editor ? $config['cf_editor'] : ''; ?>">
|
||||
<?php if($write_min || $write_max) { ?>
|
||||
<!-- 최소/최대 글자 수 사용 시 -->
|
||||
<p id="char_count_desc">이 게시판은 최소 <strong><?php echo $write_min; ?></strong>글자 이상, 최대 <strong><?php echo $write_max; ?></strong>글자 이하까지 글을 쓰실 수 있습니다.</p>
|
||||
<?php } ?>
|
||||
<?php echo $editor_html; // 에디터 사용시는 에디터로, 아니면 textarea 로 노출 ?>
|
||||
<?php if($write_min || $write_max) { ?>
|
||||
<!-- 최소/최대 글자 수 사용 시 -->
|
||||
<div id="char_count_wrap"><span id="char_count"></span>글자</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php for ($i=1; $is_link && $i<=G5_LINK_COUNT; $i++) { ?>
|
||||
<div class="bo_w_link write_div">
|
||||
<label for="wr_link<?php echo $i ?>"><i class="fa fa-link" aria-hidden="true"></i><span class="sound_only"> 링크 #<?php echo $i ?></span></label>
|
||||
<input type="text" name="wr_link<?php echo $i ?>" value="<?php if($w=="u"){ echo $write['wr_link'.$i]; } ?>" id="wr_link<?php echo $i ?>" class="frm_input full_input" size="50">
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php for ($i=0; $is_file && $i<$file_count; $i++) { ?>
|
||||
<div class="bo_w_flie write_div">
|
||||
<div class="file_wr write_div">
|
||||
<label for="bf_file_<?php echo $i+1 ?>" class="lb_icon"><i class="fa fa-folder-open" aria-hidden="true"></i><span class="sound_only"> 파일 #<?php echo $i+1 ?></span></label>
|
||||
<input type="file" name="bf_file[]" id="bf_file_<?php echo $i+1 ?>" title="파일첨부 <?php echo $i+1 ?> : 용량 <?php echo $upload_max_filesize ?> 이하만 업로드 가능" class="frm_file ">
|
||||
</div>
|
||||
<?php if ($is_file_content) { ?>
|
||||
<input type="text" name="bf_content[]" value="<?php echo ($w == 'u') ? $file[$i]['bf_content'] : ''; ?>" title="파일 설명을 입력해주세요." class="full_input frm_input" size="50" placeholder="파일 설명을 입력해주세요.">
|
||||
<?php } ?>
|
||||
|
||||
<?php if($w == 'u' && $file[$i]['file']) { ?>
|
||||
<span class="file_del">
|
||||
<input type="checkbox" id="bf_file_del<?php echo $i ?>" name="bf_file_del[<?php echo $i; ?>]" value="1"> <label for="bf_file_del<?php echo $i ?>"><?php echo $file[$i]['source'].'('.$file[$i]['size'].')'; ?> 파일 삭제</label>
|
||||
</span>
|
||||
<?php } ?>
|
||||
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<?php if ($is_use_captcha) { //자동등록방지 ?>
|
||||
<div class="write_div">
|
||||
<?php echo $captcha_html ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="btn_confirm write_div">
|
||||
<a href="<?php echo get_pretty_url($bo_table); ?>" class="btn_cancel btn">취소</a>
|
||||
<button type="submit" id="btn_submit" accesskey="s" class="btn_submit btn">작성완료</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
<?php if($write_min || $write_max) { ?>
|
||||
// 글자수 제한
|
||||
var char_min = parseInt(<?php echo $write_min; ?>); // 최소
|
||||
var char_max = parseInt(<?php echo $write_max; ?>); // 최대
|
||||
check_byte("wr_content", "char_count");
|
||||
|
||||
$(function() {
|
||||
$("#wr_content").on("keyup", function() {
|
||||
check_byte("wr_content", "char_count");
|
||||
});
|
||||
});
|
||||
|
||||
<?php } ?>
|
||||
function html_auto_br(obj)
|
||||
{
|
||||
if (obj.checked) {
|
||||
result = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
|
||||
if (result)
|
||||
obj.value = "html2";
|
||||
else
|
||||
obj.value = "html1";
|
||||
}
|
||||
else
|
||||
obj.value = "";
|
||||
}
|
||||
|
||||
function fwrite_submit(f)
|
||||
{
|
||||
<?php echo $editor_js; // 에디터 사용시 자바스크립트에서 내용을 폼필드로 넣어주며 내용이 입력되었는지 검사함 ?>
|
||||
|
||||
var subject = "";
|
||||
var content = "";
|
||||
$.ajax({
|
||||
url: g5_bbs_url+"/ajax.filter.php",
|
||||
type: "POST",
|
||||
data: {
|
||||
"subject": f.wr_subject.value,
|
||||
"content": f.wr_content.value
|
||||
},
|
||||
dataType: "json",
|
||||
async: false,
|
||||
cache: false,
|
||||
success: function(data, textStatus) {
|
||||
subject = data.subject;
|
||||
content = data.content;
|
||||
}
|
||||
});
|
||||
|
||||
if (subject) {
|
||||
alert("제목에 금지단어('"+subject+"')가 포함되어있습니다");
|
||||
f.wr_subject.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (content) {
|
||||
alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
|
||||
if (typeof(ed_wr_content) != "undefined")
|
||||
ed_wr_content.returnFalse();
|
||||
else
|
||||
f.wr_content.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (document.getElementById("char_count")) {
|
||||
if (char_min > 0 || char_max > 0) {
|
||||
var cnt = parseInt(check_byte("wr_content", "char_count"));
|
||||
if (char_min > 0 && char_min > cnt) {
|
||||
alert("내용은 "+char_min+"글자 이상 쓰셔야 합니다.");
|
||||
return false;
|
||||
}
|
||||
else if (char_max > 0 && char_max < cnt) {
|
||||
alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<?php echo $captcha_js; // 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함 ?>
|
||||
|
||||
document.getElementById("btn_submit").disabled = "disabled";
|
||||
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
</section>
|
||||
<!-- } 게시물 작성/수정 끝 -->
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 62 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 318 B |
@@ -0,0 +1,302 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
|
||||
<!-- 게시판 목록 시작 { -->
|
||||
<div id="bo_gall" style="width:<?php echo $width; ?>">
|
||||
|
||||
<?php if ($is_category) { ?>
|
||||
<nav id="bo_cate">
|
||||
<h2><?php echo $board['bo_subject'] ?> 카테고리</h2>
|
||||
<ul id="bo_cate_ul">
|
||||
<?php echo $category_option ?>
|
||||
</ul>
|
||||
</nav>
|
||||
<?php } ?>
|
||||
|
||||
<form name="fboardlist" id="fboardlist" action="<?php echo G5_BBS_URL; ?>/board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">
|
||||
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||
<input type="hidden" name="sst" value="<?php echo $sst ?>">
|
||||
<input type="hidden" name="sod" value="<?php echo $sod ?>">
|
||||
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||
<input type="hidden" name="sw" value="">
|
||||
|
||||
<!-- 게시판 페이지 정보 및 버튼 시작 { -->
|
||||
<div id="bo_btn_top">
|
||||
<div id="bo_list_total">
|
||||
<span>Total <?php echo number_format($total_count) ?>건</span>
|
||||
<?php echo $page ?> 페이지
|
||||
</div>
|
||||
|
||||
<ul class="btn_bo_user">
|
||||
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>
|
||||
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
|
||||
<li>
|
||||
<button type="button" class="btn_bo_sch btn_b01 btn" title="게시판 검색"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">게시판 검색</span></button>
|
||||
</li>
|
||||
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>
|
||||
<?php if ($is_admin == 'super' || $is_auth) { ?>
|
||||
<li>
|
||||
<button type="button" class="btn_more_opt is_list_btn btn_b01 btn" title="게시판 리스트 옵션"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">게시판 리스트 옵션</span></button>
|
||||
<?php if ($is_checkbox) { ?>
|
||||
<ul class="more_opt is_list_btn">
|
||||
<li><button type="submit" name="btn_submit" value="선택삭제" onclick="document.pressed=this.value"><i class="fa fa-trash-o" aria-hidden="true"></i> 선택삭제</button></li>
|
||||
<li><button type="submit" name="btn_submit" value="선택복사" onclick="document.pressed=this.value"><i class="fa fa-files-o" aria-hidden="true"></i> 선택복사</button></li>
|
||||
<li><button type="submit" name="btn_submit" value="선택이동" onclick="document.pressed=this.value"><i class="fa fa-arrows" aria-hidden="true"></i> 선택이동</button></li>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- } 게시판 페이지 정보 및 버튼 끝 -->
|
||||
|
||||
<?php if ($is_checkbox) { ?>
|
||||
<div id="gall_allchk" class="all_chk chk_box">
|
||||
<input type="checkbox" id="chkall" onclick="if (this.checked) all_checked(true); else all_checked(false);" class="selec_chk">
|
||||
<label for="chkall">
|
||||
<span></span>
|
||||
<b class="sound_only">현재 페이지 게시물 </b> 전체선택
|
||||
</label>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<ul id="gall_ul" class="gall_row">
|
||||
<?php for ($i=0; $i<count($list); $i++) {
|
||||
|
||||
$classes = array();
|
||||
|
||||
$classes[] = 'gall_li';
|
||||
$classes[] = 'col-gn-'.$bo_gallery_cols;
|
||||
|
||||
if( $i && ($i % $bo_gallery_cols == 0) ){
|
||||
$classes[] = 'box_clear';
|
||||
}
|
||||
|
||||
if( $wr_id && $wr_id == $list[$i]['wr_id'] ){
|
||||
$classes[] = 'gall_now';
|
||||
}
|
||||
|
||||
$line_height_style = ($board['bo_gallery_height'] > 0) ? 'line-height:'.$board['bo_gallery_height'].'px' : '';
|
||||
?>
|
||||
<li class="<?php echo implode(' ', $classes); ?>">
|
||||
<div class="gall_box">
|
||||
<div class="gall_chk chk_box">
|
||||
<?php if ($is_checkbox) { ?>
|
||||
<input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>" class="selec_chk">
|
||||
<label for="chk_wr_id_<?php echo $i ?>">
|
||||
<span></span>
|
||||
<b class="sound_only"><?php echo $list[$i]['subject'] ?></b>
|
||||
</label>
|
||||
|
||||
<?php } ?>
|
||||
<span class="sound_only">
|
||||
<?php
|
||||
if ($wr_id == $list[$i]['wr_id'])
|
||||
echo "<span class=\"bo_current\">열람중</span>";
|
||||
else
|
||||
echo $list[$i]['num'];
|
||||
?>
|
||||
</span>
|
||||
</div>
|
||||
<div class="gall_con">
|
||||
<div class="gall_img" style="<?php if ($board['bo_gallery_height'] > 0) echo 'height:'.$board['bo_gallery_height'].'px;max-height:'.$board['bo_gallery_height'].'px'; ?>">
|
||||
<a href="<?php echo $list[$i]['href'] ?>">
|
||||
<?php
|
||||
if ($list[$i]['is_notice']) { // 공지사항 ?>
|
||||
<span class="is_notice" style="<?php echo $line_height_style; ?>">공지</span>
|
||||
<?php } else {
|
||||
$thumb = get_list_thumbnail($board['bo_table'], $list[$i]['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height'], false, true);
|
||||
|
||||
if($thumb['src']) {
|
||||
$img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" >';
|
||||
} else {
|
||||
$img_content = '<span class="no_image" style="'.$line_height_style.'">no image</span>';
|
||||
}
|
||||
|
||||
echo run_replace('thumb_image_tag', $img_content, $thumb);
|
||||
}
|
||||
?>
|
||||
</a>
|
||||
</div>
|
||||
<div class="gall_text_href">
|
||||
<?php if ($is_category && $list[$i]['ca_name']) { ?>
|
||||
<a href="<?php echo $list[$i]['ca_name_href'] ?>" class="bo_cate_link"><?php echo $list[$i]['ca_name'] ?></a>
|
||||
<?php } ?>
|
||||
<a href="<?php echo $list[$i]['href'] ?>" class="bo_tit">
|
||||
|
||||
<?php // echo $list[$i]['icon_reply']; ?>
|
||||
<!-- 갤러리 댓글기능 사용시 주석을 제거하세요. -->
|
||||
|
||||
<?php echo $list[$i]['subject'] ?>
|
||||
<?php
|
||||
// if ($list[$i]['file']['count']) { echo '<'.$list[$i]['file']['count'].'>'; }
|
||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||
if (isset($list[$i]['icon_hot'])) echo rtrim($list[$i]['icon_hot']);
|
||||
//if (isset($list[$i]['icon_file'])) echo rtrim($list[$i]['icon_file']);
|
||||
//if (isset($list[$i]['icon_link'])) echo rtrim($list[$i]['icon_link']);
|
||||
if (isset($list[$i]['icon_secret'])) echo rtrim($list[$i]['icon_secret']);
|
||||
?>
|
||||
<?php if ($list[$i]['comment_cnt']) { ?><span class="sound_only">댓글</span><span class="cnt_cmt"><?php echo $list[$i]['wr_comment']; ?></span><span class="sound_only">개</span><?php } ?>
|
||||
</a>
|
||||
<span class="bo_cnt"><?php echo utf8_strcut(strip_tags($list[$i]['wr_content']), 68, '..'); ?></span>
|
||||
</div>
|
||||
|
||||
<div class="gall_info">
|
||||
<span class="sound_only">작성자 </span><?php echo $list[$i]['name'] ?>
|
||||
<span class="gall_date"><span class="sound_only">작성일 </span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $list[$i]['datetime2'] ?></span>
|
||||
<span class="gall_view"><span class="sound_only">조회 </span><i class="fa fa-eye" aria-hidden="true"></i> <?php echo $list[$i]['wr_hit'] ?></span>
|
||||
</div>
|
||||
<div class="gall_option">
|
||||
<?php if ($is_good) { ?><span class="sound_only">추천</span><strong><i class="fa fa-thumbs-o-up" aria-hidden="true"></i> <?php echo $list[$i]['wr_good'] ?></strong><?php } ?>
|
||||
<?php if ($is_nogood) { ?><span class="sound_only">비추천</span><strong><i class="fa fa-thumbs-o-down" aria-hidden="true"></i> <?php echo $list[$i]['wr_nogood'] ?></strong><?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if (count($list) == 0) { echo "<li class=\"empty_list\">게시물이 없습니다.</li>"; } ?>
|
||||
</ul>
|
||||
|
||||
<!-- 페이지 -->
|
||||
<?php echo $write_pages; ?>
|
||||
<!-- 페이지 -->
|
||||
|
||||
<?php if ($list_href || $is_checkbox || $write_href) { ?>
|
||||
<div class="bo_fx">
|
||||
<?php if ($list_href || $write_href) { ?>
|
||||
<ul class="btn_bo_user">
|
||||
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>
|
||||
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
|
||||
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</form>
|
||||
|
||||
<!-- 게시판 검색 시작 { -->
|
||||
<div class="bo_sch_wrap">
|
||||
<fieldset class="bo_sch">
|
||||
<h3>검색</h3>
|
||||
<form name="fsearch" method="get">
|
||||
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||
<input type="hidden" name="sca" value="<?php echo $sca ?>">
|
||||
<input type="hidden" name="sop" value="and">
|
||||
<label for="sfl" class="sound_only">검색대상</label>
|
||||
<select name="sfl" id="sfl">
|
||||
<?php echo get_board_sfl_select_options($sfl); ?>
|
||||
</select>
|
||||
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
|
||||
<div class="sch_bar">
|
||||
<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder="검색어를 입력해주세요">
|
||||
<button type="submit" value="검색" class="sch_btn"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>
|
||||
</div>
|
||||
<button type="button" class="bo_sch_cls"><i class="fa fa-times" aria-hidden="true"></i><span class="sound_only">닫기</span></button>
|
||||
</form>
|
||||
</fieldset>
|
||||
<div class="bo_sch_bg"></div>
|
||||
</div>
|
||||
<script>
|
||||
// 게시판 검색
|
||||
$(".btn_bo_sch").on("click", function() {
|
||||
$(".bo_sch_wrap").toggle();
|
||||
})
|
||||
$('.bo_sch_bg, .bo_sch_cls').click(function(){
|
||||
$('.bo_sch_wrap').hide();
|
||||
});
|
||||
</script>
|
||||
<!-- } 게시판 검색 끝 -->
|
||||
</div>
|
||||
|
||||
<?php if($is_checkbox) { ?>
|
||||
<noscript>
|
||||
<p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
|
||||
</noscript>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($is_checkbox) { ?>
|
||||
<script>
|
||||
function all_checked(sw) {
|
||||
var f = document.fboardlist;
|
||||
|
||||
for (var i=0; i<f.length; i++) {
|
||||
if (f.elements[i].name == "chk_wr_id[]")
|
||||
f.elements[i].checked = sw;
|
||||
}
|
||||
}
|
||||
|
||||
function fboardlist_submit(f) {
|
||||
var chk_count = 0;
|
||||
|
||||
for (var i=0; i<f.length; i++) {
|
||||
if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
|
||||
chk_count++;
|
||||
}
|
||||
|
||||
if (!chk_count) {
|
||||
alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(document.pressed == "선택복사") {
|
||||
select_copy("copy");
|
||||
return;
|
||||
}
|
||||
|
||||
if(document.pressed == "선택이동") {
|
||||
select_copy("move");
|
||||
return;
|
||||
}
|
||||
|
||||
if(document.pressed == "선택삭제") {
|
||||
if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))
|
||||
return false;
|
||||
|
||||
f.removeAttribute("target");
|
||||
f.action = g5_bbs_url+"/board_list_update.php";
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 선택한 게시물 복사 및 이동
|
||||
function select_copy(sw) {
|
||||
var f = document.fboardlist;
|
||||
|
||||
if (sw == 'copy')
|
||||
str = "복사";
|
||||
else
|
||||
str = "이동";
|
||||
|
||||
var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
|
||||
|
||||
f.sw.value = sw;
|
||||
f.target = "move";
|
||||
f.action = g5_bbs_url+"/move.php";
|
||||
f.submit();
|
||||
}
|
||||
|
||||
// 게시판 리스트 관리자 옵션
|
||||
jQuery(function($){
|
||||
$(".btn_more_opt.is_list_btn").on("click", function(e) {
|
||||
e.stopPropagation();
|
||||
$(".more_opt.is_list_btn").toggle();
|
||||
});
|
||||
$(document).on("click", function (e) {
|
||||
if(!$(e.target).closest('.is_list_btn').length) {
|
||||
$(".more_opt.is_list_btn").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- } 게시판 목록 끝 -->
|
||||
@@ -0,0 +1,375 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* 게시판 목록 */
|
||||
#bo_cate {margin:25px 0}
|
||||
#bo_cate h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_cate ul {zoom:1}
|
||||
#bo_cate ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_cate li {display:inline-block;padding:2px}
|
||||
#bo_cate a {display:block;line-height:28px;padding:5px 15px;border-radius:30px;border:1px solid #d6e9ff;color:#6794d3}
|
||||
#bo_cate a:focus, #bo_cate a:hover, #bo_cate a:active {text-decoration:none;background:#3a8afd;color:#fff}
|
||||
#bo_cate #bo_cate_on {z-index:2;background:#3a8afd;color:#fff;font-weight:bold;border:1px solid #3a8afd;
|
||||
-webkit-box-shadow:inset 0 2px 5px rgb(33, 135, 202);
|
||||
-moz-box-shadow:inset 0 2px 5px rgb(33, 135, 202);
|
||||
box-shadow:inset 0 2px 5px rgb(33, 135, 202)}
|
||||
.td_subject img {margin-left:3px}
|
||||
|
||||
.selec_chk {position:absolute;top:0;left:0;width:0;height:0;opacity:0;outline:0;z-index:-1;overflow:hidden}
|
||||
.chk_box {position:relative}
|
||||
.chk_box input[type="checkbox"] + label {position:relative;padding-left:20px;color:#676e70;vertical-align:baseline}
|
||||
.chk_box input[type="checkbox"] + label:hover{color:#2172f8}
|
||||
.chk_box input[type="checkbox"] + label span {position:absolute;top:10px;left:10px;width:15px;height:15px;display:block;background:#fff;border:1px solid #d0d4df;border-radius:3px}
|
||||
.write_div .chk_box input[type="checkbox"] + label, .bo_vc_w .chk_box input[type="checkbox"] + label {padding-left:20px}
|
||||
.write_div .chk_box input[type="checkbox"] + label span, .bo_vc_w .chk_box input[type="checkbox"] + label span {position:absolute;top:2px;left:0;width:15px;height:15px;display:block;margin:0;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}
|
||||
.all_chk.chk_box input[type="checkbox"] + label span {top:0;left:0}
|
||||
|
||||
|
||||
/* 갤러리 목록 */
|
||||
#bo_gall h2 {margin:0;padding:0;width:1px;height:1px;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_gall #gall_ul {margin:10px -10px 0;padding:0;list-style:none;zoom:1}
|
||||
#bo_gall #gall_ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_gall .gall_li {}
|
||||
#bo_gall .gall_li .gall_chk {position:absolute;top:0;left:0;padding:5px;z-index:1}
|
||||
#bo_gall .gall_box {position:relative;margin:0 0 50px 0;border-radius:0 0 2px 2px}
|
||||
#bo_gall .gall_con {position:relative}
|
||||
|
||||
.gall_row .col-gn-0,.gall_row .col-gn-1,.gall_row .col-gn-2,.gall_row .col-gn-3,.gall_row .col-gn-4,.gall_row .col-gn-5,.gall_row .col-gn-6,.gall_row .col-gn-7,.gall_row .col-gn-8,.gall_row .col-gn-9,.gall_row .col-gn-10 {position:relative;min-height:1px;padding-left:10px;*padding-left:0;padding-right:10px;*padding-right:0;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left:0}
|
||||
.gall_row .col-gn-0,.gall_row .col-gn-1 {width:100%}
|
||||
.gall_row .col-gn-2 {width:50%}
|
||||
.gall_row .col-gn-3 {width:33.33333333%}
|
||||
.gall_row .col-gn-4 {width:25%}
|
||||
.gall_row .col-gn-5 {width:20%}
|
||||
.gall_row .col-gn-6 {width:16.66666667%}
|
||||
.gall_row .col-gn-7 {width:14.28571428%}
|
||||
.gall_row .col-gn-8 {width:12.5%}
|
||||
.gall_row .col-gn-9 {width:11.11111111%}
|
||||
.gall_row .col-gn-10 {width:10%}
|
||||
|
||||
.gall_row .box_clear {clear:both}
|
||||
|
||||
#bo_gall .gall_now .gall_text_href a {color:#ff3061}
|
||||
|
||||
#bo_gall .gall_href a:link, #bo_gall .gall_href a:focus, #bo_gall .gall_href a:hover {text-decoration:none}
|
||||
#bo_gall .gall_img {border-bottom:1px solid #eee;text-align:center;overflow:hidden}
|
||||
#bo_gall .gall_img a,#bo_gall .gall_img .no_image,#bo_gall .gall_img .is_notice {display:block}
|
||||
#bo_gall .gall_img img, #bo_gall .gall_img video {max-width:100%;height:auto !important}
|
||||
#bo_gall .gall_img span {display:inline-block;background:#eaeaea;text-align:center;text-transform:uppercase;font-weight:bold;font-size:1.25em;color:#777}
|
||||
|
||||
#bo_gall .gall_text_href {margin:10px 0}
|
||||
#bo_gall .gall_text_href a {font-weight:bold}
|
||||
#bo_gall .gall_text_href img {margin:0 0 0 4px}
|
||||
#bo_gall .bo_tit {display:block;line-height:30px;font-weight:bold;color:#000;font-size:1.2em}
|
||||
#bo_gall .bo_tit .cnt_cmt {background:#e9eff5;color:#3a8afd;font-size:11px;height:16px;line-height:16px;padding:0 5px;border-radius:3px;vertical-align:middle}
|
||||
|
||||
#bo_gall .bo_cnt {color:#acacac;line-height:18px}
|
||||
#bo_gall .profile_img img {border-radius:50%}
|
||||
#bo_gall .bo_tit .fa-download {width:16px;height:16px;line-height:16px;background:#e89f31;color:#fff;text-align:center;font-size:10px;border-radius:2px;margin-right:2px;vertical-align:middle}
|
||||
#bo_gall .bo_tit .fa-link {width:16px;height:16px;line-height:16px;background:#ad68d8;color:#fff;text-align:center;font-size:10px;border-radius:2px;margin-right:2px;vertical-align:middle;font-weight:normal}
|
||||
#bo_gall .bo_tit .fa-link {width:16px;height:16px;line-height:16px;background:#ad68d8;color:#fff;text-align:center;font-size:10px;border-radius:2px;margin-right:2px;vertical-align:middle;margin-right:2px}
|
||||
#bo_gall .bo_tit .new_icon {display:inline-block;width:16px;line-height:16px;font-size:0.825em;color:#23db79;background:#b9ffda;text-align:center;border-radius:2px;margin-left:2px;font-weight:bold;vertical-align:baseline}
|
||||
#bo_gall .bo_tit .hot_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#fff;background:#e52955;text-align:center;border-radius:2px;vertical-align:middle;margin-right:2px}
|
||||
#bo_gall .bo_tit .fa-lock {display:inline-block;line-height:16px;color:#999;text-align:center;vertical-align:middle}
|
||||
|
||||
#bo_gall .gall_info {line-height:1.5em;line-height:20px}
|
||||
#bo_gall .gall_info strong {display:inline-block;margin:0}
|
||||
#bo_gall .gall_info i {font-size:12px}
|
||||
#bo_gall .gall_info .gall_date,
|
||||
#bo_gall .gall_info .gall_view {display:inline-block;margin-left:10px;color:#777}
|
||||
|
||||
#bo_gall .gall_option {position:absolute;top:10px;right:10px}
|
||||
#bo_gall .gall_option strong {background:#fff;padding:5px 10px;border-radius:30px;-webkit-box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2);
|
||||
-moz-box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2);
|
||||
box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2)}
|
||||
|
||||
/* 게시판 목록 공통 */
|
||||
#bo_btn_top {margin:10px 0}
|
||||
#bo_btn_top:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_fx {margin-bottom:5px;float:right;zoom:1}
|
||||
.bo_fx:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_fx ul {margin:0;padding:0;list-style:none}
|
||||
#bo_list_total {float:left;line-height:34px;font-size:0.92em;color:#4e546f}
|
||||
|
||||
.btn_bo_user {float:right;margin:0;padding:0;list-style:none}
|
||||
.btn_bo_user li {float:left;width:40px;text-align:center;margin-left:5px;background:#fff}
|
||||
.btn_bo_user > li {position:relative}
|
||||
.btn_bo_adm {float:left}
|
||||
.btn_bo_adm li {float:left;margin-right:5px}
|
||||
.btn_bo_adm input {padding:0 8px;border:0;background:#d4d4d4;color:#666;text-decoration:none;vertical-align:middle}
|
||||
.bo_notice td {background:#fff6fa !important;border-bottom:1px solid #f8e6ee}
|
||||
.bo_notice td a {font-weight:bold}
|
||||
.bo_notice .notice_icon {display:inline-block;line-height:25px;border-radius:5px;font-weight:bold;color:#f9267f}
|
||||
|
||||
.more_opt {display:none;position:absolute;top:45px;right:0;background:#fff;border:1px solid #b8bfc4;z-index:999}
|
||||
.more_opt:before {content:"";position:absolute;top:-8px;right:13px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #b8bfc4 transparent}
|
||||
.more_opt:after {content:"";position:absolute;top:-6px;right:13px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #fff transparent}
|
||||
.more_opt li {border-bottom:1px solid #f1f1f1;padding:10px;float:inherit;width:90px;margin:0;color:#6b757c;text-align:left}
|
||||
.more_opt li:last-child {border-bottom:0}
|
||||
.more_opt li button, .more_opt li a {width:100%;border:0;background:#fff;color:#6b757c}
|
||||
.more_opt li:hover a,
|
||||
.more_opt li:hover button {color:#000}
|
||||
.more_opt li i {float:right;line-height:20px}
|
||||
|
||||
.td_num strong {color:#000}
|
||||
.bo_cate_link {display:inline-block;background:#e2eaf6;color:#3a8afd;font-weight:normal !important;height:20px;line-height:10px;padding:5px 8px;border-radius:5px;font-size:0.95em} /* 글제목줄 분류스타일 */
|
||||
.bo_cate_link:hover {text-decoration:none}
|
||||
.bo_current {color:#e8180c}
|
||||
#bo_list .profile_img {display:inline-block;margin-right:5px}
|
||||
#bo_list .profile_img img {border-radius:50%}
|
||||
#bo_list .cnt_cmt {display:inline-block;margin:0 0 0 3px;font-weight:bold;color:#ed6478;font-size:0.86em}
|
||||
|
||||
#bo_gall li.empty_list {padding:85px 0;text-align:center}
|
||||
|
||||
.bo_sch_wrap {display:none;width:100%;height:100%;position:fixed;top:0;left:0;z-index:999}
|
||||
.bo_sch {position:absolute;top:50%;left:50%;background:#fff;text-align:left;width:330px;max-height:300px;margin-left:-125px;margin-top:-180px;overflow-y:auto;border-radius:5px;-webkit-box-shadow:1px 1px 18px rgba(0,0,0,0.2);-moz-box-shadow:1px 1px 18px rgba(0,0,0,0.2);box-shadow:1px 1px 18px rgba(0,0,0,0.2);border:1px solid #dde7e9;background:#fff;border-radius:3px}
|
||||
.bo_sch:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_sch h3 {padding:15px;border-bottom:1px solid #e8e8e8}
|
||||
.bo_sch legend {background:red}
|
||||
.bo_sch form {padding:15px;display:block}
|
||||
.bo_sch select {border:0;width:100%;height:40px;border:1px solid #d0d3db;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075)}
|
||||
.bo_sch .sch_bar {display:inline-block;width:100%;clear:both;margin-top:15px;border:1px solid #d0d3db;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075)}
|
||||
.bo_sch .sch_input {width:250px;height:38px;border:0;padding:0;background-color:transparent;float:left}
|
||||
.bo_sch .sch_btn {height:38px;float:right;color:#656565;background:none;border:0;width:40px;font-size:15px}
|
||||
.bo_sch .bo_sch_cls {position:absolute;right:0;top:0;color:#b5b8bb;border:0;padding:12px 15px;font-size:16px;background:#fff}
|
||||
.bo_sch_bg {background:#000;background:rgba(0,0,0,0.1);width:100%;height:100%}
|
||||
|
||||
|
||||
/* 게시판 쓰기 */
|
||||
#char_count_desc {display:block;margin:0 0 5px;padding:0}
|
||||
#char_count_wrap {margin:5px 0 0;text-align:right}
|
||||
#char_count {font-weight:bold}
|
||||
|
||||
#autosave_wrapper {position:relative}
|
||||
#autosave_pop {display:none;z-index:10;position:absolute !important;top:34px;right:0;width:350px;height:auto !important;height:180px;max-height:180px;border:1px solid #565656;background:#fff;
|
||||
-webkit-box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2);
|
||||
-moz-box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2);
|
||||
box-shadow:2px 2px 3px 0px rgba(0,0,0,0.2)}
|
||||
#autosave_pop:before {content:"";position:absolute;top:-8px;right:45px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #000 transparent}
|
||||
#autosave_pop:after {content:"";position:absolute;top:-7px;right:45px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #fff transparent}
|
||||
html.no-overflowscrolling #autosave_pop {height:auto;max-height:10000px !important} /* overflow 미지원 기기 대응 */
|
||||
#autosave_pop strong {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#autosave_pop div {text-align:center;margin:0 !important}
|
||||
#autosave_pop button {margin:0;padding:0;border:0}
|
||||
#autosave_pop ul {padding:15px;border-top:1px solid #e9e9e9;list-style:none;overflow-y:scroll;height:130px;border-bottom:1px solid #e8e8e8}
|
||||
#autosave_pop li {padding:8px 5px;border-bottom:1px solid #fff;background:#eee;zoom:1}
|
||||
#autosave_pop li:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#autosave_pop a {display:block;float:left}
|
||||
#autosave_pop span {display:block;float:right;font-size:0.92em;font-style:italic;color:#999}
|
||||
.autosave_close {cursor:pointer;width:100%;height:30px;background:none;color:#888;font-weight:bold;font-size:0.92em}
|
||||
.autosave_close:hover {background:#f3f3f3;color:#3597d9}
|
||||
.autosave_content {display:none}
|
||||
.autosave_del {background:url(./img/close_btn.png) no-repeat 50% 50%;text-indent:-999px;overflow:hidden;height:20px;width:20px}
|
||||
|
||||
/* 게시판 읽기 */
|
||||
#bo_v {margin-bottom:20px;background:#fff;box-sizing:border-box}
|
||||
|
||||
#bo_v_table {position:absolute;top:0;right:16px;margin:0;padding:0 5px;height:25px;background:#ff3061;color:#fff;font-weight:bold;line-height:2.2em}
|
||||
|
||||
#bo_v_title {}
|
||||
#bo_v_title .bo_v_cate {display:inline-block;line-height:20px;background:#e2eaf6;color:#3a8afd;padding:0 10px;border-radius:3px;}
|
||||
#bo_v_title .bo_v_tit {display:block;font-size:2em;margin:5px 0 0;word-break:break-all}
|
||||
|
||||
#bo_v_info {margin:0;border-bottom:1px solid #f1f1f1;color:#666}
|
||||
#bo_v_info:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_info h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
|
||||
#bo_v_info .profile_info {margin:20px 0 10px;display:inline-block;float:left}
|
||||
#bo_v_info .profile_info .pf_img {float:left;margin-right:10px}
|
||||
#bo_v_info .profile_info .pf_img img {border-radius:50%;width:50px;height:50px}
|
||||
#bo_v_info .profile_info .profile_info_ct {float:left;padding:5px 0;line-height:18px}
|
||||
|
||||
#bo_v_info strong {display:inline-block;margin:0 10px 0 0;font-weight:normal}
|
||||
#bo_v_info .sv_member,
|
||||
#bo_v_info .sv_guest,
|
||||
#bo_v_info .member,
|
||||
#bo_v_info .guest {font-weight:bold}
|
||||
#bo_v_info .profile_img {display:none}
|
||||
#bo_v_info .sv_member {color:#000}
|
||||
#bo_v_info .if_date {margin:0;color:#888}
|
||||
|
||||
#bo_v_file h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_v_file ul {margin:0;list-style:none}
|
||||
#bo_v_file li {padding:15px;position:relative;margin:10px 0;border:1px solid #dfdfdf;border-radius:5px;
|
||||
-webkit-box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%);
|
||||
-moz-box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%);
|
||||
box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%)}
|
||||
#bo_v_file li i {float:left;color:#b2b2b2;font-size:2.35em;margin-right:20px}
|
||||
#bo_v_file a {float:left;display:block;text-decoration:none;word-wrap:break-word;color:#000}
|
||||
#bo_v_file a:focus, #bo_v_file li:hover a, #bo_v_file a:active {text-decoration:underline;color:#3a8afd}
|
||||
#bo_v_file img {float:left;margin:0 10px 0 0}
|
||||
#bo_v_file .bo_v_file_cnt {color:#b2b2b2;font-size:0.92em}
|
||||
#bo_v_file li:hover {border-color:#bed4f4;color:#bed4f4}
|
||||
#bo_v_file li:hover i {color:#3a8afd}
|
||||
#bo_v_file li:hover .bo_v_file_cnt {color:#99c2fc}
|
||||
|
||||
|
||||
#bo_v_link h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_v_file ul {margin:0;list-style:none}
|
||||
#bo_v_link li {padding:15px;position:relative;margin:10px 0;border:1px solid #dfdfdf;border-radius:5px;
|
||||
-webkit-box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%);
|
||||
-moz-box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%);
|
||||
box-shadow:1px 1px 5px 0px hsl(232, 36%, 96%)}
|
||||
#bo_v_link li i {float:left;color:#b2b2b2;font-size:2.35em;margin-right:20px}
|
||||
#bo_v_link a {float:left;display:block;text-decoration:none;word-wrap:break-word;color:#000}
|
||||
#bo_v_link a:focus, #bo_v_link li:hover a, #bo_v_link a:active {text-decoration:underline;color:#3a8afd}
|
||||
#bo_v_link .bo_v_link_cnt {color:#b2b2b2;font-size:0.92em}
|
||||
#bo_v_link li:hover {border-color:#bed4f4;color:#bed4f4}
|
||||
#bo_v_link li:hover i {color:#3a8afd}
|
||||
#bo_v_link li:hover .bo_v_link_cnt {color:#99c2fc}
|
||||
|
||||
|
||||
#bo_v_top {zoom:1}
|
||||
#bo_v_top:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_top h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_v_top ul {padding:0;list-style:none;word-break:break-all}
|
||||
|
||||
#bo_v_bot {zoom:1}
|
||||
#bo_v_bot:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_bot h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_v_bot ul {padding:0;list-style:none}
|
||||
|
||||
.bo_v_com {margin:20px 0;float:right}
|
||||
.bo_v_com > li {position:relative;float:left;margin-left:5px}
|
||||
|
||||
.bo_v_nb {margin:20px 0;position:relative;clear:both;text-align:left}
|
||||
.bo_v_nb:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_v_nb li {border-top:1px solid #f1f1f1;padding:13px}
|
||||
.bo_v_nb li:last-child {border-bottom:1px solid #f1f1f1}
|
||||
.bo_v_nb li:hover {background:#f6f6f6}
|
||||
.bo_v_nb li i {font-size:13px;color:#b3b3b3}
|
||||
.bo_v_nb li .nb_tit {display:inline-block;padding-right:20px;color:#b3b3b3}
|
||||
.bo_v_nb li .nb_date {float:right;color:#b3b3b3}
|
||||
|
||||
#bo_v_atc {min-height:200px;height:auto !important;height:200px}
|
||||
#bo_v_atc_title {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
|
||||
#bo_v_img {width:100%;overflow:hidden;zoom:1}
|
||||
#bo_v_img:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_img a.view_image {display:block}
|
||||
#bo_v_img img {margin-bottom:20px;max-width:100%;height:auto}
|
||||
|
||||
#bo_v_con {margin:10px 0 30px;width:100%;line-height:1.7em;min-height:200px;word-break:break-all;overflow:hidden}
|
||||
#bo_v_con a {color:#000;text-decoration:underline}
|
||||
#bo_v_con img {max-width:100%;height:auto}
|
||||
|
||||
#bo_v_act {margin-bottom:30px;text-align:center}
|
||||
#bo_v_act .bo_v_act_gng {position:relative}
|
||||
#bo_v_act a {margin-right:5px;vertical-align:middle;color:#4a5158}
|
||||
#bo_v_act a:hover {background-color:#fff;color:#ff484f;border-color:#ff484f}
|
||||
#bo_v_act i {font-size:1.4em;margin-right:5px}
|
||||
#bo_v_act_good, #bo_v_act_nogood {display:none;position:absolute;top:30px;left:0;z-index:9999;padding:10px 0;width:165px;background:#ff3061;color:#fff;text-align:center}
|
||||
#bo_v_act .bo_v_good {display:inline-block;border:1px solid #dedede;width:70px;line-height:46px;border-radius:30px}
|
||||
#bo_v_act .bo_v_nogood {display:inline-block;border:1px solid #dedede;width:70px;line-height:46px;border-radius:30px}
|
||||
|
||||
#bo_v_sns {padding:0;list-style:none;zoom:1;float:left;display:inline-block}
|
||||
#bo_v_sns:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_sns li {float:left;width:135px;margin-right:5px;text-align:left}
|
||||
#bo_v_sns li a {height:35px;line-height:35px;text-align:center;border-radius:5px;color:#fff;font-size:0.95em}
|
||||
#bo_v_sns li img {vertical-align:middle;margin-right:5px}
|
||||
#bo_v_sns li .sns_f {display:block;background:#3b5997}
|
||||
#bo_v_sns li .sns_t {display:block;background:#09aeee}
|
||||
#bo_v_sns li .sns_g {display:block;background:#ea4026}
|
||||
#bo_v_sns li .sns_k {display:block;background:#fbe300}
|
||||
|
||||
#bo_v_share {position:relative;padding:20px 0}
|
||||
#bo_v_share:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_v_share .btn {padding:0 10px;color:#555;font-weight:normal;font-size:1em;width:80px;line-height:35px;height:35px;border-color:#d5d5d5;border-radius:5px}
|
||||
#bo_v_share .btn:hover {background:#fff}
|
||||
#bo_v_share .btn i {margin-right:5px;color:#4b5259;vertical-align:middle}
|
||||
|
||||
|
||||
/* 게시판 댓글 */
|
||||
.cmt_btn {width:100%;text-align:left;border:0;border-bottom:1px solid #f0f0f0;background:#fff;font-weight:bold;margin:30px 0 0px;padding:0 0 15px}
|
||||
.cmt_btn span.total {position:relative;display:inline-block;margin-right:5px;font-size:1em;color:#3a8afd}
|
||||
.cmt_btn span.cmt_more {float:right;display:inline-block;width:15px;height:10px;background:url(./img/btn_cmt.png) no-repeat right 2px;margin-top:5px}
|
||||
.cmt_btn_op span.cmt_more {background-position:right -8px}
|
||||
.cmt_btn b {font-size:1.2em;color:#000}
|
||||
.cmt_btn span.total:after {position:absolute;bottom:-17px;left:0;display:inline-block;background:#3a8afd;content:"";width:100%;height:2px}
|
||||
#bo_vc {}
|
||||
#bo_vc h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_vc article {margin:20px 0;position:relative;border-bottom:1px solid #f0f0f0}
|
||||
#bo_vc article:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_vc article .profile_img img {border-radius:50%}
|
||||
#bo_vc article .pf_img {float:left;margin-right:10px}
|
||||
#bo_vc article .pf_img img {border-radius:50%;width:50px;height:50px}
|
||||
#bo_vc article .cm_wrap {float:left;max-width:870px;width:90%}
|
||||
#bo_vc header {position:relative;width:100%}
|
||||
#bo_vc header:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_vc header .profile_img {display:none}
|
||||
#bo_vc header .icon_reply {position:absolute;top:15px;left:-20px}
|
||||
#bo_vc .member, #bo_vc .guest, #bo_vc .sv_member, #bo_vc .sv_guest {font-weight:bold}
|
||||
.bo_vc_hdinfo {color:#777}
|
||||
#bo_vc h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_vc .cmt_contents {line-height:1.8em;padding:0 0 20px}
|
||||
#bo_vc p a {text-decoration:underline}
|
||||
#bo_vc p a.s_cmt {text-decoration:underline;color:#ed6479}
|
||||
#bo_vc_empty {margin:0;padding:80px 0 !important;color:#777;text-align:center}
|
||||
#bo_vc #bo_vc_winfo {float:left}
|
||||
#bo_vc .bo_vl_opt {position:absolute;top:0;right:0}
|
||||
|
||||
.bo_vc_act {display:none;position:absolute;right:0;top:40px;width:58px;text-align:right;border:1px solid #b8bfc4;margin:0;list-style:none;background:#fff;zoom:1;z-index:9999}
|
||||
.bo_vc_act:before {content:"";position:absolute;top:-8px;right:5px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #b8bfc4 transparent}
|
||||
.bo_vc_act:after {content:"";position:absolute;top:-6px;right:5px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #fff transparent}
|
||||
.bo_vc_act li {border-bottom:1px solid #f0f0f0}
|
||||
.bo_vc_act li:last-child {border-bottom:0}
|
||||
.bo_vc_act li a {display:inline-block;padding:10px 15px}
|
||||
.bo_vc_act li a:hover {color:#3a8afd}
|
||||
|
||||
.bo_vc_w {position:relative;margin:10px 0;display:block}
|
||||
.bo_vc_w:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_vc_w h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
.bo_vc_w #char_cnt {display:block;margin:0 0 5px}
|
||||
.bo_vc_w textarea {border:1px solid #ccc;background:#fff;color:#000;vertical-align:middle;border-radius:3px;padding:5px;width:100%;height:120px;
|
||||
-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1)}
|
||||
#wr_secret {}
|
||||
.bo_vc_w_info {margin:10px 0;float:left}
|
||||
.bo_vc_w_info:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_vc_w_info .frm_input {float:left;margin-right:5px}
|
||||
.bo_vc_w_info #captcha {padding-top:10px;display:block;clear:both}
|
||||
.bo_vc_w .btn_confirm {clear:both;margin-top:10px}
|
||||
.bo_vc_w .btn_confirm label {display:inline-block;margin-right:10px;border-radius:3px;font-size:1.5em;text-align:center}
|
||||
.bo_vc_w .btn_submit {height:45px;padding:0 20px;border-radius:3px;font-weight:bold;font-size:1.083em}
|
||||
.bo_vc_w .btn_confirm .secret_cm label {font-size:1em !important}
|
||||
.bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.secret_cm {display:inline-block;float:left}
|
||||
|
||||
#bo_vc_send_sns {display:inline-block;float:left}
|
||||
#bo_vc_sns {display:inline-block;margin:0;padding:0;list-style:none;zoom:1}
|
||||
#bo_vc_sns:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_vc_sns li {float:left;margin:0 5px 0 0}
|
||||
#bo_vc_sns .sns_li_f {border-radius:3px;background:#3a589b;height:40px;line-height:40px;padding:0 0 0 10px}
|
||||
#bo_vc_sns .sns_li_t {border-radius:3px;background:#00aced;height:40px;line-height:40px;padding:0 0 0 10px}
|
||||
#bo_vc_sns .sns_li_off {background:#bbb}
|
||||
#bo_vc_sns a {display:inline-block;padding:0 15px 0 5px}
|
||||
#bo_vc_sns input {margin:0 5px 0 0}
|
||||
|
||||
/*글쓰기*/
|
||||
#bo_w .bo_v_option li {display:inline-block;float:left;text-align:left;margin:0 5px 0 0}
|
||||
#bo_w .bo_v_option li label {vertical-align:baseline}
|
||||
#bo_w .bo_v_option .chk_box input[type="checkbox"] + label span {margin-left:0;margin-right:5px}
|
||||
#bo_w .write_div {margin:10px 0;position:relative}
|
||||
#bo_w .write_div:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_w .bo_w_info:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_w .bo_w_info .frm_input {float:left;margin-bottom:1%}
|
||||
#bo_w #wr_password, #bo_w #wr_homepage {margin-left:1%}
|
||||
#bo_w .wr_content.smarteditor2 iframe {background:#fff}
|
||||
#bo_w .bo_w_tit {position:relative}
|
||||
#bo_w .bo_w_tit .frm_input {padding-right:120px}
|
||||
#bo_w .bo_w_tit #btn_autosave {position:absolute;top:5px;right:5px;line-height:30px;height:30px}
|
||||
#bo_w .bo_w_link label {position:absolute;top:1px;left:1px;border-radius:3px 0 0 3px;height:38px;line-height:38px;width:40px;font-size:1.2em;text-align:center;color:#b2b2b2}
|
||||
#bo_w .bo_w_link .frm_input {padding-left:50px}
|
||||
#bo_w .bo_w_flie .lb_icon {position:absolute;top:0px;left:0px;border-radius:3px 0 0 3px;height:38px;line-height:38px;width:40px;font-size:1.2em;text-align:center;color:#b2b2b2}
|
||||
#bo_w .bo_w_flie .frm_file {padding-left:50px;margin-top:3px}
|
||||
#bo_w .bo_w_flie .file_wr {position:relative;border:1px solid #ccc;background:#fff;color:#000;vertical-align:middle;border-radius:3px;padding:5px;height:40px;margin:0}
|
||||
#bo_w .bo_w_flie .frm_input {margin:10px 0 0}
|
||||
#bo_w .bo_w_flie .file_del {position:absolute;top:10px;right:10px;font-size:0.92em;color:#7d7d7d}
|
||||
#bo_w .bo_w_select select {border:1px solid #d0d3db;width:100%;height:40px;border-radius:3px}
|
||||
#bo_w .btn_submit {padding:0 20px;font-size:1.167em}
|
||||
#bo_w .btn_cancel {border-radius:3px;font-size:1.167em}
|
||||
@@ -0,0 +1,300 @@
|
||||
<?php
|
||||
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
|
||||
|
||||
<!-- 게시물 읽기 시작 { -->
|
||||
|
||||
<article id="bo_v" style="width:<?php echo $width; ?>">
|
||||
<header>
|
||||
<h2 id="bo_v_title">
|
||||
<?php if ($category_name) { ?>
|
||||
<span class="bo_v_cate"><?php echo $view['ca_name']; // 분류 출력 끝 ?></span>
|
||||
<?php } ?>
|
||||
<span class="bo_v_tit">
|
||||
<?php
|
||||
echo cut_str(get_text($view['wr_subject']), 70); // 글제목 출력
|
||||
?></span>
|
||||
</h2>
|
||||
</header>
|
||||
|
||||
<section id="bo_v_info">
|
||||
<h2>페이지 정보</h2>
|
||||
<div class="profile_info">
|
||||
<div class="pf_img"><?php echo get_member_profile_img($view['mb_id']) ?></div>
|
||||
<div class="profile_info_ct">
|
||||
<span class="sound_only">작성자</span> <strong><?php echo $view['name'] ?><?php if ($is_ip_view) { echo " ($ip)"; } ?></strong><br>
|
||||
<span class="sound_only">댓글</span><strong><a href="#bo_vc"> <i class="fa fa-commenting-o" aria-hidden="true"></i> <?php echo number_format($view['wr_comment']) ?>건</a></strong>
|
||||
<span class="sound_only">조회</span><strong><i class="fa fa-eye" aria-hidden="true"></i> <?php echo number_format($view['wr_hit']) ?>회</strong>
|
||||
<strong class="if_date"><span class="sound_only">작성일</span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo date("y-m-d H:i", strtotime($view['wr_datetime'])) ?></strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 게시물 상단 버튼 시작 { -->
|
||||
<div id="bo_v_top">
|
||||
<?php ob_start(); ?>
|
||||
|
||||
<ul class="btn_bo_user bo_v_com">
|
||||
<li><a href="<?php echo $list_href ?>" class="btn_b01 btn" title="목록"><i class="fa fa-list" aria-hidden="true"></i><span class="sound_only">목록</span></a></li>
|
||||
<?php if ($reply_href) { ?><li><a href="<?php echo $reply_href ?>" class="btn_b01 btn" title="답변"><i class="fa fa-reply" aria-hidden="true"></i><span class="sound_only">답변</span></a></li><?php } ?>
|
||||
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01 btn" title="글쓰기"><i class="fa fa-pencil" aria-hidden="true"></i><span class="sound_only">글쓰기</span></a></li><?php } ?>
|
||||
<?php if($update_href || $delete_href || $copy_href || $move_href || $search_href) { ?>
|
||||
<li>
|
||||
<button type="button" class="btn_more_opt is_view_btn btn_b01 btn" title="게시판 리스트 옵션"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">게시판 리스트 옵션</span></button>
|
||||
<ul class="more_opt is_view_btn">
|
||||
<?php if ($update_href) { ?><li><a href="<?php echo $update_href ?>">수정<i class="fa fa-pencil-square-o" aria-hidden="true"></i></a></li><?php } ?>
|
||||
<?php if ($delete_href) { ?><li><a href="<?php echo $delete_href ?>" onclick="del(this.href); return false;">삭제<i class="fa fa-trash-o" aria-hidden="true"></i></a></li><?php } ?>
|
||||
<?php if ($copy_href) { ?><li><a href="<?php echo $copy_href ?>" onclick="board_move(this.href); return false;">복사<i class="fa fa-files-o" aria-hidden="true"></i></a></li><?php } ?>
|
||||
<?php if ($move_href) { ?><li><a href="<?php echo $move_href ?>" onclick="board_move(this.href); return false;">이동<i class="fa fa-arrows" aria-hidden="true"></i></a></li><?php } ?>
|
||||
<?php if ($search_href) { ?><li><a href="<?php echo $search_href ?>">검색<i class="fa fa-search" aria-hidden="true"></i></a></li><?php } ?>
|
||||
</ul>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<script>
|
||||
|
||||
jQuery(function($){
|
||||
// 게시판 보기 버튼 옵션
|
||||
$(".btn_more_opt.is_view_btn").on("click", function(e) {
|
||||
e.stopPropagation();
|
||||
$(".more_opt.is_view_btn").toggle();
|
||||
})
|
||||
;
|
||||
$(document).on("click", function (e) {
|
||||
if(!$(e.target).closest('.is_view_btn').length) {
|
||||
$(".more_opt.is_view_btn").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$link_buttons = ob_get_contents();
|
||||
ob_end_flush();
|
||||
?>
|
||||
</div>
|
||||
<!-- } 게시물 상단 버튼 끝 -->
|
||||
</section>
|
||||
|
||||
<section id="bo_v_atc">
|
||||
<h2 id="bo_v_atc_title">본문</h2>
|
||||
<div id="bo_v_share">
|
||||
<?php include_once(G5_SNS_PATH."/view.sns.skin.php"); ?>
|
||||
<?php if ($scrap_href) { ?><a href="<?php echo $scrap_href; ?>" target="_blank" class="btn btn_b03" onclick="win_scrap(this.href); return false;"><i class="fa fa-bookmark" aria-hidden="true"></i> 스크랩</a><?php } ?>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
// 파일 출력
|
||||
$v_img_count = count($view['file']);
|
||||
if($v_img_count) {
|
||||
echo "<div id=\"bo_v_img\">\n";
|
||||
|
||||
foreach($view['file'] as $view_file) {
|
||||
echo get_file_thumbnail($view_file);
|
||||
}
|
||||
|
||||
echo "</div>\n";
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- 본문 내용 시작 { -->
|
||||
<div id="bo_v_con"><?php echo get_view_thumbnail($view['content']); ?></div>
|
||||
<?php //echo $view['rich_content']; // {이미지:0} 과 같은 코드를 사용할 경우 ?>
|
||||
<!-- } 본문 내용 끝 -->
|
||||
|
||||
<?php if ($is_signature) { ?><p><?php echo $signature ?></p><?php } ?>
|
||||
|
||||
|
||||
<!-- 추천 비추천 시작 { -->
|
||||
<?php if ( $good_href || $nogood_href) { ?>
|
||||
<div id="bo_v_act">
|
||||
<?php if ($good_href) { ?>
|
||||
<span class="bo_v_act_gng">
|
||||
<a href="<?php echo $good_href.'&'.$qstr ?>" id="good_button" class="bo_v_good"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">추천</span><strong><?php echo number_format($view['wr_good']) ?></strong></a>
|
||||
<b id="bo_v_act_good"></b>
|
||||
</span>
|
||||
<?php } ?>
|
||||
<?php if ($nogood_href) { ?>
|
||||
<span class="bo_v_act_gng">
|
||||
<a href="<?php echo $nogood_href.'&'.$qstr ?>" id="nogood_button" class="bo_v_nogood"><i class="fa fa-thumbs-o-down" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></a>
|
||||
<b id="bo_v_act_nogood"></b>
|
||||
</span>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } else {
|
||||
if($board['bo_use_good'] || $board['bo_use_nogood']) {
|
||||
?>
|
||||
<div id="bo_v_act">
|
||||
<?php if($board['bo_use_good']) { ?><span class="bo_v_good"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">추천</span><strong><?php echo number_format($view['wr_good']) ?></strong></span><?php } ?>
|
||||
<?php if($board['bo_use_nogood']) { ?><span class="bo_v_nogood"><i class="fa fa-thumbs-o-down" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></span><?php } ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!-- } 추천 비추천 끝 -->
|
||||
</section>
|
||||
|
||||
<?php
|
||||
$cnt = 0;
|
||||
if ($view['file']['count']) {
|
||||
for ($i=0; $i<count($view['file']); $i++) {
|
||||
if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view'])
|
||||
$cnt++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php if($cnt) { ?>
|
||||
<!-- 첨부파일 시작 { -->
|
||||
<section id="bo_v_file">
|
||||
<h2>첨부파일</h2>
|
||||
<ul>
|
||||
<?php
|
||||
// 가변 파일
|
||||
for ($i=0; $i<count($view['file']); $i++) {
|
||||
if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view']) {
|
||||
?>
|
||||
<li>
|
||||
<i class="fa fa-folder-open" aria-hidden="true"></i>
|
||||
<a href="<?php echo $view['file'][$i]['href']; ?>" class="view_file_download">
|
||||
<strong><?php echo $view['file'][$i]['source'] ?></strong> <?php echo $view['file'][$i]['content'] ?> (<?php echo $view['file'][$i]['size'] ?>)
|
||||
</a>
|
||||
<br>
|
||||
<span class="bo_v_file_cnt"><?php echo $view['file'][$i]['download'] ?>회 다운로드 | DATE : <?php echo $view['file'][$i]['datetime'] ?></span>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- } 첨부파일 끝 -->
|
||||
<?php } ?>
|
||||
|
||||
<?php if(isset($view['link']) && array_filter($view['link'])) { ?>
|
||||
<!-- 관련링크 시작 { -->
|
||||
<section id="bo_v_link">
|
||||
<h2>관련링크</h2>
|
||||
<ul>
|
||||
<?php
|
||||
// 링크
|
||||
$cnt = 0;
|
||||
for ($i=1; $i<=count($view['link']); $i++) {
|
||||
if ($view['link'][$i]) {
|
||||
$cnt++;
|
||||
$link = cut_str($view['link'][$i], 70);
|
||||
?>
|
||||
<li>
|
||||
<i class="fa fa-link" aria-hidden="true"></i>
|
||||
<a href="<?php echo $view['link_href'][$i] ?>" target="_blank">
|
||||
<strong><?php echo $link ?></strong>
|
||||
</a>
|
||||
<br>
|
||||
<span class="bo_v_link_cnt"><?php echo $view['link_hit'][$i] ?>회 연결</span>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</section>
|
||||
<!-- } 관련링크 끝 -->
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($prev_href || $next_href) { ?>
|
||||
<ul class="bo_v_nb">
|
||||
<?php if ($prev_href) { ?><li class="btn_prv"><span class="nb_tit"><i class="fa fa-chevron-up" aria-hidden="true"></i> 이전글</span><a href="<?php echo $prev_href ?>"><?php echo $prev_wr_subject;?></a> <span class="nb_date"><?php echo str_replace('-', '.', substr($prev_wr_date, '2', '8')); ?></span></li><?php } ?>
|
||||
<?php if ($next_href) { ?><li class="btn_next"><span class="nb_tit"><i class="fa fa-chevron-down" aria-hidden="true"></i> 다음글</span><a href="<?php echo $next_href ?>"><?php echo $next_wr_subject;?></a> <span class="nb_date"><?php echo str_replace('-', '.', substr($next_wr_date, '2', '8')); ?></span></li><?php } ?>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
|
||||
<?php
|
||||
// 코멘트 입출력
|
||||
include_once(G5_BBS_PATH.'/view_comment.php');
|
||||
?>
|
||||
</article>
|
||||
<!-- } 게시판 읽기 끝 -->
|
||||
|
||||
<script>
|
||||
<?php if ($board['bo_download_point'] < 0) { ?>
|
||||
$(function() {
|
||||
$("a.view_file_download").click(function() {
|
||||
if(!g5_is_member) {
|
||||
alert("다운로드 권한이 없습니다.\n회원이시라면 로그인 후 이용해 보십시오.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var msg = "파일을 다운로드 하시면 포인트가 차감(<?php echo number_format($board['bo_download_point']) ?>점)됩니다.\n\n포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.\n\n그래도 다운로드 하시겠습니까?";
|
||||
|
||||
if(confirm(msg)) {
|
||||
var href = $(this).attr("href")+"&js=on";
|
||||
$(this).attr("href", href);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
<?php } ?>
|
||||
|
||||
function board_move(href)
|
||||
{
|
||||
window.open(href, "boardmove", "left=50, top=50, width=500, height=550, scrollbars=1");
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$("a.view_image").click(function() {
|
||||
window.open(this.href, "large_image", "location=yes,links=no,toolbar=no,top=10,left=10,width=10,height=10,resizable=yes,scrollbars=no,status=no");
|
||||
return false;
|
||||
});
|
||||
|
||||
// 추천, 비추천
|
||||
$("#good_button, #nogood_button").click(function() {
|
||||
var $tx;
|
||||
if(this.id == "good_button")
|
||||
$tx = $("#bo_v_act_good");
|
||||
else
|
||||
$tx = $("#bo_v_act_nogood");
|
||||
|
||||
excute_good(this.href, $(this), $tx);
|
||||
return false;
|
||||
});
|
||||
|
||||
// 이미지 리사이즈
|
||||
$("#bo_v_atc").viewimageresize();
|
||||
});
|
||||
|
||||
function excute_good(href, $el, $tx)
|
||||
{
|
||||
$.post(
|
||||
href,
|
||||
{ js: "on" },
|
||||
function(data) {
|
||||
if(data.error) {
|
||||
alert(data.error);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(data.count) {
|
||||
$el.find("strong").text(number_format(String(data.count)));
|
||||
if($tx.attr("id").search("nogood") > -1) {
|
||||
$tx.text("이 글을 비추천하셨습니다.");
|
||||
$tx.fadeIn(200).delay(2500).fadeOut(200);
|
||||
} else {
|
||||
$tx.text("이 글을 추천하셨습니다.");
|
||||
$tx.fadeIn(200).delay(2500).fadeOut(200);
|
||||
}
|
||||
}
|
||||
}, "json"
|
||||
);
|
||||
}
|
||||
</script>
|
||||
<!-- } 게시글 읽기 끝 -->
|
||||
@@ -0,0 +1,356 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
?>
|
||||
|
||||
<script>
|
||||
// 글자수 제한
|
||||
var char_min = parseInt(<?php echo $comment_min ?>); // 최소
|
||||
var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
</script>
|
||||
<button type="button" class="cmt_btn"><span class="total"><b>댓글</b> <?php echo $view['wr_comment']; ?></span><span class="cmt_more"></span></button>
|
||||
<!-- 댓글 시작 { -->
|
||||
<section id="bo_vc">
|
||||
<h2>댓글목록</h2>
|
||||
<?php
|
||||
$cmt_amt = count($list);
|
||||
for ($i=0; $i<$cmt_amt; $i++) {
|
||||
$comment_id = $list[$i]['wr_id'];
|
||||
$cmt_depth = strlen($list[$i]['wr_comment_reply']) * 50;
|
||||
$comment = $list[$i]['content'];
|
||||
/*
|
||||
if (strstr($list[$i]['wr_option'], "secret")) {
|
||||
$str = $str;
|
||||
}
|
||||
*/
|
||||
$comment = preg_replace("/\[\<a\s.*href\=\"(http|https|ftp|mms)\:\/\/([^[:space:]]+)\.(mp3|wma|wmv|asf|asx|mpg|mpeg)\".*\<\/a\>\]/i", "<script>doc_write(obj_movie('$1://$2.$3'));</script>", $comment);
|
||||
$cmt_sv = $cmt_amt - $i + 1; // 댓글 헤더 z-index 재설정 ie8 이하 사이드뷰 겹침 문제 해결
|
||||
$c_reply_href = $comment_common_url.'&c_id='.$comment_id.'&w=c#bo_vc_w';
|
||||
$c_edit_href = $comment_common_url.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
|
||||
$is_comment_reply_edit = ($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;
|
||||
?>
|
||||
|
||||
<article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-top-color:#e0e0e0"<?php } ?>>
|
||||
<div class="pf_img"><?php echo get_member_profile_img($list[$i]['mb_id']) ?></div>
|
||||
|
||||
<div class="cm_wrap">
|
||||
|
||||
<header style="z-index:<?php echo $cmt_sv; ?>">
|
||||
<h2><?php echo get_text($list[$i]['wr_name']); ?>님의 <?php if ($cmt_depth) { ?><span class="sound_only">댓글의</span><?php } ?> 댓글</h2>
|
||||
<?php echo $list[$i]['name'] ?>
|
||||
<?php if ($is_ip_view) { ?>
|
||||
<span class="sound_only">아이피</span>
|
||||
<span>(<?php echo $list[$i]['ip']; ?>)</span>
|
||||
<?php } ?>
|
||||
<span class="sound_only">작성일</span>
|
||||
<span class="bo_vc_hdinfo"><i class="fa fa-clock-o" aria-hidden="true"></i> <time datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($list[$i]['datetime'])) ?>"><?php echo $list[$i]['datetime'] ?></time></span>
|
||||
<?php
|
||||
include(G5_SNS_PATH.'/view_comment_list.sns.skin.php');
|
||||
?>
|
||||
</header>
|
||||
|
||||
<!-- 댓글 출력 -->
|
||||
<div class="cmt_contents">
|
||||
<p>
|
||||
<?php if (strstr($list[$i]['wr_option'], "secret")) { ?><img src="<?php echo $board_skin_url; ?>/img/icon_secret.gif" alt="비밀글"><?php } ?>
|
||||
<?php echo $comment ?>
|
||||
</p>
|
||||
<?php if($is_comment_reply_edit) {
|
||||
if($w == 'cu') {
|
||||
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
|
||||
$cmt = sql_fetch($sql);
|
||||
if (isset($cmt)) {
|
||||
if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id']))) {
|
||||
$cmt['wr_content'] = '';
|
||||
}
|
||||
$c_wr_content = $cmt['wr_content'];
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<span id="edit_<?php echo $comment_id ?>" class="bo_vc_w"></span><!-- 수정 -->
|
||||
<span id="reply_<?php echo $comment_id ?>" class="bo_vc_w"></span><!-- 답변 -->
|
||||
|
||||
<input type="hidden" value="<?php echo strstr($list[$i]['wr_option'],"secret") ?>" id="secret_comment_<?php echo $comment_id ?>">
|
||||
<textarea id="save_comment_<?php echo $comment_id ?>" style="display:none"><?php echo get_text($list[$i]['content1'], 0) ?></textarea>
|
||||
</div>
|
||||
<?php if($is_comment_reply_edit) { ?>
|
||||
<div class="bo_vl_opt">
|
||||
<button type="button" class="btn_cm_opt btn_b01 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">댓글 옵션</span></button>
|
||||
<ul class="bo_vc_act">
|
||||
<?php if ($list[$i]['is_reply']) { ?><li><a href="<?php echo $c_reply_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'c'); return false;">답변</a></li><?php } ?>
|
||||
<?php if ($list[$i]['is_edit']) { ?><li><a href="<?php echo $c_edit_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'cu'); return false;">수정</a></li><?php } ?>
|
||||
<?php if ($list[$i]['is_del']) { ?><li><a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<script>
|
||||
$(function() {
|
||||
// 댓글 옵션창 열기
|
||||
$(".btn_cm_opt").on("click", function(){
|
||||
$(this).parent("div").children(".bo_vc_act").show();
|
||||
});
|
||||
|
||||
// 댓글 옵션창 닫기
|
||||
$(document).mouseup(function (e){
|
||||
var container = $(".bo_vc_act");
|
||||
if( container.has(e.target).length === 0)
|
||||
container.hide();
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
</article>
|
||||
<?php } ?>
|
||||
<?php if ($i == 0) { //댓글이 없다면 ?><p id="bo_vc_empty">등록된 댓글이 없습니다.</p><?php } ?>
|
||||
|
||||
</section>
|
||||
<!-- } 댓글 끝 -->
|
||||
|
||||
<?php if ($is_comment_write) {
|
||||
if($w == '')
|
||||
$w = 'c';
|
||||
?>
|
||||
<!-- 댓글 쓰기 시작 { -->
|
||||
<aside id="bo_vc_w" class="bo_vc_w">
|
||||
<h2>댓글쓰기</h2>
|
||||
<form name="fviewcomment" id="fviewcomment" action="<?php echo $comment_action_url; ?>" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
|
||||
<input type="hidden" name="w" value="<?php echo $w ?>" id="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 $c_id ?>" id="comment_id">
|
||||
<input type="hidden" name="sca" value="<?php echo $sca ?>">
|
||||
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||
<input type="hidden" name="is_good" value="">
|
||||
|
||||
<span class="sound_only">내용</span>
|
||||
<?php if ($comment_min || $comment_max) { ?><strong id="char_cnt"><span id="char_count"></span>글자</strong><?php } ?>
|
||||
<textarea id="wr_content" name="wr_content" maxlength="10000" required class="required" title="내용" placeholder="댓글내용을 입력해주세요"
|
||||
<?php if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?php } ?>><?php echo $c_wr_content; ?></textarea>
|
||||
<?php if ($comment_min || $comment_max) { ?><script> check_byte('wr_content', 'char_count'); </script><?php } ?>
|
||||
<script>
|
||||
$(document).on("keyup change", "textarea#wr_content[maxlength]", function() {
|
||||
var str = $(this).val()
|
||||
var mx = parseInt($(this).attr("maxlength"))
|
||||
if (str.length > mx) {
|
||||
$(this).val(str.substr(0, mx));
|
||||
return false;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<div class="bo_vc_w_wr">
|
||||
<div class="bo_vc_w_info">
|
||||
<?php if ($is_guest) { ?>
|
||||
<label for="wr_name" class="sound_only">이름<strong> 필수</strong></label>
|
||||
<input type="text" name="wr_name" value="<?php echo get_cookie("ck_sns_name"); ?>" id="wr_name" required class="frm_input required" size="25" placeholder="이름">
|
||||
<label for="wr_password" class="sound_only">비밀번호<strong> 필수</strong></label>
|
||||
<input type="password" name="wr_password" id="wr_password" required class="frm_input required" size="25" placeholder="비밀번호">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) {
|
||||
?>
|
||||
<span class="sound_only">SNS 동시등록</span>
|
||||
<span id="bo_vc_send_sns"></span>
|
||||
<?php } ?>
|
||||
<?php if ($is_guest) { ?>
|
||||
<?php echo $captcha_html; ?>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<div class="btn_confirm">
|
||||
<span class="secret_cm chk_box">
|
||||
<input type="checkbox" name="wr_secret" value="secret" id="wr_secret" class="selec_chk">
|
||||
<label for="wr_secret"><span></span>비밀글</label>
|
||||
</span>
|
||||
<button type="submit" id="btn_submit" class="btn_submit">댓글등록</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</aside>
|
||||
|
||||
<script>
|
||||
var save_before = '';
|
||||
var save_html = document.getElementById('bo_vc_w').innerHTML;
|
||||
|
||||
function good_and_write()
|
||||
{
|
||||
var f = document.fviewcomment;
|
||||
if (fviewcomment_submit(f)) {
|
||||
f.is_good.value = 1;
|
||||
f.submit();
|
||||
} else {
|
||||
f.is_good.value = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function fviewcomment_submit(f)
|
||||
{
|
||||
var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
|
||||
|
||||
f.is_good.value = 0;
|
||||
|
||||
var subject = "";
|
||||
var content = "";
|
||||
$.ajax({
|
||||
url: g5_bbs_url+"/ajax.filter.php",
|
||||
type: "POST",
|
||||
data: {
|
||||
"subject": "",
|
||||
"content": f.wr_content.value
|
||||
},
|
||||
dataType: "json",
|
||||
async: false,
|
||||
cache: false,
|
||||
success: function(data, textStatus) {
|
||||
subject = data.subject;
|
||||
content = data.content;
|
||||
}
|
||||
});
|
||||
|
||||
if (content) {
|
||||
alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
|
||||
f.wr_content.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
// 양쪽 공백 없애기
|
||||
var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
|
||||
document.getElementById('wr_content').value = document.getElementById('wr_content').value.replace(pattern, "");
|
||||
if (char_min > 0 || char_max > 0)
|
||||
{
|
||||
check_byte('wr_content', 'char_count');
|
||||
var cnt = parseInt(document.getElementById('char_count').innerHTML);
|
||||
if (char_min > 0 && char_min > cnt)
|
||||
{
|
||||
alert("댓글은 "+char_min+"글자 이상 쓰셔야 합니다.");
|
||||
return false;
|
||||
} else if (char_max > 0 && char_max < cnt)
|
||||
{
|
||||
alert("댓글은 "+char_max+"글자 이하로 쓰셔야 합니다.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (!document.getElementById('wr_content').value)
|
||||
{
|
||||
alert("댓글을 입력하여 주십시오.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (typeof(f.wr_name) != 'undefined')
|
||||
{
|
||||
f.wr_name.value = f.wr_name.value.replace(pattern, "");
|
||||
if (f.wr_name.value == '')
|
||||
{
|
||||
alert('이름이 입력되지 않았습니다.');
|
||||
f.wr_name.focus();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof(f.wr_password) != 'undefined')
|
||||
{
|
||||
f.wr_password.value = f.wr_password.value.replace(pattern, "");
|
||||
if (f.wr_password.value == '')
|
||||
{
|
||||
alert('비밀번호가 입력되지 않았습니다.');
|
||||
f.wr_password.focus();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
<?php if($is_guest) echo chk_captcha_js(); ?>
|
||||
|
||||
set_comment_token(f);
|
||||
|
||||
document.getElementById("btn_submit").disabled = "disabled";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function comment_box(comment_id, work)
|
||||
{
|
||||
var el_id,
|
||||
form_el = 'fviewcomment',
|
||||
respond = document.getElementById(form_el);
|
||||
|
||||
// 댓글 아이디가 넘어오면 답변, 수정
|
||||
if (comment_id)
|
||||
{
|
||||
if (work == 'c')
|
||||
el_id = 'reply_' + comment_id;
|
||||
else
|
||||
el_id = 'edit_' + comment_id;
|
||||
}
|
||||
else
|
||||
el_id = 'bo_vc_w';
|
||||
|
||||
if (save_before != el_id)
|
||||
{
|
||||
if (save_before)
|
||||
{
|
||||
document.getElementById(save_before).style.display = 'none';
|
||||
}
|
||||
|
||||
document.getElementById(el_id).style.display = '';
|
||||
document.getElementById(el_id).appendChild(respond);
|
||||
//입력값 초기화
|
||||
document.getElementById('wr_content').value = '';
|
||||
|
||||
// 댓글 수정
|
||||
if (work == 'cu')
|
||||
{
|
||||
document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
|
||||
if (typeof char_count != 'undefined')
|
||||
check_byte('wr_content', 'char_count');
|
||||
if (document.getElementById('secret_comment_'+comment_id).value)
|
||||
document.getElementById('wr_secret').checked = true;
|
||||
else
|
||||
document.getElementById('wr_secret').checked = false;
|
||||
}
|
||||
|
||||
document.getElementById('comment_id').value = comment_id;
|
||||
document.getElementById('w').value = work;
|
||||
|
||||
if(save_before)
|
||||
$("#captcha_reload").trigger("click");
|
||||
|
||||
save_before = el_id;
|
||||
}
|
||||
}
|
||||
|
||||
function comment_delete()
|
||||
{
|
||||
return confirm("이 댓글을 삭제하시겠습니까?");
|
||||
}
|
||||
|
||||
comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서 추가 (root님)
|
||||
|
||||
<?php if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) { ?>
|
||||
|
||||
$(function() {
|
||||
// sns 등록
|
||||
$("#bo_vc_send_sns").load(
|
||||
"<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>",
|
||||
function() {
|
||||
save_html = document.getElementById('bo_vc_w').innerHTML;
|
||||
}
|
||||
);
|
||||
});
|
||||
<?php } ?>
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- } 댓글 쓰기 끝 -->
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
//댓글열기
|
||||
$(".cmt_btn").click(function(e){
|
||||
e.preventDefault();
|
||||
$(this).toggleClass("cmt_btn_op");
|
||||
$("#bo_vc").toggle();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,253 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<section id="bo_w">
|
||||
<h2 class="sound_only"><?php echo $g5['title'] ?></h2>
|
||||
|
||||
<!-- 게시물 작성/수정 시작 { -->
|
||||
<form name="fwrite" id="fwrite" action="<?php echo $action_url ?>" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" style="width:<?php echo $width; ?>">
|
||||
<input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>">
|
||||
<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="sca" value="<?php echo $sca ?>">
|
||||
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||
<input type="hidden" name="sst" value="<?php echo $sst ?>">
|
||||
<input type="hidden" name="sod" value="<?php echo $sod ?>">
|
||||
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||
<?php
|
||||
$option = '';
|
||||
$option_hidden = '';
|
||||
if ($is_notice || $is_html || $is_secret || $is_mail) {
|
||||
$option = '';
|
||||
if ($is_notice) {
|
||||
$option .= PHP_EOL.'<li class="chk_box"><input type="checkbox" id="notice" name="notice" class="selec_chk" value="1" '.$notice_checked.'>'.PHP_EOL.'<label for="notice"><span></span>공지</label></li>';
|
||||
}
|
||||
if ($is_html) {
|
||||
if ($is_dhtml_editor) {
|
||||
$option_hidden .= '<input type="hidden" value="html1" name="html">';
|
||||
} else {
|
||||
$option .= PHP_EOL.'<li class="chk_box"><input type="checkbox" id="html" name="html" onclick="html_auto_br(this);" class="selec_chk" value="'.$html_value.'" '.$html_checked.'>'.PHP_EOL.'<label for="html"><span></span>html</label></li>';
|
||||
}
|
||||
}
|
||||
if ($is_secret) {
|
||||
if ($is_admin || $is_secret==1) {
|
||||
$option .= PHP_EOL.'<li class="chk_box"><input type="checkbox" id="secret" name="secret" class="selec_chk" value="secret" '.$secret_checked.'>'.PHP_EOL.'<label for="secret"><span></span>비밀글</label></li>';
|
||||
} else {
|
||||
$option_hidden .= '<input type="hidden" name="secret" value="secret">';
|
||||
}
|
||||
}
|
||||
if ($is_mail) {
|
||||
$option .= PHP_EOL.'<li class="chk_box"><input type="checkbox" id="mail" name="mail" class="selec_chk" value="mail" '.$recv_email_checked.'>'.PHP_EOL.'<label for="mail"><span></span>답변메일받기</label></li>';
|
||||
}
|
||||
}
|
||||
echo $option_hidden;
|
||||
?>
|
||||
|
||||
<?php if ($is_category) { ?>
|
||||
<div class="bo_w_select write_div">
|
||||
<label for="ca_name" class="sound_only">분류<strong>필수</strong></label>
|
||||
<select name="ca_name" id="ca_name" required>
|
||||
<option value="">분류를 선택하세요</option>
|
||||
<?php echo $category_option ?>
|
||||
</select>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="bo_w_info write_div">
|
||||
<?php if ($is_name) { ?>
|
||||
<label for="wr_name" class="sound_only">이름<strong>필수</strong></label>
|
||||
<input type="text" name="wr_name" value="<?php echo $name ?>" id="wr_name" required class="frm_input half_input required" placeholder="이름">
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($is_password) { ?>
|
||||
<label for="wr_password" class="sound_only">비밀번호<strong>필수</strong></label>
|
||||
<input type="password" name="wr_password" id="wr_password" <?php echo $password_required ?> class="frm_input half_input <?php echo $password_required ?>" placeholder="비밀번호">
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($is_email) { ?>
|
||||
<label for="wr_email" class="sound_only">이메일</label>
|
||||
<input type="text" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input half_input email " placeholder="이메일">
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($is_homepage) { ?>
|
||||
<label for="wr_homepage" class="sound_only">홈페이지</label>
|
||||
<input type="text" name="wr_homepage" value="<?php echo $homepage ?>" id="wr_homepage" class="frm_input half_input" size="50" placeholder="홈페이지">
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
<?php if ($option) { ?>
|
||||
<div class="write_div">
|
||||
<span class="sound_only">옵션</span>
|
||||
<ul class="bo_v_option">
|
||||
<?php echo $option ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="bo_w_tit write_div">
|
||||
<label for="wr_subject" class="sound_only">제목<strong>필수</strong></label>
|
||||
|
||||
<div id="autosave_wrapper" class="write_div">
|
||||
<input type="text" name="wr_subject" value="<?php echo $subject ?>" id="wr_subject" required class="frm_input full_input required" size="50" maxlength="255" placeholder="제목">
|
||||
<?php if ($is_member) { // 임시 저장된 글 기능 ?>
|
||||
<script src="<?php echo G5_JS_URL; ?>/autosave.js"></script>
|
||||
<?php if($editor_content_js) echo $editor_content_js; ?>
|
||||
<button type="button" id="btn_autosave" class="btn_frmline">임시 저장된 글 (<span id="autosave_count"><?php echo $autosave_count; ?></span>)</button>
|
||||
<div id="autosave_pop">
|
||||
<strong>임시 저장된 글 목록</strong>
|
||||
<ul></ul>
|
||||
<div><button type="button" class="autosave_close">닫기</button></div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="write_div">
|
||||
<label for="wr_content" class="sound_only">내용<strong>필수</strong></label>
|
||||
<div class="wr_content <?php echo $is_dhtml_editor ? $config['cf_editor'] : ''; ?>">
|
||||
<?php if($write_min || $write_max) { ?>
|
||||
<!-- 최소/최대 글자 수 사용 시 -->
|
||||
<p id="char_count_desc">이 게시판은 최소 <strong><?php echo $write_min; ?></strong>글자 이상, 최대 <strong><?php echo $write_max; ?></strong>글자 이하까지 글을 쓰실 수 있습니다.</p>
|
||||
<?php } ?>
|
||||
<?php echo $editor_html; // 에디터 사용시는 에디터로, 아니면 textarea 로 노출 ?>
|
||||
<?php if($write_min || $write_max) { ?>
|
||||
<!-- 최소/최대 글자 수 사용 시 -->
|
||||
<div id="char_count_wrap"><span id="char_count"></span>글자</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php for ($i=1; $is_link && $i<=G5_LINK_COUNT; $i++) { ?>
|
||||
<div class="bo_w_link write_div">
|
||||
<label for="wr_link<?php echo $i ?>"><i class="fa fa-link" aria-hidden="true"></i><span class="sound_only"> 링크 #<?php echo $i ?></span></label>
|
||||
<input type="text" name="wr_link<?php echo $i ?>" value="<?php if($w=="u"){ echo $write['wr_link'.$i]; } ?>" id="wr_link<?php echo $i ?>" class="frm_input full_input" size="50">
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php for ($i=0; $is_file && $i<$file_count; $i++) { ?>
|
||||
<div class="bo_w_flie write_div">
|
||||
<div class="file_wr write_div">
|
||||
<label for="bf_file_<?php echo $i+1 ?>" class="lb_icon"><i class="fa fa-folder-open" aria-hidden="true"></i><span class="sound_only"> 파일 #<?php echo $i+1 ?></span></label>
|
||||
<input type="file" name="bf_file[]" id="bf_file_<?php echo $i+1 ?>" title="파일첨부 <?php echo $i+1 ?> : 용량 <?php echo $upload_max_filesize ?> 이하만 업로드 가능" class="frm_file ">
|
||||
</div>
|
||||
<?php if ($is_file_content) { ?>
|
||||
<input type="text" name="bf_content[]" value="<?php echo ($w == 'u') ? $file[$i]['bf_content'] : ''; ?>" title="파일 설명을 입력해주세요." class="full_input frm_input" size="50" placeholder="파일 설명을 입력해주세요.">
|
||||
<?php } ?>
|
||||
|
||||
<?php if($w == 'u' && $file[$i]['file']) { ?>
|
||||
<span class="file_del">
|
||||
<input type="checkbox" id="bf_file_del<?php echo $i ?>" name="bf_file_del[<?php echo $i; ?>]" value="1"> <label for="bf_file_del<?php echo $i ?>"><?php echo $file[$i]['source'].'('.$file[$i]['size'].')'; ?> 파일 삭제</label>
|
||||
</span>
|
||||
<?php } ?>
|
||||
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<?php if ($is_use_captcha) { //자동등록방지 ?>
|
||||
<div class="write_div">
|
||||
<?php echo $captcha_html ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="btn_confirm write_div">
|
||||
<a href="<?php echo get_pretty_url($bo_table); ?>" class="btn_cancel btn">취소</a>
|
||||
<button type="submit" id="btn_submit" accesskey="s" class="btn_submit btn">작성완료</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
<?php if($write_min || $write_max) { ?>
|
||||
// 글자수 제한
|
||||
var char_min = parseInt(<?php echo $write_min; ?>); // 최소
|
||||
var char_max = parseInt(<?php echo $write_max; ?>); // 최대
|
||||
check_byte("wr_content", "char_count");
|
||||
|
||||
$(function() {
|
||||
$("#wr_content").on("keyup", function() {
|
||||
check_byte("wr_content", "char_count");
|
||||
});
|
||||
});
|
||||
|
||||
<?php } ?>
|
||||
function html_auto_br(obj)
|
||||
{
|
||||
if (obj.checked) {
|
||||
result = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
|
||||
if (result)
|
||||
obj.value = "html2";
|
||||
else
|
||||
obj.value = "html1";
|
||||
}
|
||||
else
|
||||
obj.value = "";
|
||||
}
|
||||
|
||||
function fwrite_submit(f)
|
||||
{
|
||||
<?php echo $editor_js; // 에디터 사용시 자바스크립트에서 내용을 폼필드로 넣어주며 내용이 입력되었는지 검사함 ?>
|
||||
|
||||
var subject = "";
|
||||
var content = "";
|
||||
$.ajax({
|
||||
url: g5_bbs_url+"/ajax.filter.php",
|
||||
type: "POST",
|
||||
data: {
|
||||
"subject": f.wr_subject.value,
|
||||
"content": f.wr_content.value
|
||||
},
|
||||
dataType: "json",
|
||||
async: false,
|
||||
cache: false,
|
||||
success: function(data, textStatus) {
|
||||
subject = data.subject;
|
||||
content = data.content;
|
||||
}
|
||||
});
|
||||
|
||||
if (subject) {
|
||||
alert("제목에 금지단어('"+subject+"')가 포함되어있습니다");
|
||||
f.wr_subject.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (content) {
|
||||
alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
|
||||
if (typeof(ed_wr_content) != "undefined")
|
||||
ed_wr_content.returnFalse();
|
||||
else
|
||||
f.wr_content.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (document.getElementById("char_count")) {
|
||||
if (char_min > 0 || char_max > 0) {
|
||||
var cnt = parseInt(check_byte("wr_content", "char_count"));
|
||||
if (char_min > 0 && char_min > cnt) {
|
||||
alert("내용은 "+char_min+"글자 이상 쓰셔야 합니다.");
|
||||
return false;
|
||||
}
|
||||
else if (char_max > 0 && char_max < cnt) {
|
||||
alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<?php echo $captcha_js; // 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함 ?>
|
||||
|
||||
document.getElementById("btn_submit").disabled = "disabled";
|
||||
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
</section>
|
||||
<!-- } 게시물 작성/수정 끝 -->
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
// 회원수는 $row['mb_cnt'];
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$connect_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<?php echo $row['total_cnt'];
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$connect_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<!-- 현재접속자 목록 시작 { -->
|
||||
<div id="current_connect">
|
||||
<ul>
|
||||
<?php
|
||||
for ($i=0; $i<count($list); $i++) {
|
||||
//$location = conv_content($list[$i]['lo_location'], 0);
|
||||
$location = $list[$i]['lo_location'];
|
||||
// 최고관리자에게만 허용
|
||||
// 이 조건문은 가능한 변경하지 마십시오.
|
||||
if ($list[$i]['lo_url'] && $is_admin == 'super') $display_location = "<a href=\"".$list[$i]['lo_url']."\">".$location."</a>";
|
||||
else $display_location = $location;
|
||||
?>
|
||||
<li>
|
||||
<span class="crt_num"><?php echo $list[$i]['num'] ?></span>
|
||||
<span class="crt_profile"><?php echo get_member_profile_img($list[$i]['mb_id']); ?></span>
|
||||
<div class="crt_info">
|
||||
<span class="crt_name"><?php echo $list[$i]['name'] ?></span>
|
||||
<span class="crt_lct"><?php echo $display_location ?></span>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
if ($i == 0)
|
||||
echo "<li class=\"empty_li\">현재 접속자가 없습니다.</li>";
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- } 현재접속자 목록 끝 -->
|
||||
@@ -0,0 +1,18 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* 현재접속자 */
|
||||
#current_connect ul {margin:0;padding:0;list-style:none;zoom:1}
|
||||
#current_connect ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#current_connect li:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#current_connect li {position:relative;padding:18px 0;border-bottom:1px solid #ececec;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left:0}
|
||||
#current_connect li:first-child {border-top:1px solid #ececec}
|
||||
#current_connect .crt_num {float:left;line-height:45px;margin-right:20px;color:#777;font-weight:bold}
|
||||
#current_connect .crt_profile {float:left;margin-right:20px;line-height:45px}
|
||||
#current_connect .crt_profile > img {width:45px;height:45px;border-radius:50%}
|
||||
#current_connect .crt_info {float:left;margin-top:5px}
|
||||
#current_connect .crt_name {display:block}
|
||||
#current_connect .sv_member {font-weight:bold;line-height:20px;font-size:1.2em}
|
||||
#current_connect .profile_img {display:none}
|
||||
#current_connect .crt_lct {display:block}
|
||||
#current_connect .crt_lct a {color:#797979}
|
||||
#current_connect li.empty_li {width:100%;padding:200px 0;border:0;color:#666;text-align:center}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$content_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<article id="ctt" class="ctt_<?php echo $co_id; ?>">
|
||||
<header>
|
||||
<h1><?php echo $g5['title']; ?></h1>
|
||||
</header>
|
||||
|
||||
<div id="ctt_con">
|
||||
<?php echo $str; ?>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
@@ -0,0 +1,10 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* 내용관리 */
|
||||
#ctt {margin:10px 0;padding:20px;background:#fff}
|
||||
.ctt_admin {text-align:right}
|
||||
#ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#ctt_con {padding:10px 0;line-height:1.6em}
|
||||
#ctt_con img{max-width:100%;height:auto}
|
||||
.ctt_img {text-align:center}
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$faq_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
<head>
|
||||
<link rel="stylesheet" href="../theme/basic/css/default.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../js/font-awesome/css/font-awesome.min.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/connect/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/popular/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/faq/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/outlogin/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/latest/notice/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/visit/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../js/owlcarousel/owl.carousel.min.css?ver=2303229">
|
||||
<script>
|
||||
// 자바스크립트에서 사용하는 전역변수 선언
|
||||
var g5_url = "http://localhost/tova";
|
||||
var g5_bbs_url = "http://localhost/tova/bbs";
|
||||
var g5_is_member = "1";
|
||||
var g5_is_admin = "super";
|
||||
var g5_is_mobile = "";
|
||||
var g5_bo_table = "";
|
||||
var g5_sca = "";
|
||||
var g5_editor = "";
|
||||
var g5_cookie_domain = "";
|
||||
var g5_theme_shop_url = "http://localhost/tova/theme/basic/shop";
|
||||
var g5_shop_url = "http://localhost/tova/shop";
|
||||
</script>
|
||||
<script src="js/jquery-1.12.4.min.js?ver=2304171"></script>
|
||||
<script src="js/jquery-migrate-1.4.1.min.js?ver=2304171"></script>
|
||||
<script src="js/jquery.menu.js?ver=2304171"></script>
|
||||
<script src="js/common.js?ver=2304171"></script>
|
||||
<script src="js/wrest.js?ver=2304171"></script>
|
||||
<script src="js/placeholders.min.js?ver=2304171"></script>
|
||||
<script src="js/owlcarousel/owl.carousel.min.js?ver=2304171"></script>
|
||||
<script src="js/jquery.bxslider.js?ver=2304171"></script>
|
||||
<!-- 디자인팀 작성 -->
|
||||
<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 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>
|
||||
<!-- FAQ 시작 { -->
|
||||
<?php
|
||||
if ($himg_src)
|
||||
echo '<div id="faq_himg" class="faq_img"><img src="'.$himg_src.'" alt=""></div>';
|
||||
|
||||
// 상단 HTML
|
||||
echo '<div id="faq_hhtml">'.conv_content($fm['fm_head_html'], 1).'</div>';
|
||||
?>
|
||||
|
||||
<fieldset id="faq_sch">
|
||||
<legend>FAQ 검색</legend>
|
||||
<form name="faq_search_form" method="get">
|
||||
<span class="sch_tit">FAQ 검색</span>
|
||||
<input type="hidden" name="fm_id" value="<?php echo $fm_id;?>">
|
||||
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
|
||||
<input type="text" name="stx" value="<?php echo $stx;?>" required id="stx" class="frm_input" size="15" maxlength="15">
|
||||
<button type="submit" value="검색" class="btn_submit"><i class="fa fa-search" aria-hidden="true"></i> 검색</button>
|
||||
</form>
|
||||
</fieldset>
|
||||
|
||||
<?php
|
||||
if( count($faq_master_list) ){
|
||||
?>
|
||||
<nav id="bo_cate">
|
||||
<h2>자주하시는질문 분류</h2>
|
||||
<ul id="bo_cate_ul">
|
||||
<?php
|
||||
foreach( $faq_master_list as $v ){
|
||||
$category_msg = '';
|
||||
$category_option = '';
|
||||
if($v['fm_id'] == $fm_id){ // 현재 선택된 카테고리라면
|
||||
$category_option = ' id="bo_cate_on"';
|
||||
$category_msg = '<span class="sound_only">열린 분류 </span>';
|
||||
}
|
||||
?>
|
||||
<li><a href="<?php echo $category_href;?>?fm_id=<?php echo $v['fm_id'];?>" <?php echo $category_option;?> ><?php echo $category_msg.$v['fm_subject'];?></a></li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</nav>
|
||||
<?php } ?>
|
||||
|
||||
<div id="faq_wrap" class="faq_<?php echo $fm_id; ?>">
|
||||
<?php // FAQ 내용
|
||||
if( count($faq_list) ){
|
||||
?>
|
||||
<section id="faq_con">
|
||||
<h2><?php echo $g5['title']; ?> 목록</h2>
|
||||
<ol>
|
||||
<?php
|
||||
foreach($faq_list as $key=>$v){
|
||||
if(empty($v))
|
||||
continue;
|
||||
?>
|
||||
<li>
|
||||
<h3>
|
||||
<span class="tit_bg">Q</span><a href="#none" onclick="return faq_open(this);"><?php echo conv_content($v['fa_subject'], 1); ?></a>
|
||||
<button class="tit_btn" onclick="return faq_open(this);"><i class="fa fa-plus" aria-hidden="true"></i><span class="sound_only">열기</span></button>
|
||||
</h3>
|
||||
<div class="con_inner">
|
||||
<?php echo conv_content($v['fa_content'], 1); ?>
|
||||
<button type="button" class="closer_btn"><i class="fa fa-minus" aria-hidden="true"></i><span class="sound_only">닫기</span></button>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ol>
|
||||
</section>
|
||||
<?php
|
||||
|
||||
} else {
|
||||
if($stx){
|
||||
echo '<p class="empty_list">검색된 게시물이 없습니다.</p>';
|
||||
} else {
|
||||
echo '<div class="empty_list">등록된 FAQ가 없습니다.';
|
||||
if($is_admin)
|
||||
echo '<br><a href="'.G5_ADMIN_URL.'/faqmasterlist.php">FAQ를 새로 등록하시려면 FAQ관리</a> 메뉴를 이용하십시오.';
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<?php echo get_paging($page_rows, $page, $total_page, $_SERVER['SCRIPT_NAME'].'?'.$qstr.'&page='); ?>
|
||||
|
||||
<?php
|
||||
// 하단 HTML
|
||||
echo '<div id="faq_thtml">'.conv_content($fm['fm_tail_html'], 1).'</div>';
|
||||
|
||||
if ($timg_src)
|
||||
echo '<div id="faq_timg" class="faq_img"><img src="'.$timg_src.'" alt=""></div>';
|
||||
?>
|
||||
|
||||
|
||||
<!-- } FAQ 끝 -->
|
||||
|
||||
<?php
|
||||
if ($admin_href)
|
||||
echo '<div class="faq_admin"><a href="'.$admin_href.'" class="btn_admin btn" title="FAQ 수정"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">FAQ 수정</span></a></div>';
|
||||
?>
|
||||
|
||||
<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
|
||||
<script>
|
||||
jQuery(function() {
|
||||
$(".closer_btn").on("click", function() {
|
||||
$(this).closest(".con_inner").slideToggle('slow', function() {
|
||||
var $h3 = $(this).closest("li").find("h3");
|
||||
|
||||
$("#faq_con li h3").removeClass("faq_li_open");
|
||||
if($(this).is(":visible")) {
|
||||
$h3.addClass("faq_li_open");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function faq_open(el)
|
||||
{
|
||||
var $con = $(el).closest("li").find(".con_inner"),
|
||||
$h3 = $(el).closest("li").find("h3");
|
||||
|
||||
if($con.is(":visible")) {
|
||||
$con.slideUp();
|
||||
$h3.removeClass("faq_li_open");
|
||||
} else {
|
||||
$("#faq_con .con_inner:visible").css("display", "none");
|
||||
|
||||
$con.slideDown(
|
||||
function() {
|
||||
// 이미지 리사이즈
|
||||
$con.viewimageresize2();
|
||||
$("#faq_con li h3").removeClass("faq_li_open");
|
||||
|
||||
$h3.addClass("faq_li_open");
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,564 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
//add_stylesheet('<link rel="stylesheet" href="'.$faq_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<head>
|
||||
<title>Q&A</title>
|
||||
<!-- 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>
|
||||
<link rel="stylesheet" href="../theme/basic/css/default.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../js/font-awesome/css/font-awesome.min.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/connect/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/popular/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/faq/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/outlogin/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/latest/notice/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/visit/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../js/owlcarousel/owl.carousel.min.css?ver=2303229">
|
||||
<script>
|
||||
// 자바스크립트에서 사용하는 전역변수 선언
|
||||
// var g5_url = "http://localhost/tova";
|
||||
// var g5_bbs_url = "http://localhost/tova/bbs";
|
||||
// var g5_is_member = "1";
|
||||
// var g5_is_admin = "";
|
||||
// var g5_is_mobile = "";
|
||||
// var g5_bo_table = "";
|
||||
// var g5_sca = "";
|
||||
// var g5_editor = "";
|
||||
// var g5_cookie_domain = "";
|
||||
// var g5_theme_shop_url = "http://localhost/tova/theme/basic/shop";
|
||||
// var g5_shop_url = "http://localhost/tova/shop";
|
||||
</script>
|
||||
<script src="../js/jquery-1.12.4.min.js?ver=2304171"></script>
|
||||
<script src="../js/jquery-migrate-1.4.1.min.js?ver=2304171"></script>
|
||||
<script src="../js/jquery.menu.js?ver=2304171"></script>
|
||||
<!-- <script src="../js/common.js?ver=2304171"></script> -->
|
||||
<script src="../js/wrest.js?ver=2304171"></script>
|
||||
<script src="../js/placeholders.min.js?ver=2304171"></script>
|
||||
<script src="../js/owlcarousel/owl.carousel.min.js?ver=2304171"></script>
|
||||
<script src="../js/jquery.bxslider.js?ver=2304171"></script>
|
||||
<!-- //그누보드 작성 -->
|
||||
|
||||
<!-- 디자인팀 작성 -->
|
||||
<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>
|
||||
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.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>
|
||||
<script type="text/javascript" src="../js/common.js"></script>
|
||||
<script type="text/javascript" src="../js/popup.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="../css/reset.css"/>
|
||||
<link rel="stylesheet" href="../css/font.css"/>
|
||||
<link rel="stylesheet" href="../css/style.css"/>
|
||||
<!-- //디자인팀 작성 -->
|
||||
</head>
|
||||
<!-- FAQ 시작 { -->
|
||||
<?php
|
||||
if ($himg_src)
|
||||
echo '<div id="faq_himg" class="faq_img"><img src="'.$himg_src.'" alt=""></div>';
|
||||
|
||||
// 상단 HTML
|
||||
echo '<div id="faq_hhtml">'.conv_content($fm['fm_head_html'], 1).'</div>';
|
||||
?>
|
||||
|
||||
<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 faq">
|
||||
<section class="intro">
|
||||
<div class="top js__dark">
|
||||
<h2 data-aos="fade-down" data-aos-duration="1000">FAQ</h2>
|
||||
<span>EG-BIM 관련 자주하는 질문</span>
|
||||
</div>
|
||||
<ul class="sub_tab">
|
||||
<li class="on"><a href="<?php echo G5_BBS_URL ?>/faq.php">자주하는 질문(FAQ)</a></li>
|
||||
<li><a href="/egbim/bbs/descope_qa_list.php">문의하기(Q&A)</a></li>
|
||||
<!-- <li><a href="#" onclick="alert('문의하기 게시판은 준비중입니다.'); return false;">문의하기(Q&A)</a></li> -->
|
||||
<li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
<span class="sub_tit">자주하는 질문(FAQ)</span>
|
||||
<div id="wrapper">
|
||||
<div id="container_wr">
|
||||
<div id="container">
|
||||
<fieldset id="faq_sch">
|
||||
<legend>FAQ 검색</legend>
|
||||
<form name="faq_search_form" method="get">
|
||||
<span class="sch_tit">FAQ 검색</span>
|
||||
<input type="hidden" name="fm_id" value="<?php echo $fm_id;?>">
|
||||
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
|
||||
<input type="text" name="stx" value="<?php echo $stx;?>" required id="stx" class="frm_input" size="15" maxlength="15">
|
||||
<button type="submit" value="검색" class="btn_submit"><i class="fa fa-search" aria-hidden="true"></i> 검색</button>
|
||||
</form>
|
||||
</fieldset>
|
||||
<?php
|
||||
if( count($faq_master_list) ){
|
||||
?>
|
||||
<nav id="bo_cate">
|
||||
<h2>자주하시는질문 분류</h2>
|
||||
<ul id="bo_cate_ul" style="display:none">
|
||||
<?php
|
||||
foreach( $faq_master_list as $v ){
|
||||
$category_msg = '';
|
||||
$category_option = '';
|
||||
if($v['fm_id'] == $fm_id){ // 현재 선택된 카테고리라면
|
||||
$category_option = ' id="bo_cate_on"';
|
||||
$category_msg = '<span class="sound_only">열린 분류 </span>';
|
||||
}
|
||||
?>
|
||||
<li><a href="<?php echo $category_href;?>?fm_id=<?php echo $v['fm_id'];?>" <?php echo $category_option;?> ><?php echo $category_msg.$v['fm_subject'];?></a></li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</nav>
|
||||
<?php } ?>
|
||||
<div id="faq_wrap" class="faq_<?php echo $fm_id; ?>">
|
||||
<?php // FAQ 내용
|
||||
if( count($faq_list) ){
|
||||
?>
|
||||
<section id="faq_con">
|
||||
<h2><?php echo $g5['title']; ?> 목록</h2>
|
||||
<ol>
|
||||
<?php
|
||||
foreach($faq_list as $key=>$v){
|
||||
if(empty($v))
|
||||
continue;
|
||||
?>
|
||||
<li>
|
||||
<h3>
|
||||
<span class="tit_bg">Q</span><a href="#none" onclick="return faq_open(this);"><?php echo conv_content($v['fa_subject'], 1); ?></a>
|
||||
<button class="tit_btn" onclick="return faq_open(this);"><i class="fa fa-plus" aria-hidden="true"></i><span class="sound_only">열기</span></button>
|
||||
</h3>
|
||||
<div class="con_inner">
|
||||
<?php echo conv_content($v['fa_content'], 1); ?>
|
||||
<button type="button" class="closer_btn"><i class="fa fa-minus" aria-hidden="true"></i><span class="sound_only">닫기</span></button>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ol>
|
||||
</section>
|
||||
<?php
|
||||
} else {
|
||||
if($stx){
|
||||
echo '<p class="empty_list">검색된 게시물이 없습니다.</p>';
|
||||
} else {
|
||||
echo '<div class="empty_list">등록된 FAQ가 없습니다.';
|
||||
if($is_admin)
|
||||
echo '<br><a href="'.G5_ADMIN_URL.'/faqmasterlist.php">FAQ를 새로 등록하시려면 FAQ관리</a> 메뉴를 이용하십시오.';
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php echo get_paging($page_rows, $page, $total_page, $_SERVER['SCRIPT_NAME'].'?'.$qstr.'&page='); ?>
|
||||
<?php
|
||||
// 하단 HTML
|
||||
echo '<div id="faq_thtml">'.conv_content($fm['fm_tail_html'], 1).'</div>';
|
||||
|
||||
if ($timg_src)
|
||||
echo '<div id="faq_timg" class="faq_img"><img src="'.$timg_src.'" alt=""></div>';
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
// if ($admin_href)
|
||||
// echo '<div class="faq_admin"><a href="'.$admin_href.'" class="btn_admin btn" title="FAQ 수정"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">FAQ 수정</span></a></div>';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- FOOTER -->
|
||||
<?php include_once($member_skin_path.'/main_footer.skin.php'); ?>
|
||||
<!-- //FOOTER -->
|
||||
<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>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
|
||||
<script>
|
||||
jQuery(function() {
|
||||
$(".closer_btn").on("click", function() {
|
||||
$(this).closest(".con_inner").slideToggle('slow', function() {
|
||||
var $h3 = $(this).closest("li").find("h3");
|
||||
|
||||
$("#faq_con li h3").removeClass("faq_li_open");
|
||||
if($(this).is(":visible")) {
|
||||
$h3.addClass("faq_li_open");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function faq_open(el)
|
||||
{
|
||||
var $con = $(el).closest("li").find(".con_inner"),
|
||||
$h3 = $(el).closest("li").find("h3");
|
||||
|
||||
if($con.is(":visible")) {
|
||||
$con.slideUp();
|
||||
$h3.removeClass("faq_li_open");
|
||||
} else {
|
||||
$("#faq_con .con_inner:visible").css("display", "none");
|
||||
|
||||
$con.slideDown(
|
||||
function() {
|
||||
// 이미지 리사이즈
|
||||
$con.viewimageresize2();
|
||||
$("#faq_con li h3").removeClass("faq_li_open");
|
||||
|
||||
$h3.addClass("faq_li_open");
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- 상단(헤더) 스크립트 구문 -->
|
||||
<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,765 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
//add_stylesheet('<link rel="stylesheet" href="'.$faq_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
<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>
|
||||
<link rel="stylesheet" href="../theme/basic/css/default.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../js/font-awesome/css/font-awesome.min.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/connect/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/popular/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/faq/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/outlogin/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/latest/notice/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../theme/basic/skin/visit/basic/style.css?ver=2303229">
|
||||
<link rel="stylesheet" href="../js/owlcarousel/owl.carousel.min.css?ver=2303229">
|
||||
<script>
|
||||
// 자바스크립트에서 사용하는 전역변수 선언
|
||||
// var g5_url = "http://localhost/tova";
|
||||
// var g5_bbs_url = "http://localhost/tova/bbs";
|
||||
// var g5_is_member = "1";
|
||||
// var g5_is_admin = "";
|
||||
// var g5_is_mobile = "";
|
||||
// var g5_bo_table = "";
|
||||
// var g5_sca = "";
|
||||
// var g5_editor = "";
|
||||
// var g5_cookie_domain = "";
|
||||
// var g5_theme_shop_url = "http://localhost/tova/theme/basic/shop";
|
||||
// var g5_shop_url = "http://localhost/tova/shop";
|
||||
</script>
|
||||
<script src="../js/jquery-1.12.4.min.js?ver=2304171"></script>
|
||||
<script src="../js/jquery-migrate-1.4.1.min.js?ver=2304171"></script>
|
||||
<script src="../js/jquery.menu.js?ver=2304171"></script>
|
||||
<script src="../js/common.js?ver=2304171"></script>
|
||||
<script src="../js/wrest.js?ver=2304171"></script>
|
||||
<script src="../js/placeholders.min.js?ver=2304171"></script>
|
||||
<script src="../js/owlcarousel/owl.carousel.min.js?ver=2304171"></script>
|
||||
<script src="../js/jquery.bxslider.js?ver=2304171"></script>
|
||||
<!-- //그누보드 작성 -->
|
||||
|
||||
<!-- 디자인팀 작성 -->
|
||||
<link rel="stylesheet" href="../css/reset.css"/>
|
||||
<link rel="stylesheet" href="../css/font.css"/>
|
||||
<link rel="stylesheet" href="../css/style.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="<?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/popup.js"></script>
|
||||
<script type="text/javascript" src="<?php echo G5_URL ?>/js/index.js"></script>
|
||||
|
||||
<!-- <script type="text/javascript" src="js/common.js"></script> -->
|
||||
<script type="text/javascript" src="../js/popup.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.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>
|
||||
<!-- //디자인팀 작성 -->
|
||||
</head>
|
||||
<!-- FAQ 시작 { -->
|
||||
<?php
|
||||
if ($himg_src)
|
||||
echo '<div id="faq_himg" class="faq_img"><img src="'.$himg_src.'" alt=""></div>';
|
||||
|
||||
// 상단 HTML
|
||||
echo '<div id="faq_hhtml">'.conv_content($fm['fm_head_html'], 1).'</div>';
|
||||
?>
|
||||
|
||||
<body>
|
||||
<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 faq">
|
||||
<section class="intro">
|
||||
<div class="top js__dark">
|
||||
<h2 data-aos="fade-down" data-aos-duration="1000">FAQ</h2>
|
||||
<span>EG-BIM 관련 문의하기</span>
|
||||
</div>
|
||||
<ul class="sub_tab">
|
||||
<li class="on"><a href="<?php echo G5_BBS_URL ?>/faq.php">자주하는 질문</a></li>
|
||||
<li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1 문의하기</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<span class="sub_tit">자주하는 질문</span>
|
||||
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container_wr">
|
||||
<div id="container">
|
||||
<fieldset id="faq_sch">
|
||||
<legend>FAQ 검색</legend>
|
||||
<form name="faq_search_form" method="get">
|
||||
<span class="sch_tit">FAQ 검색</span>
|
||||
<input type="hidden" name="fm_id" value="<?php echo $fm_id;?>">
|
||||
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
|
||||
<input type="text" name="stx" value="<?php echo $stx;?>" required id="stx" class="frm_input" size="15" maxlength="15">
|
||||
<button type="submit" value="검색" class="btn_submit"><i class="fa fa-search" aria-hidden="true"></i> 검색</button>
|
||||
</form>
|
||||
</fieldset>
|
||||
<?php
|
||||
if( count($faq_master_list) ){
|
||||
?>
|
||||
<nav id="bo_cate">
|
||||
<h2>자주하시는질문 분류</h2>
|
||||
<ul id="bo_cate_ul" style="display:none">
|
||||
<?php
|
||||
foreach( $faq_master_list as $v ){
|
||||
$category_msg = '';
|
||||
$category_option = '';
|
||||
if($v['fm_id'] == $fm_id){ // 현재 선택된 카테고리라면
|
||||
$category_option = ' id="bo_cate_on"';
|
||||
$category_msg = '<span class="sound_only">열린 분류 </span>';
|
||||
}
|
||||
?>
|
||||
<li><a href="<?php echo $category_href;?>?fm_id=<?php echo $v['fm_id'];?>" <?php echo $category_option;?> ><?php echo $category_msg.$v['fm_subject'];?></a></li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</nav>
|
||||
<?php } ?>
|
||||
<div id="faq_wrap" class="faq_<?php echo $fm_id; ?>">
|
||||
<?php // FAQ 내용
|
||||
if( count($faq_list) ){
|
||||
?>
|
||||
<section id="faq_con">
|
||||
<h2><?php echo $g5['title']; ?> 목록</h2>
|
||||
<ol>
|
||||
<?php
|
||||
foreach($faq_list as $key=>$v){
|
||||
if(empty($v))
|
||||
continue;
|
||||
?>
|
||||
<li>
|
||||
<h3>
|
||||
<span class="tit_bg">Q</span><a href="#none" onclick="return faq_open(this);"><?php echo conv_content($v['fa_subject'], 1); ?></a>
|
||||
<button class="tit_btn" onclick="return faq_open(this);"><i class="fa fa-plus" aria-hidden="true"></i><span class="sound_only">열기</span></button>
|
||||
</h3>
|
||||
<div class="con_inner">
|
||||
<?php echo conv_content($v['fa_content'], 1); ?>
|
||||
<button type="button" class="closer_btn"><i class="fa fa-minus" aria-hidden="true"></i><span class="sound_only">닫기</span></button>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ol>
|
||||
</section>
|
||||
<?php
|
||||
} else {
|
||||
if($stx){
|
||||
echo '<p class="empty_list">검색된 게시물이 없습니다.</p>';
|
||||
} else {
|
||||
echo '<div class="empty_list">등록된 FAQ가 없습니다.';
|
||||
if($is_admin)
|
||||
echo '<br><a href="'.G5_ADMIN_URL.'/faqmasterlist.php">FAQ를 새로 등록하시려면 FAQ관리</a> 메뉴를 이용하십시오.';
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php echo get_paging($page_rows, $page, $total_page, $_SERVER['SCRIPT_NAME'].'?'.$qstr.'&page='); ?>
|
||||
<?php
|
||||
// 하단 HTML
|
||||
echo '<div id="faq_thtml">'.conv_content($fm['fm_tail_html'], 1).'</div>';
|
||||
|
||||
if ($timg_src)
|
||||
echo '<div id="faq_timg" class="faq_img"><img src="'.$timg_src.'" alt=""></div>';
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
// if ($admin_href)
|
||||
// echo '<div class="faq_admin"><a href="'.$admin_href.'" class="btn_admin btn" title="FAQ 수정"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">FAQ 수정</span></a></div>';
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- } FAQ 끝 -->
|
||||
<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 -->
|
||||
<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>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
|
||||
<script>
|
||||
jQuery(function() {
|
||||
$(".closer_btn").on("click", function() {
|
||||
$(this).closest(".con_inner").slideToggle('slow', function() {
|
||||
var $h3 = $(this).closest("li").find("h3");
|
||||
|
||||
$("#faq_con li h3").removeClass("faq_li_open");
|
||||
if($(this).is(":visible")) {
|
||||
$h3.addClass("faq_li_open");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function faq_open(el)
|
||||
{
|
||||
var $con = $(el).closest("li").find(".con_inner"),
|
||||
$h3 = $(el).closest("li").find("h3");
|
||||
|
||||
if($con.is(":visible")) {
|
||||
$con.slideUp();
|
||||
$h3.removeClass("faq_li_open");
|
||||
} else {
|
||||
$("#faq_con .con_inner:visible").css("display", "none");
|
||||
|
||||
$con.slideDown(
|
||||
function() {
|
||||
// 이미지 리사이즈
|
||||
$con.viewimageresize2();
|
||||
$("#faq_con li h3").removeClass("faq_li_open");
|
||||
|
||||
$h3.addClass("faq_li_open");
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- 상단(헤더) 스크립트 구문 -->
|
||||
<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/faq.php";
|
||||
}else
|
||||
{
|
||||
alert(trim(ss));
|
||||
$('#password_mypage').select();
|
||||
}
|
||||
},
|
||||
error : function(err){
|
||||
alert(err);
|
||||
alert(err.status);
|
||||
alert(err.statusText);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,33 @@
|
||||
@charset "utf-8";
|
||||
|
||||
#bo_cate {margin-bottom:28px}
|
||||
#bo_cate h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#bo_cate ul {zoom:1}
|
||||
#bo_cate ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_cate li {display:inline-block;padding:2px}
|
||||
#bo_cate a {display:block;line-height:28px;padding:5px 15px;border-radius:30px;border:1px solid #d6e9ff;color:#6794d3}
|
||||
#bo_cate a:focus, #bo_cate a:hover, #bo_cate a:active {text-decoration:none;background:#3a8afd;color:#fff}
|
||||
#bo_cate #bo_cate_on {z-index:2;background:#3a8afd;color:#fff;font-weight:bold;border:1px solid #3a8afd;
|
||||
-webkit-box-shadow:inset 0 2px 5px rgb(33, 135, 202);
|
||||
-moz-box-shadow:inset 0 2px 5px rgb(33, 135, 202);
|
||||
box-shadow:inset 0 2px 5px rgb(33, 135, 202)}
|
||||
|
||||
#faq_wrap {margin:10px 0 30px}
|
||||
#faq_wrap h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
.faq_admin {text-align:right}
|
||||
#faq_wrap ol {margin:0;padding:0;list-style:none}
|
||||
#faq_wrap li {border-bottom:1px solid #ececec;background:#fff;position:relative}
|
||||
#faq_wrap li:first-child {border-top:1px solid #ececec}
|
||||
#faq_wrap li h3 {min-height:50px;line-height:30px;padding:15px;padding-left:50px;position:relative}
|
||||
#faq_wrap li h3 .tit_btn {position:absolute;right:15px;top:15px;border:0;width:30px;height:30px;background:#fff;color:#c5cdd8;font-size:1.2em}
|
||||
#faq_wrap li h3 .tit_bg {display:inline-block;position:absolute;top:15px;left:15px;text-align:center;color:#000;font-size:1.6em}
|
||||
#faq_wrap li h3.faq_li_open a {color:#3a8afd}
|
||||
|
||||
#faq_con .con_inner {display:none;padding:5px 5px 20px 50px}
|
||||
#faq_con .con_inner .tit_bg {display:inline-block;position:absolute;top:10px;left:10px;text-align:center;background:#777;color:#fff;border-radius:50%;width:30px;line-height:30px;height:30px}
|
||||
#faq_con .con_inner .closer_btn {position:absolute;right:15px;top:15px;border:0;width:30px;height:30px;background:#fff;color:#3a8afd;font-size:1.2em}
|
||||
|
||||
#faq_sch {background:#f7f7f7;padding:30px;text-align:center;margin:0 0 10px}
|
||||
#faq_sch .sch_tit {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden}
|
||||
#faq_sch .frm_input {border:1px solid #d0d3db;width:300px;height:45px;border-radius:0;border-radius:3px}
|
||||
#faq_sch .btn_submit {padding:0 10px;height:45px;width:88px;font-size:1.083em;font-weight:bold;color:#fff;background:#434a54}
|
||||
@@ -0,0 +1,969 @@
|
||||
// 전역 변수
|
||||
var errmsg = "";
|
||||
var errfld = null;
|
||||
|
||||
// 필드 검사
|
||||
function check_field(fld, msg)
|
||||
{
|
||||
if ((fld.value = trim(fld.value)) == "")
|
||||
error_field(fld, msg);
|
||||
else
|
||||
clear_field(fld);
|
||||
return;
|
||||
}
|
||||
|
||||
// 필드 오류 표시
|
||||
function error_field(fld, msg)
|
||||
{
|
||||
if (msg != "")
|
||||
errmsg += msg + "\n";
|
||||
if (!errfld) errfld = fld;
|
||||
fld.style.background = "#BDDEF7";
|
||||
}
|
||||
|
||||
// 필드를 깨끗하게
|
||||
function clear_field(fld)
|
||||
{
|
||||
fld.style.background = "#FFFFFF";
|
||||
}
|
||||
|
||||
function trim(s)
|
||||
{
|
||||
var t = "";
|
||||
var from_pos = to_pos = 0;
|
||||
|
||||
for (i=0; i<s.length; i++)
|
||||
{
|
||||
if (s.charAt(i) == ' ')
|
||||
continue;
|
||||
else
|
||||
{
|
||||
from_pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (i=s.length; i>=0; i--)
|
||||
{
|
||||
if (s.charAt(i-1) == ' ')
|
||||
continue;
|
||||
else
|
||||
{
|
||||
to_pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
t = s.substring(from_pos, to_pos);
|
||||
// alert(from_pos + ',' + to_pos + ',' + t+'.');
|
||||
return t;
|
||||
}
|
||||
|
||||
// 자바스크립트로 PHP의 number_format 흉내를 냄
|
||||
// 숫자에 , 를 출력
|
||||
function number_format(data)
|
||||
{
|
||||
|
||||
var tmp = '';
|
||||
var number = '';
|
||||
var cutlen = 3;
|
||||
var comma = ',';
|
||||
var i;
|
||||
|
||||
data = data + '';
|
||||
|
||||
var sign = data.match(/^[\+\-]/);
|
||||
if(sign) {
|
||||
data = data.replace(/^[\+\-]/, "");
|
||||
}
|
||||
|
||||
len = data.length;
|
||||
mod = (len % cutlen);
|
||||
k = cutlen - mod;
|
||||
for (i=0; i<data.length; i++)
|
||||
{
|
||||
number = number + data.charAt(i);
|
||||
|
||||
if (i < data.length - 1)
|
||||
{
|
||||
k++;
|
||||
if ((k % cutlen) == 0)
|
||||
{
|
||||
number = number + comma;
|
||||
k = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(sign != null)
|
||||
number = sign+number;
|
||||
|
||||
return number;
|
||||
}
|
||||
|
||||
// 새 창
|
||||
function popup_window(url, winname, opt)
|
||||
{
|
||||
window.open(url, winname, opt);
|
||||
}
|
||||
|
||||
|
||||
// 폼메일 창
|
||||
function popup_formmail(url)
|
||||
{
|
||||
opt = 'scrollbars=yes,width=417,height=385,top=10,left=20';
|
||||
popup_window(url, "wformmail", opt);
|
||||
}
|
||||
|
||||
// , 를 없앤다.
|
||||
function no_comma(data)
|
||||
{
|
||||
var tmp = '';
|
||||
var comma = ',';
|
||||
var i;
|
||||
|
||||
for (i=0; i<data.length; i++)
|
||||
{
|
||||
if (data.charAt(i) != comma)
|
||||
tmp += data.charAt(i);
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// 삭제 검사 확인
|
||||
function del(href)
|
||||
{
|
||||
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
|
||||
document.location.href = href;
|
||||
}
|
||||
}
|
||||
|
||||
// 쿠키 입력
|
||||
function set_cookie(name, value, expirehours, domain)
|
||||
{
|
||||
var today = new Date();
|
||||
today.setTime(today.getTime() + (60*60*1000*expirehours));
|
||||
document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";";
|
||||
if (domain) {
|
||||
document.cookie += "domain=" + domain + ";";
|
||||
}
|
||||
}
|
||||
|
||||
// 쿠키 얻음
|
||||
function get_cookie(name)
|
||||
{
|
||||
var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
|
||||
if (match) return unescape(match[2]);
|
||||
return "";
|
||||
}
|
||||
|
||||
// 쿠키 지움
|
||||
function delete_cookie(name)
|
||||
{
|
||||
var today = new Date();
|
||||
|
||||
today.setTime(today.getTime() - 1);
|
||||
var value = get_cookie(name);
|
||||
if(value != "")
|
||||
document.cookie = name + "=" + value + "; path=/; expires=" + today.toGMTString();
|
||||
}
|
||||
|
||||
var last_id = null;
|
||||
function menu(id)
|
||||
{
|
||||
if (id != last_id)
|
||||
{
|
||||
if (last_id != null)
|
||||
document.getElementById(last_id).style.display = "none";
|
||||
document.getElementById(id).style.display = "block";
|
||||
last_id = id;
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById(id).style.display = "none";
|
||||
last_id = null;
|
||||
}
|
||||
}
|
||||
|
||||
function textarea_decrease(id, row)
|
||||
{
|
||||
if (document.getElementById(id).rows - row > 0)
|
||||
document.getElementById(id).rows -= row;
|
||||
}
|
||||
|
||||
function textarea_original(id, row)
|
||||
{
|
||||
document.getElementById(id).rows = row;
|
||||
}
|
||||
|
||||
function textarea_increase(id, row)
|
||||
{
|
||||
document.getElementById(id).rows += row;
|
||||
}
|
||||
|
||||
// 글숫자 검사
|
||||
function check_byte(content, target)
|
||||
{
|
||||
var i = 0;
|
||||
var cnt = 0;
|
||||
var ch = '';
|
||||
var cont = document.getElementById(content).value;
|
||||
|
||||
for (i=0; i<cont.length; i++) {
|
||||
ch = cont.charAt(i);
|
||||
if (escape(ch).length > 4) {
|
||||
cnt += 2;
|
||||
} else {
|
||||
cnt += 1;
|
||||
}
|
||||
}
|
||||
// 숫자를 출력
|
||||
document.getElementById(target).innerHTML = cnt;
|
||||
|
||||
return cnt;
|
||||
}
|
||||
|
||||
// 브라우저에서 오브젝트의 왼쪽 좌표
|
||||
function get_left_pos(obj)
|
||||
{
|
||||
var parentObj = null;
|
||||
var clientObj = obj;
|
||||
//var left = obj.offsetLeft + document.body.clientLeft;
|
||||
var left = obj.offsetLeft;
|
||||
|
||||
while((parentObj=clientObj.offsetParent) != null)
|
||||
{
|
||||
left = left + parentObj.offsetLeft;
|
||||
clientObj = parentObj;
|
||||
}
|
||||
|
||||
return left;
|
||||
}
|
||||
|
||||
// 브라우저에서 오브젝트의 상단 좌표
|
||||
function get_top_pos(obj)
|
||||
{
|
||||
var parentObj = null;
|
||||
var clientObj = obj;
|
||||
//var top = obj.offsetTop + document.body.clientTop;
|
||||
var top = obj.offsetTop;
|
||||
|
||||
while((parentObj=clientObj.offsetParent) != null)
|
||||
{
|
||||
top = top + parentObj.offsetTop;
|
||||
clientObj = parentObj;
|
||||
}
|
||||
|
||||
return top;
|
||||
}
|
||||
|
||||
function flash_movie(src, ids, width, height, wmode)
|
||||
{
|
||||
var wh = "";
|
||||
if (parseInt(width) && parseInt(height))
|
||||
wh = " width='"+width+"' height='"+height+"' ";
|
||||
return "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0' "+wh+" id="+ids+"><param name=wmode value="+wmode+"><param name=movie value="+src+"><param name=quality value=high><embed src="+src+" quality=high wmode="+wmode+" type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash' "+wh+"></embed></object>";
|
||||
}
|
||||
|
||||
function obj_movie(src, ids, width, height, autostart)
|
||||
{
|
||||
var wh = "";
|
||||
if (parseInt(width) && parseInt(height))
|
||||
wh = " width='"+width+"' height='"+height+"' ";
|
||||
if (!autostart) autostart = false;
|
||||
return "<embed src='"+src+"' "+wh+" autostart='"+autostart+"'></embed>";
|
||||
}
|
||||
|
||||
function doc_write(cont)
|
||||
{
|
||||
document.write(cont);
|
||||
}
|
||||
|
||||
var win_password_lost = function(href) {
|
||||
window.open(href, "win_password_lost", "left=50, top=50, width=617, height=330, scrollbars=1");
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
$("#login_password_lost, #ol_password_lost").click(function(){
|
||||
win_password_lost(this.href);
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 포인트 창
|
||||
**/
|
||||
var win_point = function(href) {
|
||||
var new_win = window.open(href, 'win_point', 'left=100,top=100,width=600, height=600, scrollbars=1');
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 쪽지 창
|
||||
**/
|
||||
var win_memo = function(href) {
|
||||
var new_win = window.open(href, 'win_memo', 'left=100,top=100,width=620,height=500,scrollbars=1');
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 쪽지 창
|
||||
**/
|
||||
var check_goto_new = function(href, event) {
|
||||
if( !(typeof g5_is_mobile != "undefined" && g5_is_mobile) ){
|
||||
if (window.opener && window.opener.document && window.opener.document.getElementById) {
|
||||
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
|
||||
window.open(href);
|
||||
//window.opener.document.location.href = href;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 메일 창
|
||||
**/
|
||||
var win_email = function(href) {
|
||||
var new_win = window.open(href, 'win_email', 'left=100,top=100,width=600,height=580,scrollbars=1');
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 자기소개 창
|
||||
**/
|
||||
var win_profile = function(href) {
|
||||
var new_win = window.open(href, 'win_profile', 'left=100,top=100,width=620,height=510,scrollbars=1');
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 스크랩 창
|
||||
**/
|
||||
var win_scrap = function(href) {
|
||||
var new_win = window.open(href, 'win_scrap', 'left=100,top=100,width=600,height=600,scrollbars=1');
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 홈페이지 창
|
||||
**/
|
||||
var win_homepage = function(href) {
|
||||
var new_win = window.open(href, 'win_homepage', '');
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 우편번호 창
|
||||
**/
|
||||
var win_zip = function(frm_name, frm_zip, frm_addr1, frm_addr2, frm_addr3, frm_jibeon) {
|
||||
if(typeof daum === "undefined"){
|
||||
alert("KAKAO 우편번호 서비스 postcode.v2.js 파일이 로드되지 않았습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 핀치 줌 현상 제거
|
||||
var vContent = "width=device-width,initial-scale=1.0,minimum-scale=0,maximum-scale=10";
|
||||
$("#meta_viewport").attr("content", vContent + ",user-scalable=no");
|
||||
|
||||
var zip_case = 1; //0이면 레이어, 1이면 페이지에 끼워 넣기, 2이면 새창
|
||||
|
||||
var complete_fn = function(data){
|
||||
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
|
||||
|
||||
// 각 주소의 노출 규칙에 따라 주소를 조합한다.
|
||||
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
|
||||
var fullAddr = ''; // 최종 주소 변수
|
||||
var extraAddr = ''; // 조합형 주소 변수
|
||||
|
||||
// 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
|
||||
if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
|
||||
fullAddr = data.roadAddress;
|
||||
|
||||
} else { // 사용자가 지번 주소를 선택했을 경우(J)
|
||||
fullAddr = data.jibunAddress;
|
||||
}
|
||||
|
||||
// 사용자가 선택한 주소가 도로명 타입일때 조합한다.
|
||||
if(data.userSelectedType === 'R'){
|
||||
//법정동명이 있을 경우 추가한다.
|
||||
if(data.bname !== ''){
|
||||
extraAddr += data.bname;
|
||||
}
|
||||
// 건물명이 있을 경우 추가한다.
|
||||
if(data.buildingName !== ''){
|
||||
extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
|
||||
}
|
||||
// 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.
|
||||
extraAddr = (extraAddr !== '' ? ' ('+ extraAddr +')' : '');
|
||||
}
|
||||
|
||||
// 우편번호와 주소 정보를 해당 필드에 넣고, 커서를 상세주소 필드로 이동한다.
|
||||
var of = document[frm_name];
|
||||
|
||||
of[frm_zip].value = data.zonecode;
|
||||
|
||||
of[frm_addr1].value = fullAddr;
|
||||
of[frm_addr3].value = extraAddr;
|
||||
|
||||
if(of[frm_jibeon] !== undefined){
|
||||
of[frm_jibeon].value = data.userSelectedType;
|
||||
}
|
||||
|
||||
setTimeout(function(){
|
||||
$("#meta_viewport").attr("content", vContent);
|
||||
of[frm_addr2].focus();
|
||||
} , 100);
|
||||
};
|
||||
|
||||
switch(zip_case) {
|
||||
case 1 : //iframe을 이용하여 페이지에 끼워 넣기
|
||||
var daum_pape_id = 'daum_juso_page'+frm_zip,
|
||||
element_wrap = document.getElementById(daum_pape_id),
|
||||
currentScroll = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
|
||||
if (element_wrap == null) {
|
||||
element_wrap = document.createElement("div");
|
||||
element_wrap.setAttribute("id", daum_pape_id);
|
||||
element_wrap.style.cssText = 'display:none;border:1px solid;left:0;width:100%;height:300px;margin:5px 0;position:relative;-webkit-overflow-scrolling:touch;';
|
||||
element_wrap.innerHTML = '<img src="//t1.daumcdn.net/postcode/resource/images/close.png" id="btnFoldWrap" style="cursor:pointer;position:absolute;right:0px;top:-21px;z-index:1" class="close_daum_juso" alt="접기 버튼">';
|
||||
jQuery('form[name="'+frm_name+'"]').find('input[name="'+frm_addr1+'"]').before(element_wrap);
|
||||
jQuery("#"+daum_pape_id).off("click", ".close_daum_juso").on("click", ".close_daum_juso", function(e){
|
||||
e.preventDefault();
|
||||
$("#meta_viewport").attr("content", vContent);
|
||||
jQuery(this).parent().hide();
|
||||
});
|
||||
}
|
||||
|
||||
new daum.Postcode({
|
||||
oncomplete: function(data) {
|
||||
complete_fn(data);
|
||||
// iframe을 넣은 element를 안보이게 한다.
|
||||
element_wrap.style.display = 'none';
|
||||
// 우편번호 찾기 화면이 보이기 이전으로 scroll 위치를 되돌린다.
|
||||
document.body.scrollTop = currentScroll;
|
||||
},
|
||||
// 우편번호 찾기 화면 크기가 조정되었을때 실행할 코드를 작성하는 부분.
|
||||
// iframe을 넣은 element의 높이값을 조정한다.
|
||||
onresize : function(size) {
|
||||
element_wrap.style.height = size.height + "px";
|
||||
},
|
||||
maxSuggestItems : g5_is_mobile ? 6 : 10,
|
||||
width : '100%',
|
||||
height : '100%'
|
||||
}).embed(element_wrap);
|
||||
|
||||
// iframe을 넣은 element를 보이게 한다.
|
||||
element_wrap.style.display = 'block';
|
||||
break;
|
||||
case 2 : //새창으로 띄우기
|
||||
new daum.Postcode({
|
||||
oncomplete: function(data) {
|
||||
complete_fn(data);
|
||||
}
|
||||
}).open();
|
||||
break;
|
||||
default : //iframe을 이용하여 레이어 띄우기
|
||||
var rayer_id = 'daum_juso_rayer'+frm_zip,
|
||||
element_layer = document.getElementById(rayer_id);
|
||||
if (element_layer == null) {
|
||||
element_layer = document.createElement("div");
|
||||
element_layer.setAttribute("id", rayer_id);
|
||||
element_layer.style.cssText = 'display:none;border:5px solid;position:fixed;width:300px;height:460px;left:50%;margin-left:-155px;top:50%;margin-top:-235px;overflow:hidden;-webkit-overflow-scrolling:touch;z-index:10000';
|
||||
element_layer.innerHTML = '<img src="//i1.daumcdn.net/localimg/localimages/07/postcode/320/close.png" id="btnCloseLayer" style="cursor:pointer;position:absolute;right:-3px;top:-3px;z-index:1" class="close_daum_juso" alt="닫기 버튼">';
|
||||
document.body.appendChild(element_layer);
|
||||
jQuery("#"+rayer_id).off("click", ".close_daum_juso").on("click", ".close_daum_juso", function(e){
|
||||
e.preventDefault();
|
||||
$("#meta_viewport").attr("content", vContent);
|
||||
jQuery(this).parent().hide();
|
||||
});
|
||||
}
|
||||
|
||||
new daum.Postcode({
|
||||
oncomplete: function(data) {
|
||||
complete_fn(data);
|
||||
// iframe을 넣은 element를 안보이게 한다.
|
||||
element_layer.style.display = 'none';
|
||||
},
|
||||
maxSuggestItems : g5_is_mobile ? 6 : 10,
|
||||
width : '100%',
|
||||
height : '100%'
|
||||
}).embed(element_layer);
|
||||
|
||||
// iframe을 넣은 element를 보이게 한다.
|
||||
element_layer.style.display = 'block';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 새로운 비밀번호 분실 창 : 101123
|
||||
**/
|
||||
win_password_lost = function(href)
|
||||
{
|
||||
var new_win = window.open(href, 'win_password_lost', 'width=617, height=330, scrollbars=1');
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 설문조사 결과
|
||||
**/
|
||||
var win_poll = function(href) {
|
||||
var new_win = window.open(href, 'win_poll', 'width=616, height=500, scrollbars=1');
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 쿠폰
|
||||
**/
|
||||
var win_coupon = function(href) {
|
||||
var new_win = window.open(href, "win_coupon", "left=100,top=100,width=700, height=600, scrollbars=1");
|
||||
new_win.focus();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 스크린리더 미사용자를 위한 스크립트 - 지운아빠 2013-04-22
|
||||
* alt 값만 갖는 그래픽 링크에 마우스오버 시 title 값 부여, 마우스아웃 시 title 값 제거
|
||||
**/
|
||||
$(function() {
|
||||
$('a img').mouseover(function() {
|
||||
$a_img_title = $(this).attr('alt');
|
||||
$(this).attr('title', $a_img_title);
|
||||
}).mouseout(function() {
|
||||
$(this).attr('title', '');
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* 텍스트 리사이즈
|
||||
**/
|
||||
function font_resize(id, rmv_class, add_class, othis)
|
||||
{
|
||||
var $el = $("#"+id);
|
||||
|
||||
if((typeof rmv_class !== "undefined" && rmv_class) || (typeof add_class !== "undefined" && add_class)){
|
||||
$el.removeClass(rmv_class).addClass(add_class);
|
||||
|
||||
set_cookie("ck_font_resize_rmv_class", rmv_class, 1, g5_cookie_domain);
|
||||
set_cookie("ck_font_resize_add_class", add_class, 1, g5_cookie_domain);
|
||||
}
|
||||
|
||||
if(typeof othis !== "undefined"){
|
||||
$(othis).addClass('select').siblings().removeClass('select');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 댓글 수정 토큰
|
||||
**/
|
||||
function set_comment_token(f)
|
||||
{
|
||||
if(typeof f.token === "undefined")
|
||||
$(f).prepend('<input type="hidden" name="token" value="">');
|
||||
|
||||
$.ajax({
|
||||
url: g5_bbs_url+"/ajax.comment_token.php",
|
||||
type: "GET",
|
||||
dataType: "json",
|
||||
async: false,
|
||||
cache: false,
|
||||
success: function(data, textStatus) {
|
||||
f.token.value = data.token;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(function(){
|
||||
$(".win_point").click(function() {
|
||||
win_point(this.href);
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".win_memo").click(function() {
|
||||
win_memo(this.href);
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".win_email").click(function() {
|
||||
win_email(this.href);
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".win_scrap").click(function() {
|
||||
win_scrap(this.href);
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".win_profile").click(function() {
|
||||
win_profile(this.href);
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".win_homepage").click(function() {
|
||||
win_homepage(this.href);
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".win_password_lost").click(function() {
|
||||
win_password_lost(this.href);
|
||||
return false;
|
||||
});
|
||||
|
||||
/*
|
||||
$(".win_poll").click(function() {
|
||||
win_poll(this.href);
|
||||
return false;
|
||||
});
|
||||
*/
|
||||
|
||||
$(".win_coupon").click(function() {
|
||||
win_coupon(this.href);
|
||||
return false;
|
||||
});
|
||||
|
||||
// 사이드뷰
|
||||
var sv_hide = false;
|
||||
$(".sv_member, .sv_guest").click(function() {
|
||||
$(".sv").removeClass("sv_on");
|
||||
$(this).closest(".sv_wrap").find(".sv").addClass("sv_on");
|
||||
});
|
||||
|
||||
$(".sv, .sv_wrap").hover(
|
||||
function() {
|
||||
sv_hide = false;
|
||||
},
|
||||
function() {
|
||||
sv_hide = true;
|
||||
}
|
||||
);
|
||||
|
||||
$(".sv_member, .sv_guest").focusin(function() {
|
||||
sv_hide = false;
|
||||
$(".sv").removeClass("sv_on");
|
||||
$(this).closest(".sv_wrap").find(".sv").addClass("sv_on");
|
||||
});
|
||||
|
||||
$(".sv a").focusin(function() {
|
||||
sv_hide = false;
|
||||
});
|
||||
|
||||
$(".sv a").focusout(function() {
|
||||
sv_hide = true;
|
||||
});
|
||||
|
||||
// 셀렉트 ul
|
||||
var sel_hide = false;
|
||||
$('.sel_btn').click(function() {
|
||||
$('.sel_ul').removeClass('sel_on');
|
||||
$(this).siblings('.sel_ul').addClass('sel_on');
|
||||
});
|
||||
|
||||
$(".sel_wrap").hover(
|
||||
function() {
|
||||
sel_hide = false;
|
||||
},
|
||||
function() {
|
||||
sel_hide = true;
|
||||
}
|
||||
);
|
||||
|
||||
$('.sel_a').focusin(function() {
|
||||
sel_hide = false;
|
||||
});
|
||||
|
||||
$('.sel_a').focusout(function() {
|
||||
sel_hide = true;
|
||||
});
|
||||
|
||||
$(document).click(function() {
|
||||
if(sv_hide) { // 사이드뷰 해제
|
||||
$(".sv").removeClass("sv_on");
|
||||
}
|
||||
if (sel_hide) { // 셀렉트 ul 해제
|
||||
$('.sel_ul').removeClass('sel_on');
|
||||
}
|
||||
});
|
||||
|
||||
$(document).focusin(function() {
|
||||
if(sv_hide) { // 사이드뷰 해제
|
||||
$(".sv").removeClass("sv_on");
|
||||
}
|
||||
if (sel_hide) { // 셀렉트 ul 해제
|
||||
$('.sel_ul').removeClass('sel_on');
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on( "keyup change", "textarea#wr_content[maxlength]", function(){
|
||||
var str = $(this).val();
|
||||
var mx = parseInt($(this).attr("maxlength"));
|
||||
if (str.length > mx) {
|
||||
$(this).val(str.substr(0, mx));
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function get_write_token(bo_table)
|
||||
{
|
||||
var token = "";
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: g5_bbs_url+"/write_token.php",
|
||||
data: { bo_table: bo_table },
|
||||
cache: false,
|
||||
async: false,
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
if(data.error) {
|
||||
alert(data.error);
|
||||
if(data.url)
|
||||
document.location.href = data.url;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
token = data.token;
|
||||
}
|
||||
});
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$(document).on("click", "form[name=fwrite] input:submit, form[name=fwrite] button:submit, form[name=fwrite] input:image", function() {
|
||||
var f = this.form;
|
||||
|
||||
if (typeof(f.bo_table) == "undefined") {
|
||||
return;
|
||||
}
|
||||
|
||||
var bo_table = f.bo_table.value;
|
||||
var token = get_write_token(bo_table);
|
||||
|
||||
if(!token) {
|
||||
alert("토큰 정보가 올바르지 않습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var $f = $(f);
|
||||
|
||||
if(typeof f.token === "undefined")
|
||||
$f.prepend('<input type="hidden" name="token" value="">');
|
||||
|
||||
$f.find("input[name=token]").val(token);
|
||||
|
||||
return true;
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
//디자인팀 작업 내용 추가
|
||||
// include.js
|
||||
window.addEventListener('load', function() {
|
||||
var allElements = document.getElementsByTagName('*');
|
||||
Array.prototype.forEach.call(allElements, function(el) {
|
||||
var includePath = el.dataset.includePath;
|
||||
if (includePath) {
|
||||
var xhttp = new XMLHttpRequest();
|
||||
xhttp.onreadystatechange = function () {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
el.outerHTML = this.responseText;
|
||||
}
|
||||
};
|
||||
xhttp.open('GET', includePath, true);
|
||||
xhttp.send();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ★★ lenis 멈추기★★
|
||||
function handlePopupScroll() {
|
||||
$('body').css('overflow', 'hidden');
|
||||
$('body').on('wheel', function(e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
lenis.stop();
|
||||
}
|
||||
|
||||
// 각 팝업창 불러오기
|
||||
function agreement(){
|
||||
$(".popup_wrap").hide();
|
||||
$('.btn_close').show();
|
||||
$('#pop_agreement').show(0, function(){
|
||||
$.getScript("./js/popup.js", function() {
|
||||
handlePopupScroll();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
function join(){
|
||||
$(".popup_wrap").hide();
|
||||
$('#pop_join').show(0, function(){
|
||||
$.getScript("./js/popup.js", function() {
|
||||
handlePopupScroll();
|
||||
});});
|
||||
};
|
||||
|
||||
function login(){
|
||||
$(".popup_wrap").hide();
|
||||
$('#pop_login').show(0, function(){
|
||||
$.getScript("./js/popup.js", function() {
|
||||
handlePopupScroll();
|
||||
});});
|
||||
};
|
||||
|
||||
function mypage01(){
|
||||
$(".popup_wrap").hide();
|
||||
$('.btn_close').show();
|
||||
$('#pop_mypage01').show(0, function(){
|
||||
$.getScript("./js/popup.js", function() {
|
||||
handlePopupScroll();
|
||||
});});
|
||||
};
|
||||
|
||||
function mypage02(){
|
||||
$(".popup_wrap").hide();
|
||||
$('#pop_mypage02').show(0, function(){
|
||||
$.getScript("./js/popup.js", function() {
|
||||
handlePopupScroll();
|
||||
});});
|
||||
};
|
||||
|
||||
function mypage03(){
|
||||
$(".popup_wrap").hide();
|
||||
$('#pop_mypage03').show(0, function(){
|
||||
$.getScript("./js/popup.js", function() {
|
||||
handlePopupScroll();
|
||||
});});
|
||||
};
|
||||
|
||||
function search(){
|
||||
$(".popup_wrap").hide();
|
||||
$('#pop_search').show(0, function(){
|
||||
$.getScript("./js/popup.js", function() {
|
||||
handlePopupScroll();
|
||||
});});
|
||||
};
|
||||
|
||||
function sitemap(){
|
||||
$(".popup_sitemap").hide();
|
||||
$('#sitemap').show(0, function(){
|
||||
$.getScript("./js/popup.js", function() {
|
||||
handlePopupScroll();
|
||||
});});
|
||||
};
|
||||
|
||||
|
||||
function privacy(type) {
|
||||
$(".popup_wrap").hide();
|
||||
$('#pop_privacy').show(0, function() {
|
||||
if (type === 'privacy') {
|
||||
$('#pop_privacy li.tab_privacy').addClass('on');
|
||||
$('#pop_privacy li.tab_agreement').removeClass('on');
|
||||
$('.content.pri').addClass('show').removeClass('hide');
|
||||
$('.content.agr').removeClass('show').addClass('hide');
|
||||
|
||||
} else if (type === 'agreement') {
|
||||
$('#pop_privacy li.tab_agreement').addClass('on');
|
||||
$('#pop_privacy li.tab_privacy').removeClass('on');
|
||||
$('.content.agr').addClass('show').removeClass('hide');
|
||||
$('.content.pri').removeClass('show').addClass('hide');
|
||||
}
|
||||
$('body').css('overflow', 'hidden');
|
||||
$('#pop_privacy .content').css('overflow', 'auto');
|
||||
$('#pop_privacy .content').on('wheel', function(e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
$.getScript("./js/popup.js", function() {
|
||||
lenis.stop();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// FOOTER - top버튼 위치 조정하기
|
||||
document.addEventListener('DOMContentLoaded', (event)=> {
|
||||
|
||||
const topButton = document.querySelector('.btn_top');
|
||||
|
||||
function adjustButtonPosition() {
|
||||
const scrollY = window.scrollY; // 현재 스크롤 위치
|
||||
const windowHeight = window.innerHeight; // 윈도우 높이
|
||||
const documentHeight = document.documentElement.scrollHeight; // 문서 전체 높이
|
||||
|
||||
const bottomSpace = 230; // 탑 버튼이 아래에서 떨어져 있어야 하는 거리
|
||||
// const buttonHeight = topButton.offsetHeight; // 탑 버튼의 높이
|
||||
|
||||
// 문서의 맨 아래로부터 300px 떨어지기 위한 계산
|
||||
if (scrollY + windowHeight >= documentHeight - bottomSpace) {
|
||||
topButton.style.bottom = `${bottomSpace + (scrollY + windowHeight - documentHeight)}px`;
|
||||
} else {
|
||||
topButton.style.bottom = '60px'; // 원래의 위치
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('scroll', adjustButtonPosition);
|
||||
window.addEventListener('load', adjustButtonPosition);
|
||||
|
||||
const showNav = gsap.from(".js__header", {
|
||||
yPercent: -200,
|
||||
paused: true,
|
||||
duration: 0.2
|
||||
}).progress(1);
|
||||
|
||||
ScrollTrigger.create({
|
||||
start: "top top",
|
||||
end: 99999,
|
||||
onUpdate: (self) => {
|
||||
self.direction === -1 ? showNav.play() : showNav.reverse()
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// FOOTER - 패밀리사이트 열고닫기
|
||||
$(function(){
|
||||
$('.menu_my').mouseover(function(){
|
||||
$('.menu_my_list').show();
|
||||
})
|
||||
|
||||
$('.menu_my').mouseout(function(){
|
||||
$('.menu_my_list').hide();
|
||||
})
|
||||
|
||||
//footer family site toggle
|
||||
$('.family_btn').click(function(){
|
||||
$('.family_list').toggleClass('family_on');
|
||||
$('.family_btn').toggleClass('family_on');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// HEADER - faq버튼이 배경에 따라 블랙&화이트로 변하기
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const goFaq = document.querySelector('.floating_faq');
|
||||
const darkSections = document.querySelectorAll('.js__dark');
|
||||
|
||||
const observerOptions = {
|
||||
root: null,
|
||||
rootMargin: '0px',
|
||||
threshold: 0.5
|
||||
};
|
||||
|
||||
const observerCallback = (entries) => {
|
||||
let darkSectionVisible = false;
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
darkSectionVisible = true;
|
||||
}
|
||||
});
|
||||
if (darkSectionVisible) {
|
||||
goFaq.style.backgroundColor = '#fff';
|
||||
goFaq.style.color = '#000';
|
||||
} else {
|
||||
goFaq.style.backgroundColor = '#000';
|
||||
goFaq.style.color = '#fff';
|
||||
}
|
||||
};
|
||||
const observer = new IntersectionObserver(observerCallback, observerOptions);
|
||||
darkSections.forEach(section => observer.observe(section));
|
||||
});
|
||||
|
After Width: | Height: | Size: 77 B |
|
After Width: | Height: | Size: 318 B |
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
|
||||
$list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
?>
|
||||
|
||||
<div class="lat">
|
||||
<h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
|
||||
<ul>
|
||||
<?php for ($i=0; $i<$list_count; $i++) { ?>
|
||||
<li class="basic_li">
|
||||
<?php
|
||||
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i><span class=\"sound_only\">비밀글</span> ";
|
||||
|
||||
echo "<a href=\"".get_pretty_url($bo_table, $list[$i]['wr_id'])."\"> ";
|
||||
if ($list[$i]['is_notice'])
|
||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||
else
|
||||
echo $list[$i]['subject'];
|
||||
|
||||
echo "</a>";
|
||||
|
||||
if ($list[$i]['icon_hot']) echo "<span class=\"hot_icon\"><i class=\"fa fa-heart\" aria-hidden=\"true\"></i><span class=\"sound_only\">인기글</span></span>";
|
||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||
// if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
|
||||
// if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }
|
||||
|
||||
echo $list[$i]['icon_reply']." ";
|
||||
if ($list[$i]['icon_file']) echo " <i class=\"fa fa-download\" aria-hidden=\"true\"></i>" ;
|
||||
if ($list[$i]['icon_link']) echo " <i class=\"fa fa-link\" aria-hidden=\"true\"></i>" ;
|
||||
|
||||
if ($list[$i]['comment_cnt']) echo "
|
||||
<span class=\"lt_cmt\"><span class=\"sound_only\">댓글</span>".$list[$i]['comment_cnt']."</span>";
|
||||
|
||||
?>
|
||||
<div class="lt_info">
|
||||
<span class="lt_nick"><?php echo $list[$i]['name'] ?></span>
|
||||
<span class="lt_date"><?php echo $list[$i]['datetime2'] ?></span>
|
||||
</div>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if ($list_count == 0) { //게시물이 없을 때 ?>
|
||||
<li class="empty_li">게시물이 없습니다.</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<a href="<?php echo get_pretty_url($bo_table); ?>" class="lt_more"><span class="sound_only"><?php echo $bo_subject ?></span>더보기</a>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,31 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* 새글 스킨 (latest) */
|
||||
.lat {position:relative;margin-bottom:20px;background:#fff}
|
||||
.lat .lat_title {display:block;line-height:45px;font-size:1.2em;color:#253dbe}
|
||||
.lat .lat_title a {position:relative;color:#000;display:inline-block}
|
||||
|
||||
.lat ul {padding:10px 0}
|
||||
.lat li {position:relative;line-height:18px;border-bottom:1px solid #e5ecee;margin-bottom:10px}
|
||||
.lat li a {font-weight:bold;font-size:1.2em;line-height:20px;vertical-align:middle}
|
||||
.lat li a:hover {color:#3a8afd}
|
||||
.lat li .fa-heart {color:#ff0000}
|
||||
.lat li .fa-lock {display:inline-block;line-height:14px;width:16px;font-size:0.833em;color:#4f818c;background:#cbe3e8;text-align:center;border-radius:2px;font-size:12px;border:1px solid #cbe3e8;vertical-align:middle}
|
||||
.lat li .new_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#23db79;background:#b9ffda;text-align:center;border-radius:2px;margin-left:2px;font-weight:bold;vertical-align:middle}
|
||||
.lat li .hot_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#ff0000;background:#ffb9b9;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
.lat li .fa-caret-right {color:#bbb}
|
||||
.lat li .fa-download {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#daae37;background:#ffefb9;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
.lat li .fa-link {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#b451fd;background:#edd3fd;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
|
||||
.lat .profile_img img{border-radius:50%}
|
||||
|
||||
.lt_info {padding:10px 0}
|
||||
.lt_info .lt_nick {}
|
||||
.lt_info .lt_date {color:#888}
|
||||
|
||||
.lat .empty_li {line-height:145px;color:#666;text-align:center;padding:0}
|
||||
.lat .empty_li:before {background:none;padding:0}
|
||||
|
||||
.lat .lt_cmt {background:#e9eff5;color:#3a8afd;font-size:11px;height:16px;line-height:16px;padding:0 5px;border-radius:3px;vertical-align:middle}
|
||||
.lat .lt_more {position:absolute;top:11px;right:0;display:block;width:40px;line-height:25px;color:#3a8afd;border-radius:3px;text-align:center}
|
||||
.lat .lt_more:hover {color:#777}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
|
||||
add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10);
|
||||
$list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
?>
|
||||
|
||||
<div class="notice ft_cnt">
|
||||
<h2><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
|
||||
<ul>
|
||||
<?php for ($i=0; $i<$list_count; $i++) { ?>
|
||||
<li>
|
||||
<?php
|
||||
if ($list[$i]['icon_secret']) echo "<span class=\"lock_icon\"><i class=\"fa fa-lock\" aria-hidden=\"true\"></i></span> ";
|
||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||
//echo $list[$i]['icon_reply']." ";
|
||||
echo "<a href=\"".get_pretty_url($bo_table, $list[$i]['wr_id'])."\">";
|
||||
if ($list[$i]['is_notice'])
|
||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||
else
|
||||
echo $list[$i]['subject'];
|
||||
|
||||
if ($list[$i]['comment_cnt'])
|
||||
echo $list[$i]['comment_cnt'];
|
||||
|
||||
echo "</a>";
|
||||
|
||||
// if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
|
||||
// if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }
|
||||
|
||||
//if ($list[$i]['icon_file']) echo " <i class=\"fa fa-download\" aria-hidden=\"true\"></i>" ;
|
||||
//if ($list[$i]['icon_link']) echo " <i class=\"fa fa-link\" aria-hidden=\"true\"></i>" ;
|
||||
//if ($list[$i]['icon_hot']) echo " <i class=\"fa fa-heart\" aria-hidden=\"true\"></i>";
|
||||
?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if ($list_count == 0) { //게시물이 없을 때 ?>
|
||||
<li class="empty_li">게시물이 없습니다.</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -0,0 +1,12 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* 새글 스킨 (latest) */
|
||||
.notice {position:relative;padding:15px 50px}
|
||||
.notice h2 {margin-bottom:20px}
|
||||
.notice h2 a {font-size:1.2em;color:#fff}
|
||||
.notice li {text-overflow:ellipsis;overflow:hidden;white-space:nowrap;border-bottom:1px solid #343434}
|
||||
.notice li a, .notice li.empty_li {color:#e3e3e3;padding:11px 0;display:inline-block}
|
||||
.notice li .lock_icon {display:inline-block;line-height:14px;width:16px;font-size:0.833em;color:#4f818c;background:#cbe3e8;text-align:center;border-radius:2px;font-size: 12px;border:1px solid #a2c6ce;vertical-align:baseline}
|
||||
.notice li .new_icon {display:inline-block;line-height:16px;width:16px;font-size:0.833em;color:#ffff00;background:#6db142;text-align:center;margin-right:3px;border-radius:2px;vertical-align:baseline}
|
||||
.notice .cnt_cm {background:#5c85c1;color:#fff;font-size:11px;height:16px;line-height:16px;padding:0 5px;border-radius:3px;white-space:nowrap;margin-left:5px}
|
||||
.notice li.empty_li {border-bottom:0;line-height:120px}
|
||||
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
|
||||
$thumb_width = 210;
|
||||
$thumb_height = 150;
|
||||
$list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
?>
|
||||
|
||||
<div class="pic_lt">
|
||||
<h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
|
||||
<ul>
|
||||
<?php
|
||||
for ($i=0; $i<$list_count; $i++) {
|
||||
$thumb = get_list_thumbnail($bo_table, $list[$i]['wr_id'], $thumb_width, $thumb_height, false, true);
|
||||
|
||||
if($thumb['src']) {
|
||||
$img = $thumb['src'];
|
||||
} else {
|
||||
$img = G5_IMG_URL.'/no_img.png';
|
||||
$thumb['alt'] = '이미지가 없습니다.';
|
||||
}
|
||||
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
||||
$wr_href = get_pretty_url($bo_table, $list[$i]['wr_id']);
|
||||
?>
|
||||
<li class="gallery_li">
|
||||
<a href="<?php echo $wr_href; ?>" class="lt_img"><?php echo run_replace('thumb_image_tag', $img_content, $thumb); ?></a>
|
||||
<?php
|
||||
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i><span class=\"sound_only\">비밀글</span> ";
|
||||
|
||||
echo "<a href=\"".$wr_href."\"> ";
|
||||
if ($list[$i]['is_notice'])
|
||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||
else
|
||||
echo $list[$i]['subject'];
|
||||
echo "</a>";
|
||||
|
||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||
if ($list[$i]['icon_hot']) echo "<span class=\"hot_icon\">H<span class=\"sound_only\">인기글</span></span>";
|
||||
|
||||
// if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
|
||||
// if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }
|
||||
|
||||
// echo $list[$i]['icon_reply']." ";
|
||||
// if ($list[$i]['icon_file']) echo " <i class=\"fa fa-download\" aria-hidden=\"true\"></i>" ;
|
||||
// if ($list[$i]['icon_link']) echo " <i class=\"fa fa-link\" aria-hidden=\"true\"></i>" ;
|
||||
|
||||
if ($list[$i]['comment_cnt']) echo "
|
||||
<span class=\"lt_cmt\">".$list[$i]['wr_comment']."</span>";
|
||||
|
||||
?>
|
||||
|
||||
<div class="lt_info">
|
||||
<span class="lt_nick"><?php echo $list[$i]['name'] ?></span>
|
||||
<span class="lt_date"><?php echo $list[$i]['datetime2'] ?></span>
|
||||
</div>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if ($list_count == 0) { //게시물이 없을 때 ?>
|
||||
<li class="empty_li">게시물이 없습니다.</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<a href="<?php echo get_pretty_url($bo_table); ?>" class="lt_more"><span class="sound_only"><?php echo $bo_subject ?></span>더보기</a>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,36 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* 새글 스킨 (latest) */
|
||||
.pic_lt {position:relative;margin-bottom:20px;background:#fff}
|
||||
.pic_lt .lat_title {display:block;line-height:45px;font-size:1.2em;color:#253dbe}
|
||||
.pic_lt .lat_title a {color:#000;display:inline-block;position:relative}
|
||||
|
||||
.pic_lt .lt_more {position:absolute;top:11px;right:10px;display:block;width:25px;line-height:25px;color:#aaa;border-radius:3px;text-align:center;}
|
||||
.pic_lt .lt_more:hover {color:#777}
|
||||
.pic_lt ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.pic_lt ul {margin: 0 -10px}
|
||||
.pic_lt li {float:left;width:25%;padding:0 10px}
|
||||
.pic_lt li.gallery_li:nth-child(4n+1) {clear: both!important}
|
||||
.pic_lt li .lt_img {margin:5px 0;display:block}
|
||||
.pic_lt li .lt_img img, .pic_lt li .lt_img video {width:100%;height:auto}
|
||||
.pic_lt li a:hover {color:#a22121}
|
||||
.pic_lt li .fa-heart {color:#ff0000}
|
||||
.pic_lt li .fa-lock {display:inline-block;line-height:14px;width:16px;color:#4f818c;background:#cbe3e8;text-align:center;border-radius:2px;font-size:12px;border:1px solid #cbe3e8;vertical-align:middle}
|
||||
.pic_lt li .new_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#23db79;background:#b9ffda;text-align:center;border-radius:2px;margin-left:2px;font-weight:bold;vertical-align:middle}
|
||||
.pic_lt li .hot_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#ff0000;background:#ffb9b9;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
.pic_lt li .fa-caret-right {color:#bbb}
|
||||
.pic_lt li .fa-download {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#daae37;background:#ffefb9;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
.pic_lt li .fa-link {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#b451fd;background:#edd3fd;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
|
||||
.pic_lt .profile_img img{border-radius:50%}
|
||||
|
||||
.lt_info {padding:10px 0}
|
||||
.lt_info .lt_nick {}
|
||||
.lt_info .lt_date {color:#888}
|
||||
|
||||
.pic_lt .empty_li {line-height:145px ;color:#666;text-align:center;padding:0}
|
||||
.pic_lt .empty_li:before {background:none;padding:0}
|
||||
|
||||
.pic_lt .lt_cmt {background:#e9eff5;color:#3a8afd;font-size:11px;height:16px;line-height:16px;padding:0 5px;border-radius:3px;vertical-align:middle}
|
||||
.pic_lt .lt_more {position:absolute;top:11px;right:0;display:block;width:40px;line-height:25px;color:#3a8afd;border-radius:3px;text-align:center}
|
||||
.pic_lt .lt_more:hover {color:#777}
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
|
||||
$thumb_width = 297;
|
||||
$thumb_height = 212;
|
||||
$list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
?>
|
||||
|
||||
<div class="pic_li_lt">
|
||||
<h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
|
||||
<ul>
|
||||
<?php
|
||||
for ($i=0; $i<$list_count; $i++) {
|
||||
|
||||
$img_link_html = '';
|
||||
|
||||
$wr_href = get_pretty_url($bo_table, $list[$i]['wr_id']);
|
||||
|
||||
if( $i === 0 ) {
|
||||
$thumb = get_list_thumbnail($bo_table, $list[$i]['wr_id'], $thumb_width, $thumb_height, false, true);
|
||||
|
||||
if($thumb['src']) {
|
||||
$img = $thumb['src'];
|
||||
} else {
|
||||
$img = G5_IMG_URL.'/no_img.png';
|
||||
$thumb['alt'] = '이미지가 없습니다.';
|
||||
}
|
||||
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
||||
$img_link_html = '<a href="'.$wr_href.'" class="lt_img" >'.run_replace('thumb_image_tag', $img_content, $thumb).'</a>';
|
||||
}
|
||||
?>
|
||||
<li>
|
||||
<?php echo $img_link_html; ?>
|
||||
<?php
|
||||
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i><span class=\"sound_only\">비밀글</span> ";
|
||||
|
||||
echo "<a href=\"".$wr_href."\" class=\"pic_li_tit\"> ";
|
||||
if ($list[$i]['is_notice'])
|
||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||
else
|
||||
echo $list[$i]['subject'];
|
||||
|
||||
echo "</a>";
|
||||
|
||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||
if ($list[$i]['icon_hot']) echo "<span class=\"hot_icon\">H<span class=\"sound_only\">인기글</span></span>";
|
||||
|
||||
// if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
|
||||
// if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }
|
||||
|
||||
//echo $list[$i]['icon_reply']." ";
|
||||
// if ($list[$i]['icon_file']) echo " <i class=\"fa fa-download\" aria-hidden=\"true\"></i>" ;
|
||||
//if ($list[$i]['icon_link']) echo " <i class=\"fa fa-link\" aria-hidden=\"true\"></i>" ;
|
||||
|
||||
if ($list[$i]['comment_cnt']) echo "
|
||||
<span class=\"lt_cmt\">".$list[$i]['wr_comment']."</span>";
|
||||
|
||||
?>
|
||||
|
||||
<div class="lt_info">
|
||||
<span class="lt_nick"><?php echo $list[$i]['name'] ?></span>
|
||||
<span class="lt_date"><?php echo $list[$i]['datetime2'] ?></span>
|
||||
</div>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if ($list_count == 0) { //게시물이 없을 때 ?>
|
||||
<li class="empty_li">게시물이 없습니다.</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<a href="<?php echo get_pretty_url($bo_table); ?>" class="lt_more"><span class="sound_only"><?php echo $bo_subject ?></span>더보기</a>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,37 @@
|
||||
@charset "utf-8";
|
||||
|
||||
/* 새글 스킨 (latest) */
|
||||
.pic_li_lt {position:relative;width:33.3333%;float:left;padding:0 10px;background:#fff}
|
||||
.pic_li_lt .lat_title {display:block;line-height:45px;font-size:1.2em;color:#253dbe}
|
||||
.pic_li_lt .lat_title a {color:#000;display:inline-block;position:relative}
|
||||
.latest_top_wr .pic_li_lt:nth-child(3n+1) {clear: both!important}
|
||||
|
||||
.pic_li_lt .lt_more {position:absolute;top:11px;right:10px;display:block;width:25px;line-height:25px;color:#aaa;border-radius:3px;text-align:center}
|
||||
.pic_li_lt .lt_more:hover {color:#777}
|
||||
.pic_li_lt ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.pic_li_lt li {border-bottom:1px solid #e5ecee;margin-bottom:10px}
|
||||
.pic_li_lt li .lt_img {display:none}
|
||||
.pic_li_lt li:first-child .lt_img {display:block;margin:0 0 10px;}
|
||||
.pic_li_lt li:first-child .lt_img img, .pic_li_lt li .lt_img video {width:100%;height:auto}
|
||||
.pic_li_lt li .pic_li_tit {font-weight:bold;font-size:1.2em;line-height:20px;vertical-align:middle}
|
||||
|
||||
.pic_li_lt li .fa-heart {color:#ff0000}
|
||||
.pic_li_lt li .fa-lock {display:inline-block;line-height:14px;width:16px;color:#4f818c;background:#cbe3e8;text-align:center;border-radius:2px;font-size:12px;border:1px solid #cbe3e8;vertical-align:middle}
|
||||
.pic_li_lt li .new_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#23db79;background:#b9ffda;text-align:center;border-radius:2px;margin-left:2px;font-weight:bold;vertical-align:middle}
|
||||
.pic_li_lt li .hot_icon {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#ff0000;background:#ffb9b9;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
.pic_li_lt li .fa-caret-right {color:#bbb}
|
||||
.pic_li_lt li .fa-download {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#daae37;background:#ffefb9;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
.pic_li_lt li .fa-link {display:inline-block;width:16px;line-height:16px;font-size:0.833em;color:#b451fd;background:#edd3fd;text-align:center;border-radius:2px;vertical-align:middle}
|
||||
|
||||
.pic_li_lt .profile_img img{border-radius:50%}
|
||||
|
||||
.lt_info {padding:10px 0}
|
||||
.lt_info .lt_nick {}
|
||||
.lt_info .lt_date {color:#888}
|
||||
|
||||
.pic_li_lt .empty_li {line-height:145px;color:#666;text-align:center;padding:0}
|
||||
.pic_li_lt .empty_li:before {background:none;padding:0}
|
||||
|
||||
.pic_li_lt .lt_cmt {background:#e9eff5;color:#3a8afd;font-size:11px;height:16px;line-height:16px;padding:0 5px;border-radius:3px;vertical-align:middle}
|
||||
.pic_li_lt .lt_more {position:absolute;top:11px;right:10px;display:block;width:40px;line-height:25px;color:#3a8afd;border-radius:3px;text-align:center}
|
||||
.pic_li_lt .lt_more:hover {color:#777}
|
||||
|
After Width: | Height: | Size: 107 B |
|
After Width: | Height: | Size: 97 B |
|
After Width: | Height: | Size: 145 B |
|
After Width: | Height: | Size: 104 B |
|
After Width: | Height: | Size: 62 B |
|
After Width: | Height: | Size: 169 B |
|
After Width: | Height: | Size: 110 B |
|
After Width: | Height: | Size: 71 B |
|
After Width: | Height: | Size: 77 B |
|
After Width: | Height: | Size: 97 B |
|
After Width: | Height: | Size: 113 B |
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
|
||||
<div class="lat">
|
||||
<strong class="lat_title"><i class="fa fa-list-ul" aria-hidden="true"></i> <a href="<?php echo G5_BBS_URL ?>/board.php?bo_table=<?php echo $bo_table ?>"><?php echo $bo_subject ?></a></strong>
|
||||
<ul>
|
||||
<?php for ($i=0; $i<count($list); $i++) { ?>
|
||||
<li>
|
||||
<?php
|
||||
//echo $list[$i]['icon_reply']." ";
|
||||
echo "<a href=\"".$list[$i]['href']."\">";
|
||||
if ($list[$i]['is_notice'])
|
||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||
else
|
||||
echo $list[$i]['subject'];
|
||||
|
||||
if ($list[$i]['comment_cnt'])
|
||||
echo $list[$i]['comment_cnt'];
|
||||
|
||||
echo "</a>";
|
||||
|
||||
// if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
|
||||
// if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }
|
||||
|
||||
if (isset($list[$i]['icon_new']) && $list[$i]['icon_new']) echo " <span class=\"new_icon\">NEW</span>";
|
||||
//if (isset($list[$i]['icon_hot'])) echo " <i class=\"fa fa-heart\" aria-hidden=\"true\"></i>" ;
|
||||
//if (isset($list[$i]['icon_file'])) echo " <i class=\"fa fa-download\" aria-hidden=\"true\"></i>" ;
|
||||
//if (isset($list[$i]['icon_link'])) echo " <i class=\"fa fa-link\" aria-hidden=\"true\"></i>" ;
|
||||
//if (isset($list[$i]['icon_secret'])) echo " <i class=\"fa fa-lock\" aria-hidden=\"true\"></i>" ;
|
||||
?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if (count($list) == 0) { //게시물이 없을 때 ?>
|
||||
<li>게시물이 없습니다.</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -0,0 +1,12 @@
|
||||
@charset "utf-8";
|
||||
/* 새글 스킨 (latest) */
|
||||
.lat {position:relative;}
|
||||
.lat ul {margin:0 0 10px;padding:0;list-style:none;border:1px solid #e5e5e5}
|
||||
.lat li {border-top:1px solid #f3f3f3;padding:10px}
|
||||
.lat li:first-child{border:0}
|
||||
.lat li i{color:#9da4bc}
|
||||
.lat li .fa-heart{color:#ff0000}
|
||||
.lat li .new_icon{display:inline-block;padding: 0 3px;line-height:14px ;font-size:0.833em;color:#fff;background:#c56bed}
|
||||
.lat li .cnt_cmt{color:#ff3970}
|
||||
.lat_title {display:block;padding:10px 0 8px;font-size:1.167em}
|
||||
.lat_more {position:absolute;top:10px;right:0;}
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
?>
|
||||
@@ -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) // 네트워크 문제일 경우 확인용
|
||||
]);
|
||||
}
|
||||
?>
|
||||
@@ -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 = [];
|
||||
}
|
||||
?>
|
||||
@@ -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 재전송 실패']);
|
||||
}
|
||||
?>
|
||||
@@ -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;
|
||||
?>
|
||||
@@ -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]);
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
<!-- } 폼메일 끝 -->
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 54 B |
@@ -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>
|
||||
@@ -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>
|
||||
<!-- } 로그인 끝 -->
|
||||
|
||||
@@ -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>
|
||||
@@ -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; // 개별 페이지 접근 불가
|
||||
|
||||
// 자신만의 코드를 넣어주세요.
|
||||
@@ -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>
|
||||