Compare commits

..
69 Commits
Author SHA1 Message Date
thisgun fff7e074ff Merge branch 'master' of github.com:gnuboard/g5 2020-03-03 18:48:19 +09:00
thisgun c1adf30b05 버전 5.4.2.2 수정 2020-03-03 18:47:15 +09:00
thisgun a8292a51bd php deprecated 사용되는 코드 재수정 2020-03-03 18:46:17 +09:00
thisgun b28796dd28 [KVE-2020-0115,0120]그누보드RCE및XSS취약점수정 2020-03-03 18:41:45 +09:00
thisgun 8dd2fe58e6 Merge branch 'master' of github.com:gnuboard/g5 2020-03-03 12:01:16 +09:00
thisgun 1395a8f338 버전 5.4.2.1 수정 2020-03-03 11:12:51 +09:00
thisgun 799aefada2 php deprecated 사용되는 코드 수정 2020-03-03 11:08:24 +09:00
thisgun 87bb2f1d8a [KVE-2020-0097,0113,0114,0056]그누보드 다중 취약점 수정 2020-03-02 22:08:54 +09:00
thisgun 6fe20b0a13 [KVE-2020-0013]그누보드_Reflect XSS_수정 2020-03-02 20:23:38 +09:00
thisgun 31705f32c9 [KVE-2020-0104,105,106]그누보드XSS취약점 수정 2020-03-02 20:02:45 +09:00
thisgun 8ba373a951 회원정보 수정시 체크과정 변경 2020-03-02 19:53:17 +09:00
thisgun 8067a20d32 썸네일 center_mode 시 썸네일 height가 원본이미지가 작을때도 동작되게 수정 2020-02-24 17:13:26 +09:00
thisgun e72b71ce12 5.4버전 SNS 동시등록 과 비밀글 태그 위치가 겹치는 스킨 코드 오류 수정 2020-02-19 17:14:00 +09:00
thisgun 596ad4baa6 5.4버전 관리자 에서 게시판 복사시 G5_DB_ENGINE 설정 오류 수정 2020-02-19 10:38:24 +09:00
thisgun 1600f63dee Merge branch 'master' of github.com:gnuboard/g5 2020-02-18 15:24:01 +09:00
thisgun fa9aa8da19 버전 5.4.2 수정 2020-02-18 15:06:37 +09:00
thisgun 85e075a5c6 [KVE-2020-0062]그누보드,영카트 SQL 인젝션 취약점 수정 2020-02-18 12:28:32 +09:00
thisgun 1e7d17fd68 5.4 버전 소셜로그인 스킨 5.3버전에서도 잘 나올수 있도록 수정 2020-02-14 14:35:33 +09:00
thisgun 6ccb8905a0 크롬 80버전 대응 코드 추가 2020-02-14 11:44:04 +09:00
thisgun ebac40312f 5.4 버전 쪽지보기 페이지에서 쪽지 삭제가 안되는 오류 수정 2020-02-13 19:03:38 +09:00
thisgun 3c0cde3fe2 그누보드 XSS 취약점 수정 2020-02-13 16:24:27 +09:00
thisgun 3cf0546711 [KVE-2020-0100,0101]그누보드 관리자페이지 XSS 취약점 수정 2020-02-13 15:23:11 +09:00
thisgun 120d8cf564 [KVE-2019-1571,1573,1578,1580]그누보드 XSS 취약점 수정 2020-02-13 13:48:37 +09:00
thisgun 992d3d93f4 [KVE-2019-1581,1585,1586,1590,2020-0012]그누보드XSS취약점 수정 2020-02-12 11:33:53 +09:00
thisgun 30e0b93ecf get_member_profile_img 함수 내 코드 오류 수정 2020-02-11 15:08:59 +09:00
thisgun 2581bdba9b 5.4버전 exist_seo_url 함수 내 정규식 코드 수정 2020-02-10 19:03:56 +09:00
thisgun d982361541 get_class_encrypt 함수내 잘못된 코드 수정 2020-02-10 17:32:50 +09:00
thisgun e82ebd7ada 카카오 로그인 v2 사용자 정보 요청api로 수정 2020-02-10 16:29:30 +09:00
thisgun 2d1af9a3b2 sms 설치테이블 G5_DB_ENGINE 설정에 따르게 수정 2020-02-10 14:05:30 +09:00
thisgun da29b6d0bb Merge branch 'master' of github.com:gnuboard/g5 2020-02-07 18:19:36 +09:00
thisgun 4493674762 버전 5.4.1.9 수정 2020-02-07 18:14:31 +09:00
thisgun 2e0b99f65c 크롬 80 버전 대응 kcb okname 본인인증 코드 수정 2020-02-07 17:39:22 +09:00
thisgun cc5eb6e520 Merge branch 'master' of github.com:gnuboard/g5 2020-02-04 11:24:30 +09:00
thisgun b855bbfb96 버전 5.4.1.8 수정 2020-02-04 11:23:24 +09:00
thisgun 93753162be 크롬 80버전 samesite 추가 대응 코드 2020-02-04 11:21:10 +09:00
thisgun 726863de44 Merge branch 'master' of github.com:gnuboard/g5 2020-01-31 16:03:22 +09:00
thisgun 69ec7348b8 버전 5.4.1.7 수정 2020-01-31 15:56:27 +09:00
thisgun d8521d4543 크롬 브라우저 80버전 samesite 이슈 대응 코드 2020-01-31 15:55:35 +09:00
thisgun e6eab2d040 [KVE-2019-1517] 그누보드 5_Cross Site Scripting(XSS) 취약점 수정 2020-01-23 10:58:18 +09:00
thisgun 2ad151c0dd 짧은 URL 변환 체크코드 및 스킨 내 코드 오타 수정 2020-01-23 10:57:07 +09:00
thisgun 4c17f79783 5.4 버전 쪽지보내기 스킨 오타 수정 2020-01-14 16:47:06 +09:00
thisgun e329192586 관리자 토큰생성시 button submit 추가 2020-01-14 16:40:58 +09:00
thisgun f96c3558e8 5.4 버전에서 잘못되거나 누락된 코드 수정 2020-01-13 16:31:53 +09:00
thisgun f2a1af5f46 Merge branch 'master' of github.com:gnuboard/g5 2020-01-07 16:34:04 +09:00
thisgun aec86e4360 버전 5.4.1.4 수정 2020-01-07 14:47:58 +09:00
thisgun 6a934c7a36 5.4 버전 모바일 게시판 스킨 내 오타 수정 2020-01-07 14:37:19 +09:00
thisgun ccfe419bbd 54버전 잘못된 hook 이벤트 수정 2020-01-07 14:34:50 +09:00
thisgun 4b0969d244 Merge branch 'master' of github.com:gnuboard/g5 2019-12-27 16:05:56 +09:00
thisgun a5e5531471 php 문법 each deprecated 에 대한 코드 수정 2019-12-27 16:05:04 +09:00
thisgun 5a3c2b628d 잘못된 오타 수정 2019-12-27 09:54:41 +09:00
thisgun b5152b62e8 Merge branch 'master' of github.com:gnuboard/g5 2019-12-23 10:12:10 +09:00
thisgun de59f07a66 버전 5.4.1.3 수정 2019-12-23 10:02:59 +09:00
thisgun 32e024f52e css js 버전 코드 수정 2019-12-23 10:01:29 +09:00
thisgun ffc43056b4 관리자 디비업그레이드시 체크 과정 추가 2019-12-23 09:59:05 +09:00
thisgun 6016db4a95 [KVE-2019-1508]XSS 취약점 수정 2019-12-20 11:18:16 +09:00
thisgun 30f6f09372 theme 설정 hook 이벤트 추가 2019-12-20 11:17:17 +09:00
thisgun d10a1667c7 html_process 변수에 method가 존재하는지 체크과정 추가 2019-12-18 19:55:34 +09:00
thisgun d560892a80 kcaptcha 페이지 오타 수정 2019-12-17 17:15:47 +09:00
thisgun 4e11c1fc1f iframe 허용 조건에 www.google.com 추가 2019-12-16 16:30:25 +09:00
thisgun 54c69dcf35 회원 사이드 뷰 사용시 최신글에서 사용되는 코드 수정 2019-12-10 17:04:28 +09:00
thisgun 7ccf17b479 Merge branch 'master' of github.com:gnuboard/g5 2019-12-09 14:59:18 +09:00
thisgun 0e2dbb6145 버전 5.4.1.2 수정 2019-12-09 14:53:43 +09:00
thisgun 83b85b5d66 회원 쪽지 페이징 코드 css 및 스킨코드 수정 2019-12-09 14:52:25 +09:00
thisgun f68ba794ec 그룹 링크에 잘못된 짧은 주소가 적용된 오류 수정 2019-12-09 14:42:05 +09:00
thisgun 76c1bde119 hook 이벤트 추가 및 php 7.2 버전에 일어나는 최신글 count 오류 수정 2019-12-04 19:55:17 +09:00
thisgun 312fc5daf3 Merge branch 'master' of github.com:gnuboard/g5 2019-12-02 17:01:34 +09:00
thisgun 080370323a 5.4.1.1 버전 수정 2019-12-02 16:34:45 +09:00
thisgun c419e2751f short_url_clean 함수에서 빠진 run_replace 코드 적용 2019-12-02 16:32:57 +09:00
thisgun 6977e9d4b5 내용관리 모바일 이미지 리사이즈css 적용 2019-12-02 16:11:36 +09:00
122 changed files with 5163 additions and 192 deletions

No files matched your search

+1 -1
View File
@@ -108,7 +108,7 @@ function get_ajax_token()
} }
$(function() { $(function() {
$(document).on("click", "form input:submit", function() { $(document).on("click", "form input:submit, form button:submit", function() {
var f = this.form; var f = this.form;
var token = get_ajax_token(); var token = get_ajax_token();
+1 -1
View File
@@ -31,7 +31,7 @@ include_once(G5_PATH.'/head.sub.php');
</tr> </tr>
<tr> <tr>
<th scope="col"><label for="target_subject">게시판 제목<strong class="sound_only">필수</strong></label></th> <th scope="col"><label for="target_subject">게시판 제목<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="target_subject" value="[복사본] <?php echo $board['bo_subject'] ?>" id="target_subject" required class="required frm_input" maxlength="120"></td> <td><input type="text" name="target_subject" value="[복사본] <?php echo get_sanitize_input($board['bo_subject']); ?>" id="target_subject" required class="required frm_input" maxlength="120"></td>
</tr> </tr>
<tr> <tr>
<th scope="col">복사 유형</th> <th scope="col">복사 유형</th>
+2
View File
@@ -11,6 +11,8 @@ check_admin_token();
$target_table = trim($_POST['target_table']); $target_table = trim($_POST['target_table']);
$target_subject = trim($_POST['target_subject']); $target_subject = trim($_POST['target_subject']);
$target_subject = strip_tags(clean_xss_attributes($target_subject));
if (!preg_match('/[A-Za-z0-9_]{1,20}/', $target_table)) { if (!preg_match('/[A-Za-z0-9_]{1,20}/', $target_table)) {
alert('게시판 TABLE명은 공백없이 영문자, 숫자, _ 만 사용 가능합니다. (20자 이내)'); alert('게시판 TABLE명은 공백없이 영문자, 숫자, _ 만 사용 가능합니다. (20자 이내)');
} }
+12 -7
View File
@@ -60,6 +60,11 @@ if(!is_include_path_check($bo_include_tail, 1)) {
alert('하단 파일 경로에 포함시킬수 없는 문자열이 있습니다.'); alert('하단 파일 경로에 포함시킬수 없는 문자열이 있습니다.');
} }
if( function_exists('filter_input_include_path') ){
$bo_include_head = filter_input_include_path($bo_include_head);
$bo_include_tail = filter_input_include_path($bo_include_tail);
}
$board_path = G5_DATA_PATH.'/file/'.$bo_table; $board_path = G5_DATA_PATH.'/file/'.$bo_table;
// 게시판 디렉토리 생성 // 게시판 디렉토리 생성
@@ -76,12 +81,12 @@ $f = @fopen($file, 'w');
// 분류에 & 나 = 는 사용이 불가하므로 2바이트로 바꾼다. // 분류에 & 나 = 는 사용이 불가하므로 2바이트로 바꾼다.
$src_char = array('&', '='); $src_char = array('&', '=');
$dst_char = array('&', '〓'); $dst_char = array('&', '〓');
$bo_category_list = str_replace($src_char, $dst_char, $bo_category_list); $bo_category_list = isset($_POST['bo_category_list']) ? str_replace($src_char, $dst_char, $_POST['bo_category_list']) : '';
//https://github.com/gnuboard/gnuboard5/commit/f5f4925d4eb28ba1af728e1065fc2bdd9ce1da58 에 따른 조치 //https://github.com/gnuboard/gnuboard5/commit/f5f4925d4eb28ba1af728e1065fc2bdd9ce1da58 에 따른 조치
$str_bo_category_list = isset($_POST['bo_category_list']) ? preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", "", $_POST['bo_category_list']) : ''; $str_bo_category_list = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", "", $bo_category_list);
$_POST['bo_subject'] = strip_tags($_POST['bo_subject']); $_POST['bo_subject'] = strip_tags(clean_xss_attributes($_POST['bo_subject']));
$_POST['bo_mobile_subject'] = strip_tags($_POST['bo_mobile_subject']); $_POST['bo_mobile_subject'] = strip_tags(clean_xss_attributes($_POST['bo_mobile_subject']));
$sql_common = " gr_id = '{$gr_id}', $sql_common = " gr_id = '{$gr_id}',
bo_subject = '{$_POST['bo_subject']}', bo_subject = '{$_POST['bo_subject']}',
@@ -199,7 +204,7 @@ if ($w == '') {
$file = file('./sql_write.sql'); $file = file('./sql_write.sql');
$file = get_db_create_replace($file); $file = get_db_create_replace($file);
$sql = implode($file, "\n"); $sql = implode("\n", $file);
$create_table = $g5['write_prefix'] . $bo_table; $create_table = $g5['write_prefix'] . $bo_table;
@@ -289,7 +294,7 @@ if (is_checked('chk_grp_write_point')) $grp_fields .= " , bo_write_poin
if (is_checked('chk_grp_comment_point')) $grp_fields .= " , bo_comment_point = '{$bo_comment_point}' "; if (is_checked('chk_grp_comment_point')) $grp_fields .= " , bo_comment_point = '{$bo_comment_point}' ";
if (is_checked('chk_grp_download_point')) $grp_fields .= " , bo_download_point = '{$bo_download_point}' "; if (is_checked('chk_grp_download_point')) $grp_fields .= " , bo_download_point = '{$bo_download_point}' ";
if (is_checked('chk_grp_category_list')) { if (is_checked('chk_grp_category_list')) {
$grp_fields .= " , bo_category_list = '{$bo_category_list}' "; $grp_fields .= " , bo_category_list = '{$str_bo_category_list}' ";
$grp_fields .= " , bo_use_category = '{$bo_use_category}' "; $grp_fields .= " , bo_use_category = '{$bo_use_category}' ";
} }
if (is_checked('chk_grp_use_sideview')) $grp_fields .= " , bo_use_sideview = '{$bo_use_sideview}' "; if (is_checked('chk_grp_use_sideview')) $grp_fields .= " , bo_use_sideview = '{$bo_use_sideview}' ";
@@ -378,7 +383,7 @@ if (is_checked('chk_all_write_point')) $all_fields .= " , bo_write_poin
if (is_checked('chk_all_comment_point')) $all_fields .= " , bo_comment_point = '{$bo_comment_point}' "; if (is_checked('chk_all_comment_point')) $all_fields .= " , bo_comment_point = '{$bo_comment_point}' ";
if (is_checked('chk_all_download_point')) $all_fields .= " , bo_download_point = '{$bo_download_point}' "; if (is_checked('chk_all_download_point')) $all_fields .= " , bo_download_point = '{$bo_download_point}' ";
if (is_checked('chk_all_category_list')) { if (is_checked('chk_all_category_list')) {
$all_fields .= " , bo_category_list = '{$bo_category_list}' "; $all_fields .= " , bo_category_list = '{$str_bo_category_list}' ";
$all_fields .= " , bo_use_category = '{$bo_use_category}' "; $all_fields .= " , bo_use_category = '{$bo_use_category}' ";
} }
if (is_checked('chk_all_use_sideview')) $all_fields .= " , bo_use_sideview = '{$bo_use_sideview}' "; if (is_checked('chk_all_use_sideview')) $all_fields .= " , bo_use_sideview = '{$bo_use_sideview}' ";
+1 -1
View File
@@ -33,7 +33,7 @@ if ($_POST['act_button'] == "선택수정") {
alert('최고관리자가 아닌 경우 다른 관리자의 게시판('.$board_table[$k].')은 수정이 불가합니다.'); alert('최고관리자가 아닌 경우 다른 관리자의 게시판('.$board_table[$k].')은 수정이 불가합니다.');
} }
$p_bo_subject = is_array($_POST['bo_subject']) ? strip_tags($_POST['bo_subject'][$k]) : ''; $p_bo_subject = is_array($_POST['bo_subject']) ? strip_tags(clean_xss_attributes($_POST['bo_subject'][$k])) : '';
$sql = " update {$g5['board_table']} $sql = " update {$g5['board_table']}
set gr_id = '".sql_real_escape_string(strip_tags($_POST['gr_id'][$k]))."', set gr_id = '".sql_real_escape_string(strip_tags($_POST['gr_id'][$k]))."',
+1 -1
View File
@@ -16,7 +16,7 @@ if (!preg_match("/^([A-Za-z0-9_]{1,10})$/", $_POST['gr_id']))
if (!$gr_subject) alert('그룹 제목을 입력하세요.'); if (!$gr_subject) alert('그룹 제목을 입력하세요.');
$gr_subject = isset($_POST['gr_subject']) ? strip_tags($_POST['gr_subject']) : ''; $gr_subject = isset($_POST['gr_subject']) ? strip_tags(clean_xss_attributes($_POST['gr_subject'])) : '';
$sql_common = " gr_subject = '{$gr_subject}', $sql_common = " gr_subject = '{$gr_subject}',
gr_device = '{$_POST['gr_device']}', gr_device = '{$_POST['gr_device']}',
+4 -4
View File
@@ -124,10 +124,10 @@ $colspan = 10;
<tr class="<?php echo $bg; ?>"> <tr class="<?php echo $bg; ?>">
<td class="td_chk"> <td class="td_chk">
<input type="hidden" name="group_id[<?php echo $i ?>]" value="<?php echo $row['gr_id'] ?>"> <input type="hidden" name="group_id[<?php echo $i ?>]" value="<?php echo $row['gr_id'] ?>">
<label for="chk_<?php echo $i; ?>" class="sound_only"><?php echo $row['gr_subject'] ?> 그룹</label> <label for="chk_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['gr_subject']); ?> 그룹</label>
<input type="checkbox" name="chk[]" value="<?php echo $i ?>" id="chk_<?php echo $i ?>"> <input type="checkbox" name="chk[]" value="<?php echo $i ?>" id="chk_<?php echo $i ?>">
</td> </td>
<td class="td_left"><a href="<?php echo get_pretty_url(G5_GROUP_DIR, $row['gr_id']); ?>"><?php echo $row['gr_id'] ?></a></td> <td class="td_left"><a href="<?php echo G5_BBS_URL ?>/group.php?gr_id=<?php echo $row['gr_id'] ?>"><?php echo $row['gr_id'] ?></a></td>
<td class="td_input"> <td class="td_input">
<label for="gr_subject_<?php echo $i; ?>" class="sound_only">그룹제목</label> <label for="gr_subject_<?php echo $i; ?>" class="sound_only">그룹제목</label>
<input type="text" name="gr_subject[<?php echo $i ?>]" value="<?php echo get_text($row['gr_subject']) ?>" id="gr_subject_<?php echo $i ?>" class="tbl_input"> <input type="text" name="gr_subject[<?php echo $i ?>]" value="<?php echo get_text($row['gr_subject']) ?>" id="gr_subject_<?php echo $i ?>" class="tbl_input">
@@ -135,9 +135,9 @@ $colspan = 10;
<td class="td_mng td_input"> <td class="td_mng td_input">
<?php if ($is_admin == 'super'){ ?> <?php if ($is_admin == 'super'){ ?>
<label for="gr_admin_<?php echo $i; ?>" class="sound_only">그룹관리자</label> <label for="gr_admin_<?php echo $i; ?>" class="sound_only">그룹관리자</label>
<input type="text" name="gr_admin[<?php echo $i ?>]" value="<?php echo $row['gr_admin'] ?>" id="gr_admin_<?php echo $i ?>" class="tbl_input" size="10" maxlength="20"> <input type="text" name="gr_admin[<?php echo $i ?>]" value="<?php echo get_sanitize_input($row['gr_admin']); ?>" id="gr_admin_<?php echo $i ?>" class="tbl_input" size="10" maxlength="20">
<?php }else{ ?> <?php }else{ ?>
<input type="hidden" name="gr_admin[<?php echo $i ?>]" value="<?php echo $row['gr_admin'] ?>"><?php echo $row['gr_admin'] ?> <input type="hidden" name="gr_admin[<?php echo $i ?>]" value="<?php echo get_sanitize_input($row['gr_admin']); ?>"><?php echo get_text($row['gr_admin']); ?>
<?php } ?> <?php } ?>
</td> </td>
<td class="td_num"><a href="./board_list.php?sfl=a.gr_id&amp;stx=<?php echo $row['gr_id'] ?>"><?php echo $row2['cnt'] ?></a></td> <td class="td_num"><a href="./board_list.php?sfl=a.gr_id&amp;stx=<?php echo $row['gr_id'] ?>"><?php echo $row2['cnt'] ?></a></td>
+2 -2
View File
@@ -19,8 +19,8 @@ for ($i=0; $i<$count; $i++)
{ {
$k = $_POST['chk'][$i]; $k = $_POST['chk'][$i];
$gr_id = preg_replace('/[^a-z0-9_]/i', '', $_POST['group_id'][$k]); $gr_id = preg_replace('/[^a-z0-9_]/i', '', $_POST['group_id'][$k]);
$gr_subject = is_array($_POST['gr_subject']) ? strip_tags($_POST['gr_subject'][$k]) : ''; $gr_subject = is_array($_POST['gr_subject']) ? strip_tags(clean_xss_attributes($_POST['gr_subject'][$k])) : '';
$gr_admin = is_array($_POST['gr_admin']) ? strip_tags($_POST['gr_admin'][$k]) : ''; $gr_admin = is_array($_POST['gr_admin']) ? strip_tags(clean_xss_attributes($_POST['gr_admin'][$k])) : '';
if($_POST['act_button'] == '선택수정') { if($_POST['act_button'] == '선택수정') {
$sql = " update {$g5['group_table']} $sql = " update {$g5['group_table']}
+1 -1
View File
@@ -85,7 +85,7 @@ $colspan = 4;
<label for="chk_<?php echo $i; ?>" class="sound_only"><?php echo $row['gr_subject'] ?> 그룹</label> <label for="chk_<?php echo $i; ?>" class="sound_only"><?php echo $row['gr_subject'] ?> 그룹</label>
<input type="checkbox" name="chk[]" value="<?php echo $row['gm_id'] ?>" id="chk_<?php echo $i ?>"> <input type="checkbox" name="chk[]" value="<?php echo $row['gm_id'] ?>" id="chk_<?php echo $i ?>">
</td> </td>
<td class="td_grid"><a href="<?php echo get_pretty_url(G5_GROUP_DIR, $row['gr_id']); ?>"><?php echo $row['gr_id'] ?></a></td> <td class="td_grid"><a href="<?php echo G5_BBS_URL; ?>/group.php?gr_id=<?php echo $row['gr_id'] ?>"><?php echo $row['gr_id'] ?></a></td>
<td class="td_category"><?php echo $row['gr_subject'] ?></td> <td class="td_category"><?php echo $row['gr_subject'] ?></td>
<td class="td_datetime"><?php echo $row['gm_datetime'] ?></td> <td class="td_datetime"><?php echo $row['gm_datetime'] ?></td>
</tr> </tr>
+1 -1
View File
@@ -321,7 +321,7 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<tbody> <tbody>
<tr> <tr>
<th scope="row"><label for="cf_title">홈페이지 제목<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="cf_title">홈페이지 제목<strong class="sound_only">필수</strong></label></th>
<td colspan="3"><input type="text" name="cf_title" value="<?php echo $config['cf_title'] ?>" id="cf_title" required class="required frm_input" size="40"></td> <td colspan="3"><input type="text" name="cf_title" value="<?php echo get_sanitize_input($config['cf_title']); ?>" id="cf_title" required class="required frm_input" size="40"></td>
</tr> </tr>
<tr> <tr>
<th scope="row"><label for="cf_admin">최고관리자<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="cf_admin">최고관리자<strong class="sound_only">필수</strong></label></th>
+1 -1
View File
@@ -26,7 +26,7 @@ if(!$_POST['cf_cert_use']) {
$cf_social_servicelist = !empty($_POST['cf_social_servicelist']) ? implode(',', $_POST['cf_social_servicelist']) : ''; $cf_social_servicelist = !empty($_POST['cf_social_servicelist']) ? implode(',', $_POST['cf_social_servicelist']) : '';
$_POST['cf_title'] = strip_tags($_POST['cf_title']); $_POST['cf_title'] = strip_tags(clean_xss_attributes($_POST['cf_title']));
$check_keys = array('cf_lg_mid', 'cf_lg_mert_key', 'cf_cert_kcb_cd', 'cf_cert_kcp_cd', 'cf_editor', 'cf_recaptcha_site_key', 'cf_recaptcha_secret_key', 'cf_naver_clientid', 'cf_naver_secret', 'cf_facebook_appid', 'cf_facebook_secret', 'cf_twitter_key', 'cf_twitter_secret', 'cf_google_clientid', 'cf_google_secret', 'cf_googl_shorturl_apikey', 'cf_kakao_rest_key', 'cf_kakao_client_secret', 'cf_kakao_js_apikey', 'cf_payco_clientid', 'cf_payco_secret'); $check_keys = array('cf_lg_mid', 'cf_lg_mert_key', 'cf_cert_kcb_cd', 'cf_cert_kcp_cd', 'cf_editor', 'cf_recaptcha_site_key', 'cf_recaptcha_secret_key', 'cf_naver_clientid', 'cf_naver_secret', 'cf_facebook_appid', 'cf_facebook_secret', 'cf_twitter_key', 'cf_twitter_secret', 'cf_google_clientid', 'cf_google_secret', 'cf_googl_shorturl_apikey', 'cf_kakao_rest_key', 'cf_kakao_client_secret', 'cf_kakao_js_apikey', 'cf_payco_clientid', 'cf_payco_secret');
+6 -1
View File
@@ -21,7 +21,7 @@ if ($w == "" || $w == "u")
} }
$co_id = preg_replace('/[^a-z0-9_]/i', '', $co_id); $co_id = preg_replace('/[^a-z0-9_]/i', '', $co_id);
$co_subject = strip_tags($co_subject); $co_subject = strip_tags(clean_xss_attributes($co_subject));
$co_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($co_include_head, 0, 255)); $co_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($co_include_head, 0, 255));
$co_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($co_include_tail, 0, 255)); $co_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($co_include_tail, 0, 255));
$co_tag_filter_use = isset($_POST['co_tag_filter_use']) ? (int) $_POST['co_tag_filter_use'] : 1; $co_tag_filter_use = isset($_POST['co_tag_filter_use']) ? (int) $_POST['co_tag_filter_use'] : 1;
@@ -71,6 +71,11 @@ if( $co_include_tail && ! is_include_path_check($co_include_tail, 1) ){
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.'; $error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
} }
if( function_exists('filter_input_include_path') ){
$co_include_head = filter_input_include_path($co_include_head);
$co_include_tail = filter_input_include_path($co_include_tail);
}
$co_seo_title = exist_seo_title_recursive('content', generate_seo_title($co_subject), $g5['content_table'], $co_id); $co_seo_title = exist_seo_title_recursive('content', generate_seo_title($co_subject), $g5['content_table'], $co_id);
$sql_common = " co_include_head = '$co_include_head', $sql_common = " co_include_head = '$co_include_head',
+16
View File
@@ -147,6 +147,22 @@ if(!isset($member['mb_memo_cnt'])) {
$is_check = true; $is_check = true;
} }
// 스크랩 읽은 수 추가
if(!isset($member['mb_scrap_cnt'])) {
sql_query(" ALTER TABLE `{$g5['member_table']}`
ADD `mb_scrap_cnt` int(11) NOT NULL DEFAULT '0' AFTER `mb_memo_cnt`", true);
$is_check = true;
}
// 짧은 URL 주소를 사용 여부 필드 추가
if (!isset($config['cf_bbs_rewrite'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_bbs_rewrite` tinyint(4) NOT NULL DEFAULT '0' AFTER `cf_link_target` ", true);
$is_check = true;
}
// 파일테이블에 추가 칼럼 // 파일테이블에 추가 칼럼
$sql = " SHOW COLUMNS FROM `{$g5['board_file_table']}` LIKE 'bf_fileurl' "; $sql = " SHOW COLUMNS FROM `{$g5['board_file_table']}` LIKE 'bf_fileurl' ";
+5 -3
View File
@@ -68,15 +68,17 @@ $result = sql_query($sql);
$num = $i + 1; $num = $i + 1;
$bg = 'bg'.($i%2); $bg = 'bg'.($i%2);
$fa_subject = conv_content($row['fa_subject'], 1);
?> ?>
<tr class="<?php echo $bg; ?>"> <tr class="<?php echo $bg; ?>">
<td class="td_num"><?php echo $num; ?></td> <td class="td_num"><?php echo $num; ?></td>
<td class="td_left"><?php echo stripslashes($row['fa_subject']); ?></td> <td class="td_left"><?php echo $fa_subject; ?></td>
<td class="td_num"><?php echo $row['fa_order']; ?></td> <td class="td_num"><?php echo $row['fa_order']; ?></td>
<td class="td_mng td_mng_m"> <td class="td_mng td_mng_m">
<a href="./faqform.php?w=u&amp;fm_id=<?php echo $row['fm_id']; ?>&amp;fa_id=<?php echo $row['fa_id']; ?>" class="btn btn_03"><span class="sound_only"><?php echo stripslashes($row['fa_subject']); ?> </span>수정</a> <a href="./faqform.php?w=u&amp;fm_id=<?php echo $row['fm_id']; ?>&amp;fa_id=<?php echo $row['fa_id']; ?>" class="btn btn_03"><span class="sound_only"><?php echo $fa_subject; ?> </span>수정</a>
<a href="./faqformupdate.php?w=d&amp;fm_id=<?php echo $row['fm_id']; ?>&amp;fa_id=<?php echo $row['fa_id']; ?>" onclick="return delete_confirm(this);" class="btn btn_02"><span class="sound_only"><?php echo stripslashes($row['fa_subject']); ?> </span>삭제</a> <a href="./faqformupdate.php?w=d&amp;fm_id=<?php echo $row['fm_id']; ?>&amp;fa_id=<?php echo $row['fa_id']; ?>" onclick="return delete_confirm(this);" class="btn btn_02"><span class="sound_only"><?php echo $fa_subject; ?> </span>삭제</a>
</td> </td>
</tr> </tr>
+1 -1
View File
@@ -18,7 +18,7 @@ check_admin_token();
if ($fm_himg_del) @unlink(G5_DATA_PATH."/faq/{$fm_id}_h"); if ($fm_himg_del) @unlink(G5_DATA_PATH."/faq/{$fm_id}_h");
if ($fm_timg_del) @unlink(G5_DATA_PATH."/faq/{$fm_id}_t"); if ($fm_timg_del) @unlink(G5_DATA_PATH."/faq/{$fm_id}_t");
$fm_subject = strip_tags($fm_subject); $fm_subject = strip_tags(clean_xss_attributes($fm_subject));
$sql_common = " set fm_subject = '$fm_subject', $sql_common = " set fm_subject = '$fm_subject',
fm_head_html = '$fm_head_html', fm_head_html = '$fm_head_html',
+1 -1
View File
@@ -42,7 +42,7 @@ include_once('./admin.head.php');
<tbody> <tbody>
<tr> <tr>
<th scope="row"><label for="ma_subject">메일 제목<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="ma_subject">메일 제목<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="ma_subject" value="<?php echo $ma['ma_subject'] ?>" id="ma_subject" required class="required frm_input" size="100"></td> <td><input type="text" name="ma_subject" value="<?php echo get_sanitize_input($ma['ma_subject']); ?>" id="ma_subject" required class="required frm_input" size="100"></td>
</tr> </tr>
<tr> <tr>
<th scope="row"><label for="ma_content">메일 내용<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="ma_content">메일 내용<strong class="sound_only">필수</strong></label></th>
+1 -1
View File
@@ -10,7 +10,7 @@ auth_check($auth[$sub_menu], 'w');
check_admin_token(); check_admin_token();
$ma_id = isset($_POST['ma_id']) ? (int) $_POST['ma_id'] : 0; $ma_id = isset($_POST['ma_id']) ? (int) $_POST['ma_id'] : 0;
$ma_subject = isset($_POST['ma_subject']) ? strip_tags($_POST['ma_subject']) : ''; $ma_subject = isset($_POST['ma_subject']) ? strip_tags(clean_xss_attributes($_POST['ma_subject'])) : '';
if ($w == '') if ($w == '')
{ {
+1 -1
View File
@@ -52,7 +52,7 @@ if($sql) {
<?php } <?php }
switch($type) { switch($type) {
case 'group': case 'group':
$link = get_pretty_url(G5_GROUP_DIR, $row['id']); $link = G5_BBS_URL.'/group.php?gr_id='.$row['id'];
break; break;
case 'board': case 'board':
$link = get_pretty_url($row['id']); $link = get_pretty_url($row['id']);
+2 -2
View File
@@ -21,11 +21,11 @@ for ($i=0; $i<$count; $i++)
{ {
$_POST = array_map_deep('trim', $_POST); $_POST = array_map_deep('trim', $_POST);
$_POST['me_link'][$i] = is_array($_POST['me_link']) ? clean_xss_tags($_POST['me_link'][$i], 1) : ''; $_POST['me_link'][$i] = is_array($_POST['me_link']) ? clean_xss_tags(clean_xss_attributes($_POST['me_link'][$i], 1)) : '';
$code = is_array($_POST['code']) ? strip_tags($_POST['code'][$i]) : ''; $code = is_array($_POST['code']) ? strip_tags($_POST['code'][$i]) : '';
$me_name = is_array($_POST['me_name']) ? strip_tags($_POST['me_name'][$i]) : ''; $me_name = is_array($_POST['me_name']) ? strip_tags($_POST['me_name'][$i]) : '';
$me_link = (preg_match('/^javascript/i', $_POST['me_link'][$i]) || preg_match('/script:/i', $_POST['me_link'][$i])) ? G5_URL : strip_tags($_POST['me_link'][$i]); $me_link = (preg_match('/^javascript/i', $_POST['me_link'][$i]) || preg_match('/script:/i', $_POST['me_link'][$i])) ? G5_URL : strip_tags(clean_xss_attributes($_POST['me_link'][$i]));
if(!$code || !$me_name || !$me_link) if(!$code || !$me_name || !$me_link)
continue; continue;
+1 -1
View File
@@ -12,7 +12,7 @@ else
check_admin_token(); check_admin_token();
$nw_subject = isset($_POST['nw_subject']) ? strip_tags($_POST['nw_subject']) : ''; $nw_subject = isset($_POST['nw_subject']) ? strip_tags(clean_xss_attributes($_POST['nw_subject'])) : '';
$sql_common = " nw_device = '{$_POST['nw_device']}', $sql_common = " nw_device = '{$_POST['nw_device']}',
nw_begin_time = '{$_POST['nw_begin_time']}', nw_begin_time = '{$_POST['nw_begin_time']}',
+3 -3
View File
@@ -6,9 +6,9 @@ auth_check($auth[$sub_menu], 'w');
check_admin_token(); check_admin_token();
$mb_id = strip_tags($_POST['mb_id']); $mb_id = strip_tags(clean_xss_attributes($_POST['mb_id']));
$po_point = strip_tags($_POST['po_point']); $po_point = strip_tags(clean_xss_attributes($_POST['po_point']));
$po_content = strip_tags($_POST['po_content']); $po_content = strip_tags(clean_xss_attributes($_POST['po_content']));
$expire = preg_replace('/[^0-9]/', '', $_POST['po_expire_term']); $expire = preg_replace('/[^0-9]/', '', $_POST['po_expire_term']);
$mb = get_member($mb_id); $mb = get_member($mb_id);
+1 -1
View File
@@ -37,7 +37,7 @@ include_once('./admin.head.php');
<tbody> <tbody>
<tr> <tr>
<th scope="row"><label for="po_subject">투표 제목<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="po_subject">투표 제목<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="po_subject" value="<?php echo $po['po_subject'] ?>" id="po_subject" required class="required frm_input" size="80" maxlength="125"></td> <td><input type="text" name="po_subject" value="<?php echo get_sanitize_input($po['po_subject']); ?>" id="po_subject" required class="required frm_input" size="80" maxlength="125"></td>
</tr> </tr>
<?php <?php
+1 -1
View File
@@ -40,7 +40,7 @@ foreach( $_POST as $key=>$value ){
if( empty($value) ) continue; if( empty($value) ) continue;
if( in_array($key, $check_keys) ) { if( in_array($key, $check_keys) ) {
$_POST[$key] = strip_tags($value); $_POST[$key] = strip_tags(clean_xss_attributes($value));
} }
} }
+5 -5
View File
@@ -133,7 +133,7 @@ if(!isset($qaconfig['qa_include_head'])) {
<tr> <tr>
<th scope="row"><label for="qa_title">타이틀<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="qa_title">타이틀<strong class="sound_only">필수</strong></label></th>
<td> <td>
<input type="text" name="qa_title" value="<?php echo $qaconfig['qa_title'] ?>" id="qa_title" required class="required frm_input" size="40"> <input type="text" name="qa_title" value="<?php echo get_sanitize_input($qaconfig['qa_title']); ?>" id="qa_title" required class="required frm_input" size="40">
<a href="<?php echo G5_BBS_URL; ?>/qalist.php" class="btn_frmline">1:1문의 바로가기</a> <a href="<?php echo G5_BBS_URL; ?>/qalist.php" class="btn_frmline">1:1문의 바로가기</a>
</td> </td>
</tr> </tr>
@@ -141,7 +141,7 @@ if(!isset($qaconfig['qa_include_head'])) {
<th scope="row"><label for="qa_category">분류<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="qa_category">분류<strong class="sound_only">필수</strong></label></th>
<td> <td>
<?php echo help('분류와 분류 사이는 | 로 구분하세요. (예: 질문|답변) 첫자로 #은 입력하지 마세요. (예: #질문|#답변 [X])') ?> <?php echo help('분류와 분류 사이는 | 로 구분하세요. (예: 질문|답변) 첫자로 #은 입력하지 마세요. (예: #질문|#답변 [X])') ?>
<input type="text" name="qa_category" value="<?php echo $qaconfig['qa_category'] ?>" id="qa_category" required class="required frm_input" size="70"> <input type="text" name="qa_category" value="<?php echo get_sanitize_input($qaconfig['qa_category']); ?>" id="qa_category" required class="required frm_input" size="70">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -184,21 +184,21 @@ if(!isset($qaconfig['qa_include_head'])) {
<th scope="row"><label for="qa_send_number">SMS 발신번호</label></th> <th scope="row"><label for="qa_send_number">SMS 발신번호</label></th>
<td> <td>
<?php echo help('SMS 알림 전송시 발신번호로 사용됩니다.'); ?> <?php echo help('SMS 알림 전송시 발신번호로 사용됩니다.'); ?>
<input type="text" name="qa_send_number" value="<?php echo $qaconfig['qa_send_number'] ?>" id="qa_send_number" class="frm_input" size="30"> <input type="text" name="qa_send_number" value="<?php echo get_sanitize_input($qaconfig['qa_send_number']); ?>" id="qa_send_number" class="frm_input" size="30">
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row"><label for="qa_admin_hp">관리자 휴대폰번호</label></th> <th scope="row"><label for="qa_admin_hp">관리자 휴대폰번호</label></th>
<td> <td>
<?php echo help('관리자 휴대폰번호를 입력하시면 문의글 등록시 등록하신 번호로 SMS 알림이 전송됩니다.<br>SMS 알림을 사용하지 않으시면 알림이 전송되지 않습니다.'); ?> <?php echo help('관리자 휴대폰번호를 입력하시면 문의글 등록시 등록하신 번호로 SMS 알림이 전송됩니다.<br>SMS 알림을 사용하지 않으시면 알림이 전송되지 않습니다.'); ?>
<input type="text" name="qa_admin_hp" value="<?php echo $qaconfig['qa_admin_hp'] ?>" id="qa_admin_hp" class="frm_input" size="30"> <input type="text" name="qa_admin_hp" value="<?php echo get_sanitize_input($qaconfig['qa_admin_hp']); ?>" id="qa_admin_hp" class="frm_input" size="30">
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row"><label for="qa_admin_email">관리자 이메일</label></th> <th scope="row"><label for="qa_admin_email">관리자 이메일</label></th>
<td> <td>
<?php echo help('관리자 이메일을 입력하시면 문의글 등록시 등록하신 이메일로 알림이 전송됩니다.'); ?> <?php echo help('관리자 이메일을 입력하시면 문의글 등록시 등록하신 이메일로 알림이 전송됩니다.'); ?>
<input type="text" name="qa_admin_email" value="<?php echo $qaconfig['qa_admin_email'] ?>" id="qa_admin_email" class="frm_input" size="50"> <input type="text" name="qa_admin_email" value="<?php echo get_sanitize_input($qaconfig['qa_admin_email']); ?>" id="qa_admin_email" class="frm_input" size="50">
</td> </td>
</tr> </tr>
<tr> <tr>
+10 -1
View File
@@ -12,6 +12,12 @@ $error_msg = '';
$qaconfig = get_qa_config(); $qaconfig = get_qa_config();
$check_keys = array('qa_title', 'qa_category', 'qa_skin', 'qa_mobile_skin', 'qa_use_email', 'qa_req_email', 'qa_use_hp', 'qa_req_hp', 'qa_use_sms', 'qa_send_number', 'qa_admin_hp', 'qa_admin_email', 'qa_subject_len', 'qa_mobile_subject_len', 'qa_page_rows', 'qa_mobile_page_rows', 'qa_image_width', 'qa_upload_size');
foreach($check_keys as $key){
$$key = $_POST[$key] = isset($_POST[$key]) ? strip_tags(clean_xss_attributes($_POST[$key])) : '';
}
$qa_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($qa_include_head, 0, 255)); $qa_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($qa_include_head, 0, 255));
$qa_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($qa_include_tail, 0, 255)); $qa_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($qa_include_tail, 0, 255));
@@ -50,7 +56,10 @@ if( $qa_include_tail && ! is_include_path_check($qa_include_tail, 1) ){
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.'; $error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
} }
$_POST['qa_title'] = strip_tags($_POST['qa_title']); if( function_exists('filter_input_include_path') ){
$qa_include_head = filter_input_include_path($qa_include_head);
$qa_include_tail = filter_input_include_path($qa_include_tail);
}
$sql = " update {$g5['qa_config_table']} $sql = " update {$g5['qa_config_table']}
set qa_title = '{$_POST['qa_title']}', set qa_title = '{$_POST['qa_title']}',
+2 -2
View File
@@ -4,8 +4,8 @@ include_once("./_common.php");
auth_check($auth[$sub_menu], "w"); auth_check($auth[$sub_menu], "w");
$fo_name = isset($fo_name) ? strip_tags($fo_name) : ''; $fo_name = isset($fo_name) ? strip_tags(clean_xss_attributes($fo_name)) : '';
$fo_content = isset($fo_content) ? strip_tags($fo_content) : ''; $fo_content = isset($fo_content) ? strip_tags(clean_xss_attributes($fo_content)) : '';
$g5['title'] = "이모티콘 업데이트"; $g5['title'] = "이모티콘 업데이트";
+3 -1
View File
@@ -6,6 +6,8 @@ auth_check($auth[$sub_menu], "w");
$g5['title'] = "이모티콘 "; $g5['title'] = "이모티콘 ";
$fg_no = isset($fg_no) ? (int) $fg_no : '';
if ($w == 'u' && is_numeric($fo_no)) { if ($w == 'u' && is_numeric($fo_no)) {
$write = sql_fetch("select * from {$g5['sms5_form_table']} where fo_no='$fo_no'"); $write = sql_fetch("select * from {$g5['sms5_form_table']} where fo_no='$fo_no'");
$g5['title'] .= '수정'; $g5['title'] .= '수정';
@@ -48,7 +50,7 @@ include_once(G5_ADMIN_PATH.'/admin.head.php');
</tr> </tr>
<tr> <tr>
<th scope="row"><label for="fo_name">제목<strong class="sound_only"> 필수</strong></label></th> <th scope="row"><label for="fo_name">제목<strong class="sound_only"> 필수</strong></label></th>
<td><input type="text" name="fo_name" id="fo_name" required value="<?php echo $write['fo_name']?>" class="frm_input required" size="70"></td> <td><input type="text" name="fo_name" id="fo_name" required value="<?php echo get_sanitize_input($write['fo_name']); ?>" class="frm_input required" size="70"></td>
</tr> </tr>
<tr> <tr>
<th scope="row">메세지</th> <th scope="row">메세지</th>
+1
View File
@@ -53,6 +53,7 @@ eval("\$file = \"$file\";");
$f = explode(";", $file); $f = explode(";", $file);
for ($i=0; $i<count($f); $i++) { for ($i=0; $i<count($f); $i++) {
if (trim($f[$i]) == "") continue; if (trim($f[$i]) == "") continue;
$f[$i] = get_db_create_replace($f[$i]);
sql_query($f[$i]) or die(mysqli_error()); sql_query($f[$i]) or die(mysqli_error());
} }
// 테이블 생성 ------------------------------------ // 테이블 생성 ------------------------------------
+4 -2
View File
@@ -16,6 +16,8 @@ if ($page < 1) $page = 1;
$bg_no = isset($bg_no) ? (int) $bg_no : 0; $bg_no = isset($bg_no) ? (int) $bg_no : 0;
$st = isset($st) ? preg_replace('/[^a-z0-9]/i', '', $st) : ''; $st = isset($st) ? preg_replace('/[^a-z0-9]/i', '', $st) : '';
$sql_korean = $sql_group = $sql_search = $sql_no_hp = '';
if (is_numeric($bg_no)) if (is_numeric($bg_no))
$sql_group = " and bg_no='$bg_no' "; $sql_group = " and bg_no='$bg_no' ";
else else
@@ -127,9 +129,9 @@ function no_hp_click(val)
<label for="bg_no" class="sound_only">그룹명</label> <label for="bg_no" class="sound_only">그룹명</label>
<select name="bg_no" id="bg_no" onchange="location.href='<?php echo $_SERVER['SCRIPT_NAME']?>?bg_no='+this.value;"> <select name="bg_no" id="bg_no" onchange="location.href='<?php echo $_SERVER['SCRIPT_NAME']?>?bg_no='+this.value;">
<option value=""<?php echo get_selected('', $bg_no); ?>> 전체 </option> <option value=""<?php echo get_selected('', $bg_no); ?>> 전체 </option>
<option value="<?php echo $no_group['bg_no']?>"<?php echo get_selected($bg_no, $no_group['bg_no']); ?>> <?php echo $no_group['bg_name']?> (<?php echo number_format($no_group['bg_count'])?> 명) </option> <option value="<?php echo $no_group['bg_no']?>"<?php echo get_selected($no_group['bg_no'], $bg_no); ?>> <?php echo $no_group['bg_name']?> (<?php echo number_format($no_group['bg_count'])?> 명) </option>
<?php for($i=0; $i<count($group); $i++) {?> <?php for($i=0; $i<count($group); $i++) {?>
<option value="<?php echo $group[$i]['bg_no']?>"<?php echo get_selected($bg_no, $group[$i]['bg_no']);?>> <?php echo $group[$i]['bg_name']?> (<?php echo number_format($group[$i]['bg_count'])?> 명) </option> <option value="<?php echo $group[$i]['bg_no']?>"<?php echo get_selected($group[$i]['bg_no'], $bg_no);?>> <?php echo $group[$i]['bg_name']?> (<?php echo number_format($group[$i]['bg_count'])?> 명) </option>
<?php } ?> <?php } ?>
</select> </select>
<input type="checkbox" name="no_hp" id="no_hp" <?php echo $no_hp_checked?> onclick="no_hp_click(this.checked)"> <input type="checkbox" name="no_hp" id="no_hp" <?php echo $no_hp_checked?> onclick="no_hp_click(this.checked)">
+2 -2
View File
@@ -129,7 +129,7 @@ function num_group_submit(f)
<select name="select_bg_no_999" id="select_bg_no_999" onchange="move(<?php echo $no_group['bg_no']?>, '<?php echo $no_group['bg_name']?>', this);" > <select name="select_bg_no_999" id="select_bg_no_999" onchange="move(<?php echo $no_group['bg_no']?>, '<?php echo $no_group['bg_name']?>', this);" >
<option value=""></option> <option value=""></option>
<?php for ($i=0; $i<count($group); $i++) { ?> <?php for ($i=0; $i<count($group); $i++) { ?>
<option value="<?php echo $group[$i]['bg_no']?>"> <?php echo $group[$i]['bg_name']?> </option> <option value="<?php echo $group[$i]['bg_no']?>"> <?php echo get_sanitize_input($group[$i]['bg_name']); ?> </option>
<?php } ?> <?php } ?>
</select> </select>
</td> </td>
@@ -150,7 +150,7 @@ function num_group_submit(f)
</td> </td>
<td> <td>
<label for="bg_name_<?php echo $i; ?>" class="sound_only">그룹명</label> <label for="bg_name_<?php echo $i; ?>" class="sound_only">그룹명</label>
<input type="text" name="bg_name[<?php echo $i; ?>]" value="<?php echo $group[$i]['bg_name']?>" id="bg_name_<?php echo $i; ?>" class="frm_input"> <input type="text" name="bg_name[<?php echo $i; ?>]" value="<?php echo get_sanitize_input($group[$i]['bg_name']); ?>" id="bg_name_<?php echo $i; ?>" class="frm_input">
</td> </td>
<td class="td_num"><?php echo number_format($group[$i]['bg_count'])?></td> <td class="td_num"><?php echo number_format($group[$i]['bg_count'])?></td>
<td class="td_num"><?php echo number_format($group[$i]['bg_member'])?></td> <td class="td_num"><?php echo number_format($group[$i]['bg_member'])?></td>
+5 -5
View File
@@ -11,7 +11,7 @@ if ($w == 'u') // 업데이트
// 실제 번호를 넘김 // 실제 번호를 넘김
$k = $_POST['chk'][$i]; $k = $_POST['chk'][$i];
$bg_no = (int) $_POST['bg_no'][$k]; $bg_no = (int) $_POST['bg_no'][$k];
$bg_name = strip_tags($_POST['bg_name'][$k]); $bg_name = strip_tags(clean_xss_attributes($_POST['bg_name'][$k]));
if (!is_numeric($bg_no)) if (!is_numeric($bg_no))
alert('그룹 고유번호가 없습니다.'); alert('그룹 고유번호가 없습니다.');
@@ -23,11 +23,11 @@ if ($w == 'u') // 업데이트
if (!strlen(trim($bg_name))) if (!strlen(trim($bg_name)))
alert('그룹명을 입력해주세요'); alert('그룹명을 입력해주세요');
$res = sql_fetch("select bg_name from {$g5['sms5_book_group_table']} where bg_no<>'$bg_no' and bg_name='$bg_name'"); $res = sql_fetch("select bg_name from {$g5['sms5_book_group_table']} where bg_no<>'$bg_no' and bg_name='".sql_real_escape_string($bg_name)."'");
if ($res) if ($res)
alert('같은 그룹명이 존재합니다.'); alert('같은 그룹명이 존재합니다.');
sql_query("update {$g5['sms5_book_group_table']} set bg_name='".addslashes($bg_name)."' where bg_no='$bg_no'"); sql_query("update {$g5['sms5_book_group_table']} set bg_name='".sql_real_escape_string($bg_name)."' where bg_no='$bg_no'");
} }
} }
else if ($w == 'de') // 그룹삭제 else if ($w == 'de') // 그룹삭제
@@ -63,7 +63,7 @@ else if ($w == 'em') // 비우기
} }
else // 등록 else // 등록
{ {
$bg_name = strip_tags($bg_name); $bg_name = strip_tags(clean_xss_attributes($bg_name));
if (!strlen(trim($bg_name))) if (!strlen(trim($bg_name)))
alert('그룹명을 입력해주세요'); alert('그룹명을 입력해주세요');
@@ -72,7 +72,7 @@ else // 등록
if ($res) if ($res)
alert('같은 그룹명이 존재합니다.'); alert('같은 그룹명이 존재합니다.');
sql_query("insert into {$g5['sms5_book_group_table']} set bg_name='".addslashes($bg_name)."'"); sql_query("insert into {$g5['sms5_book_group_table']} set bg_name='$bg_name'");
} }
goto_url('./num_group.php'); goto_url('./num_group.php');
+2
View File
@@ -7,6 +7,8 @@ while ($res = sql_fetch_array($qry)) array_push($group, $res);
$res = sql_fetch("select count(*) as cnt from `{$g5['sms5_form_table']}` where fg_no=0"); $res = sql_fetch("select count(*) as cnt from `{$g5['sms5_form_table']}` where fg_no=0");
$no_count = $res['cnt']; $no_count = $res['cnt'];
$fg_no = isset($fg_no) ? (int) $fg_no : '';
?> ?>
<form name="emo_frm"> <form name="emo_frm">
+3 -3
View File
@@ -29,7 +29,7 @@ if(!in_array($type, $arr_type)) {
} }
if($type == 'board') { if($type == 'board') {
$keys = array('bo_gallery_cols', 'bo_gallery_width', 'bo_gallery_height', 'bo_mobile_gallery_width', 'bo_mobile_gallery_height', 'bo_image_width'); $keys = run_replace('theme_config_load_keys', array('bo_gallery_cols', 'bo_gallery_width', 'bo_gallery_height', 'bo_mobile_gallery_width', 'bo_mobile_gallery_height', 'bo_image_width'), $type);
$tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys)); $tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys));
$i = 0; $i = 0;
@@ -43,7 +43,7 @@ if($type == 'board') {
if($i == 0) if($i == 0)
$data['error'] = '적용할 게시판 이미지 설정이 없습니다.'; $data['error'] = '적용할 게시판 이미지 설정이 없습니다.';
} else if($type == 'conf_skin') { } else if($type == 'conf_skin') {
$keys = array('cf_new_skin', 'cf_mobile_new_skin', 'cf_search_skin', 'cf_mobile_search_skin', 'cf_connect_skin', 'cf_mobile_connect_skin', 'cf_faq_skin', 'cf_mobile_faq_skin'); $keys = run_replace('theme_config_load_keys', array('cf_new_skin', 'cf_mobile_new_skin', 'cf_search_skin', 'cf_mobile_search_skin', 'cf_connect_skin', 'cf_mobile_connect_skin', 'cf_faq_skin', 'cf_mobile_faq_skin'), $type);
$tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys)); $tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys));
@@ -58,7 +58,7 @@ if($type == 'board') {
if($i == 0) if($i == 0)
$data['error'] = '적용할 기본환경 스킨 설정이 없습니다.'; $data['error'] = '적용할 기본환경 스킨 설정이 없습니다.';
} else if($type == 'conf_member') { } else if($type == 'conf_member') {
$keys = array('cf_member_skin', 'cf_mobile_member_skin'); $keys = run_replace('theme_config_load_keys', array('cf_member_skin', 'cf_mobile_member_skin'), $type);
$tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys)); $tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys));
+2
View File
@@ -68,5 +68,7 @@ if($_POST['set_default_skin'] == 1) {
} }
} }
run_event('adm_theme_update', $theme, $_POST['set_default_skin']);
die(''); die('');
?> ?>
+1 -1
View File
@@ -88,5 +88,5 @@ delete_cache_latest($bo_table);
run_event('bbs_delete_comment', $comment_id, $board); run_event('bbs_delete_comment', $comment_id, $board);
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&amp;wr_id='.$write['wr_parent'].'&amp;page='.$page. $qstr); goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&amp;wr_id='.$write['wr_parent'].'&amp;page='.$page. $qstr));
?> ?>
+6 -3
View File
@@ -31,14 +31,17 @@ else
alert($kind.' 값을 넘겨주세요.'); alert($kind.' 값을 넘겨주세요.');
} }
$g5['title'] = $t.' 쪽지 보기';
include_once(G5_PATH.'/head.sub.php');
$sql = " select * from {$g5['memo_table']} $sql = " select * from {$g5['memo_table']}
where me_id = '$me_id' where me_id = '$me_id'
and me_{$kind}_mb_id = '{$member['mb_id']}' "; and me_{$kind}_mb_id = '{$member['mb_id']}' ";
$memo = sql_fetch($sql); $memo = sql_fetch($sql);
set_session('ss_memo_delete_token', $token = uniqid(time()));
$del_link = 'memo_delete.php?me_id='.$memo['me_id'].'&amp;token='.$token.'&amp;kind='.$kind;
$g5['title'] = $t.' 쪽지 보기';
include_once(G5_PATH.'/head.sub.php');
// 이전 쪽지 // 이전 쪽지
$sql = " select me.*, a.rownum from `{$g5['memo_table']}` as me inner join ( select me_id , (@rownum:=@rownum+1) as rownum from `{$g5['memo_table']}` as memo, (select @rownum:=0) tmp where me_{$kind}_mb_id = '{$member['mb_id']}' and memo.me_type = '$kind' order by me_id desc ) as a on a.me_id = me.me_id where me.me_id < '$me_id' and me.me_{$kind}_mb_id = '{$member['mb_id']}' and me.me_type = '$kind' order by me.me_id desc limit 1 "; $sql = " select me.*, a.rownum from `{$g5['memo_table']}` as me inner join ( select me_id , (@rownum:=@rownum+1) as rownum from `{$g5['memo_table']}` as memo, (select @rownum:=0) tmp where me_{$kind}_mb_id = '{$member['mb_id']}' and memo.me_type = '$kind' order by me_id desc ) as a on a.me_id = me.me_id where me.me_id < '$me_id' and me.me_{$kind}_mb_id = '{$member['mb_id']}' and me.me_type = '$kind' order by me.me_id desc limit 1 ";
+7 -7
View File
@@ -8,24 +8,25 @@ if ($is_admin != 'super')
$board = array(); $board = array();
$save_bo_table = array(); $save_bo_table = array();
$save_wr_id = array();
for($i=0;$i<count($_POST['chk_bn_id']);$i++) for($i=0;$i<count($_POST['chk_bn_id']);$i++)
{ {
// 실제 번호를 넘김 // 실제 번호를 넘김
$k = $_POST['chk_bn_id'][$i]; $k = $_POST['chk_bn_id'][$i];
$bo_table = $_POST['bo_table'][$k]; $bo_table = isset($_POST['bo_table'][$k]) ? preg_replace('/[^a-z0-9_]/i', '', $_POST['bo_table'][$k]) : '';
$wr_id = $_POST['wr_id'][$k]; $wr_id = isset($_POST['wr_id'][$k]) ? preg_replace('/[^0-9]/i', '', $_POST['wr_id'][$k]) : 0;
$save_bo_table[] = $bo_table; $save_bo_table[$i] = $bo_table;
$save_wr_id[$i] = $wr_id;
$write_table = $g5['write_prefix'].$bo_table; $write_table = $g5['write_prefix'].$bo_table;
if ($board['bo_table'] != $bo_table) if ($board['bo_table'] != $bo_table)
$board = sql_fetch(" select bo_subject, bo_write_point, bo_comment_point, bo_notice from {$g5['board_table']} where bo_table = '$bo_table' "); $board = sql_fetch(" select bo_subject, bo_write_point, bo_comment_point, bo_notice from {$g5['board_table']} where bo_table = '$bo_table' ");
$sql = " select * from $write_table where wr_id = '$wr_id' "; $write = get_write($write_table, $wr_id);
$write = sql_fetch($sql);
if (!$write) continue; if (!$write) continue;
// 원글 삭제 // 원글 삭제
@@ -138,12 +139,11 @@ for($i=0;$i<count($_POST['chk_bn_id']);$i++)
} }
} }
$save_bo_table = array_unique($save_bo_table);
foreach ($save_bo_table as $key=>$value) { foreach ($save_bo_table as $key=>$value) {
delete_cache_latest($value); delete_cache_latest($value);
} }
run_event('bbs_new_delete', $chk_bn_id, $save_bo_table); run_event('bbs_new_delete', $chk_bn_id, $save_bo_table, $save_wr_id);
goto_url("new.php?sfl=$sfl&stx=$stx&page=$page"); goto_url("new.php?sfl=$sfl&stx=$stx&page=$page");
?> ?>
+10 -1
View File
@@ -12,10 +12,13 @@ set_session("ss_cert_no", "");
set_session("ss_cert_hash", ""); set_session("ss_cert_hash", "");
set_session("ss_cert_type", ""); set_session("ss_cert_type", "");
$is_social_login_modify = false;
if( $provider && function_exists('social_nonce_is_valid') ){ //모바일로 소셜 연결을 했다면 if( $provider && function_exists('social_nonce_is_valid') ){ //모바일로 소셜 연결을 했다면
if( social_nonce_is_valid(get_session("social_link_token"), $provider) ){ //토큰값이 유효한지 체크 if( social_nonce_is_valid(get_session("social_link_token"), $provider) ){ //토큰값이 유효한지 체크
$w = 'u'; //회원 수정으로 처리 $w = 'u'; //회원 수정으로 처리
$_POST['mb_id'] = $member['mb_id']; $_POST['mb_id'] = $member['mb_id'];
$is_social_login_modify = true;
} }
} }
@@ -76,7 +79,13 @@ if ($w == "") {
set_session("ss_tmp_password", $_POST[mb_password]); set_session("ss_tmp_password", $_POST[mb_password]);
*/ */
if ($_POST['mb_password']) { if($_POST['mb_id'] && ! (isset($_POST['mb_password']) && $_POST['mb_password'])){
if( ! $is_social_login_modify ){
alert('비밀번호를 입력해 주세요.');
}
}
if (isset($_POST['mb_password'])) {
// 수정된 정보를 업데이트후 되돌아 온것이라면 비밀번호가 암호화 된채로 넘어온것임 // 수정된 정보를 업데이트후 되돌아 온것이라면 비밀번호가 암호화 된채로 넘어온것임
if ($_POST['is_update']) { if ($_POST['is_update']) {
$tmp_password = $_POST['mb_password']; $tmp_password = $_POST['mb_password'];
+35 -4
View File
@@ -216,10 +216,6 @@ ini_set("session.gc_divisor", 100); // session.gc_divisor는 session.gc_probabil
session_set_cookie_params(0, '/'); session_set_cookie_params(0, '/');
ini_set("session.cookie_domain", G5_COOKIE_DOMAIN); ini_set("session.cookie_domain", G5_COOKIE_DOMAIN);
@session_start();
//==============================================================================
//============================================================================== //==============================================================================
// 공용 변수 // 공용 변수
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -227,6 +223,41 @@ ini_set("session.cookie_domain", G5_COOKIE_DOMAIN);
// 기본적으로 사용하는 필드만 얻은 후 상황에 따라 필드를 추가로 얻음 // 기본적으로 사용하는 필드만 얻은 후 상황에 따라 필드를 추가로 얻음
$config = get_config(); $config = get_config();
// 본인인증 또는 쇼핑몰 사용시에만 secure; SameSite=None 로 설정합니다.
if( $config['cf_cert_use'] || (defined('G5_YOUNGCART_VER') && G5_YOUNGCART_VER) ) {
// Chrome 80 버전부터 아래 이슈 대응
// https://developers-kr.googleblog.com/2020/01/developers-get-ready-for-new.html?fbclid=IwAR0wnJFGd6Fg9_WIbQPK3_FxSSpFLqDCr9bjicXdzy--CCLJhJgC9pJe5ss
if(!function_exists('session_start_samesite')) {
function session_start_samesite($options = array())
{
global $g5;
$res = @session_start($options);
// IE 브라우저 또는 엣지브라우저 일때는 secure; SameSite=None, http 환경에서는 설정하지 않습니다.
if( preg_match('/Edge/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || preg_match('~Trident/7.0(; Touch)?; rv:11.0~',$_SERVER['HTTP_USER_AGENT']) || ! (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ){
return $res;
}
$headers = headers_list();
krsort($headers);
foreach ($headers as $header) {
if (!preg_match('~^Set-Cookie: PHPSESSID=~', $header)) continue;
$header = preg_replace('~; secure(; HttpOnly)?$~', '', $header) . '; secure; SameSite=None';
header($header, false);
$g5['session_cookie_samesite'] = 'none';
break;
}
return $res;
}
}
session_start_samesite();
} else {
@session_start();
}
//==============================================================================
define('G5_HTTP_BBS_URL', https_url(G5_BBS_DIR, false)); define('G5_HTTP_BBS_URL', https_url(G5_BBS_DIR, false));
define('G5_HTTPS_BBS_URL', https_url(G5_BBS_DIR, true)); define('G5_HTTPS_BBS_URL', https_url(G5_BBS_DIR, true));
if ($config['cf_editor']) if ($config['cf_editor'])
+1 -1
View File
@@ -5,7 +5,7 @@
********************/ ********************/
define('G5_VERSION', '그누보드5'); define('G5_VERSION', '그누보드5');
define('G5_GNUBOARD_VER', '5.4.1'); define('G5_GNUBOARD_VER', '5.4.2.2');
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음 // 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define('_GNUBOARD_', true); define('_GNUBOARD_', true);
+2 -2
View File
@@ -1,6 +1,6 @@
<?php <?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
define('G5_JS_VER', '191110'); define('G5_JS_VER', '191202');
define('G5_CSS_VER', '191110'); define('G5_CSS_VER', '191202');
?> ?>
+1 -1
View File
@@ -337,7 +337,7 @@ for($i=0; $row=sql_fetch_array($result); $i++) {
// 게시판 테이블 생성 // 게시판 테이블 생성
$bo_table = $row['bo_table']; $bo_table = $row['bo_table'];
$file = file(G5_ADMIN_PATH.'/sql_write.sql'); $file = file(G5_ADMIN_PATH.'/sql_write.sql');
$sql = implode($file, "\n"); $sql = implode("\n", $file);
$create_table = $g5['write_prefix'] . $bo_table; $create_table = $g5['write_prefix'] . $bo_table;
+2
View File
@@ -1,6 +1,8 @@
<?php <?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
run_event('pre_head');
if(defined('G5_THEME_PATH')) { if(defined('G5_THEME_PATH')) {
require_once(G5_THEME_PATH.'/head.php'); require_once(G5_THEME_PATH.'/head.php');
return; return;
-2
View File
@@ -2,8 +2,6 @@
// 이 파일은 새로운 파일 생성시 반드시 포함되어야 함 // 이 파일은 새로운 파일 생성시 반드시 포함되어야 함
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
run_event('head_sub');
// 테마 head.sub.php 파일 // 테마 head.sub.php 파일
if(!defined('G5_IS_ADMIN') && defined('G5_THEME_PATH') && is_file(G5_THEME_PATH.'/head.sub.php')) { if(!defined('G5_IS_ADMIN') && defined('G5_THEME_PATH') && is_file(G5_THEME_PATH.'/head.sub.php')) {
require_once(G5_THEME_PATH.'/head.sub.php'); require_once(G5_THEME_PATH.'/head.sub.php');
+1 -1
View File
@@ -292,7 +292,7 @@ for ($i=0; $i<count($tmp_bo_table); $i++)
// 게시판 테이블 생성 // 게시판 테이블 생성
$file = file("../".G5_ADMIN_DIR."/sql_write.sql"); $file = file("../".G5_ADMIN_DIR."/sql_write.sql");
$file = get_db_create_replace($file); $file = get_db_create_replace($file);
$sql = implode($file, "\n"); $sql = implode("\n", $file);
$create_table = $table_prefix.'write_' . $tmp_bo_table[$i]; $create_table = $table_prefix.'write_' . $tmp_bo_table[$i];
+388
View File
@@ -0,0 +1,388 @@
/* This is the core CSS of Tooltipster */
/* GENERAL STRUCTURE RULES (do not edit this section) */
.tooltipster-base {
/* this ensures that a constrained height set by functionPosition,
if greater that the natural height of the tooltip, will be enforced
in browsers that support display:flex */
display: flex;
pointer-events: none;
/* this may be overriden in JS for fixed position origins */
position: absolute;
}
.tooltipster-box {
/* see .tooltipster-base. flex-shrink 1 is only necessary for IE10-
and flex-basis auto for IE11- (at least) */
flex: 1 1 auto;
}
.tooltipster-content {
/* prevents an overflow if the user adds padding to the div */
box-sizing: border-box;
/* these make sure we'll be able to detect any overflow */
max-height: 100%;
max-width: 100%;
overflow: auto;
}
.tooltipster-ruler {
/* these let us test the size of the tooltip without overflowing the window */
bottom: 0;
left: 0;
overflow: hidden;
position: fixed;
right: 0;
top: 0;
visibility: hidden;
}
/* ANIMATIONS */
/* Open/close animations */
/* fade */
.tooltipster-fade {
opacity: 0;
-webkit-transition-property: opacity;
-moz-transition-property: opacity;
-o-transition-property: opacity;
-ms-transition-property: opacity;
transition-property: opacity;
}
.tooltipster-fade.tooltipster-show {
opacity: 1;
}
/* grow */
.tooltipster-grow {
-webkit-transform: scale(0,0);
-moz-transform: scale(0,0);
-o-transform: scale(0,0);
-ms-transform: scale(0,0);
transform: scale(0,0);
-webkit-transition-property: -webkit-transform;
-moz-transition-property: -moz-transform;
-o-transition-property: -o-transform;
-ms-transition-property: -ms-transform;
transition-property: transform;
-webkit-backface-visibility: hidden;
}
.tooltipster-grow.tooltipster-show {
-webkit-transform: scale(1,1);
-moz-transform: scale(1,1);
-o-transform: scale(1,1);
-ms-transform: scale(1,1);
transform: scale(1,1);
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
}
/* swing */
.tooltipster-swing {
opacity: 0;
-webkit-transform: rotateZ(4deg);
-moz-transform: rotateZ(4deg);
-o-transform: rotateZ(4deg);
-ms-transform: rotateZ(4deg);
transform: rotateZ(4deg);
-webkit-transition-property: -webkit-transform, opacity;
-moz-transition-property: -moz-transform;
-o-transition-property: -o-transform;
-ms-transition-property: -ms-transform;
transition-property: transform;
}
.tooltipster-swing.tooltipster-show {
opacity: 1;
-webkit-transform: rotateZ(0deg);
-moz-transform: rotateZ(0deg);
-o-transform: rotateZ(0deg);
-ms-transform: rotateZ(0deg);
transform: rotateZ(0deg);
-webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 1);
-webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
-moz-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
-ms-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
-o-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
}
/* fall */
.tooltipster-fall {
-webkit-transition-property: top;
-moz-transition-property: top;
-o-transition-property: top;
-ms-transition-property: top;
transition-property: top;
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
}
.tooltipster-fall.tooltipster-initial {
top: 0 !important;
}
.tooltipster-fall.tooltipster-show {
}
.tooltipster-fall.tooltipster-dying {
-webkit-transition-property: all;
-moz-transition-property: all;
-o-transition-property: all;
-ms-transition-property: all;
transition-property: all;
top: 0 !important;
opacity: 0;
}
/* slide */
.tooltipster-slide {
-webkit-transition-property: left;
-moz-transition-property: left;
-o-transition-property: left;
-ms-transition-property: left;
transition-property: left;
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
}
.tooltipster-slide.tooltipster-initial {
left: -40px !important;
}
.tooltipster-slide.tooltipster-show {
}
.tooltipster-slide.tooltipster-dying {
-webkit-transition-property: all;
-moz-transition-property: all;
-o-transition-property: all;
-ms-transition-property: all;
transition-property: all;
left: 0 !important;
opacity: 0;
}
/* Update animations */
/* We use animations rather than transitions here because
transition durations may be specified in the style tag due to
animationDuration, and we try to avoid collisions and the use
of !important */
/* fade */
@keyframes tooltipster-fading {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.tooltipster-update-fade {
animation: tooltipster-fading 400ms;
}
/* rotate */
@keyframes tooltipster-rotating {
25% {
transform: rotate(-2deg);
}
75% {
transform: rotate(2deg);
}
100% {
transform: rotate(0);
}
}
.tooltipster-update-rotate {
animation: tooltipster-rotating 600ms;
}
/* scale */
@keyframes tooltipster-scaling {
50% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
.tooltipster-update-scale {
animation: tooltipster-scaling 600ms;
}
/**
* DEFAULT STYLE OF THE SIDETIP PLUGIN
*
* All styles are "namespaced" with .tooltipster-sidetip to prevent
* conflicts between plugins.
*/
/* .tooltipster-box */
.tooltipster-sidetip .tooltipster-box {
background: #565656;
border: 2px solid black;
border-radius: 4px;
}
.tooltipster-sidetip.tooltipster-bottom .tooltipster-box {
margin-top: 8px;
}
.tooltipster-sidetip.tooltipster-left .tooltipster-box {
margin-right: 8px;
}
.tooltipster-sidetip.tooltipster-right .tooltipster-box {
margin-left: 8px;
}
.tooltipster-sidetip.tooltipster-top .tooltipster-box {
margin-bottom: 8px;
}
/* .tooltipster-content */
.tooltipster-sidetip .tooltipster-content {
color: white;
line-height: 18px;
padding: 6px 14px;
}
/* .tooltipster-arrow : will keep only the zone of .tooltipster-arrow-uncropped that
corresponds to the arrow we want to display */
.tooltipster-sidetip .tooltipster-arrow {
overflow: hidden;
position: absolute;
}
.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow {
height: 10px;
/* half the width, for centering */
margin-left: -10px;
top: 0;
width: 20px;
}
.tooltipster-sidetip.tooltipster-left .tooltipster-arrow {
height: 20px;
margin-top: -10px;
right: 0;
/* top 0 to keep the arrow from overflowing .tooltipster-base when it has not
been positioned yet */
top: 0;
width: 10px;
}
.tooltipster-sidetip.tooltipster-right .tooltipster-arrow {
height: 20px;
margin-top: -10px;
left: 0;
/* same as .tooltipster-left .tooltipster-arrow */
top: 0;
width: 10px;
}
.tooltipster-sidetip.tooltipster-top .tooltipster-arrow {
bottom: 0;
height: 10px;
margin-left: -10px;
width: 20px;
}
/* common rules between .tooltipster-arrow-background and .tooltipster-arrow-border */
.tooltipster-sidetip .tooltipster-arrow-background, .tooltipster-sidetip .tooltipster-arrow-border {
height: 0;
position: absolute;
width: 0;
}
/* .tooltipster-arrow-background */
.tooltipster-sidetip .tooltipster-arrow-background {
border: 10px solid transparent;
}
.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background {
border-bottom-color: #565656;
left: 0;
top: 3px;
}
.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background {
border-left-color: #565656;
left: -3px;
top: 0;
}
.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background {
border-right-color: #565656;
left: 3px;
top: 0;
}
.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background {
border-top-color: #565656;
left: 0;
top: -3px;
}
/* .tooltipster-arrow-border */
.tooltipster-sidetip .tooltipster-arrow-border {
border: 10px solid transparent;
left: 0;
top: 0;
}
.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border {
border-bottom-color: black;
}
.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border {
border-left-color: black;
}
.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border {
border-right-color: black;
}
.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border {
border-top-color: black;
}
/* tooltipster-arrow-uncropped */
.tooltipster-sidetip .tooltipster-arrow-uncropped {
position: relative;
}
.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-uncropped {
top: -10px;
}
.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-uncropped {
left: -10px;
}
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
.tooltipster-fall,.tooltipster-grow.tooltipster-show{-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-base{display:flex;pointer-events:none;position:absolute}.tooltipster-box{flex:1 1 auto}.tooltipster-content{box-sizing:border-box;max-height:100%;max-width:100%;overflow:auto}.tooltipster-ruler{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;visibility:hidden}.tooltipster-fade{opacity:0;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;-ms-transition-property:opacity;transition-property:opacity}.tooltipster-fade.tooltipster-show{opacity:1}.tooltipster-grow{-webkit-transform:scale(0,0);-moz-transform:scale(0,0);-o-transform:scale(0,0);-ms-transform:scale(0,0);transform:scale(0,0);-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-backface-visibility:hidden}.tooltipster-grow.tooltipster-show{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-o-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-swing{opacity:0;-webkit-transform:rotateZ(4deg);-moz-transform:rotateZ(4deg);-o-transform:rotateZ(4deg);-ms-transform:rotateZ(4deg);transform:rotateZ(4deg);-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform}.tooltipster-swing.tooltipster-show{opacity:1;-webkit-transform:rotateZ(0);-moz-transform:rotateZ(0);-o-transform:rotateZ(0);-ms-transform:rotateZ(0);transform:rotateZ(0);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,1);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-moz-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-ms-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-o-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);transition-timing-function:cubic-bezier(.23,.635,.495,2.4)}.tooltipster-fall{-webkit-transition-property:top;-moz-transition-property:top;-o-transition-property:top;-ms-transition-property:top;transition-property:top;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-fall.tooltipster-initial{top:0!important}.tooltipster-fall.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;top:0!important;opacity:0}.tooltipster-slide{-webkit-transition-property:left;-moz-transition-property:left;-o-transition-property:left;-ms-transition-property:left;transition-property:left;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-slide.tooltipster-initial{left:-40px!important}.tooltipster-slide.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;left:0!important;opacity:0}@keyframes tooltipster-fading{0%{opacity:0}100%{opacity:1}}.tooltipster-update-fade{animation:tooltipster-fading .4s}@keyframes tooltipster-rotating{25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}100%{transform:rotate(0)}}.tooltipster-update-rotate{animation:tooltipster-rotating .6s}@keyframes tooltipster-scaling{50%{transform:scale(1.1)}100%{transform:scale(1)}}.tooltipster-update-scale{animation:tooltipster-scaling .6s}.tooltipster-sidetip .tooltipster-box{background:#565656;border:2px solid #000;border-radius:4px}.tooltipster-sidetip.tooltipster-bottom .tooltipster-box{margin-top:8px}.tooltipster-sidetip.tooltipster-left .tooltipster-box{margin-right:8px}.tooltipster-sidetip.tooltipster-right .tooltipster-box{margin-left:8px}.tooltipster-sidetip.tooltipster-top .tooltipster-box{margin-bottom:8px}.tooltipster-sidetip .tooltipster-content{color:#fff;line-height:18px;padding:6px 14px}.tooltipster-sidetip .tooltipster-arrow{overflow:hidden;position:absolute}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow{height:10px;margin-left:-10px;top:0;width:20px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow{height:20px;margin-top:-10px;right:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-right .tooltLine truncated
+2
View File
@@ -0,0 +1,2 @@
/*! tooltipster v4.2.7 */!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){function b(a){this.$container,this.constraints=null,this.__$tooltip,this.__init(a)}function c(b,c){var d=!0;return a.each(b,function(a,e){return void 0===c[a]||b[a]!==c[a]?(d=!1,!1):void 0}),d}function d(b){var c=b.attr("id"),d=c?h.window.document.getElementById(c):null;return d?d===b[0]:a.contains(h.window.document.body,b[0])}function e(){if(!g)return!1;var a=g.document.body||g.document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e<d.length;e++)if("string"==typeof b[d[e]+c])return!0;return!1}var f={animation:"fade",animationDuration:350,content:null,contentAsHTML:!1,contentCloning:!1,debug:!0,delay:300,delayTouch:[300,500],functionInit:null,functionBefore:null,functionReady:null,functionAfter:null,functionFormat:null,IEmin:6,interactive:!1,multiple:!1,parent:null,plugins:["sideTip"],repositionOnScroll:!1,restoration:"none",selfDestruction:!0,theme:[],timer:0,trackerInterval:500,trackOrigin:!1,trackTooltip:!1,trigger:"hover",triggerClose:{click:!1,mouseleave:!1,originClick:!1,scroll:!1,tap:!1,touchleave:!1},triggerOpen:{click:!1,mouseenter:!1,tap:!1,touchstart:!1},updateAnimation:"rotate",zIndex:9999999},g="undefined"!=typeof window?window:null,h={hasTouchCapability:!(!g||!("ontouchstart"in g||g.DocumentTouch&&g.document instanceof g.DocumentTouch||g.navigator.maxTouchPoints)),hasTransitions:e(),IE:!1,semVer:"4.2.7",window:g},i=function(){this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__instancesLatestArr=[],this.__plugins={},this._env=h};i.prototype={__bridge:function(b,c,d){if(!c[d]){var e=function(){};e.prototype=b;var g=new e;g.__init&&g.__init(c),a.each(b,function(a,b){0!=a.indexOf("__")&&(c[a]?f.debug&&console.log("The "+a+" method of the "+d+" plugin conflicts with another plugin or native methods"):(c[a]=function(){return g[a].apply(g,Array.prototype.slice.apply(arguments))},c[a].bridged=g))}),c[d]=g}return this},__setWindow:function(a){return h.window=a,this},_getRuler:function(a){return new b(a)},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_plugin:function(b){var c=this;if("string"==typeof b){var d=b,e=null;return d.indexOf(".")>0?e=c.__plugins[d]:a.each(c.__plugins,function(a,b){return b.name.substring(b.name.length-d.length-1)=="."+d?(e=b,!1):void 0}),e}if(b.name.indexOf(".")<0)throw new Error("Plugins must be namespaced");return c.__plugins[b.name]=b,b.core&&c.__bridge(b.core,c,b.name),this},_trigger:function(){var a=Array.prototype.slice.apply(arguments);return"string"==typeof a[0]&&(a[0]={type:a[0]}),this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,a),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,a),this},instances:function(b){var c=[],d=b||".tooltipstered";return a(d).each(function(){var b=a(this),d=b.data("tooltipster-ns");d&&a.each(d,function(a,d){c.push(b.data(d))})}),c},instancesLatest:function(){return this.__instancesLatestArr},off:function(){return this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},origins:function(b){var c=b?b+" ":"";return a(c+".tooltipstered").toArray()},setDefaults:function(b){return a.extend(f,b),this},triggerHandler:function(){return this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.tooltipster=new i,a.Tooltipster=function(b,c){this.__callbacks={close:[],open:[]},this.__closingTime,this.__Content,this.__contentBcr,this.__destroyed=!1,this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__enabled=!0,this.__garbageCollector,this.__Geometry,this.__lastPosition,this.__namespace="tooltipster-"+Math.round(1e6*Math.random()),this.__options,this.__$originParents,this.__pointerIsOverOrigin=!1,this.__previousThemes=[],this.__state="closed",this.__timeouts={close:[],open:null},this.__touchEvents=[],this.__tracker=null,this._$origin,this._$tooltip,this.__init(b,c)},a.Tooltipster.prototype={__init:function(b,c){var d=this;if(d._$origin=a(b),d.__options=a.extend(!0,{},f,c),d.__optionsFormat(),!h.IE||h.IE>=d.__options.IEmin){var e=null;if(void 0===d._$origin.data("tooltipster-initialTitle")&&(e=d._$origin.attr("title"),void 0===e&&(e=nLine truncated
this.__instance._$tooltip=b,this.__instance._trigger("created")},__destroy:function(){this.__instance._off("."+self.__namespace)},__optionsFormat:function(){var b=this;if(b.__options=b.__instance._optionsExtract(k,b.__defaults()),b.__options.position&&(b.__options.side=b.__options.position),"object"!=typeof b.__options.distance&&(b.__options.distance=[b.__options.distance]),b.__options.distance.length<4&&(void 0===b.__options.distance[1]&&(b.__options.distance[1]=b.__options.distance[0]),void 0===b.__options.distance[2]&&(b.__options.distance[2]=b.__options.distance[0]),void 0===b.__options.distance[3]&&(b.__options.distance[3]=b.__options.distance[1]),b.__options.distance={top:b.__options.distance[0],right:b.__options.distance[1],bottom:b.__options.distance[2],left:b.__options.distance[3]}),"string"==typeof b.__options.side){var c={top:"bottom",right:"left",bottom:"top",left:"right"};b.__options.side=[b.__options.side,c[b.__options.side]],"left"==b.__options.side[0]||"right"==b.__options.side[0]?b.__options.side.push("top","bottom"):b.__options.side.push("right","left")}6===a.tooltipster._env.IE&&b.__options.arrow!==!0&&(b.__options.arrow=!1)},__reposition:function(b,c){var d,e=this,f=e.__targetFind(c),g=[];e.__instance._$tooltip.detach();var h=e.__instance._$tooltip.clone(),i=a.tooltipster._getRuler(h),j=!1,k=e.__instance.option("animation");switch(k&&h.removeClass("tooltipster-"+k),a.each(["window","document"],function(d,k){var l=null;if(e.__instance._trigger({container:k,helper:c,satisfied:j,takeTest:function(a){l=a},results:g,type:"positionTest"}),1==l||0!=l&&0==j&&("window"!=k||e.__options.viewportAware))for(var d=0;d<e.__options.side.length;d++){var m={horizontal:0,vertical:0},n=e.__options.side[d];"top"==n||"bottom"==n?m.vertical=e.__options.distance[n]:m.horizontal=e.__options.distance[n],e.__sideChange(h,n),a.each(["natural","constrained"],function(a,d){if(l=null,e.__instance._trigger({container:k,event:b,helper:c,mode:d,results:g,satisfied:j,side:n,takeTest:function(a){l=a},type:"positionTest"}),1==l||0!=l&&0==j){var h={container:k,distance:m,fits:null,mode:d,outerSize:null,side:n,size:null,target:f[n],whole:null},o="natural"==d?i.free():i.constrain(c.geo.available[k][n].width-m.horizontal,c.geo.available[k][n].height-m.vertical),p=o.measure();if(h.size=p.size,h.outerSize={height:p.size.height+m.vertical,width:p.size.width+m.horizontal},"natural"==d?c.geo.available[k][n].width>=h.outerSize.width&&c.geo.available[k][n].height>=h.outerSize.height?h.fits=!0:h.fits=!1:h.fits=p.fits,"window"==k&&(h.fits?"top"==n||"bottom"==n?h.whole=c.geo.origin.windowOffset.right>=e.__options.minIntersection&&c.geo.window.size.width-c.geo.origin.windowOffset.left>=e.__options.minIntersection:h.whole=c.geo.origin.windowOffset.bottom>=e.__options.minIntersection&&c.geo.window.size.height-c.geo.origin.windowOffset.top>=e.__options.minIntersection:h.whole=!1),g.push(h),h.whole)j=!0;else if("natural"==h.mode&&(h.fits||h.size.width<=c.geo.available[k][n].width))return!1}})}}),e.__instance._trigger({edit:function(a){g=a},event:b,helper:c,results:g,type:"positionTested"}),g.sort(function(a,b){if(a.whole&&!b.whole)return-1;if(!a.whole&&b.whole)return 1;if(a.whole&&b.whole){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:"natural"==a.mode?-1:1}if(a.fits&&!b.fits)return-1;if(!a.fits&&b.fits)return 1;if(a.fits&&b.fits){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:"natural"==a.mode?-1:1}return"document"==a.container&&"bottom"==a.side&&"natural"==a.mode?-1:1}),d=g[0],d.coord={},d.side){case"left":case"right":d.coord.top=Math.floor(d.target-d.size.height/2);break;case"bottom":case"top":d.coord.left=Math.floor(d.target-d.size.width/2)}switch(d.side){case"left":d.coord.left=c.geo.origin.windowOffset.left-d.outerSize.width;break;case"right":d.coord.left=c.geo.origin.windowOffset.right+d.distance.horizontal;break;case"top":d.coord.top=c.geo.origin.windowOffset.top-d.outerSize.height;break;case"bottom":d.coord.top=c.geo.origin.windowOffset.bottom+d.distance.vertical}"window"==d.container?"top"==d.side||"bottom"==d.side?d.coord.left<0?c.geo.origin.windowOffset.right-this.__options.minIntersection>=0?d.coord.left=0:d.coord.left=c.geo.origin.windowOffset.right-this.__options.minIntersection-1:d.coord.left>c.geo.window.size.width-d.size.width&&(c.geo.origin.windowOffset.left+this.__options.minIntersection<=c.geo.window.size.width?d.coord.left=c.geo.window.size.width-d.size.width:d.coord.left=c.geo.origin.windowOffset.left+this.__options.minIntersection+1-d.size.width):d.coord.top<0?c.geo.origin.windowOffset.bottom-this.__options.minIntersection>=0?d.coord.top=0:d.coord.top=c.geo.origin.windowOffset.bottom-this.__options.minIntersection-1:d.coord.top>c.geo.window.size.height-d.size.height&&(c.geo.origin.windowOffset.top+this.__options.minIntersection<=c.geo.window.size.height?d.coord.top=c.geo.window.size.height-d.size.height:d.coord.top=c.geo.oriLine truncated
+13 -4
View File
@@ -68,7 +68,13 @@ class FileCache
return FALSE; return FALSE;
} }
$data = unserialize(file_get_contents( $cache_file_path )); try{
$file_contents = file_get_contents($cache_file_path);
$file_ex = explode("\n\n", $file_contents);
$data = unserialize(base64_decode($file_ex[1]));
} catch(Exception $e){
$data = array('ttl'=>1, 'time'=>time() - 1000);
}
if ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl']) if ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl'])
{ {
@@ -135,7 +141,10 @@ class FileCache
'data' => $data 'data' => $data
); );
if ($this->write_file($cache_file_path, serialize($contents))) $cache_content = "<?php if (!defined('_GNUBOARD_')) exit; ?>\n\n";
$cache_content .= base64_encode(serialize($contents));
if ($this->write_file($cache_file_path, $cache_content))
{ {
chmod($cache_file_path, G5_FILE_PERMISSION); chmod($cache_file_path, G5_FILE_PERMISSION);
return TRUE; return TRUE;
@@ -167,7 +176,7 @@ class FileCache
if ($ttl !== null) { if ($ttl !== null) {
$expire = time() + $ttl; $expire = time() + $ttl;
} }
return serialize(array($data, $expire)); return base64_encode(serialize(array($data, $expire)));
} }
/** /**
@@ -181,7 +190,7 @@ class FileCache
*/ */
public function decode($data) public function decode($data)
{ {
return unserialize($data); return unserialize(base64_decode($data));
} }
} }
?> ?>
+49 -6
View File
@@ -116,6 +116,19 @@ function goto_url($url)
// 세션변수 생성 // 세션변수 생성
function set_session($session_name, $value) function set_session($session_name, $value)
{ {
global $g5;
static $check_cookie = null;
if( $check_cookie === null ){
$cookie_session_name = session_name();
if( ! isset($g5['session_cookie_samesite']) && ! ($cookie_session_name && isset($_COOKIE[$cookie_session_name]) && $_COOKIE[$cookie_session_name]) && ! headers_sent() ){
@session_regenerate_id(false);
}
$check_cookie = 1;
}
if (PHP_VERSION < '5.3.0') if (PHP_VERSION < '5.3.0')
session_register($session_name); session_register($session_name);
// PHP 버전별 차이를 없애기 위한 방법 // PHP 버전별 차이를 없애기 위한 방법
@@ -1788,7 +1801,7 @@ function get_table_define($table, $crlf="\n")
$schema_create .= $crlf . ') ENGINE=MyISAM DEFAULT CHARSET=utf8'; $schema_create .= $crlf . ') ENGINE=MyISAM DEFAULT CHARSET=utf8';
return $schema_create; return get_db_create_replace($schema_create);
} // end of the 'PMA_getTableDef()' function } // end of the 'PMA_getTableDef()' function
@@ -2461,7 +2474,7 @@ function add_stylesheet($stylesheet, $order=0)
{ {
global $html_process; global $html_process;
if(trim($stylesheet)) if(trim($stylesheet) && method_exists($html_process, 'merge_stylesheet') )
$html_process->merge_stylesheet($stylesheet, $order); $html_process->merge_stylesheet($stylesheet, $order);
} }
@@ -2469,7 +2482,7 @@ function add_javascript($javascript, $order=0)
{ {
global $html_process; global $html_process;
if(trim($javascript)) if(trim($javascript) && method_exists($html_process, 'merge_javascript') )
$html_process->merge_javascript($javascript, $order); $html_process->merge_javascript($javascript, $order);
} }
@@ -3010,6 +3023,9 @@ function clean_xss_tags($str, $check_entities=0)
$result = str_replace(array('&colon;', '&lpar;', '&rpar;', '&NewLine;', '&Tab;'), '', $result); $result = str_replace(array('&colon;', '&lpar;', '&rpar;', '&NewLine;', '&Tab;'), '', $result);
} }
$result = preg_replace('#([^\p{L}]|^)(?:javascript|jar|applescript|vbscript|vbs|wscript|jscript|behavior|mocha|livescript|view-source)\s*:(?:.*?([/\\\;()\'">]|$))#ius',
'$1$2', $result);
if((string)$result === (string)$str) break; if((string)$result === (string)$str) break;
$str = $result; $str = $result;
@@ -3022,7 +3038,30 @@ function clean_xss_tags($str, $check_entities=0)
// XSS 어트리뷰트 태그 제거 // XSS 어트리뷰트 태그 제거
function clean_xss_attributes($str) function clean_xss_attributes($str)
{ {
$str = preg_replace('#(onabort|onactivate|onafterprint|onafterupdate|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeeditfocus|onbeforepaste|onbeforeprint|onbeforeunload|onbeforeupdate|onblur|onbounce|oncellchange|onchange|onclick|oncontextmenu|oncontrolselect|oncopy|oncut|ondataavaible|ondatasetchanged|ondatasetcomplete|ondblclick|ondeactivate|ondrag|ondragdrop|ondragend|ondragenter|ondragleave|ondragover|ondragstart|ondrop|onerror|onerrorupdate|onfilterupdate|onfinish|onfocus|onfocusin|onfocusout|onhelp|onkeydown|onkeypress|onkeyup|onlayoutcomplete|onload|onlosecapture|onmousedown|onmouseenter|onmouseleave|onmousemove|onmoveout|onmouseover|onmouseup|onmousewheel|onmove|onmoveend|onmovestart|onpaste|onpropertychange|onreadystatechange|onreset|onresize|onresizeend|onresizestart|onrowexit|onrowsdelete|onrowsinserted|onscroll|onselect|onselectionchange|onselectstart|onstart|onstop|onsubmit|onunload)\\s*=\\s*\\\?".*?"#is', '', $str); $xss_attributes_string = 'onAbort|onActivate|onAttribute|onAfterPrint|onAfterScriptExecute|onAfterUpdate|onAnimationCancel|onAnimationEnd|onAnimationIteration|onAnimationStart|onAriaRequest|onAutoComplete|onAutoCompleteError|onAuxClick|onBeforeActivate|onBeforeCopy|onBeforeCut|onBeforeDeactivate|onBeforeEditFocus|onBeforePaste|onBeforePrint|onBeforeScriptExecute|onBeforeUnload|onBeforeUpdate|onBegin|onBlur|onBounce|onCancel|onCanPlay|onCanPlayThrough|onCellChange|onChange|onClick|onClose|onCommand|onCompassNeedsCalibration|onContextMenu|onControlSelect|onCopy|onCueChange|onCut|onDataAvailable|onDataSetChanged|onDataSetComplete|onDblClick|onDeactivate|onDeviceLight|onDeviceMotion|onDeviceOrientation|onDeviceProximity|onDrag|onDragDrop|onDragEnd|onDragEnter|onDragLeave|onDragOver|onDragStart|onDrop|onDurationChange|onEmptied|onEnd|onEnded|onError|onErrorUpdate|onExit|onFilterChange|onFinish|onFocus|onFocusIn|onFocusOut|onFormChange|onFormInput|onFullScreenChange|onFullScreenError|onGotPointerCapture|onHashChange|onHelp|onInput|onInvalid|onKeyDown|onKeyPress|onKeyUp|onLanguageChange|onLayoutComplete|onLoad|onLoadedData|onLoadedMetaData|onLoadStart|onLoseCapture|onLostPointerCapture|onMediaComplete|onMediaError|onMessage|onMouseDown|onMouseEnter|onMouseLeave|onMouseMove|onMouseOut|onMouseOver|onMouseUp|onMouseWheel|onMove|onMoveEnd|onMoveStart|onMozFullScreenChange|onMozFullScreenError|onMozPointerLockChange|onMozPointerLockError|onMsContentZoom|onMsFullScreenChange|onMsFullScreenError|onMsGestureChange|onMsGestureDoubleTap|onMsGestureEnd|onMsGestureHold|onMsGestureStart|onMsGestureTap|onMsGotPointerCapture|onMsInertiaStart|onMsLostPointerCapture|onMsManipulationStateChanged|onMsPointerCancel|onMsPointerDown|onMsPointerEnter|onMsPointerLeave|onMsPointerMove|onMsPointerOut|onMsPointerOver|onMsPointerUp|onMsSiteModeJumpListItemRemoved|onMsThumbnailClick|onOffline|onOnline|onOutOfSync|onPage|onPageHide|onPageShow|onPaste|onPause|onPlay|onPlaying|onPointerCancel|onPointerDown|onPointerEnter|onPointerLeave|onPointerLockChange|onPointerLockError|onPointerMove|onPointerOut|onPointerOver|onPointerUp|onPopState|onProgress|onPropertyChange|onqt_error|onRateChange|onReadyStateChange|onReceived|onRepeat|onReset|onResize|onResizeEnd|onResizeStart|onResume|onReverse|onRowDelete|onRowEnter|onRowExit|onRowInserted|onRowsDelete|onRowsEnter|onRowsExit|onRowsInserted|onScroll|onSearch|onSeek|onSeeked|onSeeking|onSelect|onSelectionChange|onSelectStart|onStalled|onStorage|onStorageCommit|onStart|onStop|onShow|onSyncRestored|onSubmit|onSuspend|onSynchRestored|onTimeError|onTimeUpdate|onTimer|onTrackChange|onTransitionEnd|onToggle|onTouchCancel|onTouchEnd|onTouchLeave|onTouchMove|onTouchStart|onTransitionCancel|onTransitionEnd|onUnload|onURLFlip|onUserProximity|onVolumeChange|onWaiting|onWebKitAnimationEnd|onWebKitAnimationIteration|onWebKitAnimationStart|onWebKitFullScreenChange|onWebKitFullScreenError|onWebKitTransitionEnd|onWheel';
do {
$count = $temp_count = 0;
$str = preg_replace(
'/(.*)(?:' . $xss_attributes_string . ')(?:\s*=\s*)(?:\'(?:.*?)\'|"(?:.*?)")(.*)/ius',
'$1-$2-$3-$4',
$str,
-1,
$temp_count
);
$count += $temp_count;
$str = preg_replace(
'/(.*)(?:' . $xss_attributes_string . ')\s*=\s*(?:[^\s>]*)(.*)/ius',
'$1$2',
$str,
-1,
$temp_count
);
$count += $temp_count;
} while ($count);
return $str; return $str;
} }
@@ -3548,7 +3587,7 @@ function get_member_profile_img($mb_id='', $width='', $height='', $alt='profile_
// 프로필 이미지가 없을때 기본 이미지 // 프로필 이미지가 없을때 기본 이미지
$no_profile_img = (defined('G5_THEME_NO_PROFILE_IMG') && G5_THEME_NO_PROFILE_IMG) ? G5_THEME_NO_PROFILE_IMG : G5_NO_PROFILE_IMG; $no_profile_img = (defined('G5_THEME_NO_PROFILE_IMG') && G5_THEME_NO_PROFILE_IMG) ? G5_THEME_NO_PROFILE_IMG : G5_NO_PROFILE_IMG;
$tmp = array(); $tmp = array();
preg_match( '/src="([^"]*)"/i', $foo, $tmp ); preg_match( '/src="([^"]*)"/i', $no_profile_img, $tmp );
$no_profile_cache = $src = isset($tmp[1]) ? $tmp[1] : G5_IMG_URL.'/no_profile.gif'; $no_profile_cache = $src = isset($tmp[1]) ? $tmp[1] : G5_IMG_URL.'/no_profile.gif';
} }
} }
@@ -3659,7 +3698,7 @@ function is_include_path_check($path='', $is_input='')
// 장태진 @jtjisgod <jtjisgod@gmail.com> 추가 // 장태진 @jtjisgod <jtjisgod@gmail.com> 추가
// 보안 목적 : rar wrapper 차단 // 보안 목적 : rar wrapper 차단
if( stripos($path, 'rar:') !== false || stripos($path, 'php:') !== false || stripos($path, 'zlib:') !== false || stripos($path, 'bzip2:') !== false || stripos($path, 'zip:') !== false || stripos($path, 'data:') !== false || stripos($path, 'phar:') !== false || stripos($path, 'file:') !== false ){ if( stripos($path, 'rar:') !== false || stripos($path, 'php:') !== false || stripos($path, 'zlib:') !== false || stripos($path, 'bzip2:') !== false || stripos($path, 'zip:') !== false || stripos($path, 'data:') !== false || stripos($path, 'phar:') !== false || stripos($path, 'file:') !== false || stripos($path, '://') !== false ){
return false; return false;
} }
@@ -3731,6 +3770,10 @@ function is_include_path_check($path='', $is_input='')
return true; return true;
} }
function filter_input_include_path($path){
return str_replace('//', '/', $path);
}
function option_array_checked($option, $arr=array()){ function option_array_checked($option, $arr=array()){
$checked = ''; $checked = '';
+1 -1
View File
@@ -329,7 +329,7 @@ function get_db_create_replace($sql_str){
function get_class_encrypt(){ function get_class_encrypt(){
static $cache; static $cache;
if( $cache && is_object($obj) ){ if( $cache && is_object($cache) ){
return $cache; return $cache;
} }
+1 -1
View File
@@ -46,7 +46,7 @@ function create_hash($password, $force_compat = false)
{ {
// Generate the salt. // Generate the salt.
if (function_exists('mcrypt_create_iv')) { if (function_exists('mcrypt_create_iv') && version_compare( PHP_VERSION, '7.2' , '<' ) ) {
$salt = base64_encode(mcrypt_create_iv(PBKDF2_COMPAT_SALT_BYTES, MCRYPT_DEV_URANDOM)); $salt = base64_encode(mcrypt_create_iv(PBKDF2_COMPAT_SALT_BYTES, MCRYPT_DEV_URANDOM));
} elseif (@file_exists('/dev/urandom') && $fp = @fopen('/dev/urandom', 'r')) { } elseif (@file_exists('/dev/urandom') && $fp = @fopen('/dev/urandom', 'r')) {
$salt = base64_encode(fread($fp, PBKDF2_COMPAT_SALT_BYTES)); $salt = base64_encode(fread($fp, PBKDF2_COMPAT_SALT_BYTES));
+4 -1
View File
@@ -306,8 +306,11 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
if(!$thumb_height) { if(!$thumb_height) {
$thumb_height = round(($thumb_width * $size[1]) / $size[0]); $thumb_height = round(($thumb_width * $size[1]) / $size[0]);
} else { } else {
if($size[0] < $thumb_width || $size[1] < $thumb_height) if($crop_mode === 'center' && ($size[0] > $thumb_width || $size[1] > $thumb_height)){
$is_large = true;
} else if($size[0] < $thumb_width || $size[1] < $thumb_height) {
$is_large = false; $is_large = false;
}
} }
} else { } else {
if($thumb_height) { if($thumb_height) {
+8 -5
View File
@@ -113,15 +113,17 @@ function short_url_clean($string_url, $add_qry=''){
$array_page_names = run_replace('url_clean_page_names', array('board', 'write', 'content')); $array_page_names = run_replace('url_clean_page_names', array('board', 'write', 'content'));
if( strpos($string_url, G5_BBS_URL) === false || ! in_array($page_name, $array_page_names) ){ //게시판이 아니면 리턴 if( stripos(preg_replace('/^https?:/i', '', $string_url), preg_replace('/^https?:/i', '', G5_BBS_URL)) === false || ! in_array($page_name, $array_page_names) ){ //게시판이 아니면 리턴
return $string_url; return run_replace('false_short_url_clean', $string_url, $url, $page_name, $array_page_names);
} }
$return_url = ''; $return_url = '';
parse_str($url['query'], $vars); parse_str($url['query'], $vars);
/*
// 예) Array ( [scheme] => http [host] => sir.kr [path] => /bbs/board.php [query] => wr_id=1110870&bo_table=cm_free&cpage=1 [fragment] => c_1110946 ) // 예) Array ( [scheme] => http [host] => sir.kr [path] => /bbs/board.php [query] => wr_id=1110870&bo_table=cm_free&cpage=1 [fragment] => c_1110946 )
//while(list($k,$v) = each($vars)) $page_name .= "/".$v; foreach($vars as $k => $v) { $page_name .= "/".$v; }
*/
if( $page_name === 'write' ){ if( $page_name === 'write' ){
$vars['action'] = 'write'; $vars['action'] = 'write';
@@ -174,7 +176,7 @@ function short_url_clean($string_url, $add_qry=''){
$add_param .= $add_param ? '&amp;'.$add_qry : '?'.$add_qry; $add_param .= $add_param ? '&amp;'.$add_qry : '?'.$add_qry;
} }
while(list($k,$v) = each($s)) $return_url .= '/'.$v; foreach($s as $k => $v) { $return_url .= '/'.$v; }
return $host.$return_url.$add_param.$fragment; return $host.$return_url.$add_param.$fragment;
} }
@@ -227,7 +229,8 @@ function exist_seo_url($type, $seo_title, $write_table, $sql_id=0){
global $g5; global $g5;
$exists_title = ''; $exists_title = '';
$sql_id = preg_replace('/[^a-z0-9_]/i', '', $sql_id); $sql_id = preg_replace('/[^a-z0-9_\-]/i', '', $sql_id);
// 영카트 상품코드의 경우 - 하이픈이 들어가야 함
if( $type === 'bbs' ){ if( $type === 'bbs' ){
$sql = "select wr_seo_title FROM {$write_table} WHERE wr_seo_title = '".sql_real_escape_string($seo_title)."' AND wr_id <> '$sql_id' limit 1"; $sql = "select wr_seo_title FROM {$write_table} WHERE wr_seo_title = '".sql_real_escape_string($seo_title)."' AND wr_id <> '$sql_id' limit 1";
+1 -1
View File
@@ -299,7 +299,7 @@
.bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""} .bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""}
.bo_vc_w .bo_vc_secret {display:block} .bo_vc_w .bo_vc_secret {display:block}
#bo_vc_send_sns {display:block;float:left} #bo_vc_send_sns {display:block;margin-bottom:10px}
#bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1} #bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1}
#bo_vc_sns:after {display:block;visibility:hidden;clear:both;content:""} #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 li {float:left;margin:0 5px 0 0}
+1 -1
View File
@@ -76,7 +76,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php if ($is_email) { ?> <?php if ($is_email) { ?>
<div class="write_div"> <div class="write_div">
<label for="wr_email" class="sound_only">이메일</label> <label for="wr_email" class="sound_only">이메일</label>
<input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" email" maxlength="100" placeholder="이메일"> <input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" maxlength="100" placeholder="이메일">
</div> </div>
<?php } ?> <?php } ?>
+1 -1
View File
@@ -331,7 +331,7 @@
.bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""} .bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""}
.bo_vc_w .bo_vc_secret {display:block} .bo_vc_w .bo_vc_secret {display:block}
#bo_vc_send_sns {display:block;float:left} #bo_vc_send_sns {display:block;margin-bottom:10px}
#bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1} #bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1}
#bo_vc_sns:after {display:block;visibility:hidden;clear:both;content:""} #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 li {float:left;margin:0 5px 0 0}
+1 -1
View File
@@ -76,7 +76,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php if ($is_email) { ?> <?php if ($is_email) { ?>
<div class="write_div"> <div class="write_div">
<label for="wr_email" class="sound_only">이메일</label> <label for="wr_email" class="sound_only">이메일</label>
<input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" email" maxlength="100" placeholder="이메일"> <input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" maxlength="100" placeholder="이메일">
</div> </div>
<?php } ?> <?php } ?>
+1
View File
@@ -5,4 +5,5 @@
.ctt_admin {margin:0 5px;text-align:right} .ctt_admin {margin:0 5px;text-align:right}
#ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden} #ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#ctt_con {padding:10px 0} #ctt_con {padding:10px 0}
#ctt_con img{max-width:100%;height:auto}
.ctt_img {text-align:center} .ctt_img {text-align:center}
@@ -1,6 +1,43 @@
jQuery(function($){ jQuery(function($){
$(document).ready(function(){ $(document).ready(function(){
$(".owl-carousel-wrap .sv_member").off('click').off('focusin');
if ($.fn.tooltipster) {
var $member_menu_tip = $('.owl-carousel-wrap .sv_member').tooltipster({
theme: 'tooltipster-sir',
trigger: 'custom',
contentAsHTML: true,
interactive: true,
distance: 5,
position:'bottom',
coord: {
left: 20,
bottom: 0
},
triggerOpen: {
click: true,
tap: true // For touch device
},
triggerClose: {
click: true,
scroll: true,
tap: true
},
functionBefore: function(instance, helper) {
var content = $(helper.origin).parent().find('.sv')[0].outerHTML;
instance.content(content);
},
functionReady : function(instance, helper) {
$(helper.tooltip).find(".tooltipster-arrow").css({left:16});
},
functionPosition: function(instance, helper, position){
position.coord.left += 7;
return position;
}
});
}
var carousels = [], var carousels = [],
is_loop = true; is_loop = true;
@@ -39,6 +76,16 @@ jQuery(function($){
}, },
}); });
carousels['sel' + index].on('changed.owl.carousel', function(event) {
if ($.fn.tooltipster) {
var instances = $.tooltipster.instances();
$.each(instances, function(i, instance){
instance.close();
});
}
});
$this.on("click", ".lt_page_next", function(e) { $this.on("click", ".lt_page_next", function(e) {
e.preventDefault(); e.preventDefault();
carousels['sel' + index].trigger('next.owl.carousel'); carousels['sel' + index].trigger('next.owl.carousel');
+6 -3
View File
@@ -3,14 +3,17 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once(G5_LIB_PATH.'/thumbnail.lib.php'); include_once(G5_LIB_PATH.'/thumbnail.lib.php');
add_javascript('<script src="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.js"></script>', 10); add_javascript('<script src="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.js"></script>', 10);
add_javascript('<script src="'.$latest_skin_url.'/latest.carousel.js"></script>', 11);
add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.css">', 10); add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.css">', 10);
add_javascript('<script src="'.G5_JS_URL.'/tooltipster/tooltipster.bundle.min.js"></script>', 11);
add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/tooltipster/tooltipster.bundle.min.css">', 11);
add_javascript('<script src="'.$latest_skin_url.'/latest.carousel.js?v2"></script>', 12);
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨 // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0); add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css?v2">', 1);
$thumb_width = 138; $thumb_width = 138;
$thumb_height = 80; $thumb_height = 80;
$list_count = count($list); $list_count = (is_array($list) && $list) ? count($list) : 0;
$divisor_count = 4; $divisor_count = 4;
$start_page_num = $list_count ? '1' : '0'; $start_page_num = $list_count ? '1' : '0';
$is_show_next_prev = ($list_count > 4) ? 1 : 0; $is_show_next_prev = ($list_count > 4) ? 1 : 0;
+7 -1
View File
@@ -30,7 +30,13 @@
.lt .comment_icon {background:url('./img/icon_comment.png') no-repeat 50% 50%;display:inline-block;width:20px;height:28px;text-indent:-999px;overflow:hidden;vertical-align:top;background-size:70%;margin:0 0px 0 5px} .lt .comment_icon {background:url('./img/icon_comment.png') no-repeat 50% 50%;display:inline-block;width:20px;height:28px;text-indent:-999px;overflow:hidden;vertical-align:top;background-size:70%;margin:0 0px 0 5px}
.lt .empty_li {text-align:center;padding:40px 0;color:#777} .lt .empty_li {text-align:center;padding:40px 0;color:#777}
.lt .owl-carousel .owl-item .profile_img img{width:auto} .lt .owl-carousel .owl-item .profile_img img{width:auto;display:inline}
.tooltipster-content .sv a{display:block;padding:0 10px;line-height:30px;font-weight:normal;color:#bbb}
.tooltipster-content .sv a:hover{background:#000;color:#fff}
.tooltipster-sidetip.tooltipster-sir .tooltipster-content{padding:0}
.tooltipster-sidetip.tooltipster-sir .tooltipster-box{border:0 none;background:#333;border-radius:0}
.tooltipster-sidetip.tooltipster-sir.tooltipster-bottom .tooltipster-arrow-border, .tooltipster-sidetip.tooltipster-sir.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#333}
.lt_page {background:#fff;text-align:center;padding:10px 15px;line-height:25px;border-bottom:1px solid #e5ecee} .lt_page {background:#fff;text-align:center;padding:10px 15px;line-height:25px;border-bottom:1px solid #e5ecee}
.lt_page button {display:inline-block;background:#fff;width:25px;height:25px;border:1px solid #dbdee6;text-align:center;color:#cdcdce} .lt_page button {display:inline-block;background:#fff;width:25px;height:25px;border:1px solid #dbdee6;text-align:center;color:#cdcdce}
+3 -3
View File
@@ -3,14 +3,14 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨 // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0); add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
$list_count = (is_array($list) && $list) ? count($list) : 0;
?> ?>
<div class="cm_lt"> <div class="cm_lt">
<h2 class="cm_lt_title"><a href="<?php echo get_pretty_url($bo_table); ?>">최신댓글</a></h2> <h2 class="cm_lt_title"><a href="<?php echo get_pretty_url($bo_table); ?>">최신댓글</a></h2>
<ul> <ul>
<?php <?php
$count = count($list); for ($i=0; $i<$list_count; $i++) {
for ($i=0; $i<$count; $i++) {
?> ?>
<li> <li>
<span class="cm_lt_nick"><?php echo get_member_profile_img($member['mb_id']); ?></span> <span class="cm_lt_nick"><?php echo get_member_profile_img($member['mb_id']); ?></span>
@@ -24,7 +24,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">',
<?php <?php
} }
if($i ==0) if($list_count ==0)
echo '<li class="empty_li">게시물이 없습니다.</li>'.PHP_EOL; echo '<li class="empty_li">게시물이 없습니다.</li>'.PHP_EOL;
?> ?>
</ul> </ul>
+3 -2
View File
@@ -4,12 +4,13 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨 // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0); add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10); 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"> <div class="notice ft_cnt">
<h2><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2> <h2><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
<ul> <ul>
<?php for ($i=0; $i<count($list); $i++) { ?> <?php for ($i=0; $i<$list_count; $i++) { ?>
<li> <li>
<?php <?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_secret']) echo "<span class=\"lock_icon\"><i class=\"fa fa-lock\" aria-hidden=\"true\"></i></span> ";
@@ -35,7 +36,7 @@ add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10);
?> ?>
</li> </li>
<?php } ?> <?php } ?>
<?php if (count($list) == 0) { //게시물이 없을 때 ?> <?php if ($list_count == 0) { //게시물이 없을 때 ?>
<li class="empty_li">게시물이 없습니다.</li> <li class="empty_li">게시물이 없습니다.</li>
<?php } ?> <?php } ?>
</ul> </ul>
+1 -1
View File
@@ -35,7 +35,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<a href="<?php echo $list[$i]['view_href'] ?>"><?php echo $memo_preview; ?></a> <a href="<?php echo $list[$i]['view_href'] ?>"><?php echo $memo_preview; ?></a>
</div> </div>
</div> </div>
<?php// 쪽지 읽은 시간 echo $list[$i]['read_datetime'] ?> <?php /* 쪽지 읽은 시간 echo $list[$i]['read_datetime']; */ ?>
<a href="<?php echo $list[$i]['del_href'] ?>" onclick="del(this.href); return false;" class="memo_del"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a> <a href="<?php echo $list[$i]['del_href'] ?>" onclick="del(this.href); return false;" class="memo_del"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a>
</li> </li>
<?php } ?> <?php } ?>
+1 -1
View File
@@ -22,7 +22,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<li> <li>
<label for="me_recv_mb_id" class="sound_only">받는 회원아이디<strong>필수</strong></label> <label for="me_recv_mb_id" class="sound_only">받는 회원아이디<strong>필수</strong></label>
<input type="text" name="me_recv_mb_id" value="<?php echo $me_recv_mb_id; ?>" id="me_recv_mb_id" required class="frm_input full_input required" size="47" placeholder="받는 회원닉네임"> <input type="text" name="me_recv_mb_id" value="<?php echo $me_recv_mb_id; ?>" id="me_recv_mb_id" required class="frm_input full_input required" size="47" placeholder="받는 회원아이디">
<span class="frm_info">여러 회원에게 보낼때는 컴마(,)로 구분하세요. <span class="frm_info">여러 회원에게 보낼때는 컴마(,)로 구분하세요.
<?php if ($config['cf_memo_send_point']) { ?><br>쪽지 보낼때 회원당 <?php echo number_format($config['cf_memo_send_point']); ?>점의 포인트를 차감합니다.<?php } ?> <?php if ($config['cf_memo_send_point']) { ?><br>쪽지 보낼때 회원당 <?php echo number_format($config['cf_memo_send_point']); ?>점의 포인트를 차감합니다.<?php } ?>
</span> </span>
+1 -1
View File
@@ -39,7 +39,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<li class="memo_view_nick"><?php echo $nick ?></li> <li class="memo_view_nick"><?php echo $nick ?></li>
<li class="memo_view_date"><span class="sound_only"><?php echo $kind_date ?>시간</span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $memo['me_send_datetime'] ?></li> <li class="memo_view_date"><span class="sound_only"><?php echo $kind_date ?>시간</span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $memo['me_send_datetime'] ?></li>
<li class="memo_op_btn list_btn"><a href="<?php echo $list_link ?>" class="btn_b01 btn"><i class="fa fa-list" aria-hidden="true"></i><span class="sound_only">목록</span></a></li> <li class="memo_op_btn list_btn"><a href="<?php echo $list_link ?>" class="btn_b01 btn"><i class="fa fa-list" aria-hidden="true"></i><span class="sound_only">목록</span></a></li>
<li class="memo_op_btn del_btn"><a href="<?php echo $list[$i]['del_href'] ?>" onclick="del(this.href); return false;" class="memo_del btn_b01 btn"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a></li> <li class="memo_op_btn del_btn"><a href="<?php echo $del_link; ?>" onclick="del(this.href); return false;" class="memo_del btn_b01 btn"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a></li>
</ul> </ul>
<div class="memo_btn"> <div class="memo_btn">
<?php if($prev_link) { ?> <?php if($prev_link) { ?>
+1 -1
View File
@@ -151,7 +151,7 @@ if(!$view['qa_type']) {
</a> </a>
</div> </div>
<div class="li_info"> <div class="li_info">
<span class="li_stat <?php echo ($list[$i]['qa_status'] ? 'txt_done' : 'txt_rdy'); ?>"><?php echo ($rel_list[$i]['qa_status'] ? '답변완료' : '답변대기'); ?></span> <span class="li_stat <?php echo ($rel_list[$i]['qa_status'] ? 'txt_done' : 'txt_rdy'); ?>"><?php echo ($rel_list[$i]['qa_status'] ? '답변완료' : '답변대기'); ?></span>
<span class="li_date"><?php echo $rel_list[$i]['date']; ?></span> <span class="li_date"><?php echo $rel_list[$i]['date']; ?></span>
</div> </div>
</li> </li>
+1
View File
@@ -4,6 +4,7 @@ www.youtube(?:-nocookie)?.com/
serviceapi.rmcnmv.naver.com/ serviceapi.rmcnmv.naver.com/
videofarm.daum.net/ videofarm.daum.net/
player.vimeo.com/ player.vimeo.com/
www.google.com/
maps.google.com/ maps.google.com/
play.afreeca.com/ play.afreeca.com/
v.nate.com/ v.nate.com/
+1 -2
View File
@@ -1,7 +1,6 @@
<? <?php
// 캡챠 세션값과 비교하여 맞는지? 틀린지? 결과값을 출력합니다. // 캡챠 세션값과 비교하여 맞는지? 틀린지? 결과값을 출력합니다.
include_once("_common.php"); include_once("_common.php");
//header("Content-Type: text/html; charset=$g4[charset]");
$count = (int)get_session("ss_captcha_count"); $count = (int)get_session("ss_captcha_count");
if ($count >= 5) { // 설정값 이상이면 자동등록방지 입력 문자가 맞아도 오류 처리 if ($count >= 5) { // 설정값 이상이면 자동등록방지 입력 문자가 맞아도 오류 처리
+10 -10
View File
@@ -21,15 +21,15 @@ require('./hpcert.config.php');
**************************************************************************/ **************************************************************************/
/* 공통 리턴 항목 */ /* 공통 리턴 항목 */
//$idcfMbrComCd = $_POST['idcf_mbr_com_cd']; // 고객사코드 //$idcfMbrComCd = $_REQUEST['idcf_mbr_com_cd']; // 고객사코드
$idcfMbrComCd = $memId; $idcfMbrComCd = $memId;
$hsCertSvcTxSeqno = $_POST['hs_cert_svc_tx_seqno']; // 거래번호 $hsCertSvcTxSeqno = $_REQUEST['hs_cert_svc_tx_seqno']; // 거래번호
$rqstSiteNm = $_POST['rqst_site_nm']; // 접속도메인 $rqstSiteNm = $_REQUEST['rqst_site_nm']; // 접속도메인
$hsCertRqstCausCd = $_POST['hs_cert_rqst_caus_cd']; // 인증요청사유코드 2byte (00:회원가입, 01:성인인증, 02:회원정보수정, 03:비밀번호찾기, 04:상품구매, 99:기타) $hsCertRqstCausCd = $_REQUEST['hs_cert_rqst_caus_cd']; // 인증요청사유코드 2byte (00:회원가입, 01:성인인증, 02:회원정보수정, 03:비밀번호찾기, 04:상품구매, 99:기타)
$resultCd = $_POST['result_cd']; // 결과코드 $resultCd = $_REQUEST['result_cd']; // 결과코드
$resultMsg = $_POST['result_msg']; // 결과메세지 $resultMsg = $_REQUEST['result_msg']; // 결과메세지
$certDtTm = $_POST['cert_dt_tm']; // 인증일시 $certDtTm = $_REQUEST['cert_dt_tm']; // 인증일시
if($resultCd != 'B000') { if($resultCd != 'B000') {
alert_close('휴대폰 본인확인 중 오류가 발생했습니다. 오류코드 : '.$resultCd.'\\n\\n문의는 코리아크레딧뷰로 고객센터 02-708-1000 로 해주십시오.'); alert_close('휴대폰 본인확인 중 오류가 발생했습니다. 오류코드 : '.$resultCd.'\\n\\n문의는 코리아크레딧뷰로 고객센터 02-708-1000 로 해주십시오.');
@@ -38,15 +38,15 @@ if($resultCd != 'B000') {
/************************************************************************** /**************************************************************************
* 모듈 호출 ; 생년월일 본인 확인서비스 결과 데이터를 복호화한다. * 모듈 호출 ; 생년월일 본인 확인서비스 결과 데이터를 복호화한다.
**************************************************************************/ **************************************************************************/
$encInfo = $_POST['encInfo']; $encInfo = $_REQUEST['encInfo'];
if(preg_match('~[^0-9a-zA-Z+/=]~', $encInfo, $match)) {echo "입력 값 확인이 필요합니다"; exit;} if(preg_match('~[^0-9a-zA-Z+/=]~', $encInfo, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
//KCB서버 공개키 //KCB서버 공개키
$WEBPUBKEY = trim($_POST['WEBPUBKEY']); $WEBPUBKEY = trim($_REQUEST['WEBPUBKEY']);
if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBPUBKEY, $match)) {echo "입력 값 확인이 필요합니다"; exit;} if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBPUBKEY, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
//KCB서버 서명값 //KCB서버 서명값
$WEBSIGNATURE = trim($_POST['WEBSIGNATURE']); $WEBSIGNATURE = trim($_REQUEST['WEBSIGNATURE']);
if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBSIGNATURE, $match)) {echo "입력 값 확인이 필요합니다"; exit;} if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBSIGNATURE, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
// ######################################################################## // ########################################################################
+3 -3
View File
@@ -14,15 +14,15 @@ foreach($check_arrays as $key){
require('./ipin.config.php'); require('./ipin.config.php');
//아이핀팝업에서 조회한 PERSONALINFO이다. //아이핀팝업에서 조회한 PERSONALINFO이다.
@$encPsnlInfo = $_POST["encPsnlInfo"]; @$encPsnlInfo = $_REQUEST["encPsnlInfo"];
if(preg_match('~[^0-9a-zA-Z+/=]~', $encPsnlInfo, $match)) {echo "입력 값 확인이 필요합니다"; exit;} if(preg_match('~[^0-9a-zA-Z+/=]~', $encPsnlInfo, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
//KCB서버 공개키 //KCB서버 공개키
@$WEBPUBKEY = trim($_POST["WEBPUBKEY"]); @$WEBPUBKEY = trim($_REQUEST["WEBPUBKEY"]);
if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBPUBKEY, $match)) {echo "입력 값 확인이 필요합니다"; exit;} if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBPUBKEY, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
//KCB서버 서명값 //KCB서버 서명값
@$WEBSIGNATURE = trim($_POST["WEBSIGNATURE"]); @$WEBSIGNATURE = trim($_REQUEST["WEBSIGNATURE"]);
if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBSIGNATURE, $match)) {echo "입력 값 확인이 필요합니다"; exit;} if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBSIGNATURE, $match)) {echo "입력 값 확인이 필요합니다"; exit;}
//아이핀 서버와 통신을 위한 키파일 생성 //아이핀 서버와 통신을 위한 키파일 생성
+6 -3
View File
@@ -26,7 +26,7 @@ class Hybrid_Providers_Kakao extends Hybrid_Provider_Model_OAuth2
parent::initialize(); parent::initialize();
// Provider API end-points // Provider API end-points
$this->api->api_base_url = "https://kapi.kakao.com/v1/"; $this->api->api_base_url = "https://kapi.kakao.com/v2/";
$this->api->authorize_url = "https://kauth.kakao.com/oauth/authorize"; $this->api->authorize_url = "https://kauth.kakao.com/oauth/authorize";
$this->api->token_url = "https://kauth.kakao.com/oauth/token"; $this->api->token_url = "https://kauth.kakao.com/oauth/token";
@@ -72,7 +72,8 @@ class Hybrid_Providers_Kakao extends Hybrid_Provider_Model_OAuth2
*/ */
function getUserProfile() function getUserProfile()
{ {
$params = array('property_keys'=>'kaccount_email'); //$params = array('property_keys'=>'kaccount_email'); // v1 parameter
$params = array('property_keys'=>array('kakao_account.email')); // v2 parameter
$this->api->decode_json = false; $this->api->decode_json = false;
$this->api->curl_header = array( 'Authorization: Bearer ' . $this->api->access_token ); $this->api->curl_header = array( 'Authorization: Bearer ' . $this->api->access_token );
@@ -86,7 +87,9 @@ class Hybrid_Providers_Kakao extends Hybrid_Provider_Model_OAuth2
$this->user->profile->identifier = @ $data->id; $this->user->profile->identifier = @ $data->id;
$this->user->profile->displayName = @ $data->properties->nickname; $this->user->profile->displayName = @ $data->properties->nickname;
$this->user->profile->photoURL = @ $data->properties->thumbnail_image; $this->user->profile->photoURL = @ $data->properties->thumbnail_image;
$email = @ $data->kaccount_email; //$email = @ $data->properties->kaccount_email; // v1 version
$email = @ $data->kakao_account->email; // v2 version
if( $email ){ if( $email ){
$this->user->profile->email = $email; $this->user->profile->email = $email;
+5
View File
@@ -53,6 +53,7 @@ if( ! isset($mb_password) || ! $mb_password ){
} }
if ($msg = valid_mb_id($mb_id)) alert($msg, "", true, true);
if ($msg = empty_mb_name($mb_name)) alert($msg, "", true, true); if ($msg = empty_mb_name($mb_name)) alert($msg, "", true, true);
if ($msg = empty_mb_nick($mb_nick)) alert($msg, "", true, true); if ($msg = empty_mb_nick($mb_nick)) alert($msg, "", true, true);
if ($msg = empty_mb_email($mb_email)) alert($msg, "", true, true); if ($msg = empty_mb_email($mb_email)) alert($msg, "", true, true);
@@ -68,6 +69,10 @@ if ($msg = exist_mb_id($mb_id)) alert($msg);
if ($msg = exist_mb_nick($mb_nick, $mb_id)) alert($msg, "", true, true); if ($msg = exist_mb_nick($mb_nick, $mb_id)) alert($msg, "", true, true);
if ($msg = exist_mb_email($mb_email, $mb_id)) alert($msg, "", true, true); if ($msg = exist_mb_email($mb_email, $mb_id)) alert($msg, "", true, true);
if( $mb = get_member($mb_id) ){
alert("이미 등록된 회원이 존재합니다.", G5_URL);
}
$data = array( $data = array(
'mb_id' => $mb_id, 'mb_id' => $mb_id,
'mb_password' => get_encrypt_string($mb_password), 'mb_password' => get_encrypt_string($mb_password),
+2 -2
View File
@@ -120,7 +120,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php } ?> <?php } ?>
<?php if ($nogood_href) { ?> <?php if ($nogood_href) { ?>
<span class="bo_v_act_gng"> <span class="bo_v_act_gng">
<a href="<?php echo $nogood_href.'&amp;'.$qstr ?>" id="nogood_button" class="bo_v_nogood"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></a> <a href="<?php echo $nogood_href.'&amp;'.$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> <b id="bo_v_act_nogood"></b>
</span> </span>
<?php } ?> <?php } ?>
@@ -130,7 +130,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
?> ?>
<div id="bo_v_act"> <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_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-up" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></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> </div>
<?php <?php
} }
+2 -2
View File
@@ -120,7 +120,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php } ?> <?php } ?>
<?php if ($nogood_href) { ?> <?php if ($nogood_href) { ?>
<span class="bo_v_act_gng"> <span class="bo_v_act_gng">
<a href="<?php echo $nogood_href.'&amp;'.$qstr ?>" id="nogood_button" class="bo_v_nogood"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></strong></a> <a href="<?php echo $nogood_href.'&amp;'.$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> <b id="bo_v_act_nogood"></b>
</span> </span>
<?php } ?> <?php } ?>
@@ -130,7 +130,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
?> ?>
<div id="bo_v_act"> <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_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-up" aria-hidden="true"></i><span class="sound_only">비추천</span><strong><?php echo number_format($view['wr_nogood']) ?></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> </div>
<?php <?php
} }
+3 -2
View File
@@ -3,12 +3,13 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨 // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0); add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
$list_count = (is_array($list) && $list) ? count($list) : 0;
?> ?>
<div class="lat"> <div class="lat">
<h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2> <h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
<ul> <ul>
<?php for ($i=0; $i<count($list); $i++) { ?> <?php for ($i=0; $i<$list_count; $i++) { ?>
<li class="basic_li"> <li class="basic_li">
<?php <?php
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i><span class=\"sound_only\">비밀글</span> "; if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i><span class=\"sound_only\">비밀글</span> ";
@@ -40,7 +41,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">',
</div> </div>
</li> </li>
<?php } ?> <?php } ?>
<?php if (count($list) == 0) { //게시물이 없을 때 ?> <?php if ($list_count == 0) { //게시물이 없을 때 ?>
<li class="empty_li">게시물이 없습니다.</li> <li class="empty_li">게시물이 없습니다.</li>
<?php } ?> <?php } ?>
</ul> </ul>
+2
View File
@@ -17,6 +17,8 @@
.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-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 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 {padding:10px 0}
.lt_info .lt_nick {} .lt_info .lt_nick {}
.lt_info .lt_date {color:#888} .lt_info .lt_date {color:#888}
+3 -2
View File
@@ -4,12 +4,13 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨 // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0); add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10); 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"> <div class="notice ft_cnt">
<h2><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2> <h2><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
<ul> <ul>
<?php for ($i=0; $i<count($list); $i++) { ?> <?php for ($i=0; $i<$list_count; $i++) { ?>
<li> <li>
<?php <?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_secret']) echo "<span class=\"lock_icon\"><i class=\"fa fa-lock\" aria-hidden=\"true\"></i></span> ";
@@ -35,7 +36,7 @@ add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10);
?> ?>
</li> </li>
<?php } ?> <?php } ?>
<?php if (count($list) == 0) { //게시물이 없을 때 ?> <?php if ($list_count == 0) { //게시물이 없을 때 ?>
<li class="empty_li">게시물이 없습니다.</li> <li class="empty_li">게시물이 없습니다.</li>
<?php } ?> <?php } ?>
</ul> </ul>
+3 -2
View File
@@ -6,13 +6,14 @@ include_once(G5_LIB_PATH.'/thumbnail.lib.php');
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0); add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
$thumb_width = 210; $thumb_width = 210;
$thumb_height = 150; $thumb_height = 150;
$list_count = (is_array($list) && $list) ? count($list) : 0;
?> ?>
<div class="pic_lt"> <div class="pic_lt">
<h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2> <h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
<ul> <ul>
<?php <?php
for ($i=0; $i<count($list); $i++) { for ($i=0; $i<$list_count; $i++) {
$thumb = get_list_thumbnail($bo_table, $list[$i]['wr_id'], $thumb_width, $thumb_height, false, true); $thumb = get_list_thumbnail($bo_table, $list[$i]['wr_id'], $thumb_width, $thumb_height, false, true);
if($thumb['src']) { if($thumb['src']) {
@@ -56,7 +57,7 @@ $thumb_height = 150;
</div> </div>
</li> </li>
<?php } ?> <?php } ?>
<?php if (count($list) == 0) { //게시물이 없을 때 ?> <?php if ($list_count == 0) { //게시물이 없을 때 ?>
<li class="empty_li">게시물이 없습니다.</li> <li class="empty_li">게시물이 없습니다.</li>
<?php } ?> <?php } ?>
</ul> </ul>
+1
View File
@@ -22,6 +22,7 @@
.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-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 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 {padding:10px 0}
.lt_info .lt_nick {} .lt_info .lt_nick {}
+3 -2
View File
@@ -6,13 +6,14 @@ include_once(G5_LIB_PATH.'/thumbnail.lib.php');
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0); add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
$thumb_width = 297; $thumb_width = 297;
$thumb_height = 212; $thumb_height = 212;
$list_count = (is_array($list) && $list) ? count($list) : 0;
?> ?>
<div class="pic_li_lt"> <div class="pic_li_lt">
<h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2> <h2 class="lat_title"><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
<ul> <ul>
<?php <?php
for ($i=0; $i<count($list); $i++) { for ($i=0; $i<$list_count; $i++) {
$img_link_html = ''; $img_link_html = '';
@@ -63,7 +64,7 @@ $thumb_height = 212;
</div> </div>
</li> </li>
<?php } ?> <?php } ?>
<?php if (count($list) == 0) { //게시물이 없을 때 ?> <?php if ($list_count == 0) { //게시물이 없을 때 ?>
<li class="empty_li">게시물이 없습니다.</li> <li class="empty_li">게시물이 없습니다.</li>
<?php } ?> <?php } ?>
</ul> </ul>
+2
View File
@@ -23,6 +23,8 @@
.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-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 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 {padding:10px 0}
.lt_info .lt_nick {} .lt_info .lt_nick {}
.lt_info .lt_date {color:#888} .lt_info .lt_date {color:#888}
+1 -1
View File
@@ -39,7 +39,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<li class="memo_view_nick"><?php echo $nick ?></li> <li class="memo_view_nick"><?php echo $nick ?></li>
<li class="memo_view_date"><span class="sound_only"><?php echo $kind_date ?>시간</span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $memo['me_send_datetime'] ?></li> <li class="memo_view_date"><span class="sound_only"><?php echo $kind_date ?>시간</span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $memo['me_send_datetime'] ?></li>
<li class="memo_op_btn list_btn"><a href="<?php echo $list_link ?>" class="btn_b01 btn"><i class="fa fa-list" aria-hidden="true"></i><span class="sound_only">목록</span></a></li> <li class="memo_op_btn list_btn"><a href="<?php echo $list_link ?>" class="btn_b01 btn"><i class="fa fa-list" aria-hidden="true"></i><span class="sound_only">목록</span></a></li>
<li class="memo_op_btn del_btn"><a href="<?php echo $list[$i]['del_href'] ?>" onclick="del(this.href); return false;" class="memo_del btn_b01 btn"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a></li> <li class="memo_op_btn del_btn"><a href="<?php echo $del_link; ?>" onclick="del(this.href); return false;" class="memo_del btn_b01 btn"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a></li>
</ul> </ul>
<div class="memo_btn"> <div class="memo_btn">
<?php if($prev_link) { ?> <?php if($prev_link) { ?>
+4 -2
View File
@@ -98,15 +98,17 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<?php } ?> <?php } ?>
<li> <li>
<label for="reg_mb_email">E-mail<strong class="sound_only">필수</strong></label> <label for="reg_mb_email">E-mail<strong class="sound_only">필수</strong>
<?php if ($config['cf_use_email_certify']) { ?> <?php if ($config['cf_use_email_certify']) { ?>
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button> <button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">이미지 크기는 가 <span class="tooltip">
<?php if ($w=='') { echo "E-mail 로 발송된 내용을 확인한 후 인증하셔야 회원가입이 완료됩니다."; } ?> <?php if ($w=='') { echo "E-mail 로 발송된 내용을 확인한 후 인증하셔야 회원가입이 완료됩니다."; } ?>
<?php if ($w=='u') { echo "E-mail 주소를 변경하시면 다시 인증하셔야 합니다."; } ?> <?php if ($w=='u') { echo "E-mail 주소를 변경하시면 다시 인증하셔야 합니다."; } ?>
</span> </span>
<?php } ?> <?php } ?>
</label>
<input type="hidden" name="old_email" value="<?php echo $member['mb_email'] ?>"> <input type="hidden" name="old_email" value="<?php echo $member['mb_email'] ?>">
<input type="text" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" required class="frm_input email full_input required" size="70" maxlength="100" placeholder="E-mail"> <input type="text" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" required class="frm_input email full_input required" size="70" maxlength="100" placeholder="E-mail">
+1
View File
@@ -231,6 +231,7 @@
#memo_list .memo_datetime {font-size:0.92em;color:#888d92} #memo_list .memo_datetime {font-size:0.92em;color:#888d92}
#memo_list .memo_del {position:absolute;right:15px;top:15px;padding:10px;color:#c7c9cb;font-size:1.4em} #memo_list .memo_del {position:absolute;right:15px;top:15px;padding:10px;color:#c7c9cb;font-size:1.4em}
#memo_list .memo_cnt {margin-top:5px;font-weight:normal;display:inline-block;font-size:1.2em} #memo_list .memo_cnt {margin-top:5px;font-weight:normal;display:inline-block;font-size:1.2em}
#memo_list .pg_wrap {margin-top:10px;width:100%;float:inherit;text-align:center}
#memo_view_contents {margin-bottom:20px;border-top:1px solid #ececec;border-bottom:1px solid #ececec} #memo_view_contents {margin-bottom:20px;border-top:1px solid #ececec;border-bottom:1px solid #ececec}
#memo_view_contents h2 {position:absolute;font-size:0;line-height:0;overflow:hidden} #memo_view_contents h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
+1
View File
@@ -8,6 +8,7 @@
.ol form {padding:20px} .ol form {padding:20px}
.ol a.btn_admin {display:inline-block;padding:0 10px;height:25px;text-decoration:none;line-height:25px;vertical-align:middle} /* 관리자 전용 버튼 */ .ol a.btn_admin {display:inline-block;padding:0 10px;height:25px;text-decoration:none;line-height:25px;vertical-align:middle} /* 관리자 전용 버튼 */
.ol a.btn_admin:focus, .ol a.btn_admin:hover {text-decoration:none} .ol a.btn_admin:focus, .ol a.btn_admin:hover {text-decoration:none}
.ol .login-sns{padding-bottom:0px}
#ol_before {} #ol_before {}
#ol_before:after {display:block;visibility:hidden;clear:both;content:""} #ol_before:after {display:block;visibility:hidden;clear:both;content:""}
+1 -1
View File
@@ -163,7 +163,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$qa_skin_url.'/style.css">', 0);
</a> </a>
</td> </td>
<td class="td_date"><?php echo $rel_list[$i]['date']; ?></td> <td class="td_date"><?php echo $rel_list[$i]['date']; ?></td>
<td class="td_stat"><span class="<?php echo ($list[$i]['qa_status'] ? 'txt_done' : 'txt_rdy'); ?>"><?php echo ($rel_list[$i]['qa_status'] ? '<i class="fa fa-check-circle" aria-hidden="true"></i> 답변완료' : '<i class="fa fa-times-circle" aria-hidden="true"></i> 답변대기'); ?></span></td> <td class="td_stat"><span class="<?php echo ($rel_list[$i]['qa_status'] ? 'txt_done' : 'txt_rdy'); ?>"><?php echo ($rel_list[$i]['qa_status'] ? '<i class="fa fa-check-circle" aria-hidden="true"></i> 답변완료' : '<i class="fa fa-times-circle" aria-hidden="true"></i> 답변대기'); ?></span></td>
</tr> </tr>
<?php <?php
} }
+4 -2
View File
@@ -105,7 +105,9 @@ add_stylesheet('<link rel="stylesheet" href="'.$search_skin_url.'/style.css">',
$k=0; $k=0;
for ($idx=$table_index, $k=0; $idx<count($search_table) && $k<$rows; $idx++) { for ($idx=$table_index, $k=0; $idx<count($search_table) && $k<$rows; $idx++) {
?> ?>
<div class="search_board_result">
<h2><a href="<?php echo get_pretty_url($search_table[$idx], '', $search_query); ?>"><?php echo $bo_subject[$idx] ?> 게시판 내 결과</a></h2> <h2><a href="<?php echo get_pretty_url($search_table[$idx], '', $search_query); ?>"><?php echo $bo_subject[$idx] ?> 게시판 내 결과</a></h2>
<a href="<?php echo get_pretty_url($search_table[$idx], '', $search_query); ?>" class="sch_more">더보기</a>
<ul> <ul>
<?php <?php
for ($i=0; $i<count($list[$idx]) && $k<$rows; $i++, $k++) { for ($i=0; $i<count($list[$idx]) && $k<$rows; $i++, $k++) {
@@ -134,8 +136,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$search_skin_url.'/style.css">',
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
<a href="<?php echo get_pretty_url($search_table[$idx], '', $search_query); ?>" class="sch_more">더보기</a> </div>
<?php } ?> <?php } //end for?>
<?php if ($stx && $board_count) { ?></section><?php } ?> <?php if ($stx && $board_count) { ?></section><?php } ?>
<?php echo $write_pages ?> <?php echo $write_pages ?>
+3 -2
View File
@@ -49,8 +49,9 @@ transition:all 0.1s ease-in-out}
box-shadow:inset 0 2px 5px rgb(33, 135, 202)} box-shadow:inset 0 2px 5px rgb(33, 135, 202)}
.sch_res_list {position:relative;margin-bottom:10px} .sch_res_list {position:relative;margin-bottom:10px}
.sch_res_list .search_board_result{position:relative}
.sch_res_list h2 {margin:0 0 15px;font-size:1.2em} .sch_res_list h2 {margin:0 0 15px;font-size:1.2em}
.sch_res_list ul {margin:0;padding:0;list-style:none;border-top:1px solid #ececec} .sch_res_list ul {margin:0 0 20px 0;padding:0;list-style:none;border-top:1px solid #ececec}
.sch_res_list li {border-bottom:1px solid #ececec;background:#fff;position:relative} .sch_res_list li {border-bottom:1px solid #ececec;background:#fff;position:relative}
.sch_res_list .sch_tit {display:block;padding:20px 0 10px} .sch_res_list .sch_tit {display:block;padding:20px 0 10px}
.sch_res_list .pop_a {display:inline-block;background:#e8eeef;color:#6f777f;border-radius:50%;text-align:center;width:26px;height:26px;line-height:26px} .sch_res_list .pop_a {display:inline-block;background:#e8eeef;color:#6f777f;border-radius:50%;text-align:center;width:26px;height:26px;line-height:26px}
@@ -60,4 +61,4 @@ box-shadow:inset 0 2px 5px rgb(33, 135, 202)}
.sch_res_list .sch_info:after {display:block;visibility:hidden;clear:both;content:""} .sch_res_list .sch_info:after {display:block;visibility:hidden;clear:both;content:""}
.sch_res_list .profile_img img {border-radius:50%} .sch_res_list .profile_img img {border-radius:50%}
.sch_res_list .sch_datetime {margin-left:5px} .sch_res_list .sch_datetime {margin-left:5px}
.sch_more {position:absolute;right:0;top:0;text-align:right;margin:10px 0 30px;color:#3a8afd} .sch_more {position:absolute;right:0;top:5px;text-align:right;font-weight:normal;color:#3a8afd}
+1 -1
View File
@@ -7,7 +7,7 @@
.bg-warning3 {background:#fff8dc;border:1px solid #f1e4b2} .bg-warning3 {background:#fff8dc;border:1px solid #f1e4b2}
/* SNS LOGIN */ /* SNS LOGIN */
.login-sns {margin-top:5px;border:1px solid #dde7e9;border-bottom:1px solid #dde7e9;clear:both;background:#fff} .login-sns {padding-bottom:10px;margin-top:5px;border:1px solid #dde7e9;border-bottom:1px solid #dde7e9;clear:both;background:#fff}
.login-sns h3 {padding-top:10px;text-align:center;color:#777;font-weight:normal} .login-sns h3 {padding-top:10px;text-align:center;color:#777;font-weight:normal}
.sns-wrap {margin:10px 0 0;text-align:center} .sns-wrap {margin:10px 0 0;text-align:center}
.sns-icon {display:inline-block;vertical-align:middle;text-decoration:none} .sns-icon {display:inline-block;vertical-align:middle;text-decoration:none}
@@ -299,7 +299,7 @@
.bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""} .bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""}
.bo_vc_w .bo_vc_secret {display:block} .bo_vc_w .bo_vc_secret {display:block}
#bo_vc_send_sns {display:block;float:left} #bo_vc_send_sns {display:block;margin-bottom:10px}
#bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1} #bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1}
#bo_vc_sns:after {display:block;visibility:hidden;clear:both;content:""} #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 li {float:left;margin:0 5px 0 0}
@@ -76,7 +76,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php if ($is_email) { ?> <?php if ($is_email) { ?>
<div class="write_div"> <div class="write_div">
<label for="wr_email" class="sound_only">이메일</label> <label for="wr_email" class="sound_only">이메일</label>
<input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" email" maxlength="100" placeholder="이메일"> <input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" maxlength="100" placeholder="이메일">
</div> </div>
<?php } ?> <?php } ?>
@@ -331,7 +331,7 @@
.bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""} .bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""}
.bo_vc_w .bo_vc_secret {display:block} .bo_vc_w .bo_vc_secret {display:block}
#bo_vc_send_sns {display:block;float:left} #bo_vc_send_sns {display:block;margin-bottom:10px}
#bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1} #bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1}
#bo_vc_sns:after {display:block;visibility:hidden;clear:both;content:""} #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 li {float:left;margin:0 5px 0 0}
@@ -76,7 +76,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php if ($is_email) { ?> <?php if ($is_email) { ?>
<div class="write_div"> <div class="write_div">
<label for="wr_email" class="sound_only">이메일</label> <label for="wr_email" class="sound_only">이메일</label>
<input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" email" maxlength="100" placeholder="이메일"> <input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" maxlength="100" placeholder="이메일">
</div> </div>
<?php } ?> <?php } ?>
@@ -5,4 +5,5 @@
.ctt_admin {margin:0 5px;text-align:right} .ctt_admin {margin:0 5px;text-align:right}
#ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden} #ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#ctt_con {padding:10px 0} #ctt_con {padding:10px 0}
#ctt_con img{max-width:100%;height:auto}
.ctt_img {text-align:center} .ctt_img {text-align:center}
@@ -1,6 +1,43 @@
jQuery(function($){ jQuery(function($){
$(document).ready(function(){ $(document).ready(function(){
$(".owl-carousel-wrap .sv_member").off('click').off('focusin');
if ($.fn.tooltipster) {
var $member_menu_tip = $('.owl-carousel-wrap .sv_member').tooltipster({
theme: 'tooltipster-sir',
trigger: 'custom',
contentAsHTML: true,
interactive: true,
distance: 5,
position:'bottom',
coord: {
left: 20,
bottom: 0
},
triggerOpen: {
click: true,
tap: true // For touch device
},
triggerClose: {
click: true,
scroll: true,
tap: true
},
functionBefore: function(instance, helper) {
var content = $(helper.origin).parent().find('.sv')[0].outerHTML;
instance.content(content);
},
functionReady : function(instance, helper) {
$(helper.tooltip).find(".tooltipster-arrow").css({left:16});
},
functionPosition: function(instance, helper, position){
position.coord.left += 7;
return position;
}
});
}
var carousels = [], var carousels = [],
is_loop = true; is_loop = true;
@@ -39,6 +76,16 @@ jQuery(function($){
}, },
}); });
carousels['sel' + index].on('changed.owl.carousel', function(event) {
if ($.fn.tooltipster) {
var instances = $.tooltipster.instances();
$.each(instances, function(i, instance){
instance.close();
});
}
});
$this.on("click", ".lt_page_next", function(e) { $this.on("click", ".lt_page_next", function(e) {
e.preventDefault(); e.preventDefault();
carousels['sel' + index].trigger('next.owl.carousel'); carousels['sel' + index].trigger('next.owl.carousel');
@@ -3,14 +3,17 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once(G5_LIB_PATH.'/thumbnail.lib.php'); include_once(G5_LIB_PATH.'/thumbnail.lib.php');
add_javascript('<script src="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.js"></script>', 10); add_javascript('<script src="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.js"></script>', 10);
add_javascript('<script src="'.$latest_skin_url.'/latest.carousel.js"></script>', 11);
add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.css">', 10); add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.css">', 10);
add_javascript('<script src="'.G5_JS_URL.'/tooltipster/tooltipster.bundle.min.js"></script>', 11);
add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/tooltipster/tooltipster.bundle.min.css">', 11);
add_javascript('<script src="'.$latest_skin_url.'/latest.carousel.js?v2"></script>', 12);
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨 // add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0); add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css?v2">', 1);
$thumb_width = 138; $thumb_width = 138;
$thumb_height = 80; $thumb_height = 80;
$list_count = count($list); $list_count = (is_array($list) && $list) ? count($list) : 0;
$divisor_count = 4; $divisor_count = 4;
$start_page_num = $list_count ? '1' : '0'; $start_page_num = $list_count ? '1' : '0';
$is_show_next_prev = ($list_count > 4) ? 1 : 0; $is_show_next_prev = ($list_count > 4) ? 1 : 0;
@@ -30,7 +30,13 @@
.lt .comment_icon {background:url('./img/icon_comment.png') no-repeat 50% 50%;display:inline-block;width:20px;height:28px;text-indent:-999px;overflow:hidden;vertical-align:top;background-size:70%;margin:0 0px 0 5px} .lt .comment_icon {background:url('./img/icon_comment.png') no-repeat 50% 50%;display:inline-block;width:20px;height:28px;text-indent:-999px;overflow:hidden;vertical-align:top;background-size:70%;margin:0 0px 0 5px}
.lt .empty_li {text-align:center;padding:40px 0;color:#777} .lt .empty_li {text-align:center;padding:40px 0;color:#777}
.lt .owl-carousel .owl-item .profile_img img{width:auto} .lt .owl-carousel .owl-item .profile_img img{width:auto;display:inline}
.tooltipster-content .sv a{display:block;padding:0 10px;line-height:30px;font-weight:normal;color:#bbb}
.tooltipster-content .sv a:hover{background:#000;color:#fff}
.tooltipster-sidetip.tooltipster-sir .tooltipster-content{padding:0}
.tooltipster-sidetip.tooltipster-sir .tooltipster-box{border:0 none;background:#333;border-radius:0}
.tooltipster-sidetip.tooltipster-sir.tooltipster-bottom .tooltipster-arrow-border, .tooltipster-sidetip.tooltipster-sir.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#333}
.lt_page {background:#fff;text-align:center;padding:10px 15px;line-height:25px;border-bottom:1px solid #e5ecee} .lt_page {background:#fff;text-align:center;padding:10px 15px;line-height:25px;border-bottom:1px solid #e5ecee}
.lt_page button {display:inline-block;background:#fff;width:25px;height:25px;border:1px solid #dbdee6;text-align:center;color:#cdcdce} .lt_page button {display:inline-block;background:#fff;width:25px;height:25px;border:1px solid #dbdee6;text-align:center;color:#cdcdce}
Loaded 100 of 122 files, more files were not shown because too many files have changed in this diff. Show more