Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c3cf4771a | ||
|
|
5ff8d4ce71 | ||
|
|
b703ce435b | ||
|
|
184172a5a6 | ||
|
|
21db2b46e3 | ||
|
|
178d32ec18 | ||
|
|
8523bb5747 | ||
|
|
f5cfbc1346 | ||
|
|
cde27ea510 | ||
|
|
35d4c2f3b1 | ||
|
|
96c8437d15 | ||
|
|
359b20606e | ||
|
|
682f6620cb | ||
|
|
9a61ea2d59 | ||
|
|
ddde0d7641 | ||
|
|
b3157550b4 | ||
|
|
594cbf76f7 | ||
|
|
dd2834167a | ||
|
|
bfcd66c6c9 | ||
|
|
9db6d7a1da | ||
|
|
aa86ac0c30 | ||
|
|
031949528b | ||
|
|
be4517f0aa | ||
|
|
102715421f | ||
|
|
ddd7090801 | ||
|
|
b01e04a91e | ||
|
|
85697e71b0 | ||
|
|
aceb0a2751 | ||
|
|
233966fb4c | ||
|
|
5c13b8c200 | ||
|
|
977a6de93b | ||
|
|
e927f15282 | ||
|
|
051aff0e8e | ||
|
|
bc0be66aad | ||
|
|
ab7ba78fd2 | ||
|
|
8e679ee4da | ||
|
|
be2f27a7fa | ||
|
|
18bc64ab0a | ||
|
|
5e5cd396c4 |
No files matched your search
@@ -21,9 +21,9 @@ if (!$gr_subject) alert('그룹 제목을 입력하세요.');
|
|||||||
$posts = array();
|
$posts = array();
|
||||||
|
|
||||||
$check_keys = array(
|
$check_keys = array(
|
||||||
'gr_subject',
|
'gr_subject'=>'',
|
||||||
'gr_device',
|
'gr_device'=>'',
|
||||||
'gr_admin'
|
'gr_admin'=>'',
|
||||||
);
|
);
|
||||||
|
|
||||||
for($i=1;$i<=10;$i++){
|
for($i=1;$i<=10;$i++){
|
||||||
@@ -31,7 +31,7 @@ for($i=1;$i<=10;$i++){
|
|||||||
$check_keys['gr_'.$i] = isset($_POST['gr_'.$i]) ? $_POST['gr_'.$i] : '';
|
$check_keys['gr_'.$i] = isset($_POST['gr_'.$i]) ? $_POST['gr_'.$i] : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach( $check_keys as $key ){
|
foreach( $check_keys as $key=>$value ){
|
||||||
if( $key === 'gr_subject' ){
|
if( $key === 'gr_subject' ){
|
||||||
$posts[$key] = isset($_POST[$key]) ? strip_tags(clean_xss_attributes($_POST[$key])) : '';
|
$posts[$key] = isset($_POST[$key]) ? strip_tags(clean_xss_attributes($_POST[$key])) : '';
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+3
-3
@@ -570,14 +570,14 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
|||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<?php if (!function_exists('curl_init')) echo help('<b>경고) curl이 지원되지 않아 네이버 신디케이션을 사용할수 없습니다.</b>'); ?>
|
<?php if (!function_exists('curl_init')) echo help('<b>경고) curl이 지원되지 않아 네이버 신디케이션을 사용할수 없습니다.</b>'); ?>
|
||||||
<?php echo help('네이버 신디케이션 연동키(token)을 입력하면 네이버 신디케이션을 사용할 수 있습니다.<br>연동키는 <a href="http://webmastertool.naver.com/" target="_blank"><u>네이버 웹마스터도구</u></a> -> 네이버 신디케이션에서 발급할 수 있습니다.') ?>
|
<?php echo help('네이버 신디케이션 연동키(token)을 입력하면 네이버 신디케이션을 사용할 수 있습니다.<br>연동키는 <a href="http://webmastertool.naver.com/" target="_blank"><u>네이버 웹마스터도구</u></a> -> 네이버 신디케이션에서 발급할 수 있습니다.') ?>
|
||||||
<input type="text" name="cf_syndi_token" value="<?php echo get_sanitize_input($config['cf_syndi_token']); ?>" id="cf_syndi_token" class="frm_input" size="70">
|
<input type="text" name="cf_syndi_token" value="<?php echo isset($config['cf_syndi_token']) ? get_sanitize_input($config['cf_syndi_token']) : ''; ?>" id="cf_syndi_token" class="frm_input" size="70">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row"><label for="cf_syndi_except">네이버 신디케이션 제외게시판</label></th>
|
<th scope="row"><label for="cf_syndi_except">네이버 신디케이션 제외게시판</label></th>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<?php echo help('네이버 신디케이션 수집에서 제외할 게시판 아이디를 | 로 구분하여 입력하십시오. 예) notice|adult<br>참고로 그룹접근사용 게시판, 글읽기 권한 2 이상 게시판, 비밀글은 신디케이션 수집에서 제외됩니다.') ?>
|
<?php echo help('네이버 신디케이션 수집에서 제외할 게시판 아이디를 | 로 구분하여 입력하십시오. 예) notice|adult<br>참고로 그룹접근사용 게시판, 글읽기 권한 2 이상 게시판, 비밀글은 신디케이션 수집에서 제외됩니다.') ?>
|
||||||
<input type="text" name="cf_syndi_except" value="<?php echo get_sanitize_input($config['cf_syndi_except']); ?>" id="cf_syndi_except" class="frm_input" size="70">
|
<input type="text" name="cf_syndi_except" value="<?php echo isset($config['cf_syndi_except']) ? get_sanitize_input($config['cf_syndi_except']) : ''; ?>" id="cf_syndi_except" class="frm_input" size="70">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -1317,7 +1317,7 @@ include_once('_rewrite_config_form.php');
|
|||||||
<th scope="row"><label for="cf_icode_token_key">아이코드 토큰키<br>(JSON버전)</label></th>
|
<th scope="row"><label for="cf_icode_token_key">아이코드 토큰키<br>(JSON버전)</label></th>
|
||||||
<td>
|
<td>
|
||||||
<?php echo help("아이코드 JSON 버전의 경우 아이코드 토큰키를 입력시 실행됩니다.<br>SMS 전송유형을 LMS로 설정시 90바이트 이내는 SMS, 90 ~ 2000 바이트는 LMS 그 이상은 절삭 되어 LMS로 발송됩니다."); ?>
|
<?php echo help("아이코드 JSON 버전의 경우 아이코드 토큰키를 입력시 실행됩니다.<br>SMS 전송유형을 LMS로 설정시 90바이트 이내는 SMS, 90 ~ 2000 바이트는 LMS 그 이상은 절삭 되어 LMS로 발송됩니다."); ?>
|
||||||
<input type="text" name="cf_icode_token_key" value="<?php echo $config['cf_icode_token_key']; ?>" id="cf_icode_token_key" class="frm_input" size="40">
|
<input type="text" name="cf_icode_token_key" value="<?php echo isset($config['cf_icode_token_key']) ? get_sanitize_input($config['cf_icode_token_key']) : ''; ?>" id="cf_icode_token_key" class="frm_input" size="40">
|
||||||
<?php echo help("아이코드 사이트 -> 토큰키관리 메뉴에서 생성한 토큰키를 입력합니다."); ?>
|
<?php echo help("아이코드 사이트 -> 토큰키관리 메뉴에서 생성한 토큰키를 입력합니다."); ?>
|
||||||
<br>
|
<br>
|
||||||
서버아이피 : <?php echo $_SERVER['SERVER_ADDR']; ?>
|
서버아이피 : <?php echo $_SERVER['SERVER_ADDR']; ?>
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ else
|
|||||||
|
|
||||||
check_admin_token();
|
check_admin_token();
|
||||||
|
|
||||||
$fm_id = isset($_POST['fm_id']) ? (int) $_POST['fm_id'] : 0;
|
$fm_id = isset($_REQUEST['fm_id']) ? (int) $_REQUEST['fm_id'] : 0;
|
||||||
|
$fa_id = isset($_REQUEST['fa_id']) ? (int) $_REQUEST['fa_id'] : 0;
|
||||||
$fa_subject = isset($_POST['fa_subject']) ? $_POST['fa_subject'] : '';
|
$fa_subject = isset($_POST['fa_subject']) ? $_POST['fa_subject'] : '';
|
||||||
$fa_content = isset($_POST['fa_content']) ? $_POST['fa_content'] : '';
|
$fa_content = isset($_POST['fa_content']) ? $_POST['fa_content'] : '';
|
||||||
$fa_order = isset($_POST['fa_order']) ? (int) $_POST['fa_order'] : 0;
|
$fa_order = isset($_POST['fa_order']) ? (int) $_POST['fa_order'] : 0;
|
||||||
$fa_id = isset($_POST['fa_id']) ? (int) $_POST['fa_id'] : 0;
|
|
||||||
|
|
||||||
$sql_common = " fa_subject = '$fa_subject',
|
$sql_common = " fa_subject = '$fa_subject',
|
||||||
fa_content = '$fa_content',
|
fa_content = '$fa_content',
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ check_admin_token();
|
|||||||
@mkdir(G5_DATA_PATH."/faq", G5_DIR_PERMISSION);
|
@mkdir(G5_DATA_PATH."/faq", G5_DIR_PERMISSION);
|
||||||
@chmod(G5_DATA_PATH."/faq", G5_DIR_PERMISSION);
|
@chmod(G5_DATA_PATH."/faq", G5_DIR_PERMISSION);
|
||||||
|
|
||||||
$fm_id = isset($_POST['fm_id']) ? (int) $_POST['fm_id'] : 0;
|
$fm_id = isset($_REQUEST['fm_id']) ? (int) $_REQUEST['fm_id'] : 0;
|
||||||
$fm_himg_del = isset($_POST['fm_himg_del']) ? (int) $_POST['fm_himg_del'] : 0;
|
$fm_himg_del = isset($_POST['fm_himg_del']) ? (int) $_POST['fm_himg_del'] : 0;
|
||||||
$fm_timg_del = isset($_POST['fm_timg_del']) ? (int) $_POST['fm_timg_del'] : 0;
|
$fm_timg_del = isset($_POST['fm_timg_del']) ? (int) $_POST['fm_timg_del'] : 0;
|
||||||
$fm_subject = isset($_POST['fm_subject']) ? strip_tags(clean_xss_attributes($_POST['fm_subject'])) : '';
|
$fm_subject = isset($_POST['fm_subject']) ? strip_tags(clean_xss_attributes($_POST['fm_subject'])) : '';
|
||||||
|
|||||||
+2
-2
@@ -10,10 +10,10 @@ check_admin_token();
|
|||||||
|
|
||||||
$post_count_chk = (isset($_POST['chk']) && is_array($_POST['chk'])) ? count($_POST['chk']) : 0;
|
$post_count_chk = (isset($_POST['chk']) && is_array($_POST['chk'])) ? count($_POST['chk']) : 0;
|
||||||
|
|
||||||
if(!$count)
|
if(! $post_count_chk)
|
||||||
alert('삭제할 메일목록을 1개이상 선택해 주세요.');
|
alert('삭제할 메일목록을 1개이상 선택해 주세요.');
|
||||||
|
|
||||||
for($i=0; $i<$count; $i++) {
|
for($i=0; $i<$post_count_chk; $i++) {
|
||||||
$ma_id = isset($_POST['chk'][$i]) ? (int) $_POST['chk'][$i] : 0;
|
$ma_id = isset($_POST['chk'][$i]) ? (int) $_POST['chk'][$i] : 0;
|
||||||
|
|
||||||
$sql = " delete from {$g5['mail_table']} where ma_id = '$ma_id' ";
|
$sql = " delete from {$g5['mail_table']} where ma_id = '$ma_id' ";
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ if ($is_admin != 'super')
|
|||||||
$g5['title'] = '메뉴 추가';
|
$g5['title'] = '메뉴 추가';
|
||||||
include_once(G5_PATH.'/head.sub.php');
|
include_once(G5_PATH.'/head.sub.php');
|
||||||
|
|
||||||
|
$new = isset($_GET['new']) ? clean_xss_tags($_GET['new'], 1, 1) : '';
|
||||||
$code = isset($_GET['code']) ? preg_replace('/[^0-9a-zA-Z]/', '', $_GET['code']) : '';
|
$code = isset($_GET['code']) ? preg_replace('/[^0-9a-zA-Z]/', '', $_GET['code']) : '';
|
||||||
|
|
||||||
// 코드
|
// 코드
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
$sub_menu = '100310';
|
$sub_menu = '100310';
|
||||||
include_once('./_common.php');
|
include_once('./_common.php');
|
||||||
|
|
||||||
$nw_id = isset($_POST['nw_id']) ? preg_replace('/[^0-9]/', '', $_POST['nw_id']) : 0;
|
$nw_id = isset($_REQUEST['nw_id']) ? preg_replace('/[^0-9]/', '', $_REQUEST['nw_id']) : 0;
|
||||||
|
|
||||||
if ($w == "u" || $w == "d")
|
if ($w == "u" || $w == "d")
|
||||||
check_demo();
|
check_demo();
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ function grouplist_submit(f)
|
|||||||
</td>
|
</td>
|
||||||
<td class="td_left">
|
<td class="td_left">
|
||||||
<label for="fg_name_<?php echo $i; ?>" class="sound_only">그룹명</label>
|
<label for="fg_name_<?php echo $i; ?>" class="sound_only">그룹명</label>
|
||||||
<input type="text" name="fg_name[<?php echo $i; ?>]" value="<?php echo $group[$i]['fg_name']?>" id="fg_name_<?php echo $i; ?>" class="frm_input">
|
<input type="text" name="fg_name[<?php echo $i; ?>]" value="<?php echo get_sanitize_input($group[$i]['fg_name']); ?>" id="fg_name_<?php echo $i; ?>" class="frm_input">
|
||||||
<input type="checkbox" name="fg_member[<?php echo $i; ?>]" value="1" id="fg_member_<?php echo $i; ?>" <?php if ($group[$i]['fg_member']) echo 'checked';?>>
|
<input type="checkbox" name="fg_member[<?php echo $i; ?>]" value="1" id="fg_member_<?php echo $i; ?>" <?php if ($group[$i]['fg_member']) echo 'checked';?>>
|
||||||
<label for="fg_member_<?php echo $i; ?>">회원</label>
|
<label for="fg_member_<?php echo $i; ?>">회원</label>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ if ($w == 'u') // 업데이트
|
|||||||
// 실제 번호를 넘김
|
// 실제 번호를 넘김
|
||||||
$k = $post_cnk[$i];
|
$k = $post_cnk[$i];
|
||||||
$fg_no = isset($_POST['fg_no'][$k]) ? (int) $_POST['fg_no'][$k] : 0;
|
$fg_no = isset($_POST['fg_no'][$k]) ? (int) $_POST['fg_no'][$k] : 0;
|
||||||
$fg_name = isset($_POST['fg_name'][$k]) ? addslashes(strip_tags($_POST['fg_name'][$k])) : '';
|
$fg_name = isset($_POST['fg_name'][$k]) ? addslashes(strip_tags(clean_xss_attributes($_POST['fg_name'][$k]))) : '';
|
||||||
$fg_member = isset($_POST['fg_member'][$k]) ? addslashes(strip_tags($_POST['fg_member'][$k])) : '';
|
$fg_member = isset($_POST['fg_member'][$k]) ? addslashes(strip_tags($_POST['fg_member'][$k])) : '';
|
||||||
|
|
||||||
if (!is_numeric($fg_no))
|
if (!is_numeric($fg_no))
|
||||||
@@ -82,11 +82,11 @@ else if ($w == 'no')
|
|||||||
}
|
}
|
||||||
else // 등록
|
else // 등록
|
||||||
{
|
{
|
||||||
|
$fg_name = isset($_POST['fg_name']) ? addslashes(strip_tags(clean_xss_attributes($_POST['fg_name']))) : '';
|
||||||
|
|
||||||
if (!strlen(trim($fg_name)))
|
if (!strlen(trim($fg_name)))
|
||||||
alert('그룹명을 입력해주세요');
|
alert('그룹명을 입력해주세요');
|
||||||
|
|
||||||
$fg_name = addslashes(strip_tags($fg_name));
|
|
||||||
|
|
||||||
$res = sql_fetch("select fg_name from {$g5['sms5_form_group_table']} where fg_name = '$fg_name'");
|
$res = sql_fetch("select fg_name from {$g5['sms5_form_group_table']} where fg_name = '$fg_name'");
|
||||||
if ($res)
|
if ($res)
|
||||||
alert('같은 그룹명이 존재합니다.');
|
alert('같은 그룹명이 존재합니다.');
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
include_once('./_common.php');
|
include_once('./_common.php');
|
||||||
|
|
||||||
$call = isset($_REQUEST['call']) ? strtolower(preg_replace('/[^a-z0-9_]/i', '', $_REQUEST['call'])) : '';
|
$call = isset($_REQUEST['call']) ? strtolower(preg_replace('/[^a-z0-9_]/i', '', $_REQUEST['call'])) : '';
|
||||||
|
$token = isset($_REQUEST['token']) ? clean_xss_tags($_REQUEST['token'], 1, 1) : '';
|
||||||
|
|
||||||
if( ! $call ){
|
if( ! $call ){
|
||||||
return;
|
return;
|
||||||
|
|||||||
+2
-2
@@ -12,12 +12,12 @@ if( !isset($g5['content_table']) ){
|
|||||||
// 내용
|
// 내용
|
||||||
if($co_seo_title){
|
if($co_seo_title){
|
||||||
$co = get_content_by_field($g5['content_table'], 'content', 'co_seo_title', generate_seo_title($co_seo_title));
|
$co = get_content_by_field($g5['content_table'], 'content', 'co_seo_title', generate_seo_title($co_seo_title));
|
||||||
$co_id = $co['co_id'];
|
$co_id = isset($co['co_id']) ? $co['co_id'] : 0;
|
||||||
} else {
|
} else {
|
||||||
$co = get_content_db($co_id);
|
$co = get_content_db($co_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ! (isset($co['co_seo_title']) && $co['co_seo_title']) && $co['co_id'] ){
|
if( ! (isset($co['co_seo_title']) && $co['co_seo_title']) && isset($co['co_id']) && $co['co_id'] ){
|
||||||
seo_title_update($g5['content_table'], $co['co_id'], 'content');
|
seo_title_update($g5['content_table'], $co['co_id'], 'content');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -10,7 +10,6 @@ $board = array('bo_table'=>'');
|
|||||||
$save_bo_table = array();
|
$save_bo_table = array();
|
||||||
$save_wr_id = array();
|
$save_wr_id = array();
|
||||||
$count_chk_bn_id = (isset($_POST['chk_bn_id']) && is_array($_POST['chk_bn_id'])) ? count($_POST['chk_bn_id']) : 0;
|
$count_chk_bn_id = (isset($_POST['chk_bn_id']) && is_array($_POST['chk_bn_id'])) ? count($_POST['chk_bn_id']) : 0;
|
||||||
$count_write = 0;
|
|
||||||
|
|
||||||
for($i=0;$i<$count_chk_bn_id;$i++)
|
for($i=0;$i<$count_chk_bn_id;$i++)
|
||||||
{
|
{
|
||||||
@@ -20,6 +19,8 @@ for($i=0;$i<$count_chk_bn_id;$i++)
|
|||||||
$bo_table = isset($_POST['bo_table'][$k]) ? preg_replace('/[^a-z0-9_]/i', '', $_POST['bo_table'][$k]) : '';
|
$bo_table = isset($_POST['bo_table'][$k]) ? preg_replace('/[^a-z0-9_]/i', '', $_POST['bo_table'][$k]) : '';
|
||||||
$wr_id = isset($_POST['wr_id'][$k]) ? preg_replace('/[^0-9]/i', '', $_POST['wr_id'][$k]) : 0;
|
$wr_id = isset($_POST['wr_id'][$k]) ? preg_replace('/[^0-9]/i', '', $_POST['wr_id'][$k]) : 0;
|
||||||
|
|
||||||
|
$count_write = $count_comment = 0;
|
||||||
|
|
||||||
$save_bo_table[$i] = $bo_table;
|
$save_bo_table[$i] = $bo_table;
|
||||||
$save_wr_id[$i] = $wr_id;
|
$save_wr_id[$i] = $wr_id;
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,17 @@ $total_page = ceil($total_count / $rows); // 전체 페이지 계산
|
|||||||
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
|
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||||
$from_record = ($page - 1) * $rows; // 시작 열을 구함
|
$from_record = ($page - 1) * $rows; // 시작 열을 구함
|
||||||
|
|
||||||
|
$sql = " select *
|
||||||
|
{$sql_common}
|
||||||
|
{$sql_order}
|
||||||
|
limit {$from_record}, {$rows} ";
|
||||||
|
|
||||||
|
$result = sql_query($sql);
|
||||||
|
|
||||||
|
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||||
|
$list[] = $row;
|
||||||
|
}
|
||||||
|
|
||||||
include_once($member_skin_path.'/point.skin.php');
|
include_once($member_skin_path.'/point.skin.php');
|
||||||
|
|
||||||
include_once(G5_PATH.'/tail.sub.php');
|
include_once(G5_PATH.'/tail.sub.php');
|
||||||
@@ -34,8 +34,8 @@ if(!$mb_id)
|
|||||||
$mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
|
$mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
|
||||||
$mb_password_re = isset($_POST['mb_password_re']) ? trim($_POST['mb_password_re']) : '';
|
$mb_password_re = isset($_POST['mb_password_re']) ? trim($_POST['mb_password_re']) : '';
|
||||||
$mb_name = isset($_POST['mb_name']) ? trim($_POST['mb_name']) : '';
|
$mb_name = isset($_POST['mb_name']) ? trim($_POST['mb_name']) : '';
|
||||||
$mb_nick = isset($_POST['mb_name']) ? trim($_POST['mb_nick']) : '';
|
$mb_nick = isset($_POST['mb_nick']) ? trim($_POST['mb_nick']) : '';
|
||||||
$mb_email = isset($_POST['mb_name']) ? trim($_POST['mb_email']) : '';
|
$mb_email = isset($_POST['mb_email']) ? trim($_POST['mb_email']) : '';
|
||||||
$mb_sex = isset($_POST['mb_sex']) ? trim($_POST['mb_sex']) : "";
|
$mb_sex = isset($_POST['mb_sex']) ? trim($_POST['mb_sex']) : "";
|
||||||
$mb_birth = isset($_POST['mb_birth']) ? trim($_POST['mb_birth']) : "";
|
$mb_birth = isset($_POST['mb_birth']) ? trim($_POST['mb_birth']) : "";
|
||||||
$mb_homepage = isset($_POST['mb_homepage']) ? trim($_POST['mb_homepage']) : "";
|
$mb_homepage = isset($_POST['mb_homepage']) ? trim($_POST['mb_homepage']) : "";
|
||||||
|
|||||||
+2
-2
@@ -151,7 +151,7 @@ if ($stx) {
|
|||||||
for ($i=0; $i<count($search_table); $i++) {
|
for ($i=0; $i<count($search_table); $i++) {
|
||||||
if ($from_record < $search_table_count[$i]) {
|
if ($from_record < $search_table_count[$i]) {
|
||||||
$table_index = $i;
|
$table_index = $i;
|
||||||
$from_record = $from_record - $search_table_count[$i-1];
|
$from_record = $from_record - ($i > 0 ? $search_table_count[$i-1] : 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -183,7 +183,7 @@ if ($stx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 비밀글은 검색 불가
|
// 비밀글은 검색 불가
|
||||||
if (strstr($row['wr_option'].$row2['wr_option'], 'secret'))
|
if (strstr($row['wr_option'].(isset($row2['wr_option']) ? $row2['wr_option'] : ''), 'secret'))
|
||||||
$row['wr_content'] = '[비밀글 입니다.]';
|
$row['wr_content'] = '[비밀글 입니다.]';
|
||||||
|
|
||||||
$subject = get_text($row['wr_subject']);
|
$subject = get_text($row['wr_subject']);
|
||||||
|
|||||||
+2
-2
@@ -28,7 +28,7 @@ if (!$board['bo_use_list_view']) {
|
|||||||
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply < '{$write['wr_reply']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
|
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply < '{$write['wr_reply']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
|
||||||
$prev = sql_fetch($sql);
|
$prev = sql_fetch($sql);
|
||||||
// 위의 쿼리문으로 값을 얻지 못했다면
|
// 위의 쿼리문으로 값을 얻지 못했다면
|
||||||
if (isset($prev['wr_id']) && !$prev['wr_id']) {
|
if (! (isset($prev['wr_id']) && $prev['wr_id'])) {
|
||||||
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
|
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
|
||||||
$prev = sql_fetch($sql);
|
$prev = sql_fetch($sql);
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ if (!$board['bo_use_list_view']) {
|
|||||||
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply > '{$write['wr_reply']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
|
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply > '{$write['wr_reply']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
|
||||||
$next = sql_fetch($sql);
|
$next = sql_fetch($sql);
|
||||||
// 위의 쿼리문으로 값을 얻지 못했다면
|
// 위의 쿼리문으로 값을 얻지 못했다면
|
||||||
if (isset($next['wr_id']) && !$next['wr_id']) {
|
if (! (isset($next['wr_id']) && $next['wr_id'])) {
|
||||||
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
|
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
|
||||||
$next = sql_fetch($sql);
|
$next = sql_fetch($sql);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ include_once($g5_path['path'].'/config.php'); // 설정 파일
|
|||||||
|
|
||||||
unset($g5_path);
|
unset($g5_path);
|
||||||
|
|
||||||
|
// IIS 에서 SERVER_ADDR 서버변수가 없다면
|
||||||
|
if(! isset($_SERVER['SERVER_ADDR'])) {
|
||||||
|
$_SERVER['SERVER_ADDR'] = isset($_SERVER['LOCAL_ADDR']) ? $_SERVER['LOCAL_ADDR'] : '';
|
||||||
|
}
|
||||||
|
|
||||||
// multi-dimensional array에 사용자지정 함수적용
|
// multi-dimensional array에 사용자지정 함수적용
|
||||||
function array_map_deep($fn, $array)
|
function array_map_deep($fn, $array)
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
********************/
|
********************/
|
||||||
|
|
||||||
define('G5_VERSION', '그누보드5');
|
define('G5_VERSION', '그누보드5');
|
||||||
define('G5_GNUBOARD_VER', '5.4.4.3');
|
define('G5_GNUBOARD_VER', '5.4.5');
|
||||||
|
|
||||||
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
||||||
define('_GNUBOARD_', true);
|
define('_GNUBOARD_', true);
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ if (!$dblink) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$g5['connect_db'] = $dblink;
|
||||||
$select_db = sql_select_db($mysql_db, $dblink);
|
$select_db = sql_select_db($mysql_db, $dblink);
|
||||||
if (!$select_db) {
|
if (!$select_db) {
|
||||||
?>
|
?>
|
||||||
@@ -199,6 +200,7 @@ $sql = " insert into `{$table_prefix}member`
|
|||||||
mb_level = '10',
|
mb_level = '10',
|
||||||
mb_mailling = '1',
|
mb_mailling = '1',
|
||||||
mb_open = '1',
|
mb_open = '1',
|
||||||
|
mb_nick_date = '".G5_TIME_YMDHIS."',
|
||||||
mb_email_certify = '".G5_TIME_YMDHIS."',
|
mb_email_certify = '".G5_TIME_YMDHIS."',
|
||||||
mb_datetime = '".G5_TIME_YMDHIS."',
|
mb_datetime = '".G5_TIME_YMDHIS."',
|
||||||
mb_ip = '{$_SERVER['REMOTE_ADDR']}'
|
mb_ip = '{$_SERVER['REMOTE_ADDR']}'
|
||||||
|
|||||||
@@ -130,10 +130,11 @@ Class GML_Hook extends Hook {
|
|||||||
|
|
||||||
if (isset($that->callback_filters[$tag]) && isset($that->callback_filters[$tag][$priority]) ) {
|
if (isset($that->callback_filters[$tag]) && isset($that->callback_filters[$tag][$priority]) ) {
|
||||||
|
|
||||||
$found_key = array_search($func, array_column($that->callback_filters[$tag][$priority], 'function'));
|
foreach((array) $that->callback_filters[$tag][$priority] as $key=>$value){
|
||||||
|
if(isset($value['function']) && $value['function'] === $func) {
|
||||||
if( $found_key !== false ){
|
unset($that->callback_filters[$tag][$priority][$key]);
|
||||||
unset($that->callback_filters[$tag][$priority][$found_key]);
|
$is_remove = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,10 +149,11 @@ Class GML_Hook extends Hook {
|
|||||||
|
|
||||||
if (isset($that->callbacks[$tag]) && isset($that->callbacks[$tag][$priority]) ) {
|
if (isset($that->callbacks[$tag]) && isset($that->callbacks[$tag][$priority]) ) {
|
||||||
|
|
||||||
$found_key = array_search($func, array_column($that->callbacks[$tag][$priority], 'function'));
|
foreach((array) $that->callbacks[$tag][$priority] as $key=>$value){
|
||||||
|
if(isset($value['function']) && $value['function'] === $func) {
|
||||||
if( $found_key !== false ){
|
unset($that->callbacks[$tag][$priority][$key]);
|
||||||
unset($that->callbacks[$tag][$priority][$found_key]);
|
$is_remove = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+24
-6
@@ -9,6 +9,8 @@ function get_cachemanage_instance(){
|
|||||||
|
|
||||||
if( ! (defined('G5_USE_CACHE') && G5_USE_CACHE) ) return $instance;
|
if( ! (defined('G5_USE_CACHE') && G5_USE_CACHE) ) return $instance;
|
||||||
|
|
||||||
|
$instance = run_replace('get_cachemanage_instance', $instance);
|
||||||
|
|
||||||
if( $instance === null ){
|
if( $instance === null ){
|
||||||
$options = array(
|
$options = array(
|
||||||
'_cache_path'=> G5_DATA_PATH.'/cache',
|
'_cache_path'=> G5_DATA_PATH.'/cache',
|
||||||
@@ -48,14 +50,22 @@ function g5_latest_cache_data($bo_table, $cache_list=array(), $find_wr_id=0){
|
|||||||
function g5_set_cache($key, $save_data, $ttl = null){
|
function g5_set_cache($key, $save_data, $ttl = null){
|
||||||
|
|
||||||
if( $cache = get_cachemanage_instance() ){
|
if( $cache = get_cachemanage_instance() ){
|
||||||
$cache->save($key, $save_data, $ttl);
|
run_event('g5_set_cache_event', $cache, $key, $save_data, $ttl);
|
||||||
|
|
||||||
|
if( (is_object($cache) && get_class($cache) === 'FileCache') ){
|
||||||
|
$cache->save($key, $save_data, $ttl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function g5_get_cache($key, $expired_time=0){
|
function g5_get_cache($key, $expired_time=0){
|
||||||
|
|
||||||
if( $cache = get_cachemanage_instance() ){
|
if( $cache = get_cachemanage_instance() ){
|
||||||
return $cache->get($key, $expired_time);
|
if( (is_object($cache) && get_class($cache) === 'FileCache') ){
|
||||||
|
return $cache->get($key, $expired_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
return run_replace('g5_get_cache_replace', false, $cache, $key, $expired_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -82,13 +92,21 @@ function g5_delete_all_cache(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function g5_delete_cache_by_prefix($key){
|
function g5_delete_cache_by_prefix($key){
|
||||||
$files = glob(G5_DATA_PATH.'/cache/'.$key.'*');
|
|
||||||
|
|
||||||
foreach( (array) $files as $filename){
|
$cache = get_cachemanage_instance();
|
||||||
if(empty($filename)) continue;
|
$files = null;
|
||||||
|
|
||||||
unlink($filename);
|
if( (is_object($instance) && get_class($instance) === 'FileCache') ) {
|
||||||
|
$files = glob(G5_DATA_PATH.'/cache/'.$key.'*');
|
||||||
|
|
||||||
|
foreach( (array) $files as $filename){
|
||||||
|
if(empty($filename)) continue;
|
||||||
|
|
||||||
|
unlink($filename);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$files = run_replace('g5_delete_cache_by_prefix', $files, $key);
|
||||||
|
|
||||||
return ($files) ? true : false;
|
return ($files) ? true : false;
|
||||||
}
|
}
|
||||||
+5
-4
@@ -2044,17 +2044,18 @@ function bad_tag_convert($code)
|
|||||||
global $view;
|
global $view;
|
||||||
global $member, $is_admin;
|
global $member, $is_admin;
|
||||||
|
|
||||||
if ($is_admin && $member['mb_id'] != $view['mb_id']) {
|
if ($is_admin && $member['mb_id'] !== $view['mb_id']) {
|
||||||
//$code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>(\<\/(embed|object)\>)?#i",
|
//$code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>(\<\/(embed|object)\>)?#i",
|
||||||
// embed 또는 object 태그를 막지 않는 경우 필터링이 되도록 수정
|
// embed 또는 object 태그를 막지 않는 경우 필터링이 되도록 수정
|
||||||
$code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>?(\<\/(embed|object)\>)?#i",
|
$code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>?(\<\/(embed|object)\>)?#i", '_callback_bad_tag_convert', $code);
|
||||||
create_function('$matches', 'return "<div class=\"embedx\">보안문제로 인하여 관리자 아이디로는 embed 또는 object 태그를 볼 수 없습니다. 확인하시려면 관리권한이 없는 다른 아이디로 접속하세요.</div>";'),
|
|
||||||
$code);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return preg_replace("/\<([\/]?)(script|iframe|form)([^\>]*)\>?/i", "<$1$2$3>", $code);
|
return preg_replace("/\<([\/]?)(script|iframe|form)([^\>]*)\>?/i", "<$1$2$3>", $code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _callback_bad_tag_convert($matches){
|
||||||
|
return "<div class=\"embedx\">보안문제로 인하여 관리자 아이디로는 embed 또는 object 태그를 볼 수 없습니다. 확인하시려면 관리권한이 없는 다른 아이디로 접속하세요.</div>";
|
||||||
|
}
|
||||||
|
|
||||||
// 토큰 생성
|
// 토큰 생성
|
||||||
function _token()
|
function _token()
|
||||||
|
|||||||
+31
-31
@@ -97,47 +97,47 @@ function get_menu_db($use_mobile=0, $is_cache=false){
|
|||||||
|
|
||||||
static $cache = array();
|
static $cache = array();
|
||||||
|
|
||||||
$cache = run_replace('get_menu_db_cache', $cache, $use_mobile, $is_cache);
|
$cache = run_replace('get_menu_db_cache', $cache, $use_mobile, $is_cache);
|
||||||
|
|
||||||
$key = md5($use_mobile);
|
$key = md5($use_mobile);
|
||||||
|
|
||||||
if( $is_cache && isset($cache[$key]) ){
|
if( $is_cache && isset($cache[$key]) ){
|
||||||
return $cache[$key];
|
return $cache[$key];
|
||||||
}
|
}
|
||||||
|
|
||||||
$where = $use_mobile ? "me_mobile_use = '1'" : "me_use = '1'";
|
$where = $use_mobile ? "me_mobile_use = '1'" : "me_use = '1'";
|
||||||
|
|
||||||
if( !($cache[$key] = run_replace('get_menu_db', array(), $use_mobile)) ){
|
if( !($cache[$key] = run_replace('get_menu_db', array(), $use_mobile)) ){
|
||||||
$sql = " select *
|
$sql = " select *
|
||||||
from {$g5['menu_table']}
|
from {$g5['menu_table']}
|
||||||
where $where
|
where $where
|
||||||
and length(me_code) = '2'
|
and length(me_code) = '2'
|
||||||
order by me_order, me_id ";
|
order by me_order, me_id ";
|
||||||
$result = sql_query($sql, false);
|
$result = sql_query($sql, false);
|
||||||
|
|
||||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||||
|
|
||||||
$row['ori_me_link'] = $row['me_link'];
|
$row['ori_me_link'] = $row['me_link'];
|
||||||
$row['me_link'] = short_url_clean($row['me_link']);
|
$row['me_link'] = short_url_clean($row['me_link']);
|
||||||
$row['sub'] = isset($row['sub']) ? $row['sub'] : array();
|
$row['sub'] = isset($row['sub']) ? $row['sub'] : array();
|
||||||
$cache[$key][$i] = $row;
|
$cache[$key][$i] = $row;
|
||||||
|
|
||||||
$sql2 = " select *
|
$sql2 = " select *
|
||||||
from {$g5['menu_table']}
|
from {$g5['menu_table']}
|
||||||
where $where
|
where $where
|
||||||
and length(me_code) = '4'
|
and length(me_code) = '4'
|
||||||
and substring(me_code, 1, 2) = '{$row['me_code']}'
|
and substring(me_code, 1, 2) = '{$row['me_code']}'
|
||||||
order by me_order, me_id ";
|
order by me_order, me_id ";
|
||||||
$result2 = sql_query($sql2);
|
$result2 = sql_query($sql2);
|
||||||
for ($k=0; $row2=sql_fetch_array($result2); $k++) {
|
for ($k=0; $row2=sql_fetch_array($result2); $k++) {
|
||||||
$row2['ori_me_link'] = $row2['me_link'];
|
$row2['ori_me_link'] = $row2['me_link'];
|
||||||
$row2['me_link'] = short_url_clean($row2['me_link']);
|
$row2['me_link'] = short_url_clean($row2['me_link']);
|
||||||
$cache[$key][$i]['sub'][$k] = $row2;
|
$cache[$key][$i]['sub'][$k] = $row2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $cache[$key];
|
return $cache[$key];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 게시판 테이블에서 하나의 행을 읽음
|
// 게시판 테이블에서 하나의 행을 읽음
|
||||||
@@ -465,7 +465,7 @@ function get_memo_not_read($mb_id, $add_where='')
|
|||||||
$sql = " SELECT count(*) as cnt FROM {$g5['memo_table']} WHERE me_recv_mb_id = '$mb_id' and me_type= 'recv' and me_read_datetime like '0%' $add_where ";
|
$sql = " SELECT count(*) as cnt FROM {$g5['memo_table']} WHERE me_recv_mb_id = '$mb_id' and me_type= 'recv' and me_read_datetime like '0%' $add_where ";
|
||||||
$row = sql_fetch($sql, false);
|
$row = sql_fetch($sql, false);
|
||||||
|
|
||||||
return $row['cnt'];
|
return isset($row['cnt']) ? $row['cnt'] : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_scrap_totals($mb_id=''){
|
function get_scrap_totals($mb_id=''){
|
||||||
@@ -476,5 +476,5 @@ function get_scrap_totals($mb_id=''){
|
|||||||
$sql = " select count(*) as cnt from {$g5['scrap_table']} where 1=1 $add_where";
|
$sql = " select count(*) as cnt from {$g5['scrap_table']} where 1=1 $add_where";
|
||||||
$row = sql_fetch($sql, false);
|
$row = sql_fetch($sql, false);
|
||||||
|
|
||||||
return $row['cnt'];
|
return isset($row['cnt']) ? $row['cnt'] : 0;
|
||||||
}
|
}
|
||||||
+2
-2
@@ -37,7 +37,7 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
|
|||||||
|
|
||||||
if(G5_USE_CACHE) {
|
if(G5_USE_CACHE) {
|
||||||
$cache_file_name = "latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}-".g5_cache_secret_key();
|
$cache_file_name = "latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}-".g5_cache_secret_key();
|
||||||
$caches = g5_get_cache($cache_file_name, $time_unit * $cache_time);
|
$caches = g5_get_cache($cache_file_name, (int) $time_unit * (int) $cache_time);
|
||||||
$cache_list = isset($caches['list']) ? $caches['list'] : array();
|
$cache_list = isset($caches['list']) ? $caches['list'] : array();
|
||||||
g5_latest_cache_data($bo_table, $cache_list);
|
g5_latest_cache_data($bo_table, $cache_list);
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
|
|||||||
'bo_subject' => sql_escape_string($bo_subject),
|
'bo_subject' => sql_escape_string($bo_subject),
|
||||||
);
|
);
|
||||||
|
|
||||||
g5_set_cache($cache_file_name, $caches, $time_unit * $cache_time);
|
g5_set_cache($cache_file_name, $caches, (int) $time_unit * (int) $cache_time);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$list = $cache_list;
|
$list = $cache_list;
|
||||||
|
|||||||
@@ -16,6 +16,12 @@ function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $cc=
|
|||||||
if ($type != 1)
|
if ($type != 1)
|
||||||
$content = nl2br($content);
|
$content = nl2br($content);
|
||||||
|
|
||||||
|
$result = run_replace('mailer', $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);
|
||||||
|
|
||||||
|
if( isset($result['return']) ){
|
||||||
|
return $result['return'];
|
||||||
|
}
|
||||||
|
|
||||||
$mail = new PHPMailer(); // defaults to using php "mail()"
|
$mail = new PHPMailer(); // defaults to using php "mail()"
|
||||||
if (defined('G5_SMTP') && G5_SMTP) {
|
if (defined('G5_SMTP') && G5_SMTP) {
|
||||||
$mail->IsSMTP(); // telling the class to use SMTP
|
$mail->IsSMTP(); // telling the class to use SMTP
|
||||||
|
|||||||
+1
-1
@@ -91,7 +91,7 @@ function get_pretty_url($folder, $no='', $query_string='', $action='')
|
|||||||
$url .= ($folder === 'content') ? '?co_id='. $no : '?'. $no;
|
$url .= ($folder === 'content') ? '?co_id='. $no : '?'. $no;
|
||||||
}
|
}
|
||||||
if($query_string) {
|
if($query_string) {
|
||||||
$url .= ($no ? '?' : '&'). $query_string;
|
$url .= (!$no ? '?' : '&'). $query_string;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ $result = sql_query($sql, false);
|
|||||||
for ($i=0; $nw=sql_fetch_array($result); $i++)
|
for ($i=0; $nw=sql_fetch_array($result); $i++)
|
||||||
{
|
{
|
||||||
// 이미 체크 되었다면 Continue
|
// 이미 체크 되었다면 Continue
|
||||||
if ($_COOKIE["hd_pops_{$nw['nw_id']}"])
|
if (isset($_COOKIE["hd_pops_{$nw['nw_id']}"]) && $_COOKIE["hd_pops_{$nw['nw_id']}"])
|
||||||
continue;
|
continue;
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ $is_show_next_prev = ($list_count > 4) ? 1 : 0;
|
|||||||
$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);
|
||||||
$img = $thumb['src'] ? $thumb['src'] : '';
|
$img = $thumb['src'] ? $thumb['src'] : '';
|
||||||
$img_content = $img ? '<img src="'.$img.'" alt="'.$thumb['alt'].'" >' : '';
|
$img_content = $img ? '<img src="'.$img.'" alt="'.$thumb['alt'].'" >' : '';
|
||||||
|
$wr_href = get_pretty_url($bo_table, $list[$i]['wr_id']);
|
||||||
|
|
||||||
$echo_ul = ( $i && (($i % $divisor_count) === 0) ) ? '</ul><ul class="item">'.PHP_EOL : '';
|
$echo_ul = ( $i && (($i % $divisor_count) === 0) ) ? '</ul><ul class="item">'.PHP_EOL : '';
|
||||||
|
|
||||||
@@ -38,10 +39,10 @@ $is_show_next_prev = ($list_count > 4) ? 1 : 0;
|
|||||||
//echo $list[$i]['icon_reply']." ";
|
//echo $list[$i]['icon_reply']." ";
|
||||||
|
|
||||||
if( $img_content ){
|
if( $img_content ){
|
||||||
echo "<a href=\"".$list[$i]['href']."\" class=\"lt_thumb\">".run_replace('thumb_image_tag', $img_content, $thumb)."</a> ";
|
echo "<a href=\"".$wr_href."\" class=\"lt_thumb\">".run_replace('thumb_image_tag', $img_content, $thumb)."</a> ";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "<a href=\"".$list[$i]['href']."\" class=\"lt_tit\">";
|
echo "<a href=\"".$wr_href."\" class=\"lt_tit\">";
|
||||||
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i> ";
|
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i> ";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
<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>
|
||||||
<div class="cm_lt_info">
|
<div class="cm_lt_info">
|
||||||
<a href="<?php echo $list[$i]['href']; ?>" class="over"><?php echo $list[$i]['subject']; ?></a>
|
<a href="<?php echo get_pretty_url($bo_table, $list[$i]['wr_id']); ?>" class="over"><?php echo $list[$i]['subject']; ?></a>
|
||||||
<br>
|
<br>
|
||||||
<span class="lt_nick"><?php echo $list[$i]['name'] ?></span>
|
<span class="lt_nick"><?php echo $list[$i]['name'] ?></span>
|
||||||
<span class="lt_date"><?php echo $list[$i]['datetime2'] ?></span>
|
<span class="lt_date"><?php echo $list[$i]['datetime2'] ?></span>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
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> ";
|
||||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||||
//echo $list[$i]['icon_reply']." ";
|
//echo $list[$i]['icon_reply']." ";
|
||||||
echo "<a href=\"".$list[$i]['href']."\">";
|
echo "<a href=\"".get_pretty_url($bo_table, $list[$i]['wr_id'])."\">";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -19,12 +19,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
<?php
|
<?php
|
||||||
$sum_point1 = $sum_point2 = $sum_point3 = 0;
|
$sum_point1 = $sum_point2 = $sum_point3 = 0;
|
||||||
|
|
||||||
$sql = " select *
|
$i = 0;
|
||||||
{$sql_common}
|
foreach((array) $list as $row){
|
||||||
{$sql_order}
|
|
||||||
limit {$from_record}, {$rows} ";
|
|
||||||
$result = sql_query($sql);
|
|
||||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
|
||||||
$point1 = $point2 = 0;
|
$point1 = $point2 = 0;
|
||||||
$point_use_class = '';
|
$point_use_class = '';
|
||||||
if ($row['po_point'] > 0) {
|
if ($row['po_point'] > 0) {
|
||||||
@@ -55,7 +51,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<?php
|
<?php
|
||||||
}
|
$i++;
|
||||||
|
} // end foreach
|
||||||
|
|
||||||
if ($i == 0)
|
if ($i == 0)
|
||||||
echo '<li class="empty_list">자료가 없습니다.</li>';
|
echo '<li class="empty_list">자료가 없습니다.</li>';
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
// CHEditor 5.1.9.3
|
// CHEditor 5.1.9.3-p4
|
||||||
// ----------------------------------------------------------------
|
// ----------------------------------------------------------------
|
||||||
// Homepage: http://www.chcode.com
|
// Homepage: http://www.chcode.com
|
||||||
// EMail: support@chcode.com
|
// EMail: support@chcode.com
|
||||||
// Copyright (c) 1997-2016 CHSOFT
|
// Copyright (c) 1997-2020 CHSOFT
|
||||||
// ================================================================
|
// ================================================================
|
||||||
var GB = {
|
var GB = {
|
||||||
colors: ['#000000','#313131','#434343','#535353','#666666','#999999','#a0a0a0','#b5b5b5','#c0c0c0','#dcdcdc','#eeeeee','#ffffff',
|
colors: ['#000000','#313131','#434343','#535353','#666666','#999999','#a0a0a0','#b5b5b5','#c0c0c0','#dcdcdc','#eeeeee','#ffffff',
|
||||||
@@ -517,7 +517,7 @@ function setConfig() {
|
|||||||
useModifyTable : true,
|
useModifyTable : true,
|
||||||
useMap : true,
|
useMap : true,
|
||||||
useTextBlock : true,
|
useTextBlock : true,
|
||||||
useFullScreen : true,
|
useFullScreen : false,
|
||||||
usePageBreak : false
|
usePageBreak : false
|
||||||
},
|
},
|
||||||
base, elem, i, editorUri, locationAbs;
|
base, elem, i, editorUri, locationAbs;
|
||||||
@@ -557,9 +557,9 @@ function setConfig() {
|
|||||||
this.currentRS = {};
|
this.currentRS = {};
|
||||||
this.resizeEditor = {};
|
this.resizeEditor = {};
|
||||||
this.setFullScreenMode = false;
|
this.setFullScreenMode = false;
|
||||||
this.modalElementZIndex = 1001;
|
this.modalElementZIndex = 10001;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.templateFile = 'template.xml';
|
this.templateFile = this.undefined(this.browser.mobile) ? 'template.xml' : 'template-mobile.xml';
|
||||||
this.templatePath = config.editorPath + this.templateFile;
|
this.templatePath = config.editorPath + this.templateFile;
|
||||||
this.W3CRange = !(this.undefined(window.getSelection));
|
this.W3CRange = !(this.undefined(window.getSelection));
|
||||||
this.inputForm = 'textAreaId';
|
this.inputForm = 'textAreaId';
|
||||||
@@ -1082,31 +1082,10 @@ cheditor.prototype = {
|
|||||||
showError('현재 브라우저에서 ' + self.templateFile + ' 파일을 사용할 수 없습니다.');
|
showError('현재 브라우저에서 ' + self.templateFile + ' 파일을 사용할 수 없습니다.');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/*
|
|
||||||
getCDATASection : function (node) {
|
|
||||||
var elem, data;
|
|
||||||
if (node.hasChildNodes()) {
|
|
||||||
elem = node.firstChild;
|
|
||||||
while (elem && elem.nodeType !== GB.node.cdata_section) {
|
|
||||||
elem = elem.nextSibling;
|
|
||||||
}
|
|
||||||
if (elem && elem.nodeType === GB.node.cdata_section) {
|
|
||||||
data = elem.data;
|
|
||||||
data = data.replace(/\n/g, '');
|
|
||||||
data = data.replace(/(\s+?)<([^>]*)>/g, '<$2>');
|
|
||||||
data = this.trimSpace(data);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
*/
|
|
||||||
getCDATASection : function (node) {
|
getCDATASection : function (node) {
|
||||||
var text = node.textContent || node.text;
|
var text = node.textContent || node.text;
|
||||||
text = text.replace(/\n/g, '');
|
return this.trimSpace(text.replace(/\n/g, '').replace(/(\s+?)<([^>]*)>/g, '<$2>'));
|
||||||
text = text.replace(/(\s+?)<([^>]*)>/g, '<$2>');
|
|
||||||
text = this.trimSpace(text);
|
|
||||||
return text;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
setToolbarBgPosition : function (elem, attr) {
|
setToolbarBgPosition : function (elem, attr) {
|
||||||
@@ -2044,7 +2023,7 @@ cheditor.prototype = {
|
|||||||
container.style.width = self.config.editorWidth;
|
container.style.width = self.config.editorWidth;
|
||||||
self.cheditor.container = container;
|
self.cheditor.container = container;
|
||||||
},
|
},
|
||||||
/*
|
|
||||||
loadTemplate : function (xmlDoc) {
|
loadTemplate : function (xmlDoc) {
|
||||||
var self = this,
|
var self = this,
|
||||||
tmpl = xmlDoc.getElementsByTagName('Template').item(0),
|
tmpl = xmlDoc.getElementsByTagName('Template').item(0),
|
||||||
@@ -2091,55 +2070,6 @@ cheditor.prototype = {
|
|||||||
self.cheditor.htmlEditable.style.visibility = 'hidden';
|
self.cheditor.htmlEditable.style.visibility = 'hidden';
|
||||||
container.appendChild(self.cheditor.htmlEditable);
|
container.appendChild(self.cheditor.htmlEditable);
|
||||||
},
|
},
|
||||||
*/
|
|
||||||
|
|
||||||
loadTemplate : function (xmlDoc) {
|
|
||||||
var cdata, container, dragHandle, html, modalFrame, popupWindow, tmpDiv, tmpl, toolbar;
|
|
||||||
tmpl = xmlDoc.getElementsByTagName('Template').item(0);
|
|
||||||
if (!tmpl) {
|
|
||||||
throw 'Template 노드를 설정할 수 없습니다.';
|
|
||||||
}
|
|
||||||
cdata = tmpl.getElementsByTagName('Container').item(0).getElementsByTagName('Html').item(0);
|
|
||||||
if (!cdata) {
|
|
||||||
throw 'XML CDATA 오류';
|
|
||||||
}
|
|
||||||
html = this.getCDATASection(cdata);
|
|
||||||
tmpDiv = document.createElement('div');
|
|
||||||
tmpDiv.innerHTML = html;
|
|
||||||
container = tmpDiv.firstChild;
|
|
||||||
|
|
||||||
toolbar = tmpl.getElementsByTagName('Toolbar').item(0);
|
|
||||||
this.createEditorElement(container, toolbar);
|
|
||||||
|
|
||||||
cdata = tmpl.getElementsByTagName('PopupWindow').item(0).getElementsByTagName('Html').item(0);
|
|
||||||
if (!cdata) {
|
|
||||||
throw 'XML CDATA 오류';
|
|
||||||
}
|
|
||||||
html = this.getCDATASection(cdata);
|
|
||||||
tmpDiv.innerHTML = html;
|
|
||||||
popupWindow = tmpDiv.firstChild;
|
|
||||||
this.cheditor.popupElem = popupWindow;
|
|
||||||
|
|
||||||
dragHandle = popupWindow.firstChild;
|
|
||||||
this.cheditor.dragHandle = dragHandle;
|
|
||||||
this.cheditor.popupTitle = dragHandle.getElementsByTagName('label')[0];
|
|
||||||
this.cheditor.popupFrameWrapper = dragHandle.nextSibling;
|
|
||||||
container.appendChild(popupWindow);
|
|
||||||
|
|
||||||
modalFrame = document.createElement('div');
|
|
||||||
modalFrame.className = 'cheditor-modalPopupTransparent';
|
|
||||||
this.cheditor.modalBackground = modalFrame;
|
|
||||||
this.cheditor.modalBackground.id = 'popupModalBackground';
|
|
||||||
this.cheditor.modalBackground.className = 'cheditor-popupModalBackground';
|
|
||||||
container.parentNode.insertBefore(modalFrame, container);
|
|
||||||
|
|
||||||
this.cheditor.htmlEditable = document.createElement('iframe');
|
|
||||||
this.cheditor.htmlEditable.style.display = 'none';
|
|
||||||
this.cheditor.htmlEditable.style.width = '1px';
|
|
||||||
this.cheditor.htmlEditable.style.height = '1px';
|
|
||||||
this.cheditor.htmlEditable.style.visibility = 'hidden';
|
|
||||||
container.appendChild(this.cheditor.htmlEditable);
|
|
||||||
},
|
|
||||||
|
|
||||||
imageEvent : function (img, action) {
|
imageEvent : function (img, action) {
|
||||||
var self = this,
|
var self = this,
|
||||||
@@ -5063,7 +4993,12 @@ cheditor.prototype = {
|
|||||||
if (!(this.undefined(GB.popupWindow[popupName]))) {
|
if (!(this.undefined(GB.popupWindow[popupName]))) {
|
||||||
var popup = GB.popupWindow[popupName];
|
var popup = GB.popupWindow[popupName];
|
||||||
if (popupName === 'ImageUpload' && window.File && window.FileReader && window.FileList && window.Blob) {
|
if (popupName === 'ImageUpload' && window.File && window.FileReader && window.FileList && window.Blob) {
|
||||||
popup.tmpl = 'image.html5.html';
|
if (this.browser.mobile) {
|
||||||
|
popup.tmpl = 'image.html5.m.html';
|
||||||
|
popup.width = 450; // 팝업 윈도우 가로 폭 크기(px)
|
||||||
|
} else {
|
||||||
|
popup.tmpl = 'image.html5.html';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.popupWinLoad(popup);
|
this.popupWinLoad(popup);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -134,3 +134,14 @@ body {
|
|||||||
font-family: 'Malgun Gothic', gulim, tahoma, helvetica;
|
font-family: 'Malgun Gothic', gulim, tahoma, helvetica;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.webgl_logo_wrapper {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 40px;
|
||||||
|
border-top: #cccccc 1px solid;
|
||||||
|
}
|
||||||
|
.webgl_logo_wrapper img {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
#uploadWindow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clear { clear: both; }
|
||||||
|
|
||||||
|
#container {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.imageListWrapperHtml5, .imageListWrapper, .dragOver {
|
||||||
|
background-color: #fff;
|
||||||
|
position: absolute;
|
||||||
|
height: 250px;
|
||||||
|
width: 255px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 2px #66b2ff solid;
|
||||||
|
}
|
||||||
|
/* .imageListWrapperHtml5 {
|
||||||
|
border: 2px #66b2ff dashed;
|
||||||
|
} */
|
||||||
|
.imageListWrapper {
|
||||||
|
border: 1px #aaa solid;
|
||||||
|
box-shadow: 0 0 3px #aaa;
|
||||||
|
}
|
||||||
|
.dragOver {
|
||||||
|
border: 2px #ff3399 dashed;
|
||||||
|
}
|
||||||
|
#imageInfoBox {
|
||||||
|
position: absolute;
|
||||||
|
left: 300px;
|
||||||
|
}
|
||||||
|
.imageInfoTitle {
|
||||||
|
text-align: center;
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
width: 130px;
|
||||||
|
font-family: "Malgun Gothic",gulim;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.imageInfoTitle span {
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: -1px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
.remove-button {
|
||||||
|
width: 93px;
|
||||||
|
height: 22px;
|
||||||
|
cursor: pointer;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.imageBox, .imageBoxHighlighted {
|
||||||
|
width: 120px;
|
||||||
|
height: 90px;
|
||||||
|
margin: 3px 3px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.imageBox_theImage,.imageBox_theImage_over {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
.imageBox .imageBox_theImage{
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
background-image: url('../icons/dot.gif');
|
||||||
|
background-position: center center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
.imageBox .imageBox_theImage_over {
|
||||||
|
border: 1px solid #a0a0a0;
|
||||||
|
background-image: url('../icons/dot.gif');
|
||||||
|
background-position: center center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.imageBoxHighlighted .imageBox_theImage {
|
||||||
|
border: 1px solid #ff6600;
|
||||||
|
}
|
||||||
|
.imageBoxHighlighted .imageBox_theImage_over {
|
||||||
|
border: 1px solid #ff6600;
|
||||||
|
background-image: url('../icons/dot.gif');
|
||||||
|
background-position: center center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.removeButton, .removeButton_over {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
background-image: url(../icons/imageUpload/cross-small.png);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
}
|
||||||
|
.removeButton {
|
||||||
|
border: 1px solid #a0a0a0;
|
||||||
|
}
|
||||||
|
.removeButton_over {
|
||||||
|
border: 1px solid #808080;
|
||||||
|
}
|
||||||
|
#insertionMarker {
|
||||||
|
height: 102px;
|
||||||
|
width: 6px;
|
||||||
|
position: absolute;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#insertionMarker img {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#dragDropContent{
|
||||||
|
position: absolute;
|
||||||
|
z-index: 10;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
width: 64px;
|
||||||
|
height: 22px;
|
||||||
|
margin: 0 2px;
|
||||||
|
cursor: pointer;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: #fff;
|
||||||
|
line-height: 1em;
|
||||||
|
font-family: 'Malgun Gothic', gulim, tahoma, helvetica;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
@@ -14,6 +14,8 @@ a.cheditor-tag-path-elem:hover {
|
|||||||
border-top: 1px #ccc solid;
|
border-top: 1px #ccc solid;
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
}
|
}
|
||||||
.cheditor-tb-wrapper {
|
.cheditor-tb-wrapper {
|
||||||
border-right: 1px #ccc solid;
|
border-right: 1px #ccc solid;
|
||||||
@@ -21,11 +23,10 @@ a.cheditor-tag-path-elem:hover {
|
|||||||
border-bottom: 1px #ccc solid;
|
border-bottom: 1px #ccc solid;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
|
-webkit-box-sizing: inherit;
|
||||||
|
box-sizing: inherit;
|
||||||
background-color: #f0f0f0;
|
background-color: #f0f0f0;
|
||||||
zoom:1;
|
|
||||||
height:auto ! important;
|
|
||||||
}
|
}
|
||||||
.cheditor-tb-wrapper:after{display:block;visibility:hidden;clear:both;content:""}
|
|
||||||
.cheditor-tb-wrapper-readonly {
|
.cheditor-tb-wrapper-readonly {
|
||||||
border-right: 1px #ccc solid;
|
border-right: 1px #ccc solid;
|
||||||
border-left: 1px #ccc solid;
|
border-left: 1px #ccc solid;
|
||||||
@@ -423,6 +424,8 @@ a.cheditor-tag-path-elem:hover {
|
|||||||
box-shadow: 0 0 10px #bbb;
|
box-shadow: 0 0 10px #bbb;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
}
|
}
|
||||||
.cheditor-popup-cmd-button {
|
.cheditor-popup-cmd-button {
|
||||||
width: 64px;
|
width: 64px;
|
||||||
@@ -437,6 +440,8 @@ a.cheditor-tag-path-elem:hover {
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
border: none;
|
border: none;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cheditor-popup-cframe iframe {
|
.cheditor-popup-cframe iframe {
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
@@ -6,7 +6,7 @@
|
|||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||||
<link rel="stylesheet" type="text/css" href="../css/imageupload.css" />
|
<link rel="stylesheet" type="text/css" href="../css/imageupload.css" />
|
||||||
<script src="js/dialog.js" type="text/javascript"></script>
|
<script src="js/dialog.js" type="text/javascript"></script>
|
||||||
<script src="js/image.html5.js" type="text/javascript"></script>
|
<script src="js/image.html5.js" type="text/javascript"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="uploadWindow">
|
<div id="uploadWindow">
|
||||||
@@ -65,9 +65,7 @@
|
|||||||
<div style="margin-top:5px;font-size: 12px">
|
<div style="margin-top:5px;font-size: 12px">
|
||||||
<input type="checkbox" name="use_spacer" value="1" checked="checked" />사진 여백 넣기
|
<input type="checkbox" name="use_spacer" value="1" checked="checked" />사진 여백 넣기
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align:center;margin-top:15px">
|
<div id="webgl_logo_wrapper" class="webgl_logo_wrapper"></div>
|
||||||
<span style="font-size:12px;font-family:Malgun Gothic,dotum,tahoma;">(전체 사진에 적용됨)</span>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,78 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>CHEditor</title>
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="../css/imageupload.m.css" />
|
||||||
|
<script src="js/dialog.js" type="text/javascript"></script>
|
||||||
|
<script src="js/image.html5.m.js" type="text/javascript"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="uploadWindow">
|
||||||
|
<div id="container">
|
||||||
|
<div style="margin: 0px 0px 10px 0px;">
|
||||||
|
<img src="../icons/imageUpload/remove_all.gif" class="remove-button" onclick="removeImages();"
|
||||||
|
alt="" style="vertical-align: middle" />
|
||||||
|
<input type="file" name="imageUpload[]" accept="image/jpeg,image/png,image/gif" id="inputImageUpload" multiple="multiple"
|
||||||
|
onchange="selectedFiles(event)" style="vertical-align: middle; visibility: hidden; width: 0px"/>
|
||||||
|
<img id="fileSelectButton" src="../icons/imageUpload/add.gif" alt="image button" onclick="inputImageUpload.click()"
|
||||||
|
style="vertical-align: middle; margin-left: -5px; cursor: pointer"/>
|
||||||
|
<span style="left:308px; top:5px;position:absolute;"><span id="imageCount">0</span>장 / 최대 <span id="maxImageNum"></span>장 사진</span>
|
||||||
|
</div>
|
||||||
|
<div id="imageListWrapper" class="imageListWrapperHtml5"></div>
|
||||||
|
<div id="imageInfoBox">
|
||||||
|
<div>
|
||||||
|
<div class="imageInfoTitle"><span>크기 줄이기</span></div>
|
||||||
|
<div style="text-align:left;font-size:12px;margin-top:7px;line-height:1.4em; padding-left: 5px">
|
||||||
|
<div>
|
||||||
|
<span style="vertical-align: middle">가로:</span>
|
||||||
|
<select name="resizeSelectBox" id="idResizeSelectBox" style="font-size: 12px; vertical-align: middle"></select>
|
||||||
|
<span style="vertical-align: middle">픽셀</span>
|
||||||
|
<div style="margin-top: 5px; display:none" id="idUserInputWrapper">
|
||||||
|
<span style="vertical-align: middle">입력:</span>
|
||||||
|
<input type="text" maxlength="4"
|
||||||
|
style="font-size: 12px; width:40px; vertical-align: middle" name="resizeWidth" id="idResizeWidth" />
|
||||||
|
<span style="vertical-align: middle">픽셀</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 10px">사진 높이는 자동으로 설정됩니다.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 20px">
|
||||||
|
<div class="imageInfoTitle"><span>정렬</span></div>
|
||||||
|
<form name="fm_alignment" id="id_alignment" style="display: inline">
|
||||||
|
<table style="margin:7px auto 10px auto;border:0;padding:0;border-spacing:0">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: center">
|
||||||
|
<img src="../icons/image_align_left.png" alt="" /><br />
|
||||||
|
<input type="radio" name="alignment" value="left" checked="checked" />
|
||||||
|
</td>
|
||||||
|
<td style="text-align: center">
|
||||||
|
<img src="../icons/image_align_center.png" style="margin: 0px 5px" alt="" /><br />
|
||||||
|
<input type="radio" name="alignment" value="center" />
|
||||||
|
</td>
|
||||||
|
<td style="text-align: center">
|
||||||
|
<img src="../icons/image_align_right.png" alt="" /><br />
|
||||||
|
<input type="radio" name="alignment" value="right" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div style="margin-top:5px;font-size: 12px">
|
||||||
|
<input type="checkbox" name="para" value="1" checked="checked" />한줄에 한 장씩 넣기
|
||||||
|
</div>
|
||||||
|
<div style="margin-top:5px;font-size: 12px">
|
||||||
|
<input type="checkbox" name="use_spacer" value="1" checked="checked" />사진 여백 넣기
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
<div style="text-align:center;top:310px;width:100%;position:absolute;" id="buttonWrapper"></div>
|
||||||
|
</div>
|
||||||
|
<div id="dragDropContent"></div>
|
||||||
|
<div id="removeImageButton" class="removeButton" style="width:13px;height:13px"></div>
|
||||||
|
<div id="insertionMarker"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
// -------------------------------------------------------
|
||||||
|
// CHEditor WebGL Fragment Shader
|
||||||
|
// -------------------------------------------------------
|
||||||
|
precision highp float;
|
||||||
|
|
||||||
|
uniform sampler2D u_image;
|
||||||
|
uniform vec2 u_resolution;
|
||||||
|
uniform vec2 u_srcResolution;
|
||||||
|
|
||||||
|
vec4 getTextureColor(vec2 loc) {
|
||||||
|
return texture2D(u_image, loc / u_srcResolution);
|
||||||
|
}
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
vec2 ratio = u_srcResolution / u_resolution;
|
||||||
|
vec2 ratioHalf = ceil(ratio / 1.0);
|
||||||
|
vec2 loc = gl_FragCoord.xy;
|
||||||
|
|
||||||
|
loc.y = u_resolution.y - loc.y;
|
||||||
|
|
||||||
|
float weight = 0.0;
|
||||||
|
float weights = 0.0;
|
||||||
|
float weights_alpha = 0.0;
|
||||||
|
vec3 gx_rgb = vec3(0.0);
|
||||||
|
float gx_a = 0.0;
|
||||||
|
float center_y = (loc.y + 0.5) * ratio.y;
|
||||||
|
|
||||||
|
float y = floor(loc.y * ratio.y);
|
||||||
|
float y_length = (loc.y + 1.0) * ratio.y;
|
||||||
|
|
||||||
|
for (int i = 0; i < 5000; i++) {
|
||||||
|
if (y >= y_length) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
float dy = abs(center_y - (y + 0.5)) / ratioHalf.y;
|
||||||
|
float center_x = (loc.x + 0.5) * ratio.x;
|
||||||
|
float part_w = dy * dy;
|
||||||
|
float x = floor(loc.x * ratio.x);
|
||||||
|
float x_length = (loc.x + 1.0) * ratio.x;
|
||||||
|
|
||||||
|
for (int j = 0; j < 5000; j++) {
|
||||||
|
if (x >= x_length) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
float dx = abs(center_x - (x + 0.5)) / ratioHalf.x;
|
||||||
|
float w = sqrt(part_w + dx * dx);
|
||||||
|
|
||||||
|
if (w >= -1.0 && w <= 1.0) {
|
||||||
|
// Hermite 필터
|
||||||
|
weight = 2.0 * w * w * w - 3.0 * w * w + 1.0;
|
||||||
|
if (weight > 0.0) {
|
||||||
|
vec4 pixel = getTextureColor(vec2(x, y)) * 255.0;
|
||||||
|
|
||||||
|
// 알파 채널
|
||||||
|
gx_a += weight * pixel.a;
|
||||||
|
weights_alpha += weight;
|
||||||
|
|
||||||
|
if (pixel.a < 255.0) {
|
||||||
|
weight = weight * pixel.a / 250.0;
|
||||||
|
}
|
||||||
|
gx_rgb += weight * pixel.rgb;
|
||||||
|
weights += weight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
|
||||||
|
gx_rgb = (gx_rgb / weights) / 255.0;
|
||||||
|
gx_a = (gx_a / weights_alpha) / 255.0;
|
||||||
|
|
||||||
|
gl_FragColor = vec4(gx_rgb, gx_a);
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
// CHEditor 5
|
// CHEditor 5
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
var activeImage = null,
|
var activeImage = null,
|
||||||
browser = null,
|
browser = null,
|
||||||
button,
|
button,
|
||||||
@@ -29,14 +30,160 @@ var activeImage = null,
|
|||||||
offsetX_marker = -3,
|
offsetX_marker = -3,
|
||||||
offsetY_marker = -3,
|
offsetY_marker = -3,
|
||||||
readyToMove = false,
|
readyToMove = false,
|
||||||
selectedFilesNum = 0,
|
|
||||||
showThumbnailSize = { width: 120, height: 90 },
|
showThumbnailSize = { width: 120, height: 90 },
|
||||||
tmpLeft = 0,
|
tmpLeft = 0,
|
||||||
tmpTop = 0,
|
tmpTop = 0,
|
||||||
uploadImagePath = '',
|
uploadImagePath = '',
|
||||||
uploadMaxNumber = 12,
|
uploadMaxNumber = 12,
|
||||||
uploadScript;
|
uploadScript,
|
||||||
// deleteScript;
|
useWebGL = false;
|
||||||
|
|
||||||
|
if (ArrayBuffer && !ArrayBuffer.prototype.slice) {
|
||||||
|
ArrayBuffer.prototype.slice = function (start, end) {
|
||||||
|
var len = this.byteLength;
|
||||||
|
start || isFinite(start) && 0 < start && start < len || (start = 0);
|
||||||
|
end || (isFinite(end && start < end && end < len) || (end = len - 1));
|
||||||
|
return new DataView(this, start, end).buffer;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function GLScale(options) {
|
||||||
|
if (!(this instanceof GLScale)) {
|
||||||
|
return new GLScale(options);
|
||||||
|
}
|
||||||
|
this.precompile(options);
|
||||||
|
return this.scale.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
GLScale.prototype.precompile = function (options) {
|
||||||
|
var ctxOptions, vertex, fragment, resolutionLocation, positionLocation;
|
||||||
|
|
||||||
|
this.canvas = document.createElement('canvas');
|
||||||
|
this.canvas.width = options.width;
|
||||||
|
this.canvas.height = options.height;
|
||||||
|
|
||||||
|
ctxOptions = {preserveDrawingBuffer: true};
|
||||||
|
this.gl = this.canvas.getContext('webgl', ctxOptions) || this.canvas.getContext('experimental-webgl', ctxOptions);
|
||||||
|
|
||||||
|
if (!this.gl) {
|
||||||
|
throw new Error('Could not initialize webgl context');
|
||||||
|
}
|
||||||
|
|
||||||
|
vertex = GLScale.compileShader(this.gl, GLScale.Hermite.vertex, this.gl.VERTEX_SHADER);
|
||||||
|
fragment = GLScale.compileShader(this.gl, GLScale.Hermite.fragment, this.gl.FRAGMENT_SHADER);
|
||||||
|
|
||||||
|
this.program = GLScale.createProgram(this.gl, vertex, fragment);
|
||||||
|
this.gl.useProgram(this.program);
|
||||||
|
|
||||||
|
this.gl.bindTexture(this.gl.TEXTURE_2D, this.gl.createTexture());
|
||||||
|
|
||||||
|
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);
|
||||||
|
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);
|
||||||
|
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
|
||||||
|
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
|
||||||
|
|
||||||
|
resolutionLocation = this.gl.getUniformLocation(this.program, 'u_resolution');
|
||||||
|
this.gl.uniform2f(resolutionLocation, options.width, options.height);
|
||||||
|
|
||||||
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.gl.createBuffer());
|
||||||
|
positionLocation = this.gl.getAttribLocation(this.program, 'a_position');
|
||||||
|
this.gl.enableVertexAttribArray(positionLocation);
|
||||||
|
this.gl.vertexAttribPointer(positionLocation, 2, this.gl.FLOAT, false, 0, 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
GLScale.prototype.scale = function (image, cb) {
|
||||||
|
var srcResolutionLocation;
|
||||||
|
if (typeof image === 'string') {
|
||||||
|
return this.loadImage(image, function (err, image) {
|
||||||
|
if (!err) {
|
||||||
|
return this.scale(image, cb);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, image);
|
||||||
|
|
||||||
|
srcResolutionLocation = this.gl.getUniformLocation(this.program, 'u_srcResolution');
|
||||||
|
this.gl.uniform2f(srcResolutionLocation, image.width, image.height);
|
||||||
|
|
||||||
|
this.setRectangle(0, 0, image.width, image.height);
|
||||||
|
this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);
|
||||||
|
this.gl.finish();
|
||||||
|
|
||||||
|
if (cb) {
|
||||||
|
cb(this.canvas);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
GLScale.prototype.setRectangle = function (x, y, width, height) {
|
||||||
|
var x1 = x,
|
||||||
|
x2 = x + width,
|
||||||
|
y1 = y,
|
||||||
|
y2 = y + height;
|
||||||
|
|
||||||
|
this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([
|
||||||
|
x1, y1,
|
||||||
|
x2, y1,
|
||||||
|
x1, y2,
|
||||||
|
x1, y2,
|
||||||
|
x2, y1,
|
||||||
|
x2, y2
|
||||||
|
]), this.gl.STATIC_DRAW);
|
||||||
|
};
|
||||||
|
|
||||||
|
GLScale.loadImage = function (url, cb) {
|
||||||
|
var image = new Image();
|
||||||
|
image.onload = cb.bind(this, null, image);
|
||||||
|
image.onerror = cb.bind(this);
|
||||||
|
image.src = url;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
GLScale.prototype.loadImage = GLScale.loadImage;
|
||||||
|
|
||||||
|
GLScale.toBlob = (function toBlob() {
|
||||||
|
var CanvasPrototype = window.HTMLCanvasElement.prototype;
|
||||||
|
|
||||||
|
if (CanvasPrototype.toBlob) {
|
||||||
|
return CanvasPrototype.toBlob;
|
||||||
|
}
|
||||||
|
|
||||||
|
return function (callback, type, quality) {
|
||||||
|
var binStr = atob(this.toDataURL(type, quality).split(',')[1]),
|
||||||
|
len = binStr.length,
|
||||||
|
arr = new Uint8Array(len), i = 0;
|
||||||
|
|
||||||
|
for (; i < len; i++) {
|
||||||
|
arr[i] = binStr.charCodeAt(i);
|
||||||
|
}
|
||||||
|
callback(new Blob([arr], {type: type || 'image/png'}));
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
|
GLScale.compileShader = function (gl, shaderSource, shaderType) {
|
||||||
|
var shader = gl.createShader(shaderType);
|
||||||
|
|
||||||
|
gl.shaderSource(shader, shaderSource);
|
||||||
|
gl.compileShader(shader);
|
||||||
|
|
||||||
|
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
||||||
|
throw new Error('Could not compile shader: ' + gl.getShaderInfoLog(shader));
|
||||||
|
}
|
||||||
|
return shader;
|
||||||
|
};
|
||||||
|
|
||||||
|
GLScale.createProgram = function (gl, vertexShader, fragmentShader) {
|
||||||
|
var program = gl.createProgram();
|
||||||
|
|
||||||
|
gl.attachShader(program, vertexShader);
|
||||||
|
gl.attachShader(program, fragmentShader);
|
||||||
|
gl.linkProgram(program);
|
||||||
|
|
||||||
|
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
||||||
|
throw new Error('Program failed to link: ' + gl.getProgramInfoLog (program));
|
||||||
|
}
|
||||||
|
return program;
|
||||||
|
};
|
||||||
|
|
||||||
function createInsertionMaker() {
|
function createInsertionMaker() {
|
||||||
var wrapper = document.getElementById('insertionMarker'),
|
var wrapper = document.getElementById('insertionMarker'),
|
||||||
@@ -76,7 +223,7 @@ function showContents() {
|
|||||||
spacerNo = 1, i, imgBox, theImg, lastSpacer;
|
spacerNo = 1, i, imgBox, theImg, lastSpacer;
|
||||||
|
|
||||||
for (i = 0; i < uploadMaxNumber; i++) {
|
for (i = 0; i < uploadMaxNumber; i++) {
|
||||||
if (i > 0 && ((i % 4) === 0)) {
|
if (i > 0 && i % 4 === 0) {
|
||||||
imageListWrapper.appendChild(spacer(spacerNo++));
|
imageListWrapper.appendChild(spacer(spacerNo++));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +236,7 @@ function showContents() {
|
|||||||
imgBox.appendChild(theImg);
|
imgBox.appendChild(theImg);
|
||||||
|
|
||||||
imageListWrapper.appendChild(imgBox);
|
imageListWrapper.appendChild(imgBox);
|
||||||
if (i === (uploadMaxNumber - 1)) {
|
if (i === uploadMaxNumber - 1) {
|
||||||
lastSpacer = spacer(spacerNo);
|
lastSpacer = spacer(spacerNo);
|
||||||
lastSpacer.style.height = "7px";
|
lastSpacer.style.height = "7px";
|
||||||
imageListWrapper.appendChild(lastSpacer);
|
imageListWrapper.appendChild(lastSpacer);
|
||||||
@@ -130,7 +277,7 @@ function getTopPos(inputObj) {
|
|||||||
inputObj = inputObj.offsetParent;
|
inputObj = inputObj.offsetParent;
|
||||||
while (inputObj) {
|
while (inputObj) {
|
||||||
if (inputObj.tagName.toLowerCase() !== 'html') {
|
if (inputObj.tagName.toLowerCase() !== 'html') {
|
||||||
returnValue += (inputObj.offsetTop - inputObj.scrollTop);
|
returnValue += inputObj.offsetTop - inputObj.scrollTop;
|
||||||
if (browser.msie) {
|
if (browser.msie) {
|
||||||
returnValue += inputObj.clientTop;
|
returnValue += inputObj.clientTop;
|
||||||
}
|
}
|
||||||
@@ -182,7 +329,7 @@ function reOrder() {
|
|||||||
imgBox[i].className = 'imageBox';
|
imgBox[i].className = 'imageBox';
|
||||||
imgBox[i].firstChild.className = 'imageBox_theImage';
|
imgBox[i].firstChild.className = 'imageBox_theImage';
|
||||||
|
|
||||||
if (imgNum > 0 && (imgNum % 4) === 0) {
|
if (imgNum > 0 && imgNum % 4 === 0) {
|
||||||
breakline.push(imgBox[i].id);
|
breakline.push(imgBox[i].id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,28 +346,6 @@ function reOrder() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function img_delete_post(el){
|
|
||||||
if( el.firstChild.tagName.toLowerCase() === 'img' ){
|
|
||||||
var src = el.firstChild.getAttribute('src'),
|
|
||||||
filesrc = src.replace(/^.*[\\\/]/, ''),
|
|
||||||
data = "filesrc="+filesrc;
|
|
||||||
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.open('POST', deleteScript, true);
|
|
||||||
//Send the proper header information along with the request
|
|
||||||
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
|
||||||
|
|
||||||
xhr.addEventListener("error", function (evt) {
|
|
||||||
try {
|
|
||||||
console.log("파일 전송 중 오류: " + evt.target.error.code);
|
|
||||||
} catch(ex) {
|
|
||||||
}
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
xhr.send(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function showDelete() {
|
function showDelete() {
|
||||||
var self = this, btn;
|
var self = this, btn;
|
||||||
|
|
||||||
@@ -231,7 +356,7 @@ function showDelete() {
|
|||||||
getDivCoordinates();
|
getDivCoordinates();
|
||||||
self.className = 'imageBox_theImage_over';
|
self.className = 'imageBox_theImage_over';
|
||||||
btn = document.getElementById('removeImageButton');
|
btn = document.getElementById('removeImageButton');
|
||||||
btn.style.left = (showThumbnailSize.width - parseInt(btn.style.width, 10) - 1) + 'px';
|
btn.style.left = showThumbnailSize.width - parseInt(btn.style.width, 10) - 1 + 'px';
|
||||||
btn.style.top = '-1px';
|
btn.style.top = '-1px';
|
||||||
|
|
||||||
self.appendChild(btn);
|
self.appendChild(btn);
|
||||||
@@ -250,7 +375,6 @@ function showDelete() {
|
|||||||
var images = self.getElementsByTagName('img'), i, moveobj, target;
|
var images = self.getElementsByTagName('img'), i, moveobj, target;
|
||||||
|
|
||||||
for (i = 0; i < images.length; i++) {
|
for (i = 0; i < images.length; i++) {
|
||||||
img_delete_post(self);
|
|
||||||
self.removeChild(images[i]);
|
self.removeChild(images[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,6 +403,7 @@ function showDelete() {
|
|||||||
this.style.display = 'none';
|
this.style.display = 'none';
|
||||||
document.body.appendChild(ev.target);
|
document.body.appendChild(ev.target);
|
||||||
oEditor.removeEvent(self, 'mouseover', showDelete);
|
oEditor.removeEvent(self, 'mouseover', showDelete);
|
||||||
|
self.removeAttribute('title');
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,16 +443,16 @@ function imgComplete(img, imgSize, boxId) {
|
|||||||
|
|
||||||
if (imgSize.width > showThumbnailSize.width || imgSize.height > showThumbnailSize.height) {
|
if (imgSize.width > showThumbnailSize.width || imgSize.height > showThumbnailSize.height) {
|
||||||
if (imgSize.width > imgSize.height) {
|
if (imgSize.width > imgSize.height) {
|
||||||
resizeW = (imgSize.width > showThumbnailSize.width) ? showThumbnailSize.width : imgSize.width;
|
resizeW = imgSize.width > showThumbnailSize.width ? showThumbnailSize.width : imgSize.width;
|
||||||
resizeH = Math.round((imgSize.height * resizeW) / imgSize.width);
|
resizeH = Math.round(imgSize.height * resizeW / imgSize.width);
|
||||||
} else {
|
} else {
|
||||||
resizeH = (imgSize.height > showThumbnailSize.height) ? showThumbnailSize.height : imgSize.height;
|
resizeH = imgSize.height > showThumbnailSize.height ? showThumbnailSize.height : imgSize.height;
|
||||||
resizeW = Math.round((imgSize.width * resizeH) / imgSize.height);
|
resizeW = Math.round(imgSize.width * resizeH / imgSize.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resizeH > showThumbnailSize.height) {
|
if (resizeH > showThumbnailSize.height) {
|
||||||
resizeH = (imgSize.height > showThumbnailSize.height) ? showThumbnailSize.height : imgSize.height;
|
resizeH = imgSize.height > showThumbnailSize.height ? showThumbnailSize.height : imgSize.height;
|
||||||
resizeW = Math.round((imgSize.width * resizeH) / imgSize.height);
|
resizeW = Math.round(imgSize.width * resizeH / imgSize.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -357,6 +482,7 @@ function imgComplete(img, imgSize, boxId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
elem.style.backgroundImage = "url('" + uploadImagePath + "/dot.gif')";
|
elem.style.backgroundImage = "url('" + uploadImagePath + "/dot.gif')";
|
||||||
|
setElemTitle(elem, imgSize.width, imgSize.height);
|
||||||
oEditor.addEvent(elem, 'mouseover', showDelete);
|
oEditor.addEvent(elem, 'mouseover', showDelete);
|
||||||
elem.onmouseout = function () {
|
elem.onmouseout = function () {
|
||||||
this.className = 'imageBox_theImage';
|
this.className = 'imageBox_theImage';
|
||||||
@@ -366,26 +492,30 @@ function imgComplete(img, imgSize, boxId) {
|
|||||||
setImageCount();
|
setImageCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setElemTitle(elem, width, height) {
|
||||||
|
elem.setAttribute('title', 'Width: ' + width + 'px, Height: ' + height + 'px');
|
||||||
|
}
|
||||||
|
|
||||||
function showUploadWindow() {
|
function showUploadWindow() {
|
||||||
// ----------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------
|
||||||
var uploadWindow = document.getElementById("uploadWindow"),
|
var uploadWindow = document.getElementById("uploadWindow"),
|
||||||
uploadWindowWidth = 700,
|
uploadWindowWidth = 700,
|
||||||
winWidth, el, i, j, imgBox, img;
|
winWidth, el, i, j, imgBox, img;
|
||||||
|
|
||||||
if (!(oEditor.undefined(window.innerWidth))) {
|
if (!oEditor.undefined(window.innerWidth)) {
|
||||||
winWidth = window.innerWidth;
|
winWidth = window.innerWidth;
|
||||||
} else if (document.documentElement &&
|
} else if (document.documentElement &&
|
||||||
(!(oEditor.undefined(document.documentElement.clientWidth))) &&
|
!oEditor.undefined(document.documentElement.clientWidth) &&
|
||||||
document.documentElement.clientWidth !== 0) {
|
document.documentElement.clientWidth !== 0) {
|
||||||
winWidth = document.documentElement.clientWidth;
|
winWidth = document.documentElement.clientWidth;
|
||||||
} else if (document.body && (!(oEditor.undefined(document.body.clientWidth)))) {
|
} else if (document.body && !oEditor.undefined(document.body.clientWidth)) {
|
||||||
winWidth = document.body.clientWidth;
|
winWidth = document.body.clientWidth;
|
||||||
} else {
|
} else {
|
||||||
alert('현재 브라우저를 지원하지 않습니다.');
|
alert('현재 브라우저를 지원하지 않습니다.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uploadWindow.style.left = winWidth / 2 - (uploadWindowWidth / 2) + 'px';
|
uploadWindow.style.left = winWidth / 2 - uploadWindowWidth / 2 + 'px';
|
||||||
uploadWindow.style.display = "block";
|
uploadWindow.style.display = "block";
|
||||||
uploadWindow.style.width = uploadWindowWidth + 'px';
|
uploadWindow.style.width = uploadWindowWidth + 'px';
|
||||||
|
|
||||||
@@ -401,11 +531,9 @@ function showUploadWindow() {
|
|||||||
if (imgBox.className !== 'imageBox_theImage') {
|
if (imgBox.className !== 'imageBox_theImage') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (imgBox.firstChild && imgBox.firstChild.src === modifyImages[i]) {
|
||||||
if (imgBox.firstChild && (imgBox.firstChild.src === modifyImages[i])) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (imgBox.firstChild === null) {
|
if (imgBox.firstChild === null) {
|
||||||
img = new Image();
|
img = new Image();
|
||||||
img.src = modifyImages[i];
|
img.src = modifyImages[i];
|
||||||
@@ -439,11 +567,11 @@ function removeImages() {
|
|||||||
remove = img.getElementsByTagName('img');
|
remove = img.getElementsByTagName('img');
|
||||||
|
|
||||||
for (j = 0; j < remove.length; j++) {
|
for (j = 0; j < remove.length; j++) {
|
||||||
img_delete_post(img);
|
|
||||||
img.removeChild(remove[j]);
|
img.removeChild(remove[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
img.parentNode.className = 'imageBox';
|
img.parentNode.className = 'imageBox';
|
||||||
|
img.removeAttribute('title');
|
||||||
oEditor.removeEvent(img, 'mouseover', showDelete);
|
oEditor.removeEvent(img, 'mouseover', showDelete);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -491,7 +619,7 @@ function startMoveTimer() {
|
|||||||
|
|
||||||
if (moveTimer >= 0 && moveTimer < 10) {
|
if (moveTimer >= 0 && moveTimer < 10) {
|
||||||
moveTimer++;
|
moveTimer++;
|
||||||
setTimeout('startMoveTimer()', 8);
|
setTimeout(startMoveTimer(), 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (moveTimer === 5) {
|
if (moveTimer === 5) {
|
||||||
@@ -524,7 +652,7 @@ function getMouseButtn(e) {
|
|||||||
|
|
||||||
if (code) {
|
if (code) {
|
||||||
if (browser.msie && browser.version < 9) {
|
if (browser.msie && browser.version < 9) {
|
||||||
code = code === 1 ? 0 : (code === 4 ? 1 : code);
|
code = code === 1 ? 0 : code === 4 ? 1 : code;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -644,9 +772,9 @@ function dragDropMove(e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (divXPositions[prop] < leftPos &&
|
if (divXPositions[prop] < leftPos &&
|
||||||
(divXPositions[prop] + divWidth[prop] * 0.7) > leftPos &&
|
divXPositions[prop] + divWidth[prop] * 0.7 > leftPos &&
|
||||||
divYPositions[prop] < topPos &&
|
divYPositions[prop] < topPos &&
|
||||||
(divYPositions[prop] + divWidth[prop]) > topPos) {
|
divYPositions[prop] + divWidth[prop] > topPos) {
|
||||||
if (browser.msie) {
|
if (browser.msie) {
|
||||||
offsetX = offsetX_marker;
|
offsetX = offsetX_marker;
|
||||||
offsetY = offsetY_marker;
|
offsetY = offsetY_marker;
|
||||||
@@ -912,8 +1040,8 @@ DoUpload.prototype = {
|
|||||||
offset += 2;
|
offset += 2;
|
||||||
|
|
||||||
for (i = 0; i < tags; i++) {
|
for (i = 0; i < tags; i++) {
|
||||||
if (view.getUint16(offset + (i * 12), little) === 0x0112) {
|
if (view.getUint16(offset + i * 12, little) === 0x0112) {
|
||||||
return view.getUint16(offset + (i * 12) + 8, little);
|
return view.getUint16(offset + i * 12 + 8, little);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ((marker & 0xff00) !== 0xff00) {
|
} else if ((marker & 0xff00) !== 0xff00) {
|
||||||
@@ -951,62 +1079,140 @@ DoUpload.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
imageResize : function (image, filetype, resizeWidth, orientation, addWaterMark) {
|
imageResize : function (image, filetype, resizeWidth, orientation, addWaterMark) {
|
||||||
var canvas = document.createElement("canvas"),
|
var canvas, source_w = image.width, source_h = image.height,
|
||||||
width = image.width,
|
resize_h, resize_w, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
|
||||||
height = image.height,
|
source_img, resize_img, source_data, resize_data, j, i,
|
||||||
bitmapData, ctx, rotateImg, rotateW, rotateH, angle, step, offcanvas, offctx, dHeight, dWidth;
|
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r, center_x, center_y, x_start, x_stop,
|
||||||
|
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x,
|
||||||
|
ctx, gl, imageData = null;
|
||||||
|
|
||||||
// 카메라를 돌려서 찍은 경우, 높이를 가로 사이즈로 정한 다음 리사이징 처리. 이 경우, 파일 크기와 처리 속도가
|
|
||||||
// 증가한다.
|
|
||||||
|
|
||||||
// if (orientation === 6 || orientation === 8) {
|
|
||||||
// var ratio = resizeWidth / height;
|
|
||||||
// dHeight = height * ratio;
|
|
||||||
// dWidth = width * ratio;
|
|
||||||
// } else {
|
|
||||||
dHeight = Math.ceil(resizeWidth / width * height);
|
|
||||||
dWidth = resizeWidth;
|
|
||||||
// }
|
|
||||||
|
|
||||||
canvas.width = dWidth;
|
|
||||||
canvas.height = dHeight;
|
|
||||||
ctx = canvas.getContext("2d");
|
|
||||||
|
|
||||||
step = Math.ceil(Math.log(image.width / resizeWidth) / Math.log(2));
|
|
||||||
|
|
||||||
if (step > 1) {
|
|
||||||
offcanvas = document.createElement('canvas');
|
|
||||||
offctx = offcanvas.getContext('2d');
|
|
||||||
offcanvas.width = width / 2;
|
|
||||||
offcanvas.height = height / 2;
|
|
||||||
|
|
||||||
offctx.drawImage(image, 0, 0, offcanvas.width, offcanvas.height);
|
|
||||||
offctx.drawImage(offcanvas, 0, 0, offcanvas.width / 2, offcanvas.height / 2);
|
|
||||||
ctx.drawImage(offcanvas, 0, 0, offcanvas.width / 2, offcanvas.height / 2, 0, 0, dWidth, dHeight);
|
|
||||||
} else {
|
|
||||||
ctx.drawImage(image, 0, 0, dWidth, dHeight);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (orientation === 6 || orientation === 8 || orientation === 3) {
|
|
||||||
angle = orientation === 6 ? Math.PI / 2 : (orientation === 8 ? -Math.PI / 2 : 180 * Math.PI / 2);
|
|
||||||
bitmapData = canvas.toDataURL(filetype, oEditor.config.imgJpegQuality);
|
|
||||||
|
|
||||||
rotateImg = new Image();
|
|
||||||
rotateImg.src = bitmapData;
|
|
||||||
rotateW = orientation !== 3 ? dHeight : dWidth;
|
|
||||||
rotateH = orientation !== 3 ? dWidth : dHeight;
|
|
||||||
|
|
||||||
canvas.width = rotateW;
|
|
||||||
canvas.height = rotateH;
|
|
||||||
|
|
||||||
|
// 카메라 로테이션 보정
|
||||||
|
if (orientation > 0) {
|
||||||
|
canvas = document.createElement("canvas");
|
||||||
|
canvas.width = source_w;
|
||||||
|
canvas.height = source_h;
|
||||||
|
ctx = canvas.getContext("2d");
|
||||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||||
ctx.save();
|
ctx.save();
|
||||||
ctx.translate(canvas.width / 2, canvas.height / 2);
|
|
||||||
ctx.rotate(angle);
|
switch (orientation) {
|
||||||
ctx.drawImage(rotateImg, -dWidth / 2, -dHeight / 2);
|
case 2 :
|
||||||
|
ctx.translate(-1, 0, 0, 1, canvas.width, 0); break;
|
||||||
|
case 3 :
|
||||||
|
ctx.translate(-1, 0, 0, -1, canvas.width, canvas.height); break;
|
||||||
|
case 4 :
|
||||||
|
ctx.translate(1, 0, 0, -1, 0, canvas.height); break;
|
||||||
|
case 5 :
|
||||||
|
ctx.translate(0, 1, 1, 0, 0, 0); break;
|
||||||
|
case 6 :
|
||||||
|
ctx.translate(0, 1, -1, 0, canvas.height, 0); break;
|
||||||
|
case 7 :
|
||||||
|
ctx.translate(0, -1, -1, 0, canvas.height, canvas.width); break;
|
||||||
|
case 8 :
|
||||||
|
ctx.translate(0, -1, 1, 0, 0, canvas.width); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.drawImage(image, 0, 0);
|
||||||
|
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
||||||
ctx.restore();
|
ctx.restore();
|
||||||
|
source_w = canvas.width;
|
||||||
|
source_h = canvas.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (source_w > resizeWidth) {
|
||||||
|
resize_w = resizeWidth;
|
||||||
|
resize_h = Math.ceil(resize_w / source_w * source_h);
|
||||||
|
|
||||||
|
try {
|
||||||
|
gl = GLScale({
|
||||||
|
width: resize_w, height: resize_h
|
||||||
|
});
|
||||||
|
gl(imageData || image, function (gl_canvas) {
|
||||||
|
canvas = gl_canvas;
|
||||||
|
});
|
||||||
|
} catch (ignore) {
|
||||||
|
canvas = document.createElement("canvas");
|
||||||
|
ctx = canvas.getContext("2d");
|
||||||
|
canvas.width = source_w;
|
||||||
|
canvas.height = source_h;
|
||||||
|
|
||||||
|
if (imageData) {
|
||||||
|
ctx.putImageData(imageData, 0, 0);
|
||||||
|
} else {
|
||||||
|
ctx.drawImage(image, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
ratio_w = source_w / resize_w;
|
||||||
|
ratio_h = source_h / resize_h;
|
||||||
|
ratio_w_half = Math.ceil(ratio_w / 2);
|
||||||
|
ratio_h_half = Math.ceil(ratio_h / 2);
|
||||||
|
source_img = ctx.getImageData(0, 0, source_w, source_h);
|
||||||
|
resize_img = ctx.createImageData(resize_w, resize_h);
|
||||||
|
source_data = source_img.data;
|
||||||
|
resize_data = resize_img.data;
|
||||||
|
|
||||||
|
for (j = 0; j < resize_h; j++) {
|
||||||
|
for (i = 0; i < resize_w; i++) {
|
||||||
|
x2 = (i + j * resize_w) * 4;
|
||||||
|
weight = weights = weights_alpha = 0;
|
||||||
|
gx_r = gx_g = gx_b = gx_a = 0;
|
||||||
|
center_y = (j + 0.5) * ratio_h;
|
||||||
|
|
||||||
|
x_start = Math.floor(i * ratio_w);
|
||||||
|
x_stop = Math.ceil((i + 1) * ratio_w);
|
||||||
|
y_start = Math.floor(j * ratio_h);
|
||||||
|
y_stop = Math.ceil((j + 1) * ratio_h);
|
||||||
|
|
||||||
|
x_stop = Math.min(x_stop, source_w);
|
||||||
|
y_stop = Math.min(y_stop, source_h);
|
||||||
|
|
||||||
|
for (y = y_start; y < y_stop; y++) {
|
||||||
|
dy = Math.abs(center_y - (y + 0.5)) / ratio_h_half;
|
||||||
|
center_x = (i + 0.5) * ratio_w;
|
||||||
|
part_w = dy * dy;
|
||||||
|
|
||||||
|
for (x = x_start; x < x_stop; x++) {
|
||||||
|
dx = Math.abs(center_x - (x + 0.5)) / ratio_w_half;
|
||||||
|
w = Math.sqrt(part_w + dx * dx);
|
||||||
|
if (w >= 1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Hermite 필터
|
||||||
|
weight = 2 * w * w * w - 3 * w * w + 1;
|
||||||
|
pos_x = 4 * (x + y * source_w);
|
||||||
|
// 알파 채널
|
||||||
|
gx_a += weight * source_data[pos_x + 3];
|
||||||
|
weights_alpha += weight;
|
||||||
|
|
||||||
|
if (source_data[pos_x + 3] < 255) {
|
||||||
|
weight = weight * source_data[pos_x + 3] / 250;
|
||||||
|
}
|
||||||
|
|
||||||
|
gx_r += weight * source_data[pos_x];
|
||||||
|
gx_g += weight * source_data[pos_x + 1];
|
||||||
|
gx_b += weight * source_data[pos_x + 2];
|
||||||
|
weights += weight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resize_data[x2] = gx_r / weights;
|
||||||
|
resize_data[x2 + 1] = gx_g / weights;
|
||||||
|
resize_data[x2 + 2] = gx_b / weights;
|
||||||
|
resize_data[x2 + 3] = gx_a / weights_alpha;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
canvas.width = resize_w;
|
||||||
|
canvas.height = resize_h;
|
||||||
|
ctx.putImageData(resize_img, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
canvas = document.createElement("canvas"),
|
||||||
|
canvas.width = source_w; canvas.height = source_h;
|
||||||
|
ctx = canvas.getContext("2d");
|
||||||
|
ctx.drawImage(image, 0, 0);
|
||||||
|
resize_h = source_h;
|
||||||
|
resize_w = source_w;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.reader.watermark && addWaterMark) {
|
if (this.reader.watermark && addWaterMark) {
|
||||||
@@ -1014,14 +1220,15 @@ DoUpload.prototype = {
|
|||||||
ctx.drawImage(this.reader.watermark,
|
ctx.drawImage(this.reader.watermark,
|
||||||
canvas.width - this.reader.watermark.width, canvas.height - this.reader.watermark.height);
|
canvas.width - this.reader.watermark.width, canvas.height - this.reader.watermark.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
return canvas.toDataURL(filetype, oEditor.config.imgJpegQuality);
|
return canvas.toDataURL(filetype, oEditor.config.imgJpegQuality);
|
||||||
},
|
},
|
||||||
|
|
||||||
canvasToBlob : function (bitmapData, mimetype) {
|
canvasToBlob : function (bitmapData, mimetype) {
|
||||||
var raw = atob(bitmapData.split(',')[1]),
|
var i = 0,
|
||||||
intArray = [],
|
intArray = [],
|
||||||
len = bitmapData.length,
|
len = bitmapData.length,
|
||||||
i = 0;
|
raw = atob(bitmapData.split(',')[1]);
|
||||||
|
|
||||||
for (; i < len; i++) {
|
for (; i < len; i++) {
|
||||||
intArray.push(raw.charCodeAt(i));
|
intArray.push(raw.charCodeAt(i));
|
||||||
@@ -1030,8 +1237,7 @@ DoUpload.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
makeThumbnail : function (image, type, name, orientation) {
|
makeThumbnail : function (image, type, name, orientation) {
|
||||||
var canvas = document.createElement("canvas"),
|
var width,
|
||||||
width,
|
|
||||||
xhr = new XMLHttpRequest(),
|
xhr = new XMLHttpRequest(),
|
||||||
data = new FormData(),
|
data = new FormData(),
|
||||||
bitmapData, file;
|
bitmapData, file;
|
||||||
@@ -1041,11 +1247,10 @@ DoUpload.prototype = {
|
|||||||
|
|
||||||
bitmapData = this.imageResize(image, type, width, orientation);
|
bitmapData = this.imageResize(image, type, width, orientation);
|
||||||
file = this.canvasToBlob(bitmapData, type);
|
file = this.canvasToBlob(bitmapData, type);
|
||||||
|
|
||||||
data.append(inputFileName, file, 'thumb_' + name); // RFC Level 2
|
data.append(inputFileName, file, 'thumb_' + name); // RFC Level 2
|
||||||
|
|
||||||
xhr.addEventListener("loadend", function () {
|
xhr.addEventListener("loadend", function () {
|
||||||
|
// loadend
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
xhr.addEventListener("error", function () {
|
xhr.addEventListener("error", function () {
|
||||||
@@ -1060,20 +1265,19 @@ DoUpload.prototype = {
|
|||||||
filename = evt.target.file.name,
|
filename = evt.target.file.name,
|
||||||
filetype = evt.target.file.type,
|
filetype = evt.target.file.type,
|
||||||
file = evt.target.file,
|
file = evt.target.file,
|
||||||
blob, image, orientation = 1;
|
blob, image, orientation = 1, slice = 64 * 1024;
|
||||||
|
|
||||||
|
if (slice > file.size - 1) {
|
||||||
|
slice = file.size;
|
||||||
|
}
|
||||||
|
|
||||||
if (evt.target.readyState === FileReader.DONE) {
|
if (evt.target.readyState === FileReader.DONE) {
|
||||||
blob = new self.MyBlob(self.NewBlob(evt.target.result, filetype));
|
blob = new self.MyBlob(self.NewBlob(evt.target.result, filetype));
|
||||||
try {
|
orientation = self.getOrientation(evt.target.result.slice(0, slice));
|
||||||
orientation = self.getOrientation(evt.target.result.slice(0, 64 * 1024));
|
|
||||||
} catch(err) {
|
|
||||||
|
|
||||||
}
|
|
||||||
image = new Image();
|
image = new Image();
|
||||||
|
|
||||||
image.onload = function () {
|
image.onload = function () {
|
||||||
var bitmapData = null,
|
var bitmapData = null,
|
||||||
canvas = document.createElement("canvas"),
|
|
||||||
data = new FormData(),
|
data = new FormData(),
|
||||||
fileFormat,
|
fileFormat,
|
||||||
imgBox = file.boxElem,
|
imgBox = file.boxElem,
|
||||||
@@ -1083,7 +1287,7 @@ DoUpload.prototype = {
|
|||||||
|
|
||||||
xhr.open('POST', uploadScript, true);
|
xhr.open('POST', uploadScript, true);
|
||||||
|
|
||||||
if (imageResizeWidth > 0 && this.width > imageResizeWidth) {
|
if (imageResizeWidth > 0) {
|
||||||
bitmapData = self.imageResize(this, filetype, imageResizeWidth, orientation, true);
|
bitmapData = self.imageResize(this, filetype, imageResizeWidth, orientation, true);
|
||||||
file = self.canvasToBlob(bitmapData, filetype);
|
file = self.canvasToBlob(bitmapData, filetype);
|
||||||
}
|
}
|
||||||
@@ -1099,7 +1303,7 @@ DoUpload.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
xhr.addEventListener("error", function (evt) {
|
xhr.addEventListener("error", function (evt) {
|
||||||
alert("파일 전송 중 오류: " + evt.target.error.code);
|
alert("파일 전송 중 오류: " + evt.toString());
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
xhr.addEventListener("loadend", function onLoadendImageHandler(xhrevt) {
|
xhr.addEventListener("loadend", function onLoadendImageHandler(xhrevt) {
|
||||||
@@ -1132,7 +1336,6 @@ DoUpload.prototype = {
|
|||||||
height: img.height,
|
height: img.height,
|
||||||
width: img.width
|
width: img.width
|
||||||
};
|
};
|
||||||
|
|
||||||
imageCompletedList[imgBox.id] = imgInfo;
|
imageCompletedList[imgBox.id] = imgInfo;
|
||||||
imgComplete(this, imgInfo, imgBox.id);
|
imgComplete(this, imgInfo, imgBox.id);
|
||||||
imgBox.appendChild(img);
|
imgBox.appendChild(img);
|
||||||
@@ -1263,13 +1466,14 @@ function setResizeWidth() {
|
|||||||
imageResizeWidth = value;
|
imageResizeWidth = value;
|
||||||
} else {
|
} else {
|
||||||
imageResizeInput.value = '';
|
imageResizeInput.value = '';
|
||||||
|
imageResizeWidth = oEditor.config.imgMaxWidth;
|
||||||
imageResizeInput.setAttribute('placeholder', oEditor.config.imgMaxWidth.toString());
|
imageResizeInput.setAttribute('placeholder', oEditor.config.imgMaxWidth.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function init(dialog) {
|
function init(dialog) {
|
||||||
var dlg, i, elem, input, select, value, name;
|
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon;
|
||||||
|
|
||||||
oEditor = this;
|
oEditor = this;
|
||||||
oEditor.dialog = dialog;
|
oEditor.dialog = dialog;
|
||||||
@@ -1279,14 +1483,12 @@ function init(dialog) {
|
|||||||
uploadImagePath = oEditor.config.iconPath + 'imageUpload';
|
uploadImagePath = oEditor.config.iconPath + 'imageUpload';
|
||||||
uploadMaxNumber = oEditor.config.imgUploadNumber;
|
uploadMaxNumber = oEditor.config.imgUploadNumber;
|
||||||
uploadScript = oEditor.config.editorPath + 'imageUpload/upload.php';
|
uploadScript = oEditor.config.editorPath + 'imageUpload/upload.php';
|
||||||
deleteScript = oEditor.config.editorPath + 'imageUpload/delete.php';
|
|
||||||
imageListWrapper = document.getElementById("imageListWrapper");
|
imageListWrapper = document.getElementById("imageListWrapper");
|
||||||
|
|
||||||
imageResizeWidth = oEditor.config.imgMaxWidth;
|
|
||||||
imageResizeInput = document.getElementById('idResizeWidth');
|
imageResizeInput = document.getElementById('idResizeWidth');
|
||||||
select = document.getElementById('idResizeSelectBox');
|
select = document.getElementById('idResizeSelectBox');
|
||||||
|
|
||||||
if (imageResizeWidth > 0) {
|
if (oEditor.config.imgMaxWidth > 0) {
|
||||||
|
imageResizeWidth = oEditor.config.imgMaxWidth;
|
||||||
for (i = 0; i < oEditor.config.imgResizeValue.length; i++) {
|
for (i = 0; i < oEditor.config.imgResizeValue.length; i++) {
|
||||||
name = value = oEditor.config.imgResizeValue[i];
|
name = value = oEditor.config.imgResizeValue[i];
|
||||||
if (value > oEditor.config.imgMaxWidth) {
|
if (value > oEditor.config.imgMaxWidth) {
|
||||||
@@ -1300,6 +1502,9 @@ function init(dialog) {
|
|||||||
select.onchange = function () {
|
select.onchange = function () {
|
||||||
if (this.value < 0) {
|
if (this.value < 0) {
|
||||||
document.getElementById('idUserInputWrapper').style.display = '';
|
document.getElementById('idUserInputWrapper').style.display = '';
|
||||||
|
imageResizeInput.value = '';
|
||||||
|
imageResizeWidth = oEditor.config.imgMaxWidth;
|
||||||
|
imageResizeInput.focus();
|
||||||
} else {
|
} else {
|
||||||
document.getElementById('idUserInputWrapper').style.display = 'none';
|
document.getElementById('idUserInputWrapper').style.display = 'none';
|
||||||
imageResizeWidth = this.value;
|
imageResizeWidth = this.value;
|
||||||
@@ -1326,7 +1531,6 @@ function init(dialog) {
|
|||||||
initGallery();
|
initGallery();
|
||||||
showUploadWindow();
|
showUploadWindow();
|
||||||
createInsertionMaker();
|
createInsertionMaker();
|
||||||
selectedFilesNum = 0;
|
|
||||||
|
|
||||||
oEditor.addEvent(imageListWrapper, 'dragover', dragOver);
|
oEditor.addEvent(imageListWrapper, 'dragover', dragOver);
|
||||||
oEditor.addEvent(imageListWrapper, 'dragleave', dragOut);
|
oEditor.addEvent(imageListWrapper, 'dragleave', dragOut);
|
||||||
@@ -1343,6 +1547,38 @@ function init(dialog) {
|
|||||||
|
|
||||||
if (browser.mobile) {
|
if (browser.mobile) {
|
||||||
input = document.getElementById('inputImageUpload');
|
input = document.getElementById('inputImageUpload');
|
||||||
input.setAttribute('capture', 'gallery');
|
input.setAttribute('capture', 'filesystem');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmpcanvas = document.createElement('canvas');
|
||||||
|
if (tmpcanvas.getContext('webgl', {preserveDrawingBuffer: true}) ||
|
||||||
|
tmpcanvas.getContext('experimental-webgl', {preserveDrawingBuffer: true}))
|
||||||
|
{
|
||||||
|
useWebGL = true;
|
||||||
|
GLScale.Hermite = { vertex: '', fragment: '' };
|
||||||
|
xhr_v = new XMLHttpRequest();
|
||||||
|
xhr_f = new XMLHttpRequest();
|
||||||
|
xhr_f.open('POST', 'js/fragment-shader.glsl', true);
|
||||||
|
xhr_f.addEventListener("load", function (evt) {
|
||||||
|
if (evt.target.status === 200) {
|
||||||
|
GLScale.Hermite.fragment = this.responseText;
|
||||||
|
} else {
|
||||||
|
useWebGL = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
xhr_v.open('POST', 'js/vertex-shader.glsl', true);
|
||||||
|
xhr_v.addEventListener("load", function (evt) {
|
||||||
|
if (evt.target.status === 200) {
|
||||||
|
GLScale.Hermite.vertex = this.responseText;
|
||||||
|
} else {
|
||||||
|
useWebGL = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
xhr_f.send();
|
||||||
|
xhr_v.send();
|
||||||
|
}
|
||||||
|
glicon = new Image();
|
||||||
|
glicon.className = 'webgl_logo';
|
||||||
|
glicon.src = uploadImagePath + (useWebGL ? "/webgl.png" : "/webgl-off.png");
|
||||||
|
document.getElementById('webgl_logo_wrapper').appendChild(glicon);
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,10 @@
|
|||||||
|
// -------------------------------------------------------
|
||||||
|
// CHEditor WebGL Vertex Shader
|
||||||
|
// -------------------------------------------------------
|
||||||
|
attribute vec2 a_position;
|
||||||
|
uniform vec2 u_resolution;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
vec2 clipSpace = (a_position / u_resolution * 2.0) - 1.0;
|
||||||
|
gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
// ================================================================
|
||||||
|
// CHEditor Template
|
||||||
|
// ================================================================
|
||||||
|
-->
|
||||||
|
<Template>
|
||||||
|
<Container>
|
||||||
|
<Html>
|
||||||
|
<![CDATA[
|
||||||
|
<div class="cheditor-container">
|
||||||
|
<div id="toolbar" style="padding:4px;height:47px"></div>
|
||||||
|
<div id="editWrapper" class="cheditor-editarea-wrapper" style="clear:left">
|
||||||
|
<iframe frameborder="0" class="cheditor-editarea"></iframe>
|
||||||
|
<textarea class="cheditor-editarea-text-content" spellcheck="false"></textarea>
|
||||||
|
</div>
|
||||||
|
<div id="modifyBlock" class="cheditor-modify-block"></div>
|
||||||
|
<div id="tagPath" class="cheditor-tag-path">
|
||||||
|
<span class="cheditor-status-bar"><html> </span>
|
||||||
|
</div>
|
||||||
|
<div id="resizeBar" class="cheditor-resizebar"></div>
|
||||||
|
<div id="viewMode" class="cheditor-viewmode">
|
||||||
|
<div id="rich" class="cheditor-tab-rich" title="입력 모드" alt=""> </div>
|
||||||
|
<div id="code" class="cheditor-tab-code-off" title="HTML 편집" alt=""> </div>
|
||||||
|
<div id="preview" class="cheditor-tab-preview-off" title="미리 보기" alt=""> </div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
]]>
|
||||||
|
</Html>
|
||||||
|
</Container>
|
||||||
|
<PopupWindow>
|
||||||
|
<Html>
|
||||||
|
<![CDATA[
|
||||||
|
<div class="cheditor-popup-window" onselectstart="return false">
|
||||||
|
<div class="cheditor-popup-drag-handle">
|
||||||
|
<div class="cheditor-popup-titlebar">
|
||||||
|
<span><label class="cheditor-popup-title"></label></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cheditor-popup-cframe" id="cheditor-popup-cframe"></div>
|
||||||
|
</div>
|
||||||
|
]]>
|
||||||
|
</Html>
|
||||||
|
</PopupWindow>
|
||||||
|
<Toolbar>
|
||||||
|
<Image file="toolbar.png" />
|
||||||
|
<Group name="Format">
|
||||||
|
<Button name="Bold" tooltip="진하게">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1">
|
||||||
|
<Icon position="144" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||||
|
<Execution method="doCmd" value="Bold" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="Italic" tooltip="기울임">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||||
|
<Icon position="160" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="doCmd" value="Italic" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="Underline" tooltip="밑줄">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||||
|
<Icon position="176" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="doCmd" value="Underline" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
</Group>
|
||||||
|
<Group name="Alignment">
|
||||||
|
<Button name="JustifyLeft" tooltip="왼쪽 정렬">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1">
|
||||||
|
<Icon position="286" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||||
|
<Execution method="doCmd" value="JustifyLeft" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="JustifyCenter" tooltip="가운데 정렬">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||||
|
<Icon position="302" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="doCmd" value="JustifyCenter" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="JustifyRight" tooltip="오른쪽 정렬">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||||
|
<Icon position="318" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="doCmd" value="JustifyRight" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="JustifyFull" tooltip="양쪽 정렬">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||||
|
<Icon position="334" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="doCmd" value="JustifyFull" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
</Group>
|
||||||
|
<Group name="List">
|
||||||
|
<Button name="OrderedList" tooltip="문단 번호">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1" type="combo">
|
||||||
|
<Icon position="350" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||||
|
<Execution method="doCmd" value="InsertOrderedList" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="OrderedListCombo" tooltip="문단 번호 확장">
|
||||||
|
<Attribute class="cheditor-tb-bgcombo" width="10" height="23" type="combobox" node="OrderedList">
|
||||||
|
<Icon width="10" class="cheditor-tb-combo" margin="0px" />
|
||||||
|
<Execution method="showPulldown" value="OrderedList" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="UnOrderedList" tooltip="글 머리표">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1" type="combo">
|
||||||
|
<Icon position="366" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="doCmd" value="InsertUnOrderedList" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="UnOrderedListCombo" tooltip="글 머리표 확장">
|
||||||
|
<Attribute class="cheditor-tb-bgcombo" width="10" height="23" type="combobox" node="UnOrderedList">
|
||||||
|
<Icon width="10" class="cheditor-tb-combo" margin="0px" />
|
||||||
|
<Execution method="showPulldown" value="UnOrderedList" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
</Group>
|
||||||
|
<Group name="Split">
|
||||||
|
</Group>
|
||||||
|
<Group name="FontName">
|
||||||
|
<Button name="FontName" tooltip="글꼴">
|
||||||
|
<Attribute class="cheditor-tb-bg55" width="55" height="23" check="1">
|
||||||
|
<Icon class="cheditor-tb-text" alt="굴림" />
|
||||||
|
<Execution method="showPulldown" value="FontName" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
</Group>
|
||||||
|
<Group name="FontSize">
|
||||||
|
<Button name="FontSize" tooltip="글꼴 크기">
|
||||||
|
<Attribute class="cheditor-tb-bg40" width="41" height="23" check="1">
|
||||||
|
<Icon class="cheditor-tb-text" alt="9pt" />
|
||||||
|
<Execution method="showPulldown" value="FontSize" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
</Group>
|
||||||
|
<Group name="Link">
|
||||||
|
<Button name="Link" tooltip="하이퍼링크">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||||
|
<Icon position="558" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||||
|
<Execution method="windowOpen" value="Link" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="UnLink" tooltip="하이퍼링크 없애기">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||||
|
<Icon position="574" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="doCmd" value="UnLink" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
</Group>
|
||||||
|
<Group name="ImageUpload">
|
||||||
|
<Button name="Image" tooltip="내 PC 사진 넣기">
|
||||||
|
<Attribute class="cheditor-tb-bg44" width="50" height="23">
|
||||||
|
<Icon position="590" width="36" class="cheditor-tb-icon36" margin="6px" />
|
||||||
|
<Execution method="windowOpen" value="ImageUpload" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
</Group>
|
||||||
|
<Group name="Media">
|
||||||
|
<Button name="Flash" tooltip="플래쉬 동영상">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||||
|
<Icon position="662" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||||
|
<Execution method="windowOpen" value="FlashMovie" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="SmileyIcon" tooltip="표정 아이콘">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||||
|
<Icon position="494" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="windowOpen" value="EmotionIcon" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
</Group>
|
||||||
|
</Toolbar>
|
||||||
|
</Template>
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
<![CDATA[
|
<![CDATA[
|
||||||
<div class="cheditor-container">
|
<div class="cheditor-container">
|
||||||
<div id="toolbar" style="padding:4px;height:47px"></div>
|
<div id="toolbar" style="padding:4px;height:47px"></div>
|
||||||
<div id="editWrapper" class="cheditor-editarea-wrapper">
|
<div id="editWrapper" class="cheditor-editarea-wrapper" style="clear:left">
|
||||||
<iframe frameborder="0" class="cheditor-editarea"></iframe>
|
<iframe frameborder="0" class="cheditor-editarea"></iframe>
|
||||||
<textarea class="cheditor-editarea-text-content" spellcheck="false"></textarea>
|
<textarea class="cheditor-editarea-text-content" spellcheck="false"></textarea>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,6 +73,18 @@
|
|||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="Edit">
|
<Group name="Edit">
|
||||||
|
<Button name="Copy" tooltip="복사하기">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1">
|
||||||
|
<Icon position="64" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||||
|
<Execution method="doCmd" value="Copy" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
|
<Button name="Cut" tooltip="오려두기">
|
||||||
|
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||||
|
<Icon position="80" width="16" class="cheditor-tb-icon" />
|
||||||
|
<Execution method="doCmd" value="Cut" />
|
||||||
|
</Attribute>
|
||||||
|
</Button>
|
||||||
<Button name="Paste" tooltip="텍스트로 붙이기">
|
<Button name="Paste" tooltip="텍스트로 붙이기">
|
||||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||||
<Icon position="96" width="16" class="cheditor-tb-icon" />
|
<Icon position="96" width="16" class="cheditor-tb-icon" />
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
<?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> ";
|
||||||
|
|
||||||
echo "<a href=\"".$list[$i]['href']."\"> ";
|
echo "<a href=\"".get_pretty_url($bo_table, $list[$i]['wr_id'])."\"> ";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
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> ";
|
||||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||||
//echo $list[$i]['icon_reply']." ";
|
//echo $list[$i]['icon_reply']." ";
|
||||||
echo "<a href=\"".$list[$i]['href']."\">";
|
echo "<a href=\"".get_pretty_url($bo_table, $list[$i]['wr_id'])."\">";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -23,13 +23,14 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
$thumb['alt'] = '이미지가 없습니다.';
|
$thumb['alt'] = '이미지가 없습니다.';
|
||||||
}
|
}
|
||||||
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
||||||
|
$wr_href = get_pretty_url($bo_table, $list[$i]['wr_id']);
|
||||||
?>
|
?>
|
||||||
<li class="gallery_li">
|
<li class="gallery_li">
|
||||||
<a href="<?php echo $list[$i]['href'] ?>" class="lt_img"><?php echo run_replace('thumb_image_tag', $img_content, $thumb); ?></a>
|
<a href="<?php echo $wr_href; ?>" class="lt_img"><?php echo run_replace('thumb_image_tag', $img_content, $thumb); ?></a>
|
||||||
<?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> ";
|
||||||
|
|
||||||
echo "<a href=\"".$list[$i]['href']."\"> ";
|
echo "<a href=\"".$wr_href."\"> ";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
|
|
||||||
$img_link_html = '';
|
$img_link_html = '';
|
||||||
|
|
||||||
|
$wr_href = get_pretty_url($bo_table, $list[$i]['wr_id']);
|
||||||
|
|
||||||
if( $i === 0 ) {
|
if( $i === 0 ) {
|
||||||
$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);
|
||||||
|
|
||||||
@@ -27,7 +29,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
$thumb['alt'] = '이미지가 없습니다.';
|
$thumb['alt'] = '이미지가 없습니다.';
|
||||||
}
|
}
|
||||||
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
||||||
$img_link_html = '<a href="'.$list[$i]['href'].'" class="lt_img" >'.run_replace('thumb_image_tag', $img_content, $thumb).'</a>';
|
$img_link_html = '<a href="'.$wr_href.'" class="lt_img" >'.run_replace('thumb_image_tag', $img_content, $thumb).'</a>';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<li>
|
<li>
|
||||||
@@ -35,7 +37,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
<?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> ";
|
||||||
|
|
||||||
echo "<a href=\"".$list[$i]['href']."\" class=\"pic_li_tit\"> ";
|
echo "<a href=\"".$wr_href."\" class=\"pic_li_tit\"> ";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -19,12 +19,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
<?php
|
<?php
|
||||||
$sum_point1 = $sum_point2 = $sum_point3 = 0;
|
$sum_point1 = $sum_point2 = $sum_point3 = 0;
|
||||||
|
|
||||||
$sql = " select *
|
$i = 0;
|
||||||
{$sql_common}
|
foreach((array) $list as $row){
|
||||||
{$sql_order}
|
|
||||||
limit {$from_record}, {$rows} ";
|
|
||||||
$result = sql_query($sql);
|
|
||||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
|
||||||
$point1 = $point2 = 0;
|
$point1 = $point2 = 0;
|
||||||
$point_use_class = '';
|
$point_use_class = '';
|
||||||
if ($row['po_point'] > 0) {
|
if ($row['po_point'] > 0) {
|
||||||
@@ -55,7 +51,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<?php
|
<?php
|
||||||
}
|
$i++;
|
||||||
|
} // end foreach
|
||||||
|
|
||||||
if ($i == 0)
|
if ($i == 0)
|
||||||
echo '<li class="empty_li">자료가 없습니다.</li>';
|
echo '<li class="empty_li">자료가 없습니다.</li>';
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ $is_show_next_prev = ($list_count > 4) ? 1 : 0;
|
|||||||
$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);
|
||||||
$img = $thumb['src'] ? $thumb['src'] : '';
|
$img = $thumb['src'] ? $thumb['src'] : '';
|
||||||
$img_content = $img ? '<img src="'.$img.'" alt="'.$thumb['alt'].'" >' : '';
|
$img_content = $img ? '<img src="'.$img.'" alt="'.$thumb['alt'].'" >' : '';
|
||||||
|
$wr_href = get_pretty_url($bo_table, $list[$i]['wr_id']);
|
||||||
|
|
||||||
$echo_ul = ( $i && (($i % $divisor_count) === 0) ) ? '</ul><ul class="item">'.PHP_EOL : '';
|
$echo_ul = ( $i && (($i % $divisor_count) === 0) ) ? '</ul><ul class="item">'.PHP_EOL : '';
|
||||||
|
|
||||||
@@ -38,10 +39,10 @@ $is_show_next_prev = ($list_count > 4) ? 1 : 0;
|
|||||||
//echo $list[$i]['icon_reply']." ";
|
//echo $list[$i]['icon_reply']." ";
|
||||||
|
|
||||||
if( $img_content ){
|
if( $img_content ){
|
||||||
echo "<a href=\"".$list[$i]['href']."\" class=\"lt_thumb\">".run_replace('thumb_image_tag', $img_content, $thumb)."</a> ";
|
echo "<a href=\"".$wr_href."\" class=\"lt_thumb\">".run_replace('thumb_image_tag', $img_content, $thumb)."</a> ";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "<a href=\"".$list[$i]['href']."\" class=\"lt_tit\">";
|
echo "<a href=\"".$wr_href."\" class=\"lt_tit\">";
|
||||||
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i> ";
|
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i> ";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
<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>
|
||||||
<div class="cm_lt_info">
|
<div class="cm_lt_info">
|
||||||
<a href="<?php echo $list[$i]['href']; ?>" class="over"><?php echo $list[$i]['subject']; ?></a>
|
<a href="<?php echo get_pretty_url($bo_table, $list[$i]['wr_id']); ?>" class="over"><?php echo $list[$i]['subject']; ?></a>
|
||||||
<br>
|
<br>
|
||||||
<span class="lt_nick"><?php echo $list[$i]['name'] ?></span>
|
<span class="lt_nick"><?php echo $list[$i]['name'] ?></span>
|
||||||
<span class="lt_date"><?php echo $list[$i]['datetime2'] ?></span>
|
<span class="lt_date"><?php echo $list[$i]['datetime2'] ?></span>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
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> ";
|
||||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||||
//echo $list[$i]['icon_reply']." ";
|
//echo $list[$i]['icon_reply']." ";
|
||||||
echo "<a href=\"".$list[$i]['href']."\">";
|
echo "<a href=\"".get_pretty_url($bo_table, $list[$i]['wr_id'])."\">";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -19,12 +19,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
<?php
|
<?php
|
||||||
$sum_point1 = $sum_point2 = $sum_point3 = 0;
|
$sum_point1 = $sum_point2 = $sum_point3 = 0;
|
||||||
|
|
||||||
$sql = " select *
|
$i = 0;
|
||||||
{$sql_common}
|
foreach((array) $list as $row){
|
||||||
{$sql_order}
|
|
||||||
limit {$from_record}, {$rows} ";
|
|
||||||
$result = sql_query($sql);
|
|
||||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
|
||||||
$point1 = $point2 = 0;
|
$point1 = $point2 = 0;
|
||||||
$point_use_class = '';
|
$point_use_class = '';
|
||||||
if ($row['po_point'] > 0) {
|
if ($row['po_point'] > 0) {
|
||||||
@@ -55,7 +51,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<?php
|
<?php
|
||||||
}
|
$i++;
|
||||||
|
} // end foreach
|
||||||
|
|
||||||
if ($i == 0)
|
if ($i == 0)
|
||||||
echo '<li class="empty_list">자료가 없습니다.</li>';
|
echo '<li class="empty_list">자료가 없습니다.</li>';
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
<?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> ";
|
||||||
|
|
||||||
echo "<a href=\"".$list[$i]['href']."\"> ";
|
echo "<a href=\"".get_pretty_url($bo_table, $list[$i]['wr_id'])."\"> ";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
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> ";
|
||||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||||
//echo $list[$i]['icon_reply']." ";
|
//echo $list[$i]['icon_reply']." ";
|
||||||
echo "<a href=\"".$list[$i]['href']."\">";
|
echo "<a href=\"".get_pretty_url($bo_table, $list[$i]['wr_id'])."\">";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -23,13 +23,14 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
$thumb['alt'] = '이미지가 없습니다.';
|
$thumb['alt'] = '이미지가 없습니다.';
|
||||||
}
|
}
|
||||||
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
||||||
|
$wr_href = get_pretty_url($bo_table, $list[$i]['wr_id']);
|
||||||
?>
|
?>
|
||||||
<li class="galley_li">
|
<li class="galley_li">
|
||||||
<a href="<?php echo $list[$i]['href'] ?>" class="lt_img"><?php echo run_replace('thumb_image_tag', $img_content, $thumb); ?></a>
|
<a href="<?php echo $wr_href; ?>" class="lt_img"><?php echo run_replace('thumb_image_tag', $img_content, $thumb); ?></a>
|
||||||
<?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> ";
|
||||||
|
|
||||||
echo "<a href=\"".$list[$i]['href']."\"> ";
|
echo "<a href=\"".$wr_href."\"> ";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
|
|
||||||
$img_link_html = '';
|
$img_link_html = '';
|
||||||
|
|
||||||
|
$wr_href = get_pretty_url($bo_table, $list[$i]['wr_id']);
|
||||||
|
|
||||||
if( $i === 0 ) {
|
if( $i === 0 ) {
|
||||||
$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);
|
||||||
|
|
||||||
@@ -27,7 +29,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
$thumb['alt'] = '이미지가 없습니다.';
|
$thumb['alt'] = '이미지가 없습니다.';
|
||||||
}
|
}
|
||||||
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
||||||
$img_link_html = '<a href="'.$list[$i]['href'].'" class="lt_img" >'.run_replace('thumb_image_tag', $img_content, $thumb).'</a>';
|
$img_link_html = '<a href="'.$wr_href.'" class="lt_img" >'.run_replace('thumb_image_tag', $img_content, $thumb).'</a>';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<li>
|
<li>
|
||||||
@@ -35,7 +37,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
|||||||
<?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> ";
|
||||||
|
|
||||||
echo "<a href=\"".$list[$i]['href']."\" class=\"pic_li_tit\"> ";
|
echo "<a href=\"".$wr_href."\" class=\"pic_li_tit\"> ";
|
||||||
if ($list[$i]['is_notice'])
|
if ($list[$i]['is_notice'])
|
||||||
echo "<strong>".$list[$i]['subject']."</strong>";
|
echo "<strong>".$list[$i]['subject']."</strong>";
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -19,12 +19,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
<?php
|
<?php
|
||||||
$sum_point1 = $sum_point2 = $sum_point3 = 0;
|
$sum_point1 = $sum_point2 = $sum_point3 = 0;
|
||||||
|
|
||||||
$sql = " select *
|
$i = 0;
|
||||||
{$sql_common}
|
foreach((array) $list as $row){
|
||||||
{$sql_order}
|
|
||||||
limit {$from_record}, {$rows} ";
|
|
||||||
$result = sql_query($sql);
|
|
||||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
|
||||||
$point1 = $point2 = 0;
|
$point1 = $point2 = 0;
|
||||||
$point_use_class = '';
|
$point_use_class = '';
|
||||||
if ($row['po_point'] > 0) {
|
if ($row['po_point'] > 0) {
|
||||||
@@ -55,7 +51,8 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<?php
|
<?php
|
||||||
}
|
$i++;
|
||||||
|
} // end foreach
|
||||||
|
|
||||||
if ($i == 0)
|
if ($i == 0)
|
||||||
echo '<li class="empty_li">자료가 없습니다.</li>';
|
echo '<li class="empty_li">자료가 없습니다.</li>';
|
||||||
|
|||||||
Reference in new issue
Block a user