Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e343bdf66 | ||
|
|
e131563c8f | ||
|
|
0094cc9afe | ||
|
|
5fde923aa0 | ||
|
|
1e3a4f2657 | ||
|
|
0693fde962 | ||
|
|
7fb5f92200 | ||
|
|
50c8207fed | ||
|
|
6dbfa73461 | ||
|
|
76ecc6efe8 | ||
|
|
f4b0737178 | ||
|
|
e99c7a81db | ||
|
|
ce0a6dc3af | ||
|
|
f3e428ea1e | ||
|
|
9b422b38c5 | ||
|
|
f6056b2d37 | ||
|
|
a560fc353c | ||
|
|
e2c67e854f | ||
|
|
3e7617e825 | ||
|
|
4515f11169 | ||
|
|
ec32f64bc4 | ||
|
|
15bd8b9632 | ||
|
|
ef013e0827 | ||
|
|
b3773217e9 | ||
|
|
70f6d92e87 | ||
|
|
042695af55 | ||
|
|
85f9523b30 | ||
|
|
8c1d6266af | ||
|
|
30009dba6f | ||
|
|
24e7e8823e | ||
|
|
42fb4b71a6 | ||
|
|
f0134b610b | ||
|
|
c2cf34392a | ||
|
|
20dc859436 | ||
|
|
f5ec4d60c0 | ||
|
|
de00b4e9d3 | ||
|
|
8c67945c64 | ||
|
|
e5889df761 | ||
|
|
624e3d74a6 | ||
|
|
30815f71e0 | ||
|
|
949a73b468 | ||
|
|
24d57cdd4b | ||
|
|
191f3d2f97 | ||
|
|
4973714e2f | ||
|
|
70bfeefb3b | ||
|
|
e8b83f3a33 | ||
|
|
c6bdc172ee | ||
|
|
c3cf74f0c5 | ||
|
|
52db203ecd | ||
|
|
6e05353f31 | ||
|
|
7f6a9a090a | ||
|
|
1825830c3d | ||
|
|
3047e09f88 | ||
|
|
990af076af | ||
|
|
b1f0342921 | ||
|
|
63f9e4c8df | ||
|
|
6b43e67c40 | ||
|
|
9a870506ab | ||
|
|
008ae978dd | ||
|
|
20b1d8c7e5 | ||
|
|
1e011ba56d | ||
|
|
a73e48c3e2 | ||
|
|
e9fd9f03fd | ||
|
|
4913da0a1d | ||
|
|
18ef4b0767 | ||
|
|
d0e368fe2a | ||
|
|
5185f0c12a | ||
|
|
f5f4925d4e | ||
|
|
bd3fd20630 |
No files matched your search
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
프로그램 명칭 : 그누보드5 ( GNU Board 5 )
|
프로그램 명칭 : 그누보드5 ( GNU Board 5 )
|
||||||
|
|
||||||
저작자 : (주)에스아이알소프트 http://sir.co.kr
|
저작자 : (주)에스아이알소프트 http://sir.kr
|
||||||
|
|
||||||
라이센스 (License)
|
라이센스 (License)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ if (!defined('_GNUBOARD_')) exit;
|
|||||||
|
|
||||||
<!-- <p>실행시간 : <?php echo get_microtime() - $begin_time; ?> -->
|
<!-- <p>실행시간 : <?php echo get_microtime() - $begin_time; ?> -->
|
||||||
|
|
||||||
<script src="<?php echo G5_ADMIN_URL ?>/admin.js"></script>
|
<script src="<?php echo G5_ADMIN_URL ?>/admin.js?ver=<?php echo G5_JS_VER; ?>"></script>
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
var hide_menu = false;
|
var hide_menu = false;
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ $g5['title'] = '게시판 복사';
|
|||||||
include_once(G5_PATH.'/head.sub.php');
|
include_once(G5_PATH.'/head.sub.php');
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<script src="<?php echo G5_ADMIN_URL ?>/admin.js"></script>
|
<script src="<?php echo G5_ADMIN_URL ?>/admin.js?ver=<?php echo G5_JS_VER; ?>"></script>
|
||||||
|
|
||||||
<div class="new_win">
|
<div class="new_win">
|
||||||
<h1><?php echo $g5['title']; ?></h1>
|
<h1><?php echo $g5['title']; ?></h1>
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ if ($w == '') {
|
|||||||
// 글수 조정
|
// 글수 조정
|
||||||
/*
|
/*
|
||||||
엔피씨님의 팁으로 교체합니다. 130308
|
엔피씨님의 팁으로 교체합니다. 130308
|
||||||
http://sir.co.kr/bbs/board.php?bo_table=g5_tiptech&wr_id=27207
|
http://sir.kr/g5_tiptech/27207
|
||||||
*/
|
*/
|
||||||
if (isset($_POST['proc_count'])) {
|
if (isset($_POST['proc_count'])) {
|
||||||
// 원글을 얻습니다.
|
// 원글을 얻습니다.
|
||||||
|
|||||||
+6
-6
@@ -736,7 +736,7 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
|||||||
<select name="cf_cert_hp" id="cf_cert_hp">
|
<select name="cf_cert_hp" id="cf_cert_hp">
|
||||||
<?php echo option_selected("", $config['cf_cert_hp'], "사용안함"); ?>
|
<?php echo option_selected("", $config['cf_cert_hp'], "사용안함"); ?>
|
||||||
<?php echo option_selected("kcb", $config['cf_cert_hp'], "코리아크레딧뷰로(KCB) 휴대폰 본인확인"); ?>
|
<?php echo option_selected("kcb", $config['cf_cert_hp'], "코리아크레딧뷰로(KCB) 휴대폰 본인확인"); ?>
|
||||||
<?php echo option_selected("kcp", $config['cf_cert_hp'], "한국사이버결제(KCP) 휴대폰 본인확인"); ?>
|
<?php echo option_selected("kcp", $config['cf_cert_hp'], "NHN KCP 휴대폰 본인확인"); ?>
|
||||||
<?php echo option_selected("lg", $config['cf_cert_hp'], "LG유플러스 휴대폰 본인확인"); ?>
|
<?php echo option_selected("lg", $config['cf_cert_hp'], "LG유플러스 휴대폰 본인확인"); ?>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
@@ -745,16 +745,16 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
|||||||
<th scope="row" class="cf_cert_service"><label for="cf_cert_kcb_cd">코리아크레딧뷰로<br>KCB 회원사ID</label></th>
|
<th scope="row" class="cf_cert_service"><label for="cf_cert_kcb_cd">코리아크레딧뷰로<br>KCB 회원사ID</label></th>
|
||||||
<td class="cf_cert_service">
|
<td class="cf_cert_service">
|
||||||
<?php echo help('KCB 회원사ID를 입력해 주십시오.<br>서비스에 가입되어 있지 않다면, KCB와 계약체결 후 회원사ID를 발급 받으실 수 있습니다.<br>이용하시려는 서비스에 대한 계약을 아이핀, 휴대폰 본인확인 각각 체결해주셔야 합니다.<br>아이핀 본인확인 테스트의 경우에는 KCB 회원사ID가 필요 없으나,<br>휴대폰 본인확인 테스트의 경우 KCB 에서 따로 발급 받으셔야 합니다.') ?>
|
<?php echo help('KCB 회원사ID를 입력해 주십시오.<br>서비스에 가입되어 있지 않다면, KCB와 계약체결 후 회원사ID를 발급 받으실 수 있습니다.<br>이용하시려는 서비스에 대한 계약을 아이핀, 휴대폰 본인확인 각각 체결해주셔야 합니다.<br>아이핀 본인확인 테스트의 경우에는 KCB 회원사ID가 필요 없으나,<br>휴대폰 본인확인 테스트의 경우 KCB 에서 따로 발급 받으셔야 합니다.') ?>
|
||||||
<input type="text" name="cf_cert_kcb_cd" value="<?php echo $config['cf_cert_kcb_cd'] ?>" id="cf_cert_kcb_cd" class="frm_input" size="20"> <a href="http://sir.co.kr/main/service/b_ipin.php" target="_blank" class="btn_frmline">KCB 아이핀 서비스 신청페이지</a>
|
<input type="text" name="cf_cert_kcb_cd" value="<?php echo $config['cf_cert_kcb_cd'] ?>" id="cf_cert_kcb_cd" class="frm_input" size="20"> <a href="http://sir.kr/main/service/b_ipin.php" target="_blank" class="btn_frmline">KCB 아이핀 서비스 신청페이지</a>
|
||||||
<a href="http://sir.co.kr/main/service/b_cert.php" target="_blank" class="btn_frmline">KCB 휴대폰 본인확인 서비스 신청페이지</a>
|
<a href="http://sir.kr/main/service/b_cert.php" target="_blank" class="btn_frmline">KCB 휴대폰 본인확인 서비스 신청페이지</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row" class="cf_cert_service"><label for="cf_cert_kcp_cd">한국사이버결제<br>KCP 사이트코드</label></th>
|
<th scope="row" class="cf_cert_service"><label for="cf_cert_kcp_cd">NHN KCP 사이트코드</label></th>
|
||||||
<td class="cf_cert_service">
|
<td class="cf_cert_service">
|
||||||
<?php echo help('SM으로 시작하는 5자리 사이트 코드중 뒤의 3자리만 입력해 주십시오.<br>서비스에 가입되어 있지 않다면, 본인확인 서비스 신청페이지에서 서비스 신청 후 사이트코드를 발급 받으실 수 있습니다.') ?>
|
<?php echo help('SM으로 시작하는 5자리 사이트 코드중 뒤의 3자리만 입력해 주십시오.<br>서비스에 가입되어 있지 않다면, 본인확인 서비스 신청페이지에서 서비스 신청 후 사이트코드를 발급 받으실 수 있습니다.') ?>
|
||||||
<span class="sitecode">SM</span>
|
<span class="sitecode">SM</span>
|
||||||
<input type="text" name="cf_cert_kcp_cd" value="<?php echo $config['cf_cert_kcp_cd'] ?>" id="cf_cert_kcp_cd" class="frm_input" size="3"> <a href="http://sir.co.kr/main/service/p_cert.php" target="_blank" class="btn_frmline">KCP 휴대폰 본인확인 서비스 신청페이지</a>
|
<input type="text" name="cf_cert_kcp_cd" value="<?php echo $config['cf_cert_kcp_cd'] ?>" id="cf_cert_kcp_cd" class="frm_input" size="3"> <a href="http://sir.kr/main/service/p_cert.php" target="_blank" class="btn_frmline">NHN KCP 휴대폰 본인확인 서비스 신청페이지</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -762,7 +762,7 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
|||||||
<td class="cf_cert_service">
|
<td class="cf_cert_service">
|
||||||
<?php echo help('LG유플러스 상점아이디 중 si_를 제외한 나머지 아이디만 입력해 주십시오.<br>서비스에 가입되어 있지 않다면, 본인확인 서비스 신청페이지에서 서비스 신청 후 상점아이디를 발급 받으실 수 있습니다.<br><strong>LG유플러스 휴대폰본인확인은 ActiveX 설치가 필요하므로 Internet Explorer 에서만 사용할 수 있습니다.</strong>') ?>
|
<?php echo help('LG유플러스 상점아이디 중 si_를 제외한 나머지 아이디만 입력해 주십시오.<br>서비스에 가입되어 있지 않다면, 본인확인 서비스 신청페이지에서 서비스 신청 후 상점아이디를 발급 받으실 수 있습니다.<br><strong>LG유플러스 휴대폰본인확인은 ActiveX 설치가 필요하므로 Internet Explorer 에서만 사용할 수 있습니다.</strong>') ?>
|
||||||
<span class="sitecode">si_</span>
|
<span class="sitecode">si_</span>
|
||||||
<input type="text" name="cf_lg_mid" value="<?php echo $config['cf_lg_mid'] ?>" id="cf_lg_mid" class="frm_input" size="20"> <a href="http://sir.co.kr/main/service/lg_cert.php" target="_blank" class="btn_frmline">LG유플러스 본인확인 서비스 신청페이지</a>
|
<input type="text" name="cf_lg_mid" value="<?php echo $config['cf_lg_mid'] ?>" id="cf_lg_mid" class="frm_input" size="20"> <a href="http://sir.kr/main/service/lg_cert.php" target="_blank" class="btn_frmline">LG유플러스 본인확인 서비스 신청페이지</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ auth_check($auth[$sub_menu], "w");
|
|||||||
|
|
||||||
$html_title = 'FAQ';
|
$html_title = 'FAQ';
|
||||||
|
|
||||||
|
$fm_id = preg_replace('/[^0-9]/', '', $fm_id);
|
||||||
|
|
||||||
if ($w == "u")
|
if ($w == "u")
|
||||||
{
|
{
|
||||||
$html_title .= ' 수정';
|
$html_title .= ' 수정';
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 18 KiB |
@@ -1,4 +1,4 @@
|
|||||||
<?
|
<?php
|
||||||
$sub_menu = "200100";
|
$sub_menu = "200100";
|
||||||
include_once("./_common.php");
|
include_once("./_common.php");
|
||||||
|
|
||||||
|
|||||||
@@ -126,6 +126,11 @@ if(!isset($mb['mb_dupinfo'])) {
|
|||||||
sql_query(" ALTER TABLE {$g5['member_table']} ADD `mb_dupinfo` varchar(255) NOT NULL DEFAULT '' AFTER `mb_adult` ", false);
|
sql_query(" ALTER TABLE {$g5['member_table']} ADD `mb_dupinfo` varchar(255) NOT NULL DEFAULT '' AFTER `mb_adult` ", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 이메일인증 체크 필드추가
|
||||||
|
if(!isset($mb['mb_email_certify2'])) {
|
||||||
|
sql_query(" ALTER TABLE {$g5['member_table']} ADD `mb_email_certify2` varchar(255) NOT NULL DEFAULT '' AFTER `mb_email_certify` ", false);
|
||||||
|
}
|
||||||
|
|
||||||
if ($mb['mb_intercept_date']) $g5['title'] = "차단된 ";
|
if ($mb['mb_intercept_date']) $g5['title'] = "차단된 ";
|
||||||
else $g5['title'] .= "";
|
else $g5['title'] .= "";
|
||||||
$g5['title'] .= '회원 '.$html_title;
|
$g5['title'] .= '회원 '.$html_title;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<?
|
<?php
|
||||||
$sub_menu = "200100";
|
$sub_menu = "200100";
|
||||||
include_once("./_common.php");
|
include_once("./_common.php");
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ include_once(G5_EDITOR_LIB);
|
|||||||
|
|
||||||
auth_check($auth[$sub_menu], "w");
|
auth_check($auth[$sub_menu], "w");
|
||||||
|
|
||||||
|
$nw_id = preg_replace('/[^0-9]/', '', $nw_id);
|
||||||
|
|
||||||
$html_title = "팝업레이어";
|
$html_title = "팝업레이어";
|
||||||
if ($w == "u")
|
if ($w == "u")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ include_once('./_common.php');
|
|||||||
|
|
||||||
auth_check($auth[$sub_menu], 'r');
|
auth_check($auth[$sub_menu], 'r');
|
||||||
|
|
||||||
if (empty($fr_date)) $fr_date = G5_TIME_YMD;
|
if (empty($fr_date) || ! preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $fr_date) ) $fr_date = G5_TIME_YMD;
|
||||||
if (empty($to_date)) $to_date = G5_TIME_YMD;
|
if (empty($to_date) || ! preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $to_date) ) $to_date = G5_TIME_YMD;
|
||||||
|
|
||||||
$qstr = "fr_date={$fr_date}{&to_date}={$to_date}";
|
$qstr = "fr_date={$fr_date}{&to_date}={$to_date}";
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -19,9 +19,9 @@ include_once('./admin.head.php');
|
|||||||
<p>정보통신망법 23조 2항(주민등록번호의 사용제한)에 따라 기존 주민등록번호 기반의 인증서비스 이용이 불가합니다. 주민등록번호 대체수단으로 최소한의 정보(생년월일, 휴대폰번호, 성별)를 입력받아 본인임을 확인하는 인증수단 입니다</p>
|
<p>정보통신망법 23조 2항(주민등록번호의 사용제한)에 따라 기존 주민등록번호 기반의 인증서비스 이용이 불가합니다. 주민등록번호 대체수단으로 최소한의 정보(생년월일, 휴대폰번호, 성별)를 입력받아 본인임을 확인하는 인증수단 입니다</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="http://sir.co.kr/main/service/p_cert.php" target="_blank"><img src="<?php echo G5_ADMIN_URL ?>/img/svc_btn_01.jpg" alt="KCP 휴대폰 본인확인 신청하기"></a></li>
|
<li><a href="http://sir.kr/main/service/p_cert.php" target="_blank"><img src="<?php echo G5_ADMIN_URL ?>/img/svc_btn_01.jpg" alt="KCP 휴대폰 본인확인 신청하기"></a></li>
|
||||||
<li><a href="http://sir.co.kr/main/service/lg_cert.php" target="_blank"><img src="<?php echo G5_ADMIN_URL ?>/img/svc_btn_02.jpg" alt="LG유플러스 휴대폰대체인증 신청하기"></a></li>
|
<li><a href="http://sir.kr/main/service/lg_cert.php" target="_blank"><img src="<?php echo G5_ADMIN_URL ?>/img/svc_btn_02.jpg" alt="LG유플러스 휴대폰대체인증 신청하기"></a></li>
|
||||||
<li class="last"><a href="http://sir.co.kr/main/service/b_cert.php" target="_blank"><img src="<?php echo G5_ADMIN_URL ?>/img/svc_btn_03.jpg" alt="OKname 휴대폰 본인확인 신청하기"></a></li>
|
<li class="last"><a href="http://sir.kr/main/service/b_cert.php" target="_blank"><img src="<?php echo G5_ADMIN_URL ?>/img/svc_btn_03.jpg" alt="OKname 휴대폰 본인확인 신청하기"></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="sevice_1">
|
<div class="sevice_1">
|
||||||
@@ -30,7 +30,7 @@ include_once('./admin.head.php');
|
|||||||
<p>정부가 주관하는 주민등록번호 대체 수단으로 본인의 개인정보를 아이핀 사이트에 한번만 발급해 놓고, 이후부터는 아이디와 패스워드 만으로
|
<p>정부가 주관하는 주민등록번호 대체 수단으로 본인의 개인정보를 아이핀 사이트에 한번만 발급해 놓고, 이후부터는 아이디와 패스워드 만으로
|
||||||
본인임을 확인하는 인증수단 입니다.</p>
|
본인임을 확인하는 인증수단 입니다.</p>
|
||||||
|
|
||||||
<h4><a href="http://sir.co.kr/main/service/b_ipin.php" target="_blank"><img src="<?php echo G5_ADMIN_URL ?>/img/svc_btn_04.jpg" alt="OKname 아이핀 본인확인 신청하기"></a></h4>
|
<h4><a href="http://sir.kr/main/service/b_ipin.php" target="_blank"><img src="<?php echo G5_ADMIN_URL ?>/img/svc_btn_04.jpg" alt="OKname 아이핀 본인확인 신청하기"></a></h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="sevice_2">
|
<div class="sevice_2">
|
||||||
<div class="svc_sms">
|
<div class="svc_sms">
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ if (is_numeric($fg_no))
|
|||||||
else
|
else
|
||||||
$sql_group = "";
|
$sql_group = "";
|
||||||
|
|
||||||
|
$st = clean_xss_tags($st);
|
||||||
|
$sv = clean_xss_tags($sv);
|
||||||
|
|
||||||
if ($st == 'all') {
|
if ($st == 'all') {
|
||||||
$sql_search = "and (fo_name like '%{$sv}%' or fo_content like '%{$sv}%')";
|
$sql_search = "and (fo_name like '%{$sv}%' or fo_content like '%{$sv}%')";
|
||||||
} else if ($st == 'name') {
|
} else if ($st == 'name') {
|
||||||
@@ -60,7 +63,7 @@ function book_all_checked(chk)
|
|||||||
function book_del(fo_no)
|
function book_del(fo_no)
|
||||||
{
|
{
|
||||||
if (confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n그래도 삭제하시겠습니까?"))
|
if (confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n그래도 삭제하시겠습니까?"))
|
||||||
location.href = "./form_update.php?w=d&fo_no=" + fo_no + "&page=<?php echo $page?>&fg_no=<?php echo $fg_no?>&st=<?php echo $st?>&sv=<?php echo $sv?>";
|
location.href = "./form_update.php?w=d&fo_no=" + fo_no + "&page=<?php echo $page?>&fg_no=<?php echo $fg_no?>&st=<?php echo get_text($st); ?>&sv=<?php echo get_text($sv); ?>";
|
||||||
}
|
}
|
||||||
|
|
||||||
function multi_update(sel)
|
function multi_update(sel)
|
||||||
@@ -127,7 +130,7 @@ function multi_update(sel)
|
|||||||
<option value="content"<?php echo get_selected('content', $st); ?>>이모티콘</option>
|
<option value="content"<?php echo get_selected('content', $st); ?>>이모티콘</option>
|
||||||
</select>
|
</select>
|
||||||
<label for="sv" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
|
<label for="sv" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
|
||||||
<input type="text" name="sv" value="<?php echo $sv;?>" id="sv" required class="frm_input required" >
|
<input type="text" name="sv" value="<?php echo get_text($sv) ;?>" id="sv" required class="frm_input required" >
|
||||||
<input type="submit" value="검색" class="btn_submit">
|
<input type="submit" value="검색" class="btn_submit">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -181,7 +184,7 @@ function multi_update(sel)
|
|||||||
<span class="sound_only">등록 </span><?php echo date('Y-m-d', strtotime($res['fo_datetime']))?>
|
<span class="sound_only">등록 </span><?php echo date('Y-m-d', strtotime($res['fo_datetime']))?>
|
||||||
</div>
|
</div>
|
||||||
<div class="li_cmd">
|
<div class="li_cmd">
|
||||||
<a href="./form_write.php?w=u&fo_no=<?php echo $res['fo_no']?>&page=<?php echo $page;?>&fg_no=<?php echo $fg_no;?>&st=<?php echo $st;?>&sv=<?php echo $sv;?>">수정</a>
|
<a href="./form_write.php?w=u&fo_no=<?php echo $res['fo_no']?>&page=<?php echo $page;?>&fg_no=<?php echo $fg_no;?>&st=<?php echo get_text($st);?>&sv=<?php echo get_text($sv);?>">수정</a>
|
||||||
<a href="javascript:void(book_del('<?php echo $res['fo_no']?>'));">삭제</a>
|
<a href="javascript:void(book_del('<?php echo $res['fo_no']?>'));">삭제</a>
|
||||||
<a href="./sms_write.php?fo_no=<?php echo $res['fo_no']?>">보내기</a>
|
<a href="./sms_write.php?fo_no=<?php echo $res['fo_no']?>">보내기</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+2
-2
@@ -5,8 +5,8 @@ include_once(G5_LIB_PATH.'/visit.lib.php');
|
|||||||
include_once('./admin.head.php');
|
include_once('./admin.head.php');
|
||||||
include_once(G5_PLUGIN_PATH.'/jquery-ui/datepicker.php');
|
include_once(G5_PLUGIN_PATH.'/jquery-ui/datepicker.php');
|
||||||
|
|
||||||
if (empty($fr_date)) $fr_date = G5_TIME_YMD;
|
if (empty($fr_date) || ! preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $fr_date) ) $fr_date = G5_TIME_YMD;
|
||||||
if (empty($to_date)) $to_date = G5_TIME_YMD;
|
if (empty($to_date) || ! preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $to_date) ) $to_date = G5_TIME_YMD;
|
||||||
|
|
||||||
$qstr = "fr_date=".$fr_date."&to_date=".$to_date;
|
$qstr = "fr_date=".$fr_date."&to_date=".$to_date;
|
||||||
$query_string = $qstr ? '?'.$qstr : '';
|
$query_string = $qstr ? '?'.$qstr : '';
|
||||||
|
|||||||
+1
-1
@@ -205,6 +205,6 @@ $(document).ready(function(){
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?
|
<?php
|
||||||
include_once ('./admin.tail.php');
|
include_once ('./admin.tail.php');
|
||||||
?>
|
?>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
include_once('./_common.php');
|
||||||
|
include_once(G5_LIB_PATH.'/json.lib.php');
|
||||||
|
|
||||||
|
$ss_name = 'ss_comment_token';
|
||||||
|
|
||||||
|
set_session($ss_name, '');
|
||||||
|
|
||||||
|
$token = _token();
|
||||||
|
|
||||||
|
set_session($ss_name, $token);
|
||||||
|
|
||||||
|
die(json_encode(array('token'=>$token)));
|
||||||
|
?>
|
||||||
@@ -33,6 +33,8 @@ $msg2 = str_replace("\\n", "<br>", $msg);
|
|||||||
$url = clean_xss_tags($url);
|
$url = clean_xss_tags($url);
|
||||||
if (!$url) $url = clean_xss_tags($_SERVER['HTTP_REFERER']);
|
if (!$url) $url = clean_xss_tags($_SERVER['HTTP_REFERER']);
|
||||||
|
|
||||||
|
$url = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", $url);
|
||||||
|
|
||||||
// url 체크
|
// url 체크
|
||||||
check_url_host($url);
|
check_url_host($url);
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
include_once('./_common.php');
|
include_once('./_common.php');
|
||||||
|
|
||||||
if ($is_admin)
|
$delete_token = get_session('ss_delete_token');
|
||||||
{
|
set_session('ss_delete_token', '');
|
||||||
if (!($token && get_session('ss_delete_token') == $token))
|
|
||||||
alert('토큰 에러로 삭제 불가합니다.');
|
if (!($token && $delete_token == $token))
|
||||||
}
|
alert('토큰 에러로 삭제 불가합니다.');
|
||||||
|
|
||||||
//$wr = sql_fetch(" select * from $write_table where wr_id = '$wr_id' ");
|
//$wr = sql_fetch(" select * from $write_table where wr_id = '$wr_id' ");
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
// 코멘트 삭제
|
// 코멘트 삭제
|
||||||
include_once('./_common.php');
|
include_once('./_common.php');
|
||||||
|
|
||||||
if ($is_admin)
|
$delete_comment_token = get_session('ss_delete_comment_'.$comment_id.'_token');
|
||||||
{
|
set_session('ss_delete_comment_'.$comment_id.'_token', '');
|
||||||
if (!($token && get_session("ss_delete_token") == $token))
|
|
||||||
alert('토큰 에러로 삭제 불가합니다.');
|
if (!($token && $delete_comment_token == $token))
|
||||||
}
|
alert('토큰 에러로 삭제 불가합니다.');
|
||||||
|
|
||||||
// 4.1
|
// 4.1
|
||||||
@include_once($board_skin_path.'/delete_comment.head.skin.php');
|
@include_once($board_skin_path.'/delete_comment.head.skin.php');
|
||||||
|
|||||||
+12
-3
@@ -1,20 +1,29 @@
|
|||||||
<?php
|
<?php
|
||||||
include_once('./_common.php');
|
include_once('./_common.php');
|
||||||
|
|
||||||
$sql = " select mb_id, mb_email, mb_datetime from {$g5['member_table']} where mb_id = '{$mb_id}' ";
|
$mb_id = trim($_GET['mb_id']);
|
||||||
|
$mb_md5 = trim($_GET['mb_md5']);
|
||||||
|
|
||||||
|
$sql = " select mb_id, mb_email_certify2 from {$g5['member_table']} where mb_id = '{$mb_id}' ";
|
||||||
$row = sql_fetch($sql);
|
$row = sql_fetch($sql);
|
||||||
if (!$row['mb_id'])
|
if (!$row['mb_id'])
|
||||||
alert('존재하는 회원이 아닙니다.', G5_URL);
|
alert('존재하는 회원이 아닙니다.', G5_URL);
|
||||||
|
|
||||||
|
// 인증 링크는 한번만 처리가 되게 한다.
|
||||||
|
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '' where mb_id = '$mb_id' ");
|
||||||
|
|
||||||
if ($mb_md5)
|
if ($mb_md5)
|
||||||
{
|
{
|
||||||
$tmp_md5 = md5($row['mb_id'].$row['mb_email'].$row['mb_datetime']);
|
if ($mb_md5 == $row['mb_email_certify2'])
|
||||||
if ($mb_md5 == $tmp_md5)
|
|
||||||
{
|
{
|
||||||
sql_query(" update {$g5['member_table']} set mb_email_certify = '".G5_TIME_YMDHIS."' where mb_id = '{$mb_id}' ");
|
sql_query(" update {$g5['member_table']} set mb_email_certify = '".G5_TIME_YMDHIS."' where mb_id = '{$mb_id}' ");
|
||||||
|
|
||||||
alert("메일인증 처리를 완료 하였습니다.\\n\\n지금부터 {$mb_id} 아이디로 로그인 가능합니다.", G5_URL);
|
alert("메일인증 처리를 완료 하였습니다.\\n\\n지금부터 {$mb_id} 아이디로 로그인 가능합니다.", G5_URL);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alert('메일인증 요청 정보가 올바르지 않습니다.', G5_URL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
alert('제대로 된 값이 넘어오지 않았습니다.', G5_URL);
|
alert('제대로 된 값이 넘어오지 않았습니다.', G5_URL);
|
||||||
|
|||||||
+10
-1
@@ -28,8 +28,17 @@ if ($sendmail_count > 3)
|
|||||||
$g5['title'] = '메일 쓰기';
|
$g5['title'] = '메일 쓰기';
|
||||||
include_once(G5_PATH.'/head.sub.php');
|
include_once(G5_PATH.'/head.sub.php');
|
||||||
|
|
||||||
|
$email_enc = new str_encrypt();
|
||||||
|
$email_dec = $email_enc->decrypt($email);
|
||||||
|
|
||||||
|
$email = get_email_address($email_dec);
|
||||||
|
if(!$email)
|
||||||
|
alert_close('이메일이 올바르지 않습니다.');
|
||||||
|
|
||||||
|
$email = $email_enc->encrypt($email);
|
||||||
|
|
||||||
if (!$name)
|
if (!$name)
|
||||||
$name = base64_decode($email);
|
$name = $email;
|
||||||
else
|
else
|
||||||
$name = get_text(stripslashes($name), true);
|
$name = get_text(stripslashes($name), true);
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ if (!$config['cf_email_use'])
|
|||||||
if (!$is_member && $config['cf_formmail_is_member'])
|
if (!$is_member && $config['cf_formmail_is_member'])
|
||||||
alert_close('회원만 이용하실 수 있습니다.');
|
alert_close('회원만 이용하실 수 있습니다.');
|
||||||
|
|
||||||
$to = base64_decode($to);
|
$email_enc = new str_encrypt();
|
||||||
|
$to = $email_enc->decrypt($to);
|
||||||
|
|
||||||
if (substr_count($to, "@") > 1)
|
if (substr_count($to, "@") > 1)
|
||||||
alert_close('한번에 한사람에게만 메일을 발송할 수 있습니다.');
|
alert_close('한번에 한사람에게만 메일을 발송할 수 있습니다.');
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ if ($sca || $stx) {
|
|||||||
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
|
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
|
||||||
|
|
||||||
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
|
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
|
||||||
// 라엘님 제안 코드로 대체 http://sir.co.kr/bbs/board.php?bo_table=g5_bug&wr_id=2922
|
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
|
||||||
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
|
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
|
||||||
$row = sql_fetch($sql);
|
$row = sql_fetch($sql);
|
||||||
$total_count = $row['cnt'];
|
$total_count = $row['cnt'];
|
||||||
|
|||||||
+2
-1
@@ -31,7 +31,8 @@ if ($mb['mb_leave_date'] && $mb['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME))
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($config['cf_use_email_certify'] && !preg_match("/[1-9]/", $mb['mb_email_certify'])) {
|
if ($config['cf_use_email_certify'] && !preg_match("/[1-9]/", $mb['mb_email_certify'])) {
|
||||||
confirm("{$mb['mb_email']} 메일로 메일인증을 받으셔야 로그인 가능합니다. 다른 메일주소로 변경하여 인증하시려면 취소를 클릭하시기 바랍니다.", G5_URL, G5_BBS_URL.'/register_email.php?mb_id='.$mb_id);
|
$ckey = md5($mb['mb_ip'].$mb['mb_datetime']);
|
||||||
|
confirm("{$mb['mb_email']} 메일로 메일인증을 받으셔야 로그인 가능합니다. 다른 메일주소로 변경하여 인증하시려면 취소를 클릭하시기 바랍니다.", G5_URL, G5_BBS_URL.'/register_email.php?mb_id='.$mb_id.'&ckey='.$ckey);
|
||||||
}
|
}
|
||||||
|
|
||||||
@include_once($member_skin_path.'/login_check.skin.php');
|
@include_once($member_skin_path.'/login_check.skin.php');
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ $url = clean_xss_tags($_GET['url']);
|
|||||||
// url 체크
|
// url 체크
|
||||||
check_url_host($url);
|
check_url_host($url);
|
||||||
|
|
||||||
|
$url = get_text($url);
|
||||||
|
|
||||||
include_once($member_skin_path.'/member_confirm.skin.php');
|
include_once($member_skin_path.'/member_confirm.skin.php');
|
||||||
|
|
||||||
include_once('./_tail.sub.php');
|
include_once('./_tail.sub.php');
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ $save_count_write = 0;
|
|||||||
$save_count_comment = 0;
|
$save_count_comment = 0;
|
||||||
$cnt = 0;
|
$cnt = 0;
|
||||||
|
|
||||||
|
$wr_id_list = preg_replace('/[^0-9\,]/', '', $_POST['wr_id_list']);
|
||||||
|
|
||||||
$sql = " select distinct wr_num from $write_table where wr_id in ({$wr_id_list}) order by wr_id ";
|
$sql = " select distinct wr_num from $write_table where wr_id in ({$wr_id_list}) order by wr_id ";
|
||||||
$result = sql_query($sql);
|
$result = sql_query($sql);
|
||||||
while ($row = sql_fetch_array($result))
|
while ($row = sql_fetch_array($result))
|
||||||
|
|||||||
+4
-2
@@ -9,11 +9,13 @@ switch ($w) {
|
|||||||
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||||
break;
|
break;
|
||||||
case 'd' :
|
case 'd' :
|
||||||
$action = './delete.php';
|
set_session('ss_delete_token', $token = uniqid(time()));
|
||||||
|
$action = './delete.php?token='.$token;
|
||||||
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||||
break;
|
break;
|
||||||
case 'x' :
|
case 'x' :
|
||||||
$action = './delete_comment.php';
|
set_session('ss_delete_comment_'.$comment_id.'_token', $token = uniqid(time()));
|
||||||
|
$action = './delete_comment.php?token='.$token;
|
||||||
$row = sql_fetch(" select wr_parent from $write_table where wr_id = '$comment_id' ");
|
$row = sql_fetch(" select wr_parent from $write_table where wr_id = '$comment_id' ");
|
||||||
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$row['wr_parent'];
|
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$row['wr_parent'];
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ for($i=0; $i<$count; $i++) {
|
|||||||
if($is_admin != 'super' && $row['mb_id'] != $member['mb_id'])
|
if($is_admin != 'super' && $row['mb_id'] != $member['mb_id'])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// 답변이 달린 글은 삭제못함
|
||||||
|
if($is_admin != 'super' && !$row['qa_type'] && $row['qa_status'])
|
||||||
|
continue;
|
||||||
|
|
||||||
// 첨부파일 삭제
|
// 첨부파일 삭제
|
||||||
for($k=1; $k<=2; $k++) {
|
for($k=1; $k<=2; $k++) {
|
||||||
@unlink(G5_DATA_PATH.'/qa/'.$row['qa_file'.$k]);
|
@unlink(G5_DATA_PATH.'/qa/'.$row['qa_file'.$k]);
|
||||||
|
|||||||
+28
-9
@@ -15,16 +15,23 @@ $msg = array();
|
|||||||
// 1:1문의 설정값
|
// 1:1문의 설정값
|
||||||
$qaconfig = get_qa_config();
|
$qaconfig = get_qa_config();
|
||||||
|
|
||||||
|
if(trim($qaconfig['qa_category'])) {
|
||||||
|
if($w != 'a') {
|
||||||
|
$category = explode('|', $qaconfig['qa_category']);
|
||||||
|
if(!in_array($qa_category, $category))
|
||||||
|
alert('분류를 올바르게 지정해 주십시오.');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
alert('1:1문의 설정에서 분류를 설정해 주십시오');
|
||||||
|
}
|
||||||
|
|
||||||
// e-mail 체크
|
// e-mail 체크
|
||||||
if(isset($_POST['qa_email']) && $qa_email) {
|
$qa_email = '';
|
||||||
|
if(isset($_POST['qa_email']) && $_POST['qa_email'])
|
||||||
$qa_email = get_email_address(trim($_POST['qa_email']));
|
$qa_email = get_email_address(trim($_POST['qa_email']));
|
||||||
|
|
||||||
if($qaconfig['qa_req_email'] && !$qa_email)
|
if($w != 'a' && $qaconfig['qa_req_email'] && !$qa_email)
|
||||||
$msg[] = '이메일을 입력하세요.';
|
$msg[] = '이메일을 입력하세요.';
|
||||||
|
|
||||||
if (!preg_match("/([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/", $qa_email))
|
|
||||||
$msg[] = '이메일 주소가 형식에 맞지 않습니다.';
|
|
||||||
}
|
|
||||||
|
|
||||||
$qa_subject = '';
|
$qa_subject = '';
|
||||||
if (isset($_POST['qa_subject'])) {
|
if (isset($_POST['qa_subject'])) {
|
||||||
@@ -105,6 +112,18 @@ if($w == 'u' || $w == 'a' || $w == 'r') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 파일개수 체크
|
||||||
|
$file_count = 0;
|
||||||
|
$upload_count = count($_FILES['bf_file']['name']);
|
||||||
|
|
||||||
|
for ($i=1; $i<=$upload_count; $i++) {
|
||||||
|
if($_FILES['bf_file']['name'][$i] && is_uploaded_file($_FILES['bf_file']['tmp_name'][$i]))
|
||||||
|
$file_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($file_count > 2)
|
||||||
|
alert('첨부파일을 2개 이하로 업로드 해주십시오.');
|
||||||
|
|
||||||
// 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
|
// 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
|
||||||
@mkdir(G5_DATA_PATH.'/qa', G5_DIR_PERMISSION);
|
@mkdir(G5_DATA_PATH.'/qa', G5_DIR_PERMISSION);
|
||||||
@chmod(G5_DATA_PATH.'/qa', G5_DIR_PERMISSION);
|
@chmod(G5_DATA_PATH.'/qa', G5_DIR_PERMISSION);
|
||||||
@@ -403,7 +422,7 @@ if($w == 'a' && $write['qa_email_recv'] && trim($write['qa_email'])) {
|
|||||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||||
|
|
||||||
$subject = $config['cf_title'].' '.$qaconfig['qa_title'].' 답변 알림 메일';
|
$subject = $config['cf_title'].' '.$qaconfig['qa_title'].' 답변 알림 메일';
|
||||||
$content = nl2br(conv_unescape_nl($qa_content));
|
$content = nl2br(conv_unescape_nl(stripslashes($qa_content)));
|
||||||
|
|
||||||
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $write['qa_email'], $subject, $content, 1);
|
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $write['qa_email'], $subject, $content, 1);
|
||||||
}
|
}
|
||||||
@@ -413,7 +432,7 @@ if(($w == '' || $w == 'r') && trim($qaconfig['qa_admin_email'])) {
|
|||||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||||
|
|
||||||
$subject = $config['cf_title'].' '.$qaconfig['qa_title'].' 질문 알림 메일';
|
$subject = $config['cf_title'].' '.$qaconfig['qa_title'].' 질문 알림 메일';
|
||||||
$content = nl2br(conv_unescape_nl($qa_content));
|
$content = nl2br(conv_unescape_nl(stripslashes($qa_content)));
|
||||||
|
|
||||||
mailer($config['cf_admin_email_name'], $qa_email, $qaconfig['qa_admin_email'], $subject, $content, 1);
|
mailer($config['cf_admin_email_name'], $qa_email, $qaconfig['qa_admin_email'], $subject, $content, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,17 @@ $g5['title'] = '메일인증 메일주소 변경';
|
|||||||
include_once('./_head.php');
|
include_once('./_head.php');
|
||||||
|
|
||||||
$mb_id = substr(clean_xss_tags($_GET['mb_id']), 0, 20);
|
$mb_id = substr(clean_xss_tags($_GET['mb_id']), 0, 20);
|
||||||
$sql = " select mb_email, mb_datetime, mb_email_certify from {$g5['member_table']} where mb_id = '{$mb_id}' ";
|
$sql = " select mb_email, mb_datetime, mb_ip, mb_email_certify from {$g5['member_table']} where mb_id = '{$mb_id}' ";
|
||||||
$mb = sql_fetch($sql);
|
$mb = sql_fetch($sql);
|
||||||
if (substr($mb['mb_email_certify'],0,1)!=0) {
|
if (substr($mb['mb_email_certify'],0,1)!=0) {
|
||||||
alert("이미 메일인증 하신 회원입니다.", G5_URL);
|
alert("이미 메일인증 하신 회원입니다.", G5_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$ckey = trim($_GET['ckey']);
|
||||||
|
$key = md5($mb['mb_ip'].$mb['mb_datetime']);
|
||||||
|
|
||||||
|
if(!$ckey || $ckey != $key)
|
||||||
|
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<p class="rg_em_p">메일인증을 받지 못한 경우 회원정보의 메일주소를 변경 할 수 있습니다.</p>
|
<p class="rg_em_p">메일인증을 받지 못한 경우 회원정보의 메일주소를 변경 할 수 있습니다.</p>
|
||||||
|
|||||||
@@ -3,12 +3,15 @@ include_once('./_common.php');
|
|||||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||||
|
|
||||||
$mb_id = trim($_POST['mb_id']);
|
$mb_id = substr(clean_xss_tags($_POST['mb_id']), 0, 20);
|
||||||
$mb_email = trim($_POST['mb_email']);
|
$mb_email = get_email_address(trim($_POST['mb_email']));
|
||||||
|
|
||||||
$sql = " select mb_name, mb_datetime from {$g5['member_table']} where mb_id = '{$mb_id}' and mb_email_certify <> '' ";
|
if(!$mb_id || !$mb_email)
|
||||||
|
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||||
|
|
||||||
|
$sql = " select mb_name from {$g5['member_table']} where mb_id = '{$mb_id}' and substring(mb_email_certify, 1, 1) = '0' ";
|
||||||
$mb = sql_fetch($sql);
|
$mb = sql_fetch($sql);
|
||||||
if ($mb) {
|
if (!$mb) {
|
||||||
alert("이미 메일인증 하신 회원입니다.", G5_URL);
|
alert("이미 메일인증 하신 회원입니다.", G5_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,8 +29,12 @@ if ($row['cnt']) {
|
|||||||
$subject = '['.$config['cf_title'].'] 인증확인 메일입니다.';
|
$subject = '['.$config['cf_title'].'] 인증확인 메일입니다.';
|
||||||
|
|
||||||
$mb_name = $mb['mb_name'];
|
$mb_name = $mb['mb_name'];
|
||||||
$mb_datetime = $mb['mb_datetime'] ? $mb['mb_datetime'] : G5_TIME_YMDHIS;
|
|
||||||
$mb_md5 = md5($mb_id.$mb_email.$mb_datetime);
|
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
|
||||||
|
$mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand()));
|
||||||
|
|
||||||
|
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' ");
|
||||||
|
|
||||||
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|||||||
@@ -253,8 +253,12 @@ if ($w == '') {
|
|||||||
if ($config['cf_email_mb_member']) {
|
if ($config['cf_email_mb_member']) {
|
||||||
$subject = '['.$config['cf_title'].'] 회원가입을 축하드립니다.';
|
$subject = '['.$config['cf_title'].'] 회원가입을 축하드립니다.';
|
||||||
|
|
||||||
$mb_md5 = md5($mb_id.$mb_email.G5_TIME_YMDHIS);
|
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
|
||||||
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
if ($config['cf_use_email_certify']) {
|
||||||
|
$mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand()));
|
||||||
|
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' ");
|
||||||
|
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
||||||
|
}
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
include_once ('./register_form_update_mail1.php');
|
include_once ('./register_form_update_mail1.php');
|
||||||
@@ -396,8 +400,11 @@ if (isset($_FILES['mb_icon']) && is_uploaded_file($_FILES['mb_icon']['tmp_name']
|
|||||||
if ($config['cf_use_email_certify'] && $old_email != $mb_email) {
|
if ($config['cf_use_email_certify'] && $old_email != $mb_email) {
|
||||||
$subject = '['.$config['cf_title'].'] 인증확인 메일입니다.';
|
$subject = '['.$config['cf_title'].'] 인증확인 메일입니다.';
|
||||||
|
|
||||||
$mb_datetime = $member['mb_datetime'] ? $member['mb_datetime'] : G5_TIME_YMDHIS;
|
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
|
||||||
$mb_md5 = md5($mb_id.$mb_email.$mb_datetime);
|
$mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand()));
|
||||||
|
|
||||||
|
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' ");
|
||||||
|
|
||||||
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
@@ -405,7 +412,7 @@ if ($config['cf_use_email_certify'] && $old_email != $mb_email) {
|
|||||||
$content = ob_get_contents();
|
$content = ob_get_contents();
|
||||||
ob_end_clean();
|
ob_end_clean();
|
||||||
|
|
||||||
mailer($config['cf_title'], $config['cf_admin_email'], $mb_email, $subject, $content, 1);
|
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ if (!$is_member)
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 게시글 존재하는지
|
||||||
|
if(!$write['wr_id'])
|
||||||
|
alert_close('스크랩하시려는 게시글이 존재하지 않습니다.');
|
||||||
|
|
||||||
$sql = " select count(*) as cnt from {$g5['scrap_table']}
|
$sql = " select count(*) as cnt from {$g5['scrap_table']}
|
||||||
where mb_id = '{$member['mb_id']}'
|
where mb_id = '{$member['mb_id']}'
|
||||||
and bo_table = '$bo_table'
|
and bo_table = '$bo_table'
|
||||||
|
|||||||
+2
-6
@@ -72,12 +72,8 @@ $update_href = $delete_href = '';
|
|||||||
// 로그인중이고 자신의 글이라면 또는 관리자라면 비밀번호를 묻지 않고 바로 수정, 삭제 가능
|
// 로그인중이고 자신의 글이라면 또는 관리자라면 비밀번호를 묻지 않고 바로 수정, 삭제 가능
|
||||||
if (($member['mb_id'] && ($member['mb_id'] == $write['mb_id'])) || $is_admin) {
|
if (($member['mb_id'] && ($member['mb_id'] == $write['mb_id'])) || $is_admin) {
|
||||||
$update_href = './write.php?w=u&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
|
$update_href = './write.php?w=u&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
|
||||||
$delete_href = './delete.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.urldecode($qstr);
|
set_session('ss_delete_token', $token = uniqid(time()));
|
||||||
if ($is_admin)
|
$delete_href ='./delete.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&token='.$token.'&page='.$page.urldecode($qstr);
|
||||||
{
|
|
||||||
set_session("ss_delete_token", $token = uniqid(time()));
|
|
||||||
$delete_href ='./delete.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&token='.$token.'&page='.$page.urldecode($qstr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (!$write['mb_id']) { // 회원이 쓴 글이 아니라면
|
else if (!$write['mb_id']) { // 회원이 쓴 글이 아니라면
|
||||||
$update_href = './password.php?w=u&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
|
$update_href = './password.php?w=u&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
|
||||||
|
|||||||
@@ -9,11 +9,6 @@ if ($is_guest && $board['bo_comment_level'] < 2) {
|
|||||||
|
|
||||||
@include_once($board_skin_path.'/view_comment.head.skin.php');
|
@include_once($board_skin_path.'/view_comment.head.skin.php');
|
||||||
|
|
||||||
// 코멘트를 새창으로 여는 경우 세션값이 없으므로 생성한다.
|
|
||||||
if ($is_admin && !$token) {
|
|
||||||
set_session("ss_delete_token", $token = uniqid(time()));
|
|
||||||
}
|
|
||||||
|
|
||||||
$list = array();
|
$list = array();
|
||||||
|
|
||||||
$is_comment_write = false;
|
$is_comment_write = false;
|
||||||
@@ -72,10 +67,13 @@ for ($i=0; $row=sql_fetch_array($result); $i++)
|
|||||||
$list[$i]['is_del'] = false;
|
$list[$i]['is_del'] = false;
|
||||||
if ($is_comment_write || $is_admin)
|
if ($is_comment_write || $is_admin)
|
||||||
{
|
{
|
||||||
|
$token = '';
|
||||||
|
|
||||||
if ($member['mb_id'])
|
if ($member['mb_id'])
|
||||||
{
|
{
|
||||||
if ($row['mb_id'] == $member['mb_id'] || $is_admin)
|
if ($row['mb_id'] == $member['mb_id'] || $is_admin)
|
||||||
{
|
{
|
||||||
|
set_session('ss_delete_comment_'.$row['wr_id'].'_token', $token = uniqid(time()));
|
||||||
$list[$i]['del_link'] = './delete_comment.php?bo_table='.$bo_table.'&comment_id='.$row['wr_id'].'&token='.$token.'&page='.$page.$qstr;
|
$list[$i]['del_link'] = './delete_comment.php?bo_table='.$bo_table.'&comment_id='.$row['wr_id'].'&token='.$token.'&page='.$page.$qstr;
|
||||||
$list[$i]['is_edit'] = true;
|
$list[$i]['is_edit'] = true;
|
||||||
$list[$i]['is_del'] = true;
|
$list[$i]['is_del'] = true;
|
||||||
|
|||||||
@@ -337,6 +337,8 @@ if ($w == '') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$file = get_file($bo_table, $wr_id);
|
$file = get_file($bo_table, $wr_id);
|
||||||
|
if($file_count < $file['count'])
|
||||||
|
$file_count = $file['count'];
|
||||||
} else if ($w == 'r') {
|
} else if ($w == 'r') {
|
||||||
if (strstr($write['wr_option'], 'secret')) {
|
if (strstr($write['wr_option'], 'secret')) {
|
||||||
$is_secret = true;
|
$is_secret = true;
|
||||||
|
|||||||
@@ -3,6 +3,12 @@ define('G5_CAPTCHA', true);
|
|||||||
include_once('./_common.php');
|
include_once('./_common.php');
|
||||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||||
|
|
||||||
|
// 토큰체크
|
||||||
|
$comment_token = trim(get_session('ss_comment_token'));
|
||||||
|
set_session('ss_comment_token', '');
|
||||||
|
if(!trim($_POST['token']) || !$comment_token || $comment_token != $_POST['token'])
|
||||||
|
alert('올바른 방법으로 이용해 주십시오.');
|
||||||
|
|
||||||
// 090710
|
// 090710
|
||||||
if (substr_count($wr_content, "&#") > 50) {
|
if (substr_count($wr_content, "&#") > 50) {
|
||||||
alert('내용에 올바르지 않은 코드가 다수 포함되어 있습니다.');
|
alert('내용에 올바르지 않은 코드가 다수 포함되어 있습니다.');
|
||||||
@@ -77,12 +83,15 @@ if ($w == 'c') // 댓글 입력
|
|||||||
// 댓글 답변
|
// 댓글 답변
|
||||||
if ($comment_id)
|
if ($comment_id)
|
||||||
{
|
{
|
||||||
$sql = " select wr_id, wr_comment, wr_comment_reply from $write_table
|
$sql = " select wr_id, wr_parent, wr_comment, wr_comment_reply from $write_table
|
||||||
where wr_id = '$comment_id' ";
|
where wr_id = '$comment_id' ";
|
||||||
$reply_array = sql_fetch($sql);
|
$reply_array = sql_fetch($sql);
|
||||||
if (!$reply_array['wr_id'])
|
if (!$reply_array['wr_id'])
|
||||||
alert('답변할 댓글이 없습니다.\\n\\n답변하는 동안 댓글이 삭제되었을 수 있습니다.');
|
alert('답변할 댓글이 없습니다.\\n\\n답변하는 동안 댓글이 삭제되었을 수 있습니다.');
|
||||||
|
|
||||||
|
if($wr['wr_parent'] != $reply_array['wr_parent'])
|
||||||
|
alert('댓글을 등록할 수 없습니다.');
|
||||||
|
|
||||||
$tmp_comment = $reply_array['wr_comment'];
|
$tmp_comment = $reply_array['wr_comment'];
|
||||||
|
|
||||||
if (strlen($reply_array['wr_comment_reply']) == 5)
|
if (strlen($reply_array['wr_comment_reply']) == 5)
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
include_once('./_common.php');
|
||||||
|
include_once(G5_LIB_PATH.'/json.lib.php');
|
||||||
|
|
||||||
|
if(!$bo_table)
|
||||||
|
die(json_encode(array('error'=>'게시판 정보가 올바르지 않습니다.', 'url'=>G5_URL)));
|
||||||
|
|
||||||
|
set_session('ss_write_'.$bo_table.'_token', '');
|
||||||
|
|
||||||
|
$token = get_write_token($bo_table);
|
||||||
|
|
||||||
|
die(json_encode(array('error'=>'', 'token'=>$token, 'url'=>'')));
|
||||||
|
?>
|
||||||
+38
-4
@@ -3,6 +3,9 @@ include_once('./_common.php');
|
|||||||
include_once(G5_LIB_PATH.'/naver_syndi.lib.php');
|
include_once(G5_LIB_PATH.'/naver_syndi.lib.php');
|
||||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||||
|
|
||||||
|
// 토큰체크
|
||||||
|
check_write_token($bo_table);
|
||||||
|
|
||||||
$g5['title'] = '게시글 저장';
|
$g5['title'] = '게시글 저장';
|
||||||
|
|
||||||
$msg = array();
|
$msg = array();
|
||||||
@@ -15,7 +18,12 @@ if($board['bo_use_category']) {
|
|||||||
$categories = array_map('trim', explode("|", $board['bo_category_list'].($is_admin ? '|공지' : '')));
|
$categories = array_map('trim', explode("|", $board['bo_category_list'].($is_admin ? '|공지' : '')));
|
||||||
if(!empty($categories) && !in_array($ca_name, $categories))
|
if(!empty($categories) && !in_array($ca_name, $categories))
|
||||||
$msg[] = '분류를 올바르게 입력하세요.';
|
$msg[] = '분류를 올바르게 입력하세요.';
|
||||||
|
|
||||||
|
if(empty($categories))
|
||||||
|
$ca_name = '';
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$ca_name = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$wr_subject = '';
|
$wr_subject = '';
|
||||||
@@ -77,10 +85,16 @@ if ($w == 'u' || $w == 'r') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 외부에서 글을 등록할 수 있는 버그가 존재하므로 비밀글은 사용일 경우에만 가능해야 함
|
// 외부에서 글을 등록할 수 있는 버그가 존재하므로 비밀글은 사용일 경우에만 가능해야 함
|
||||||
if (!$is_admin && !$board['bo_use_secret'] && $secret) {
|
if (!$is_admin && !$board['bo_use_secret'] && (stripos($_POST['html'], 'secret') !== false || stripos($_POST['secret'], 'secret') !== false || stripos($_POST['mail'], 'secret') !== false)) {
|
||||||
alert('비밀글 미사용 게시판 이므로 비밀글로 등록할 수 없습니다.');
|
alert('비밀글 미사용 게시판 이므로 비밀글로 등록할 수 없습니다.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$secret = '';
|
||||||
|
if (isset($_POST['secret']) && $_POST['secret']) {
|
||||||
|
if(preg_match('#secret#', strtolower($_POST['secret']), $matches))
|
||||||
|
$secret = $matches[0];
|
||||||
|
}
|
||||||
|
|
||||||
// 외부에서 글을 등록할 수 있는 버그가 존재하므로 비밀글 무조건 사용일때는 관리자를 제외(공지)하고 무조건 비밀글로 등록
|
// 외부에서 글을 등록할 수 있는 버그가 존재하므로 비밀글 무조건 사용일때는 관리자를 제외(공지)하고 무조건 비밀글로 등록
|
||||||
if (!$is_admin && $board['bo_use_secret'] == 2) {
|
if (!$is_admin && $board['bo_use_secret'] == 2) {
|
||||||
$secret = 'secret';
|
$secret = 'secret';
|
||||||
@@ -88,12 +102,14 @@ if (!$is_admin && $board['bo_use_secret'] == 2) {
|
|||||||
|
|
||||||
$html = '';
|
$html = '';
|
||||||
if (isset($_POST['html']) && $_POST['html']) {
|
if (isset($_POST['html']) && $_POST['html']) {
|
||||||
$html = $_POST['html'];
|
if(preg_match('#html(1|2)#', strtolower($_POST['html']), $matches))
|
||||||
|
$html = $matches[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
$mail = '';
|
$mail = '';
|
||||||
if (isset($_POST['mail']) && $_POST['mail']) {
|
if (isset($_POST['mail']) && $_POST['mail']) {
|
||||||
$mail = $_POST['mail'];
|
if(preg_match('#mail#', strtolower($_POST['mail']), $matches))
|
||||||
|
$mail = $matches[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
$notice = '';
|
$notice = '';
|
||||||
@@ -402,6 +418,24 @@ if (!$group['gr_use_access'] && $board['bo_read_level'] < 2 && !$secret) {
|
|||||||
naver_syndi_ping($bo_table, $wr_id);
|
naver_syndi_ping($bo_table, $wr_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 파일개수 체크
|
||||||
|
$file_count = 0;
|
||||||
|
$upload_count = count($_FILES['bf_file']['name']);
|
||||||
|
|
||||||
|
for ($i=0; $i<$upload_count; $i++) {
|
||||||
|
if($_FILES['bf_file']['name'][$i] && is_uploaded_file($_FILES['bf_file']['tmp_name'][$i]))
|
||||||
|
$file_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($w == 'u') {
|
||||||
|
$file = get_file($bo_table, $wr_id);
|
||||||
|
if($file_count && (int)$file['count'] > $board['bo_upload_count'])
|
||||||
|
alert('기존 파일을 삭제하신 후 첨부파일을 '.number_format($board['bo_upload_count']).'개 이하로 업로드 해주십시오.');
|
||||||
|
} else {
|
||||||
|
if($file_count > $board['bo_upload_count'])
|
||||||
|
alert('첨부파일을 '.number_format($board['bo_upload_count']).'개 이하로 업로드 해주십시오.');
|
||||||
|
}
|
||||||
|
|
||||||
// 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
|
// 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
|
||||||
@mkdir(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);
|
@mkdir(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);
|
||||||
@chmod(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);
|
@chmod(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);
|
||||||
@@ -607,7 +641,7 @@ if (!($w == 'u' || $w == 'cu') && $config['cf_email_use'] && $board['bo_use_emai
|
|||||||
else if (strstr($html, 'html2'))
|
else if (strstr($html, 'html2'))
|
||||||
$tmp_html = 2;
|
$tmp_html = 2;
|
||||||
|
|
||||||
$wr_content = conv_content(conv_unescape_nl($wr_content), $tmp_html);
|
$wr_content = conv_content(conv_unescape_nl(stripslashes($wr_content)), $tmp_html);
|
||||||
|
|
||||||
$warr = array( ''=>'입력', 'u'=>'수정', 'r'=>'답변', 'c'=>'코멘트', 'cu'=>'코멘트 수정' );
|
$warr = array( ''=>'입력', 'u'=>'수정', 'r'=>'답변', 'c'=>'코멘트', 'cu'=>'코멘트 수정' );
|
||||||
$str = $warr[$w];
|
$str = $warr[$w];
|
||||||
|
|||||||
+6
-3
@@ -39,6 +39,7 @@ function g5_path()
|
|||||||
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
|
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
|
||||||
if(isset($_SERVER['HTTP_HOST']) && preg_match('/:[0-9]+$/', $host))
|
if(isset($_SERVER['HTTP_HOST']) && preg_match('/:[0-9]+$/', $host))
|
||||||
$host = preg_replace('/:[0-9]+$/', '', $host);
|
$host = preg_replace('/:[0-9]+$/', '', $host);
|
||||||
|
$host = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", '', $host);
|
||||||
$result['url'] = $http.$host.$port.$user.$root;
|
$result['url'] = $http.$host.$port.$user.$root;
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
@@ -227,15 +228,17 @@ $qstr = '';
|
|||||||
|
|
||||||
if (isset($_REQUEST['sca'])) {
|
if (isset($_REQUEST['sca'])) {
|
||||||
$sca = clean_xss_tags(trim($_REQUEST['sca']));
|
$sca = clean_xss_tags(trim($_REQUEST['sca']));
|
||||||
if ($sca)
|
if ($sca) {
|
||||||
|
$sca = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", "", $sca);
|
||||||
$qstr .= '&sca=' . urlencode($sca);
|
$qstr .= '&sca=' . urlencode($sca);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$sca = '';
|
$sca = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_REQUEST['sfl'])) {
|
if (isset($_REQUEST['sfl'])) {
|
||||||
$sfl = trim($_REQUEST['sfl']);
|
$sfl = trim($_REQUEST['sfl']);
|
||||||
$sfl = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\s]/", "", $sfl);
|
$sfl = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*\s]/", "", $sfl);
|
||||||
if ($sfl)
|
if ($sfl)
|
||||||
$qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드)
|
$qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드)
|
||||||
} else {
|
} else {
|
||||||
@@ -253,7 +256,7 @@ if (isset($_REQUEST['stx'])) { // search text (검색어)
|
|||||||
|
|
||||||
if (isset($_REQUEST['sst'])) {
|
if (isset($_REQUEST['sst'])) {
|
||||||
$sst = trim($_REQUEST['sst']);
|
$sst = trim($_REQUEST['sst']);
|
||||||
$sst = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\s]/", "", $sst);
|
$sst = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*\s]/", "", $sst);
|
||||||
if ($sst)
|
if ($sst)
|
||||||
$qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
|
$qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+2
-2
@@ -5,7 +5,7 @@
|
|||||||
********************/
|
********************/
|
||||||
|
|
||||||
define('G5_VERSION', '그누보드5');
|
define('G5_VERSION', '그누보드5');
|
||||||
define('G5_GNUBOARD_VER', '5.1.11');
|
define('G5_GNUBOARD_VER', '5.2.5');
|
||||||
|
|
||||||
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
||||||
define('_GNUBOARD_', true);
|
define('_GNUBOARD_', true);
|
||||||
@@ -30,7 +30,7 @@ define('G5_DOMAIN', '');
|
|||||||
define('G5_HTTPS_DOMAIN', '');
|
define('G5_HTTPS_DOMAIN', '');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
www.sir.co.kr 과 sir.co.kr 도메인은 서로 다른 도메인으로 인식합니다. 쿠키를 공유하려면 .sir.co.kr 과 같이 입력하세요.
|
www.sir.kr 과 sir.kr 도메인은 서로 다른 도메인으로 인식합니다. 쿠키를 공유하려면 .sir.kr 과 같이 입력하세요.
|
||||||
이곳에 입력이 없다면 www 붙은 도메인과 그렇지 않은 도메인은 쿠키를 공유하지 않으므로 로그인이 풀릴 수 있습니다.
|
이곳에 입력이 없다면 www 붙은 도메인과 그렇지 않은 도메인은 쿠키를 공유하지 않으므로 로그인이 풀릴 수 있습니다.
|
||||||
*/
|
*/
|
||||||
define('G5_COOKIE_DOMAIN', '');
|
define('G5_COOKIE_DOMAIN', '');
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||||
|
|
||||||
|
//플러그인 폴더 이름 및 스킨 폴더 이름
|
||||||
|
define('SMARTEDITOR_UPLOAD_IMG_CHECK', 1); // 이미지 파일을 썸네일 할수 있는지 여부를 체크합니다. ( 해당 파일이 이미지 파일인지 체크합니다. 1이면 사용, 0이면 사용 안함 )
|
||||||
|
define('SMARTEDITOR_UPLOAD_RESIZE', 0); // 스마트에디터 업로드 이미지파일 JPG, PNG 리사이즈 1이면 사용, 0이면 사용안함
|
||||||
|
define('SMARTEDITOR_UPLOAD_MAX_WIDTH', 1200); // 스마트에디터 업로드 이미지 리사이즈 제한 width
|
||||||
|
define('SMARTEDITOR_UPLOAD_MAX_HEIGHT', 2800); // 스마트에디터 업로드 이미지 리사이즈 제한 height
|
||||||
|
define('SMARTEDITOR_UPLOAD_SIZE_LIMIT', 20); // 스마트에디터 업로드 사이즈 제한 ( 기본 20MB )
|
||||||
|
define('SMARTEDITOR_UPLOAD_IMAGE_QUALITY', 98); // 썸네일 이미지 JPG, PNG 압축률
|
||||||
|
?>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||||
|
|
||||||
|
define('G5_JS_VER', '161020');
|
||||||
|
define('G5_CSS_VER', '161020');
|
||||||
|
?>
|
||||||
@@ -28,6 +28,8 @@ $g4_config_file = trim($_POST['file_path']);
|
|||||||
if(!$g4_config_file)
|
if(!$g4_config_file)
|
||||||
alert('config.php 파일의 경로를 입력해 주십시오.');
|
alert('config.php 파일의 경로를 입력해 주십시오.');
|
||||||
|
|
||||||
|
$g4_config_file = preg_replace('#/config.php$#i', '', $g4_config_file).'/config.php';
|
||||||
|
|
||||||
if(!is_file($g4_config_file))
|
if(!is_file($g4_config_file))
|
||||||
alert('입력하신 경로에 config.php 파일이 존재하지 않습니다.');
|
alert('입력하신 경로에 config.php 파일이 존재하지 않습니다.');
|
||||||
|
|
||||||
|
|||||||
+8
-10
@@ -55,9 +55,9 @@ if($config['cf_add_meta'])
|
|||||||
<?php
|
<?php
|
||||||
if (defined('G5_IS_ADMIN')) {
|
if (defined('G5_IS_ADMIN')) {
|
||||||
if(!defined('_THEME_PREVIEW_'))
|
if(!defined('_THEME_PREVIEW_'))
|
||||||
echo '<link rel="stylesheet" href="'.G5_ADMIN_URL.'/css/admin.css">'.PHP_EOL;
|
echo '<link rel="stylesheet" href="'.G5_ADMIN_URL.'/css/admin.css?ver='.G5_CSS_VER.'">'.PHP_EOL;
|
||||||
} else {
|
} else {
|
||||||
echo '<link rel="stylesheet" href="'.G5_CSS_URL.'/'.(G5_IS_MOBILE?'mobile':'default').'.css">'.PHP_EOL;
|
echo '<link rel="stylesheet" href="'.G5_CSS_URL.'/'.(G5_IS_MOBILE?'mobile':'default').'.css?ver='.G5_CSS_VER.'">'.PHP_EOL;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<!--[if lte IE 8]>
|
<!--[if lte IE 8]>
|
||||||
@@ -74,16 +74,14 @@ var g5_bo_table = "<?php echo isset($bo_table)?$bo_table:''; ?>";
|
|||||||
var g5_sca = "<?php echo isset($sca)?$sca:''; ?>";
|
var g5_sca = "<?php echo isset($sca)?$sca:''; ?>";
|
||||||
var g5_editor = "<?php echo ($config['cf_editor'] && $board['bo_use_dhtml_editor'])?$config['cf_editor']:''; ?>";
|
var g5_editor = "<?php echo ($config['cf_editor'] && $board['bo_use_dhtml_editor'])?$config['cf_editor']:''; ?>";
|
||||||
var g5_cookie_domain = "<?php echo G5_COOKIE_DOMAIN ?>";
|
var g5_cookie_domain = "<?php echo G5_COOKIE_DOMAIN ?>";
|
||||||
<?php
|
<?php if(defined('G5_IS_ADMIN')) { ?>
|
||||||
if ($is_admin) {
|
var g5_admin_url = "<?php echo G5_ADMIN_URL; ?>";
|
||||||
echo 'var g5_admin_url = "'.G5_ADMIN_URL.'";'.PHP_EOL;
|
<?php } ?>
|
||||||
}
|
|
||||||
?>
|
|
||||||
</script>
|
</script>
|
||||||
<script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>
|
<script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>
|
||||||
<script src="<?php echo G5_JS_URL ?>/jquery.menu.js"></script>
|
<script src="<?php echo G5_JS_URL ?>/jquery.menu.js?ver=<?php echo G5_JS_VER; ?>"></script>
|
||||||
<script src="<?php echo G5_JS_URL ?>/common.js"></script>
|
<script src="<?php echo G5_JS_URL ?>/common.js?ver=<?php echo G5_JS_VER; ?>"></script>
|
||||||
<script src="<?php echo G5_JS_URL ?>/wrest.js"></script>
|
<script src="<?php echo G5_JS_URL ?>/wrest.js?ver=<?php echo G5_JS_VER; ?>"></script>
|
||||||
<?php
|
<?php
|
||||||
if(G5_IS_MOBILE) {
|
if(G5_IS_MOBILE) {
|
||||||
echo '<script src="'.G5_JS_URL.'/modernizr.custom.70111.js"></script>'.PHP_EOL; // overflow scroll 감지
|
echo '<script src="'.G5_JS_URL.'/modernizr.custom.70111.js"></script>'.PHP_EOL; // overflow scroll 감지
|
||||||
|
|||||||
@@ -464,6 +464,7 @@ CREATE TABLE IF NOT EXISTS `g5_member` (
|
|||||||
`mb_leave_date` varchar(8) NOT NULL default '',
|
`mb_leave_date` varchar(8) NOT NULL default '',
|
||||||
`mb_intercept_date` varchar(8) NOT NULL default '',
|
`mb_intercept_date` varchar(8) NOT NULL default '',
|
||||||
`mb_email_certify` datetime NOT NULL default '0000-00-00 00:00:00',
|
`mb_email_certify` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||||
|
`mb_email_certify2` varchar(255) NOT NULL default '',
|
||||||
`mb_memo` text NOT NULL,
|
`mb_memo` text NOT NULL,
|
||||||
`mb_lost_certify` varchar(255) NOT NULL,
|
`mb_lost_certify` varchar(255) NOT NULL,
|
||||||
`mb_mailling` tinyint(4) NOT NULL default '0',
|
`mb_mailling` tinyint(4) NOT NULL default '0',
|
||||||
|
|||||||
+33
-8
@@ -13,16 +13,41 @@ function certify_win_open(type, url)
|
|||||||
}
|
}
|
||||||
else if(type == 'kcp-hp')
|
else if(type == 'kcp-hp')
|
||||||
{
|
{
|
||||||
var return_gubun;
|
if($("input[name=veri_up_hash]").size() < 1)
|
||||||
var width = 410;
|
$("input[name=cert_no]").after('<input type="hidden" name="veri_up_hash" value="">');
|
||||||
var height = 500;
|
|
||||||
|
|
||||||
var leftpos = screen.width / 2 - ( width / 2 );
|
if( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 )
|
||||||
var toppos = screen.height / 2 - ( height / 2 );
|
{
|
||||||
|
var $frm = $(event.target.form);
|
||||||
|
if($("#kcp_cert").size() < 1) {
|
||||||
|
$frm.wrap('<div id="cert_info"></div>');
|
||||||
|
|
||||||
var winopts = "width=" + width + ", height=" + height + ", toolbar=no,status=no,statusbar=no,menubar=no,scrollbars=no,resizable=no";
|
$("#cert_info").append('<form name="form_temp" method="post">')
|
||||||
var position = ",left=" + leftpos + ", top=" + toppos;
|
.after('<iframe id="kcp_cert" name="kcp_cert" width="100%" height="700" frameborder="0" scrolling="no" style="display:none"></iframe>');
|
||||||
var AUTH_POP = window.open(url,'auth_popup', winopts + position);
|
}
|
||||||
|
|
||||||
|
var temp_form = document.form_temp;
|
||||||
|
temp_form.target = "kcp_cert";
|
||||||
|
temp_form.action = url;
|
||||||
|
|
||||||
|
document.getElementById( "cert_info" ).style.display = "none";
|
||||||
|
document.getElementById( "kcp_cert" ).style.display = "";
|
||||||
|
|
||||||
|
temp_form.submit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var return_gubun;
|
||||||
|
var width = 410;
|
||||||
|
var height = 500;
|
||||||
|
|
||||||
|
var leftpos = screen.width / 2 - ( width / 2 );
|
||||||
|
var toppos = screen.height / 2 - ( height / 2 );
|
||||||
|
|
||||||
|
var winopts = "width=" + width + ", height=" + height + ", toolbar=no,status=no,statusbar=no,menubar=no,scrollbars=no,resizable=no";
|
||||||
|
var position = ",left=" + leftpos + ", top=" + toppos;
|
||||||
|
var AUTH_POP = window.open(url,'auth_popup', winopts + position);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(type == 'lg-hp')
|
else if(type == 'lg-hp')
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -546,6 +546,26 @@ function font_resize(id, rmv_class, add_class)
|
|||||||
set_cookie("ck_font_resize_add_class", add_class, 1, g5_cookie_domain);
|
set_cookie("ck_font_resize_add_class", add_class, 1, g5_cookie_domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 댓글 수정 토큰
|
||||||
|
**/
|
||||||
|
function set_comment_token(f)
|
||||||
|
{
|
||||||
|
if(typeof f.token === "undefined")
|
||||||
|
$(f).prepend('<input type="hidden" name="token" value="">');
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: g5_bbs_url+"/ajax.comment_token.php",
|
||||||
|
type: "GET",
|
||||||
|
dataType: "json",
|
||||||
|
async: false,
|
||||||
|
cache: false,
|
||||||
|
success: function(data, textStatus) {
|
||||||
|
f.token.value = data.token;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$(function(){
|
$(function(){
|
||||||
$(".win_point").click(function() {
|
$(".win_point").click(function() {
|
||||||
win_point(this.href);
|
win_point(this.href);
|
||||||
@@ -670,3 +690,52 @@ $(function(){
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function get_write_token(bo_table)
|
||||||
|
{
|
||||||
|
var token = "";
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: g5_bbs_url+"/write_token.php",
|
||||||
|
data: { bo_table: bo_table },
|
||||||
|
cache: false,
|
||||||
|
async: false,
|
||||||
|
dataType: "json",
|
||||||
|
success: function(data) {
|
||||||
|
if(data.error) {
|
||||||
|
alert(data.error);
|
||||||
|
if(data.url)
|
||||||
|
document.location.href = data.url;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
token = data.token;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return token;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
$(document).on("click", "form[name=fwrite] input:submit", function() {
|
||||||
|
var f = this.form;
|
||||||
|
var bo_table = f.bo_table.value;
|
||||||
|
var token = get_write_token(bo_table);
|
||||||
|
|
||||||
|
if(!token) {
|
||||||
|
alert("토큰 정보가 올바르지 않습니다.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $f = $(f);
|
||||||
|
|
||||||
|
if(typeof f.token === "undefined")
|
||||||
|
$f.prepend('<input type="hidden" name="token" value="">');
|
||||||
|
|
||||||
|
$f.find("input[name=token]").val(token);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
});
|
||||||
+91
-5
@@ -212,8 +212,8 @@ function url_auto_link($str)
|
|||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
// 140326 유창화님 제안코드로 수정
|
// 140326 유창화님 제안코드로 수정
|
||||||
// http://sir.co.kr/bbs/board.php?bo_table=pg_lecture&wr_id=461
|
// http://sir.kr/pg_lecture/461
|
||||||
// http://sir.co.kr/bbs/board.php?bo_table=pg_lecture&wr_id=463
|
// http://sir.kr/pg_lecture/463
|
||||||
$str = str_replace(array("<", ">", "&", """, " ", "'"), array("\t_lt_\t", "\t_gt_\t", "&", "\"", "\t_nbsp_\t", "'"), $str);
|
$str = str_replace(array("<", ">", "&", """, " ", "'"), array("\t_lt_\t", "\t_gt_\t", "&", "\"", "\t_nbsp_\t", "'"), $str);
|
||||||
//$str = preg_replace("`(?:(?:(?:href|src)\s*=\s*(?:\"|'|)){0})((http|https|ftp|telnet|news|mms)://[^\"'\s()]+)`", "<A HREF=\"\\1\" TARGET='{$config['cf_link_target']}'>\\1</A>", $str);
|
//$str = preg_replace("`(?:(?:(?:href|src)\s*=\s*(?:\"|'|)){0})((http|https|ftp|telnet|news|mms)://[^\"'\s()]+)`", "<A HREF=\"\\1\" TARGET='{$config['cf_link_target']}'>\\1</A>", $str);
|
||||||
$str = preg_replace("/([^(href=\"?'?)|(src=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[가-힣\xA1-\xFEa-zA-Z0-9\.:&#=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET=\"{$config['cf_link_target']}\">\\2</A>", $str);
|
$str = preg_replace("/([^(href=\"?'?)|(src=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[가-힣\xA1-\xFEa-zA-Z0-9\.:&#=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET=\"{$config['cf_link_target']}\">\\2</A>", $str);
|
||||||
@@ -712,7 +712,7 @@ function get_member($mb_id, $fields='*')
|
|||||||
// 제목별로 컬럼 정렬하는 QUERY STRING
|
// 제목별로 컬럼 정렬하는 QUERY STRING
|
||||||
function subject_sort_link($col, $query_string='', $flag='asc')
|
function subject_sort_link($col, $query_string='', $flag='asc')
|
||||||
{
|
{
|
||||||
global $sst, $sod, $sfl, $stx, $page;
|
global $sst, $sod, $sfl, $stx, $page, $sca;
|
||||||
|
|
||||||
$q1 = "sst=$col";
|
$q1 = "sst=$col";
|
||||||
if ($flag == 'asc')
|
if ($flag == 'asc')
|
||||||
@@ -744,6 +744,7 @@ function subject_sort_link($col, $query_string='', $flag='asc')
|
|||||||
$arr_query[] = $q2;
|
$arr_query[] = $q2;
|
||||||
$arr_query[] = 'sfl='.$sfl;
|
$arr_query[] = 'sfl='.$sfl;
|
||||||
$arr_query[] = 'stx='.$stx;
|
$arr_query[] = 'stx='.$stx;
|
||||||
|
$arr_query[] = 'sca='.$sca;
|
||||||
$arr_query[] = 'page='.$page;
|
$arr_query[] = 'page='.$page;
|
||||||
$qstr = implode("&", $arr_query);
|
$qstr = implode("&", $arr_query);
|
||||||
|
|
||||||
@@ -1200,7 +1201,8 @@ function get_sideview($mb_id, $name='', $email='', $homepage='')
|
|||||||
global $g5;
|
global $g5;
|
||||||
global $bo_table, $sca, $is_admin, $member;
|
global $bo_table, $sca, $is_admin, $member;
|
||||||
|
|
||||||
$email = base64_encode($email);
|
$email_enc = new str_encrypt();
|
||||||
|
$email = $email_enc->encrypt($email);
|
||||||
$homepage = set_http(clean_xss_tags($homepage));
|
$homepage = set_http(clean_xss_tags($homepage));
|
||||||
|
|
||||||
$name = get_text($name, 0, true);
|
$name = get_text($name, 0, true);
|
||||||
@@ -2422,6 +2424,8 @@ class html_process {
|
|||||||
if(!trim($link[1]))
|
if(!trim($link[1]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
$link[1] = preg_replace('#\.css([\'\"]?>)$#i', '.css?ver='.G5_CSS_VER.'$1', $link[1]);
|
||||||
|
|
||||||
$stylesheet .= PHP_EOL.$link[1];
|
$stylesheet .= PHP_EOL.$link[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2446,6 +2450,8 @@ class html_process {
|
|||||||
if(!trim($js[1]))
|
if(!trim($js[1]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
$js[1] = preg_replace('#\.js([\'\"]?>)$#i', '.js?ver='.G5_JS_VER.'$1', $js[1]);
|
||||||
|
|
||||||
$javascript .= $php_eol.$js[1];
|
$javascript .= $php_eol.$js[1];
|
||||||
$php_eol = PHP_EOL;
|
$php_eol = PHP_EOL;
|
||||||
}
|
}
|
||||||
@@ -2463,7 +2469,10 @@ class html_process {
|
|||||||
<body>
|
<body>
|
||||||
전에 스킨의 자바스크립트가 위치하도록 하게 한다.
|
전에 스킨의 자바스크립트가 위치하도록 하게 한다.
|
||||||
*/
|
*/
|
||||||
$buffer = preg_replace('#(</head>[^<]*<body[^>]*>)#', "$javascript\n$1", $buffer);
|
$nl = '';
|
||||||
|
if($javascript)
|
||||||
|
$nl = "\n";
|
||||||
|
$buffer = preg_replace('#(</head>[^<]*<body[^>]*>)#', "$javascript{$nl}$1", $buffer);
|
||||||
|
|
||||||
return $buffer;
|
return $buffer;
|
||||||
}
|
}
|
||||||
@@ -2980,6 +2989,11 @@ function check_url_host($url, $msg='', $return_url=G5_URL)
|
|||||||
$p = @parse_url($url);
|
$p = @parse_url($url);
|
||||||
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
|
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
|
||||||
|
|
||||||
|
if(stripos($url, 'http:') !== false) {
|
||||||
|
if(!isset($p['scheme']) || !$p['scheme'] || !isset($p['host']) || !$p['host'])
|
||||||
|
alert('url 정보가 올바르지 않습니다.', $return_url);
|
||||||
|
}
|
||||||
|
|
||||||
if ((isset($p['scheme']) && $p['scheme']) || (isset($p['host']) && $p['host'])) {
|
if ((isset($p['scheme']) && $p['scheme']) || (isset($p['host']) && $p['host'])) {
|
||||||
//if ($p['host'].(isset($p['port']) ? ':'.$p['port'] : '') != $_SERVER['HTTP_HOST']) {
|
//if ($p['host'].(isset($p['port']) ? ':'.$p['port'] : '') != $_SERVER['HTTP_HOST']) {
|
||||||
if ($p['host'] != $host) {
|
if ($p['host'] != $host) {
|
||||||
@@ -3173,4 +3187,76 @@ function check_vaild_callback($callback){
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 문자열 암복호화
|
||||||
|
class str_encrypt
|
||||||
|
{
|
||||||
|
var $salt;
|
||||||
|
var $lenght;
|
||||||
|
|
||||||
|
function __construct($salt='')
|
||||||
|
{
|
||||||
|
if(!$salt)
|
||||||
|
$this->salt = md5(G5_MYSQL_PASSWORD);
|
||||||
|
else
|
||||||
|
$this->salt = $salt;
|
||||||
|
|
||||||
|
$this->length = strlen($this->salt);
|
||||||
|
}
|
||||||
|
|
||||||
|
function encrypt($str)
|
||||||
|
{
|
||||||
|
$length = strlen($str);
|
||||||
|
$result = '';
|
||||||
|
|
||||||
|
for($i=0; $i<$length; $i++) {
|
||||||
|
$char = substr($str, $i, 1);
|
||||||
|
$keychar = substr($this->salt, ($i % $this->length) - 1, 1);
|
||||||
|
$char = chr(ord($char) + ord($keychar));
|
||||||
|
$result .= $char;
|
||||||
|
}
|
||||||
|
|
||||||
|
return base64_encode($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
function decrypt($str) {
|
||||||
|
$result = '';
|
||||||
|
$str = base64_decode($str);
|
||||||
|
$length = strlen($str);
|
||||||
|
|
||||||
|
for($i=0; $i<$length; $i++) {
|
||||||
|
$char = substr($str, $i, 1);
|
||||||
|
$keychar = substr($this->salt, ($i % $this->length) - 1, 1);
|
||||||
|
$char = chr(ord($char) - ord($keychar));
|
||||||
|
$result .= $char;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 불법접근을 막도록 토큰을 생성하면서 토큰값을 리턴
|
||||||
|
function get_write_token($bo_table)
|
||||||
|
{
|
||||||
|
$token = md5(uniqid(rand(), true));
|
||||||
|
set_session('ss_write_'.$bo_table.'_token', $token);
|
||||||
|
|
||||||
|
return $token;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// POST로 넘어온 토큰과 세션에 저장된 토큰 비교
|
||||||
|
function check_write_token($bo_table)
|
||||||
|
{
|
||||||
|
if(!$bo_table)
|
||||||
|
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||||
|
|
||||||
|
$token = get_session('ss_write_'.$bo_table.'_token');
|
||||||
|
set_session('ss_write_'.$bo_table.'_token', '');
|
||||||
|
|
||||||
|
if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token'])
|
||||||
|
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
@@ -53,8 +53,10 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
|||||||
$query_string = clean_query_string($_SERVER['QUERY_STRING']);
|
$query_string = clean_query_string($_SERVER['QUERY_STRING']);
|
||||||
|
|
||||||
if($w == 'cu') {
|
if($w == 'cu') {
|
||||||
$sql = " select wr_id, wr_content from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
|
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
|
||||||
$cmt = sql_fetch($sql);
|
$cmt = sql_fetch($sql);
|
||||||
|
if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id'])))
|
||||||
|
$cmt['wr_content'] = '';
|
||||||
$c_wr_content = $cmt['wr_content'];
|
$c_wr_content = $cmt['wr_content'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,6 +250,8 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
|||||||
|
|
||||||
<?php if($is_guest) echo chk_captcha_js(); ?>
|
<?php if($is_guest) echo chk_captcha_js(); ?>
|
||||||
|
|
||||||
|
set_comment_token(f);
|
||||||
|
|
||||||
document.getElementById("btn_submit").disabled = "disabled";
|
document.getElementById("btn_submit").disabled = "disabled";
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -53,8 +53,10 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
|||||||
$query_string = clean_query_string($_SERVER['QUERY_STRING']);
|
$query_string = clean_query_string($_SERVER['QUERY_STRING']);
|
||||||
|
|
||||||
if($w == 'cu') {
|
if($w == 'cu') {
|
||||||
$sql = " select wr_id, wr_content from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
|
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
|
||||||
$cmt = sql_fetch($sql);
|
$cmt = sql_fetch($sql);
|
||||||
|
if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id'])))
|
||||||
|
$cmt['wr_content'] = '';
|
||||||
$c_wr_content = $cmt['wr_content'];
|
$c_wr_content = $cmt['wr_content'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,6 +250,8 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
|||||||
|
|
||||||
<?php if($is_guest) echo chk_captcha_js(); ?>
|
<?php if($is_guest) echo chk_captcha_js(); ?>
|
||||||
|
|
||||||
|
set_comment_token(f);
|
||||||
|
|
||||||
document.getElementById("btn_submit").disabled = "disabled";
|
document.getElementById("btn_submit").disabled = "disabled";
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ if( count($faq_master_list) ){
|
|||||||
|
|
||||||
<?php
|
<?php
|
||||||
// 하단 HTML
|
// 하단 HTML
|
||||||
echo '<div id="faq_thtml">'.conv_content($fm['fm_tail_html'], 1).'</div>';
|
echo '<div id="faq_thtml">'.conv_content($fm['fm_mobile_tail_html'], 1).'</div>';
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<div id="faq_sch">
|
<div id="faq_sch">
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
<form name="fformmail" action="./formmail_send.php" onsubmit="return fformmail_submit(this);" method="post" enctype="multipart/form-data" style="margin:0px;">
|
<form name="fformmail" action="./formmail_send.php" onsubmit="return fformmail_submit(this);" method="post" enctype="multipart/form-data" style="margin:0px;">
|
||||||
<input type="hidden" name="to" value="<?php echo $email ?>">
|
<input type="hidden" name="to" value="<?php echo $email ?>">
|
||||||
<input type="hidden" name="attach" value="2">
|
<input type="hidden" name="attach" value="2">
|
||||||
<input type="hidden" name="token" value="<?php echo $token ?>">
|
|
||||||
<?php if ($is_member) { // 회원이면 ?>
|
<?php if ($is_member) { // 회원이면 ?>
|
||||||
<input type="hidden" name="fnick" value="<?php echo get_text($member['mb_nick']); ?>">
|
<input type="hidden" name="fnick" value="<?php echo get_text($member['mb_nick']); ?>">
|
||||||
<input type="hidden" name="fmail" value="<?php echo $member['mb_email'] ?>">
|
<input type="hidden" name="fmail" value="<?php echo $member['mb_email'] ?>">
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
<div class="mbskin">
|
<div class="mbskin">
|
||||||
<script src="<?php echo G5_JS_URL ?>/jquery.register_form.js"></script>
|
<script src="<?php echo G5_JS_URL ?>/jquery.register_form.js"></script>
|
||||||
<?php if($config['cf_cert_use'] && ($config['cf_cert_ipin'] || $config['cf_cert_hp'])) { ?>
|
<?php if($config['cf_cert_use'] && ($config['cf_cert_ipin'] || $config['cf_cert_hp'])) { ?>
|
||||||
<script src="<?php echo G5_JS_URL ?>/certify.js"></script>
|
<script src="<?php echo G5_JS_URL ?>/certify.js?v=<?php echo G5_JS_VER; ?>"></script>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<form name="fregisterform" id="fregisterform" action="<?php echo $register_action_url ?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
|
<form name="fregisterform" id="fregisterform" action="<?php echo $register_action_url ?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
|
||||||
@@ -122,7 +122,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
|||||||
</tr>
|
</tr>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<?php if ($config['cf_use_hp']) { ?>
|
<?php if ($config['cf_use_hp'] || $config['cf_cert_hp']) { ?>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row"><label for="reg_mb_hp">휴대폰번호<?php if ($config['cf_req_hp']) { ?><strong class="sound_only">필수</strong><?php } ?></label></th>
|
<th scope="row"><label for="reg_mb_hp">휴대폰번호<?php if ($config['cf_req_hp']) { ?><strong class="sound_only">필수</strong><?php } ?></label></th>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@@ -135,7 +135,8 @@
|
|||||||
#memo_list_ul {margin:0 20px;padding:0;border-top:1px solid #e9e9e9;list-style:none}
|
#memo_list_ul {margin:0 20px;padding:0;border-top:1px solid #e9e9e9;list-style:none}
|
||||||
#memo_list_ul li {position:relative;padding:10px 0;border-bottom:1px solid #e9e9e9}
|
#memo_list_ul li {position:relative;padding:10px 0;border-bottom:1px solid #e9e9e9}
|
||||||
#memo_list_ul .memo_link {}
|
#memo_list_ul .memo_link {}
|
||||||
#memo_list_ul .memo_send {position:absolute;top:10px;right:30px}
|
#memo_list_ul .memo_send {display:block;margin-top:4px}
|
||||||
|
#memo_list_ul .memo_send a{color:#777}
|
||||||
#memo_list_ul .memo_read {font-size:0.95em;color:#666}
|
#memo_list_ul .memo_read {font-size:0.95em;color:#666}
|
||||||
#memo_list_ul .memo_del {position:absolute;top:10px;right:0}
|
#memo_list_ul .memo_del {position:absolute;top:10px;right:0}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ if(defined('G5_THEME_PATH')) {
|
|||||||
<div id="ft_copy">
|
<div id="ft_copy">
|
||||||
<div id="ft_company">
|
<div id="ft_company">
|
||||||
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a>
|
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a>
|
||||||
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보취급방침</a>
|
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보처리방침</a>
|
||||||
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a>
|
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a>
|
||||||
</div>
|
</div>
|
||||||
Copyright © <b>소유하신 도메인.</b> All rights reserved.<br>
|
Copyright © <b>소유하신 도메인.</b> All rights reserved.<br>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
5.2.14
|
5.2.19
|
||||||
@@ -31,7 +31,7 @@ class PHPMailer
|
|||||||
* The PHPMailer Version number.
|
* The PHPMailer Version number.
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $Version = '5.2.14';
|
public $Version = '5.2.19';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Email priority.
|
* Email priority.
|
||||||
@@ -201,6 +201,9 @@ class PHPMailer
|
|||||||
/**
|
/**
|
||||||
* An ID to be used in the Message-ID header.
|
* An ID to be used in the Message-ID header.
|
||||||
* If empty, a unique id will be generated.
|
* If empty, a unique id will be generated.
|
||||||
|
* You can set your own, but it must be in the format "<id@domain>",
|
||||||
|
* as defined in RFC5322 section 3.6.4 or it will be ignored.
|
||||||
|
* @see https://tools.ietf.org/html/rfc5322#section-3.6.4
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $MessageID = '';
|
public $MessageID = '';
|
||||||
@@ -285,7 +288,7 @@ class PHPMailer
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP auth type.
|
* SMTP auth type.
|
||||||
* Options are LOGIN (default), PLAIN, NTLM, CRAM-MD5
|
* Options are CRAM-MD5, LOGIN, PLAIN, NTLM, XOAUTH2, attempted in that order if not specified
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $AuthType = '';
|
public $AuthType = '';
|
||||||
@@ -352,6 +355,7 @@ class PHPMailer
|
|||||||
/**
|
/**
|
||||||
* Whether to split multiple to addresses into multiple messages
|
* Whether to split multiple to addresses into multiple messages
|
||||||
* or send them all in one message.
|
* or send them all in one message.
|
||||||
|
* Only supported in `mail` and `sendmail` transports, not in SMTP.
|
||||||
* @var boolean
|
* @var boolean
|
||||||
*/
|
*/
|
||||||
public $SingleTo = false;
|
public $SingleTo = false;
|
||||||
@@ -394,7 +398,7 @@ class PHPMailer
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* DKIM Identity.
|
* DKIM Identity.
|
||||||
* Usually the email address used as the source of the email
|
* Usually the email address used as the source of the email.
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $DKIM_identity = '';
|
public $DKIM_identity = '';
|
||||||
@@ -419,6 +423,13 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
public $DKIM_private = '';
|
public $DKIM_private = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DKIM private key string.
|
||||||
|
* If set, takes precedence over `$DKIM_private`.
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $DKIM_private_string = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback Action function name.
|
* Callback Action function name.
|
||||||
*
|
*
|
||||||
@@ -446,6 +457,15 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
public $XMailer = '';
|
public $XMailer = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Which validator to use by default when validating email addresses.
|
||||||
|
* May be a callable to inject your own validator, but there are several built-in validators.
|
||||||
|
* @see PHPMailer::validateAddress()
|
||||||
|
* @var string|callable
|
||||||
|
* @static
|
||||||
|
*/
|
||||||
|
public static $validator = 'auto';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An instance of the SMTP sender class.
|
* An instance of the SMTP sender class.
|
||||||
* @var SMTP
|
* @var SMTP
|
||||||
@@ -634,9 +654,11 @@ class PHPMailer
|
|||||||
* Constructor.
|
* Constructor.
|
||||||
* @param boolean $exceptions Should we throw external exceptions?
|
* @param boolean $exceptions Should we throw external exceptions?
|
||||||
*/
|
*/
|
||||||
public function __construct($exceptions = false)
|
public function __construct($exceptions = null)
|
||||||
{
|
{
|
||||||
$this->exceptions = (boolean)$exceptions;
|
if ($exceptions !== null) {
|
||||||
|
$this->exceptions = (boolean)$exceptions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -645,9 +667,7 @@ class PHPMailer
|
|||||||
public function __destruct()
|
public function __destruct()
|
||||||
{
|
{
|
||||||
//Close any open SMTP connection nicely
|
//Close any open SMTP connection nicely
|
||||||
if ($this->Mailer == 'smtp') {
|
$this->smtpClose();
|
||||||
$this->smtpClose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -671,14 +691,16 @@ class PHPMailer
|
|||||||
} else {
|
} else {
|
||||||
$subject = $this->encodeHeader($this->secureHeader($subject));
|
$subject = $this->encodeHeader($this->secureHeader($subject));
|
||||||
}
|
}
|
||||||
if (ini_get('safe_mode') || !($this->UseSendmailOptions)) {
|
|
||||||
|
//Can't use additional_parameters in safe_mode, calling mail() with null params breaks
|
||||||
|
//@link http://php.net/manual/en/function.mail.php
|
||||||
|
if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) {
|
||||||
$result = @mail($to, $subject, $body, $header);
|
$result = @mail($to, $subject, $body, $header);
|
||||||
} else {
|
} else {
|
||||||
$result = @mail($to, $subject, $body, $header, $params);
|
$result = @mail($to, $subject, $body, $header, $params);
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Output debugging info via user-defined method.
|
* Output debugging info via user-defined method.
|
||||||
* Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug).
|
* Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug).
|
||||||
@@ -713,7 +735,7 @@ class PHPMailer
|
|||||||
case 'echo':
|
case 'echo':
|
||||||
default:
|
default:
|
||||||
//Normalize line breaks
|
//Normalize line breaks
|
||||||
$str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str);
|
$str = preg_replace('/\r\n?/ms', "\n", $str);
|
||||||
echo gmdate('Y-m-d H:i:s') . "\t" . str_replace(
|
echo gmdate('Y-m-d H:i:s') . "\t" . str_replace(
|
||||||
"\n",
|
"\n",
|
||||||
"\n \t ",
|
"\n \t ",
|
||||||
@@ -850,7 +872,7 @@ class PHPMailer
|
|||||||
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
|
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
|
||||||
if (($pos = strrpos($address, '@')) === false) {
|
if (($pos = strrpos($address, '@')) === false) {
|
||||||
// At-sign is misssing.
|
// At-sign is misssing.
|
||||||
$error_message = $this->lang('invalid_address') . $address;
|
$error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address";
|
||||||
$this->setError($error_message);
|
$this->setError($error_message);
|
||||||
$this->edebug($error_message);
|
$this->edebug($error_message);
|
||||||
if ($this->exceptions) {
|
if ($this->exceptions) {
|
||||||
@@ -900,7 +922,7 @@ class PHPMailer
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!$this->validateAddress($address)) {
|
if (!$this->validateAddress($address)) {
|
||||||
$error_message = $this->lang('invalid_address') . $address;
|
$error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address";
|
||||||
$this->setError($error_message);
|
$this->setError($error_message);
|
||||||
$this->edebug($error_message);
|
$this->edebug($error_message);
|
||||||
if ($this->exceptions) {
|
if ($this->exceptions) {
|
||||||
@@ -994,7 +1016,7 @@ class PHPMailer
|
|||||||
if (($pos = strrpos($address, '@')) === false or
|
if (($pos = strrpos($address, '@')) === false or
|
||||||
(!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and
|
(!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and
|
||||||
!$this->validateAddress($address)) {
|
!$this->validateAddress($address)) {
|
||||||
$error_message = $this->lang('invalid_address') . $address;
|
$error_message = $this->lang('invalid_address') . " (setFrom) $address";
|
||||||
$this->setError($error_message);
|
$this->setError($error_message);
|
||||||
$this->edebug($error_message);
|
$this->edebug($error_message);
|
||||||
if ($this->exceptions) {
|
if ($this->exceptions) {
|
||||||
@@ -1027,19 +1049,30 @@ class PHPMailer
|
|||||||
/**
|
/**
|
||||||
* Check that a string looks like an email address.
|
* Check that a string looks like an email address.
|
||||||
* @param string $address The email address to check
|
* @param string $address The email address to check
|
||||||
* @param string $patternselect A selector for the validation pattern to use :
|
* @param string|callable $patternselect A selector for the validation pattern to use :
|
||||||
* * `auto` Pick best pattern automatically;
|
* * `auto` Pick best pattern automatically;
|
||||||
* * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
|
* * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
|
||||||
* * `pcre` Use old PCRE implementation;
|
* * `pcre` Use old PCRE implementation;
|
||||||
* * `php` Use PHP built-in FILTER_VALIDATE_EMAIL;
|
* * `php` Use PHP built-in FILTER_VALIDATE_EMAIL;
|
||||||
* * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements.
|
* * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements.
|
||||||
* * `noregex` Don't use a regex: super fast, really dumb.
|
* * `noregex` Don't use a regex: super fast, really dumb.
|
||||||
|
* Alternatively you may pass in a callable to inject your own validator, for example:
|
||||||
|
* PHPMailer::validateAddress('user@example.com', function($address) {
|
||||||
|
* return (strpos($address, '@') !== false);
|
||||||
|
* });
|
||||||
|
* You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator.
|
||||||
* @return boolean
|
* @return boolean
|
||||||
* @static
|
* @static
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
public static function validateAddress($address, $patternselect = 'auto')
|
public static function validateAddress($address, $patternselect = null)
|
||||||
{
|
{
|
||||||
|
if (is_null($patternselect)) {
|
||||||
|
$patternselect = self::$validator;
|
||||||
|
}
|
||||||
|
if (is_callable($patternselect)) {
|
||||||
|
return call_user_func($patternselect, $address);
|
||||||
|
}
|
||||||
//Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
|
//Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
|
||||||
if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) {
|
if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) {
|
||||||
return false;
|
return false;
|
||||||
@@ -1216,7 +1249,7 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
$this->$address_kind = $this->punyencodeAddress($this->$address_kind);
|
$this->$address_kind = $this->punyencodeAddress($this->$address_kind);
|
||||||
if (!$this->validateAddress($this->$address_kind)) {
|
if (!$this->validateAddress($this->$address_kind)) {
|
||||||
$error_message = $this->lang('invalid_address') . $this->$address_kind;
|
$error_message = $this->lang('invalid_address') . ' (punyEncode) ' . $this->$address_kind;
|
||||||
$this->setError($error_message);
|
$this->setError($error_message);
|
||||||
$this->edebug($error_message);
|
$this->edebug($error_message);
|
||||||
if ($this->exceptions) {
|
if ($this->exceptions) {
|
||||||
@@ -1227,7 +1260,7 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set whether the message is multipart/alternative
|
// Set whether the message is multipart/alternative
|
||||||
if (!empty($this->AltBody)) {
|
if ($this->alternativeExists()) {
|
||||||
$this->ContentType = 'multipart/alternative';
|
$this->ContentType = 'multipart/alternative';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1261,9 +1294,11 @@ class PHPMailer
|
|||||||
|
|
||||||
// Sign with DKIM if enabled
|
// Sign with DKIM if enabled
|
||||||
if (!empty($this->DKIM_domain)
|
if (!empty($this->DKIM_domain)
|
||||||
&& !empty($this->DKIM_private)
|
|
||||||
&& !empty($this->DKIM_selector)
|
&& !empty($this->DKIM_selector)
|
||||||
&& file_exists($this->DKIM_private)) {
|
&& (!empty($this->DKIM_private_string)
|
||||||
|
|| (!empty($this->DKIM_private) && file_exists($this->DKIM_private))
|
||||||
|
)
|
||||||
|
) {
|
||||||
$header_dkim = $this->DKIM_Add(
|
$header_dkim = $this->DKIM_Add(
|
||||||
$this->MIMEHeader . $this->mailHeader,
|
$this->MIMEHeader . $this->mailHeader,
|
||||||
$this->encodeHeader($this->secureHeader($this->Subject)),
|
$this->encodeHeader($this->secureHeader($this->Subject)),
|
||||||
@@ -1329,7 +1364,7 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
protected function sendmailSend($header, $body)
|
protected function sendmailSend($header, $body)
|
||||||
{
|
{
|
||||||
if ($this->Sender != '') {
|
if (!empty($this->Sender)) {
|
||||||
if ($this->Mailer == 'qmail') {
|
if ($this->Mailer == 'qmail') {
|
||||||
$sendmail = sprintf('%s -f%s', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
|
$sendmail = sprintf('%s -f%s', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
|
||||||
} else {
|
} else {
|
||||||
@@ -1404,17 +1439,17 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
$to = implode(', ', $toArr);
|
$to = implode(', ', $toArr);
|
||||||
|
|
||||||
if (empty($this->Sender)) {
|
$params = null;
|
||||||
$params = ' ';
|
//This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
|
||||||
} else {
|
if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {
|
||||||
$params = sprintf('-f%s', $this->Sender);
|
$params = sprintf('-f%s', escapeshellarg($this->Sender));
|
||||||
}
|
}
|
||||||
if ($this->Sender != '' and !ini_get('safe_mode')) {
|
if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) {
|
||||||
$old_from = ini_get('sendmail_from');
|
$old_from = ini_get('sendmail_from');
|
||||||
ini_set('sendmail_from', $this->Sender);
|
ini_set('sendmail_from', $this->Sender);
|
||||||
}
|
}
|
||||||
$result = false;
|
$result = false;
|
||||||
if ($this->SingleTo && count($toArr) > 1) {
|
if ($this->SingleTo and count($toArr) > 1) {
|
||||||
foreach ($toArr as $toAddr) {
|
foreach ($toArr as $toAddr) {
|
||||||
$result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params);
|
$result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params);
|
||||||
$this->doCallback($result, array($toAddr), $this->cc, $this->bcc, $this->Subject, $body, $this->From);
|
$this->doCallback($result, array($toAddr), $this->cc, $this->bcc, $this->Subject, $body, $this->From);
|
||||||
@@ -1463,10 +1498,10 @@ class PHPMailer
|
|||||||
if (!$this->smtpConnect($this->SMTPOptions)) {
|
if (!$this->smtpConnect($this->SMTPOptions)) {
|
||||||
throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
|
throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
|
||||||
}
|
}
|
||||||
if ('' == $this->Sender) {
|
if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {
|
||||||
$smtp_from = $this->From;
|
|
||||||
} else {
|
|
||||||
$smtp_from = $this->Sender;
|
$smtp_from = $this->Sender;
|
||||||
|
} else {
|
||||||
|
$smtp_from = $this->From;
|
||||||
}
|
}
|
||||||
if (!$this->smtp->mail($smtp_from)) {
|
if (!$this->smtp->mail($smtp_from)) {
|
||||||
$this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
|
$this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
|
||||||
@@ -1520,12 +1555,17 @@ class PHPMailer
|
|||||||
* @throws phpmailerException
|
* @throws phpmailerException
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function smtpConnect($options = array())
|
public function smtpConnect($options = null)
|
||||||
{
|
{
|
||||||
if (is_null($this->smtp)) {
|
if (is_null($this->smtp)) {
|
||||||
$this->smtp = $this->getSMTPInstance();
|
$this->smtp = $this->getSMTPInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If no options are provided, use whatever is set in the instance
|
||||||
|
if (is_null($options)) {
|
||||||
|
$options = $this->SMTPOptions;
|
||||||
|
}
|
||||||
|
|
||||||
// Already connected?
|
// Already connected?
|
||||||
if ($this->smtp->connected()) {
|
if ($this->smtp->connected()) {
|
||||||
return true;
|
return true;
|
||||||
@@ -1595,7 +1635,7 @@ class PHPMailer
|
|||||||
if (!$this->smtp->startTLS()) {
|
if (!$this->smtp->startTLS()) {
|
||||||
throw new phpmailerException($this->lang('connect_host'));
|
throw new phpmailerException($this->lang('connect_host'));
|
||||||
}
|
}
|
||||||
// We must resend HELO after tls negotiation
|
// We must resend EHLO after TLS negotiation
|
||||||
$this->smtp->hello($hello);
|
$this->smtp->hello($hello);
|
||||||
}
|
}
|
||||||
if ($this->SMTPAuth) {
|
if ($this->SMTPAuth) {
|
||||||
@@ -1634,7 +1674,7 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
public function smtpClose()
|
public function smtpClose()
|
||||||
{
|
{
|
||||||
if ($this->smtp !== null) {
|
if (is_a($this->smtp, 'SMTP')) {
|
||||||
if ($this->smtp->connected()) {
|
if ($this->smtp->connected()) {
|
||||||
$this->smtp->quit();
|
$this->smtp->quit();
|
||||||
$this->smtp->close();
|
$this->smtp->close();
|
||||||
@@ -1653,6 +1693,19 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
public function setLanguage($langcode = 'en', $lang_path = '')
|
public function setLanguage($langcode = 'en', $lang_path = '')
|
||||||
{
|
{
|
||||||
|
// Backwards compatibility for renamed language codes
|
||||||
|
$renamed_langcodes = array(
|
||||||
|
'br' => 'pt_br',
|
||||||
|
'cz' => 'cs',
|
||||||
|
'dk' => 'da',
|
||||||
|
'no' => 'nb',
|
||||||
|
'se' => 'sv',
|
||||||
|
);
|
||||||
|
|
||||||
|
if (isset($renamed_langcodes[$langcode])) {
|
||||||
|
$langcode = $renamed_langcodes[$langcode];
|
||||||
|
}
|
||||||
|
|
||||||
// Define full set of translatable strings in English
|
// Define full set of translatable strings in English
|
||||||
$PHPMAILER_LANG = array(
|
$PHPMAILER_LANG = array(
|
||||||
'authenticate' => 'SMTP Error: Could not authenticate.',
|
'authenticate' => 'SMTP Error: Could not authenticate.',
|
||||||
@@ -1679,6 +1732,10 @@ class PHPMailer
|
|||||||
// Calculate an absolute path so it can work if CWD is not here
|
// Calculate an absolute path so it can work if CWD is not here
|
||||||
$lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR;
|
$lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR;
|
||||||
}
|
}
|
||||||
|
//Validate $langcode
|
||||||
|
if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) {
|
||||||
|
$langcode = 'en';
|
||||||
|
}
|
||||||
$foundlang = true;
|
$foundlang = true;
|
||||||
$lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php';
|
$lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php';
|
||||||
// There is no English translation file
|
// There is no English translation file
|
||||||
@@ -1972,7 +2029,9 @@ class PHPMailer
|
|||||||
$result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
|
$result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->MessageID != '') {
|
// Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4
|
||||||
|
// https://tools.ietf.org/html/rfc5322#section-3.6.4
|
||||||
|
if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) {
|
||||||
$this->lastMessageID = $this->MessageID;
|
$this->lastMessageID = $this->MessageID;
|
||||||
} else {
|
} else {
|
||||||
$this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname());
|
$this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname());
|
||||||
@@ -2074,7 +2133,15 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
public function getSentMIMEMessage()
|
public function getSentMIMEMessage()
|
||||||
{
|
{
|
||||||
return $this->MIMEHeader . $this->mailHeader . self::CRLF . $this->MIMEBody;
|
return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . self::CRLF . self::CRLF . $this->MIMEBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create unique ID
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function generateId() {
|
||||||
|
return md5(uniqid(time()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2088,7 +2155,7 @@ class PHPMailer
|
|||||||
{
|
{
|
||||||
$body = '';
|
$body = '';
|
||||||
//Create unique IDs and preset boundaries
|
//Create unique IDs and preset boundaries
|
||||||
$this->uniqueid = md5(uniqid(time()));
|
$this->uniqueid = $this->generateId();
|
||||||
$this->boundary[1] = 'b1_' . $this->uniqueid;
|
$this->boundary[1] = 'b1_' . $this->uniqueid;
|
||||||
$this->boundary[2] = 'b2_' . $this->uniqueid;
|
$this->boundary[2] = 'b2_' . $this->uniqueid;
|
||||||
$this->boundary[3] = 'b3_' . $this->uniqueid;
|
$this->boundary[3] = 'b3_' . $this->uniqueid;
|
||||||
@@ -2104,12 +2171,12 @@ class PHPMailer
|
|||||||
//Can we do a 7-bit downgrade?
|
//Can we do a 7-bit downgrade?
|
||||||
if ($bodyEncoding == '8bit' and !$this->has8bitChars($this->Body)) {
|
if ($bodyEncoding == '8bit' and !$this->has8bitChars($this->Body)) {
|
||||||
$bodyEncoding = '7bit';
|
$bodyEncoding = '7bit';
|
||||||
|
//All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit
|
||||||
$bodyCharSet = 'us-ascii';
|
$bodyCharSet = 'us-ascii';
|
||||||
}
|
}
|
||||||
//If lines are too long, and we're not already using an encoding that will shorten them,
|
//If lines are too long, and we're not already using an encoding that will shorten them,
|
||||||
//change to quoted-printable transfer encoding
|
//change to quoted-printable transfer encoding for the body part only
|
||||||
if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) {
|
if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) {
|
||||||
$this->Encoding = 'quoted-printable';
|
|
||||||
$bodyEncoding = 'quoted-printable';
|
$bodyEncoding = 'quoted-printable';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2118,10 +2185,12 @@ class PHPMailer
|
|||||||
//Can we do a 7-bit downgrade?
|
//Can we do a 7-bit downgrade?
|
||||||
if ($altBodyEncoding == '8bit' and !$this->has8bitChars($this->AltBody)) {
|
if ($altBodyEncoding == '8bit' and !$this->has8bitChars($this->AltBody)) {
|
||||||
$altBodyEncoding = '7bit';
|
$altBodyEncoding = '7bit';
|
||||||
|
//All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit
|
||||||
$altBodyCharSet = 'us-ascii';
|
$altBodyCharSet = 'us-ascii';
|
||||||
}
|
}
|
||||||
//If lines are too long, change to quoted-printable transfer encoding
|
//If lines are too long, and we're not already using an encoding that will shorten them,
|
||||||
if (self::hasLineLongerThanMax($this->AltBody)) {
|
//change to quoted-printable transfer encoding for the alt body part only
|
||||||
|
if ('base64' != $altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)) {
|
||||||
$altBodyEncoding = 'quoted-printable';
|
$altBodyEncoding = 'quoted-printable';
|
||||||
}
|
}
|
||||||
//Use this as a preamble in all multipart message types
|
//Use this as a preamble in all multipart message types
|
||||||
@@ -2224,8 +2293,10 @@ class PHPMailer
|
|||||||
$body .= $this->attachAll('attachment', $this->boundary[1]);
|
$body .= $this->attachAll('attachment', $this->boundary[1]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// catch case 'plain' and case ''
|
// Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types
|
||||||
$body .= $this->encodeString($this->Body, $bodyEncoding);
|
//Reset the `Encoding` property in case we changed it for line length reasons
|
||||||
|
$this->Encoding = $bodyEncoding;
|
||||||
|
$body .= $this->encodeString($this->Body, $this->Encoding);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2331,8 +2402,7 @@ class PHPMailer
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the message type.
|
* Set the message type.
|
||||||
* PHPMailer only supports some preset message types,
|
* PHPMailer only supports some preset message types, not arbitrary MIME structures.
|
||||||
* not arbitrary MIME structures.
|
|
||||||
* @access protected
|
* @access protected
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@@ -2350,6 +2420,7 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
$this->message_type = implode('_', $type);
|
$this->message_type = implode('_', $type);
|
||||||
if ($this->message_type == '') {
|
if ($this->message_type == '') {
|
||||||
|
//The 'plain' message_type refers to the message having a single body element, not that it is plain-text
|
||||||
$this->message_type = 'plain';
|
$this->message_type = 'plain';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3264,16 +3335,18 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a message from an HTML string.
|
* Create a message body from an HTML string.
|
||||||
* Automatically makes modifications for inline images and backgrounds
|
* Automatically inlines images and creates a plain-text version by converting the HTML,
|
||||||
* and creates a plain-text version by converting the HTML.
|
* overwriting any existing values in Body and AltBody.
|
||||||
* Overwrites any existing values in $this->Body and $this->AltBody
|
* $basedir is used when handling relative image paths, e.g. <img src="images/a.png">
|
||||||
|
* will look for an image file in $basedir/images/a.png and convert it to inline.
|
||||||
|
* If you don't want to apply these transformations to your HTML, just set Body and AltBody yourself.
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $message HTML message string
|
* @param string $message HTML message string
|
||||||
* @param string $basedir baseline directory for path
|
* @param string $basedir base directory for relative paths to images
|
||||||
* @param boolean|callable $advanced Whether to use the internal HTML to text converter
|
* @param boolean|callable $advanced Whether to use the internal HTML to text converter
|
||||||
* or your own custom converter @see PHPMailer::html2text()
|
* or your own custom converter @see PHPMailer::html2text()
|
||||||
* @return string $message
|
* @return string $message The transformed message Body
|
||||||
*/
|
*/
|
||||||
public function msgHTML($message, $basedir = '', $advanced = false)
|
public function msgHTML($message, $basedir = '', $advanced = false)
|
||||||
{
|
{
|
||||||
@@ -3296,7 +3369,7 @@ class PHPMailer
|
|||||||
$message
|
$message
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[A-z]+://#', $url)) {
|
} elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[a-z][a-z0-9+.-]*://#i', $url)) {
|
||||||
// Do not change urls for absolute images (thanks to corvuscorax)
|
// Do not change urls for absolute images (thanks to corvuscorax)
|
||||||
// Do not change urls that are already inline images
|
// Do not change urls that are already inline images
|
||||||
$filename = basename($url);
|
$filename = basename($url);
|
||||||
@@ -3332,7 +3405,7 @@ class PHPMailer
|
|||||||
// Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better
|
// Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better
|
||||||
$this->Body = $this->normalizeBreaks($message);
|
$this->Body = $this->normalizeBreaks($message);
|
||||||
$this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced));
|
$this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced));
|
||||||
if (empty($this->AltBody)) {
|
if (!$this->alternativeExists()) {
|
||||||
$this->AltBody = 'To view this email message, open it in a program that understands HTML!' .
|
$this->AltBody = 'To view this email message, open it in a program that understands HTML!' .
|
||||||
self::CRLF . self::CRLF;
|
self::CRLF . self::CRLF;
|
||||||
}
|
}
|
||||||
@@ -3343,7 +3416,7 @@ class PHPMailer
|
|||||||
* Convert an HTML string into plain text.
|
* Convert an HTML string into plain text.
|
||||||
* This is used by msgHTML().
|
* This is used by msgHTML().
|
||||||
* Note - older versions of this function used a bundled advanced converter
|
* Note - older versions of this function used a bundled advanced converter
|
||||||
* which was been removed for license reasons in #232
|
* which was been removed for license reasons in #232.
|
||||||
* Example usage:
|
* Example usage:
|
||||||
* <code>
|
* <code>
|
||||||
* // Use default conversion
|
* // Use default conversion
|
||||||
@@ -3643,7 +3716,7 @@ class PHPMailer
|
|||||||
* @access public
|
* @access public
|
||||||
* @param string $signHeader
|
* @param string $signHeader
|
||||||
* @throws phpmailerException
|
* @throws phpmailerException
|
||||||
* @return string
|
* @return string The DKIM signature value
|
||||||
*/
|
*/
|
||||||
public function DKIM_Sign($signHeader)
|
public function DKIM_Sign($signHeader)
|
||||||
{
|
{
|
||||||
@@ -3653,15 +3726,35 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
$privKeyStr = file_get_contents($this->DKIM_private);
|
$privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private);
|
||||||
if ($this->DKIM_passphrase != '') {
|
if ('' != $this->DKIM_passphrase) {
|
||||||
$privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
|
$privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
|
||||||
} else {
|
} else {
|
||||||
$privKey = $privKeyStr;
|
$privKey = openssl_pkey_get_private($privKeyStr);
|
||||||
}
|
}
|
||||||
if (openssl_sign($signHeader, $signature, $privKey)) {
|
//Workaround for missing digest algorithms in old PHP & OpenSSL versions
|
||||||
return base64_encode($signature);
|
//@link http://stackoverflow.com/a/11117338/333340
|
||||||
|
if (version_compare(PHP_VERSION, '5.3.0') >= 0 and
|
||||||
|
in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) {
|
||||||
|
if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
|
||||||
|
openssl_pkey_free($privKey);
|
||||||
|
return base64_encode($signature);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pinfo = openssl_pkey_get_details($privKey);
|
||||||
|
$hash = hash('sha256', $signHeader);
|
||||||
|
//'Magic' constant for SHA256 from RFC3447
|
||||||
|
//@link https://tools.ietf.org/html/rfc3447#page-43
|
||||||
|
$t = '3031300d060960864801650304020105000420' . $hash;
|
||||||
|
$pslen = $pinfo['bits'] / 8 - (strlen($t) / 2 + 3);
|
||||||
|
$eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t);
|
||||||
|
|
||||||
|
if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) {
|
||||||
|
openssl_pkey_free($privKey);
|
||||||
|
return base64_encode($signature);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
openssl_pkey_free($privKey);
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3678,7 +3771,7 @@ class PHPMailer
|
|||||||
foreach ($lines as $key => $line) {
|
foreach ($lines as $key => $line) {
|
||||||
list($heading, $value) = explode(':', $line, 2);
|
list($heading, $value) = explode(':', $line, 2);
|
||||||
$heading = strtolower($heading);
|
$heading = strtolower($heading);
|
||||||
$value = preg_replace('/\s+/', ' ', $value); // Compress useless spaces
|
$value = preg_replace('/\s{2,}/', ' ', $value); // Compress useless spaces
|
||||||
$lines[$key] = $heading . ':' . trim($value); // Don't forget to remove WSP around the value
|
$lines[$key] = $heading . ':' . trim($value); // Don't forget to remove WSP around the value
|
||||||
}
|
}
|
||||||
$signHeader = implode("\r\n", $lines);
|
$signHeader = implode("\r\n", $lines);
|
||||||
@@ -3716,7 +3809,7 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
public function DKIM_Add($headers_line, $subject, $body)
|
public function DKIM_Add($headers_line, $subject, $body)
|
||||||
{
|
{
|
||||||
$DKIMsignatureType = 'rsa-sha1'; // Signature & hash algorithms
|
$DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms
|
||||||
$DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
|
$DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
|
||||||
$DKIMquery = 'dns/txt'; // Query method
|
$DKIMquery = 'dns/txt'; // Query method
|
||||||
$DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
|
$DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
|
||||||
@@ -3724,6 +3817,7 @@ class PHPMailer
|
|||||||
$headers = explode($this->LE, $headers_line);
|
$headers = explode($this->LE, $headers_line);
|
||||||
$from_header = '';
|
$from_header = '';
|
||||||
$to_header = '';
|
$to_header = '';
|
||||||
|
$date_header = '';
|
||||||
$current = '';
|
$current = '';
|
||||||
foreach ($headers as $header) {
|
foreach ($headers as $header) {
|
||||||
if (strpos($header, 'From:') === 0) {
|
if (strpos($header, 'From:') === 0) {
|
||||||
@@ -3732,6 +3826,9 @@ class PHPMailer
|
|||||||
} elseif (strpos($header, 'To:') === 0) {
|
} elseif (strpos($header, 'To:') === 0) {
|
||||||
$to_header = $header;
|
$to_header = $header;
|
||||||
$current = 'to_header';
|
$current = 'to_header';
|
||||||
|
} elseif (strpos($header, 'Date:') === 0) {
|
||||||
|
$date_header = $header;
|
||||||
|
$current = 'date_header';
|
||||||
} else {
|
} else {
|
||||||
if (!empty($$current) && strpos($header, ' =?') === 0) {
|
if (!empty($$current) && strpos($header, ' =?') === 0) {
|
||||||
$$current .= $header;
|
$$current .= $header;
|
||||||
@@ -3742,6 +3839,7 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
$from = str_replace('|', '=7C', $this->DKIM_QP($from_header));
|
$from = str_replace('|', '=7C', $this->DKIM_QP($from_header));
|
||||||
$to = str_replace('|', '=7C', $this->DKIM_QP($to_header));
|
$to = str_replace('|', '=7C', $this->DKIM_QP($to_header));
|
||||||
|
$date = str_replace('|', '=7C', $this->DKIM_QP($date_header));
|
||||||
$subject = str_replace(
|
$subject = str_replace(
|
||||||
'|',
|
'|',
|
||||||
'=7C',
|
'=7C',
|
||||||
@@ -3749,7 +3847,7 @@ class PHPMailer
|
|||||||
); // Copied header fields (dkim-quoted-printable)
|
); // Copied header fields (dkim-quoted-printable)
|
||||||
$body = $this->DKIM_BodyC($body);
|
$body = $this->DKIM_BodyC($body);
|
||||||
$DKIMlen = strlen($body); // Length of body
|
$DKIMlen = strlen($body); // Length of body
|
||||||
$DKIMb64 = base64_encode(pack('H*', sha1($body))); // Base64 of packed binary SHA-1 hash of body
|
$DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body
|
||||||
if ('' == $this->DKIM_identity) {
|
if ('' == $this->DKIM_identity) {
|
||||||
$ident = '';
|
$ident = '';
|
||||||
} else {
|
} else {
|
||||||
@@ -3762,16 +3860,18 @@ class PHPMailer
|
|||||||
$this->DKIM_selector .
|
$this->DKIM_selector .
|
||||||
";\r\n" .
|
";\r\n" .
|
||||||
"\tt=" . $DKIMtime . '; c=' . $DKIMcanonicalization . ";\r\n" .
|
"\tt=" . $DKIMtime . '; c=' . $DKIMcanonicalization . ";\r\n" .
|
||||||
"\th=From:To:Subject;\r\n" .
|
"\th=From:To:Date:Subject;\r\n" .
|
||||||
"\td=" . $this->DKIM_domain . ';' . $ident . "\r\n" .
|
"\td=" . $this->DKIM_domain . ';' . $ident . "\r\n" .
|
||||||
"\tz=$from\r\n" .
|
"\tz=$from\r\n" .
|
||||||
"\t|$to\r\n" .
|
"\t|$to\r\n" .
|
||||||
|
"\t|$date\r\n" .
|
||||||
"\t|$subject;\r\n" .
|
"\t|$subject;\r\n" .
|
||||||
"\tbh=" . $DKIMb64 . ";\r\n" .
|
"\tbh=" . $DKIMb64 . ";\r\n" .
|
||||||
"\tb=";
|
"\tb=";
|
||||||
$toSign = $this->DKIM_HeaderC(
|
$toSign = $this->DKIM_HeaderC(
|
||||||
$from_header . "\r\n" .
|
$from_header . "\r\n" .
|
||||||
$to_header . "\r\n" .
|
$to_header . "\r\n" .
|
||||||
|
$date_header . "\r\n" .
|
||||||
$subject_header . "\r\n" .
|
$subject_header . "\r\n" .
|
||||||
$dkimhdrs
|
$dkimhdrs
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ class PHPMailerOAuth extends PHPMailer
|
|||||||
* @uses SMTP
|
* @uses SMTP
|
||||||
* @access public
|
* @access public
|
||||||
* @return bool
|
* @return bool
|
||||||
|
* @throws phpmailerException
|
||||||
*/
|
*/
|
||||||
public function smtpConnect($options = array())
|
public function smtpConnect($options = array())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ class PHPMailerOAuthGoogle
|
|||||||
$this->oauthUserEmail = $UserEmail;
|
$this->oauthUserEmail = $UserEmail;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getProvider() {
|
private function getProvider()
|
||||||
|
{
|
||||||
return new League\OAuth2\Client\Provider\Google([
|
return new League\OAuth2\Client\Provider\Google([
|
||||||
'clientId' => $this->oauthClientId,
|
'clientId' => $this->oauthClientId,
|
||||||
'clientSecret' => $this->oauthClientSecret
|
'clientSecret' => $this->oauthClientSecret
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class POP3
|
|||||||
* @var string
|
* @var string
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
public $Version = '5.2.14';
|
public $Version = '5.2.19';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default POP3 port number.
|
* Default POP3 port number.
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class SMTP
|
|||||||
* The PHPMailer SMTP version number.
|
* The PHPMailer SMTP version number.
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const VERSION = '5.2.14';
|
const VERSION = '5.2.19';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP line break constant.
|
* SMTP line break constant.
|
||||||
@@ -81,7 +81,7 @@ class SMTP
|
|||||||
* @deprecated Use the `VERSION` constant instead
|
* @deprecated Use the `VERSION` constant instead
|
||||||
* @see SMTP::VERSION
|
* @see SMTP::VERSION
|
||||||
*/
|
*/
|
||||||
public $Version = '5.2.14';
|
public $Version = '5.2.19';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP server port number.
|
* SMTP server port number.
|
||||||
@@ -150,6 +150,17 @@ class SMTP
|
|||||||
*/
|
*/
|
||||||
public $Timelimit = 300;
|
public $Timelimit = 300;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array patterns to extract smtp transaction id from smtp reply
|
||||||
|
* Only first capture group will be use, use non-capturing group to deal with it
|
||||||
|
* Extend this class to override this property to fulfil your needs.
|
||||||
|
*/
|
||||||
|
protected $smtp_transaction_id_patterns = array(
|
||||||
|
'exim' => '/[0-9]{3} OK id=(.*)/',
|
||||||
|
'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/',
|
||||||
|
'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/'
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The socket for the server connection.
|
* The socket for the server connection.
|
||||||
* @var resource
|
* @var resource
|
||||||
@@ -206,7 +217,7 @@ class SMTP
|
|||||||
}
|
}
|
||||||
//Avoid clash with built-in function names
|
//Avoid clash with built-in function names
|
||||||
if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) {
|
if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) {
|
||||||
call_user_func($this->Debugoutput, $str, $this->do_debug);
|
call_user_func($this->Debugoutput, $str, $level);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch ($this->Debugoutput) {
|
switch ($this->Debugoutput) {
|
||||||
@@ -272,8 +283,8 @@ class SMTP
|
|||||||
$errstr = '';
|
$errstr = '';
|
||||||
if ($streamok) {
|
if ($streamok) {
|
||||||
$socket_context = stream_context_create($options);
|
$socket_context = stream_context_create($options);
|
||||||
//Suppress errors; connection failures are handled at a higher level
|
set_error_handler(array($this, 'errorHandler'));
|
||||||
$this->smtp_conn = @stream_socket_client(
|
$this->smtp_conn = stream_socket_client(
|
||||||
$host . ":" . $port,
|
$host . ":" . $port,
|
||||||
$errno,
|
$errno,
|
||||||
$errstr,
|
$errstr,
|
||||||
@@ -281,12 +292,14 @@ class SMTP
|
|||||||
STREAM_CLIENT_CONNECT,
|
STREAM_CLIENT_CONNECT,
|
||||||
$socket_context
|
$socket_context
|
||||||
);
|
);
|
||||||
|
restore_error_handler();
|
||||||
} else {
|
} else {
|
||||||
//Fall back to fsockopen which should work in more places, but is missing some features
|
//Fall back to fsockopen which should work in more places, but is missing some features
|
||||||
$this->edebug(
|
$this->edebug(
|
||||||
"Connection: stream_socket_client not available, falling back to fsockopen",
|
"Connection: stream_socket_client not available, falling back to fsockopen",
|
||||||
self::DEBUG_CONNECTION
|
self::DEBUG_CONNECTION
|
||||||
);
|
);
|
||||||
|
set_error_handler(array($this, 'errorHandler'));
|
||||||
$this->smtp_conn = fsockopen(
|
$this->smtp_conn = fsockopen(
|
||||||
$host,
|
$host,
|
||||||
$port,
|
$port,
|
||||||
@@ -294,6 +307,7 @@ class SMTP
|
|||||||
$errstr,
|
$errstr,
|
||||||
$timeout
|
$timeout
|
||||||
);
|
);
|
||||||
|
restore_error_handler();
|
||||||
}
|
}
|
||||||
// Verify we connected properly
|
// Verify we connected properly
|
||||||
if (!is_resource($this->smtp_conn)) {
|
if (!is_resource($this->smtp_conn)) {
|
||||||
@@ -336,11 +350,22 @@ class SMTP
|
|||||||
if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
|
if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Allow the best TLS version(s) we can
|
||||||
|
$crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT;
|
||||||
|
|
||||||
|
//PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT
|
||||||
|
//so add them back in manually if we can
|
||||||
|
if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) {
|
||||||
|
$crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
|
||||||
|
$crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT;
|
||||||
|
}
|
||||||
|
|
||||||
// Begin encrypted connection
|
// Begin encrypted connection
|
||||||
if (!stream_socket_enable_crypto(
|
if (!stream_socket_enable_crypto(
|
||||||
$this->smtp_conn,
|
$this->smtp_conn,
|
||||||
true,
|
true,
|
||||||
STREAM_CRYPTO_METHOD_TLS_CLIENT
|
$crypto_method
|
||||||
)) {
|
)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -389,7 +414,7 @@ class SMTP
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (empty($authtype)) {
|
if (empty($authtype)) {
|
||||||
foreach (array('LOGIN', 'CRAM-MD5', 'NTLM', 'PLAIN', 'XOAUTH2') as $method) {
|
foreach (array('CRAM-MD5', 'LOGIN', 'PLAIN', 'NTLM', 'XOAUTH2') as $method) {
|
||||||
if (in_array($method, $this->server_caps['AUTH'])) {
|
if (in_array($method, $this->server_caps['AUTH'])) {
|
||||||
$authtype = $method;
|
$authtype = $method;
|
||||||
break;
|
break;
|
||||||
@@ -463,7 +488,7 @@ class SMTP
|
|||||||
$temp = new stdClass;
|
$temp = new stdClass;
|
||||||
$ntlm_client = new ntlm_sasl_client_class;
|
$ntlm_client = new ntlm_sasl_client_class;
|
||||||
//Check that functions are available
|
//Check that functions are available
|
||||||
if (!$ntlm_client->Initialize($temp)) {
|
if (!$ntlm_client->initialize($temp)) {
|
||||||
$this->setError($temp->error);
|
$this->setError($temp->error);
|
||||||
$this->edebug(
|
$this->edebug(
|
||||||
'You need to enable some modules in your php.ini file: '
|
'You need to enable some modules in your php.ini file: '
|
||||||
@@ -473,7 +498,7 @@ class SMTP
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//msg1
|
//msg1
|
||||||
$msg1 = $ntlm_client->TypeMsg1($realm, $workstation); //msg1
|
$msg1 = $ntlm_client->typeMsg1($realm, $workstation); //msg1
|
||||||
|
|
||||||
if (!$this->sendCommand(
|
if (!$this->sendCommand(
|
||||||
'AUTH NTLM',
|
'AUTH NTLM',
|
||||||
@@ -492,7 +517,7 @@ class SMTP
|
|||||||
$password
|
$password
|
||||||
);
|
);
|
||||||
//msg3
|
//msg3
|
||||||
$msg3 = $ntlm_client->TypeMsg3(
|
$msg3 = $ntlm_client->typeMsg3(
|
||||||
$ntlm_res,
|
$ntlm_res,
|
||||||
$username,
|
$username,
|
||||||
$realm,
|
$realm,
|
||||||
@@ -736,7 +761,7 @@ class SMTP
|
|||||||
protected function parseHelloFields($type)
|
protected function parseHelloFields($type)
|
||||||
{
|
{
|
||||||
$this->server_caps = array();
|
$this->server_caps = array();
|
||||||
$lines = explode("\n", $this->last_reply);
|
$lines = explode("\n", $this->helo_rply);
|
||||||
|
|
||||||
foreach ($lines as $n => $s) {
|
foreach ($lines as $n => $s) {
|
||||||
//First 4 chars contain response code followed by - or space
|
//First 4 chars contain response code followed by - or space
|
||||||
@@ -1178,4 +1203,47 @@ class SMTP
|
|||||||
{
|
{
|
||||||
return $this->Timeout;
|
return $this->Timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reports an error number and string.
|
||||||
|
* @param integer $errno The error number returned by PHP.
|
||||||
|
* @param string $errmsg The error message returned by PHP.
|
||||||
|
*/
|
||||||
|
protected function errorHandler($errno, $errmsg)
|
||||||
|
{
|
||||||
|
$notice = 'Connection: Failed to connect to server.';
|
||||||
|
$this->setError(
|
||||||
|
$notice,
|
||||||
|
$errno,
|
||||||
|
$errmsg
|
||||||
|
);
|
||||||
|
$this->edebug(
|
||||||
|
$notice . ' Error number ' . $errno . '. "Error notice: ' . $errmsg,
|
||||||
|
self::DEBUG_CONNECTION
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will return the ID of the last smtp transaction based on a list of patterns provided
|
||||||
|
* in SMTP::$smtp_transaction_id_patterns.
|
||||||
|
* If no reply has been received yet, it will return null.
|
||||||
|
* If no pattern has been matched, it will return false.
|
||||||
|
* @return bool|null|string
|
||||||
|
*/
|
||||||
|
public function getLastTransactionID()
|
||||||
|
{
|
||||||
|
$reply = $this->getLastReply();
|
||||||
|
|
||||||
|
if (empty($reply)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) {
|
||||||
|
if(preg_match($smtp_transaction_id_pattern, $reply, $matches)) {
|
||||||
|
return $matches[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"name": "phpmailer/phpmailer",
|
||||||
|
"type": "library",
|
||||||
|
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Marcus Bointon",
|
||||||
|
"email": "phpmailer@synchromedia.co.uk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jim Jagielski",
|
||||||
|
"email": "jimjag@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Andy Prevost",
|
||||||
|
"email": "codeworxtech@users.sourceforge.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Brent R. Matzelle"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.0.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpdocumentor/phpdocumentor": "*",
|
||||||
|
"phpunit/phpunit": "4.7.*"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"league/oauth2-google": "Needed for Google XOAUTH2 authentication"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"class.phpmailer.php",
|
||||||
|
"class.phpmaileroauth.php",
|
||||||
|
"class.phpmaileroauthgoogle.php",
|
||||||
|
"class.smtp.php",
|
||||||
|
"class.pop3.php",
|
||||||
|
"extras/EasyPeasyICS.php",
|
||||||
|
"extras/ntlm_sasl_client.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"license": "LGPL-2.1"
|
||||||
|
}
|
||||||
Generated
+3576
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This example shows how to use DKIM message authentication with PHPMailer.
|
||||||
|
* There's more to using DKIM than just this code - check out this article:
|
||||||
|
* @link https://yomotherboard.com/how-to-setup-email-server-dkim-keys/
|
||||||
|
* See also the DKIM code in the PHPMailer unit tests,
|
||||||
|
* which shows how to make a key pair from PHP.
|
||||||
|
*/
|
||||||
|
|
||||||
|
require '../PHPMailerAutoload.php';
|
||||||
|
|
||||||
|
//Create a new PHPMailer instance
|
||||||
|
$mail = new PHPMailer;
|
||||||
|
//Set who the message is to be sent from
|
||||||
|
$mail->setFrom('from@example.com', 'First Last');
|
||||||
|
//Set an alternative reply-to address
|
||||||
|
$mail->addReplyTo('replyto@example.com', 'First Last');
|
||||||
|
//Set who the message is to be sent to
|
||||||
|
$mail->addAddress('whoto@example.com', 'John Doe');
|
||||||
|
//Set the subject line
|
||||||
|
$mail->Subject = 'PHPMailer DKIM test';
|
||||||
|
//This should be the same as the domain of your From address
|
||||||
|
$mail->DKIM_domain = 'example.com';
|
||||||
|
//Path to your private key file
|
||||||
|
$mail->DKIM_private = 'dkim_private.pem';
|
||||||
|
//Set this to your own selector
|
||||||
|
$mail->DKIM_selector = 'phpmailer';
|
||||||
|
//If your private key has a passphrase, set it here
|
||||||
|
$mail->DKIM_passphrase = '';
|
||||||
|
//The identity you're signing as - usually your From address
|
||||||
|
$mail->DKIM_identity = $mail->From;
|
||||||
|
|
||||||
|
//send the message, check for errors
|
||||||
|
if (!$mail->send()) {
|
||||||
|
echo "Mailer Error: " . $mail->ErrorInfo;
|
||||||
|
} else {
|
||||||
|
echo "Message sent!";
|
||||||
|
}
|
||||||
+5
-6
@@ -23,24 +23,23 @@ dp.SyntaxHighlighter = {
|
|||||||
return match.value;
|
return match.value;
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
};
|
}
|
||||||
|
|
||||||
function defaultValue(value, def)
|
function defaultValue(value, def)
|
||||||
{
|
{
|
||||||
return value != null ? value : def;
|
return value != null ? value : def;
|
||||||
};
|
}
|
||||||
|
|
||||||
function asString(value)
|
function asString(value)
|
||||||
{
|
{
|
||||||
return value != null ? value.toString() : null;
|
return value != null ? value.toString() : null;
|
||||||
};
|
}
|
||||||
|
|
||||||
var parts = input.split(':'),
|
var parts = input.split(':'),
|
||||||
brushName = parts[0],
|
brushName = parts[0],
|
||||||
options = {},
|
options = {},
|
||||||
straight = { 'true' : true }
|
straight = { 'true' : true },
|
||||||
reverse = { 'true' : false },
|
reverse = { 'true' : false },
|
||||||
result = null,
|
|
||||||
defaults = SyntaxHighlighter.defaults
|
defaults = SyntaxHighlighter.defaults
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -89,7 +88,7 @@ dp.SyntaxHighlighter = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
};
|
}
|
||||||
|
|
||||||
function findTagsByName(list, name, tagName)
|
function findTagsByName(list, name, tagName)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ if (array_key_exists('userfile', $_FILES)) {
|
|||||||
// Upload handled successfully
|
// Upload handled successfully
|
||||||
// Now create a message
|
// Now create a message
|
||||||
// This should be somewhere in your include_path
|
// This should be somewhere in your include_path
|
||||||
require 'PHPMailerAutoload.php';
|
require '../PHPMailerAutoload.php';
|
||||||
$mail = new PHPMailer;
|
$mail = new PHPMailer;
|
||||||
$mail->setFrom('from@example.com', 'First Last');
|
$mail->setFrom('from@example.com', 'First Last');
|
||||||
$mail->addAddress('whoto@example.com', 'John Doe');
|
$mail->addAddress('whoto@example.com', 'John Doe');
|
||||||
@@ -21,19 +21,19 @@ if (array_key_exists('userfile', $_FILES)) {
|
|||||||
// Attach the uploaded file
|
// Attach the uploaded file
|
||||||
$mail->addAttachment($uploadfile, 'My uploaded file');
|
$mail->addAttachment($uploadfile, 'My uploaded file');
|
||||||
if (!$mail->send()) {
|
if (!$mail->send()) {
|
||||||
$msg = "Mailer Error: " . $mail->ErrorInfo;
|
$msg .= "Mailer Error: " . $mail->ErrorInfo;
|
||||||
} else {
|
} else {
|
||||||
$msg = "Message sent!";
|
$msg .= "Message sent!";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$msg = 'Failed to move file to ' . $uploadfile;
|
$msg .= 'Failed to move file to ' . $uploadfile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8"/>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<title>PHPMailer Upload</title>
|
<title>PHPMailer Upload</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHPMailer multiple files upload and send example
|
||||||
|
*/
|
||||||
|
$msg = '';
|
||||||
|
if (array_key_exists('userfile', $_FILES)) {
|
||||||
|
|
||||||
|
// Create a message
|
||||||
|
// This should be somewhere in your include_path
|
||||||
|
require '../PHPMailerAutoload.php';
|
||||||
|
$mail = new PHPMailer;
|
||||||
|
$mail->setFrom('from@example.com', 'First Last');
|
||||||
|
$mail->addAddress('whoto@example.com', 'John Doe');
|
||||||
|
$mail->Subject = 'PHPMailer file sender';
|
||||||
|
$mail->msgHTML('My message body');
|
||||||
|
//Attach multiple files one by one
|
||||||
|
for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
|
||||||
|
$uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct]));
|
||||||
|
$filename = $_FILES['userfile']['name'][$ct];
|
||||||
|
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
|
||||||
|
$mail->addAttachment($uploadfile, $filename);
|
||||||
|
} else {
|
||||||
|
$msg .= 'Failed to move file to ' . $uploadfile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$mail->send()) {
|
||||||
|
$msg .= "Mailer Error: " . $mail->ErrorInfo;
|
||||||
|
} else {
|
||||||
|
$msg .= "Message sent!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<title>PHPMailer Upload</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php if (empty($msg)) { ?>
|
||||||
|
<form method="post" enctype="multipart/form-data">
|
||||||
|
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
|
||||||
|
Select one or more files:
|
||||||
|
<input name="userfile[]" type="file" multiple="multiple">
|
||||||
|
<input type="submit" value="Send Files">
|
||||||
|
</form>
|
||||||
|
<?php } else {
|
||||||
|
echo $msg;
|
||||||
|
} ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -17,24 +17,39 @@ $smtp = new SMTP;
|
|||||||
$smtp->do_debug = SMTP::DEBUG_CONNECTION;
|
$smtp->do_debug = SMTP::DEBUG_CONNECTION;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//Connect to an SMTP server
|
//Connect to an SMTP server
|
||||||
if ($smtp->connect('mail.example.com', 25)) {
|
if (!$smtp->connect('mail.example.com', 25)) {
|
||||||
//Say hello
|
|
||||||
if ($smtp->hello('localhost')) { //Put your host name in here
|
|
||||||
//Authenticate
|
|
||||||
if ($smtp->authenticate('username', 'password')) {
|
|
||||||
echo "Connected ok!";
|
|
||||||
} else {
|
|
||||||
throw new Exception('Authentication failed: ' . $smtp->getLastReply());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new Exception('HELO failed: '. $smtp->getLastReply());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new Exception('Connect failed');
|
throw new Exception('Connect failed');
|
||||||
}
|
}
|
||||||
|
//Say hello
|
||||||
|
if (!$smtp->hello(gethostname())) {
|
||||||
|
throw new Exception('EHLO failed: ' . $smtp->getError()['error']);
|
||||||
|
}
|
||||||
|
//Get the list of ESMTP services the server offers
|
||||||
|
$e = $smtp->getServerExtList();
|
||||||
|
//If server can do TLS encryption, use it
|
||||||
|
if (is_array($e) && array_key_exists('STARTTLS', $e)) {
|
||||||
|
$tlsok = $smtp->startTLS();
|
||||||
|
if (!$tlsok) {
|
||||||
|
throw new Exception('Failed to start encryption: ' . $smtp->getError()['error']);
|
||||||
|
}
|
||||||
|
//Repeat EHLO after STARTTLS
|
||||||
|
if (!$smtp->hello(gethostname())) {
|
||||||
|
throw new Exception('EHLO (2) failed: ' . $smtp->getError()['error']);
|
||||||
|
}
|
||||||
|
//Get new capabilities list, which will usually now include AUTH if it didn't before
|
||||||
|
$e = $smtp->getServerExtList();
|
||||||
|
}
|
||||||
|
//If server supports authentication, do it (even if no encryption)
|
||||||
|
if (is_array($e) && array_key_exists('AUTH', $e)) {
|
||||||
|
if ($smtp->authenticate('username', 'password')) {
|
||||||
|
echo "Connected ok!";
|
||||||
|
} else {
|
||||||
|
throw new Exception('Authentication failed: ' . $smtp->getError()['error']);
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
echo 'SMTP error: '. $e->getMessage(), "\n";
|
echo 'SMTP error: ' . $e->getMessage(), "\n";
|
||||||
}
|
}
|
||||||
//Whatever happened, close the connection.
|
//Whatever happened, close the connection.
|
||||||
$smtp->quit(true);
|
$smtp->quit(true);
|
||||||
@@ -461,7 +461,6 @@ function tln_deent(&$attvalue, $regex, $hex = false)
|
|||||||
* checks on them.
|
* checks on them.
|
||||||
*
|
*
|
||||||
* @param string $attvalue A string to run entity check against.
|
* @param string $attvalue A string to run entity check against.
|
||||||
* @return Void, modifies a reference value.
|
|
||||||
*/
|
*/
|
||||||
function tln_defang(&$attvalue)
|
function tln_defang(&$attvalue)
|
||||||
{
|
{
|
||||||
@@ -488,7 +487,6 @@ function tln_defang(&$attvalue)
|
|||||||
* be funny to make "java[tab]script" be just as good as "javascript".
|
* be funny to make "java[tab]script" be just as good as "javascript".
|
||||||
*
|
*
|
||||||
* @param string $attvalue The attribute value before extraneous spaces removed.
|
* @param string $attvalue The attribute value before extraneous spaces removed.
|
||||||
* @return Void, modifies a reference value.
|
|
||||||
*/
|
*/
|
||||||
function tln_unspace(&$attvalue)
|
function tln_unspace(&$attvalue)
|
||||||
{
|
{
|
||||||
@@ -511,7 +509,7 @@ function tln_unspace(&$attvalue)
|
|||||||
* @param array $add_attr_to_tag See description for tln_sanitize
|
* @param array $add_attr_to_tag See description for tln_sanitize
|
||||||
* @param string $trans_image_path
|
* @param string $trans_image_path
|
||||||
* @param boolean $block_external_images
|
* @param boolean $block_external_images
|
||||||
* @return Array with modified attributes.
|
* @return array with modified attributes.
|
||||||
*/
|
*/
|
||||||
function tln_fixatts(
|
function tln_fixatts(
|
||||||
$tagname,
|
$tagname,
|
||||||
@@ -667,9 +665,7 @@ function tln_fixurl($attname, &$attvalue, $trans_image_path, $block_external_ima
|
|||||||
|
|
||||||
function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
||||||
{
|
{
|
||||||
$me = 'tln_fixstyle';
|
|
||||||
// workaround for </style> in between comments
|
// workaround for </style> in between comments
|
||||||
$iCurrentPos = $pos;
|
|
||||||
$content = '';
|
$content = '';
|
||||||
$sToken = '';
|
$sToken = '';
|
||||||
$bSucces = false;
|
$bSucces = false;
|
||||||
@@ -740,8 +736,6 @@ function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
|||||||
*/
|
*/
|
||||||
$content = preg_replace("|body(\s*\{.*?\})|si", ".bodyclass\\1", $content);
|
$content = preg_replace("|body(\s*\{.*?\})|si", ".bodyclass\\1", $content);
|
||||||
|
|
||||||
$trans_image_path = $trans_image_path;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fix url('blah') declarations.
|
* Fix url('blah') declarations.
|
||||||
*/
|
*/
|
||||||
@@ -796,7 +790,6 @@ function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
|||||||
|
|
||||||
function tln_body2div($attary, $trans_image_path)
|
function tln_body2div($attary, $trans_image_path)
|
||||||
{
|
{
|
||||||
$me = 'tln_body2div';
|
|
||||||
$divattary = array('class' => "'bodyclass'");
|
$divattary = array('class' => "'bodyclass'");
|
||||||
$text = '#000000';
|
$text = '#000000';
|
||||||
$has_bgc_stl = $has_txt_stl = false;
|
$has_bgc_stl = $has_txt_stl = false;
|
||||||
@@ -901,7 +894,7 @@ function tln_sanitize(
|
|||||||
}
|
}
|
||||||
$trusted .= tln_tagprint($tagname, $attary, $tagtype);
|
$trusted .= tln_tagprint($tagname, $attary, $tagtype);
|
||||||
$trusted .= $free_content;
|
$trusted .= $free_content;
|
||||||
$trusted .= tln_tagprint($tagname, false, 2);
|
$trusted .= tln_tagprint($tagname, null, 2);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,12 +160,12 @@ class ntlm_sasl_client_class
|
|||||||
{
|
{
|
||||||
switch ($this->state) {
|
switch ($this->state) {
|
||||||
case SASL_NTLM_STATE_IDENTIFY_DOMAIN:
|
case SASL_NTLM_STATE_IDENTIFY_DOMAIN:
|
||||||
$message = $this->TypeMsg1($this->credentials["realm"], $this->credentials["workstation"]);
|
$message = $this->typeMsg1($this->credentials["realm"], $this->credentials["workstation"]);
|
||||||
$this->state = SASL_NTLM_STATE_RESPOND_CHALLENGE;
|
$this->state = SASL_NTLM_STATE_RESPOND_CHALLENGE;
|
||||||
break;
|
break;
|
||||||
case SASL_NTLM_STATE_RESPOND_CHALLENGE:
|
case SASL_NTLM_STATE_RESPOND_CHALLENGE:
|
||||||
$ntlm_response = $this->NTLMResponse(substr($response, 24, 8), $this->credentials["password"]);
|
$ntlm_response = $this->NTLMResponse(substr($response, 24, 8), $this->credentials["password"]);
|
||||||
$message = $this->TypeMsg3(
|
$message = $this->typeMsg3(
|
||||||
$ntlm_response,
|
$ntlm_response,
|
||||||
$this->credentials["user"],
|
$this->credentials["user"],
|
||||||
$this->credentials["realm"],
|
$this->credentials["realm"],
|
||||||
|
|||||||
@@ -13,8 +13,15 @@
|
|||||||
* PHP Version 5.4
|
* PHP Version 5.4
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
namespace League\OAuth2\Client\Provider;
|
||||||
|
|
||||||
require 'vendor/autoload.php';
|
require 'vendor/autoload.php';
|
||||||
|
|
||||||
|
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
|
||||||
|
use League\OAuth2\Client\Token\AccessToken;
|
||||||
|
use League\OAuth2\Client\Tool\BearerAuthorizationTrait;
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
//If this automatic URL doesn't work, set it yourself manually
|
//If this automatic URL doesn't work, set it yourself manually
|
||||||
@@ -25,14 +32,109 @@ $redirectUri = isset($_SERVER['HTTPS']) ? 'https://' : 'http://' . $_SERVER['HTT
|
|||||||
$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
|
$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
|
||||||
$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
|
$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
|
||||||
|
|
||||||
|
class Google extends AbstractProvider
|
||||||
|
{
|
||||||
|
use BearerAuthorizationTrait;
|
||||||
|
|
||||||
|
const ACCESS_TOKEN_RESOURCE_OWNER_ID = 'id';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string If set, this will be sent to google as the "access_type" parameter.
|
||||||
|
* @link https://developers.google.com/accounts/docs/OAuth2WebServer#offline
|
||||||
|
*/
|
||||||
|
protected $accessType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string If set, this will be sent to google as the "hd" parameter.
|
||||||
|
* @link https://developers.google.com/accounts/docs/OAuth2Login#hd-param
|
||||||
|
*/
|
||||||
|
protected $hostedDomain;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string If set, this will be sent to google as the "scope" parameter.
|
||||||
|
* @link https://developers.google.com/gmail/api/auth/scopes
|
||||||
|
*/
|
||||||
|
protected $scope;
|
||||||
|
|
||||||
|
public function getBaseAuthorizationUrl()
|
||||||
|
{
|
||||||
|
return 'https://accounts.google.com/o/oauth2/auth';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBaseAccessTokenUrl(array $params)
|
||||||
|
{
|
||||||
|
return 'https://accounts.google.com/o/oauth2/token';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getResourceOwnerDetailsUrl(AccessToken $token)
|
||||||
|
{
|
||||||
|
return ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getAuthorizationParameters(array $options)
|
||||||
|
{
|
||||||
|
if (is_array($this->scope)) {
|
||||||
|
$separator = $this->getScopeSeparator();
|
||||||
|
$this->scope = implode($separator, $this->scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
$params = array_merge(
|
||||||
|
parent::getAuthorizationParameters($options),
|
||||||
|
array_filter([
|
||||||
|
'hd' => $this->hostedDomain,
|
||||||
|
'access_type' => $this->accessType,
|
||||||
|
'scope' => $this->scope,
|
||||||
|
// if the user is logged in with more than one account ask which one to use for the login!
|
||||||
|
'authuser' => '-1'
|
||||||
|
])
|
||||||
|
);
|
||||||
|
return $params;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getDefaultScopes()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'email',
|
||||||
|
'openid',
|
||||||
|
'profile',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getScopeSeparator()
|
||||||
|
{
|
||||||
|
return ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function checkResponse(ResponseInterface $response, $data)
|
||||||
|
{
|
||||||
|
if (!empty($data['error'])) {
|
||||||
|
$code = 0;
|
||||||
|
$error = $data['error'];
|
||||||
|
|
||||||
|
if (is_array($error)) {
|
||||||
|
$code = $error['code'];
|
||||||
|
$error = $error['message'];
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new IdentityProviderException($error, $code, $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function createResourceOwner(array $response, AccessToken $token)
|
||||||
|
{
|
||||||
|
return new GoogleUser($response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//Set Redirect URI in Developer Console as [https/http]://<yourdomain>/<folder>/get_oauth_token.php
|
//Set Redirect URI in Developer Console as [https/http]://<yourdomain>/<folder>/get_oauth_token.php
|
||||||
$provider = new League\OAuth2\Client\Provider\Google(
|
$provider = new Google(
|
||||||
array(
|
array(
|
||||||
'clientId' => $clientId,
|
'clientId' => $clientId,
|
||||||
'clientSecret' => $clientSecret,
|
'clientSecret' => $clientSecret,
|
||||||
'redirectUri' => $redirectUri,
|
'redirectUri' => $redirectUri,
|
||||||
'scopes' => array('https://mail.google.com/'),
|
'scope' => array('https://mail.google.com/'),
|
||||||
'accessType' => 'offline'
|
'accessType' => 'offline'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Czech PHPMailer language file: refer to English translation for definitive list
|
||||||
|
* @package PHPMailer
|
||||||
|
*/
|
||||||
|
|
||||||
|
$PHPMAILER_LANG['authenticate'] = 'Chyba SMTP: Autentizace selhala.';
|
||||||
|
$PHPMAILER_LANG['connect_host'] = 'Chyba SMTP: Nelze navázat spojení se SMTP serverem.';
|
||||||
|
$PHPMAILER_LANG['data_not_accepted'] = 'Chyba SMTP: Data nebyla přijata.';
|
||||||
|
$PHPMAILER_LANG['empty_message'] = 'Prázdné tělo zprávy';
|
||||||
|
$PHPMAILER_LANG['encoding'] = 'Neznámé kódování: ';
|
||||||
|
$PHPMAILER_LANG['execute'] = 'Nelze provést: ';
|
||||||
|
$PHPMAILER_LANG['file_access'] = 'Nelze získat přístup k souboru: ';
|
||||||
|
$PHPMAILER_LANG['file_open'] = 'Chyba souboru: Nelze otevřít soubor pro čtení: ';
|
||||||
|
$PHPMAILER_LANG['from_failed'] = 'Následující adresa odesílatele je nesprávná: ';
|
||||||
|
$PHPMAILER_LANG['instantiate'] = 'Nelze vytvořit instanci emailové funkce.';
|
||||||
|
$PHPMAILER_LANG['invalid_address'] = 'Neplatná adresa: ';
|
||||||
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer není podporován.';
|
||||||
|
$PHPMAILER_LANG['provide_address'] = 'Musíte zadat alespoň jednu emailovou adresu příjemce.';
|
||||||
|
$PHPMAILER_LANG['recipients_failed'] = 'Chyba SMTP: Následující adresy příjemců nejsou správně: ';
|
||||||
|
$PHPMAILER_LANG['signing'] = 'Chyba přihlašování: ';
|
||||||
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() selhal.';
|
||||||
|
$PHPMAILER_LANG['smtp_error'] = 'Chyba SMTP serveru: ';
|
||||||
|
$PHPMAILER_LANG['variable_set'] = 'Nelze nastavit nebo změnit proměnnou: ';
|
||||||
|
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Danish PHPMailer language file: refer to English translation for definitive list
|
||||||
|
* @package PHPMailer
|
||||||
|
* @author Mikael Stokkebro <info@stokkebro.dk>
|
||||||
|
*/
|
||||||
|
|
||||||
|
$PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Kunne ikke logge på.';
|
||||||
|
$PHPMAILER_LANG['connect_host'] = 'SMTP fejl: Kunne ikke tilslutte SMTP serveren.';
|
||||||
|
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data kunne ikke accepteres.';
|
||||||
|
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
|
||||||
|
$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: ';
|
||||||
|
$PHPMAILER_LANG['execute'] = 'Kunne ikke køre: ';
|
||||||
|
$PHPMAILER_LANG['file_access'] = 'Ingen adgang til fil: ';
|
||||||
|
$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: ';
|
||||||
|
$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: ';
|
||||||
|
$PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere email funktionen.';
|
||||||
|
//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: ';
|
||||||
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.';
|
||||||
|
$PHPMAILER_LANG['provide_address'] = 'Du skal indtaste mindst en modtagers emailadresse.';
|
||||||
|
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere er forkerte: ';
|
||||||
|
//$PHPMAILER_LANG['signing'] = 'Signing Error: ';
|
||||||
|
//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.';
|
||||||
|
//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: ';
|
||||||
|
//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: ';
|
||||||
|
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||||
@@ -4,22 +4,22 @@
|
|||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'SMTP Fehler: Authentifizierung fehlgeschlagen.';
|
$PHPMAILER_LANG['authenticate'] = 'SMTP-Fehler: Authentifizierung fehlgeschlagen.';
|
||||||
$PHPMAILER_LANG['connect_host'] = 'SMTP Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
|
$PHPMAILER_LANG['connect_host'] = 'SMTP-Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
|
||||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Fehler: Daten werden nicht akzeptiert.';
|
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-Fehler: Daten werden nicht akzeptiert.';
|
||||||
$PHPMAILER_LANG['empty_message'] = 'E-Mail Inhalt ist leer.';
|
$PHPMAILER_LANG['empty_message'] = 'E-Mail-Inhalt ist leer.';
|
||||||
$PHPMAILER_LANG['encoding'] = 'Unbekanntes Encoding-Format: ';
|
$PHPMAILER_LANG['encoding'] = 'Unbekannte Kodierung: ';
|
||||||
$PHPMAILER_LANG['execute'] = 'Konnte folgenden Befehl nicht ausführen: ';
|
$PHPMAILER_LANG['execute'] = 'Konnte folgenden Befehl nicht ausführen: ';
|
||||||
$PHPMAILER_LANG['file_access'] = 'Zugriff auf folgende Datei fehlgeschlagen: ';
|
$PHPMAILER_LANG['file_access'] = 'Zugriff auf folgende Datei fehlgeschlagen: ';
|
||||||
$PHPMAILER_LANG['file_open'] = 'Datei Fehler: konnte folgende Datei nicht öffnen: ';
|
$PHPMAILER_LANG['file_open'] = 'Dateifehler: Konnte folgende Datei nicht öffnen: ';
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
|
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Mail Funktion konnte nicht initialisiert werden.';
|
$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'E-Mail wird nicht gesendet, die Adresse ist ungültig: ';
|
$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: ';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfänger E-Mailadresse an.';
|
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Fehler: Die folgenden Empfänger sind nicht korrekt: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'Fehler beim Signieren: ';
|
$PHPMAILER_LANG['signing'] = 'Fehler beim Signieren: ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zu SMTP Server fehlgeschlagen.';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zum SMTP-Server fehlgeschlagen.';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP Server: ';
|
$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP-Server: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Kann Variable nicht setzen oder zurücksetzen: ';
|
$PHPMAILER_LANG['variable_set'] = 'Kann Variable nicht setzen oder zurücksetzen: ';
|
||||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
$PHPMAILER_LANG['extension_missing'] = 'Fehlende Erweiterung: ';
|
||||||
@@ -23,4 +23,4 @@ $PHPMAILER_LANG['signing'] = 'Error al firmar: ';
|
|||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
|
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
|
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
|
||||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: ';
|
||||||
@@ -23,4 +23,4 @@ $PHPMAILER_LANG['signing'] = 'ხელმოწერის შე
|
|||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'შეცდომა SMTP სერვერთან დაკავშირებისას';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'შეცდომა SMTP სერვერთან დაკავშირებისას';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'SMTP სერვერის შეცდომა: ';
|
$PHPMAILER_LANG['smtp_error'] = 'SMTP სერვერის შეცდომა: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: ';
|
$PHPMAILER_LANG['variable_set'] = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: ';
|
||||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
$PHPMAILER_LANG['extension_missing'] = 'ბიბლიოთეკა არ არსებობს: ';
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Norwegian PHPMailer language file: refer to English translation for definitive list
|
||||||
|
* @package PHPMailer
|
||||||
|
*/
|
||||||
|
|
||||||
|
$PHPMAILER_LANG['authenticate'] = 'SMTP Feil: Kunne ikke autentisere.';
|
||||||
|
$PHPMAILER_LANG['connect_host'] = 'SMTP Feil: Kunne ikke koble til SMTP tjener.';
|
||||||
|
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Feil: Data ble ikke akseptert.';
|
||||||
|
$PHPMAILER_LANG['empty_message'] = 'Meldingsinnholdet er tomt';
|
||||||
|
$PHPMAILER_LANG['encoding'] = 'Ukjent tegnkoding: ';
|
||||||
|
$PHPMAILER_LANG['execute'] = 'Kunne ikke utføre: ';
|
||||||
|
$PHPMAILER_LANG['file_access'] = 'Får ikke tilgang til filen: ';
|
||||||
|
$PHPMAILER_LANG['file_open'] = 'Fil feil: Kunne ikke åpne filen: ';
|
||||||
|
$PHPMAILER_LANG['from_failed'] = 'Følgende avsenderadresse feilet: ';
|
||||||
|
$PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere mailfunksjonen.';
|
||||||
|
$PHPMAILER_LANG['invalid_address'] = 'Meldingen ble ikke sendt, følgende adresse er ugyldig: ';
|
||||||
|
$PHPMAILER_LANG['provide_address'] = 'Du må angi minst en mottakeradresse.';
|
||||||
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer er ikke supportert.';
|
||||||
|
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feil: Følgende mottagere feilet: ';
|
||||||
|
$PHPMAILER_LANG['signing'] = 'Signeringsfeil: ';
|
||||||
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() feilet.';
|
||||||
|
$PHPMAILER_LANG['smtp_error'] = 'SMTP-serverfeil: ';
|
||||||
|
$PHPMAILER_LANG['variable_set'] = 'Kan ikke sette eller resette variabelen: ';
|
||||||
|
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||||
@@ -23,4 +23,4 @@ $PHPMAILER_LANG['signing'] = 'Błąd podpisywania wiadomości: ';
|
|||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zakończone niepowodzeniem.';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zakończone niepowodzeniem.';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'Błąd SMTP: ';
|
$PHPMAILER_LANG['smtp_error'] = 'Błąd SMTP: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Nie można ustawić lub zmodyfikować zmiennej: ';
|
$PHPMAILER_LANG['variable_set'] = 'Nie można ustawić lub zmodyfikować zmiennej: ';
|
||||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
$PHPMAILER_LANG['extension_missing'] = 'Brakujące rozszerzenie: ';
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Brazilian Portuguese PHPMailer language file: refer to English translation for definitive list
|
||||||
|
* @package PHPMailer
|
||||||
|
* @author Paulo Henrique Garcia <paulo@controllerweb.com.br>
|
||||||
|
* @author Lucas Guimarães <lucas@lucasguimaraes.com>
|
||||||
|
* @author Phelipe Alves <phelipealvesdesouza@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
$PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.';
|
||||||
|
$PHPMAILER_LANG['connect_host'] = 'Erro de SMTP: Não foi possível conectar ao servidor SMTP.';
|
||||||
|
$PHPMAILER_LANG['data_not_accepted'] = 'Erro de SMTP: Dados rejeitados.';
|
||||||
|
$PHPMAILER_LANG['empty_message'] = 'Mensagem vazia';
|
||||||
|
$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: ';
|
||||||
|
$PHPMAILER_LANG['execute'] = 'Não foi possível executar: ';
|
||||||
|
$PHPMAILER_LANG['file_access'] = 'Não foi possível acessar o arquivo: ';
|
||||||
|
$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: Não foi possível abrir o arquivo: ';
|
||||||
|
$PHPMAILER_LANG['from_failed'] = 'Os seguintes remententes falharam: ';
|
||||||
|
$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.';
|
||||||
|
$PHPMAILER_LANG['invalid_address'] = 'Endereço de e-mail inválido: ';
|
||||||
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.';
|
||||||
|
$PHPMAILER_LANG['provide_address'] = 'Você deve informar pelo menos um destinatário.';
|
||||||
|
$PHPMAILER_LANG['recipients_failed'] = 'Erro de SMTP: Os seguintes destinatários falharam: ';
|
||||||
|
$PHPMAILER_LANG['signing'] = 'Erro de Assinatura: ';
|
||||||
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.';
|
||||||
|
$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: ';
|
||||||
|
$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: ';
|
||||||
|
$PHPMAILER_LANG['extension_missing'] = 'Extensão ausente: ';
|
||||||
@@ -2,25 +2,25 @@
|
|||||||
/**
|
/**
|
||||||
* Romanian PHPMailer language file: refer to English translation for definitive list
|
* Romanian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
* @author Catalin Constantin <catalin@dazoot.ro>
|
* @author Alex Florea <alecz.fia@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'Eroare SMTP: Nu a functionat autentificarea.';
|
$PHPMAILER_LANG['authenticate'] = 'Eroare SMTP: Autentificarea a eșuat.';
|
||||||
$PHPMAILER_LANG['connect_host'] = 'Eroare SMTP: Nu m-am putut conecta la adresa SMTP.';
|
$PHPMAILER_LANG['connect_host'] = 'Eroare SMTP: Conectarea la serverul SMTP a eșuat.';
|
||||||
$PHPMAILER_LANG['data_not_accepted'] = 'Eroare SMTP: Continutul mailului nu a fost acceptat.';
|
$PHPMAILER_LANG['data_not_accepted'] = 'Eroare SMTP: Datele nu au fost acceptate.';
|
||||||
$PHPMAILER_LANG['empty_message'] = 'Mesajul este gol.';
|
$PHPMAILER_LANG['empty_message'] = 'Mesajul este gol.';
|
||||||
$PHPMAILER_LANG['encoding'] = 'Encodare necunoscuta: ';
|
$PHPMAILER_LANG['encoding'] = 'Encodare necunoscută: ';
|
||||||
$PHPMAILER_LANG['execute'] = 'Nu pot executa: ';
|
$PHPMAILER_LANG['execute'] = 'Nu se poate executa următoarea comandă: ';
|
||||||
$PHPMAILER_LANG['file_access'] = 'Nu pot accesa fisierul: ';
|
$PHPMAILER_LANG['file_access'] = 'Nu se poate accesa următorul fișier: ';
|
||||||
$PHPMAILER_LANG['file_open'] = 'Eroare de fisier: Nu pot deschide fisierul: ';
|
$PHPMAILER_LANG['file_open'] = 'Eroare fișier: Nu se poate deschide următorul fișier: ';
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Urmatoarele adrese From au dat eroare: ';
|
$PHPMAILER_LANG['from_failed'] = 'Următoarele adrese From au dat eroare: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Nu am putut instantia functia mail.';
|
$PHPMAILER_LANG['instantiate'] = 'Funcția mail nu a putut fi inițializată.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este valida: ';
|
$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este validă: ';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Trebuie sa adaugati cel putin un recipient (adresa de mail).';
|
$PHPMAILER_LANG['provide_address'] = 'Trebuie să adăugați cel puțin o adresă de email.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Urmatoarele adrese de mail au dat eroare: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Următoarele adrese de email au eșuat: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'A aparut o problema la semnarea emailului. ';
|
$PHPMAILER_LANG['signing'] = 'A aparut o problemă la semnarea emailului. ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Conectarea la serverul SMTP a esuat.';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'Conectarea la serverul SMTP a eșuat.';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'A aparut o eroare la serverul SMTP. ';
|
$PHPMAILER_LANG['smtp_error'] = 'Eroare server SMTP: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Nu se poate seta/reseta variabila. ';
|
$PHPMAILER_LANG['variable_set'] = 'Nu se poate seta/reseta variabila. ';
|
||||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
$PHPMAILER_LANG['extension_missing'] = 'Lipsește extensia: ';
|
||||||
@@ -18,9 +18,9 @@ $PHPMAILER_LANG['instantiate'] = 'Невозможно запустит
|
|||||||
$PHPMAILER_LANG['provide_address'] = 'Пожалуйста, введите хотя бы один адрес e-mail получателя.';
|
$PHPMAILER_LANG['provide_address'] = 'Пожалуйста, введите хотя бы один адрес e-mail получателя.';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: отправка по следующим адресам получателей не удалась: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: отправка по следующим адресам получателей не удалась: ';
|
||||||
$PHPMAILER_LANG['empty_message'] = 'Пустое тело сообщения';
|
$PHPMAILER_LANG['empty_message'] = 'Пустое сообщение';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'Не отослано, неправильный формат email адреса: ';
|
$PHPMAILER_LANG['invalid_address'] = 'Не отослано, неправильный формат email адреса: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'Ошибка подписывания: ';
|
$PHPMAILER_LANG['signing'] = 'Ошибка подписи: ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: ';
|
$PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Невозможно установить или переустановить переменную: ';
|
$PHPMAILER_LANG['variable_set'] = 'Невозможно установить или переустановить переменную: ';
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Swedish PHPMailer language file: refer to English translation for definitive list
|
||||||
|
* @package PHPMailer
|
||||||
|
* @author Johan Linnér <johan@linner.biz>
|
||||||
|
*/
|
||||||
|
|
||||||
|
$PHPMAILER_LANG['authenticate'] = 'SMTP fel: Kunde inte autentisera.';
|
||||||
|
$PHPMAILER_LANG['connect_host'] = 'SMTP fel: Kunde inte ansluta till SMTP-server.';
|
||||||
|
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fel: Data accepterades inte.';
|
||||||
|
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
|
||||||
|
$PHPMAILER_LANG['encoding'] = 'Okänt encode-format: ';
|
||||||
|
$PHPMAILER_LANG['execute'] = 'Kunde inte köra: ';
|
||||||
|
$PHPMAILER_LANG['file_access'] = 'Ingen åtkomst till fil: ';
|
||||||
|
$PHPMAILER_LANG['file_open'] = 'Fil fel: Kunde inte öppna fil: ';
|
||||||
|
$PHPMAILER_LANG['from_failed'] = 'Följande avsändaradress är felaktig: ';
|
||||||
|
$PHPMAILER_LANG['instantiate'] = 'Kunde inte initiera e-postfunktion.';
|
||||||
|
$PHPMAILER_LANG['invalid_address'] = 'Felaktig adress: ';
|
||||||
|
$PHPMAILER_LANG['provide_address'] = 'Du måste ange minst en mottagares e-postadress.';
|
||||||
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.';
|
||||||
|
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: ';
|
||||||
|
$PHPMAILER_LANG['signing'] = 'Signerings fel: ';
|
||||||
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() misslyckades.';
|
||||||
|
$PHPMAILER_LANG['smtp_error'] = 'SMTP server fel: ';
|
||||||
|
$PHPMAILER_LANG['variable_set'] = 'Kunde inte definiera eller återställa variabel: ';
|
||||||
|
$PHPMAILER_LANG['extension_missing'] = 'Tillägg ej tillgängligt: ';
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<title>네이버 :: Smart Editor 2 ™</title>
|
|
||||||
<script type="text/javascript" src="./js/HuskyEZCreator.js" charset="utf-8"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<form action="sample.php" method="post">
|
|
||||||
<textarea name="ir1" id="ir1" rows="10" cols="100" style="width:766px; height:412px; display:none;"></textarea>
|
|
||||||
<!--textarea name="ir1" id="ir1" rows="10" cols="100" style="width:100%; height:412px; min-width:610px; display:none;"></textarea-->
|
|
||||||
<p>
|
|
||||||
<input type="button" onclick="pasteHTML();" value="본문에 내용 넣기" />
|
|
||||||
<input type="button" onclick="showHTML();" value="본문 내용 가져오기" />
|
|
||||||
<input type="button" onclick="submitContents(this);" value="서버로 내용 전송" />
|
|
||||||
<input type="button" onclick="setDefaultFont();" value="기본 폰트 지정하기 (궁서_24)" />
|
|
||||||
</p>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
var oEditors = [];
|
|
||||||
|
|
||||||
// 추가 글꼴 목록
|
|
||||||
//var aAdditionalFontSet = [["MS UI Gothic", "MS UI Gothic"], ["Comic Sans MS", "Comic Sans MS"],["TEST","TEST"]];
|
|
||||||
|
|
||||||
nhn.husky.EZCreator.createInIFrame({
|
|
||||||
oAppRef: oEditors,
|
|
||||||
elPlaceHolder: "ir1",
|
|
||||||
sSkinURI: "SmartEditor2Skin.html",
|
|
||||||
htParams : {
|
|
||||||
bUseToolbar : true, // 툴바 사용 여부 (true:사용/ false:사용하지 않음)
|
|
||||||
bUseVerticalResizer : true, // 입력창 크기 조절바 사용 여부 (true:사용/ false:사용하지 않음)
|
|
||||||
bUseModeChanger : true, // 모드 탭(Editor | HTML | TEXT) 사용 여부 (true:사용/ false:사용하지 않음)
|
|
||||||
//aAdditionalFontList : aAdditionalFontSet, // 추가 글꼴 목록
|
|
||||||
fOnBeforeUnload : function(){
|
|
||||||
//alert("완료!");
|
|
||||||
}
|
|
||||||
}, //boolean
|
|
||||||
fOnAppLoad : function(){
|
|
||||||
//예제 코드
|
|
||||||
//oEditors.getById["ir1"].exec("PASTE_HTML", ["로딩이 완료된 후에 본문에 삽입되는 text입니다."]);
|
|
||||||
},
|
|
||||||
fCreator: "createSEditor2"
|
|
||||||
});
|
|
||||||
|
|
||||||
function pasteHTML() {
|
|
||||||
var sHTML = "<span style='color:#FF0000;'>이미지도 같은 방식으로 삽입합니다.<\/span>";
|
|
||||||
oEditors.getById["ir1"].exec("PASTE_HTML", [sHTML]);
|
|
||||||
}
|
|
||||||
|
|
||||||
function showHTML() {
|
|
||||||
var sHTML = oEditors.getById["ir1"].getIR();
|
|
||||||
alert(sHTML);
|
|
||||||
}
|
|
||||||
|
|
||||||
function submitContents(elClickedObj) {
|
|
||||||
oEditors.getById["ir1"].exec("UPDATE_CONTENTS_FIELD", []); // 에디터의 내용이 textarea에 적용됩니다.
|
|
||||||
|
|
||||||
// 에디터의 내용에 대한 값 검증은 이곳에서 document.getElementById("ir1").value를 이용해서 처리하면 됩니다.
|
|
||||||
|
|
||||||
try {
|
|
||||||
elClickedObj.form.submit();
|
|
||||||
} catch(e) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setDefaultFont() {
|
|
||||||
var sDefaultFont = '궁서';
|
|
||||||
var nFontSize = 24;
|
|
||||||
oEditors.getById["ir1"].setDefaultFont(sDefaultFont, nFontSize);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -9,20 +9,20 @@
|
|||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body { margin: 10px; }
|
body { margin: 10px; }
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript" src="./js/jindo.min.js" charset="utf-8"></script>
|
<script type="text/javascript" src="./js/lib/jindo2.all.js" charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="./js/jindo_component.js" charset="utf-8"></script>
|
<script type="text/javascript" src="./js/lib/jindo_component.js" charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="./js/SE2B_Configuration_Service.js" charset="utf-8"></script> <!-- 설정 파일 -->
|
<script type="text/javascript" src="./js/SE2M_Configuration.js?v3" charset="utf-8"></script> <!-- 설정 파일 -->
|
||||||
<script type="text/javascript" src="./js/SE2B_Configuration_General.js" charset="utf-8"></script> <!-- 설정 파일 -->
|
<script type="text/javascript" src="./js/SE2BasicCreator.js" charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="./js/SE2BasicCreator.js?v3" charset="utf-8"></script>
|
<script type="text/javascript" src="./js/smarteditor2.min.js" charset="utf-8"></script>
|
||||||
|
|
||||||
<script src='js/smarteditor2.min.js?v2' charset='utf-8'></script>
|
<!-- 사진첨부샘플 -->
|
||||||
<script src='photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js' charset='utf-8'></script>
|
<script type="text/javascript" src="photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js?v3" charset="utf-8"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<span id="rev"></span>
|
<span id="rev" style="display:none">Version: 2.8.2.12056 </span>
|
||||||
|
|
||||||
<!-- SE2 Markup Start -->
|
<!-- SE2 Markup Start -->
|
||||||
<div id="smart_editor2">
|
<div id="smart_editor2">
|
||||||
@@ -37,24 +37,12 @@
|
|||||||
<div class="se2_in_layer">
|
<div class="se2_in_layer">
|
||||||
<ul class="se2_l_font_fam">
|
<ul class="se2_l_font_fam">
|
||||||
<li style="display:none"><button type="button"><span>@DisplayName@<span>(</span><em style="font-family:FontFamily;">@SampleText@</em><span>)</span></span></button></li>
|
<li style="display:none"><button type="button"><span>@DisplayName@<span>(</span><em style="font-family:FontFamily;">@SampleText@</em><span>)</span></span></button></li>
|
||||||
<!--
|
|
||||||
<li><button type="button"><span>돋움<span>(</span><em style="font-family:'돋움',Dotum,Sans-serif;">가나다라</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>돋움체<span>(</span><em style="font-family:'돋움체',DotumChe,Sans-serif;">가나다라</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>굴림<span>(</span><em style="font-family:'굴림',Gulim,Sans-serif;">가나다라</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>굴림체<span>(</span><em style="font-family:'굴림체',GulimChe,Sans-serif;">가나다라</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>바탕<span>(</span><em style="font-family:'바탕',Batang,serif;">가나다라</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>바탕체<span>(</span><em style="font-family:'바탕체',BatangChe,serif;">가나다라</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>궁서<span>(</span><em style="font-family:'궁서',Gungsuh,serif;">가나다라</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>Arial<span>(</span><em style="font-family:arial,Sans-serif;">abcd</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>Tahoma<span>(</span><em style="font-family:tahoma,Sans-serif;">abcd</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>Times New Roman<span>(</span><em style="font-family:'Times New Roman',Times,serif;">abcd</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>Verdana<span>(</span><em style="font-family:verdana,Sans-serif;">abcd</em><span>)</span></span></button></li>
|
|
||||||
<li><button type="button"><span>Courier New<span>(</span><em style="font-family:Courier New,Sans-serif;">abcd</em><span>)</span></span></button></li>
|
|
||||||
-->
|
|
||||||
<li class="se2_division husky_seditor_font_separator"></li>
|
<li class="se2_division husky_seditor_font_separator"></li>
|
||||||
<li class="husky_seditor_font_nanumgothic"><button type="button"><span>나눔고딕<span>(</span><em style="font-family:'나눔고딕',NanumGothic,Sans-serif;">가나다라</em><span>)</span></span></button></li>
|
<li><button type="button"><span>나눔고딕<span>(</span><em style="font-family:'나눔고딕',NanumGothic;">가나다라</em><span>)</span></span></button></li>
|
||||||
<li class="husky_seditor_font_nanummyeongjo"><button type="button"><span>나눔명조<span>(</span><em style="font-family:'나눔명조',NanumMyeongjo,serif;">가나다라</em><span>)</span></span></button></li>
|
<li><button type="button"><span>나눔명조<span>(</span><em style="font-family:'나눔명조',NanumMyeongjo;">가나다라</em><span>)</span></span></button></li>
|
||||||
<li class="husky_seditor_font_nanumgothiccoding"><button type="button"><span>나눔고딕코딩<span>(</span><em style="font-family:'나눔고딕코딩',NanumGothicCoding,Sans-serif;">가나다라</em><span>)</span></span></button></li>
|
<li><button type="button"><span>나눔고딕코딩<span>(</span><em style="font-family:'나눔고딕코딩',NanumGothicCoding;">가나다라</em><span>)</span></span></button></li>
|
||||||
|
<li><button type="button"><span>나눔바른고딕<span>(</span><em style="font-family:'나눔바른고딕',NanumBarunGothic;">가나다라</em><span>)</span></span></button></li>
|
||||||
|
<li><button type="button"><span>나눔바른펜<span>(</span><em style="font-family:'나눔바른펜',NanumBarunPen;">가나다라</em><span>)</span></span></button></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -66,23 +54,23 @@
|
|||||||
<div class="se2_layer husky_se_fontSize_layer">
|
<div class="se2_layer husky_se_fontSize_layer">
|
||||||
<div class="se2_in_layer">
|
<div class="se2_in_layer">
|
||||||
<ul class="se2_l_font_size">
|
<ul class="se2_l_font_size">
|
||||||
<li><button type="button" style="height:19px;"><span style="margin-top:4px; margin-bottom:3px; margin-left:5px; font-size:7pt;">가나다라마바사<span style=" font-size:7pt;">(7pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-top:4px; margin-bottom:3px; margin-left:5px; font-size:7pt;">가나다라마바사<span style=" font-size:7pt;">(7pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:20px;"><span style="margin-bottom:2px; font-size:8pt;">가나다라마바사<span style="font-size:8pt;">(8pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-bottom:2px; font-size:8pt;">가나다라마바사<span style="font-size:8pt;">(8pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:20px;"><span style="margin-bottom:1px; font-size:9pt;">가나다라마바사<span style="font-size:9pt;">(9pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-bottom:1px; font-size:9pt;">가나다라마바사<span style="font-size:9pt;">(9pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:21px;"><span style="margin-bottom:1px; font-size:10pt;">가나다라마바사<span style="font-size:10pt;">(10pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-bottom:1px; font-size:10pt;">가나다라마바사<span style="font-size:10pt;">(10pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:23px;"><span style="margin-bottom:2px; font-size:11pt;">가나다라마바사<span style="font-size:11pt;">(11pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-bottom:2px; font-size:11pt;">가나다라마바사<span style="font-size:11pt;">(11pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:25px;"><span style="margin-bottom:1px; font-size:12pt;">가나다라마바사<span style="font-size:12pt;">(12pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-bottom:1px; font-size:12pt;">가나다라마바사<span style="font-size:12pt;">(12pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:27px;"><span style="margin-bottom:2px; font-size:14pt;">가나다라마바사<span style="margin-left:6px;font-size:14pt;">(14pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-bottom:2px; font-size:14pt;">가나다라마바사<span style="margin-left:6px;font-size:14pt;">(14pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:33px;"><span style="margin-bottom:1px; font-size:18pt;">가나다라마바사<span style="margin-left:8px;font-size:18pt;">(18pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-bottom:1px; font-size:18pt;">가나다라마바사<span style="margin-left:8px;font-size:18pt;">(18pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:39px;"><span style="margin-left:3px; font-size:24pt;">가나다라마<span style="margin-left:11px;font-size:24pt;">(24pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-left:3px; font-size:24pt;">가나다라마<span style="margin-left:11px;font-size:24pt;">(24pt)</span></span></button></li>
|
||||||
<li><button type="button" style="height:53px;"><span style="margin-top:-1px; margin-left:3px; font-size:36pt;">가나다<span style="font-size:36pt;">(36pt)</span></span></button></li>
|
<li><button type="button"><span style="margin-top:-1px; margin-left:3px; font-size:36pt;">가나다<span style="font-size:36pt;">(36pt)</span></span></button></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- //폰트 사이즈 레이어 -->
|
<!-- //폰트 사이즈 레이어 -->
|
||||||
</li>
|
</li>
|
||||||
</ul><ul>
|
</ul><ul>
|
||||||
<li class="husky_seditor_ui_bold"><button type="button" title="굵게[Ctrl+B]" class="se2_bold"><span class="_buttonRound">굵게[Ctrl+B]</span></button></li>
|
<li class="husky_seditor_ui_bold first_child"><button type="button" title="굵게[Ctrl+B]" class="se2_bold"><span class="_buttonRound tool_bg">굵게[Ctrl+B]</span></button></li>
|
||||||
|
|
||||||
<li class="husky_seditor_ui_underline"><button type="button" title="밑줄[Ctrl+U]" class="se2_underline"><span class="_buttonRound">밑줄[Ctrl+U]</span></button></li>
|
<li class="husky_seditor_ui_underline"><button type="button" title="밑줄[Ctrl+U]" class="se2_underline"><span class="_buttonRound">밑줄[Ctrl+U]</span></button></li>
|
||||||
|
|
||||||
@@ -215,9 +203,9 @@
|
|||||||
|
|
||||||
<li class="husky_seditor_ui_superscript"><button type="button" title="윗첨자" class="se2_sup"><span class="_buttonRound">윗첨자</span></button></li>
|
<li class="husky_seditor_ui_superscript"><button type="button" title="윗첨자" class="se2_sup"><span class="_buttonRound">윗첨자</span></button></li>
|
||||||
|
|
||||||
<li class="husky_seditor_ui_subscript"><button type="button" title="아래첨자" class="se2_sub"><span class="_buttonRound">아래첨자</span></button></li>
|
<li class="husky_seditor_ui_subscript last_child"><button type="button" title="아래첨자" class="se2_sub"><span class="_buttonRound tool_bg">아래첨자</span></button></li>
|
||||||
</ul><ul>
|
</ul><ul>
|
||||||
<li class="husky_seditor_ui_justifyleft"><button type="button" title="왼쪽정렬" class="se2_left"><span class="_buttonRound">왼쪽정렬</span></button></li>
|
<li class="husky_seditor_ui_justifyleft first_child"><button type="button" title="왼쪽정렬" class="se2_left"><span class="_buttonRound tool_bg">왼쪽정렬</span></button></li>
|
||||||
|
|
||||||
<li class="husky_seditor_ui_justifycenter"><button type="button" title="가운데정렬" class="se2_center"><span class="_buttonRound">가운데정렬</span></button></li>
|
<li class="husky_seditor_ui_justifycenter"><button type="button" title="가운데정렬" class="se2_center"><span class="_buttonRound">가운데정렬</span></button></li>
|
||||||
|
|
||||||
@@ -225,7 +213,7 @@
|
|||||||
|
|
||||||
<li class="husky_seditor_ui_justifyfull"><button type="button" title="양쪽정렬" class="se2_justify"><span class="_buttonRound">양쪽정렬</span></button></li>
|
<li class="husky_seditor_ui_justifyfull"><button type="button" title="양쪽정렬" class="se2_justify"><span class="_buttonRound">양쪽정렬</span></button></li>
|
||||||
|
|
||||||
<li class="husky_seditor_ui_lineHeight"><button type="button" title="줄간격" class="se2_lineheight" ><span class="_buttonRound">줄간격</span></button>
|
<li class="husky_seditor_ui_lineHeight last_child"><button type="button" title="줄간격" class="se2_lineheight" ><span class="_buttonRound tool_bg">줄간격</span></button>
|
||||||
<!-- 줄간격 레이어 -->
|
<!-- 줄간격 레이어 -->
|
||||||
<div class="se2_layer husky_se2m_lineHeight_layer">
|
<div class="se2_layer husky_se2m_lineHeight_layer">
|
||||||
<div class="se2_in_layer">
|
<div class="se2_in_layer">
|
||||||
@@ -265,7 +253,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul><ul>
|
</ul><ul>
|
||||||
<li class="husky_seditor_ui_quote"><button type="button" title="인용구" class="se2_blockquote"><span class="_buttonRound">인용구</span></button>
|
<li class="husky_seditor_ui_quote single_child"><button type="button" title="인용구" class="se2_blockquote"><span class="_buttonRound tool_bg">인용구</span></button>
|
||||||
<!-- 인용구 -->
|
<!-- 인용구 -->
|
||||||
<div class="se2_layer husky_seditor_blockquote_layer" style="margin-left:-407px; display:none;">
|
<div class="se2_layer husky_seditor_blockquote_layer" style="margin-left:-407px; display:none;">
|
||||||
<div class="se2_in_layer">
|
<div class="se2_in_layer">
|
||||||
@@ -289,7 +277,7 @@
|
|||||||
<!-- //인용구 -->
|
<!-- //인용구 -->
|
||||||
</li>
|
</li>
|
||||||
</ul><ul>
|
</ul><ul>
|
||||||
<li class="husky_seditor_ui_hyperlink"><button type="button" title="링크" class="se2_url"><span class="_buttonRound">링크</span></button>
|
<li class="husky_seditor_ui_hyperlink first_child"><button type="button" title="링크" class="se2_url"><span class="_buttonRound tool_bg">링크</span></button>
|
||||||
<!-- 링크 -->
|
<!-- 링크 -->
|
||||||
<div class="se2_layer" style="margin-left:-285px">
|
<div class="se2_layer" style="margin-left:-285px">
|
||||||
<div class="se2_in_layer">
|
<div class="se2_in_layer">
|
||||||
@@ -512,7 +500,7 @@
|
|||||||
<!--//@lazyload_html-->
|
<!--//@lazyload_html-->
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="husky_seditor_ui_findAndReplace"><button type="button" title="찾기/바꾸기" class="se2_find"><span class="_buttonRound">찾기/바꾸기</span></button>
|
<li class="husky_seditor_ui_findAndReplace last_child"><button type="button" title="찾기/바꾸기" class="se2_find"><span class="_buttonRound tool_bg">찾기/바꾸기</span></button>
|
||||||
<!--@lazyload_html find_and_replace-->
|
<!--@lazyload_html find_and_replace-->
|
||||||
<!-- 찾기/바꾸기 -->
|
<!-- 찾기/바꾸기 -->
|
||||||
<div class="se2_layer husky_se2m_findAndReplace_layer" style="margin-left:-238px;">
|
<div class="se2_layer husky_se2m_findAndReplace_layer" style="margin-left:-238px;">
|
||||||
@@ -526,7 +514,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="se2_in_bx_find husky_se2m_find_ui" style="display:block">
|
<div class="se2_in_bx_find husky_se2m_find_ui" style="display:block">
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="find_word">찾을단어</label></dt><dd><input type="text" id="find_word" value="스마트에디터" class="input_ty1"></dd>
|
<dt><label for="find_word">찾을 단어</label></dt><dd><input type="text" id="find_word" value="스마트에디터" class="input_ty1"></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<p class="se2_find_btns">
|
<p class="se2_find_btns">
|
||||||
<button type="button" class="se2_find_next husky_se2m_find_next"><span>다음 찾기</span></button><button type="button" class="se2_cancel husky_se2m_cancel"><span>취소</span></button>
|
<button type="button" class="se2_find_next husky_se2m_find_next"><span>다음 찾기</span></button><button type="button" class="se2_cancel husky_se2m_cancel"><span>취소</span></button>
|
||||||
@@ -534,11 +522,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="se2_in_bx_revise husky_se2m_replace_ui" style="display:none">
|
<div class="se2_in_bx_revise husky_se2m_replace_ui" style="display:none">
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label for="find_word2">찾을단어</label></dt><dd><input type="text" id="find_word2" value="스마트에디터" class="input_ty1"></dd>
|
<dt><label for="find_word2">찾을 단어</label></dt><dd><input type="text" id="find_word2" value="스마트에디터" class="input_ty1"></dd>
|
||||||
<dt><label for="revise_word">바꿀단어</label></dt><dd><input type="text" id="revise_word" value="스마트에디터" class="input_ty1"></dd>
|
<dt><label for="revise_word">바꿀 단어</label></dt><dd><input type="text" id="revise_word" value="스마트에디터" class="input_ty1"></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<p class="se2_find_btns">
|
<p class="se2_find_btns">
|
||||||
<button type="button" class="se2_find_next2 husky_se2m_replace_find_next"><span>다음찾기</span></button><button type="button" class="se2_revise1 husky_se2m_replace"><span>바꾸기</span></button><button type="button" class="se2_revise2 husky_se2m_replace_all"><span>모두 바꾸기</span></button><button type="button" class="se2_cancel husky_se2m_cancel"><span>취소</span></button>
|
<button type="button" class="se2_find_next2 husky_se2m_replace_find_next"><span>다음 찾기</span></button><button type="button" class="se2_revise1 husky_se2m_replace"><span>바꾸기</span></button><button type="button" class="se2_revise2 husky_se2m_replace_all"><span>모두 바꾸기</span></button><button type="button" class="se2_cancel husky_se2m_cancel"><span>취소</span></button>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" title="닫기" class="se2_close husky_se2m_cancel"><span>닫기</span></button>
|
<button type="button" title="닫기" class="se2_close husky_se2m_cancel"><span>닫기</span></button>
|
||||||
|
|||||||
@@ -0,0 +1,841 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||||
|
<title>네이버 :: Smart Editor 2 ™</title>
|
||||||
|
<link href="css/smart_editor2.css" rel="stylesheet" type="text/css">
|
||||||
|
<style type="text/css">
|
||||||
|
body { margin: 10px; }
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript" src="./js/lib/jindo2.all.js" charset="utf-8"></script>
|
||||||
|
<script type="text/javascript" src="./js/lib/jindo_component.js" charset="utf-8"></script>
|
||||||
|
<script type="text/javascript" src="./js/SE2M_Configuration.js" charset="utf-8"></script> <!-- 설정 파일 -->
|
||||||
|
<script type="text/javascript" src="./js/SE2BasicCreator.js" charset="utf-8"></script>
|
||||||
|
<script type="text/javascript" src="./js/smarteditor2.min.js" charset="utf-8"></script>
|
||||||
|
|
||||||
|
<!-- 사진첨부샘플 -->
|
||||||
|
<script type="text/javascript" src="./sample/js/plugin/hp_SE2M_AttachQuickPhoto.js" charset="utf-8"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span id="rev">Version: 2.8.2.12056 </span>
|
||||||
|
|
||||||
|
<!-- SE2 Markup Start -->
|
||||||
|
<div id="smart_editor2">
|
||||||
|
<div id="smart_editor2_content"><a href="#se2_iframe" class="blind">글쓰기영역으로 바로가기</a>
|
||||||
|
<div class="se2_tool" id="se2_tool">
|
||||||
|
|
||||||
|
<div class="se2_text_tool husky_seditor_text_tool">
|
||||||
|
<ul class="se2_font_type">
|
||||||
|
<li class="husky_seditor_ui_fontName"><button type="button" class="se2_font_family" title="글꼴"><span class="husky_se2m_current_fontName">글꼴</span></button>
|
||||||
|
<!-- 글꼴 레이어 -->
|
||||||
|
<div class="se2_layer husky_se_fontName_layer">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<ul class="se2_l_font_fam">
|
||||||
|
<li style="display:none"><button type="button"><span>@DisplayName@<span>(</span><em style="font-family:FontFamily;">@SampleText@</em><span>)</span></span></button></li>
|
||||||
|
<li class="se2_division husky_seditor_font_separator"></li>
|
||||||
|
<li><button type="button"><span>나눔고딕<span>(</span><em style="font-family:'나눔고딕',NanumGothic;">가나다라</em><span>)</span></span></button></li>
|
||||||
|
<li><button type="button"><span>나눔명조<span>(</span><em style="font-family:'나눔명조',NanumMyeongjo;">가나다라</em><span>)</span></span></button></li>
|
||||||
|
<li><button type="button"><span>나눔고딕코딩<span>(</span><em style="font-family:'나눔고딕코딩',NanumGothicCoding;">가나다라</em><span>)</span></span></button></li>
|
||||||
|
<li><button type="button"><span>나눔바른고딕<span>(</span><em style="font-family:'나눔바른고딕',NanumBarunGothic;">가나다라</em><span>)</span></span></button></li>
|
||||||
|
<li><button type="button"><span>나눔바른펜<span>(</span><em style="font-family:'나눔바른펜',NanumBarunPen;">가나다라</em><span>)</span></span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //글꼴 레이어 -->
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_fontSize"><button type="button" class="se2_font_size" title="글자크기"><span class="husky_se2m_current_fontSize">크기</span></button>
|
||||||
|
<!-- 폰트 사이즈 레이어 -->
|
||||||
|
<div class="se2_layer husky_se_fontSize_layer">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<ul class="se2_l_font_size">
|
||||||
|
<li><button type="button"><span style="margin-top:4px; margin-bottom:3px; margin-left:5px; font-size:7pt;">가나다라마바사<span style=" font-size:7pt;">(7pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-bottom:2px; font-size:8pt;">가나다라마바사<span style="font-size:8pt;">(8pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-bottom:1px; font-size:9pt;">가나다라마바사<span style="font-size:9pt;">(9pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-bottom:1px; font-size:10pt;">가나다라마바사<span style="font-size:10pt;">(10pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-bottom:2px; font-size:11pt;">가나다라마바사<span style="font-size:11pt;">(11pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-bottom:1px; font-size:12pt;">가나다라마바사<span style="font-size:12pt;">(12pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-bottom:2px; font-size:14pt;">가나다라마바사<span style="margin-left:6px;font-size:14pt;">(14pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-bottom:1px; font-size:18pt;">가나다라마바사<span style="margin-left:8px;font-size:18pt;">(18pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-left:3px; font-size:24pt;">가나다라마<span style="margin-left:11px;font-size:24pt;">(24pt)</span></span></button></li>
|
||||||
|
<li><button type="button"><span style="margin-top:-1px; margin-left:3px; font-size:36pt;">가나다<span style="font-size:36pt;">(36pt)</span></span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //폰트 사이즈 레이어 -->
|
||||||
|
</li>
|
||||||
|
</ul><ul>
|
||||||
|
<li class="husky_seditor_ui_bold first_child"><button type="button" title="굵게[Ctrl+B]" class="se2_bold"><span class="_buttonRound tool_bg">굵게[Ctrl+B]</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_underline"><button type="button" title="밑줄[Ctrl+U]" class="se2_underline"><span class="_buttonRound">밑줄[Ctrl+U]</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_italic"><button type="button" title="기울임꼴[Ctrl+I]" class="se2_italic"><span class="_buttonRound">기울임꼴[Ctrl+I]</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_lineThrough"><button type="button" title="취소선[Ctrl+D]" class="se2_tdel"><span class="_buttonRound">취소선[Ctrl+D]</span></button></li>
|
||||||
|
|
||||||
|
<li class="se2_pair husky_seditor_ui_fontColor"><span class="selected_color husky_se2m_fontColor_lastUsed" style="background-color:#4477f9"></span><span class="husky_seditor_ui_fontColorA"><button type="button" title="글자색" class="se2_fcolor"><span>글자색</span></button></span><span class="husky_seditor_ui_fontColorB"><button type="button" title="더보기" class="se2_fcolor_more"><span class="_buttonRound">더보기</span></button></span>
|
||||||
|
<!-- 글자색 -->
|
||||||
|
<div class="se2_layer husky_se2m_fontcolor_layer" style="display:none">
|
||||||
|
<div class="se2_in_layer husky_se2m_fontcolor_paletteHolder">
|
||||||
|
<div class="se2_palette husky_se2m_color_palette">
|
||||||
|
<ul class="se2_pick_color">
|
||||||
|
<li><button type="button" title="#ff0000" style="background:#ff0000"><span><span>#ff0000</span></span></button></li>
|
||||||
|
<li><button type="button" title="#ff6c00" style="background:#ff6c00"><span><span>#ff6c00</span></span></button></li>
|
||||||
|
<li><button type="button" title="#ffaa00" style="background:#ffaa00"><span><span>#ffaa00</span></span></button></li>
|
||||||
|
<li><button type="button" title="#ffef00" style="background:#ffef00"><span><span>#ffef00</span></span></button></li>
|
||||||
|
<li><button type="button" title="#a6cf00" style="background:#a6cf00"><span><span>#a6cf00</span></span></button></li>
|
||||||
|
<li><button type="button" title="#009e25" style="background:#009e25"><span><span>#009e25</span></span></button></li>
|
||||||
|
<li><button type="button" title="#00b0a2" style="background:#00b0a2"><span><span>#00b0a2</span></span></button></li>
|
||||||
|
<li><button type="button" title="#0075c8" style="background:#0075c8"><span><span>#0075c8</span></span></button></li>
|
||||||
|
<li><button type="button" title="#3a32c3" style="background:#3a32c3"><span><span>#3a32c3</span></span></button></li>
|
||||||
|
<li><button type="button" title="#7820b9" style="background:#7820b9"><span><span>#7820b9</span></span></button></li>
|
||||||
|
<li><button type="button" title="#ef007c" style="background:#ef007c"><span><span>#ef007c</span></span></button></li>
|
||||||
|
<li><button type="button" title="#000000" style="background:#000000"><span><span>#000000</span></span></button></li>
|
||||||
|
<li><button type="button" title="#252525" style="background:#252525"><span><span>#252525</span></span></button></li>
|
||||||
|
<li><button type="button" title="#464646" style="background:#464646"><span><span>#464646</span></span></button></li>
|
||||||
|
<li><button type="button" title="#636363" style="background:#636363"><span><span>#636363</span></span></button></li>
|
||||||
|
<li><button type="button" title="#7d7d7d" style="background:#7d7d7d"><span><span>#7d7d7d</span></span></button></li>
|
||||||
|
<li><button type="button" title="#9a9a9a" style="background:#9a9a9a"><span><span>#9a9a9a</span></span></button></li>
|
||||||
|
<li><button type="button" title="#ffe8e8" style="background:#ffe8e8"><span><span>#9a9a9a</span></span></button></li>
|
||||||
|
<li><button type="button" title="#f7e2d2" style="background:#f7e2d2"><span><span>#f7e2d2</span></span></button></li>
|
||||||
|
<li><button type="button" title="#f5eddc" style="background:#f5eddc"><span><span>#f5eddc</span></span></button></li>
|
||||||
|
<li><button type="button" title="#f5f4e0" style="background:#f5f4e0"><span><span>#f5f4e0</span></span></button></li>
|
||||||
|
<li><button type="button" title="#edf2c2" style="background:#edf2c2"><span><span>#edf2c2</span></span></button></li>
|
||||||
|
<li><button type="button" title="#def7e5" style="background:#def7e5"><span><span>#def7e5</span></span></button></li>
|
||||||
|
<li><button type="button" title="#d9eeec" style="background:#d9eeec"><span><span>#d9eeec</span></span></button></li>
|
||||||
|
<li><button type="button" title="#c9e0f0" style="background:#c9e0f0"><span><span>#c9e0f0</span></span></button></li>
|
||||||
|
<li><button type="button" title="#d6d4eb" style="background:#d6d4eb"><span><span>#d6d4eb</span></span></button></li>
|
||||||
|
<li><button type="button" title="#e7dbed" style="background:#e7dbed"><span><span>#e7dbed</span></span></button></li>
|
||||||
|
<li><button type="button" title="#f1e2ea" style="background:#f1e2ea"><span><span>#f1e2ea</span></span></button></li>
|
||||||
|
<li><button type="button" title="#acacac" style="background:#acacac"><span><span>#acacac</span></span></button></li>
|
||||||
|
<li><button type="button" title="#c2c2c2" style="background:#c2c2c2"><span><span>#c2c2c2</span></span></button></li>
|
||||||
|
<li><button type="button" title="#cccccc" style="background:#cccccc"><span><span>#cccccc</span></span></button></li>
|
||||||
|
<li><button type="button" title="#e1e1e1" style="background:#e1e1e1"><span><span>#e1e1e1</span></span></button></li>
|
||||||
|
<li><button type="button" title="#ebebeb" style="background:#ebebeb"><span><span>#ebebeb</span></span></button></li>
|
||||||
|
<li><button type="button" title="#ffffff" style="background:#ffffff"><span><span>#ffffff</span></span></button></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="se2_pick_color" style="width:156px;">
|
||||||
|
<li><button type="button" title="#e97d81" style="background:#e97d81"><span><span>#e97d81</span></span></button></li>
|
||||||
|
<li><button type="button" title="#e19b73" style="background:#e19b73"><span><span>#e19b73</span></span></button></li>
|
||||||
|
<li><button type="button" title="#d1b274" style="background:#d1b274"><span><span>#d1b274</span></span></button></li>
|
||||||
|
<li><button type="button" title="#cfcca2" style="background:#cfcca2"><span><span>#cfcca2</span></span></button></li>
|
||||||
|
<li><button type="button" title="#cfcca2" style="background:#cfcca2"><span><span>#cfcca2</span></span></button></li>
|
||||||
|
<li><button type="button" title="#61b977" style="background:#61b977"><span><span>#61b977</span></span></button></li>
|
||||||
|
<li><button type="button" title="#53aea8" style="background:#53aea8"><span><span>#53aea8</span></span></button></li>
|
||||||
|
<li><button type="button" title="#518fbb" style="background:#518fbb"><span><span>#518fbb</span></span></button></li>
|
||||||
|
<li><button type="button" title="#6a65bb" style="background:#6a65bb"><span><span>#6a65bb</span></span></button></li>
|
||||||
|
<li><button type="button" title="#9a54ce" style="background:#9a54ce"><span><span>#9a54ce</span></span></button></li>
|
||||||
|
<li><button type="button" title="#e573ae" style="background:#e573ae"><span><span>#e573ae</span></span></button></li>
|
||||||
|
<li><button type="button" title="#5a504b" style="background:#5a504b"><span><span>#5a504b</span></span></button></li>
|
||||||
|
<li><button type="button" title="#767b86" style="background:#767b86"><span><span>#767b86</span></span></button></li>
|
||||||
|
<li><button type="button" title="#951015" style="background:#951015"><span><span>#951015</span></span></button></li>
|
||||||
|
<li><button type="button" title="#6e391a" style="background:#6e391a"><span><span>#6e391a</span></span></button></li>
|
||||||
|
<li><button type="button" title="#785c25" style="background:#785c25"><span><span>#785c25</span></span></button></li>
|
||||||
|
<li><button type="button" title="#5f5b25" style="background:#5f5b25"><span><span>#5f5b25</span></span></button></li>
|
||||||
|
<li><button type="button" title="#4c511f" style="background:#4c511f"><span><span>#4c511f</span></span></button></li>
|
||||||
|
<li><button type="button" title="#1c4827" style="background:#1c4827"><span><span>#1c4827</span></span></button></li>
|
||||||
|
<li><button type="button" title="#0d514c" style="background:#0d514c"><span><span>#0d514c</span></span></button></li>
|
||||||
|
<li><button type="button" title="#1b496a" style="background:#1b496a"><span><span>#1b496a</span></span></button></li>
|
||||||
|
<li><button type="button" title="#2b285f" style="background:#2b285f"><span><span>#2b285f</span></span></button></li>
|
||||||
|
<li><button type="button" title="#45245b" style="background:#45245b"><span><span>#45245b</span></span></button></li>
|
||||||
|
<li><button type="button" title="#721947" style="background:#721947"><span><span>#721947</span></span></button></li>
|
||||||
|
<li><button type="button" title="#352e2c" style="background:#352e2c"><span><span>#352e2c</span></span></button></li>
|
||||||
|
<li><button type="button" title="#3c3f45" style="background:#3c3f45"><span><span>#3c3f45</span></span></button></li>
|
||||||
|
</ul>
|
||||||
|
<button type="button" title="더보기" class="se2_view_more husky_se2m_color_palette_more_btn"><span>더보기</span></button>
|
||||||
|
<div class="husky_se2m_color_palette_recent" style="display:none">
|
||||||
|
<h4>최근 사용한 색</h4>
|
||||||
|
<ul class="se2_pick_color">
|
||||||
|
<li></li>
|
||||||
|
<!-- 최근 사용한 색 템플릿 -->
|
||||||
|
<!-- <li><button type="button" title="#e97d81" style="background:#e97d81"><span><span>#e97d81</span></span></button></li> -->
|
||||||
|
<!-- //최근 사용한 색 템플릿 -->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="se2_palette2 husky_se2m_color_palette_colorpicker">
|
||||||
|
<!--form action="http://test.emoticon.naver.com/colortable/TextAdd.nhn" method="post"-->
|
||||||
|
<div class="se2_color_set">
|
||||||
|
<span class="se2_selected_color"><span class="husky_se2m_cp_preview" style="background:#e97d81"></span></span><input type="text" name="" class="input_ty1 husky_se2m_cp_colorcode" value="#e97d81"><button type="button" class="se2_btn_insert husky_se2m_color_palette_ok_btn" title="입력"><span>입력</span></button></div>
|
||||||
|
<!--input type="hidden" name="callback" value="http://test.emoticon.naver.com/colortable/result.jsp" />
|
||||||
|
<input type="hidden" name="callback_func" value="1" />
|
||||||
|
<input type="hidden" name="text_key" value="" />
|
||||||
|
<input type="hidden" name="text_data" value="" />
|
||||||
|
</form-->
|
||||||
|
<div class="se2_gradation1 husky_se2m_cp_colpanel"></div>
|
||||||
|
<div class="se2_gradation2 husky_se2m_cp_huepanel"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //글자색 -->
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="se2_pair husky_seditor_ui_BGColor"><span class="selected_color husky_se2m_BGColor_lastUsed" style="background-color:#4477f9"></span><span class="husky_seditor_ui_BGColorA"><button type="button" title="배경색" class="se2_bgcolor"><span>배경색</span></button></span><span class="husky_seditor_ui_BGColorB"><button type="button" title="더보기" class="se2_bgcolor_more"><span class="_buttonRound">더보기</span></button></span>
|
||||||
|
<!-- 배경색 -->
|
||||||
|
<div class="se2_layer se2_layer husky_se2m_BGColor_layer" style="display:none">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<div class="se2_palette_bgcolor">
|
||||||
|
<ul class="se2_background husky_se2m_bgcolor_list">
|
||||||
|
<li><button type="button" title="배경색#ff0000 글자색#ffffff" style="background:#ff0000; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#6d30cf 글자색#ffffff" style="background:#6d30cf; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#000000 글자색#ffffff" style="background:#000000; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#ff6600 글자색#ffffff" style="background:#ff6600; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#3333cc 글자색#ffffff" style="background:#3333cc; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#333333 글자색#ffff00" style="background:#333333; color:#ffff00"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#ffa700 글자색#ffffff" style="background:#ffa700; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#009999 글자색#ffffff" style="background:#009999; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#8e8e8e 글자색#ffffff" style="background:#8e8e8e; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#cc9900 글자색#ffffff" style="background:#cc9900; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#77b02b 글자색#ffffff" style="background:#77b02b; color:#ffffff"><span><span>가나다</span></span></button></li>
|
||||||
|
<li><button type="button" title="배경색#ffffff 글자색#000000" style="background:#ffffff; color:#000000"><span><span>가나다</span></span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="husky_se2m_BGColor_paletteHolder"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //배경색 -->
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_superscript"><button type="button" title="윗첨자" class="se2_sup"><span class="_buttonRound">윗첨자</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_subscript last_child"><button type="button" title="아래첨자" class="se2_sub"><span class="_buttonRound tool_bg">아래첨자</span></button></li>
|
||||||
|
</ul><ul>
|
||||||
|
<li class="husky_seditor_ui_justifyleft first_child"><button type="button" title="왼쪽정렬" class="se2_left"><span class="_buttonRound tool_bg">왼쪽정렬</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_justifycenter"><button type="button" title="가운데정렬" class="se2_center"><span class="_buttonRound">가운데정렬</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_justifyright"><button type="button" title="오른쪽정렬" class="se2_right"><span class="_buttonRound">오른쪽정렬</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_justifyfull"><button type="button" title="양쪽정렬" class="se2_justify"><span class="_buttonRound">양쪽정렬</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_orderedlist"><button type="button" title="번호매기기" class="se2_ol"><span class="_buttonRound">번호매기기</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_unorderedlist"><button type="button" title="글머리기호" class="se2_ul"><span class="_buttonRound">글머리기호</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_outdent"><button type="button" title="내어쓰기[Shift+Tab]" class="se2_outdent"><span class="_buttonRound">내어쓰기[Shift+Tab]</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_indent"><button type="button" title="들여쓰기[Tab]" class="se2_indent"><span class="_buttonRound">들여쓰기[Tab]</span></button></li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_lineHeight last_child"><button type="button" title="줄간격" class="se2_lineheight" ><span class="_buttonRound tool_bg">줄간격</span></button>
|
||||||
|
<!-- 줄간격 레이어 -->
|
||||||
|
<div class="se2_layer husky_se2m_lineHeight_layer">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<ul class="se2_l_line_height">
|
||||||
|
<li><button type="button"><span>50%</span></button></li>
|
||||||
|
<li><button type="button"><span>80%</span></button></li>
|
||||||
|
<li><button type="button"><span>100%</span></button></li>
|
||||||
|
<li><button type="button"><span>120%</span></button></li>
|
||||||
|
<li><button type="button"><span>150%</span></button></li>
|
||||||
|
<li><button type="button"><span>180%</span></button></li>
|
||||||
|
<li><button type="button"><span>200%</span></button></li>
|
||||||
|
</ul>
|
||||||
|
<div class="se2_l_line_height_user husky_se2m_lineHeight_direct_input">
|
||||||
|
<h3>직접 입력</h3>
|
||||||
|
<span class="bx_input">
|
||||||
|
<input type="text" class="input_ty1" maxlength="3" style="width:75px">
|
||||||
|
<button type="button" title="1% 더하기" class="btn_up"><span>1% 더하기</span></button>
|
||||||
|
<button type="button" title="1% 빼기" class="btn_down"><span>1% 빼기</span></button>
|
||||||
|
</span>
|
||||||
|
<div class="btn_area">
|
||||||
|
<button type="button" class="se2_btn_apply3"><span>적용</span></button><button type="button" class="se2_btn_cancel3"><span>취소</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //줄간격 레이어 -->
|
||||||
|
</li>
|
||||||
|
</ul><ul>
|
||||||
|
<li class="husky_seditor_ui_quote single_child"><button type="button" title="인용구" class="se2_blockquote"><span class="_buttonRound tool_bg">인용구</span></button>
|
||||||
|
<!-- 인용구 -->
|
||||||
|
<div class="se2_layer husky_seditor_blockquote_layer" style="margin-left:-407px; display:none;">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<div class="se2_quote">
|
||||||
|
<ul>
|
||||||
|
<li class="q1"><button type="button" class="se2_quote1"><span><span>인용구 스타일1</span></span></button></li>
|
||||||
|
<li class="q2"><button type="button" class="se2_quote2"><span><span>인용구 스타일2</span></span></button></li>
|
||||||
|
<li class="q3"><button type="button" class="se2_quote3"><span><span>인용구 스타일3</span></span></button></li>
|
||||||
|
<li class="q4"><button type="button" class="se2_quote4"><span><span>인용구 스타일4</span></span></button></li>
|
||||||
|
<li class="q5"><button type="button" class="se2_quote5"><span><span>인용구 스타일5</span></span></button></li>
|
||||||
|
<li class="q6"><button type="button" class="se2_quote6"><span><span>인용구 스타일6</span></span></button></li>
|
||||||
|
<li class="q7"><button type="button" class="se2_quote7"><span><span>인용구 스타일7</span></span></button></li>
|
||||||
|
<li class="q8"><button type="button" class="se2_quote8"><span><span>인용구 스타일8</span></span></button></li>
|
||||||
|
<li class="q9"><button type="button" class="se2_quote9"><span><span>인용구 스타일9</span></span></button></li>
|
||||||
|
<li class="q10"><button type="button" class="se2_quote10"><span><span>인용구 스타일10</span></span></button></li>
|
||||||
|
</ul>
|
||||||
|
<button type="button" class="se2_cancel2"><span>적용취소</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //인용구 -->
|
||||||
|
</li>
|
||||||
|
</ul><ul>
|
||||||
|
<li class="husky_seditor_ui_hyperlink first_child"><button type="button" title="링크" class="se2_url"><span class="_buttonRound tool_bg">링크</span></button>
|
||||||
|
<!-- 링크 -->
|
||||||
|
<div class="se2_layer" style="margin-left:-285px">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<div class="se2_url2">
|
||||||
|
<input type="text" class="input_ty1" value="http://">
|
||||||
|
<button type="button" class="se2_apply"><span>적용</span></button><button type="button" class="se2_cancel"><span>취소</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //링크 -->
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_sCharacter"><button type="button" title="특수기호" class="se2_character"><span class="_buttonRound">특수기호</span></button>
|
||||||
|
<!-- 특수기호 -->
|
||||||
|
<div class="se2_layer husky_seditor_sCharacter_layer" style="margin-left:-448px;">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<div class="se2_bx_character">
|
||||||
|
<ul class="se2_char_tab">
|
||||||
|
<li class="active"><button type="button" title="일반기호" class="se2_char1"><span>일반기호</span></button>
|
||||||
|
<div class="se2_s_character">
|
||||||
|
<ul class="husky_se2m_sCharacter_list">
|
||||||
|
<li></li>
|
||||||
|
<!-- 일반기호 목록 -->
|
||||||
|
<!-- <li class="hover"><button type="button"><span>{</span></button></li><li class="active"><button type="button"><span>}</span></button></li><li><button type="button"><span>〔</span></button></li><li><button type="button"><span>〕</span></button></li><li><button type="button"><span>〈</span></button></li><li><button type="button"><span>〉</span></button></li><li><button type="button"><span>《</span></button></li><li><button type="button"><span>》</span></button></li><li><button type="button"><span>「</span></button></li><li><button type="button"><span>」</span></button></li><li><button type="button"><span>『</span></button></li><li><button type="button"><span>』</span></button></li><li><button type="button"><span>【</span></button></li><li><button type="button"><span>】</span></button></li><li><button type="button"><span>‘</span></button></li><li><button type="button"><span>’</span></button></li><li><button type="button"><span>“</span></button></li><li><button type="button"><span>”</span></button></li><li><button type="button"><span>、</span></button></li><li><button type="button"><span>。</span></button></li><li><button type="button"><span>·</span></button></li><li><button type="button"><span>‥</span></button></li><li><button type="button"><span>…</span></button></li><li><button type="button"><span>§</span></button></li><li><button type="button"><span>※</span></button></li><li><button type="button"><span>☆</span></button></li><li><button type="button"><span>★</span></button></li><li><button type="button"><span>○</span></button></li><li><button type="button"><span>●</span></button></li><li><button type="button"><span>◎</span></button></li><li><button type="button"><span>◇</span></button></li><li><button type="button"><span>◆</span></button></li><li><button type="button"><span>□</span></button></li><li><button type="button"><span>■</span></button></li><li><button type="button"><span>△</span></button></li><li><button type="button"><span>▲</span></button></li><li><button type="button"><span>▽</span></button></li><li><button type="button"><span>▼</span></button></li><li><button type="button"><span>◁</span></button></li><li><button type="button"><span>◀</span></button></li><li><button type="button"><span>▷</span></button></li><li><button type="button"><span>▶</span></button></li><li><button type="button"><span>♤</span></button></li><li><button type="button"><span>♠</span></button></li><li><button type="button"><span>♡</span></button></li><li><button type="button"><span>♥</span></button></li><li><button type="button"><span>♧</span></button></li><li><button type="button"><span>♣</span></button></li><li><button type="button"><span>⊙</span></button></li><li><button type="button"><span>◈</span></button></li><li><button type="button"><span>▣</span></button></li><li><button type="button"><span>◐</span></button></li><li><button type="button"><span>◑</span></button></li><li><button type="button"><span>▒</span></button></li><li><button type="button"><span>▤</span></button></li><li><button type="button"><span>▥</span></button></li><li><button type="button"><span>▨</span></button></li><li><button type="button"><span>▧</span></button></li><li><button type="button"><span>▦</span></button></li><li><button type="button"><span>▩</span></button></li><li><button type="button"><span>±</span></button></li><li><button type="button"><span>×</span></button></li><li><button type="button"><span>÷</span></button></li><li><button type="button"><span>≠</span></button></li><li><button type="button"><span>≤</span></button></li><li><button type="button"><span>≥</span></button></li><li><button type="button"><span>∞</span></button></li><li><button type="button"><span>∴</span></button></li><li><button type="button"><span>°</span></button></li><li><button type="button"><span>′</span></button></li><li><button type="button"><span>″</span></button></li><li><button type="button"><span>∠</span></button></li><li><button type="button"><span>⊥</span></button></li><li><button type="button"><span>⌒</span></button></li><li><button type="button"><span>∂</span></button></li><li><button type="button"><span>≡</span></button></li><li><button type="button"><span>≒</span></button></li><li><button type="button"><span>≪</span></button></li><li><button type="button"><span>≫</span></button></li><li><button type="button"><span>√</span></button></li><li><button type="button"><span>∽</span></button></li><li><button type="button"><span>∝</span></button></li><li><button type="button"><span>∵</span></button></li><li><button type="button"><span>∫</span></button></li><li><button type="button"><span>∬</span></button></li><li><button type="button"><span>∈</span></button></li><li><button type="button"><span>∋</span></button></li><li><button type="button"><span>⊆</span></button></li><li><button type="button"><span>Line truncated
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li><button type="button" title="숫자와 단위" class="se2_char2"><span>숫자와 단위</span></button>
|
||||||
|
<div class="se2_s_character">
|
||||||
|
<ul class="husky_se2m_sCharacter_list">
|
||||||
|
<li></li>
|
||||||
|
<!-- 숫자와 단위 목록 -->
|
||||||
|
<!-- <li class="hover"><button type="button"><span>½</span></button></li><li><button type="button"><span>⅓</span></button></li><li><button type="button"><span>⅔</span></button></li><li><button type="button"><span>¼</span></button></li><li><button type="button"><span>¾</span></button></li><li><button type="button"><span>⅛</span></button></li><li><button type="button"><span>⅜</span></button></li><li><button type="button"><span>⅝</span></button></li><li><button type="button"><span>⅞</span></button></li><li><button type="button"><span>¹</span></button></li><li><button type="button"><span>²</span></button></li><li><button type="button"><span>³</span></button></li><li><button type="button"><span>⁴</span></button></li><li><button type="button"><span>ⁿ</span></button></li><li><button type="button"><span>₁</span></button></li><li><button type="button"><span>₂</span></button></li><li><button type="button"><span>₃</span></button></li><li><button type="button"><span>₄</span></button></li><li><button type="button"><span>Ⅰ</span></button></li><li><button type="button"><span>Ⅱ</span></button></li><li><button type="button"><span>Ⅲ</span></button></li><li><button type="button"><span>Ⅳ</span></button></li><li><button type="button"><span>Ⅴ</span></button></li><li><button type="button"><span>Ⅵ</span></button></li><li><button type="button"><span>Ⅶ</span></button></li><li><button type="button"><span>Ⅷ</span></button></li><li><button type="button"><span>Ⅸ</span></button></li><li><button type="button"><span>Ⅹ</span></button></li><li><button type="button"><span>ⅰ</span></button></li><li><button type="button"><span>ⅱ</span></button></li><li><button type="button"><span>ⅲ</span></button></li><li><button type="button"><span>ⅳ</span></button></li><li><button type="button"><span>ⅴ</span></button></li><li><button type="button"><span>ⅵ</span></button></li><li><button type="button"><span>ⅶ</span></button></li><li><button type="button"><span>ⅷ</span></button></li><li><button type="button"><span>ⅸ</span></button></li><li><button type="button"><span>ⅹ</span></button></li><li><button type="button"><span>₩</span></button></li><li><button type="button"><span>$</span></button></li><li><button type="button"><span>¥</span></button></li><li><button type="button"><span>£</span></button></li><li><button type="button"><span>€</span></button></li><li><button type="button"><span>℃</span></button></li><li><button type="button"><span>A</span></button></li><li><button type="button"><span>℉</span></button></li><li><button type="button"><span>¢</span></button></li><li><button type="button"><span>¤</span></button></li><li><button type="button"><span>‰</span></button></li><li><button type="button"><span>㎕</span></button></li><li><button type="button"><span>㎖</span></button></li><li><button type="button"><span>㎗</span></button></li><li><button type="button"><span>ℓ</span></button></li><li><button type="button"><span>㎘</span></button></li><li><button type="button"><span>㏄</span></button></li><li><button type="button"><span>㎣</span></button></li><li><button type="button"><span>㎤</span></button></li><li><button type="button"><span>㎥</span></button></li><li><button type="button"><span>㎦</span></button></li><li><button type="button"><span>㎙</span></button></li><li><button type="button"><span>㎚</span></button></li><li><button type="button"><span>㎛</span></button></li><li><button type="button"><span>㎜</span></button></li><li><button type="button"><span>㎝</span></button></li><li><button type="button"><span>㎞</span></button></li><li><button type="button"><span>㎟</span></button></li><li><button type="button"><span>㎠</span></button></li><li><button type="button"><span>㎡</span></button></li><li><button type="button"><span>㎢</span></button></li><li><button type="button"><span>㏊</span></button></li><li><button type="button"><span>㎍</span></button></li><li><button type="button"><span>㎎</span></button></li><li><button type="button"><span>㎏</span></button></li><li><button type="button"><span>㏏</span></button></li><li><button type="button"><span>㎈</span></button></li><li><button type="button"><span>㎉</span></button></li><li><button type="button"><span>㏈</span></button></li><li><button type="button"><span>㎧</span></button></li><li><button type="button"><span>㎨</span></button></li><li><button type="button"><span>㎰</span></button></li><li><button type="button"><span>㎱</span></button></li><li><button type="button"><span>㎲</span></button></li><li><button type="button"><span>㎳</span></button></li><li><button type="button"><span>㎴</span></button></li><li><button type="button"><span>㎵</span></button></li><li><button type="button"><span>㎶</span></button></li><li><button type="button"><span>㎷</span></button></li><li><button type="button"><span>㎸</span></button></li><li><button type="button"><span>㎹</span></button><Line truncated
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li><button type="button" title="원,괄호" class="se2_char3"><span>원,괄호</span></button>
|
||||||
|
<div class="se2_s_character">
|
||||||
|
<ul class="husky_se2m_sCharacter_list">
|
||||||
|
<li></li>
|
||||||
|
<!-- 원,괄호 목록 -->
|
||||||
|
<!-- <li><button type="button"><span>㉠</span></button></li><li><button type="button"><span>㉡</span></button></li><li><button type="button"><span>㉢</span></button></li><li><button type="button"><span>㉣</span></button></li><li><button type="button"><span>㉤</span></button></li><li><button type="button"><span>㉥</span></button></li><li><button type="button"><span>㉦</span></button></li><li><button type="button"><span>㉧</span></button></li><li><button type="button"><span>㉨</span></button></li><li><button type="button"><span>㉩</span></button></li><li><button type="button"><span>㉪</span></button></li><li><button type="button"><span>㉫</span></button></li><li><button type="button"><span>㉬</span></button></li><li><button type="button"><span>㉭</span></button></li><li><button type="button"><span>㉮</span></button></li><li><button type="button"><span>㉯</span></button></li><li><button type="button"><span>㉰</span></button></li><li><button type="button"><span>㉱</span></button></li><li><button type="button"><span>㉲</span></button></li><li><button type="button"><span>㉳</span></button></li><li><button type="button"><span>㉴</span></button></li><li><button type="button"><span>㉵</span></button></li><li><button type="button"><span>㉶</span></button></li><li><button type="button"><span>㉷</span></button></li><li><button type="button"><span>㉸</span></button></li><li><button type="button"><span>㉹</span></button></li><li><button type="button"><span>㉺</span></button></li><li><button type="button"><span>㉻</span></button></li><li><button type="button"><span>ⓐ</span></button></li><li><button type="button"><span>ⓑ</span></button></li><li><button type="button"><span>ⓒ</span></button></li><li><button type="button"><span>ⓓ</span></button></li><li><button type="button"><span>ⓔ</span></button></li><li><button type="button"><span>ⓕ</span></button></li><li><button type="button"><span>ⓖ</span></button></li><li><button type="button"><span>ⓗ</span></button></li><li><button type="button"><span>ⓘ</span></button></li><li><button type="button"><span>ⓙ</span></button></li><li><button type="button"><span>ⓚ</span></button></li><li><button type="button"><span>ⓛ</span></button></li><li><button type="button"><span>ⓜ</span></button></li><li><button type="button"><span>ⓝ</span></button></li><li><button type="button"><span>ⓞ</span></button></li><li><button type="button"><span>ⓟ</span></button></li><li><button type="button"><span>ⓠ</span></button></li><li><button type="button"><span>ⓡ</span></button></li><li><button type="button"><span>ⓢ</span></button></li><li><button type="button"><span>ⓣ</span></button></li><li><button type="button"><span>ⓤ</span></button></li><li><button type="button"><span>ⓥ</span></button></li><li><button type="button"><span>ⓦ</span></button></li><li><button type="button"><span>ⓧ</span></button></li><li><button type="button"><span>ⓨ</span></button></li><li><button type="button"><span>ⓩ</span></button></li><li><button type="button"><span>①</span></button></li><li><button type="button"><span>②</span></button></li><li><button type="button"><span>③</span></button></li><li><button type="button"><span>④</span></button></li><li><button type="button"><span>⑤</span></button></li><li><button type="button"><span>⑥</span></button></li><li><button type="button"><span>⑦</span></button></li><li><button type="button"><span>⑧</span></button></li><li><button type="button"><span>⑨</span></button></li><li><button type="button"><span>⑩</span></button></li><li><button type="button"><span>⑪</span></button></li><li><button type="button"><span>⑫</span></button></li><li><button type="button"><span>⑬</span></button></li><li><button type="button"><span>⑭</span></button></li><li><button type="button"><span>⑮</span></button></li><li><button type="button"><span>㈀</span></button></li><li><button type="button"><span>㈁</span></button></li><li class="hover"><button type="button"><span>㈂</span></button></li><li><button type="button"><span>㈃</span></button></li><li><button type="button"><span>㈄</span></button></li><li><button type="button"><span>㈅</span></button></li><li><button type="button"><span>㈆</span></button></li><li><button type="button"><span>㈇</span></button></li><li><button type="button"><span>㈈</span></button></li><li><button type="button"><span>㈉</span></button></li><li><button type="button"><span>㈊</span></button></li><li><button type="button"><span>㈋</span></button></li><li><button type="button"><span>㈌</span></button></li><li><button type="button"><span>㈍</span></button></li><li><button type="button"><span>㈎</span></button></li><li><button type="button"><span>㈏</span></button></li><li><button type="button"><span>㈐</span></button></li><li><button type="button"><span>㈑</span></button></li><li><button type="button"><span>㈒</span></button></li><li><button type="button"><span>㈓</spanLine truncated
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li><button type="button" title="한글" class="se2_char4"><span>한글</span></button>
|
||||||
|
<div class="se2_s_character">
|
||||||
|
<ul class="husky_se2m_sCharacter_list">
|
||||||
|
<li></li>
|
||||||
|
<!-- 한글 목록 -->
|
||||||
|
<!-- <li><button type="button"><span>ㄱ</span></button></li><li><button type="button"><span>ㄲ</span></button></li><li><button type="button"><span>ㄳ</span></button></li><li><button type="button"><span>ㄴ</span></button></li><li><button type="button"><span>ㄵ</span></button></li><li><button type="button"><span>ㄶ</span></button></li><li><button type="button"><span>ㄷ</span></button></li><li><button type="button"><span>ㄸ</span></button></li><li><button type="button"><span>ㄹ</span></button></li><li><button type="button"><span>ㄺ</span></button></li><li><button type="button"><span>ㄻ</span></button></li><li><button type="button"><span>ㄼ</span></button></li><li><button type="button"><span>ㄽ</span></button></li><li><button type="button"><span>ㄾ</span></button></li><li><button type="button"><span>ㄿ</span></button></li><li><button type="button"><span>ㅀ</span></button></li><li><button type="button"><span>ㅁ</span></button></li><li><button type="button"><span>ㅂ</span></button></li><li><button type="button"><span>ㅃ</span></button></li><li><button type="button"><span>ㅄ</span></button></li><li><button type="button"><span>ㅅ</span></button></li><li><button type="button"><span>ㅆ</span></button></li><li><button type="button"><span>ㅇ</span></button></li><li><button type="button"><span>ㅈ</span></button></li><li><button type="button"><span>ㅉ</span></button></li><li><button type="button"><span>ㅊ</span></button></li><li><button type="button"><span>ㅋ</span></button></li><li><button type="button"><span>ㅌ</span></button></li><li><button type="button"><span>ㅍ</span></button></li><li><button type="button"><span>ㅎ</span></button></li><li><button type="button"><span>ㅏ</span></button></li><li><button type="button"><span>ㅐ</span></button></li><li><button type="button"><span>ㅑ</span></button></li><li><button type="button"><span>ㅒ</span></button></li><li><button type="button"><span>ㅓ</span></button></li><li><button type="button"><span>ㅔ</span></button></li><li><button type="button"><span>ㅕ</span></button></li><li><button type="button"><span>ㅖ</span></button></li><li><button type="button"><span>ㅗ</span></button></li><li><button type="button"><span>ㅘ</span></button></li><li><button type="button"><span>ㅙ</span></button></li><li><button type="button"><span>ㅚ</span></button></li><li><button type="button"><span>ㅛ</span></button></li><li><button type="button"><span>ㅜ</span></button></li><li><button type="button"><span>ㅝ</span></button></li><li><button type="button"><span>ㅞ</span></button></li><li><button type="button"><span>ㅟ</span></button></li><li><button type="button"><span>ㅠ</span></button></li><li><button type="button"><span>ㅡ</span></button></li><li><button type="button"><span>ㅢ</span></button></li><li><button type="button"><span>ㅣ</span></button></li><li><button type="button"><span>ㅥ</span></button></li><li><button type="button"><span>ㅦ</span></button></li><li><button type="button"><span>ㅧ</span></button></li><li><button type="button"><span>ㅨ</span></button></li><li><button type="button"><span>ㅩ</span></button></li><li><button type="button"><span>ㅪ</span></button></li><li><button type="button"><span>ㅫ</span></button></li><li><button type="button"><span>ㅬ</span></button></li><li><button type="button"><span>ㅭ</span></button></li><li><button type="button"><span>ㅮ</span></button></li><li><button type="button"><span>ㅯ</span></button></li><li><button type="button"><span>ㅰ</span></button></li><li><button type="button"><span>ㅱ</span></button></li><li><button type="button"><span>ㅲ</span></button></li><li><button type="button"><span>ㅳ</span></button></li><li><button type="button"><span>ㅴ</span></button></li><li><button type="button"><span>ㅵ</span></button></li><li><button type="button"><span>ㅶ</span></button></li><li><button type="button"><span>ㅷ</span></button></li><li><button type="button"><span>ㅸ</span></button></li><li><button type="button"><span>ㅹ</span></button></li><li><button type="button"><span>ㅺ</span></button></li><li><button type="button"><span>ㅻ</span></button></li><li><button type="button"><span>ㅼ</span></button></li><li><button type="button"><span>ㅽ</span></button></li><li><button type="button"><span>ㅾ</span></button></li><li><button type="button"><span>ㅿ</span></button></li><li><button type="button"><span>ㆀ</span></button></li><li><button type="button"><span>ㆁ</span></button></li><li><button type="button"><span>ㆂ</span></button></li><li><button type="button"><span>ㆃ</span></button></li><li><button type="button"><span>ㆄ</span></button></li><li><button type="button"><span>ㆅ</span></button></li><li><button type="button"><span>ㆆ</span></button></li><li><button type="button"><span>ㆇ</span></button></li><li><button type="button"><span>ㆈ</span></button></li><li><button type="button"><span>ㆉ</span></button></li><li><button type="button"><span>ㆊ</span></button></liLine truncated
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li><button type="button" title="그리스,라틴어" class="se2_char5"><span>그리스,라틴어</span></button>
|
||||||
|
<div class="se2_s_character">
|
||||||
|
<ul class="husky_se2m_sCharacter_list">
|
||||||
|
<li></li>
|
||||||
|
<!-- 그리스,라틴어 목록 -->
|
||||||
|
<!-- <li><button type="button"><span>Α</span></button></li><li><button type="button"><span>Β</span></button></li><li><button type="button"><span>Γ</span></button></li><li><button type="button"><span>Δ</span></button></li><li><button type="button"><span>Ε</span></button></li><li><button type="button"><span>Ζ</span></button></li><li><button type="button"><span>Η</span></button></li><li><button type="button"><span>Θ</span></button></li><li><button type="button"><span>Ι</span></button></li><li><button type="button"><span>Κ</span></button></li><li><button type="button"><span>Λ</span></button></li><li><button type="button"><span>Μ</span></button></li><li><button type="button"><span>Ν</span></button></li><li><button type="button"><span>Ξ</span></button></li><li class="hover"><button type="button"><span>Ο</span></button></li><li><button type="button"><span>Π</span></button></li><li><button type="button"><span>Ρ</span></button></li><li><button type="button"><span>Σ</span></button></li><li><button type="button"><span>Τ</span></button></li><li><button type="button"><span>Υ</span></button></li><li><button type="button"><span>Φ</span></button></li><li><button type="button"><span>Χ</span></button></li><li><button type="button"><span>Ψ</span></button></li><li><button type="button"><span>Ω</span></button></li><li><button type="button"><span>α</span></button></li><li><button type="button"><span>β</span></button></li><li><button type="button"><span>γ</span></button></li><li><button type="button"><span>δ</span></button></li><li><button type="button"><span>ε</span></button></li><li><button type="button"><span>ζ</span></button></li><li><button type="button"><span>η</span></button></li><li><button type="button"><span>θ</span></button></li><li><button type="button"><span>ι</span></button></li><li><button type="button"><span>κ</span></button></li><li><button type="button"><span>λ</span></button></li><li><button type="button"><span>μ</span></button></li><li><button type="button"><span>ν</span></button></li><li><button type="button"><span>ξ</span></button></li><li><button type="button"><span>ο</span></button></li><li><button type="button"><span>π</span></button></li><li><button type="button"><span>ρ</span></button></li><li><button type="button"><span>σ</span></button></li><li><button type="button"><span>τ</span></button></li><li><button type="button"><span>υ</span></button></li><li><button type="button"><span>φ</span></button></li><li><button type="button"><span>χ</span></button></li><li><button type="button"><span>ψ</span></button></li><li><button type="button"><span>ω</span></button></li><li><button type="button"><span>Æ</span></button></li><li><button type="button"><span>Ð</span></button></li><li><button type="button"><span>Ħ</span></button></li><li><button type="button"><span>IJ</span></button></li><li><button type="button"><span>Ŀ</span></button></li><li><button type="button"><span>Ł</span></button></li><li><button type="button"><span>Ø</span></button></li><li><button type="button"><span>Œ</span></button></li><li><button type="button"><span>Þ</span></button></li><li><button type="button"><span>Ŧ</span></button></li><li><button type="button"><span>Ŋ</span></button></li><li><button type="button"><span>æ</span></button></li><li><button type="button"><span>đ</span></button></li><li><button type="button"><span>ð</span></button></li><li><button type="button"><span>ħ</span></button></li><li><button type="button"><span>I</span></button></li><li><button type="button"><span>ij</span></button></li><li><button type="button"><span>ĸ</span></button></li><li><button type="button"><span>ŀ</span></button></li><li><button type="button"><span>ł</span></button></li><li><button type="button"><span>ł</span></button></li><li><button type="button"><span>œ</span></button></li><li><button type="button"><span>ß</span></button></li><li><button type="button"><span>þ</span></button></li><li><button type="button"><span>ŧ</span></button></li><li><button type="button"><span>ŋ</span></button></li><li><button type="button"><span>ʼn</span></button></li><li><button type="button"><span>Б</span></button></li><li><button type="button"><span>Г</span></button></li><li><button type="button"><span>Д</span></button></li><li><button type="button"><span>Ё</span></button></li><li><button type="button"><span>Ж</span></button></li><li><button type="button"><span>З</span></button></li><li><button type="button"><span>И</span></button></li><li><button type="button"><span>Й</span></button></li><li><button type="button"><span>Л</span></button></li><li><button type="button"><span>П</span></button></li><li><button type="button"><span>Ц</span></button></li><li><button type="button"><span>Ч</span></button></li><li><button type="button"><span>Ш</span></button></li><li><button type="button"><span>Щ</span></button></li><li><button type="button"><span>Ъ</span></button></li><li><button type="buLine truncated
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li><button type="button" title="일본어" class="se2_char6"><span>일본어</span></button>
|
||||||
|
<div class="se2_s_character">
|
||||||
|
<ul class="husky_se2m_sCharacter_list">
|
||||||
|
<li></li>
|
||||||
|
<!-- 일본어 목록 -->
|
||||||
|
<!-- <li><button type="button"><span>ぁ</span></button></li><li class="hover"><button type="button"><span>あ</span></button></li><li><button type="button"><span>ぃ</span></button></li><li><button type="button"><span>い</span></button></li><li><button type="button"><span>ぅ</span></button></li><li><button type="button"><span>う</span></button></li><li><button type="button"><span>ぇ</span></button></li><li><button type="button"><span>え</span></button></li><li><button type="button"><span>ぉ</span></button></li><li><button type="button"><span>お</span></button></li><li><button type="button"><span>か</span></button></li><li><button type="button"><span>が</span></button></li><li><button type="button"><span>き</span></button></li><li><button type="button"><span>ぎ</span></button></li><li><button type="button"><span>く</span></button></li><li><button type="button"><span>ぐ</span></button></li><li><button type="button"><span>け</span></button></li><li><button type="button"><span>げ</span></button></li><li><button type="button"><span>こ</span></button></li><li><button type="button"><span>ご</span></button></li><li><button type="button"><span>さ</span></button></li><li><button type="button"><span>ざ</span></button></li><li><button type="button"><span>し</span></button></li><li><button type="button"><span>じ</span></button></li><li><button type="button"><span>す</span></button></li><li><button type="button"><span>ず</span></button></li><li><button type="button"><span>せ</span></button></li><li><button type="button"><span>ぜ</span></button></li><li><button type="button"><span>そ</span></button></li><li><button type="button"><span>ぞ</span></button></li><li><button type="button"><span>た</span></button></li><li><button type="button"><span>だ</span></button></li><li><button type="button"><span>ち</span></button></li><li><button type="button"><span>ぢ</span></button></li><li><button type="button"><span>っ</span></button></li><li><button type="button"><span>つ</span></button></li><li><button type="button"><span>づ</span></button></li><li><button type="button"><span>て</span></button></li><li><button type="button"><span>で</span></button></li><li><button type="button"><span>と</span></button></li><li><button type="button"><span>ど</span></button></li><li><button type="button"><span>な</span></button></li><li><button type="button"><span>に</span></button></li><li><button type="button"><span>ぬ</span></button></li><li><button type="button"><span>ね</span></button></li><li><button type="button"><span>の</span></button></li><li><button type="button"><span>は</span></button></li><li><button type="button"><span>ば</span></button></li><li><button type="button"><span>ぱ</span></button></li><li><button type="button"><span>ひ</span></button></li><li><button type="button"><span>び</span></button></li><li><button type="button"><span>ぴ</span></button></li><li><button type="button"><span>ふ</span></button></li><li><button type="button"><span>ぶ</span></button></li><li><button type="button"><span>ぷ</span></button></li><li><button type="button"><span>へ</span></button></li><li><button type="button"><span>べ</span></button></li><li><button type="button"><span>ぺ</span></button></li><li><button type="button"><span>ほ</span></button></li><li><button type="button"><span>ぼ</span></button></li><li><button type="button"><span>ぽ</span></button></li><li><button type="button"><span>ま</span></button></li><li><button type="button"><span>み</span></button></li><li><button type="button"><span>む</span></button></li><li><button type="button"><span>め</span></button></li><li><button type="button"><span>も</span></button></li><li><button type="button"><span>ゃ</span></button></li><li><button type="button"><span>や</span></button></li><li><button type="button"><span>ゅ</span></button></li><li><button type="button"><span>ゆ</span></button></li><li><button type="button"><span>ょ</span></button></li><li><button type="button"><span>よ</span></button></li><li><button type="button"><span>ら</span></button></li><li><button type="button"><span>り</span></button></li><li><button type="button"><span>る</span></button></li><li><button type="button"><span>れ</span></button></li><li><button type="button"><span>ろ</span></button></li><li><button type="button"><span>ゎ</span></button></li><li><button type="button"><span>わ</span></button></li><li><button type="button"><span>ゐ</span></button></li><li><button type="button"><span>ゑ</span></button></li><li><button type="button"><span>を</span></button></li><li><button type="button"><span>ん</span></button></li><li><button type="button"><span>ァ</span></button></li><li><button type="button"><span>ア</span></button></li><li><button type="button"><span>ィ</span></button></li><li><button type="button"><span>イ</span></button></li><li><button type="button"><span>ゥ</span></button></li><li><button type="button"><span>ウ</spanLine truncated
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="se2_apply_character">
|
||||||
|
<label for="char_preview">선택한 기호</label> <input type="text" name="char_preview" id="char_preview" value="®º⊆●○" class="input_ty1"><button type="button" class="se2_confirm"><span>적용</span></button><button type="button" class="se2_cancel husky_se2m_sCharacter_close"><span>취소</span></button>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //특수기호 -->
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_table"><button type="button" title="표" class="se2_table"><span class="_buttonRound">표</span></button>
|
||||||
|
<!--@lazyload_html create_table-->
|
||||||
|
<!-- 표 -->
|
||||||
|
<div class="se2_layer husky_se2m_table_layer" style="margin-left:-171px">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<div class="se2_table_set">
|
||||||
|
<fieldset>
|
||||||
|
<legend>칸수 지정</legend>
|
||||||
|
<dl class="se2_cell_num">
|
||||||
|
<dt><label for="row">행</label></dt>
|
||||||
|
<dd><input id="row" name="" type="text" maxlength="2" value="4" class="input_ty2">
|
||||||
|
<button type="button" class="se2_add"><span>1행추가</span></button>
|
||||||
|
<button type="button" class="se2_del"><span>1행삭제</span></button>
|
||||||
|
</dd>
|
||||||
|
<dt><label for="col">열</label></dt>
|
||||||
|
<dd><input id="col" name="" type="text" maxlength="2" value="4" class="input_ty2">
|
||||||
|
<button type="button" class="se2_add"><span>1열추가</span></button>
|
||||||
|
<button type="button" class="se2_del"><span>1열삭제</span></button>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<table border="0" cellspacing="1" class="se2_pre_table husky_se2m_table_preview">
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>속성직접입력</legend>
|
||||||
|
<dl class="se2_t_proper1">
|
||||||
|
<dt><input type="radio" id="se2_tbp1" name="se2_tbp" checked><label for="se2_tbp1">속성직접입력</label></dt>
|
||||||
|
<dd>
|
||||||
|
<dl class="se2_t_proper1_1">
|
||||||
|
<dt><label>표스타일</label></dt>
|
||||||
|
<dd><div class="se2_select_ty1"><span class="se2_b_style3 husky_se2m_table_border_style_preview"></span><button type="button" title="더보기" class="se2_view_more"><span>더보기</span></button></div>
|
||||||
|
<!-- 레이어 : 테두리스타일 -->
|
||||||
|
<div class="se2_layer_b_style husky_se2m_table_border_style_layer" style="display:none">
|
||||||
|
<ul>
|
||||||
|
<li><button type="button" class="se2_b_style1"><span class="se2m_no_border">테두리없음</span></button></li>
|
||||||
|
<li><button type="button" class="se2_b_style2"><span><span>테두리스타일2</span></span></button></li>
|
||||||
|
<li><button type="button" class="se2_b_style3"><span><span>테두리스타일3</span></span></button></li>
|
||||||
|
<li><button type="button" class="se2_b_style4"><span><span>테두리스타일4</span></span></button></li>
|
||||||
|
<li><button type="button" class="se2_b_style5"><span><span>테두리스타일5</span></span></button></li>
|
||||||
|
<li><button type="button" class="se2_b_style6"><span><span>테두리스타일6</span></span></button></li>
|
||||||
|
<li><button type="button" class="se2_b_style7"><span><span>테두리스타일7</span></span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //레이어 : 테두리스타일 -->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl class="se2_t_proper1_1 se2_t_proper1_2">
|
||||||
|
<dt><label for="se2_b_width">테두리두께</label></dt>
|
||||||
|
<dd><input id="se2_b_width" name="" type="text" maxlength="2" value="1" class="input_ty1">
|
||||||
|
<button type="button" title="1px 더하기" class="se2_add se2m_incBorder"><span>1px 더하기</span></button>
|
||||||
|
<button type="button" title="1px 빼기" class="se2_del se2m_decBorder"><span>1px 빼기</span></button>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl class="se2_t_proper1_1 se2_t_proper1_3">
|
||||||
|
<dt><label for="se2_b_color">테두리색</label></dt>
|
||||||
|
<dd><input id="se2_b_color" name="" type="text" maxlength="7" value="#cccccc" class="input_ty3"><span class="se2_pre_color"><button type="button" style="background:#cccccc;"><span>색찾기</span></button></span>
|
||||||
|
<!-- 레이어 : 테두리색 -->
|
||||||
|
<div class="se2_layer se2_b_t_b1" style="clear:both;display:none;position:absolute;top:20px;left:-147px;">
|
||||||
|
<div class="se2_in_layer husky_se2m_table_border_color_pallet">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //레이어 : 테두리색-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<div class="se2_t_dim0"></div><!-- 테두리 없음일때 딤드레이어 -->
|
||||||
|
<dl class="se2_t_proper1_1 se2_t_proper1_4">
|
||||||
|
<dt><label for="se2_cellbg">셀 배경색</label></dt>
|
||||||
|
<dd><input id="se2_cellbg" name="" type="text" maxlength="7" value="#ffffff" class="input_ty3"><span class="se2_pre_color"><button type="button" style="background:#ffffff;"><span>색찾기</span></button></span>
|
||||||
|
<!-- 레이어 : 셀배경색 -->
|
||||||
|
<div class="se2_layer se2_b_t_b1" style="clear:both;display:none;position:absolute;top:20px;left:-147px;">
|
||||||
|
<div class="se2_in_layer husky_se2m_table_bgcolor_pallet">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //레이어 : 셀배경색-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>표스타일</legend>
|
||||||
|
<dl class="se2_t_proper2">
|
||||||
|
<dt><input type="radio" id="se2_tbp2" name="se2_tbp"><label for="se2_tbp2">스타일 선택</label></dt>
|
||||||
|
<dd><div class="se2_select_ty2"><span class="se2_t_style1 husky_se2m_table_style_preview"></span><button type="button" title="더보기" class="se2_view_more"><span>더보기</span></button></div>
|
||||||
|
<!-- 레이어 : 표템플릿선택 -->
|
||||||
|
<div class="se2_layer_t_style husky_se2m_table_style_layer" style="display:none">
|
||||||
|
<ul class="se2_scroll">
|
||||||
|
<li><button type="button" class="se2_t_style1"><span>표스타일1</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style2"><span>표스타일2</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style3"><span>표스타일3</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style4"><span>표스타일4</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style5"><span>표스타일5</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style6"><span>표스타일6</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style7"><span>표스타일7</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style8"><span>표스타일8</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style9"><span>표스타일9</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style10"><span>표스타일10</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style11"><span>표스타일11</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style12"><span>표스타일12</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style13"><span>표스타일13</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style14"><span>표스타일14</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style15"><span>표스타일15</span></button></li>
|
||||||
|
<li><button type="button" class="se2_t_style16"><span>표스타일16</span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //레이어 : 표템플릿선택 -->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</fieldset>
|
||||||
|
<p class="se2_btn_area">
|
||||||
|
<button type="button" class="se2_apply"><span>적용</span></button><button type="button" class="se2_cancel"><span>취소</span></button>
|
||||||
|
</p>
|
||||||
|
<!-- 딤드레이어 -->
|
||||||
|
<div class="se2_t_dim3"></div>
|
||||||
|
<!-- //딤드레이어 -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //표 -->
|
||||||
|
<!--//@lazyload_html-->
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="husky_seditor_ui_findAndReplace last_child"><button type="button" title="찾기/바꾸기" class="se2_find"><span class="_buttonRound tool_bg">찾기/바꾸기</span></button>
|
||||||
|
<!--@lazyload_html find_and_replace-->
|
||||||
|
<!-- 찾기/바꾸기 -->
|
||||||
|
<div class="se2_layer husky_se2m_findAndReplace_layer" style="margin-left:-238px;">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<div class="se2_bx_find_revise">
|
||||||
|
<button type="button" title="닫기" class="se2_close husky_se2m_cancel"><span>닫기</span></button>
|
||||||
|
<h3>찾기/바꾸기</h3>
|
||||||
|
<ul>
|
||||||
|
<li class="active"><button type="button" class="se2_tabfind"><span>찾기</span></button></li>
|
||||||
|
<li><button type="button" class="se2_tabrevise"><span>바꾸기</span></button></li>
|
||||||
|
</ul>
|
||||||
|
<div class="se2_in_bx_find husky_se2m_find_ui" style="display:block">
|
||||||
|
<dl>
|
||||||
|
<dt><label for="find_word">찾을 단어</label></dt><dd><input type="text" id="find_word" value="스마트에디터" class="input_ty1"></dd>
|
||||||
|
</dl>
|
||||||
|
<p class="se2_find_btns">
|
||||||
|
<button type="button" class="se2_find_next husky_se2m_find_next"><span>다음 찾기</span></button><button type="button" class="se2_cancel husky_se2m_cancel"><span>취소</span></button>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="se2_in_bx_revise husky_se2m_replace_ui" style="display:none">
|
||||||
|
<dl>
|
||||||
|
<dt><label for="find_word2">찾을 단어</label></dt><dd><input type="text" id="find_word2" value="스마트에디터" class="input_ty1"></dd>
|
||||||
|
<dt><label for="revise_word">바꿀 단어</label></dt><dd><input type="text" id="revise_word" value="스마트에디터" class="input_ty1"></dd>
|
||||||
|
</dl>
|
||||||
|
<p class="se2_find_btns">
|
||||||
|
<button type="button" class="se2_find_next2 husky_se2m_replace_find_next"><span>다음 찾기</span></button><button type="button" class="se2_revise1 husky_se2m_replace"><span>바꾸기</span></button><button type="button" class="se2_revise2 husky_se2m_replace_all"><span>모두 바꾸기</span></button><button type="button" class="se2_cancel husky_se2m_cancel"><span>취소</span></button>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<button type="button" title="닫기" class="se2_close husky_se2m_cancel"><span>닫기</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //찾기/바꾸기 -->
|
||||||
|
<!--//@lazyload_html-->
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="se2_multy">
|
||||||
|
<li class="se2_mn husky_seditor_ui_photo_attach"><button type="button" class="se2_photo ico_btn"><span class="se2_icon"></span><span class="se2_mntxt">사진<span class="se2_new"></span></span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //704이상 -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 접근성 도움말 레이어 -->
|
||||||
|
<div class="se2_layer se2_accessibility" style="display:none;">
|
||||||
|
<div class="se2_in_layer">
|
||||||
|
<button type="button" title="닫기" class="se2_close"><span>닫기</span></button>
|
||||||
|
<h3><strong>접근성 도움말</strong></h3>
|
||||||
|
<div class="box_help">
|
||||||
|
<div>
|
||||||
|
<strong>툴바</strong>
|
||||||
|
<p>ALT+F10 을 누르면 툴바로 이동합니다. 다음 버튼은 TAB 으로 이전 버튼은 SHIFT+TAB 으로 이동 가능합니다. ENTER 를 누르면 해당 버튼의 기능이 동작하고 글쓰기 영역으로 포커스가 이동합니다. ESC 를 누르면 아무런 기능을 실행하지 않고 글쓰기 영역으로 포커스가 이동합니다.</p>
|
||||||
|
<strong>빠져 나가기</strong>
|
||||||
|
<p>ALT+. 를 누르면 스마트 에디터 다음 요소로 ALT+, 를 누르면 스마트에디터 이전 요소로 빠져나갈 수 있습니다.</p>
|
||||||
|
<strong>명령어 단축키</strong>
|
||||||
|
<ul>
|
||||||
|
<li>CTRL+B <span>굵게</span></li>
|
||||||
|
<li>SHIFT+TAB <span>내어쓰기</span></li>
|
||||||
|
<li>CTRL+U <span>밑줄</span></li>
|
||||||
|
<li>CTRL+F <span>찾기</span></li>
|
||||||
|
<li>CTRL+I <span>기울임 글꼴</span></li>
|
||||||
|
<li>CTRL+H <span>바꾸기</span></li>
|
||||||
|
<li>CTRL+D <span>취소선</span></li>
|
||||||
|
<li>CTRL+K <span>링크걸기</span></li>
|
||||||
|
<li>TAB <span>들여쓰기</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="se2_btns">
|
||||||
|
<button type="button" class="se2_close2"><span>닫기</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //접근성 도움말 레이어 -->
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<!-- 입력 -->
|
||||||
|
<div class="se2_input_area husky_seditor_editing_area_container">
|
||||||
|
|
||||||
|
|
||||||
|
<iframe src="about:blank" id="se2_iframe" name="se2_iframe" class="se2_input_wysiwyg" width="400" height="300" title="글쓰기 영역 : 도구 모음은 ALT+F10을, 도움말은 ALT+0을 누르세요." frameborder="0" style="display:block;"></iframe>
|
||||||
|
<textarea name="" rows="10" cols="100" title="HTML 편집 모드" class="se2_input_syntax se2_input_htmlsrc" style="display:none;outline-style:none;resize:none"> </textarea>
|
||||||
|
<textarea name="" rows="10" cols="100" title="TEXT 편집 모드" class="se2_input_syntax se2_input_text" style="display:none;outline-style:none;resize:none;"> </textarea>
|
||||||
|
|
||||||
|
<!-- 입력창 조절 안내 레이어 -->
|
||||||
|
<div class="ly_controller husky_seditor_resize_notice" style="z-index:20;display:none;">
|
||||||
|
<p>아래 영역을 드래그하여 입력창 크기를 조절할 수 있습니다.</p>
|
||||||
|
<button type="button" title="닫기" class="bt_clse"><span>닫기</span></button>
|
||||||
|
<span class="ic_arr"></span>
|
||||||
|
</div>
|
||||||
|
<!-- //입력창 조절 안내 레이어 -->
|
||||||
|
<div class="quick_wrap">
|
||||||
|
<!-- 표/글양식 간단편집기 -->
|
||||||
|
<!--@lazyload_html qe_table-->
|
||||||
|
<div class="q_table_wrap" style="z-index: 150;">
|
||||||
|
<button class="_fold se2_qmax q_open_table_full" style="position:absolute; display:none;top:340px;left:210px;z-index:30;" title="최대화" type="button"><span>퀵에디터최대화</span></button>
|
||||||
|
<div class="_full se2_qeditor se2_table_set" style="position:absolute;display:none;top:135px;left:661px;z-index:30;">
|
||||||
|
<div class="se2_qbar q_dragable"><span class="se2_qmini"><button title="최소화" class="q_open_table_fold"><span>퀵에디터최소화</span></button></span></div>
|
||||||
|
<div class="se2_qbody0">
|
||||||
|
<div class="se2_qbody">
|
||||||
|
<dl class="se2_qe1">
|
||||||
|
<dt>삽입</dt><dd><button class="se2_addrow" title="행삽입" type="button"><span>행삽입</span></button><button class="se2_addcol" title="열삽입" type="button"><span>열삽입</span></button></dd>
|
||||||
|
<dt>분할</dt><dd><button class="se2_seprow" title="행분할" type="button"><span>행분할</span></button><button class="se2_sepcol" title="열분할" type="button"><span>열분할</span></button></dd>
|
||||||
|
|
||||||
|
<dt>삭제</dt><dd><button class="se2_delrow" title="행삭제" type="button"><span>행삭제</span></button><button class="se2_delcol" title="열삭제" type="button"><span>열삭제</span></button></dd>
|
||||||
|
<dt>병합</dt><dd><button class="se2_merrow" title="행병합" type="button"><span>행병합</span></button></dd>
|
||||||
|
</dl>
|
||||||
|
<div class="se2_qe2 se2_qe2_3"> <!-- 테이블 퀵에디터의 경우만, se2_qe2_3제거 -->
|
||||||
|
<!-- 샐배경색 -->
|
||||||
|
<dl class="se2_qe2_1">
|
||||||
|
|
||||||
|
<dt><input type="radio" checked="checked" name="se2_tbp3" id="se2_cellbg2" class="husky_se2m_radio_bgc"><label for="se2_cellbg2">셀 배경색</label></dt>
|
||||||
|
<dd><span class="se2_pre_color"><button style="background: none repeat scroll 0% 0% rgb(255, 255, 255);" type="button" class="husky_se2m_table_qe_bgcolor_btn"><span>색찾기</span></button></span>
|
||||||
|
<!-- layer:셀배경색 -->
|
||||||
|
<div style="display:none;position:absolute;top:20px;left:0px;" class="se2_layer se2_b_t_b1">
|
||||||
|
<div class="se2_in_layer husky_se2m_tbl_qe_bg_paletteHolder">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //layer:셀배경색-->
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<!-- //샐배경색 -->
|
||||||
|
<!-- 배경이미지선택 -->
|
||||||
|
<dl style="display: none;" class="se2_qe2_2 husky_se2m_tbl_qe_review_bg">
|
||||||
|
<dt><input type="radio" name="se2_tbp3" id="se2_cellbg3" class="husky_se2m_radio_bgimg"><label for="se2_cellbg3">이미지</label></dt>
|
||||||
|
<dd><span class="se2_pre_bgimg"><button class="husky_se2m_table_qe_bgimage_btn se2_cellimg0" type="button"><span>배경이미지선택</span></button></span>
|
||||||
|
<!-- layer:배경이미지선택 -->
|
||||||
|
<div style="display:none;position:absolute;top:20px;left:-155px;" class="se2_layer se2_b_t_b1">
|
||||||
|
<div class="se2_in_layer husky_se2m_tbl_qe_bg_img_paletteHolder">
|
||||||
|
<ul class="se2_cellimg_set">
|
||||||
|
<li><button class="se2_cellimg0" type="button"><span>배경없음</span></button></li>
|
||||||
|
<li><button class="se2_cellimg1" type="button"><span>배경1</span></button></li>
|
||||||
|
<li><button class="se2_cellimg2" type="button"><span>배경2</span></button></li>
|
||||||
|
<li><button class="se2_cellimg3" type="button"><span>배경3</span></button></li>
|
||||||
|
<li><button class="se2_cellimg4" type="button"><span>배경4</span></button></li>
|
||||||
|
<li><button class="se2_cellimg5" type="button"><span>배경5</span></button></li>
|
||||||
|
<li><button class="se2_cellimg6" type="button"><span>배경6</span></button></li>
|
||||||
|
<li><button class="se2_cellimg7" type="button"><span>배경7</span></button></li>
|
||||||
|
<li><button class="se2_cellimg8" type="button"><span>배경8</span></button></li>
|
||||||
|
<li><button class="se2_cellimg9" type="button"><span>배경9</span></button></li>
|
||||||
|
<li><button class="se2_cellimg10" type="button"><span>배경10</span></button></li>
|
||||||
|
<li><button class="se2_cellimg11" type="button"><span>배경11</span></button></li>
|
||||||
|
<li><button class="se2_cellimg12" type="button"><span>배경12</span></button></li>
|
||||||
|
<li><button class="se2_cellimg13" type="button"><span>배경13</span></button></li>
|
||||||
|
<li><button class="se2_cellimg14" type="button"><span>배경14</span></button></li>
|
||||||
|
<li><button class="se2_cellimg15" type="button"><span>배경15</span></button></li>
|
||||||
|
<li><button class="se2_cellimg16" type="button"><span>배경16</span></button></li>
|
||||||
|
<li><button class="se2_cellimg17" type="button"><span>배경17</span></button></li>
|
||||||
|
<li><button class="se2_cellimg18" type="button"><span>배경18</span></button></li>
|
||||||
|
<li><button class="se2_cellimg19" type="button"><span>배경19</span></button></li>
|
||||||
|
<li><button class="se2_cellimg20" type="button"><span>배경20</span></button></li>
|
||||||
|
<li><button class="se2_cellimg21" type="button"><span>배경21</span></button></li>
|
||||||
|
<li><button class="se2_cellimg22" type="button"><span>배경22</span></button></li>
|
||||||
|
<li><button class="se2_cellimg23" type="button"><span>배경23</span></button></li>
|
||||||
|
<li><button class="se2_cellimg24" type="button"><span>배경24</span></button></li>
|
||||||
|
<li><button class="se2_cellimg25" type="button"><span>배경25</span></button></li>
|
||||||
|
<li><button class="se2_cellimg26" type="button"><span>배경26</span></button></li>
|
||||||
|
<li><button class="se2_cellimg27" type="button"><span>배경27</span></button></li>
|
||||||
|
<li><button class="se2_cellimg28" type="button"><span>배경28</span></button></li>
|
||||||
|
<li><button class="se2_cellimg29" type="button"><span>배경29</span></button></li>
|
||||||
|
<li><button class="se2_cellimg30" type="button"><span>배경30</span></button></li>
|
||||||
|
<li><button class="se2_cellimg31" type="button"><span>배경31</span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //layer:배경이미지선택-->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<!-- //배경이미지선택 -->
|
||||||
|
</div>
|
||||||
|
<dl style="display: block;" class="se2_qe3 se2_t_proper2">
|
||||||
|
<dt><input type="radio" name="se2_tbp3" id="se2_tbp4" class="husky_se2m_radio_template"><label for="se2_tbp4">표 스타일</label></dt>
|
||||||
|
<dd>
|
||||||
|
<div class="se2_qe3_table">
|
||||||
|
<div class="se2_select_ty2"><span class="se2_t_style1"></span><button class="se2_view_more husky_se2m_template_more" title="더보기" type="button"><span>더보기</span></button></div>
|
||||||
|
<!-- layer:표스타일 -->
|
||||||
|
<div style="display:none;top:33px;left:0;margin:0;" class="se2_layer_t_style">
|
||||||
|
<ul>
|
||||||
|
<li><button class="se2_t_style1" type="button"><span>표 스타일1</span></button></li>
|
||||||
|
<li><button class="se2_t_style2" type="button"><span>표 스타일2</span></button></li>
|
||||||
|
<li><button class="se2_t_style3" type="button"><span>표 스타일3</span></button></li>
|
||||||
|
<li><button class="se2_t_style4" type="button"><span>표 스타일4</span></button></li>
|
||||||
|
<li><button class="se2_t_style5" type="button"><span>표 스타일5</span></button></li>
|
||||||
|
<li><button class="se2_t_style6" type="button"><span>표 스타일6</span></button></li>
|
||||||
|
<li><button class="se2_t_style7" type="button"><span>표 스타일7</span></button></li>
|
||||||
|
<li><button class="se2_t_style8" type="button"><span>표 스타일8</span></button></li>
|
||||||
|
<li><button class="se2_t_style9" type="button"><span>표 스타일9</span></button></li>
|
||||||
|
<li><button class="se2_t_style10" type="button"><span>표 스타일10</span></button></li>
|
||||||
|
<li><button class="se2_t_style11" type="button"><span>표 스타일11</span></button></li>
|
||||||
|
<li><button class="se2_t_style12" type="button"><span>표 스타일12</span></button></li>
|
||||||
|
<li><button class="se2_t_style13" type="button"><span>표 스타일13</span></button></li>
|
||||||
|
<li><button class="se2_t_style14" type="button"><span>표 스타일14</span></button></li>
|
||||||
|
<li><button class="se2_t_style15" type="button"><span>표 스타일15</span></button></li>
|
||||||
|
<li><button class="se2_t_style16" type="button"><span>표 스타일16</span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //layer:표스타일 -->
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<div style="display:none" class="se2_btn_area">
|
||||||
|
<button class="se2_btn_save" type="button"><span>My 리뷰저장</span></button>
|
||||||
|
</div>
|
||||||
|
<div class="se2_qdim0 husky_se2m_tbl_qe_dim1"></div>
|
||||||
|
<div class="se2_qdim4 husky_se2m_tbl_qe_dim2"></div>
|
||||||
|
<div class="se2_qdim6c husky_se2m_tbl_qe_dim_del_col"></div>
|
||||||
|
<div class="se2_qdim6r husky_se2m_tbl_qe_dim_del_row"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--//@lazyload_html-->
|
||||||
|
<!-- //표/글양식 간단편집기 -->
|
||||||
|
<!-- 이미지 간단편집기 -->
|
||||||
|
<!--@lazyload_html qe_image-->
|
||||||
|
<div class="q_img_wrap">
|
||||||
|
<button class="_fold se2_qmax q_open_img_full" style="position:absolute;display:none;top:240px;left:210px;z-index:30;" title="최대화" type="button"><span>퀵에디터최대화</span></button>
|
||||||
|
<div class="_full se2_qeditor se2_table_set" style="position:absolute;display:none;top:140px;left:450px;z-index:30;">
|
||||||
|
<div class="se2_qbar q_dragable"><span class="se2_qmini"><button title="최소화" class="q_open_img_fold"><span>퀵에디터최소화</span></button></span></div>
|
||||||
|
<div class="se2_qbody0">
|
||||||
|
<div class="se2_qbody">
|
||||||
|
<div class="se2_qe10">
|
||||||
|
<label for="se2_swidth">가로</label><input type="text" class="input_ty1 widthimg" name="" id="se2_swidth" value="1024"><label class="se2_sheight" for="se2_sheight">세로</label><input type="text" class="input_ty1 heightimg" name="" id="se2_sheight" value="768"><button class="se2_sreset" type="button"><span>초기화</span></button>
|
||||||
|
<div class="se2_qe10_1"><input type="checkbox" name="" class="se2_srate" id="se2_srate"><label for="se2_srate">가로 세로 비율 유지</label></div>
|
||||||
|
</div>
|
||||||
|
<div class="se2_qe11">
|
||||||
|
<dl class="se2_qe11_1">
|
||||||
|
<dt><label for="se2_b_width2">테두리두께</label></dt>
|
||||||
|
<dd class="se2_numberStepper"><input type="text" class="input_ty1 input bordersize" value="1" maxlength="2" name="" id="se2_b_width2" readonly="readonly">
|
||||||
|
<button class="se2_add plus" type="button"><span>1px 더하기</span></button>
|
||||||
|
<button class="se2_del minus" type="button"><span>1px 빼기</span></button>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<dl class="se2_qe11_2">
|
||||||
|
<dt>테두리 색</dt>
|
||||||
|
<dd><span class="se2_pre_color"><button style="background:#000000;" type="button" class="husky_se2m_img_qe_bgcolor_btn"><span>색찾기</span></button></span>
|
||||||
|
<!-- layer:테두리 색 -->
|
||||||
|
<div style="display:none;position:absolute;top:20px;left:-209px;" class="se2_layer se2_b_t_b1">
|
||||||
|
<div class="se2_in_layer husky_se2m_img_qe_bg_paletteHolder">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //layer:테두리 색 -->
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<dl class="se2_qe12">
|
||||||
|
<dt>정렬</dt>
|
||||||
|
<dd><button title="정렬없음" class="se2_align0" type="button"><span>정렬없음</span></button><button title="좌측정렬" class="se2_align1 left" type="button"><span>좌측정렬</span></button><button title="우측정렬" class="se2_align2 right" type="button"><span>우측정렬</span></button>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<button class="se2_highedit" type="button"><span>고급편집</span></button>
|
||||||
|
<div class="se2_qdim0"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--//@lazyload_html-->
|
||||||
|
<!-- 이미지 간단편집기 -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //입력 -->
|
||||||
|
<!-- 입력창조절/ 모드전환 -->
|
||||||
|
<div class="se2_conversion_mode">
|
||||||
|
<button type="button" class="se2_inputarea_controller husky_seditor_editingArea_verticalResizer" title="입력창 크기 조절"><span>입력창 크기 조절</span></button>
|
||||||
|
<ul class="se2_converter">
|
||||||
|
<li class="active"><button type="button" class="se2_to_editor"><span>Editor</span></button></li>
|
||||||
|
<li><button type="button" class="se2_to_html"><span>HTML</span></button></li>
|
||||||
|
<li><button type="button" class="se2_to_text"><span>TEXT</span></button></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //입력창조절/ 모드전환 -->
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- SE2 Markup End -->
|
||||||
|
|
||||||
|
<!--Example Start-->
|
||||||
|
<div id="se2_sample" style="margin:10px 0;">
|
||||||
|
<input type="button" onclick="pasteHTML();" value="본문에 내용 넣기" />
|
||||||
|
<input type="button" onclick="showHTML();" value="본문 내용 가져오기" />
|
||||||
|
<input type="button" onclick="submitContents();" value="서버로 내용 전송" />
|
||||||
|
<input type="button" onclick="setDefaultFont();" value="기본 폰트 지정하기 (궁서_24)" />
|
||||||
|
<form action="sample.php" method="post">
|
||||||
|
<textarea name="ir1" id="ir1" rows="10" cols="100" style="width:766px; height:412px; display:none;">
|
||||||
|
<p>글 수정시 여기에 값을 넣어주면 됩니다.</p>
|
||||||
|
</textarea>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
if(window.frameElement){
|
||||||
|
jindo.$("se2_sample").style.display = "none";
|
||||||
|
}else{
|
||||||
|
var oEditor = createSEditor2(jindo.$("ir1"), {
|
||||||
|
bUseToolbar : true, // 툴바 사용 여부 (true:사용/ false:사용하지 않음)
|
||||||
|
bUseVerticalResizer : true, // 입력창 크기 조절바 사용 여부 (true:사용/ false:사용하지 않음)
|
||||||
|
bUseModeChanger : true, // 모드 탭(Editor | HTML | TEXT) 사용 여부 (true:사용/ false:사용하지 않음)
|
||||||
|
//aAdditionalFontList : [["MS UI Gothic", "MS UI Gothic"], ["Comic Sans MS", "Comic Sans MS"],["TEST","TEST"]], // 추가 글꼴 목록
|
||||||
|
fOnBeforeUnload : function(){
|
||||||
|
//예제 코드
|
||||||
|
//return "내용이 변경되었습니다.";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
oEditor.run({
|
||||||
|
fnOnAppReady: function(){
|
||||||
|
//예제 코드
|
||||||
|
//oEditor.exec("PASTE_HTML", ["로딩이 완료된 후에 본문에 삽입되는 text입니다."]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function pasteHTML() {
|
||||||
|
var sHTML = "<span style='color:#FF0000;'>이미지도 같은 방식으로 삽입합니다.<\/span>";
|
||||||
|
oEditor.exec("PASTE_HTML", [sHTML]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function showHTML() {
|
||||||
|
var sHTML = oEditor.getIR();
|
||||||
|
alert(sHTML);
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitContents() {
|
||||||
|
oEditor.exec("UPDATE_CONTENTS_FIELD"); // 에디터의 내용이 textarea에 적용됩니다.
|
||||||
|
|
||||||
|
// 에디터의 내용에 대한 값 검증은 이곳에서 document.getElementById("ir1").value를 이용해서 처리하면 됩니다.
|
||||||
|
jindo.$("ir1").form.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function setDefaultFont() {
|
||||||
|
var sDefaultFont = '궁서';
|
||||||
|
var nFontSize = 24;
|
||||||
|
oEditor.setDefaultFont(sDefaultFont, nFontSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<!--Example End-->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,336 +1,175 @@
|
|||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
/* NHN Web Standardization Team (http://html.nhndesign.com/) HHJ 090226 */
|
/* NHN Web Standardization Team (http://html.nhndesign.com/) HHJ 090226 */
|
||||||
/* COMMON */
|
/* COMMON */
|
||||||
body, #smart_editor2, #smart_editor2 p, #smart_editor2 h1, #smart_editor2 h2, #smart_editor2 h3, #smart_editor2 h4, #smart_editor2 h5, #smart_editor2 h6, #smart_editor2 ul, #smart_editor2 ol, #smart_editor2 li, #smart_editor2 dl, #smart_editor2 dt, #smart_editor2 dd, #smart_editor2 table, #smart_editor2 th, #smart_editor2 td, #smart_editor2 form, #smart_editor2 fieldset, #smart_editor2 legend, #smart_editor2 input, #smart_editor2 textarea, #smart_editor2 button, #smart_editor2 select { margin: 0; padding: 0; }
|
body,#smart_editor2,#smart_editor2 p,#smart_editor2 h1,#smart_editor2 h2,#smart_editor2 h3,#smart_editor2 h4,#smart_editor2 h5,#smart_editor2 h6,#smart_editor2 ul,#smart_editor2 ol,#smart_editor2 li,#smart_editor2 dl,#smart_editor2 dt,#smart_editor2 dd,#smart_editor2 table,#smart_editor2 th,#smart_editor2 td,#smart_editor2 form,#smart_editor2 fieldset,#smart_editor2 legend,#smart_editor2 input,#smart_editor2 textarea,#smart_editor2 button,#smart_editor2 select{margin:0;padding:0}
|
||||||
|
#smart_editor2,#smart_editor2 h1,#smart_editor2 h2,#smart_editor2 h3,#smart_editor2 h4,#smart_editor2 h5,#smart_editor2 h6,#smart_editor2 input,#smart_editor2 textarea,#smart_editor2 select,#smart_editor2 table,#smart_editor2 button{font-family:'돋움',Dotum,Helvetica,sans-serif;font-size:12px;color:#666}
|
||||||
#smart_editor2, #smart_editor2 h1, #smart_editor2 h2, #smart_editor2 h3, #smart_editor2 h4, #smart_editor2 h5, #smart_editor2 h6, #smart_editor2 input, #smart_editor2 textarea, #smart_editor2 select, #smart_editor2 table, #smart_editor2 button { font-family: '돋움',Dotum,Helvetica,sans-serif; font-size: 12px; color: #666; }
|
#smart_editor2 span,#smart_editor2 em{font-size:12px}
|
||||||
|
#smart_editor2 em,#smart_editor2 address{font-style:normal}
|
||||||
#smart_editor2 span, #smart_editor2 em { font-size: 12px; }
|
#smart_editor2 img,#smart_editor2 fieldset{border:0}
|
||||||
|
#smart_editor2 hr{display:none}
|
||||||
#smart_editor2 em, #smart_editor2 address { font-style: normal; }
|
#smart_editor2 ol,#smart_editor2 ul{list-style:none}
|
||||||
|
#smart_editor2 button{border:0;background:none;font-size:11px;vertical-align:top;cursor:pointer}
|
||||||
#smart_editor2 img, #smart_editor2 fieldset { border: 0; }
|
#smart_editor2 button span,#smart_editor2 button em{visibility:hidden;overflow:hidden;position:absolute;top:0;font-size:0;line-height:0}
|
||||||
|
#smart_editor2 legend,#smart_editor2 .blind{visibility:hidden;overflow:hidden;position:absolute;width:0;height:0;font-size:0;line-height:0}
|
||||||
#smart_editor2 hr { display: none; }
|
#smart_editor2 .input_ty1{height:14px;margin:0;padding:4px 2px 0 4px;border:1px solid #c7c7c7;font-size:11px;color:#666}
|
||||||
|
#smart_editor2 a:link,#smart_editor2 a:visited,#smart_editor2 a:active,#smart_editor2 a:focus{color:#666;text-decoration:none}
|
||||||
#smart_editor2 ol, #smart_editor2 ul { list-style: none; }
|
#smart_editor2 a:hover{color:#666;text-decoration:underline}
|
||||||
|
|
||||||
#smart_editor2 button { border: 0; background: none; font-size: 11px; vertical-align: top; cursor: pointer; }
|
|
||||||
|
|
||||||
#smart_editor2 button span, #smart_editor2 button em { visibility: hidden; overflow: hidden; position: absolute; top: 0; font-size: 0; line-height: 0; }
|
|
||||||
|
|
||||||
#smart_editor2 legend, #smart_editor2 .blind { visibility: hidden; overflow: hidden; position: absolute; width: 0; height: 0; font-size: 0; line-height: 0; }
|
|
||||||
|
|
||||||
#smart_editor2 .input_ty1 { height: 14px; margin: 0; padding: 4px 2px 0 4px; border: 1px solid #c7c7c7; font-size: 11px; color: #666; }
|
|
||||||
|
|
||||||
#smart_editor2 a:link, #smart_editor2 a:visited, #smart_editor2 a:active, #smart_editor2 a:focus { color: #666; text-decoration: none; }
|
|
||||||
|
|
||||||
#smart_editor2 a:hover { color: #666; text-decoration: underline; }
|
|
||||||
|
|
||||||
/* LAYOUT */
|
/* LAYOUT */
|
||||||
#smart_editor2 .se2_header { margin: 10px 0 29px 0; }
|
#smart_editor2 .se2_header{margin:10px 0 29px 0}
|
||||||
|
#smart_editor2 .se2_bi{float:left;width:93px;height:20px;margin:0;padding:0;background:url("../img/ko_KR/btn_set.png?130306") -343px -358px no-repeat;font-size:0;line-height:0;text-indent:-10000px;vertical-align:middle}
|
||||||
#smart_editor2 .se2_bi { float: left; width: 93px; height: 20px; margin: 0; padding: 0; background: url("../img/ko_KR/btn_set.png?130306") -343px -358px no-repeat; font-size: 0; line-height: 0; text-indent: -10000px; vertical-align: middle; }
|
#smart_editor2 .se2_allhelp{display:inline-block;width:18px;height:18px;padding:0;background:url("../img/ko_KR/btn_set.png?130306") -437px -358px no-repeat;font-size:0;line-height:0;text-indent:-10000px;vertical-align:middle}
|
||||||
|
#smart_editor2 #smart_editor2_content{border:1px solid #b5b5b5}
|
||||||
#smart_editor2 .se2_allhelp { display: inline-block; width: 18px; height: 18px; padding: 0; background: url("../img/ko_KR/btn_set.png?130306") -437px -358px no-repeat; font-size: 0; line-height: 0; text-indent: -10000px; vertical-align: middle; }
|
#smart_editor2 .se2_tool{overflow:visible;position:relative;z-index:25}
|
||||||
|
|
||||||
#smart_editor2 #smart_editor2_content { border: 1px solid #b5b5b5; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_tool { overflow: visible; position: relative; z-index: 25; }
|
|
||||||
|
|
||||||
/* EDITINGAREA */
|
/* EDITINGAREA */
|
||||||
#smart_editor2 .se2_input_area { position: relative; z-index: 22; height: 400px; margin: 0; padding: 0; *zoom: 1; }
|
#smart_editor2 .se2_input_area{position:relative;z-index:22;height:400px;margin:0;padding:0;*zoom:1}
|
||||||
|
#smart_editor2 .se2_input_wysiwyg,#smart_editor2 .se2_input_syntax{display:block;overflow:auto;width:100%;height:100%;margin:0;*margin:-1px 0 0 0;border:0}
|
||||||
#smart_editor2 .se2_input_wysiwyg, #smart_editor2 .se2_input_syntax { display: block; overflow: auto; width: 100%; height: 100%; margin: 0; *margin: -1px 0 0 0; border: 0; }
|
|
||||||
|
|
||||||
/* EDITINGMODE */
|
/* EDITINGMODE */
|
||||||
#smart_editor2 .se2_conversion_mode { position: relative; height: 15px; padding-top: 1px; border-top: 1px solid #b5b5b5; background: url("../img/icon_set.gif") 0 -896px repeat-x; }
|
#smart_editor2 .se2_conversion_mode{position:relative;height:15px;padding-top:1px;border-top:1px solid #b5b5b5;background:url("../img/icon_set.gif") 0 -896px repeat-x}
|
||||||
|
#smart_editor2 .se2_inputarea_controller{display:block;clear:both;position:relative;width:100%;height:15px;text-align:center;cursor:n-resize}
|
||||||
#smart_editor2 .se2_inputarea_controller { display: block; clear: both; position: relative; width: 100%; height: 15px; text-align: center; cursor: n-resize; }
|
#smart_editor2 .se2_inputarea_controller span,#smart_editor2 .controller_on span{background:url("../img/ico_extend.png") no-repeat}
|
||||||
|
#smart_editor2 .se2_inputarea_controller span{position:static;display:inline-block;visibility:visible;overflow:hidden;height:15px;padding-left:11px;background-position:0 2px;color:#888;font-size:11px;letter-spacing:-1px;line-height:16px;white-space:nowrap}
|
||||||
#smart_editor2 .se2_inputarea_controller span, #smart_editor2 .controller_on span { background: url("../img/ico_extend.png") no-repeat; }
|
* + html #smart_editor2 .se2_inputarea_controller span{line-height:14px}
|
||||||
|
#smart_editor2 .controller_on span{background-position:0 -21px;color:#249c04}
|
||||||
#smart_editor2 .se2_inputarea_controller span { position: static; display: inline-block; visibility: visible; overflow: hidden; height: 15px; padding-left: 11px; background-position: 0 2px; color: #888; font-size: 11px; letter-spacing: -1px; line-height: 16px; white-space: nowrap; }
|
#smart_editor2 .ly_controller{display:block;position:absolute;bottom:2px;left:50%;width:287px;margin-left:-148px;padding:8px 0 7px 9px;border:1px solid #827f7c;background:#fffdef}
|
||||||
|
#smart_editor2 .ly_controller p{color:#666;font-size:11px;letter-spacing:-1px;line-height:11px}
|
||||||
* + html #smart_editor2 .se2_inputarea_controller span { line-height: 14px; }
|
#smart_editor2 .ly_controller .bt_clse,#smart_editor2 .ly_controller .ic_arr{position:absolute;background:url("../img/ico_extend.png") no-repeat}
|
||||||
|
#smart_editor2 .ly_controller .bt_clse{top:5px;right:4px;width:14px;height:15px;background-position:1px -43px}
|
||||||
#smart_editor2 .controller_on span { background-position: 0 -21px; color: #249c04; }
|
#smart_editor2 .ly_controller .ic_arr{top:25px;left:50%;width:10px;height:6px;margin-left:-5px;background-position:0 -65px}
|
||||||
|
#smart_editor2 .se2_converter{float:left;position:absolute;top:-1px;right:3px;z-index:20}
|
||||||
#smart_editor2 .ly_controller { display: block; position: absolute; bottom: 2px; left: 50%; width: 287px; margin-left: -148px; padding: 8px 0 7px 9px; border: 1px solid #827f7c; background: #fffdef; }
|
#smart_editor2 .se2_converter li{float:left}
|
||||||
|
#smart_editor2 .se2_converter .se2_to_editor{width:59px;height:15px;background:url("../img/ko_KR/btn_set.png?130306") 0 -85px no-repeat;vertical-align:top}
|
||||||
#smart_editor2 .ly_controller p { color: #666; font-size: 11px; letter-spacing: -1px; line-height: 11px; }
|
#smart_editor2 .se2_converter .se2_to_html{width:59px;height:15px;background:url("../img/ko_KR/btn_set.png?130306") -59px -70px no-repeat;vertical-align:top}
|
||||||
|
#smart_editor2 .se2_converter .se2_to_text{width:60px;height:15px;background:url("../img/ko_KR/btn_set.png?130306") -417px -466px no-repeat;vertical-align:top}
|
||||||
#smart_editor2 .ly_controller .bt_clse, #smart_editor2 .ly_controller .ic_arr { position: absolute; background: url("../img/ico_extend.png") no-repeat; }
|
#smart_editor2 .se2_converter .active .se2_to_editor{width:59px;height:15px;background:url("../img/ko_KR/btn_set.png?130306") 0 -70px no-repeat;vertical-align:top}
|
||||||
|
#smart_editor2 .se2_converter .active .se2_to_html{width:59px;height:15px;background:url("../img/ko_KR/btn_set.png?130306") -59px -85px no-repeat;vertical-align:top}
|
||||||
#smart_editor2 .ly_controller .bt_clse { top: 5px; right: 4px; width: 14px; height: 15px; background-position: 1px -43px; }
|
#smart_editor2 .se2_converter .active .se2_to_text{width:60px;height:15px;background:url("../img/ko_KR/btn_set.png?130306") -417px -481px no-repeat;vertical-align:top}
|
||||||
|
|
||||||
#smart_editor2 .ly_controller .ic_arr { top: 25px; left: 50%; width: 10px; height: 6px; margin-left: -5px; background-position: 0 -65px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_converter { float: left; position: absolute; top: -1px; right: 3px; z-index: 20; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_converter li { float: left; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_converter .se2_to_editor { width: 59px; height: 15px; background: url("../img/ko_KR/btn_set.png?130306") 0 -85px no-repeat; vertical-align: top; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_converter .se2_to_html { width: 59px; height: 15px; background: url("../img/ko_KR/btn_set.png?130306") -59px -70px no-repeat; vertical-align: top; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_converter .se2_to_text { width: 60px; height: 15px; background: url("../img/ko_KR/btn_set.png?130306") -417px -466px no-repeat; vertical-align: top; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_converter .active .se2_to_editor { width: 59px; height: 15px; background: url("../img/ko_KR/btn_set.png?130306") 0 -70px no-repeat; vertical-align: top; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_converter .active .se2_to_html { width: 59px; height: 15px; background: url("../img/ko_KR/btn_set.png?130306") -59px -85px no-repeat; vertical-align: top; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_converter .active .se2_to_text { width: 60px; height: 15px; background: url("../img/ko_KR/btn_set.png?130306") -417px -481px no-repeat; vertical-align: top; }
|
|
||||||
|
|
||||||
/* EDITINGAREA_HTMLSRC */
|
/* EDITINGAREA_HTMLSRC */
|
||||||
#smart_editor2 .off .ico_btn, #smart_editor2 .off .se2_more, #smart_editor2 .off .se2_more2, #smart_editor2 .off .se2_font_family, #smart_editor2 .off .se2_font_size, #smart_editor2 .off .se2_bold, #smart_editor2 .off .se2_underline, #smart_editor2 .off .se2_italic, #smart_editor2 .off .se2_tdel, #smart_editor2 .off .se2_fcolor, #smart_editor2 .off .se2_fcolor_more, #smart_editor2 .off .se2_bgcolor, #smart_editor2 .off .se2_bgcolor_more, #smart_editor2 .off .se2_left, #smart_editor2 .off .se2_center, #smart_editor2 .off .se2_right, #smart_editor2 .off .se2_justify, #smart_editor2 .off .se2_ol, #smart_editor2 .off .se2_ul, #smart_editor2 .off .se2_indent, #smart_editor2 .off .se2_outdent, #smart_editor2 .off .se2_lineheight, #smart_editor2 .off .se2_del_style, #smart_editor2 .off .se2_blockquote, #smart_editor2 .off .se2_summary, #smart_editor2 .off .se2_footnote, #smart_editor2 .off .se2_url, #smart_editor2 .off .se2_emoticon, #smart_editor2 .off .se2_character, #smart_editor2 .off .se2_table, #smart_editor2 .off .se2_find, #smart_editor2 .off .se2_spelling, #smart_editor2 .off .se2_sup, #smart_editor2 .off .se2_sub, #smart_editor2 .off .se2_text_tool_more, #smart_editor2 .off .se2_new, #smart_editor2 .off .selected_color, #smart_editor2 .off .se2_lineSticker { -ms-filter: alpha(opacity=50); opacity: .5; cursor: default; filter: alpha(opacity=50); }
|
#smart_editor2 .off .ico_btn,#smart_editor2 .off .se2_more,#smart_editor2 .off .se2_more2,#smart_editor2 .off .se2_font_family,#smart_editor2 .off .se2_font_size,#smart_editor2 .off .se2_bold,#smart_editor2 .off .se2_underline,#smart_editor2 .off .se2_italic,#smart_editor2 .off .se2_tdel,#smart_editor2 .off .se2_fcolor,#smart_editor2 .off .se2_fcolor_more,#smart_editor2 .off .se2_bgcolor,#smart_editor2 .off .se2_bgcolor_more,#smart_editor2 .off .se2_left,#smart_editor2 .off .se2_center,#smart_editor2 .off .se2_right,#smart_editor2 .off .se2_justify,#smart_editor2 .off .se2_ol,#smart_editor2 .off .se2_ul,#smart_editor2 .off .se2_indent,#smart_editor2 .off .se2_outdent,#smart_editor2 .off .se2_lineheight,#smart_editor2 .off .se2_del_style,#smart_editor2 .off .se2_blockquote,#smart_editor2 .off .se2_summary,#smart_editor2 .off .se2_footnote,#smart_editor2 .off .se2_url,#smart_editor2 .off .se2_emoticon,#smart_editor2 .off .se2_character,#smart_editor2 .off .se2_table,#smart_editor2 .off .se2_find,#smart_editor2 .off .se2_spelling,#smart_editor2 .off .se2_sup,#smart_editor2 .off .se2_sub,#smart_editor2 .off .se2_text_tool_more,#smart_editor2 .off .se2_new,#smart_editor2 .off .selected_color,#smart_editor2 .off .se2_lineSticker{-ms-filter:alpha(opacity=50);opacity:.5;cursor:default;filter:alpha(opacity=50)}
|
||||||
|
|
||||||
/* LAYER */
|
/* LAYER */
|
||||||
#smart_editor2 .se2_text_tool .se2_layer { display: none; float: left; position: absolute; top: 20px; left: 0; z-index: 50; margin: 0; padding: 0; border: 1px solid #bcbbbb; background: #fafafa; }
|
#smart_editor2 .se2_text_tool .se2_layer{display:none;float:left;position:absolute;top:20px;left:0;z-index:50;margin:0;padding:0;border:1px solid #bcbbbb;background:#fafafa}
|
||||||
|
#smart_editor2 .se2_text_tool li.active{z-index:50}
|
||||||
#smart_editor2 .se2_text_tool li.active { z-index: 50; }
|
#smart_editor2 .se2_text_tool .active .se2_layer{display:block}
|
||||||
|
#smart_editor2 .se2_text_tool .active li .se2_layer{display:none}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_layer { display: block; }
|
#smart_editor2 .se2_text_tool .active .active .se2_layer{display:block}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_layer .se2_in_layer{float:left;margin:0;padding:0;border:1px solid #fff;background:#fafafa}
|
||||||
#smart_editor2 .se2_text_tool .active li .se2_layer { display: none; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .active .se2_layer { display: block; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_layer .se2_in_layer { float: left; margin: 0; padding: 0; border: 1px solid #fff; background: #fafafa; }
|
|
||||||
|
|
||||||
/* TEXT_TOOLBAR */
|
/* TEXT_TOOLBAR */
|
||||||
#smart_editor2 .se2_text_tool { position: relative; clear: both; z-index: 30; padding: 4px 0 4px 3px; background: #f4f4f4 url("../img/bg_text_tool.gif") 0 0 repeat-x; border-bottom: 1px solid #b5b5b5; *zoom: 1; }
|
#smart_editor2 .se2_text_tool{position:relative;clear:both;z-index:30;padding:4px 0 4px 3px;background:#f4f4f4 url("../img/bg_text_tool.gif") 0 0 repeat-x;border-bottom:1px solid #b5b5b5;*zoom:1}
|
||||||
|
#smart_editor2 .se2_text_tool:after{content:"";display:block;clear:both}
|
||||||
#smart_editor2 .se2_text_tool:after { content: ""; display: block; clear: both; }
|
#smart_editor2 .se2_text_tool ul{float:left;display:inline;margin-right:3px;padding-left:1px;white-space:nowrap}
|
||||||
|
#smart_editor2 .se2_text_tool li{_display:inline;float:left;position:relative;z-index:30}
|
||||||
#smart_editor2 .se2_text_tool ul { float: left; display: inline; margin-right: 3px; padding-left: 1px; white-space: nowrap; }
|
#smart_editor2 .se2_text_tool button,#smart_editor2 .se2_multy .se2_icon{width:21px;height:21px;background:url("../img/ko_KR/text_tool_set.png?140317") no-repeat;vertical-align:top}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_font_type{position:relative}
|
||||||
#smart_editor2 .se2_text_tool li { _display: inline; float: left; position: relative; z-index: 30; }
|
#smart_editor2 .se2_text_tool .se2_font_type li{margin-left:3px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_font_type button{text-align:left}
|
||||||
#smart_editor2 .se2_text_tool button, #smart_editor2 .se2_multy .se2_icon { width: 21px; height: 21px; background: url("../img/ko_KR/text_tool_set.png?140317") no-repeat; vertical-align: top; }
|
#smart_editor2 .se2_text_tool .se2_font_type button.se2_font_family span,#smart_editor2 .se2_text_tool .se2_font_type button.se2_font_size span{display:inline-block;visibility:visible;position:static;width:52px;height:20px;padding:0 0 0 6px;font-size:12px;line-height:20px;*line-height:22px;color:#333;*zoom:1}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_multy{position:absolute;top:0;right:0;padding-left:0;margin-right:0;white-space:nowrap;border-left:1px solid #e0dedf}
|
||||||
#smart_editor2 .se2_text_tool .se2_font_type { position: relative; }
|
#smart_editor2 .se2_text_tool .se2_multy .se2_mn{float:left;white-space:nowrap}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_multy button{background-image:none;width:47px}
|
||||||
#smart_editor2 .se2_text_tool .se2_font_type li { margin-left: 3px; }
|
#smart_editor2 .se2_text_tool .se2_multy .se2_icon{display:inline-block;visibility:visible;overflow:visible;position:static;width:16px;height:29px;margin:-1px 2px 0 -1px;background-position:0 -132px;line-height:30px;vertical-align:top}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_multy button,#smart_editor2 .se2_text_tool .se2_multy button span{height:29px;line-height:29px}
|
||||||
#smart_editor2 .se2_text_tool .se2_font_type button { text-align: left; }
|
#smart_editor2 .se2_text_tool .se2_map .se2_icon{background-position:-29px -132px}
|
||||||
|
#smart_editor2 .se2_text_tool button span.se2_mntxt{display:inline-block;visibility:visible;overflow:visible;_overflow-y:hidden;position:relative;*margin-right:-1px;width:auto;height:29px;font-weight:normal;font-size:11px;line-height:30px;*line-height:29px;_line-height:30px;color:#444;letter-spacing:-1px;vertical-align:top}
|
||||||
#smart_editor2 .se2_text_tool .se2_font_type button.se2_font_family span, #smart_editor2 .se2_text_tool .se2_font_type button.se2_font_size span { display: inline-block; visibility: visible; position: static; width: 52px; height: 20px; padding: 0 0 0 6px; font-size: 12px; line-height: 20px; *line-height: 22px; color: #333; *zoom: 1; }
|
#smart_editor2 .se2_text_tool .se2_multy .se2_photo{margin-right:1px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_multy .hover .ico_btn{background:#e8e8e8}
|
||||||
#smart_editor2 .se2_text_tool .se2_multy { position: absolute; top: 0; right: 0; padding-left: 0; margin-right: 0; white-space: nowrap; border-left: 1px solid #e0dedf; }
|
#smart_editor2 .se2_text_tool .se2_multy .se2_mn.hover{background:#e0dedf}
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_multy .se2_mn { float: left; white-space: nowrap; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_multy button { background-image: none; width: 47px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_multy .se2_icon { display: inline-block; visibility: visible; overflow: visible; position: static; width: 16px; height: 29px; margin: -1px 2px 0 -1px; background-position: 0 -132px; line-height: 30px; vertical-align: top; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_multy button, #smart_editor2 .se2_text_tool .se2_multy button span { height: 29px; line-height: 29px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_map .se2_icon { background-position: -29px -132px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool button span.se2_mntxt { display: inline-block; visibility: visible; overflow: visible; _overflow-y: hidden; position: relative; *margin-right: -1px; width: auto; height: 29px; font-weight: normal; font-size: 11px; line-height: 30px; *line-height: 29px; _line-height: 30px; color: #444; letter-spacing: -1px; vertical-align: top; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_multy .se2_photo { margin-right: 1px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_multy .hover .ico_btn { background: #e8e8e8; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_multy .se2_mn.hover { background: #e0dedf; }
|
|
||||||
|
|
||||||
/* TEXT_TOOLBAR : ROUNDING */
|
/* TEXT_TOOLBAR : ROUNDING */
|
||||||
#smart_editor2 ul li.first_child button span.tool_bg, #smart_editor2 ul li.last_child button span.tool_bg, #smart_editor2 ul li.single_child button span.tool_bg { visibility: visible; height: 21px; }
|
#smart_editor2 ul li.first_child button span.tool_bg,#smart_editor2 ul li.last_child button span.tool_bg,#smart_editor2 ul li.single_child button span.tool_bg{visibility:visible;height:21px}
|
||||||
|
#smart_editor2 ul li.first_child button span.tool_bg{left:-1px;width:3px;background:url("../img/bg_button_left.gif?20121228") no-repeat}
|
||||||
#smart_editor2 ul li.first_child button span.tool_bg { left: -1px; width: 3px; background: url("../img/bg_button_left.gif?20121228") no-repeat; }
|
#smart_editor2 ul li.last_child button span.tool_bg{right:0px;_right:-1px;width:2px;background:url("../img/bg_button_right.gif") no-repeat}
|
||||||
|
#smart_editor2 ul li.single_child{padding-right:1px}
|
||||||
#smart_editor2 ul li.last_child button span.tool_bg { right: 0px; _right: -1px; width: 2px; background: url("../img/bg_button_right.gif") no-repeat; }
|
#smart_editor2 ul li.single_child button span.tool_bg{left:0;background:url("../img/bg_button.gif?20121228") no-repeat;width:22px}
|
||||||
|
#smart_editor2 div.se2_text_tool ul li.hover button span.tool_bg{background-position:0 -21px}
|
||||||
#smart_editor2 ul li.single_child { padding-right: 1px; }
|
#smart_editor2 div.se2_text_tool ul li.active button span.tool_bg,#smart_editor2 div.se2_text_tool ul li.active li.active button span.tool_bg{background-position:0 -42px}
|
||||||
|
#smart_editor2 div.se2_text_tool ul li.active li button span.tool_bg{background-position:0 0}
|
||||||
#smart_editor2 ul li.single_child button span.tool_bg { left: 0; background: url("../img/bg_button.gif?20121228") no-repeat; width: 22px; }
|
|
||||||
|
|
||||||
#smart_editor2 div.se2_text_tool ul li.hover button span.tool_bg { background-position: 0 -21px; }
|
|
||||||
|
|
||||||
#smart_editor2 div.se2_text_tool ul li.active button span.tool_bg, #smart_editor2 div.se2_text_tool ul li.active li.active button span.tool_bg { background-position: 0 -42px; }
|
|
||||||
|
|
||||||
#smart_editor2 div.se2_text_tool ul li.active li button span.tool_bg { background-position: 0 0; }
|
|
||||||
|
|
||||||
/* TEXT_TOOLBAR : SUB_MENU */
|
/* TEXT_TOOLBAR : SUB_MENU */
|
||||||
#smart_editor2 .se2_sub_text_tool { display: none; position: absolute; top: 20px; left: 0; z-index: 40; width: auto; height: 29px; padding: 0 4px 0 0; border: 1px solid #b5b5b5; border-top: 1px solid #9a9a9a; background: #f4f4f4; }
|
#smart_editor2 .se2_sub_text_tool{display:none;position:absolute;top:20px;left:0;z-index:40;width:auto;height:29px;padding:0 4px 0 0;border:1px solid #b5b5b5;border-top:1px solid #9a9a9a;background:#f4f4f4}
|
||||||
|
#smart_editor2 .active .se2_sub_text_tool{display:block}
|
||||||
#smart_editor2 .active .se2_sub_text_tool { display: block; }
|
#smart_editor2 .se2_sub_text_tool ul{float:left;height:25px;margin:0;padding:4px 0 0 4px}
|
||||||
|
|
||||||
#smart_editor2 .se2_sub_text_tool ul { float: left; height: 25px; margin: 0; padding: 4px 0 0 4px; }
|
|
||||||
|
|
||||||
/* TEXT_TOOLBAR : SUB_MENU_SIZE */
|
/* TEXT_TOOLBAR : SUB_MENU_SIZE */
|
||||||
#smart_editor2 .se2_sub_step1 { width: 88px; }
|
#smart_editor2 .se2_sub_step1{width:88px}
|
||||||
|
#smart_editor2 .se2_sub_step2{width:199px}
|
||||||
#smart_editor2 .se2_sub_step2 { width: 199px; }
|
#smart_editor2 .se2_sub_step2_1{width:178px}
|
||||||
|
|
||||||
#smart_editor2 .se2_sub_step2_1 { width: 178px; }
|
|
||||||
|
|
||||||
/* TEXT_TOOLBAR : BUTTON */
|
/* TEXT_TOOLBAR : BUTTON */
|
||||||
#smart_editor2 .se2_text_tool .se2_font_family { width: 70px; height: 21px; background-position: 0 -10px; }
|
#smart_editor2 .se2_text_tool .se2_font_family{width:70px;height:21px;background-position:0 -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_font_family{background-position:0 -72px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_font_family { background-position: 0 -72px; }
|
#smart_editor2 .se2_text_tool .active .se2_font_family{background-position:0 -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_font_size{width:45px;height:21px;background-position:-70px -10px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_font_family { background-position: 0 -103px; }
|
#smart_editor2 .se2_text_tool .hover .se2_font_size{background-position:-70px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_font_size{background-position:-70px -103px}
|
||||||
#smart_editor2 .se2_text_tool .se2_font_size { width: 45px; height: 21px; background-position: -70px -10px; }
|
#smart_editor2 .se2_text_tool .se2_bold{background-position:-115px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_bold{background-position:-115px -72px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_font_size { background-position: -70px -72px; }
|
#smart_editor2 .se2_text_tool .active .se2_bold{background-position:-115px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_underline{background-position:-136px -10px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_font_size { background-position: -70px -103px; }
|
#smart_editor2 .se2_text_tool .hover .se2_underline{background-position:-136px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_underline{background-position:-136px -103px}
|
||||||
#smart_editor2 .se2_text_tool .se2_bold { background-position: -115px -10px; }
|
#smart_editor2 .se2_text_tool .se2_italic{background-position:-157px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_italic{background-position:-157px -72px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_bold { background-position: -115px -72px; }
|
#smart_editor2 .se2_text_tool .active .se2_italic{background-position:-157px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_tdel{background-position:-178px -10px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_bold { background-position: -115px -103px; }
|
#smart_editor2 .se2_text_tool .hover .se2_tdel{background-position:-178px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_tdel{background-position:-178px -103px}
|
||||||
#smart_editor2 .se2_text_tool .se2_underline { background-position: -136px -10px; }
|
#smart_editor2 .se2_text_tool .se2_fcolor{position:relative;background-position:-199px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_fcolor{background-position:-199px -72px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_underline { background-position: -136px -72px; }
|
#smart_editor2 .se2_text_tool .active .se2_fcolor{background-position:-199px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_fcolor_more{background-position:-220px -10px;width:10px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_underline { background-position: -136px -103px; }
|
#smart_editor2 .se2_text_tool .hover .se2_fcolor_more{background-position:-220px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_fcolor_more{background-position:-220px -103px}
|
||||||
#smart_editor2 .se2_text_tool .se2_italic { background-position: -157px -10px; }
|
#smart_editor2 .se2_text_tool .selected_color{position:absolute;top:14px;left:5px;width:11px;height:3px;font-size:0}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_ol,#smart_editor2 .se2_text_tool .active .se2_sub_text_tool .se2_ol{background-position:-345px -10px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_italic { background-position: -157px -72px; }
|
#smart_editor2 .se2_text_tool .se2_ul,#smart_editor2 .se2_text_tool .active .se2_sub_text_tool .se2_ul{background-position:-366px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_ol,#smart_editor2 .se2_text_tool .active .se2_sub_text_tool .hover .se2_ol{background-position:-345px -72px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_italic { background-position: -157px -103px; }
|
#smart_editor2 .se2_text_tool .hover .se2_ul,#smart_editor2 .se2_text_tool .active .se2_sub_text_tool .hover .se2_ul{background-position:-366px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_ol,#smart_editor2 .se2_text_tool .active .active .se2_ol{background-position:-345px -103px}
|
||||||
#smart_editor2 .se2_text_tool .se2_tdel { background-position: -178px -10px; }
|
#smart_editor2 .se2_text_tool .active .se2_ul,#smart_editor2 .se2_text_tool .active .active .se2_ul{background-position:-366px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_indent,#smart_editor2 .se2_text_tool .active .se2_sub_text_tool .se2_indent{background-position:-408px -10px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_tdel { background-position: -178px -72px; }
|
#smart_editor2 .se2_text_tool .se2_outdent,#smart_editor2 .se2_text_tool .active .se2_sub_text_tool .se2_outdent{background-position:-387px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_indent,#smart_editor2 .se2_text_tool .active .se2_sub_text_tool .hover .se2_indent{background-position:-408px -72px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_tdel { background-position: -178px -103px; }
|
#smart_editor2 .se2_text_tool .hover .se2_outdent,#smart_editor2 .se2_text_tool .active .se2_sub_text_tool .hover .se2_outdent{background-position:-387px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_indent,#smart_editor2 .se2_text_tool .active .active .se2_indent{background-position:-408px -103px}
|
||||||
#smart_editor2 .se2_text_tool .se2_fcolor { position: relative; background-position: -199px -10px; }
|
#smart_editor2 .se2_text_tool .active .se2_outdent,#smart_editor2 .se2_text_tool .active .active .se2_outdent{background-position:-387px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_lineheight{background-position:-429px -10px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_fcolor { background-position: -199px -72px; }
|
#smart_editor2 .se2_text_tool .hover .se2_lineheight{background-position:-429px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_lineheight{background-position:-429px -103px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_fcolor { background-position: -199px -103px; }
|
#smart_editor2 .se2_text_tool .se2_url{background-position:-513px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_url{background-position:-513px -72px}
|
||||||
#smart_editor2 .se2_text_tool .se2_fcolor_more { background-position: -220px -10px; width: 10px; }
|
#smart_editor2 .se2_text_tool .active .se2_url{background-position:-513px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_bgcolor{position:relative;background-position:-230px -10px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_fcolor_more { background-position: -220px -72px; }
|
#smart_editor2 .se2_text_tool .hover .se2_bgcolor{background-position:-230px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_bgcolor{background-position:-230px -103px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_fcolor_more { background-position: -220px -103px; }
|
#smart_editor2 .se2_text_tool .se2_bgcolor_more{background-position:-251px -10px;width:10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_bgcolor_more{background-position:-251px -72px}
|
||||||
#smart_editor2 .se2_text_tool .selected_color { position: absolute; top: 14px; left: 5px; width: 11px; height: 3px; font-size: 0; }
|
#smart_editor2 .se2_text_tool .active .se2_bgcolor_more{background-position:-251px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_left{background-position:-261px -10px}
|
||||||
#smart_editor2 .se2_text_tool .se2_ol, #smart_editor2 .se2_text_tool .active .se2_sub_text_tool .se2_ol { background-position: -345px -10px; }
|
#smart_editor2 .se2_text_tool .hover .se2_left{background-position:-261px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_left{background-position:-261px -103px}
|
||||||
#smart_editor2 .se2_text_tool .se2_ul, #smart_editor2 .se2_text_tool .active .se2_sub_text_tool .se2_ul { background-position: -366px -10px; }
|
#smart_editor2 .se2_text_tool .se2_center{background-position:-282px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_center{background-position:-282px -72px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_ol, #smart_editor2 .se2_text_tool .active .se2_sub_text_tool .hover .se2_ol { background-position: -345px -72px; }
|
#smart_editor2 .se2_text_tool .active .se2_center{background-position:-282px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_right{background-position:-303px -10px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_ul, #smart_editor2 .se2_text_tool .active .se2_sub_text_tool .hover .se2_ul { background-position: -366px -72px; }
|
#smart_editor2 .se2_text_tool .hover .se2_right{background-position:-303px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_right{background-position:-303px -103px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_ol, #smart_editor2 .se2_text_tool .active .active .se2_ol { background-position: -345px -103px; }
|
#smart_editor2 .se2_text_tool .se2_justify{background-position:-324px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_justify{background-position:-324px -72px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_ul, #smart_editor2 .se2_text_tool .active .active .se2_ul { background-position: -366px -103px; }
|
#smart_editor2 .se2_text_tool .active .se2_justify{background-position:-324px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_blockquote{background-position:-471px -10px}
|
||||||
#smart_editor2 .se2_text_tool .se2_indent, #smart_editor2 .se2_text_tool .active .se2_sub_text_tool .se2_indent { background-position: -408px -10px; }
|
#smart_editor2 .se2_text_tool .hover .se2_blockquote{background-position:-471px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_blockquote{background-position:-471px -103px}
|
||||||
#smart_editor2 .se2_text_tool .se2_outdent, #smart_editor2 .se2_text_tool .active .se2_sub_text_tool .se2_outdent { background-position: -387px -10px; }
|
#smart_editor2 .se2_text_tool .se2_character{background-position:-555px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_character{background-position:-555px -72px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_indent, #smart_editor2 .se2_text_tool .active .se2_sub_text_tool .hover .se2_indent { background-position: -408px -72px; }
|
#smart_editor2 .se2_text_tool .active .se2_character{background-position:-555px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_table{background-position:-576px -10px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_outdent, #smart_editor2 .se2_text_tool .active .se2_sub_text_tool .hover .se2_outdent { background-position: -387px -72px; }
|
#smart_editor2 .se2_text_tool .hover .se2_table{background-position:-576px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_table{background-position:-576px -103px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_indent, #smart_editor2 .se2_text_tool .active .active .se2_indent { background-position: -408px -103px; }
|
#smart_editor2 .se2_text_tool .se2_find{background-position:-597px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_find{background-position:-597px -72px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_outdent, #smart_editor2 .se2_text_tool .active .active .se2_outdent { background-position: -387px -103px; }
|
#smart_editor2 .se2_text_tool .active .se2_find{background-position:-597px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_sup{background-position:-660px -10px}
|
||||||
#smart_editor2 .se2_text_tool .se2_lineheight { background-position: -429px -10px; }
|
#smart_editor2 .se2_text_tool .hover .se2_sup{background-position:-660px -72px}
|
||||||
|
#smart_editor2 .se2_text_tool .active .se2_sup{background-position:-660px -103px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_lineheight { background-position: -429px -72px; }
|
#smart_editor2 .se2_text_tool .se2_sub{background-position:-681px -10px}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_sub{background-position:-681px -72px}
|
||||||
#smart_editor2 .se2_text_tool .active .se2_lineheight { background-position: -429px -103px; }
|
#smart_editor2 .se2_text_tool .active .se2_sub{background-position:-681px -103px}
|
||||||
|
#smart_editor2 .se2_text_tool .se2_text_tool_more{background-position:0 -41px;width:13px}
|
||||||
#smart_editor2 .se2_text_tool .se2_url { background-position: -513px -10px; }
|
#smart_editor2 .se2_text_tool .se2_text_tool_more span.tool_bg{background:none}
|
||||||
|
#smart_editor2 .se2_text_tool .hover .se2_text_tool_more{background-position:-13px -41px}
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_url { background-position: -513px -72px; }
|
#smart_editor2 .se2_text_tool .active .se2_text_tool_more{background-position:-26px -41px}
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_url { background-position: -513px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_bgcolor { position: relative; background-position: -230px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_bgcolor { background-position: -230px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_bgcolor { background-position: -230px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_bgcolor_more { background-position: -251px -10px; width: 10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_bgcolor_more { background-position: -251px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_bgcolor_more { background-position: -251px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_left { background-position: -261px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_left { background-position: -261px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_left { background-position: -261px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_center { background-position: -282px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_center { background-position: -282px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_center { background-position: -282px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_right { background-position: -303px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_right { background-position: -303px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_right { background-position: -303px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_justify { background-position: -324px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_justify { background-position: -324px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_justify { background-position: -324px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_blockquote { background-position: -471px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_blockquote { background-position: -471px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_blockquote { background-position: -471px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_character { background-position: -555px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_character { background-position: -555px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_character { background-position: -555px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_table { background-position: -576px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_table { background-position: -576px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_table { background-position: -576px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_find { background-position: -597px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_find { background-position: -597px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_find { background-position: -597px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_sup { background-position: -660px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_sup { background-position: -660px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_sup { background-position: -660px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_sub { background-position: -681px -10px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_sub { background-position: -681px -72px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_sub { background-position: -681px -103px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_text_tool_more { background-position: 0 -41px; width: 13px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .se2_text_tool_more span.tool_bg { background: none; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .hover .se2_text_tool_more { background-position: -13px -41px; }
|
|
||||||
|
|
||||||
#smart_editor2 .se2_text_tool .active .se2_text_tool_more { background-position: -26px -41px; }
|
|
||||||
@@ -1,34 +1,21 @@
|
|||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
/* NHN Web Standardization Team (http://html.nhndesign.com/) HHJ 090226 */
|
/* NHN Web Standardization Team (http://html.nhndesign.com/) HHJ 090226 */
|
||||||
/* COMMON */
|
/* COMMON */
|
||||||
body, .se2_inputarea { margin: 0; padding: 0; font-family: '돋움',Dotum,Helvetica,Sans-serif; font-size: 12px; line-height: 1.5; }
|
body,.se2_inputarea{margin:0;padding:0;font-family:'돋움',Dotum,Helvetica,Sans-serif;font-size:12px;line-height:1.5}
|
||||||
|
|
||||||
/* body,.se2_inputarea,.se2_inputarea th,.se2_inputarea td{margin:0;padding:0;font-family:'돋움',Dotum,Helvetica,Sans-serif;font-size:12px;line-height:1.5;color:#666} */
|
/* body,.se2_inputarea,.se2_inputarea th,.se2_inputarea td{margin:0;padding:0;font-family:'돋움',Dotum,Helvetica,Sans-serif;font-size:12px;line-height:1.5;color:#666} */
|
||||||
.se2_inputarea p, .se2_inputarea br { margin: 0; padding: 0; }
|
.se2_inputarea p,.se2_inputarea br{margin:0;padding:0}
|
||||||
|
.se2_inputarea{margin:15px;word-wrap:break-word;*word-wrap:normal;*word-break:break-all}
|
||||||
.se2_inputarea { margin: 15px; word-wrap: break-word; *word-wrap: normal; *word-break: break-all; }
|
.se2_inputarea td{word-break:break-all}
|
||||||
|
.se2_inputarea_890{width:741px;margin:20px 0 10px 64px}
|
||||||
.se2_inputarea_890 { width: 741px; margin: 20px 0 10px 64px; }
|
.se2_inputarea_698{width:548px;margin:20px 0 10px 64px}
|
||||||
|
|
||||||
.se2_inputarea_698 { width: 548px; margin: 20px 0 10px 64px; }
|
|
||||||
|
|
||||||
/* TEXT_TOOLBAR : QUOTE */
|
/* TEXT_TOOLBAR : QUOTE */
|
||||||
.se2_quote1 { margin: 0 0 30px 20px; padding: 0 8px; border-left: 2px solid #ccc; color: #888; }
|
.se2_quote1{margin:0 0 30px 20px;padding:0 8px;border-left:2px solid #ccc;color:#888}
|
||||||
|
.se2_quote2{margin:0 0 30px 13px;padding:0 8px 0 16px;background:url("../img/bg_quote2.gif") 0 3px no-repeat;color:#888}
|
||||||
.se2_quote2 { margin: 0 0 30px 13px; padding: 0 8px 0 16px; background: url("../img/bg_quote2.gif") 0 3px no-repeat; color: #888; }
|
.se2_quote3{margin:0 0 30px;padding:12px 10px 11px;border:1px dashed #ccc;color:#888}
|
||||||
|
.se2_quote4{margin:0 0 30px;padding:12px 10px 11px;border:1px dashed #66b246;color:#888}
|
||||||
.se2_quote3 { margin: 0 0 30px; padding: 12px 10px 11px; border: 1px dashed #ccc; color: #888; }
|
.se2_quote5{margin:0 0 30px;padding:12px 10px 11px;border:1px dashed #ccc;background:#fafafa;color:#888}
|
||||||
|
.se2_quote6{margin:0 0 30px;padding:12px 10px 11px;border:1px solid #e5e5e5;color:#888}
|
||||||
.se2_quote4 { margin: 0 0 30px; padding: 12px 10px 11px; border: 1px dashed #66b246; color: #888; }
|
.se2_quote7{margin:0 0 30px;padding:12px 10px 11px;border:1px solid #66b246;color:#888}
|
||||||
|
.se2_quote8{margin:0 0 30px;padding:12px 10px 11px;border:1px solid #e5e5e5;background:#fafafa;color:#888}
|
||||||
.se2_quote5 { margin: 0 0 30px; padding: 12px 10px 11px; border: 1px dashed #ccc; background: #fafafa; color: #888; }
|
.se2_quote9{margin:0 0 30px;padding:12px 10px 11px;border:2px solid #e5e5e5;color:#888}
|
||||||
|
.se2_quote10{margin:0 0 30px;padding:12px 10px 11px;border:2px solid #e5e5e5;background:#fafafa;color:#888}
|
||||||
.se2_quote6 { margin: 0 0 30px; padding: 12px 10px 11px; border: 1px solid #e5e5e5; color: #888; }
|
|
||||||
|
|
||||||
.se2_quote7 { margin: 0 0 30px; padding: 12px 10px 11px; border: 1px solid #66b246; color: #888; }
|
|
||||||
|
|
||||||
.se2_quote8 { margin: 0 0 30px; padding: 12px 10px 11px; border: 1px solid #e5e5e5; background: #fafafa; color: #888; }
|
|
||||||
|
|
||||||
.se2_quote9 { margin: 0 0 30px; padding: 12px 10px 11px; border: 2px solid #e5e5e5; color: #888; }
|
|
||||||
|
|
||||||
.se2_quote10 { margin: 0 0 30px; padding: 12px 10px 11px; border: 2px solid #e5e5e5; background: #fafafa; color: #888; }
|
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -1,20 +1,12 @@
|
|||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
/* NHN Web Standardization Team (http://html.nhndesign.com/) HHJ 090226 */
|
/* NHN Web Standardization Team (http://html.nhndesign.com/) HHJ 090226 */
|
||||||
/* COMMON */
|
/* COMMON */
|
||||||
.se2_outputarea, .se2_outputarea th, .se2_outputarea td { margin: 0; padding: 0; color: #666; font-size: 12px; font-family: '돋움',Dotum,'굴림',Gulim,Helvetica,Sans-serif; line-height: 1.5; }
|
.se2_outputarea,.se2_outputarea th,.se2_outputarea td{margin:0;padding:0;color:#666;font-size:12px;font-family:'돋움',Dotum,'굴림',Gulim,Helvetica,Sans-serif;line-height:1.5}
|
||||||
|
.se2_outputarea p{margin:0;padding:0}
|
||||||
.se2_outputarea p { margin: 0; padding: 0; }
|
.se2_outputarea a:hover{text-decoration:underline}
|
||||||
|
.se2_outputarea a:link{color:#0000ff}
|
||||||
.se2_outputarea a:hover { text-decoration: underline; }
|
.se2_outputarea ul{margin:0 0 0 40px;padding:0}
|
||||||
|
.se2_outputarea ul li{margin:0;list-style-type:disc;padding:0}
|
||||||
.se2_outputarea a:link { color: #0000ff; }
|
.se2_outputarea ul ul li{list-style-type:circle}
|
||||||
|
.se2_outputarea ul ul ul li{list-style-type:square}
|
||||||
.se2_outputarea ul { margin: 0 0 0 40px; padding: 0; }
|
.se2_outputarea img,.se2_outputarea fieldset{border:0}
|
||||||
|
|
||||||
.se2_outputarea ul li { margin: 0; list-style-type: disc; padding: 0; }
|
|
||||||
|
|
||||||
.se2_outputarea ul ul li { list-style-type: circle; }
|
|
||||||
|
|
||||||
.se2_outputarea ul ul ul li { list-style-type: square; }
|
|
||||||
|
|
||||||
.se2_outputarea img, .se2_outputarea fieldset { border: 0; }
|
|
||||||
@@ -3,9 +3,15 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
|||||||
|
|
||||||
function editor_html($id, $content, $is_dhtml_editor=true)
|
function editor_html($id, $content, $is_dhtml_editor=true)
|
||||||
{
|
{
|
||||||
global $g5, $config;
|
global $g5, $config, $w, $board;
|
||||||
static $js = true;
|
static $js = true;
|
||||||
|
|
||||||
|
if( $is_dhtml_editor && $content && !$w && (isset($board['bo_insert_content']) && !empty($board['bo_insert_content']) ) ){ //글쓰기 기본 내용 처리
|
||||||
|
if( preg_match('/\r|\n/', $content) && $content === strip_tags($content, '<a><strong><b>') ) { //textarea로 작성되고, html 내용이 없다면
|
||||||
|
$content = nl2br($content);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$editor_url = G5_EDITOR_URL.'/'.$config['cf_editor'];
|
$editor_url = G5_EDITOR_URL.'/'.$config['cf_editor'];
|
||||||
|
|
||||||
$html = "";
|
$html = "";
|
||||||
@@ -15,7 +21,7 @@ function editor_html($id, $content, $is_dhtml_editor=true)
|
|||||||
|
|
||||||
if ($is_dhtml_editor && $js) {
|
if ($is_dhtml_editor && $js) {
|
||||||
$html .= "\n".'<script src="'.$editor_url.'/js/HuskyEZCreator.js"></script>';
|
$html .= "\n".'<script src="'.$editor_url.'/js/HuskyEZCreator.js"></script>';
|
||||||
$html .= "\n".'<script>var g5_editor_url = "'.$editor_url.'", oEditors = [];</script>';
|
$html .= "\n".'<script>var g5_editor_url = "'.$editor_url.'", oEditors = [], ed_nonce = "'.ft_nonce_create('smarteditor').'";</script>';
|
||||||
$html .= "\n".'<script src="'.$editor_url.'/config.js"></script>';
|
$html .= "\n".'<script src="'.$editor_url.'/config.js"></script>';
|
||||||
$html .= "\n<script>";
|
$html .= "\n<script>";
|
||||||
$html .= '
|
$html .= '
|
||||||
@@ -38,7 +44,7 @@ function editor_html($id, $content, $is_dhtml_editor=true)
|
|||||||
}
|
}
|
||||||
|
|
||||||
$smarteditor_class = $is_dhtml_editor ? "smarteditor2" : "";
|
$smarteditor_class = $is_dhtml_editor ? "smarteditor2" : "";
|
||||||
$html .= "\n<textarea id=\"$id\" name=\"$id\" class=\"$smarteditor_class\" maxlength=\"65536\" style=\"width:100%\">$content</textarea>";
|
$html .= "\n<textarea id=\"$id\" name=\"$id\" class=\"$smarteditor_class\" maxlength=\"65536\" style=\"width:100%;height:300px\">$content</textarea>";
|
||||||
$html .= "\n<span class=\"sound_only\">웹 에디터 끝</span>";
|
$html .= "\n<span class=\"sound_only\">웹 에디터 끝</span>";
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
@@ -64,4 +70,97 @@ function chk_editor_js($id, $is_dhtml_editor=true)
|
|||||||
return "if (!{$id}_editor.value) { alert(\"내용을 입력해 주십시오.\"); {$id}_editor.focus(); return false; }\n";
|
return "if (!{$id}_editor.value) { alert(\"내용을 입력해 주십시오.\"); {$id}_editor.focus(); return false; }\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
https://github.com/timostamm/NonceUtil-PHP
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('FT_NONCE_UNIQUE_KEY'))
|
||||||
|
define( 'FT_NONCE_UNIQUE_KEY' , sha1($_SERVER['SERVER_SOFTWARE'].G5_MYSQL_USER.session_id().G5_TABLE_PREFIX) );
|
||||||
|
|
||||||
|
if (!defined('FT_NONCE_SESSION_KEY'))
|
||||||
|
define( 'FT_NONCE_SESSION_KEY' , substr(md5(FT_NONCE_UNIQUE_KEY), 5) );
|
||||||
|
|
||||||
|
if (!defined('FT_NONCE_DURATION'))
|
||||||
|
define( 'FT_NONCE_DURATION' , 60 * 60 ); // 300 makes link or form good for 5 minutes from time of generation, 300은 5분간 유효, 60 * 60 은 1시간
|
||||||
|
|
||||||
|
if (!defined('FT_NONCE_KEY'))
|
||||||
|
define( 'FT_NONCE_KEY' , '_nonce' );
|
||||||
|
|
||||||
|
// This method creates a key / value pair for a url string
|
||||||
|
if(!function_exists('ft_nonce_create_query_string')){
|
||||||
|
function ft_nonce_create_query_string( $action = '' , $user = '' ){
|
||||||
|
return FT_NONCE_KEY."=".ft_nonce_create( $action , $user );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!function_exists('ft_get_secret_key')){
|
||||||
|
function ft_get_secret_key($secret){
|
||||||
|
return md5(FT_NONCE_UNIQUE_KEY.$secret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method creates an nonce. It should be called by one of the previous two functions.
|
||||||
|
if(!function_exists('ft_nonce_create')){
|
||||||
|
function ft_nonce_create( $action = '',$user='', $timeoutSeconds=FT_NONCE_DURATION ){
|
||||||
|
|
||||||
|
$secret = ft_get_secret_key($action.$user);
|
||||||
|
|
||||||
|
set_session('token_'.FT_NONCE_SESSION_KEY, $secret);
|
||||||
|
|
||||||
|
$salt = ft_nonce_generate_hash();
|
||||||
|
$time = time();
|
||||||
|
$maxTime = $time + $timeoutSeconds;
|
||||||
|
$nonce = $salt . "|" . $maxTime . "|" . sha1( $salt . $secret . $maxTime );
|
||||||
|
return $nonce;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method validates an nonce
|
||||||
|
if(!function_exists('ft_nonce_is_valid')){
|
||||||
|
function ft_nonce_is_valid( $nonce, $action = '', $user='' ){
|
||||||
|
|
||||||
|
$secret = ft_get_secret_key($action.$user);
|
||||||
|
|
||||||
|
$token = get_session('token_'.FT_NONCE_SESSION_KEY);
|
||||||
|
|
||||||
|
if ($secret != $token){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_string($nonce) == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$a = explode('|', $nonce);
|
||||||
|
if (count($a) != 3) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$salt = $a[0];
|
||||||
|
$maxTime = intval($a[1]);
|
||||||
|
$hash = $a[2];
|
||||||
|
$back = sha1( $salt . $secret . $maxTime );
|
||||||
|
if ($back != $hash) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (time() > $maxTime) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method generates the nonce timestamp
|
||||||
|
if(!function_exists('ft_nonce_generate_hash')){
|
||||||
|
function ft_nonce_generate_hash(){
|
||||||
|
$length = 10;
|
||||||
|
$chars='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
|
||||||
|
$ll = strlen($chars)-1;
|
||||||
|
$o = '';
|
||||||
|
while (strlen($o) < $length) {
|
||||||
|
$o .= $chars[ rand(0, $ll) ];
|
||||||
|
}
|
||||||
|
return $o;
|
||||||
|
}
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
@@ -10,7 +10,6 @@ function createSEditor2(elIRField, htParams, elSeAppContainer){
|
|||||||
var oIRTextarea = elIRField?elIRField:jindo.$$.getSingle("TEXTAREA.blind", elEditingArea);
|
var oIRTextarea = elIRField?elIRField:jindo.$$.getSingle("TEXTAREA.blind", elEditingArea);
|
||||||
var oHTMLSrc = jindo.$$.getSingle("TEXTAREA.se2_input_htmlsrc", elEditingArea);
|
var oHTMLSrc = jindo.$$.getSingle("TEXTAREA.se2_input_htmlsrc", elEditingArea);
|
||||||
var oTextArea = jindo.$$.getSingle("TEXTAREA.se2_input_text", elEditingArea);
|
var oTextArea = jindo.$$.getSingle("TEXTAREA.se2_input_text", elEditingArea);
|
||||||
var sEditorMode = "open";
|
|
||||||
|
|
||||||
if(!htParams){
|
if(!htParams){
|
||||||
htParams = {};
|
htParams = {};
|
||||||
@@ -24,7 +23,7 @@ function createSEditor2(elIRField, htParams, elSeAppContainer){
|
|||||||
oEditor.registerPlugin(new nhn.husky.StringConverterManager());
|
oEditor.registerPlugin(new nhn.husky.StringConverterManager());
|
||||||
|
|
||||||
var htDimension = {
|
var htDimension = {
|
||||||
nMinHeight:320,
|
nMinHeight:205,
|
||||||
nMinWidth:parseInt(elIRField.style.minWidth, 10)||570,
|
nMinWidth:parseInt(elIRField.style.minWidth, 10)||570,
|
||||||
nHeight:elIRField.style.height||elIRField.offsetHeight,
|
nHeight:elIRField.style.height||elIRField.offsetHeight,
|
||||||
nWidth:elIRField.style.width||elIRField.offsetWidth
|
nWidth:elIRField.style.width||elIRField.offsetWidth
|
||||||
@@ -56,7 +55,6 @@ function createSEditor2(elIRField, htParams, elSeAppContainer){
|
|||||||
oEditor.registerPlugin(new nhn.husky.ActiveLayerManager());
|
oEditor.registerPlugin(new nhn.husky.ActiveLayerManager());
|
||||||
oEditor.registerPlugin(new nhn.husky.SE_WYSIWYGStyleGetter()); // 커서 위치 스타일 정보 가져오기
|
oEditor.registerPlugin(new nhn.husky.SE_WYSIWYGStyleGetter()); // 커서 위치 스타일 정보 가져오기
|
||||||
|
|
||||||
oEditor.registerPlugin(new nhn.husky.SE2B_Customize_ToolBar(elAppContainer)); // 상단 툴바 (Basic)
|
|
||||||
oEditor.registerPlugin(new nhn.husky.SE_WYSIWYGEnterKey("P")); // 엔터 시 처리, 현재는 P로 처리
|
oEditor.registerPlugin(new nhn.husky.SE_WYSIWYGEnterKey("P")); // 엔터 시 처리, 현재는 P로 처리
|
||||||
|
|
||||||
oEditor.registerPlugin(new nhn.husky.SE2M_ColorPalette(elAppContainer)); // 색상 팔레트
|
oEditor.registerPlugin(new nhn.husky.SE2M_ColorPalette(elAppContainer)); // 색상 팔레트
|
||||||
@@ -76,16 +74,22 @@ function createSEditor2(elIRField, htParams, elSeAppContainer){
|
|||||||
oEditor.registerPlugin(new nhn.husky.SE2M_TableCreator(elAppContainer)); // 테이블 생성
|
oEditor.registerPlugin(new nhn.husky.SE2M_TableCreator(elAppContainer)); // 테이블 생성
|
||||||
oEditor.registerPlugin(new nhn.husky.SE2M_TableEditor(elAppContainer)); // 테이블 편집
|
oEditor.registerPlugin(new nhn.husky.SE2M_TableEditor(elAppContainer)); // 테이블 편집
|
||||||
oEditor.registerPlugin(new nhn.husky.SE2M_TableBlockStyler(elAppContainer)); // 테이블 스타일
|
oEditor.registerPlugin(new nhn.husky.SE2M_TableBlockStyler(elAppContainer)); // 테이블 스타일
|
||||||
oEditor.registerPlugin(new nhn.husky.SE2M_AttachQuickPhoto(elAppContainer)); // 사진
|
if(nhn.husky.SE2M_AttachQuickPhoto){
|
||||||
|
oEditor.registerPlugin(new nhn.husky.SE2M_AttachQuickPhoto(elAppContainer)); // 사진
|
||||||
|
}
|
||||||
|
|
||||||
oEditor.registerPlugin(new nhn.husky.MessageManager(oMessageMap));
|
oEditor.registerPlugin(new nhn.husky.MessageManager(oMessageMap));
|
||||||
oEditor.registerPlugin(new nhn.husky.SE2M_QuickEditor_Common(elAppContainer)); // 퀵에디터 공통(표, 이미지)
|
oEditor.registerPlugin(new nhn.husky.SE2M_QuickEditor_Common(elAppContainer)); // 퀵에디터 공통(표, 이미지)
|
||||||
|
|
||||||
oEditor.registerPlugin(new nhn.husky.SE2B_CSSLoader()); // CSS lazy load
|
oEditor.registerPlugin(new nhn.husky.SE2B_CSSLoader()); // CSS lazy load
|
||||||
oEditor.registerPlugin(new nhn.husky.SE_OuterIFrameControl(elAppContainer, 100));
|
if(window.frameElement){
|
||||||
|
oEditor.registerPlugin(new nhn.husky.SE_OuterIFrameControl(elAppContainer, 100));
|
||||||
|
}
|
||||||
|
|
||||||
oEditor.registerPlugin(new nhn.husky.SE_ToolbarToggler(elAppContainer, htParams.bUseToolbar));
|
oEditor.registerPlugin(new nhn.husky.SE_ToolbarToggler(elAppContainer, htParams.bUseToolbar));
|
||||||
oEditor.registerPlugin(new nhn.husky.SE2M_Accessibility(elAppContainer)); // 에디터내의 웹접근성 관련 기능모음 플러그인
|
oEditor.registerPlugin(new nhn.husky.SE2M_Accessibility(elAppContainer)); // 에디터내의 웹접근성 관련 기능모음 플러그인
|
||||||
|
|
||||||
|
oEditor.registerPlugin(new nhn.husky.SE2B_Customize_ToolBar(elAppContainer)); // 2.3 버젼에 있는 툴바 이용
|
||||||
|
|
||||||
return oEditor;
|
return oEditor;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
/*
|
||||||
|
* Smart Editor 2 Configuration : This setting must be changed by service
|
||||||
|
*/
|
||||||
|
window.nhn = window.nhn || {};
|
||||||
|
nhn.husky = nhn.husky || {};
|
||||||
|
nhn.husky.SE2M_Configuration = nhn.husky.SE2M_Configuration || {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CSS LazyLoad를 위한 경로
|
||||||
|
*/
|
||||||
|
nhn.husky.SE2M_Configuration.SE2B_CSSLoader = {
|
||||||
|
sCSSBaseURI : "css"
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 편집영역 설정
|
||||||
|
*/
|
||||||
|
nhn.husky.SE2M_Configuration.SE_EditingAreaManager = {
|
||||||
|
sCSSBaseURI : "css", // smart_editor2_inputarea.html 파일의 상대경로
|
||||||
|
sBlankPageURL : "smart_editor2_inputarea.html",
|
||||||
|
sBlankPageURL_EmulateIE7 : "smart_editor2_inputarea_ie8.html",
|
||||||
|
aAddtionalEmulateIE7 : [] // IE8 default 사용, IE9 ~ 선택적 사용
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [웹접근성]
|
||||||
|
* 단축키 ALT+, ALT+. 을 이용하여 스마트에디터 영역의 이전/이후 요소로 이동할 수 있다.
|
||||||
|
* sBeforeElementId : 스마트에디터 영역 이전 요소의 id
|
||||||
|
* sNextElementId : 스마트에디터 영역 이후 요소의 id
|
||||||
|
*
|
||||||
|
* 스마트에디터 영역 이외의 제목 영역 (예:스마트에디터가 적용된 블로그 쓰기 페이지에서의 제목 영역) 에 해당하는 엘리먼트에서 Tab키를 누르면 에디팅 영역으로 포커스를 이동시킬 수 있다.
|
||||||
|
* sTitleElementId : 제목에 해당하는 input 요소의 id.
|
||||||
|
*/
|
||||||
|
nhn.husky.SE2M_Configuration.SE2M_Accessibility = {
|
||||||
|
ed_nonce : (typeof parent.ed_nonce !='undefined') ? parent.ed_nonce : '',
|
||||||
|
sBeforeElementId : '',
|
||||||
|
sNextElementId : '',
|
||||||
|
sTitleElementId : ''
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 링크 기능 옵션
|
||||||
|
*/
|
||||||
|
nhn.husky.SE2M_Configuration.SE2M_Hyperlink = {
|
||||||
|
bAutolink : true // 자동링크기능 사용여부(기본값:true)
|
||||||
|
};
|
||||||
|
|
||||||
|
nhn.husky.SE2M_Configuration.Quote = {
|
||||||
|
sImageBaseURL : 'http://static.se2.naver.com/static/img'
|
||||||
|
};
|
||||||
|
nhn.husky.SE2M_Configuration.SE2M_ColorPalette = {
|
||||||
|
bAddRecentColorFromDefault : false
|
||||||
|
};
|
||||||
|
|
||||||
|
nhn.husky.SE2B_Customize_ToolBar = jindo.$Class(/** @lends nhn.husky.SE2B_Customize_ToolBar */{
|
||||||
|
name : "SE2B_Customize_ToolBar",
|
||||||
|
/**
|
||||||
|
* @constructs
|
||||||
|
* @param {Object} oAppContainer 에디터를 구성하는 컨테이너
|
||||||
|
*/
|
||||||
|
$init : function(oAppContainer) {
|
||||||
|
this._assignHTMLElements(oAppContainer);
|
||||||
|
},
|
||||||
|
$BEFORE_MSG_APP_READY : function(){
|
||||||
|
this._addEventMoreButton();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @description DOM엘리먼트를 수집하는 메소드
|
||||||
|
* @param {Object} oAppContainer 툴바 포함 에디터를 감싸고 있는 div 엘리먼트
|
||||||
|
*/
|
||||||
|
_assignHTMLElements : function(oAppContainer) {
|
||||||
|
this.oAppContainer = oAppContainer;
|
||||||
|
this.elTextToolBarArea = jindo.$$.getSingle("div.se2_tool");
|
||||||
|
this.elTextMoreButton = jindo.$$.getSingle("button.se2_text_tool_more", this.elTextToolBarArea);
|
||||||
|
this.elTextMoreButtonParent = this.elTextMoreButton.parentNode;
|
||||||
|
this.welTextMoreButtonParent = jindo.$Element(this.elTextMoreButtonParent);
|
||||||
|
this.elMoreLayer = jindo.$$.getSingle("div.se2_sub_text_tool");
|
||||||
|
},
|
||||||
|
|
||||||
|
_addEventMoreButton : function (){
|
||||||
|
this.oApp.registerBrowserEvent(this.elTextMoreButton, "click", "EVENT_CLICK_EXPAND_VIEW");
|
||||||
|
this.oApp.registerBrowserEvent(this.elMoreLayer, "click", "EVENT_CLICK_EXPAND_VIEW");
|
||||||
|
},
|
||||||
|
|
||||||
|
$ON_EVENT_CLICK_EXPAND_VIEW : function(weEvent){
|
||||||
|
this.oApp.exec("TOGGLE_EXPAND_VIEW", [this.elTextMoreButton]);
|
||||||
|
weEvent.stop();
|
||||||
|
},
|
||||||
|
|
||||||
|
$ON_TOGGLE_EXPAND_VIEW : function(){
|
||||||
|
if(!this.welTextMoreButtonParent.hasClass("active")){
|
||||||
|
this.oApp.exec("SHOW_EXPAND_VIEW");
|
||||||
|
} else {
|
||||||
|
this.oApp.exec("HIDE_EXPAND_VIEW");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
$ON_CHANGE_EDITING_MODE : function(sMode){
|
||||||
|
if(sMode != "WYSIWYG"){
|
||||||
|
this.elTextMoreButton.disabled =true;
|
||||||
|
this.welTextMoreButtonParent.removeClass("active");
|
||||||
|
this.oApp.exec("HIDE_EXPAND_VIEW");
|
||||||
|
}else{
|
||||||
|
this.elTextMoreButton.disabled =false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
$AFTER_SHOW_ACTIVE_LAYER : function(){
|
||||||
|
this.oApp.exec("HIDE_EXPAND_VIEW");
|
||||||
|
},
|
||||||
|
|
||||||
|
$AFTER_SHOW_DIALOG_LAYER : function(){
|
||||||
|
this.oApp.exec("HIDE_EXPAND_VIEW");
|
||||||
|
},
|
||||||
|
|
||||||
|
$ON_SHOW_EXPAND_VIEW : function(){
|
||||||
|
this.welTextMoreButtonParent.addClass("active");
|
||||||
|
this.elMoreLayer.style.display = "block";
|
||||||
|
},
|
||||||
|
|
||||||
|
$ON_HIDE_EXPAND_VIEW : function(){
|
||||||
|
this.welTextMoreButtonParent.removeClass("active");
|
||||||
|
this.elMoreLayer.style.display = "none";
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CHANGE_EDITING_MODE모드 이후에 호출되어야 함.
|
||||||
|
* WYSIWYG 모드가 활성화되기 전에 호출이 되면 APPLY_FONTCOLOR에서 에러 발생.
|
||||||
|
*/
|
||||||
|
$ON_RESET_TOOLBAR : function(){
|
||||||
|
if(this.oApp.getEditingMode() !== "WYSIWYG"){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//스펠체크 닫기
|
||||||
|
this.oApp.exec("END_SPELLCHECK");
|
||||||
|
//열린 팝업을 닫기 위해서
|
||||||
|
this.oApp.exec("DISABLE_ALL_UI");
|
||||||
|
this.oApp.exec("ENABLE_ALL_UI");
|
||||||
|
//글자색과 글자 배경색을 제외한 세팅
|
||||||
|
this.oApp.exec("RESET_STYLE_STATUS");
|
||||||
|
this.oApp.exec("CHECK_STYLE_CHANGE");
|
||||||
|
//최근 사용한 글자색 셋팅.
|
||||||
|
this.oApp.exec("APPLY_FONTCOLOR", ["#000000"]);
|
||||||
|
//더보기 영역 닫기.
|
||||||
|
this.oApp.exec("HIDE_EXPAND_VIEW");
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
if(typeof window!="undefined"&&typeof window.nhn=="undefined"){window.nhn={}}if(typeof window!="undefined"){if(typeof window.jindo=="undefined"){window.jindo={}}}else{if(!jindo){jindo={}}}jindo.$Jindo=function(){var a=arguments.callee;var b=a._cached;if(b){return b}if(!(this instanceof a)){return new a()}if(!b){a._cached=this}this.version="1.5.2"};jindo.$=function(l){var h=[],o=arguments,n=o.length,g=o[n-1],m=document,c=null;var d=/^<([a-z]+|h[1-5])>$/i;var e=/^<([a-z]+|h[1-5])(\s+[^>]+)?>/i;if(n>1&&typeof g!="string"&&g.body){o=Array.prototype.slice.apply(o,[0,n-1]);m=g}for(var f=0;f<n;f++){c=o[f];if(typeof c=="string"){c=c.replace(/^\s+|\s+$/g,"");if(c.indexOf("<")>-1){if(d.test(c)){c=m.createElement(RegExp.$1)}else{if(e.test(c)){var b={thead:"table",tbody:"table",tr:"tbody",td:"tr",dt:"dl",dd:"dl",li:"ul",legend:"fieldset",option:"select"};var r=RegExp.$1.toLowerCase();var q=jindo._createEle(b[r],c,m);for(var f=0,a=q.length;f<a;f++){h.push(q[f])}c=null}}}else{c=m.getElementById(c)}}if(c){h[h.length]=c}}return h.length>1?h:(h[0]||null)};jindo._createEle=function(g,f,a,e){var c="R"+new Date().getTime()+parseInt(Math.random()*100000,10);var d=a.createElement("div");switch(g){case"select":case"table":case"dl":case"ul":case"fieldset":d.innerHTML="<"+g+' class="'+c+'">'+f+"</"+g+">";break;case"thead":case"tbody":case"col":d.innerHTML="<table><"+g+' class="'+c+'">'+f+"</"+g+"></table>";break;case"tr":d.innerHTML='<table><tbody><tr class="'+c+'">'+f+"</tr></tbody></table>";break;default:d.innerHTML='<div class="'+c+'">'+f+"</div>";break}var b;for(b=d.firstChild;b;b=b.firstChild){if(b.className==c){break}}return e?b:b.childNodes};jindo.$Class=function(oDef){function typeClass(){var t=this;var a=[];var superFunc=function(m,superClass,func){if(m!="constructor"&&func.toString().indexOf("$super")>-1){var funcArg=func.toString().replace(/function\s*\(([^\)]*)[\w\W]*/g,"$1").split(",");var funcStr=func.toString().replace(/function[^{]*{/,"").replace(/(\w|\.?)(this\.\$super|this)/g,function(m,m2,m3){if(!m2){return m3+".$super"}return m});funcStr=funcStr.substr(0,funcStr.length-1);func=superClass[m]=eval("false||function("+funcArg.join(",")+"){"+funcStr+"}")}return function(){var f=this.$this[m];var t=this.$this;var r=(t[m]=func).apply(t,arguments);t[m]=f;return r}};while(typeof t._$superClass!="undefined"){t.$super=new Object;t.$super.$this=this;for(var x in t._$superClass.prototype){if(t._$superClass.prototype.hasOwnProperty(x)){if(typeof this[x]=="undefined"&&x!="$init"){this[x]=t._$superClass.prototype[x]}if(x!="constructor"&&x!="_$superClass"&&typeof t._$superClass.prototype[x]=="function"){t.$super[x]=superFunc(x,t._$superClass,t._$superClass.prototype[x])}else{t.$super[x]=t._$superClass.prototype[x]}}}if(typeof t.$super.$init=="function"){a[a.length]=t}t=t.$super}for(var i=a.length-1;i>-1;i--){a[i].$super.$init.apply(a[i].$super,arguments)}if(typeof this.$init=="function"){this.$init.apply(this,arguments)}}if(typeof oDef.$static!="undefined"){var i=0,x;for(x in oDef){if(oDef.hasOwnProperty(x)){x=="$static"||i++}}for(x in oDef.$static){if(oDef.$static.hasOwnProperty(x)){typeClass[x]=oDef.$static[x]}}if(!i){return oDef.$static}delete oDef.$static}typeClass.prototype=oDef;typeClass.prototype.constructor=typeClass;typeClass.extend=jindo.$Class.extend;return typeClass};jindo.$Class.extend=function(b){if(typeof b=="undefined"||b===null||!b.extend){throw new Error("extend시 슈퍼 클래스는 Class여야 합니다.")}this.prototype._$superClass=b;for(var a in b){if(b.hasOwnProperty(a)){if(a=="prototype"){continue}this[a]=b[a]}}return this};jindo.$$=jindo.cssquery=(function(){var sVersion="3.0";var debugOption={repeat:1};var UID=1;var cost=0;var validUID={};var bSupportByClassName=document.getElementsByClassName?true:false;var safeHTML=false;var getUID4HTML=function(oEl){var nUID=safeHTML?(oEl._cssquery_UID&&oEl._cssquery_UID[0]):oEl._cssquery_UID;if(nUID&&validUID[nUID]==oEl){return nUID}nUID=UID++;oEl._cssquery_UID=safeHTML?[nUID]:nUID;validUID[nUID]=oEl;return nUID};var getUID4XML=function(oEl){var oAttr=oEl.getAttribute("_cssquery_UID");var nUID=safeHTML?(oAttr&&oAttr[0]):oAttr;if(!nUID){nUID=UID++;oEl.setAttribute("_cssquery_UID",safeHTML?[nUID]:nUID)}return nUID};var getUID=getUID4HTML;var uniqid=function(sPrefix){return(sPrefix||"")+new Date().getTime()+parseInt(Math.random()*100000000,10)};function getElementsByClass(searchClass,node,tag){var classElements=new Array();if(node==null){node=document}if(tag==null){tag="*"}var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");for(i=0,j=0;i<elsLen;i++){if(pattern.test(els[i].className)){classElements[j]=els[i];j++}}return classElements}var getChilds_dontShrink=function(oEl,sTagName,sClassName){if(bSupportByClassName&&sClassName){if(oEl.getElementsByClassName){return oEl.getElementsByClassName(sClassName)}if(oEl.querySelectorAll){return oEl.querySelectorAll(sClassName)}return getElementsByClass(sClassName,Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
jindo.Component=jindo.$Class({_htEventHandler:null,_htOption:null,$init:function(){var a=this.constructor.getInstance();a.push(this);this._htEventHandler={};this._htOption={};this._htOption._htSetter={}},option:function(c,b){switch(typeof c){case"undefined":return this._htOption;case"string":if(typeof b!="undefined"){if(c=="htCustomEventHandler"){if(typeof this._htOption[c]=="undefined"){this.attach(b)}else{return this}}this._htOption[c]=b;if(typeof this._htOption._htSetter[c]=="function"){this._htOption._htSetter[c](b)}}else{return this._htOption[c]}break;case"object":for(var a in c){if(a=="htCustomEventHandler"){if(typeof this._htOption[a]=="undefined"){this.attach(c[a])}else{continue}}this._htOption[a]=c[a];if(typeof this._htOption._htSetter[a]=="function"){this._htOption._htSetter[a](c[a])}}break}return this},optionSetter:function(c,a){switch(typeof c){case"undefined":return this._htOption._htSetter;case"string":if(typeof a!="undefined"){this._htOption._htSetter[c]=jindo.$Fn(a,this).bind()}else{return this._htOption._htSetter[c]}break;case"object":for(var b in c){this._htOption._htSetter[b]=jindo.$Fn(c[b],this).bind()}break}return this},fireEvent:function(b,k){k=k||{};var d=this["on"+b],c=this._htEventHandler[b]||[],h=typeof d=="function",g=c.length>0;if(!h&&!g){return true}c=c.concat();k.sType=b;if(typeof k._aExtend=="undefined"){k._aExtend=[];k.stop=function(){if(k._aExtend.length>0){k._aExtend[k._aExtend.length-1].bCanceled=true}}}k._aExtend.push({sType:b,bCanceled:false});var f=[k],e,j;for(e=2,j=arguments.length;e<j;e++){f.push(arguments[e])}if(h){d.apply(this,f)}if(g){var a;for(e=0,a;(a=c[e]);e++){a.apply(this,f)}}return !k._aExtend.pop().bCanceled},attach:function(c,a){if(arguments.length==1){jindo.$H(arguments[0]).forEach(jindo.$Fn(function(d,e){this.attach(e,d)},this).bind());return this}var b=this._htEventHandler[c];if(typeof b=="undefined"){b=this._htEventHandler[c]=[]}b.push(a);return this},detach:function(e,b){if(arguments.length==1){jindo.$H(arguments[0]).forEach(jindo.$Fn(function(f,g){this.detach(g,f)},this).bind());return this}var d=this._htEventHandler[e];if(d){for(var a=0,c;(c=d[a]);a++){if(c===b){d=d.splice(a,1);break}}}return this},detachAll:function(c){var b=this._htEventHandler;if(arguments.length){if(typeof b[c]=="undefined"){return this}delete b[c];return this}for(var a in b){delete b[a]}return this}});jindo.Component.factory=function(b,f){var c=[],a;if(typeof f=="undefined"){f={}}for(var d=0,e;(e=b[d]);d++){a=new this(e,f);c[c.length]=a}return c};jindo.Component.getInstance=function(){if(typeof this._aInstance=="undefined"){this._aInstance=[]}return this._aInstance};jindo.UIComponent=jindo.$Class({$init:function(){this._bIsActivating=false},isActivating:function(){return this._bIsActivating},activate:function(){if(this.isActivating()){return this}this._bIsActivating=true;if(arguments.length>0){this._onActivate.apply(this,arguments)}else{this._onActivate()}return this},deactivate:function(){if(!this.isActivating()){return this}this._bIsActivating=false;if(arguments.length>0){this._onDeactivate.apply(this,arguments)}else{this._onDeactivate()}return this}}).extend(jindo.Component);jindo.RolloverArea=jindo.$Class({$init:function(a,b){this.option({sClassName:"rollover",sClassPrefix:"rollover-",bCheckMouseDown:true,bActivateOnload:true,htStatus:{sOver:"over",sDown:"down"}});this.option(b||{});this._elArea=jindo.$(a);this._aOveredElements=[];this._aDownedElements=[];this._wfMouseOver=jindo.$Fn(this._onMouseOver,this);this._wfMouseOut=jindo.$Fn(this._onMouseOut,this);this._wfMouseDown=jindo.$Fn(this._onMouseDown,this);this._wfMouseUp=jindo.$Fn(this._onMouseUp,this);if(this.option("bActivateOnload")){this.activate()}},_addOvered:function(a){this._aOveredElements.push(a)},_removeOvered:function(a){this._aOveredElements.splice(jindo.$A(this._aOveredElements).indexOf(a),1)},_addStatus:function(b,a){jindo.$Element(b).addClass(this.option("sClassPrefix")+a)},_removeStatus:function(b,a){jindo.$Element(b).removeClass(this.option("sClassPrefix")+a)},_isInnerElement:function(a,b){return a===b?true:jindo.$Element(a).isParentOf(b)},_onActivate:function(){this._wfMouseOver.attach(this._elArea,"mouseover");this._wfMouseOut.attach(this._elArea,"mouseout");if(this.option("bCheckMouseDown")){this._wfMouseDown.attach(this._elArea,"mousedown");this._wfMouseUp.attach(document,"mouseup")}},_onDeactivate:function(){this._wfMouseOver.detach(this._elArea,"mouseover");this._wfMouseOut.detach(this._elArea,"mouseout");this._wfMouseDown.detach(this._elArea,"mousedown");this._wfMouseUp.detach(document,"mouseup");this._aOveredElements.length=0;this._aDownedElements.length=0},_findRollover:function(b){var a=this.option("sClassName");return jindo.$$.test(b,"."+a)?b:jindo.$$.getSingle("! ."+a,b)},_onMouseOver:function(a){var c=a.element,b=a.relatedElement,d;for(;c=this._findRollover(c);c=c.parentNode){if(b&&this._isInnerElement(c,b)){continue}this._addOvered(c);d={element:c,htStatus:this.option("htStatus"),weEvent:a};Line truncated
|
||||||
+12007
-10436
File diff suppressed because it is too large.
Load diff
+17
-1
@@ -1 +1,17 @@
|
|||||||
var nSE2Version=11329;if(typeof window.nhn=="undefined"){window.nhn={}}nhn.FindReplace=jindo.$Class({sKeyword:"",window:null,document:null,bBrowserSupported:false,bEOC:false,$init:function(c){this.sInlineContainer="SPAN|B|U|I|S|STRIKE";this.rxInlineContainer=new RegExp("^("+this.sInlineContainer+")$");this.window=c;this.document=this.window.document;if(this.document.domain!=this.document.location.hostname){var a=jindo.$Agent();var b=a.navigator();if(b.firefox&&b.version<3){this.bBrowserSupported=false;this.find=function(){return 3};return}}this.bBrowserSupported=true},_findNextElement:function(b){if(!b||b.tagName=="BODY"){return null}var a=b.nextSibling;if(a){return(a.nodeType==1?a:this._findNextElement(a))}else{return this._findNextElement(b.parentNode)}},find:function(a,c,d,e){var f,b;this.window.focus();if(!a){return 2}this.bEOC=false;f=this.findNext(a,c,d,e);if(f){return 0}this.bEOC=true;f=this.findNew(a,c,d,e);if(f){return 0}return 1},findNew:function(a,b,c,d){this.findReset();return this.findNext(a,b,c,d)},findNext:function(g,f,b,a){var c;f=f||false;a=a||false;b=b||false;if(this.window.find){var k=false;return this.window.find(g,f,b,k,a)}if(this.document.body.createTextRange){try{var j=0;if(b){j+=1}if(a){j+=2}if(f){j+=4}this.window.focus();if(this.document.selection){this._range=this.document.selection.createRangeCollection().item(0);this._range.collapse(false)}else{this._range=this.document.body.createTextRange();var d=this._findNextElement(this.window.getSelection().focusNode);if(d){this._range.moveToElementText(d)}}c=this._range.findText(g,1,j);this._range.select();return c}catch(h){return false}}return false},findReset:function(){if(this.window.find){this.window.getSelection().removeAllRanges();return}if(this.document.body.createTextRange){if(this.document.selection){this._range=this.document.body.createTextRange();this._range.collapse(true);this._range.select()}else{if(this.window.getSelection){var a=this.window.getSelection();a.removeAllRanges();a.selectAllChildren(this.document.body);a.collapseToStart()}}}},replace:function(b,d,a,c,e){return this._replace(b,d,a,c,e)},_replace:function(c,f,b,d,g,e){if(!c){return 4}e=e||new nhn.HuskyRange(this.window);e.setFromSelection();b=b||false;var a,h=e.toString();if(b){a=(h==c)}else{a=(h.toLowerCase()==c.toLowerCase())}if(!a){return this.find(c,b,d,g)+2}if(typeof f=="function"){e=f(e)}else{e.pasteText(f)}e.select();return this.find(c,b,d,g)},replaceAll:function(e,h,j,b){if(!e){return -1}var c=false;var l;var a=0;var k=this.window;if(this.find(e,j,c,b)!==0){return a}var g=new nhn.HuskyRange(this.window);g.setFromSelection();g.collapseToStart();var m=this.window.document.createElement("SPAN");m.innerHTML=unescape("%uFEFF");g.insertNode(m);g.select();var d=g.placeStringBookmark();this.bEOC=false;while(!this.bEOC){l=this._replace(e,h,j,c,b,g);if(l==0||l==1){a++}}var f=function(){var n=new nhn.HuskyRange(k);n.setFromSelection();g.moveToBookmark(d);var o=g.compareBoundaryPoints(nhn.W3CDOMRange.START_TO_END,n);if(o==1){return false}return true};l=0;this.bEOC=false;while(!f()&&l==0&&!this.bEOC){l=this._replace(e,h,j,c,b,g);if(l==0||l==1){a++}}g.moveToBookmark(d);g.deleteContents();g.removeStringBookmark(d);setTimeout(function(){m.parentNode.removeChild(m)},0);return a},_isBlankTextNode:function(a){if(a.nodeType==3&&a.nodeValue==""){return true}return false},_getNextNode:function(a,b){if(!a||a.tagName=="BODY"){return{elNextNode:null,bDisconnected:false}}if(a.nextSibling){a=a.nextSibling;while(a.firstChild){if(a.tagName&&!this.rxInlineContainer.test(a.tagName)){b=true}a=a.firstChild}return{elNextNode:a,bDisconnected:b}}return this._getNextNode(nhn.DOMFix.parentNode(a),b)},_getNextTextNode:function(a,b){var c,a;while(true){c=this._getNextNode(a,b);a=c.elNextNode;b=c.bDisconnected;if(a&&a.nodeType!=3&&!this.rxInlineContainer.test(a.tagName)){b=true}if(!a||(a.nodeType==3&&!this._isBlankTextNode(a))){break}}return{elNextText:a,bDisconnected:b}},_getFirstTextNode:function(){var b=this.document.body.firstChild;while(!!b&&b.firstChild){b=b.firstChild}if(!b){return null}if(b.nodeType!=3||this._isBlankTextNode(b)){var a=this._getNextTextNode(b,false);b=a.elNextText}return b},_addToTextMap:function(b,d,g,f){var e=d[f].length;for(var c=0,a=b.nodeValue.length;c<a;c++){g[f][e+c]=[b,c]}d[f]+=b.nodeValue},_createTextMap:function(){var b=[];var e=[];var d=-1;var a=this._getFirstTextNode();var c={elNextText:a,bDisconnected:true};while(a){if(c.bDisconnected){d++;b[d]="";e[d]=[]}this._addToTextMap(c.elNextText,b,e,d);c=this._getNextTextNode(a,false);a=c.elNextText}return{aTexts:b,aElTexts:e}},replaceAll_js:function(t,w,s,u){try{var g=new Date();var n=this._createTextMap();var f=new Date();var c=n.aTexts;var k=n.aElTexts;var h=0;var a=t.length;for(var r=0,l=c.length;r<l;r++){var o=c[r];for(var q=o.length-a;q>=0;q--){var d=o.substring(q,q+a);if(u&&(q>0&&o.charAt(q-1).match(/[a-zA-Z가-힣]/))){continue}if(d==t){h++;var b=new nhn.HuskyRange(this.window);var p,m;if(q+a<k[r].length){p=k[rLine truncated
|
/**
|
||||||
|
* SmartEditor2 NAVER_Library:SE2.8.2.O12056
|
||||||
|
* Copyright NAVER Corp. Licensed under LGPL v2
|
||||||
|
* See license text at http://dev.naver.com/projects/smarteditor/wiki/LICENSE
|
||||||
|
*/
|
||||||
|
function fontProperty(e,t,i,n,o){this.fontId=e,this.fontName=t,this.defaultSize=i,this.fontURL=n,this.fontCSSURL=o,this.displayName=t,this.isLoaded=!0,this.fontFamily=this.fontId,""!=this.fontCSSURL?(this.displayName+=""+i,this.fontFamily+="_"+i,this.isLoaded=!1,this.loadCSS=function(e){this.isLoaded||(this._importCSS(e),this.isLoaded=!0)},this.loadCSSToMenu=function(){this._importCSS(document)},this._importCSS=function(e){var t=e.styleSheets.length,i=e.styleSheets[t-1];(0===t||30==i.imports.length)&&(e.createStyleSheet?i=e.createStyleSheet():(i=e.createElement("style"),e.documentElement.firstChild.appendChild(i),i=i.sheet)),i.addImport(this.fontCSSURL)}):(this.loadCSS=function(){},this.loadCSSToMenu=function(){}),this.toStruct=function(){return{fontId:this.fontId,fontName:this.fontName,defaultSize:this.defaultSize,fontURL:this.fontURL,fontCSSURL:this.fontCSSURL}}}function Shortcut(e,t){var e=e.replace(/\s+/g,""),i=Shortcut.Store,n=Shortcut.Action;if("undefined"==typeof t&&e.constructor==String)return i.set("document",e,document),n.init(i.get("document"),e);if(t.constructor==String&&e.constructor==String)return i.set(t,e,jindo.$(t)),n.init(i.get(t),e);if(t.constructor!=String&&e.constructor==String){var o="nonID"+(new Date).getTime();return o=Shortcut.Store.searchId(o,t),i.set(o,e,t),n.init(i.get(o),e)}alert(t+"는 반드시 string이거나 없어야 됩니다.")}"undefined"==typeof window.nhn&&(window.nhn={}),nhn.husky||(nhn.husky={}),function(){var e=/^\$(LOCAL|BEFORE|ON|AFTER)_/,t=/^\$(BEFORE|ON|AFTER)_MSG_APP_READY$/,i=[],n={};nhn.husky.HuskyCore=jindo.$Class({name:"HuskyCore",aCallerStack:null,bMobile:jindo.$Agent().navigator().mobile||jindo.$Agent().navigator().msafari,$init:function(e){this.htOptions=e||{},i.push(this),this.htOptions.oDebugger&&(nhn.husky.HuskyCore.getCore=function(){return i},this.htOptions.oDebugger.setApp(this)),this.messageQueue=[],this.oMessageMap={},this.oDisabledMessage={},this.oLazyMessage={},this.aPlugins=[],this.appStatus=nhn.husky.APP_STATUS.NOT_READY,this.aCallerStack=[],this._fnWaitForPluginReady=jindo.$Fn(this._waitForPluginReady,this).bind(),this.registerPlugin(this)},setDebugger:function(e){this.htOptions.oDebugger=e,e.setApp(this)},exec:function(e,t,i){return this.appStatus==nhn.husky.APP_STATUS.NOT_READY?(this.messageQueue[this.messageQueue.length]={msg:e,args:t,event:i},!0):(this.exec=this._exec,void this.exec(e,t,i))},delayedExec:function(e,t,i,n){var o=jindo.$Fn(this.exec,this).bind(e,t,n);setTimeout(o,i)},_exec:function(e,t,i){return(this._exec=this.htOptions.oDebugger?this._execWithDebugger:this._execWithoutDebugger).call(this,e,t,i)},_execWithDebugger:function(e,t,i){this.htOptions.oDebugger.log_MessageStart(e,t);var n=this._doExec(e,t,i);return this.htOptions.oDebugger.log_MessageEnd(e,t),n},_execWithoutDebugger:function(e,t,i){return this._doExec(e,t,i)},_doExec:function(e,t,i){var n=!1;if(this.oLazyMessage[e]){var o=this.oLazyMessage[e];return this._loadLazyFiles(e,t,i,o.aFilenames,0),!1}if(!this.oDisabledMessage[e]){var s=[];if(t&&t.length)for(var r=t.length,a=0;r>a;a++)s[a]=t[a];i&&(s[s.length]=i),n=this._execMsgStep("BEFORE",e,s),n&&(n=this._execMsgStep("ON",e,s)),n&&(n=this._execMsgStep("AFTER",e,s))}return n},registerPlugin:function(t){if(!t)throw"An error occured in registerPlugin(): invalid plug-in";if(t.nIdx=this.aPlugins.length,t.oApp=this,this.aPlugins[t.nIdx]=t,t.status!=nhn.husky.PLUGIN_STATUS.NOT_READY&&(t.status=nhn.husky.PLUGIN_STATUS.READY),this.appStatus!=nhn.husky.APP_STATUS.NOT_READY)for(var i in t)e.test(i)&&this.addToMessageMap(i,t);return this.exec("MSG_PLUGIN_REGISTERED",[t]),t.nIdx},disableMessage:function(e,t){this.oDisabledMessage[e]=t},registerBrowserEvent:function(e,t,i,n,o){n=n||[];var s=o?jindo.$Fn(this.delayedExec,this).bind(i,n,o):jindo.$Fn(this.exec,this).bind(i,n);return jindo.$Fn(s,this).attach(e,t)},run:function(e){this.htRunOptions=e||{},this._changeAppStatus(nhn.husky.APP_STATUS.WAITING_FOR_PLUGINS_READY);for(var t=this.messageQueue.length,i=0;t>i;i++){var n=this.messageQueue[i];this.exec(n.msg,n.args,n.event)}this._fnWaitForPluginReady()},acceptLocalBeforeFirstAgain:function(e,t){e._husky_bRun=!t},createMessageMap:function(e){this.oMessageMap[e]=[];for(var t=this.aPlugins.length,i=0;t>i;i++)this._doAddToMessageMap(e,this.aPlugins[i])},addToMessageMap:function(e,t){this.oMessageMap[e]&&this._doAddToMessageMap(e,t)},_changeAppStatus:function(e){this.appStatus=e,this.appStatus==nhn.husky.APP_STATUS.READY&&this.exec("MSG_APP_READY")},_execMsgStep:function(e,t,i){return(this._execMsgStep=this.htOptions.oDebugger?this._execMsgStepWithDebugger:this._execMsgStepWithoutDebugger).call(this,e,t,i)},_execMsgStepWithDebugger:function(e,t,i){this.htOptions.oDebugger.log_MessageStepStart(e,t,i);var n=this._execMsgHandler("$"+e+"_"+t,i);return this.htOptions.oDebugger.log_MessageStepEnd(e,t,i),n},_execMsgStepWithoutDebugger:function(e,t,i){return this._execMsgHandler("$"+e+"_"+t,i)},_execMsgHandler:function(e,i){var n;this.oMessageMLine truncated
|
||||||
|
this._splitTextEndNodesOfTheRange();var i,n,o=this.getStartNode(),s=this.getEndNode(),r=this._getNodesInRange(),a=[],l=0,h=r.length,d=jindo.$A(r).filter(function(e){return!e.firstChild||t&&"LI"==e.tagName}),c=this.commonAncestorContainer;if(t)for(;c;){if("LI"==c.tagName){this._isFullyContained(c,d)&&(a[l++]=c);break}c=c.parentNode}for(var p=0;h>p;p++)if(i=r[p])if(t&&"LI"==i.tagName&&this._isFullyContained(i,d))a[l++]=i;else if(3==i.nodeType&&""!=i.nodeValue&&!i.nodeValue.match(/^(\r|\n)+$/)){var _=nhn.DOMFix.parentNode(i);if("SPAN"==_.tagName){if(this._isFullyContained(_,d,i)){a[l++]=_;continue}}else{var E=this._findParentSingleSpan(_);if(E){a[l++]=E;continue}}n=this._document.createElement("SPAN"),_.insertBefore(n,i),n.appendChild(i),a[l++]=n,e&&n.setAttribute(e,"true")}return this.setStartBefore(o),this.setEndAfter(s),a},_findParentSingleSpan:function(e){if(!e)return null;for(var t,i,n=0,o=0,s=e.childNodes;i=s[n];n++)if(t=i.nodeValue,!this._rxCursorHolder.test(t)&&(o++,o>1))return null;return"SPAN"===e.nodeName?e:this._findParentSingleSpan(e.parentNode)},_isFullyContained:function(e,t,i){var n,o,s=this._getVeryFirstRealChild(e);return n=i&&s==i?1:t.indexOf(s),-1!=n&&(s=this._getVeryLastRealChild(e),o=i&&s==i?1:t.indexOf(s)),-1!=n&&-1!=o},_getVeryFirstChild:function(e){return e.firstChild?this._getVeryFirstChild(e.firstChild):e},_getVeryLastChild:function(e){return e.lastChild?this._getVeryLastChild(e.lastChild):e},_getFirstRealChild:function(e){for(var t=e.firstChild;t&&3==t.nodeType&&""==t.nodeValue;)t=t.nextSibling;return t},_getLastRealChild:function(e){for(var t=e.lastChild;t&&3==t.nodeType&&""==t.nodeValue;)t=t.previousSibling;return t},_getVeryFirstRealChild:function(e){var t=this._getFirstRealChild(e);return t?this._getVeryFirstRealChild(t):e},_getVeryLastRealChild:function(e){var t=this._getLastRealChild(e);return t?this._getVeryLastChild(t):e},_getLineStartInfo:function(e){function t(e){if(e&&!n){if(a.test(e.tagName))return s=e,n=o,void(r=!0);o=e,i(e.previousSibling),n||t(nhn.DOMFix.parentNode(e))}}function i(e){if(e&&!n){if(a.test(e.tagName))return s=e,n=o,void(r=!1);if(e.firstChild&&"TABLE"!=e.tagName)for(var t=e.lastChild;t&&!n;)i(t),t=t.previousSibling;else o=e;n||i(e.previousSibling)}}var n=null,o=e,s=e,r=!1,a=this.rxLineBreaker;return a.test(e.tagName)?n=e:t(e),{oNode:n,oLineBreaker:s,bParentBreak:r}},_getLineEndInfo:function(e){function t(e){if(e&&!n){if(a.test(e.tagName))return s=e,n=o,void(r=!0);o=e,i(e.nextSibling),n||t(nhn.DOMFix.parentNode(e))}}function i(e){if(e&&!n){if(a.test(e.tagName))return s=e,n=o,void(r=!1);if(e.firstChild&&"TABLE"!=e.tagName)for(var t=e.firstChild;t&&!n;)i(t),t=t.nextSibling;else o=e;n||i(e.nextSibling)}}var n=null,o=e,s=e,r=!1,a=this.rxLineBreaker;return a.test(e.tagName)?n=e:t(e),{oNode:n,oLineBreaker:s,bParentBreak:r}},getLineInfo:function(e){var e=e||!1,t=this.getStartNode(),i=this.getEndNode();t||(t=this.getNodeAroundRange(!e,!0)),i||(i=this.getNodeAroundRange(!e,!0));var n=this._getLineStartInfo(t),o=n.oNode,s=this._getLineEndInfo(i),r=s.oNode;if(t!=o||i!=r){var a=this._compareEndPoint(nhn.DOMFix.parentNode(o),this._getPosIdx(o),this.endContainer,this.endOffset),l=this._compareEndPoint(nhn.DOMFix.parentNode(r),this._getPosIdx(r)+1,this.startContainer,this.startOffset);0>=a&&l>=0||(t=this.getNodeAroundRange(!1,!0),i=this.getNodeAroundRange(!1,!0),n=this._getLineStartInfo(t),s=this._getLineEndInfo(i))}return{oStart:n,oEnd:s}},_findSingleChild:function(e){if(!e)return null;for(var t,i,n=null,o=0,s=0,r=e.childNodes;i=r[o];o++)if(t=i.nodeValue,!this._rxCursorHolder.test(t)&&(n=i,s++,s>1))return null;return n},_hasCursorHolderOnly:function(e){return e&&1===e.nodeType?this._rxCursorHolder.test(e.innerHTML)?!0:this._hasCursorHolderOnly(this._findSingleChild(e)):!1}}).extend(nhn.W3CDOMRange),nhn.BrowserSelection=function(e){this.init=function(e){this._window=e||window,this._document=this._window.document},this.init(e),this._document.createRange?nhn.BrowserSelectionImpl_FF.apply(this):nhn.BrowserSelectionImpl_IE.apply(this),this.selectRange=function(e){this.selectNone(),this.addRange(e)},this.selectionLoaded=!0,this._oSelection||(this.selectionLoaded=!1)},nhn.BrowserSelectionImpl_FF=function(){this._oSelection=this._window.getSelection(),this.getRangeAt=function(e){e=e||0;try{var t=this._oSelection.getRangeAt(e)}catch(i){return new nhn.W3CDOMRange(this._window)}return this._FFRange2W3CRange(t)},this.addRange=function(e){var t=this._W3CRange2FFRange(e);this._oSelection.addRange(t)},this.selectNone=function(){this._oSelection.removeAllRanges()},this.getCommonAncestorContainer=function(e){var t=this._W3CRange2FFRange(e);return t.commonAncestorContainer},this.isCollapsed=function(e){var t=this._W3CRange2FFRange(e);return t.collapsed},this.compareEndPoints=function(e,t,i,n){var o=this._document.createRange(),s=this._document.createRange();o.setStart(e,t),s.setStart(i,n),o.collapse(!0),s.collapse(!0);try{return o.compareBoundaryPoints(1,s)}catch(r){return 1}},this._FFRLine truncated
|
||||||
|
this.sBlankPageURL="smart_editor2_inputarea.html",this.sBlankPageURL_EmulateIE7="smart_editor2_inputarea_ie8.html",this.aAddtionalEmulateIE7=[],this.htOptions=nhn.husky.SE2M_Configuration.SE_EditingAreaManager,this.htOptions&&(this.sBlankPageURL=this.htOptions.sBlankPageURL||this.sBlankPageURL,this.sBlankPageURL_EmulateIE7=this.htOptions.sBlankPageURL_EmulateIE7||this.sBlankPageURL_EmulateIE7,this.aAddtionalEmulateIE7=this.htOptions.aAddtionalEmulateIE7||this.aAddtionalEmulateIE7),this.aAddtionalEmulateIE7.push(8),this.sIFrameSrc=this.sBlankPageURL,t.ie&&jindo.$A(this.aAddtionalEmulateIE7).has(t.nativeVersion)&&(this.sIFrameSrc=this.sBlankPageURL_EmulateIE7);var i=this.sIFrameSrc,e=this.iframe,n=jindo.$Fn(this.initIframe,this).bind(),o=jindo.$Fn(function(){this.iframe.src=i},this).bind();!t.ie||t.version>=9&&document.addEventListener?(e.addEventListener("load",n,!1),e.addEventListener("error",o,!1)):(e.attachEvent("onload",n),e.attachEvent("onerror",o)),e.src=i,this.elEditingArea=e},$BEFORE_MSG_APP_READY:function(){this.oEditingArea=this.iframe.contentWindow.document,this.oApp.exec("REGISTER_EDITING_AREA",[this]),this.oApp.exec("ADD_APP_PROPERTY",["getWYSIWYGWindow",jindo.$Fn(this.getWindow,this).bind()]),this.oApp.exec("ADD_APP_PROPERTY",["getWYSIWYGDocument",jindo.$Fn(this.getDocument,this).bind()]),this.oApp.exec("ADD_APP_PROPERTY",["isWYSIWYGEnabled",jindo.$Fn(this.isWYSIWYGEnabled,this).bind()]),this.oApp.exec("ADD_APP_PROPERTY",["getRawHTMLContents",jindo.$Fn(this.getRawHTMLContents,this).bind()]),this.oApp.exec("ADD_APP_PROPERTY",["setRawHTMLContents",jindo.$Fn(this.setRawHTMLContents,this).bind()]),this.isWYSIWYGEnabled()&&this.oApp.exec("ENABLE_WYSIWYG_RULER"),this.oApp.registerBrowserEvent(this.getDocument().body,"paste","EVENT_EDITING_AREA_PASTE")},$ON_MSG_APP_READY:function(){this.oApp.hasOwnProperty("saveSnapShot")||(this.$ON_EVENT_EDITING_AREA_MOUSEUP=function(){},this._recordUndo=function(){}),this._bIERangeReset=!0,this.oApp.oNavigator.ie?(jindo.$Fn(function(e){var t=this.iframe.contentWindow.document.selection;t&&"control"===t.type.toLowerCase()&&8===e.key().keyCode&&(this.oApp.exec("EXECCOMMAND",["delete",!1,!1]),e.stop()),this._bIERangeReset=!1},this).attach(this.iframe.contentWindow.document,"keydown"),jindo.$Fn(function(e){this._oIERange=null,this._bIERangeReset=!0},this).attach(this.iframe.contentWindow.document.body,"mousedown"),this.getDocument().createRange||jindo.$Fn(this._onIEBeforeDeactivate,this).attach(this.iframe.contentWindow.document.body,"beforedeactivate"),jindo.$Fn(function(e){this._bIERangeReset=!1},this).attach(this.iframe.contentWindow.document.body,"mouseup")):this.oApp.oNavigator.bGPadBrowser&&(this.$ON_EVENT_TOOLBAR_TOUCHSTART=function(){this._oIERange=this.oApp.getSelection().cloneRange()}),this.fnSetBodyHeight=jindo.$Fn(this._setBodyHeight,this).bind(),this.fnCheckBodyChange=jindo.$Fn(this._checkBodyChange,this).bind(),this.fnSetBodyHeight(),this._setScrollbarWidth()},_setScrollbarWidth:function(){var e=this.getDocument(),t=e.createElement("div");t.style.width="100px",t.style.height="100px",t.style.overflow="scroll",t.style.position="absolute",t.style.top="-9999px",e.body.appendChild(t),this.nScrollbarWidth=t.offsetWidth-t.clientWidth,e.body.removeChild(t)},$AFTER_EVENT_EDITING_AREA_KEYUP:function(e){if(this.bAutoResize){var t=e.key();t.keyCode>=33&&t.keyCode<=40||t.alt||t.ctrl||16===t.keyCode||this._setAutoResize()}},$AFTER_PASTE_HTML:function(){this.bAutoResize&&this._setAutoResize()},startAutoResize:function(){this.oApp.exec("STOP_CHECKING_BODY_HEIGHT"),this.bAutoResize=!0;var e=this.oApp.oNavigator;e.ie&&e.version<9?jindo.$Element(this.getDocument().body).css({overflow:"visible"}):jindo.$Element(this.getDocument().body).css({overflowX:"visible",overflowY:"hidden"}),this._setAutoResize(),this.nCheckBodyInterval=setInterval(this.fnCheckBodyChange,500),this.oApp.exec("START_FLOAT_TOOLBAR")},stopAutoResize:function(){this.bAutoResize=!1,clearInterval(this.nCheckBodyInterval),this.oApp.exec("STOP_FLOAT_TOOLBAR"),jindo.$Element(this.getDocument().body).css({overflow:"visible",overflowY:"visible"}),this.oApp.exec("START_CHECKING_BODY_HEIGHT")},_checkBodyChange:function(){if(this.bAutoResize){var e=this.getDocument().body.innerHTML.length;e!==this.nBodyLength&&(this.nBodyLength=e,this._setAutoResize())}},_getResizeHeight:function(){var e,t,i,n,o=this.getDocument().body,s=["width","fontFamily","fontSize","fontWeight","fontStyle","lineHeight","letterSpacing","textTransform","wordSpacing"];if(this.oApp.oNavigator.msafari||!this.oApp.oNavigator.firefox&&!this.oApp.oNavigator.safari)return this.oApp.oNavigator.ie&&8===this.oApp.oNavigator.version&&8===document.documentMode&&jindo.$Element(o).css("height","0px"),t=parseInt(o.scrollHeight,10),t<this.nBodyMinHeight&&(t=this.nBodyMinHeight),t;for(this.elDummy||(this.elDummy=document.createElement("div"),this.elDummy.className="se2_input_wysiwyg",this.oApp.elEditingAreaContainer.appendChild(this.elDummy),this.elDummy.style.cssLine truncated
|
||||||
|
},_convertHeadSpace:function(e){var t;if(e&&(t=e.nextSibling)&&3===t.nodeType){for(var i,n=t.nodeValue,o="",s=0;(i=n[s])&&" "===i;s++)o+=" ";s>0&&(t.nodeValue=o+n.substring(s))}},_wrapBlock:function(e,t){var i,n,o,s=this.oApp.getSelection(),r=s.placeStringBookmark(),a=s.getLineInfo(),l=a.oStart,h=a.oEnd;if((!l.bParentBreak||s.rxBlockContainer.test(l.oLineBreaker.tagName))&&(e.stop(),s.deleteContents(),l.oNode.parentNode&&11!==l.oNode.parentNode.nodeType)){i=this.oApp.getWYSIWYGDocument().createElement(this.sLineBreaker),s.moveToBookmark(r),s.setStartBefore(l.oNode),this._addBlankText(s),s.surroundContents(i),s.collapseToEnd(),n=this.oApp.getWYSIWYGDocument().createElement(this.sLineBreaker);var d=this._getBlockEndNode(l.oNode,h.oNode);return d===l.oNode&&(d=h.oNode),s.setEndAfter(d),this._addBlankText(s),s.surroundContents(n),s.moveToStringBookmark(r,!0),s.collapseToEnd(),s.removeStringBookmark(r),s.select(),null!==n.lastChild&&"BR"==n.lastChild.tagName&&n.removeChild(n.lastChild),o=this._addCursorHolder(n),n.nextSibling&&"BR"==n.nextSibling.tagName&&n.parentNode.removeChild(n.nextSibling),s.selectNodeContents(o),s.collapseToStart(),s.select(),this.oApp.exec("CHECK_STYLE_CHANGE"),r=s.placeStringBookmark(),void setTimeout(jindo.$Fn(function(e){var t=s.getStringBookmark(e);t&&(s.moveToStringBookmark(e),s.select(),s.removeStringBookmark(e))},this).bind(r),0)}var c=s.getStringBookmark(r,!0);if(this.htBrowser.firefox)c&&c.nextSibling&&"IFRAME"==c.nextSibling.tagName?setTimeout(jindo.$Fn(function(e){var t=s.getStringBookmark(e);t&&(s.moveToStringBookmark(e),s.select(),s.removeStringBookmark(e))},this).bind(r),0):setTimeout(jindo.$Fn(function(e){var t=s.getStringBookmark(e,!0);t&&(this._convertHeadSpace(t),s.removeStringBookmark(e))},this).bind(r),0);else if(this.htBrowser.ie){var p=c.parentNode,_=!1,E=!1;if(!c||!p)return void s.removeStringBookmark(r);if(s.removeStringBookmark(r),_="U"===p.tagName||null!==nhn.husky.SE2M_Utils.findAncestorByTagName("U",p),E="S"===p.tagName||"STRIKE"===p.tagName||null!==nhn.husky.SE2M_Utils.findAncestorByTagName("S",p)&&null!==nhn.husky.SE2M_Utils.findAncestorByTagName("STRIKE",p),_||E)return void setTimeout(jindo.$Fn(this._addTextDecorationTag,this).bind(_,E),0);setTimeout(jindo.$Fn(this._addExtraCursorHolder,this).bind(p),0)}else this._convertHeadSpace(c),s.removeStringBookmark(r)},_addExtraCursorHolder:function(e){var t,i,n;if(e=this._getStyleOnlyNode(e),e&&"SPAN"===e.tagName){for(t=e.lastChild;t;)i=t.previousSibling,3===t.nodeType?(nhn.husky.SE2M_Utils.isBlankTextNode(t)&&t.parentNode.removeChild(t),t=i):t=i;n=e.innerHTML,""===n.replace("","").replace("\ufeff","")&&(e.innerHTML="")}var o,s=this.oApp.getSelection();s.collapsed&&(s.fixCommonAncestorContainer(),o=s.commonAncestorContainer,o&&(o=s._getVeryFirstRealChild(o),3===o.nodeType&&(o=o.parentNode),o&&"SPAN"===o.tagName&&(n=o.innerHTML,""===n.replace("","").replace("\ufeff","")&&(o.innerHTML=""),s.selectNodeContents(o),s.collapseToStart(),s.select())))},_addSpace:function(e){var t,i,n,o,s,r;if(e){if(3===e.nodeType)return e.parentNode;if("P"!==e.tagName)return e;if(s=jindo.$Element(e).child(function(e){return 1===e.$value().nodeType&&"IMG"===e.$value().tagName},1),s.length>0){for(r=s[s.length-1].$value(),i=r.nextSibling;i;)n=i.nextSibling,3!==i.nodeType||" "!==i.nodeValue&&i.nodeValue!==unescape("%u00A0")&&""!==i.nodeValue||e.removeChild(i),i=n;return e}for(i=e.firstChild,n=i,o=!1;i;)n=i.nextSibling,3===i.nodeType&&(i.nodeValue===unescape("%uFEFF")&&e.removeChild(i),o||" "!==i.nodeValue&&i.nodeValue!==unescape("%u00A0")&&""!==i.nodeValue||(o=!0)),i=n;return o||(t=this.tmpTextNode.cloneNode(),e.appendChild(t)),e}},_addTextDecorationTag:function(e,t){var i,n,o=this.oApp.getSelection();if(o.collapsed){for(i=o.startContainer;i;){if(3===i.nodeType){i=nhn.DOMFix.parentNode(i);break}if(!i.childNodes||0===i.childNodes.length)break;i=i.firstChild}i&&"U"!==i.tagName&&"S"!==i.tagName&&"STRIKE"!==i.tagName&&(e&&(n=o._document.createElement("U"),i.appendChild(n),i=n),t&&(n=o._document.createElement("STRIKE"),i.appendChild(n)),n.innerHTML="",o.selectNodeContents(n),o.collapseToEnd(),o.select())}},_getStyleNode:function(e){for(;e.firstChild&&this.oSelection._isBlankTextNode(e.firstChild);)e.removeChild(e.firstChild);var t=e.firstChild;return t?3===t.nodeType||1===t.nodeType&&("IMG"==t.tagName||"BR"==t.tagName||"HR"==t.tagName||"IFRAME"==t.tagName)?e:this._getStyleNode(e.firstChild):e},_getStyleOnlyNode:function(e){if(!e)return null;if(!e.insertBefore)return null;if("IMG"==e.tagName||"BR"==e.tagName||"HR"==e.tagName||"IFRAME"==e.tagName)return null;for(;e.firstChild&&this.oSelection._isBlankTextNode(e.firstChild);)e.removeChild(e.firstChild);return e.childNodes.length>1?null:e.firstChild?3===e.firstChild.nodeType?nhn.husky.SE2M_Utils.isBlankTextNode(e.firstChild)?e:null:this._getStyleOnlyNode(e.firstChild):e},_insertBR:function(e){e.stop();var t=this.oApp.getSelection(),i=this.oApp.getWYSIWYGDocument().createLine truncated
|
||||||
|
e.parentNode.insertBefore(a,e),void a.appendChild(e))}r=parseInt(e.style.marginLeft,10),r||(r=0),r+=this.nIndentSpacing,e.style.marginLeft=r+"px"},_outdentMargin:function(e){for(var t,i,n,o,s,r,a=e;a;){if(a.tagName&&"LI"===a.tagName){e=a;break}a=a.parentNode}if("LI"!==e.tagName)r=parseInt(e.style.marginLeft,10),r||(r=0),r-=this.nIndentSpacing,0>r&&(r=0),e.style.marginLeft=r+"px";else{if(t=e.parentNode,i=e.parentNode,e.previousSibling&&e.previousSibling.tagName&&e.previousSibling.tagName.match(/LI|UL|OL/))if(e.nextSibling&&e.nextSibling.tagName&&e.nextSibling.tagName.match(/LI|UL|OL/)){for(n=t.cloneNode(!1);e.nextSibling;)n.insertBefore(e.nextSibling,null);t.parentNode.insertBefore(n,t.nextSibling),i=n}else i=t.nextSibling;if(t.parentNode.insertBefore(e,i),t.innerHTML.match(/LI/i)||t.parentNode.removeChild(t),!e.parentNode.tagName.match(/OL|UL/)){for(o=e.parentNode,i=e,s=this.oApp.getWYSIWYGDocument(),o=s.createElement("P"),i=null,e.parentNode.insertBefore(o,e);e.firstChild;)o.insertBefore(e.firstChild,i);e.parentNode.removeChild(e)}}},_insertBlankLine:function(){var e=this.oApp.getSelection(),t=e.commonAncestorContainer;for(this.elP1=null,this.elP2=null;t;){if("BLOCKQUOTE"==t.tagName){this.elP1=jindo.$("<p> </p>",this.oApp.getWYSIWYGDocument()),t.parentNode.insertBefore(this.elP1,t),this.elP2=jindo.$("<p> </p>",this.oApp.getWYSIWYGDocument()),t.parentNode.insertBefore(this.elP2,t.nextSibling);break}t=t.parentNode}if(!this.elP1&&!this.elP2){t=e.commonAncestorContainer,t=1!==t.nodeType?t.parentNode:t;var i=t.previousSibling,n=t.nextSibling;i&&"BLOCKQUOTE"===i.tagName&&(this.elP1=jindo.$("<p> </p>",this.oApp.getWYSIWYGDocument()),i.parentNode.insertBefore(this.elP1,i.nextSibling)),n&&"BLOCKQUOTE"===n.tagName&&(this.elP1=jindo.$("<p> </p>",this.oApp.getWYSIWYGDocument()),n.parentNode.insertBefore(this.elP1,n))}},_fixCorruptedBlockQuote:function(e){var t,i,n,o,s,r,a,l,h,d=this.oApp.getWYSIWYGDocument().getElementsByTagName(e);for(s=0,r=d.length;r>s;s++)if(d[s].firstChild&&d[s].firstChild.tagName==e){t=d[s];break}if(t){for(i=t.parentNode,a=this._getPosIdx(t),l=this.oApp.getWYSIWYGDocument().createElement("DIV"),l.innerHTML=t.outerHTML.replace("<"+e,"<BLOCKQUOTE"),t.parentNode.insertBefore(l.firstChild,t),t.parentNode.removeChild(t),n=i.childNodes[a],o=n.getElementsByTagName(e),s=0,r=o.length;r>s;s++)o[s].childNodes.length<1&&o[s].parentNode.removeChild(o[s]);h=this.oApp.getEmptySelection(),h.selectNodeContents(n),h.collapseToEnd(),h.select()}},_removeBlockQuote:function(){for(var e,t,i,n="Apple-style-span",o=this.oApp.getSelection(),s=o.commonAncestorContainer,r=s;s;)"LI"===s.tagName?(i=s,s="display: inline !important; "===s.style.cssText?s.parentNode:null):"SPAN"===s.tagName&&s.className===n?(e=s,s=i?null:s.parentNode):s=s.parentNode;for(i&&e&&(s=e.parentNode,s.replaceChild(r,e),o.selectNodeContents(s),o.collapseToEnd(),o.select());s;)if("BLOCKQUOTE"===s.tagName){t=s.getElementsByClassName(n);for(var a=0;e=t[a];a++)e.parentNode.removeChild(e);s=null}else s=s.parentNode},_getPosIdx:function(e){for(var t=0,i=e.previousSibling;i;i=i.previousSibling)t++;return t},_countClickCr:function(e){e.match(this.rxClickCr)&&this.oApp.exec("MSG_NOTIFY_CLICKCR",[e.replace(/^insert/i,"")])},_extendBlock:function(){var e=this.oApp.getSelection(),t=e.startContainer,i=e.endContainer,n=[],o=[],s=e.cloneRange();if(t===i&&1===t.nodeType&&"P"===t.tagName&&(n=jindo.$A(t.childNodes).filter(function(e,t,i){return 1===e.nodeType&&"IMG"===e.tagName}).$value(),o=jindo.$A(e.getNodes()).filter(function(e,t,i){return 1===e.nodeType&&"IMG"===e.tagName}).$value(),!(n.length<=o.length)))return e.selectNode(t),e.select(),s}}),nhn.husky.SE_WYSIWYGStyler=jindo.$Class({name:"SE_WYSIWYGStyler",_sCursorHolder:"\ufeff",$init:function(){var e=jindo.$Agent().navigator();e.ie&&e.version>8&&(this._sCursorHolder="",this.$ON_REGISTER_CONVERTERS=function(){var e=/\u2060/g;this.oApp.exec("ADD_CONVERTER",["WYSIWYG_TO_IR",jindo.$Fn(function(t){return t.replace(e,"\ufeff")},this).bind()])})},$PRECONDITION:function(e,t){return"WYSIWYG"==this.oApp.getEditingMode()},$ON_SET_WYSIWYG_STYLE:function(e){var t=this.oApp.getSelection(),i={};this.oApp.exec("IS_SELECTED_TD_BLOCK",["bIsSelectedTd",i]);var n=i.bIsSelectedTd;if(t.collapsed&&!n){this.oApp.exec("RECORD_UNDO_ACTION",["FONT STYLE",{bMustBlockElement:!0}]);var o,s=!1,r=t.commonAncestorContainer;3==r.nodeType&&(r=r.parentNode),r&&t._rxCursorHolder.test(r.innerHTML)&&(o=t._findParentSingleSpan(r)),o?""==o.innerHTML&&(o.innerHTML=this._sCursorHolder):(o=this.oApp.getWYSIWYGDocument().createElement("SPAN"),o.innerHTML=this._sCursorHolder,s=!0);var a;for(var l in e)a=e[l],"string"==typeof a&&(o.style[l]=a);if(s)if("BODY"==t.startContainer.tagName&&0===t.startOffset){var h=t._getVeryFirstRealChild(this.oApp.getWYSIWYGDocument().body),d=!0,c=h.cloneNode(!1);try{c.innerHTML="test","test"!=c.innerHTML&&(d=!1)}catch(p){d=!1}d&&1==c.nodeType&&"BR"==c.tagName?(t.selectNode(h),t.collapseToStart(),t.insertNoLine truncated
|
||||||
|
i=this.htOptions.htMainFont,n=this.htOptions.aFontInUse,this.htBrowser.ie&&t)for(o=0;o<t.length;o++)this.addFont(t[o].id,t[o].name,t[o].size,t[o].url,t[o].cssUrl);for(o=0;o<e.length;o++)this.addFont(e[o][0],e[o][1],0,"","",1);if(i&&i.id&&this.setMainFont(i.id,i.name,i.size,i.url,i.cssUrl),this.htBrowser.ie&&n)for(o=0;o<n.length;o++)this.addFontInUse(n[o].id,n[o].name,n[o].size,n[o].url,n[o].cssUrl)}if(this.htOptions&&this.htOptions.aDefaultFontList&&0!==this.htOptions.aDefaultFontList.length||(this.addFont("돋움,Dotum","돋움",0,"","",1,null,!0),this.addFont("돋움체,DotumChe,AppleGothic","돋움체",0,"","",1,null,!0),this.addFont("굴림,Gulim","굴림",0,"","",1,null,!0),this.addFont("굴림체,GulimChe","굴림체",0,"","",1,null,!0),this.addFont("바탕,Batang,AppleMyungjo","바탕",0,"","",1,null,!0),this.addFont("바탕체,BatangChe","바탕체",0,"","",1,null,!0),this.addFont("궁서,Gungsuh,GungSeo","궁서",0,"","",1,null,!0),this.addFont("Arial","Arial",0,"","",1,"abcd",!0),this.addFont("Tahoma","Tahoma",0,"","",1,"abcd",!0),this.addFont("Times New Roman","Times New Roman",0,"","",1,"abcd",!0),this.addFont("Verdana","Verdana",0,"","",1,"abcd",!0),this.addFont("Courier New","Courier New",0,"","",1,"abcd",!0)),this.aAdditionalFontList&&this.aAdditionalFontList.length>0)for(o=0,nLen=this.aAdditionalFontList.length;o<nLen;o++)this.addFont(this.aAdditionalFontList[o][0],this.aAdditionalFontList[o][1],0,"","",1)},$ON_MSG_APP_READY:function(){this.bDoNotRecordUndo=!1,this.oApp.exec("ADD_APP_PROPERTY",["addFont",jindo.$Fn(this.addFont,this).bind()]),this.oApp.exec("ADD_APP_PROPERTY",["addFontInUse",jindo.$Fn(this.addFontInUse,this).bind()]),this.oApp.exec("ADD_APP_PROPERTY",["setMainFont",jindo.$Fn(this.setMainFont,this).bind()]),this.oApp.exec("ADD_APP_PROPERTY",["setDefaultFont",jindo.$Fn(this.setDefaultFont,this).bind()]),this.oApp.exec("REGISTER_UI_EVENT",["fontName","click","SE2M_TOGGLE_FONTNAME_LAYER"])},$AFTER_MSG_APP_READY:function(){this._initFontName(),this._attachIEEvent()},_assignHTMLElements:function(e){this.oDropdownLayer=jindo.$$.getSingle("DIV.husky_se_fontName_layer",e),this.elFontNameLabel=jindo.$$.getSingle("SPAN.husky_se2m_current_fontName",e),this.elFontNameList=jindo.$$.getSingle("UL",this.oDropdownLayer),this.elInnerLayer=this.elFontNameList.parentNode,this.aelFontInMarkup=jindo.$$("LI",this.oDropdownLayer),this.elFontItemTemplate=this.aelFontInMarkup.shift(),this.aLIFontNames=jindo.$A(jindo.$$("LI",this.oDropdownLayer)).filter(function(e,t,i){return null!==e.firstChild})._array,this.sDefaultText=this.elFontNameLabel.innerHTML},_initFontName:function(){this._addFontInMarkup(),this.addAllFonts();var e;this.oApp.getCurrentStyle&&(e=this.oApp.getCurrentStyle())&&this.$ON_MSG_STYLE_CHANGED("fontFamily",e.fontFamily),this.oApp.registerBrowserEvent(this.oDropdownLayer,"mouseover","EVENT_FONTNAME_LAYER_MOUSEOVER",[]),this.oApp.registerBrowserEvent(this.oDropdownLayer,"click","EVENT_FONTNAME_LAYER_CLICKED",[])},_checkFontLI:function(e,t){if(!e)return!1;var i=IsInstalledFont(t);return e.style.display=i?"block":"none",i},_addFontInMarkup:function(){for(var e,t,i,n,o=0;e=this.aelFontInMarkup[o];o++)e.firstChild?(t=this._getFontFamilyFromLI(e).replace(this._rxQuote,"").replace(this._rxComma,","),n|=this._checkFontLI(e,t)):e.className.indexOf(this.FONT_SEPARATOR)>-1?(i&&(i.style.display=n?"block":"none"),i=e,n=!1):e.style.display="none";i&&(i.style.display=n?"block":"none")},_attachIEEvent:function(){if(this.htBrowser.ie){if(this.htBrowser.nativeVersion<9)return this._wfOnPasteWYSIWYGBody=jindo.$Fn(this._onPasteWYSIWYGBody,this),void this._wfOnPasteWYSIWYGBody.attach(this.oApp.getWYSIWYGDocument().body,"paste");if(document.documentMode<9)return this._wfOnFocusWYSIWYGBody=jindo.$Fn(this._onFocusWYSIWYGBody,this),void this._wfOnFocusWYSIWYGBody.attach(this.oApp.getWYSIWYGDocument().body,"focus");this.welEditingAreaCover=jindo.$Element('<DIV style="width:100%; height:100%; position:absolute; top:0px; left:0px; z-index:1000;"></DIV>'),this.oApp.welEditingAreaContainer.prepend(this.welEditingAreaCover),jindo.$Fn(this._onMouseupCover,this).attach(this.welEditingAreaCover.$value(),"mouseup")}},_onFocusWYSIWYGBody:function(e){this._wfOnFocusWYSIWYGBody.detach(this.oApp.getWYSIWYGDocument().body,"focus"),this._loadAllBaseFont()},_onPasteWYSIWYGBody:function(e){this._wfOnPasteWYSIWYGBody.detach(this.oApp.getWYSIWYGDocument().body,"paste"),this._loadAllBaseFont()},_onMouseupCover:function(e){e.stop(),this.welEditingAreaCover&&this.welEditingAreaCover.leave();var t=e.mouse(),i=this.oApp.getWYSIWYGDocument().body,n=jindo.$Element(i),o=this.oApp.getEmptySelection();if(o.selectNode(i),o.collapseToStart(),o.select(),n.fireEvent("mousedown",{left:t.left,middle:t.middle,right:t.right}),n.fireEvent("mouseup",{left:t.left,middle:t.middle,right:t.right}),this.oApp.oNavigator.ie&&document.documentMode<11&&"WYSIWYG"===this.oApp.getEditingMode()){if("<p></p>"==this.oApp.getWYSIWYGDocument().body.innerHTML){this.Line truncated
|
||||||
|
border:"",borderLeft:"",borderBottom:""}),jindo.$Element(n).attr({border:0,cellpadding:1}),o=jindo.$$("tbody>tr>td",n),jindo.$A(o).forEach(function(e,t,i){jindo.$Element(e).css({border:"",borderTop:"",borderRight:""})})},dbToIrDOM:function(e){var t=[],i=jindo.$$("table[class=__se_tbl]",e,{oneTimeOffCache:!0});if(jindo.$A(i).forEach(function(e,i,n){jindo.$Element(e).attr("attr_no_border_tbl")&&t.push(e)},this),!(t.length<1))for(var n,o=[],s=0,r=t.length;r>s;s++)n=t[s],jindo.$Element(n).css({border:"1px dashed #c7c7c7",borderLeft:0,borderBottom:0}),jindo.$Element(n).attr({border:1,cellpadding:0}),o=jindo.$$("tbody>tr>td",n),jindo.$A(o).forEach(function(e,t,i){jindo.$Element(e).css({border:"1px dashed #c7c7c7",borderTop:0,borderRight:0})})}}),nhn.husky.SE2M_TableBlockStyler=jindo.$Class({name:"SE2M_TableBlockStyler",nSelectedTD:0,htSelectedTD:{},aTdRange:[],$init:function(){},$LOCAL_BEFORE_ALL:function(){return"WYSIWYG"==this.oApp.getEditingMode()},$ON_MSG_APP_READY:function(){this.oDocument=this.oApp.getWYSIWYGDocument()},$ON_EVENT_EDITING_AREA_MOUSEUP:function(e){"WYSIWYG"==this.oApp.getEditingMode()&&this.setTdBlock()},$ON_IS_SELECTED_TD_BLOCK:function(e,t){return this.nSelectedTD>0?(t[e]=!0,t[e]):(t[e]=!1,t[e])},$ON_GET_SELECTED_TD_BLOCK:function(e,t){t[e]=this.htSelectedTD.aTdCells},setTdBlock:function(){this.oApp.exec("GET_SELECTED_CELLS",["aTdCells",this.htSelectedTD]);var e=this.htSelectedTD.aTdCells;e&&(this.nSelectedTD=e.length)},$ON_DELETE_BLOCK_CONTENTS:function(){var e,t,i,n=this;this.setTdBlock();for(var o=0;o<this.nSelectedTD;o++)jindo.$Element(this.htSelectedTD.aTdCells[o]).child(function(o){e=jindo.$Element(o._element.parentNode),e.remove(o),t=n.oDocument.createElement("P"),i=jindo.$Agent().navigator().firefox?n.oDocument.createElement("BR"):n.oDocument.createTextNode(" "),t.appendChild(i),e.append(t)},1)}}),nhn.husky.SE2M_StyleRemover=jindo.$Class({name:"SE2M_StyleRemover",$ON_MSG_APP_READY:function(){this.oApp.exec("REGISTER_UI_EVENT",["styleRemover","click","CHOOSE_REMOVE_STYLE",[]])},$LOCAL_BEFORE_FIRST:function(){this.oHuskyRange=this.oApp.getEmptySelection(),this._document=this.oHuskyRange._document},$ON_CHOOSE_REMOVE_STYLE:function(e){var t=!1,i={};this.oApp.exec("IS_SELECTED_TD_BLOCK",["bIsSelectedTd",i]),t=i.bIsSelectedTd,this.oApp.exec("RECORD_UNDO_BEFORE_ACTION",["REMOVE STYLE",{bMustBlockElement:!0}]),t?this.oApp.exec("REMOVE_STYLE_IN_BLOCK",[]):this.oApp.exec("REMOVE_STYLE",[]),this.oApp.exec("RECORD_UNDO_AFTER_ACTION",["REMOVE STYLE",{bMustBlockElement:!0}]),this.oApp.exec("MSG_NOTIFY_CLICKCR",["noeffect"])},$ON_REMOVE_STYLE_IN_BLOCK:function(e){var t={};this.oSelection=this.oApp.getSelection(),this.oApp.exec("GET_SELECTED_TD_BLOCK",["aTdCells",t]);for(var i=t.aTdCells,n=0;n<i.length;n++)this.oSelection.selectNodeContents(i[n]),this.oSelection.select(),this.oApp.exec("REMOVE_STYLE",[])},$ON_REMOVE_STYLE:function(e){if(e&&e.commonAncestorContainer||(e=this.oApp.getSelection()),!e.collapsed){e.expandBothEnds();var t=e.placeStringBookmark(),i=e.getNodes(!0);this._removeStyle(i),e.moveToBookmark(t);for(var i=e.getNodes(!0),n=0;n<i.length;n++){var o=i[n];o.style&&"BR"!=o.tagName&&"TD"!=o.tagName&&"TR"!=o.tagName&&"TBODY"!=o.tagName&&"TABLE"!=o.tagName&&(o.removeAttribute("align"),o.removeAttribute("style"),"inline"!=jindo.$Element(o).css("display")||"IMG"==o.tagName||"IFRAME"==o.tagName||o.firstChild&&!e._isBlankTextNode(o.firstChild)||o.parentNode.removeChild(o))}e.moveToBookmark(t),"TBODY"===e.commonAncestorContainer.tagName&&(e=this.oApp.getSelection()),e.select();for(var s=this._document.getElementById(e.HUSKY_BOOMARK_START_ID_PREFIX+t);s;){for(oParent=nhn.DOMFix.parentNode(s),oParent.removeChild(s);oParent&&(!oParent.firstChild||!oParent.firstChild.nextSibling&&e._isBlankTextNode(oParent.firstChild));){var r=oParent.parentNode;oParent.parentNode.removeChild(oParent),oParent=r}s=this._document.getElementById(e.HUSKY_BOOMARK_START_ID_PREFIX+t)}for(var s=this._document.getElementById(e.HUSKY_BOOMARK_END_ID_PREFIX+t);s;){for(oParent=nhn.DOMFix.parentNode(s),oParent.removeChild(s);oParent&&(!oParent.firstChild||!oParent.firstChild.nextSibling&&e._isBlankTextNode(oParent.firstChild));){var r=oParent.parentNode;oParent.parentNode.removeChild(oParent),oParent=r}s=this._document.getElementById(e.HUSKY_BOOMARK_END_ID_PREFIX+t)}this.oApp.exec("CHECK_STYLE_CHANGE")}},$ON_REMOVE_STYLE2:function(e){this._removeStyle(e)},$ON_REMOVE_STYLE_AND_PASTE_HTML:function(e,t){var i,n,o,s,r;if(i=jindo.$Agent().navigator(),!e)return!1;"WYSIWYG"!=this.oApp.getEditingMode()&&this.oApp.exec("CHANGE_EDITING_MODE",["WYSIWYG"]),t||this.oApp.exec("RECORD_UNDO_BEFORE_ACTION",["REMOVE STYLE AND PASTE HTML"]),r=this.oApp.getSelection(),r.deleteContents(),n=this.oApp.getWYSIWYGDocument().createElement("DIV"),r.insertNode(n),i.webkit&&(n.innerHTML=" "),r.selectNode(n),this.oApp.exec("REMOVE_STYLE",[r]),i.ie?e+="<p> </p>":i.firefox&&(e+="<p>\ufeff<br></p>"),r.selectNode(n),r.pasteHTML(e),s=r.getNodes()||[];Line truncated
|
||||||
|
2===o.length&&"SHW-"===o[0]&&"Safari"===o[1]?i.bGalaxyBrowser=!0:e.indexOf("LG-V500")>-1&&e.indexOf("Version/4.0")>-1&&(i.bGPadBrowser=!0),"undefined"==typeof n.ios&&(n.ios=e.indexOf("iPad")>-1||e.indexOf("iPhone")>-1,n.ios&&(o=e.match(/(iPhone )?OS ([\d|_]+)/),null!=o&&void 0!=o[2]&&(n.version=String(o[2]).split("_").join("."))))}(),nhn.husky.SE2M_UtilPlugin=jindo.$Class({name:"SE2M_UtilPlugin",$BEFORE_MSG_APP_READY:function(){this.oApp.exec("ADD_APP_PROPERTY",["oAgent",jindo.$Agent()]),this.oApp.exec("ADD_APP_PROPERTY",["oNavigator",jindo.$Agent().navigator()]),this.oApp.exec("ADD_APP_PROPERTY",["oUtils",this])},$ON_REGISTER_HOTKEY:function(e,t,i,n){this.oApp.exec("ADD_HOTKEY",[e,t,i,n||this.oApp.getWYSIWYGDocument()])},$ON_SE2_ATTACH_HOVER_EVENTS:function(e){this.oApp.exec("ATTACH_HOVER_EVENTS",[e,{fnElmToSrc:this._elm2Src,fnElmToTarget:this._elm2Target}])},_elm2Src:function(e){return"LI"==e.tagName&&e.firstChild&&"BUTTON"==e.firstChild.tagName?e.firstChild:e},_elm2Target:function(e){return"BUTTON"==e.tagName&&"LI"==e.parentNode.tagName?e.parentNode:e},getScrollXY:function(){var e,t,i=this.oApp.getWYSIWYGWindow();return"undefined"==typeof i.scrollX?(e=i.document.documentElement.scrollLeft,t=i.document.documentElement.scrollTop):(e=i.scrollX,t=i.scrollY),{x:e,y:t}}}),nhn.husky.SE2M_Utils={sURLPattern:"(http|https|ftp|mailto):(?:\\/\\/)?((:?\\w|-)+(:?\\.(:?\\w|-)+)+)([^ <>]+)?",getCustomCSS:function(e,t,i){var n=[];if("undefined"==typeof e||"undefined"==typeof t||!e||!t)return n;var o=e.match(t);return o&&o[0]&&o[1]&&(i?n=o[1].split(i):n[0]=o[1]),n},toStringSamePropertiesOfArray:function(e,t,i){if(e instanceof Array){for(var n=[],o=0;o<e.length;o++)n.push(e[o][t]);return n.join(",").replace(/,/g,i)}return"undefined"==typeof e[t]?"":"string"==typeof e[t]?e[t]:void 0},makeArray:function(e){if(null===e||"undefined"==typeof e)return[];if(e instanceof Array)return e;var t=[];return t.push(e),t},ellipsis:function(e,t,i,n){i=i||"...","undefined"==typeof n&&(n=1);var o=jindo.$Element(e),s=jindo.$Element(t),r=o.html(),a=r.length,l=s.height(),h=0;o.html("A");var d=s.height();if(d*(n+.5)>l)return o.html(r);for(l=d;d*(n+.5)>l;)h+=Math.max(Math.ceil((a-h)/2),1),o.html(r.substring(0,h)+i),l=s.height();for(;l>d*(n+.5);)h--,o.html(r.substring(0,h)+i),l=s.height()},ellipsisByPixel:function(e,t,i,n){t=t||"...";var o=jindo.$Element(e),s=o.width();if(!(i>s)){var r=o.html(),a=r.length,l=0;if("undefined"==typeof n){var h=o.html("A").width();for(s=h;i>s;)l+=Math.max(Math.ceil((a-l)/2),1),o.html(r.substring(0,l)+t),s=o.width();n=function(){return!0}}for(l=o.html().length-t.length;s>i&&n();)l--,o.html(r.substring(0,l)+t),s=o.width()}},ellipsisElementsToDesinatedWidth:function(e,t,i,n){jindo.$A(e).forEach(function(e,o){e||jindo.$A.Continue(),nhn.husky.SE2M_Utils.ellipsisByPixel(e,t,i[o],n)})},paddingZero:function(e,t){for(var i=e.toString();i.length<t;)i="0"+i;return i},cutStringToByte:function(e,t,i){if(null===e||0===e.length)return e;e=e.replace(/ +/g," "),i||""==i||(i="...");for(var n=t,o=0,s=e.length,r=0;s>r;r++){if(o+=this.getCharByte(e.charAt(r)),o==n)return r==s-1?e:e.substring(0,r)+i;if(o>n)return e.substring(0,r)+i}return e},getCharByte:function(e){if(null===e||e.length<1)return 0;var t=0,i=escape(e);return 1==i.length?t++:-1!=i.indexOf("%u")?t+=2:-1!=i.indexOf("%")&&(t+=i.length/3),t},getFilteredHashTable:function(e,t){if(!(t instanceof Array))return arguments.callee.call(this,e,[t]);var i=jindo.$A(t);return jindo.$H(e).filter(function(e,t){return i.has(t)&&e?!0:!1}).$value()},isBlankNode:function(e){var t=this.isBlankTextNode,i=function(e){return e?t(e)?!0:"BR"==e.tagName?!0:" "==e.innerHTML||""==e.innerHTML?!0:!1:!0},n=function(e){if("IMG"==e.tagName||"IFRAME"==e.tagName)return!1;if(i(e))return!0;if("P"==e.tagName){for(var n=e.childNodes.length-1;n>=0;n--){var o=e.childNodes[n];t(o)&&o.parentNode.removeChild(o)}if(1==e.childNodes.length){if("IMG"==e.firstChild.tagName||"IFRAME"==e.firstChild.tagName)return!1;if(i(e.firstChild))return!0}}return!1};if(n(e))return!0;for(var o=0,s=e.childNodes.length;s>o;o++){var r=e.childNodes[o];if(!n(r))return!1}return!0},isBlankTextNode:function(e){var t;return 3==e.nodeType&&(t=e.nodeValue,t=t.replace(unescape("%uFEFF"),""),""==t)?!0:!1},isFirstChildOfNode:function(e,t,i){return i&&i.tagName==t&&i.firstChild.tagName==e?!0:!1},findAncestorByTagName:function(e,t){for(;t&&t.tagName!=e;)t=t.parentNode;return t},findAncestorByTagNameWithCount:function(e,t){for(var i=0,n={};t&&t.tagName!=e;)t=t.parentNode,i+=1;return n={elNode:t,nRecursiveCount:i}},findClosestAncestorAmongTagNames:function(e,t){for(var i=new RegExp("^("+e.join("|")+")$","i");t&&!i.test(t.tagName);)t=t.parentNode;return t},findClosestAncestorAmongTagNamesWithCount:function(e,t){for(var i=0,n={},o=new RegExp("^("+e.join("|")+")$","i");t&&!o.test(t.tagName);)t=t.parentNode,i+=1;return n={elNode:t,nRecursiveCount:i}},loadCSS:function(e,t){var i=document,n=i.getElementsByTagName("HEAD")[0],o=i.createElement("LINK");o.setAtLine truncated
|
||||||
|
return"%u"+e}).split(" "),this.charSet[5]=unescape("3041 3042 3043 3044 3045 3046 3047 3048 3049 304A 304B 304C 304D 304E 304F 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 305A 305B 305C 305D 305E 305F 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 306A 306B 306C 306D 306E 306F 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 307A 307B 307C 307D 307E 307F 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 308A 308B 308C 308D 308E 308F 3090 3091 3092 3093 30A1 30A2 30A3 30A4 30A5 30A6 30A7 30A8 30A9 30AA 30AB 30AC 30AD 30AE 30AF 30B0 30B1 30B2 30B3 30B4 30B5 30B6 30B7 30B8 30B9 30BA 30BB 30BC 30BD 30BE 30BF 30C0 30C1 30C2 30C3 30C4 30C5 30C6 30C7 30C8 30C9 30CA 30CB 30CC 30CD 30CE 30CF 30D0 30D1 30D2 30D3 30D4 30D5 30D6 30D7 30D8 30D9 30DA 30DB 30DC 30DD 30DE 30DF 30E0 30E1 30E2 30E3 30E4 30E5 30E6 30E7 30E8 30E9 30EA 30EB 30EC 30ED 30EE 30EF 30F0 30F1 30F2 30F3 30F4 30F5 30F6").replace(/(\S{4})/g,function(e){return"%u"+e}).split(" ");var t=jindo.$Fn(this.oApp.exec,this.oApp).bind("INSERT_SCHARACTERS",[this.oTextField.value]);jindo.$Fn(t,this).attach(this.oInsertButton,"click"),this.oApp.exec("SET_SCHARACTER_LIST",[this.charSet]);for(var i=0;i<this.aLabel.length;i++){var n=jindo.$Fn(this.oApp.exec,this.oApp).bind("CHANGE_SCHARACTER_SET",[i]);jindo.$Fn(n,this).attach(this.aLabel[i].firstChild,"mousedown")}for(var i=0;i<this.aCloseButton.length;i++)this.oApp.registerBrowserEvent(this.aCloseButton[i],"click","HIDE_ACTIVE_LAYER",[]);this.oApp.registerBrowserEvent(this.elDropdownLayer,"click","EVENT_SCHARACTER_CLICKED",[]),this.oApp.registerBrowserEvent(this.oTextField,"keydown","EVENT_SCHARACTER_KEYDOWN")},$ON_EVENT_SCHARACTER_KEYDOWN:function(e){e.key().enter&&(this.oApp.exec("INSERT_SCHARACTERS"),e.stop())},$ON_TOGGLE_SCHARACTER_LAYER:function(){this.oTextField.value="",this.oSelection=this.oApp.getSelection(),this.oApp.exec("TOGGLE_TOOLBAR_ACTIVE_LAYER",[this.elDropdownLayer,null,"MSG_SCHARACTER_LAYER_SHOWN",[],"MSG_SCHARACTER_LAYER_HIDDEN",[""]]),this.oApp.exec("MSG_NOTIFY_CLICKCR",["symbol"])},$ON_MSG_SCHARACTER_LAYER_SHOWN:function(){this.oTextField.focus(),this.oApp.exec("SELECT_UI",["sCharacter"])},$ON_MSG_SCHARACTER_LAYER_HIDDEN:function(){this.oApp.exec("DESELECT_UI",["sCharacter"])},$ON_EVENT_SCHARACTER_CLICKED:function(e){var t=nhn.husky.SE2M_Utils.findAncestorByTagName("BUTTON",e.element);if(t&&"BUTTON"==t.tagName&&"LI"==t.parentNode.tagName){var i=t.firstChild.innerHTML;i.length>1||(this.oApp.exec("SELECT_SCHARACTER",[i]),e.stop())}},$ON_SELECT_SCHARACTER:function(e){if(this.oTextField.value+=e,this.oTextField.createTextRange){var t=this.oTextField.createTextRange();t.collapse(!1),t.select()}else this.oTextField.selectionEnd&&(this.oTextField.selectionEnd=this.oTextField.value.length,this.oTextField.focus())},$ON_INSERT_SCHARACTERS:function(){this.oApp.exec("RECORD_UNDO_BEFORE_ACTION",["INSERT SCHARACTER"]),this.oApp.exec("PASTE_HTML",[this.oTextField.value]),this.oApp.exec("FOCUS"),this.oApp.exec("RECORD_UNDO_AFTER_ACTION",["INSERT SCHARACTER"]),this.oApp.exec("HIDE_ACTIVE_LAYER",[])},$ON_CHANGE_SCHARACTER_SET:function(e){for(var t=0;t<this.aSCharList.length;t++)if(jindo.$Element(this.aLabel[t]).hasClass("active")){if(t==e)return;jindo.$Element(this.aLabel[t]).removeClass("active")}this._drawSCharList(e),jindo.$Element(this.aLabel[e]).addClass("active")},$ON_SET_SCHARACTER_LIST:function(e){this.charSet=e,this.bSCharSetDrawn=new Array(this.charSet.length),this._drawSCharList(0)},_drawSCharList:function(e){if(!this.bSCharSetDrawn[e]){this.bSCharSetDrawn[e]=!0;var t=this.charSet[e].length,i=new Array(t);this.aSCharList[e].innerHTML="";for(var n,o,s=0;t>s;s++)i[s]=jindo.$("<LI>"),this.bIE?(n=jindo.$("<BUTTON>"),n.setAttribute("type","button")):(n=jindo.$("<BUTTON>"),n.type="button"),o=jindo.$("<SPAN>"),o.innerHTML=unescape(this.charSet[e][s]),n.appendChild(o),i[s].appendChild(n),i[s].onmouseover=function(){this.className="hover"},i[s].onmouseout=function(){this.className=""},this.aSCharList[e].appendChild(i[s])}}}),nhn.husky.HuskyCore.addLoadedFile("hp_SE2M_TableCreator$Lazy.js"),nhn.husky.HuskyCore.mixin(nhn.husky.SE2M_TableCreator,{_assignHTMLObjects:function(e){this.oApp.exec("LOAD_HTML",["create_table"]);var t=null;this.elDropdownLayer=jindo.$$.getSingle("DIV.husky_se2m_table_layer",e),this.welDropdownLayer=jindo.$Element(this.elDropdownLayer),t=jindo.$$("INPUT",this.elDropdownLayer),this.elText_row=t[0],this.elText_col=t[1],this.elRadio_manualStyle=t[2],this.elText_borderSize=t[3],this.elText_borderColor=t[4],this.elText_BGColor=t[5],this.elRadio_templateStyle=t[6],t=jindo.$$("BUTTON",this.elDropdownLayer),this.elBtn_rowInc=t[0],this.elBtn_rowDec=t[1],this.elBtn_colInc=t[2],this.elBtn_colDec=t[3],this.elBtn_borderStyle=t[4],this.elBtn_incBorderSize=jindo.$$.getSingle("BUTTON.se2m_incBorder",this.elDropdownLayer),this.elBtn_decBorderSize=jindo.$$.getSingle("BUTTON.se2m_decBorder",this.elDropdownLayer),this.elLayer_Dim1=jindo.$$.getSingle("DIV.se2_t_dim0",this.elDropdownLayer),this.elLayerLine truncated
|
||||||
|
"undefined"!=typeof this.elPanelBGPaletteHolder&&(this.elPanelBGPaletteHolder.parentNode.style.display="none"),"undefined"!=typeof this.elPanelBGIMGPaletteHolder&&(this.elPanelBGIMGPaletteHolder.parentNode.style.display="none")},$ON_SETUP_TABLE_QE_MODE:function(e){var t=!0;"number"==typeof e&&(this.nQEMode=e),this.aSelectedCells.length<2&&(t=!1),this.oApp.exec("TABLE_QE_DIM",[this.QE_DIM_MERGE_BTN,t]);for(var i=this.aSelectedCells[0].getAttribute(this.TMP_BGC_ATTR)||"rgb(255,255,255)",n=!0,o=1,s=this.aSelectedCells.length;s>o;o++)if(this.aSelectedCells[o]&&i!=this.aSelectedCells[o].getAttribute(this.TMP_BGC_ATTR)){n=!1;break}n?this.elBtnBGPalette.style.backgroundColor=i:this.elBtnBGPalette.style.backgroundColor="#FFFFFF";var r,a=this.aSelectedCells[0].getAttribute(this.TMP_BGIMG_ATTR)||"",l=!0,h=0,d=jindo.$Element(this.elBtnBGIMGPalette);if(a){var c=a.match(/\_[0-9]*/);r=c?c[0]:"_0",h=r.substring(1,r.length);for(var o=1,s=this.aSelectedCells.length;s>o;o++)if(a!=this.aSelectedCells[o].getAttribute(this.TMP_BGIMG_ATTR)){l=!1;break}}for(var p=d.className().split(/\s/),_=0,s=p.length;s>_;_++)p[_].indexOf("cellimg")>0&&d.removeClass(p[_]);if(l&&h>0?d.addClass("se2_cellimg"+h):d.addClass("se2_cellimg0"),0===this.nQEMode){this.elPanelTableTemplateArea.style.display="block",this.elPanelReviewBGArea.style.display="none",jindo.$Element(this.elPanelTableBGArea).className("se2_qe2");var E=this.parseIntOr0(this.elSelectionStartTable.getAttribute(this.ATTR_TBL_TEMPLATE));E||(this.elInputRadioBGColor.checked="true",E=1),this.elPanelQETemplatePreview.className="se2_t_style"+E,this.elPanelBGImg.style.position=""}else if(1==this.nQEMode){this.elPanelTableTemplateArea.style.display="none",this.elPanelReviewBGArea.style.display="block";var E=this.parseIntOr0(this.elSelectionStartTable.getAttribute(this.ATTR_REVIEW_TEMPLATE));this.elPanelBGImg.style.position="relative"}else this.elPanelTableTemplateArea.style.display="none",this.elPanelReviewBGArea.style.display="none";this.oApp.exec("DRAW_QE_RADIO_OPTION",[0])},$ON_DRAW_QE_RADIO_OPTION:function(e){0!==e&&2!=e&&this.oApp.exec("HIDE_TABLE_QE_BGC_PALETTE",[]),0!==e&&3!=e&&this.oApp.exec("HIDE_TABLE_QE_IMG_PALETTE",[]),0!==e&&4!=e&&this.oApp.exec("TABLE_QE_HIDE_TEMPLATE",[]),0===this.nQEMode?(this.elInputRadioBGImg.checked&&(this.elInputRadioBGColor.checked="true"),this.elInputRadioBGColor.checked?this.oApp.exec("TABLE_QE_DIM",[this.QE_DIM_TABLE_TEMPLATE,!1]):this.oApp.exec("TABLE_QE_DIM",[this.QE_DIM_BG_COLOR,!1])):(this.elInputRadioTemplate.checked&&(this.elInputRadioBGColor.checked="true"),this.elInputRadioBGColor.checked?this.oApp.exec("TABLE_QE_DIM",[this.QE_DIM_REVIEW_BG_IMG,!1]):this.oApp.exec("TABLE_QE_DIM",[this.QE_DIM_BG_COLOR,!1]))},$ON_TABLE_QE_DIM:function(e,t){var i,n="se2_qdim";i=1==e?this.elPanelDim1:this.elPanelDim2,t&&(e=0),i.className=n+e},$ON_TE_SELECT_TABLE:function(e){this.elSelectionStartTable=e,this.htMap=this._getCellMapping(this.elSelectionStartTable)},$ON_TE_SELECT_CELLS:function(e,t){this._selectCells(e,t)},$ON_TE_MERGE_CELLS:function(){if(0!==this.aSelectedCells.length&&1!=this.aSelectedCells.length){this._removeClassFromSelection();var e,t,i;t=this.aSelectedCells[0];var n,o,s=(nhn.husky.SE2M_Utils.findAncestorByTagName("TABLE",t),this.aSelectedCells[0]);for(n=parseInt(s.style.height||s.getAttribute("height"),10),o=parseInt(s.style.width||s.getAttribute("width"),10),e=this.htSelectionSPos.x+1;e<this.htSelectionEPos.x+1;e++)curTD=this.htMap[e][this.htSelectionSPos.y],curTD!=s&&(s=curTD,o+=parseInt(curTD.style.width||curTD.getAttribute("width"),10));for(s=this.aSelectedCells[0],e=this.htSelectionSPos.y+1;e<this.htSelectionEPos.y+1;e++)curTD=this.htMap[this.htSelectionSPos.x][e],curTD!=s&&(s=curTD,n+=parseInt(curTD.style.height||curTD.getAttribute("height"),10));for(o&&(t.style.width=o+"px"),n&&(t.style.height=n+"px"),t.setAttribute("colSpan",this.htSelectionEPos.x-this.htSelectionSPos.x+1),t.setAttribute("rowSpan",this.htSelectionEPos.y-this.htSelectionSPos.y+1),e=1;e<this.aSelectedCells.length;e++)if(i=this.aSelectedCells[e],i.parentNode){nhn.husky.SE2M_Utils.isBlankNode(i)||(t.innerHTML+=i.innerHTML);var r=jindo.$Agent().navigator();!r.ie||9!=r.nativeVersion&&10!=r.nativeVersion||9!=r.version&&10!=r.version||this._removeEmptyTextNode_IE(i),i.parentNode.removeChild(i)}this.htMap=this._getCellMapping(this.elSelectionStartTable),this._selectCells(this.htSelectionSPos,this.htSelectionEPos),this._showTableTemplate(this.elSelectionStartTable),this._addClassToSelection(),this.sQEAction="TABLE_CELL_MERGE",this.oApp.exec("SHOW_COMMON_QE")}},$ON_TABLE_QE_TOGGLE_TEMPLATE:function(){"block"==this.elPanelQETemplate.style.display?this.oApp.exec("TABLE_QE_HIDE_TEMPLATE"):this.oApp.exec("TABLE_QE_SHOW_TEMPLATE")},$ON_TABLE_QE_SHOW_TEMPLATE:function(){this.elPanelQETemplate.style.display="block",this.oApp.exec("POSITION_TOOLBAR_LAYER",[this.elPanelQETemplate])},$ON_TABLE_QE_HIDE_TEMPLATE:function(){this.elPanelQETemplate.style.display="none"},$ON_STYLE_TABLE:functionLine truncated
|
||||||
|
for(var e,t,i=0;i<this.aSelectedCells.length;i++)t=this.aSelectedCells[i],t&&(e=jindo.$Element(t),e.removeClass(this.CELL_SELECTION_CLASS),e.removeClass("undraggable"),t.getAttribute(this.TMP_BGC_ATTR)&&(t.style.backgroundColor=t.getAttribute(this.TMP_BGC_ATTR),t.removeAttribute(this.TMP_BGC_ATTR)),t.getAttribute(this.TMP_BGIMG_ATTR)&&(e.css("backgroundImage",t.getAttribute(this.TMP_BGIMG_ATTR)),t.removeAttribute(this.TMP_BGIMG_ATTR)))},_expandAndSelect:function(e,t){var i,n,o,s;if(e.y>0)for(i=e.x;i<=t.x;i++)if(o=this.htMap[i][e.y],this.htMap[i][e.y-1]==o){for(s=e.y-2;s>=0&&this.htMap[i][s]==o;)s--;return e.y=s+1,void this._expandAndSelect(e,t)}if(e.x>0)for(n=e.y;n<=t.y;n++)if(o=this.htMap[e.x][n],this.htMap[e.x-1][n]==o){for(s=e.x-2;s>=0&&this.htMap[s][n]==o;)s--;return e.x=s+1,void this._expandAndSelect(e,t)}if(t.y<this.htMap[0].length-1)for(i=e.x;i<=t.x;i++)if(o=this.htMap[i][t.y],this.htMap[i][t.y+1]==o){for(s=t.y+2;s<this.htMap[0].length&&this.htMap[i][s]==o;)s++;return t.y=s-1,void this._expandAndSelect(e,t)}if(t.x<this.htMap.length-1)for(n=e.y;n<=t.y;n++)if(o=this.htMap[t.x][n],this.htMap[t.x+1][n]==o){for(s=t.x+2;s<this.htMap.length&&this.htMap[s][n]==o;)s++;return t.x=s-1,void this._expandAndSelect(e,t)}},_getSelectedCells:function(e,t){this._expandAndSelect(e,t);var i=e.x,n=e.y,o=t.x,s=t.y;this.htSelectionSPos=e,this.htSelectionEPos=t;for(var r=[],a=n;s>=a;a++)for(var l=i;o>=l;l++)jindo.$A(r).has(this.htMap[l][a])||(r[r.length]=this.htMap[l][a]);return r},_setEndPos:function(e){var t,i;t=parseInt(e.elCell.getAttribute("colSpan"),10)||1,i=parseInt(e.elCell.getAttribute("rowSpan"),10)||1,e.ex=e.x+t-1,e.ey=e.y+i-1},_getBasisCellPosition:function(e){var t=0,i=0;for(t=0;t<this.htMap.length;t++)for(i=0;i<this.htMap[t].length;i++)if(this.htMap[t][i]==e)return{x:t,y:i,elCell:e};return{x:0,y:0,elCell:e}},_applyTableTemplate:function(e,t){e&&(this._clearAllTableStyles(e),this._doApplyTableTemplate(e,nhn.husky.SE2M_TableTemplate[t],!1),e.setAttribute(this.ATTR_TBL_TEMPLATE,t))},_clearAllTableStyles:function(e){e.removeAttribute("border"),e.removeAttribute("cellPadding"),e.removeAttribute("cellSpacing"),e.style.padding="",e.style.border="",e.style.backgroundColor="",e.style.color="";for(var t=jindo.$$(">TBODY>TR>TD",e,{oneTimeOffCache:!0}),i=0,n=t.length;n>i;i++)t[i].style.padding="",t[i].style.border="",t[i].style.backgroundColor="",t[i].style.color="";for(var o=jindo.$$(">TBODY>TR>TH",e,{oneTimeOffCache:!0}),i=0,n=o.length;n>i;i++)o[i].style.padding="",o[i].style.border="",o[i].style.backgroundColor="",o[i].style.color=""},_hideTableTemplate:function(e){e.getAttribute(this.ATTR_TBL_TEMPLATE)&&this._doApplyTableTemplate(e,nhn.husky.SE2M_TableTemplate[this.parseIntOr0(e.getAttribute(this.ATTR_TBL_TEMPLATE))],!0)},_showTableTemplate:function(e){e.getAttribute(this.ATTR_TBL_TEMPLATE)&&this._doApplyTableTemplate(e,nhn.husky.SE2M_TableTemplate[this.parseIntOr0(e.getAttribute(this.ATTR_TBL_TEMPLATE))],!1)},_doApplyTableTemplate:function(e,t,i){var n,o=t.htTableProperty,s=t.htTableStyle,r=t.ht1stRowStyle,a=t.ht1stColumnStyle,l=t.aRowStyle;o&&this._copyAttributesTo(e,o,i),s&&this._copyStylesTo(e,s,i);var h=jindo.$$(">TBODY>TR",e,{oneTimeOffCache:!0}),d=0;if(r)for(var d=1,c=0,p=h[0].childNodes.length;p>c;c++)n=h[0].childNodes[c],n.tagName&&n.tagName.match(/^TD|TH$/)&&this._copyStylesTo(n,r,i);var _,E;if(a)for(var u=r?1:0,g=u,f=h.length;f>g;)E=h[g].firstChild,_=1,E&&E.tagName.match(/^TD|TH$/)&&(_=parseInt(E.getAttribute("rowSpan"),10)||1,this._copyStylesTo(E,a,i)),g+=_;if(l)for(var A=l.length,g=d,f=h.length;f>g;g++)for(var c=0,p=h[g].childNodes.length;p>c;c++){var n=h[g].childNodes[c];n.tagName&&n.tagName.match(/^TD|TH$/)&&this._copyStylesTo(n,l[(g+d)%A],i)}},_copyAttributesTo:function(e,t,i){var n;for(var o in t)t.hasOwnProperty(o)&&(i?e[o]&&(n=document.createElement(e.tagName),n[o]=t[o],n[o]==e[o]&&e.removeAttribute(o)):(n=document.createElement(e.tagName),n.style[o]="",e[o]&&e.style[o]!=n.style[o]||e.setAttribute(o,t[o])))},_copyStylesTo:function(e,t,i){var n;for(var o in t)t.hasOwnProperty(o)&&(i?e.style[o]&&(n=document.createElement(e.tagName),n.style[o]=t[o],n.style[o]==e.style[o]&&(e.style[o]="")):(n=document.createElement(e.tagName),n.style[o]="",(!e.style[o]||e.style[o]==n.style[o]||o.match(/^border/))&&(e.style[o]=t[o])))},_hideResizer:function(){this.elResizeGrid.style.display="none"},_showResizer:function(){this.elResizeGrid.style.display="block"},_setResizerSize:function(e,t){this.elResizeGrid.style.width=e+"px",this.elResizeGrid.style.height=t+"px"},parseBorder:function(e,t){if("none"==t)return 0;var i=parseInt(e,10);return isNaN(i)&&"string"==typeof e?1:i},parseIntOr0:function(e){return e=parseInt(e,10),isNaN(e)?0:e},_getTRCloneWithAllTD:function(e){for(var t,i,n=this.htMap[0][e].parentNode.cloneNode(!1),o=0,s=this.htMap.length;s>o;o++)t=this.htMap[o][e],this._rxCellNames.test(t.tagName)&&(i=this._shallowCloneTD(t),i.setAttribute("rowSpan",1),i.setAttribute("colSpan",1),i.style.width="",i.style.height=Line truncated
|
||||||
|
border:"0",cellPadding:"0",cellSpacing:"1"},htTableStyle:{backgroundColor:"#a6bcd1"},aRowStyle:[{padding:"3px 4px 2px",backgroundColor:"#fafbfc",color:"#3d76ab"},{padding:"3px 4px 2px",backgroundColor:"#e6ecf2",color:"#3d76ab"}]},{htTableProperty:{border:"0",cellPadding:"0",cellSpacing:"0"},ht1stRowStyle:{padding:"3px 4px 2px",borderTop:"1px solid #466997",borderBottom:"1px solid #466997",backgroundColor:"#6284ab",color:"#ffffff",textAlign:"left",fontWeight:"normal"},aRowStyle:[{padding:"3px 4px 2px",borderBottom:"1px solid #ebebeb",backgroundColor:"#ffffff",color:"#3d76ab"},{padding:"3px 4px 2px",borderBottom:"1px solid #ebebeb",backgroundColor:"#f6f8fa",color:"#3d76ab"}]},{htTableProperty:{border:"0",cellPadding:"0",cellSpacing:"1"},htTableStyle:{backgroundColor:"#a6bcd1"},ht1stRowStyle:{padding:"3px 4px 2px",backgroundColor:"#6284ab",color:"#ffffff",textAlign:"left",fontWeight:"normal"},ht1stColumnStyle:{padding:"3px 4px 2px",backgroundColor:"#f6f8fa",color:"#3d76ab",textAlign:"left",fontWeight:"normal"},aRowStyle:[{padding:"3px 4px 2px",backgroundColor:"#ffffff",color:"#3d76ab"}]},{htTableProperty:{border:"0",cellPadding:"0",cellSpacing:"1"},htTableStyle:{backgroundColor:"#a6bcd1"},ht1stColumnStyle:{padding:"3px 4px 2px",backgroundColor:"#6284ab",color:"#ffffff",textAlign:"left",fontWeight:"normal"},aRowStyle:[{padding:"3px 4px 2px",backgroundColor:"#ffffff",color:"#3d76ab"}]}],nhn.husky.HuskyCore.addLoadedFile("N_DraggableLayer.js"),nhn.DraggableLayer=jindo.$Class({$init:function(e,t){this.elLayer=e,this.setOptions(t),this.elHandle=this.oOptions.elHandle,e.style.display="block",e.style.position="absolute",e.style.zIndex="9999",this.aBasePosition=this.getBaseOffset(e);var i=this.toInt(jindo.$Element(e).offset().top)-this.aBasePosition.top,n=this.toInt(jindo.$Element(e).offset().left)-this.aBasePosition.left,o=this._correctXY({x:n,y:i});e.style.top=o.y+"px",e.style.left=o.x+"px",this.$FnMouseDown=jindo.$Fn(jindo.$Fn(this._mousedown,this).bind(e),this),this.$FnMouseMove=jindo.$Fn(jindo.$Fn(this._mousemove,this).bind(e),this),this.$FnMouseUp=jindo.$Fn(jindo.$Fn(this._mouseup,this).bind(e),this),this.$FnMouseDown.attach(this.elHandle,"mousedown"),this.elHandle.ondragstart=new Function("return false"),this.elHandle.onselectstart=new Function("return false")},_mousedown:function(e,t){"INPUT"!=t.element.tagName&&(this.oOptions.fnOnDragStart(),this.MouseOffsetY=t.pos().clientY-this.toInt(e.style.top)-this.aBasePosition.top,this.MouseOffsetX=t.pos().clientX-this.toInt(e.style.left)-this.aBasePosition.left,this.$FnMouseMove.attach(e.ownerDocument,"mousemove"),this.$FnMouseUp.attach(e.ownerDocument,"mouseup"),this.elHandle.style.cursor="move")},_mousemove:function(e,t){var i=t.pos().clientY-this.MouseOffsetY-this.aBasePosition.top,n=t.pos().clientX-this.MouseOffsetX-this.aBasePosition.left,o=this._correctXY({x:n,y:i});e.style.top=o.y+"px",e.style.left=o.x+"px"},_mouseup:function(e,t){this.oOptions.fnOnDragEnd(),this.$FnMouseMove.detach(e.ownerDocument,"mousemove"),this.$FnMouseUp.detach(e.ownerDocument,"mouseup"),this.elHandle.style.cursor=""},_correctXY:function(e){var t=e.x,i=e.y;return i<this.oOptions.nMinY&&(i=this.oOptions.nMinY),i>this.oOptions.nMaxY&&(i=this.oOptions.nMaxY),t<this.oOptions.nMinX&&(t=this.oOptions.nMinX),t>this.oOptions.nMaxX&&(t=this.oOptions.nMaxX),{x:t,y:i}},toInt:function(e){var t=parseInt(e);return t||0},findNonStatic:function(e){return e?"BODY"==e.tagName?e:jindo.$Element(e).css("position").match(/absolute|relative/i)?e:this.findNonStatic(e.offsetParent):null},getBaseOffset:function(e){var t=this.findNonStatic(e.offsetParent)||e.ownerDocument.body,i=jindo.$Element(t).offset();return{top:i.top,left:i.left}},setOptions:function(e){this.oOptions=e||{},this.oOptions.bModal=this.oOptions.bModal||!1,this.oOptions.elHandle=this.oOptions.elHandle||this.elLayer,this.oOptions.nMinX=this.oOptions.nMinX||-999999,this.oOptions.nMinY=this.oOptions.nMinY||-999999,this.oOptions.nMaxX=this.oOptions.nMaxX||999999,this.oOptions.nMaxY=this.oOptions.nMaxY||999999,this.oOptions.fnOnDragStart=this.oOptions.fnOnDragStart||function(){},this.oOptions.fnOnDragEnd=this.oOptions.fnOnDragEnd||function(){}}});
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
include_once("../../../../../common.php");
|
||||||
|
?>
|
||||||
@@ -1,681 +0,0 @@
|
|||||||
//변수 선언 및 초기화
|
|
||||||
var nImageInfoCnt = 0;
|
|
||||||
var htImageInfo = []; //image file정보 저장
|
|
||||||
var aResult = [];
|
|
||||||
|
|
||||||
var rFilter = /^(image\/bmp|image\/gif|image\/jpg|image\/jpeg|image\/png)$/i;
|
|
||||||
var rFilter2 = /^(bmp|gif|jpg|jpeg|png)$/i;
|
|
||||||
var nTotalSize = 0;
|
|
||||||
var nMaxImageSize = 10*1024*1024;
|
|
||||||
var nMaxTotalImageSize = 50*1024*1024;
|
|
||||||
var nMaxImageCount = 10;
|
|
||||||
var nImageFileCount = 0;
|
|
||||||
var bSupportDragAndDropAPI = false;
|
|
||||||
var oFileUploader;
|
|
||||||
var bAttachEvent = false;
|
|
||||||
|
|
||||||
//마크업에 따른 할당
|
|
||||||
var elContent= $("pop_content");
|
|
||||||
var elDropArea = jindo.$$.getSingle(".drag_area",elContent);
|
|
||||||
var elDropAreaUL = jindo.$$.getSingle(".lst_type",elContent);
|
|
||||||
var elCountTxtTxt = jindo.$$.getSingle("#imageCountTxt",elContent);
|
|
||||||
var elTotalSizeTxt = jindo.$$.getSingle("#totalSizeTxt",elContent);
|
|
||||||
var elTextGuide = $("guide_text");
|
|
||||||
var welUploadInputBox = $Element("uploadInputBox");
|
|
||||||
var oNavigator = jindo.$Agent().navigator();
|
|
||||||
|
|
||||||
//마크업-공통
|
|
||||||
var welBtnConfirm = $Element("btn_confirm"); //확인 버튼
|
|
||||||
var welBtnCancel= $Element("btn_cancel"); //취소 버튼
|
|
||||||
|
|
||||||
//진도로 랩핑된 element
|
|
||||||
var welTextGuide = $Element(elTextGuide);
|
|
||||||
var welDropArea = $Element(elDropArea);
|
|
||||||
var welDropAreaUL = $Element(elDropAreaUL);
|
|
||||||
var fnUploadImage = null;
|
|
||||||
|
|
||||||
//File API 지원 여부로 결정
|
|
||||||
function checkDragAndDropAPI(){
|
|
||||||
try{
|
|
||||||
if( !oNavigator.ie ){
|
|
||||||
if(!!oNavigator.safari && oNavigator.version <= 5){
|
|
||||||
bSupportDragAndDropAPI = false;
|
|
||||||
}else{
|
|
||||||
bSupportDragAndDropAPI = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bSupportDragAndDropAPI = false;
|
|
||||||
}
|
|
||||||
}catch(e){
|
|
||||||
bSupportDragAndDropAPI = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------- html5 미지원 브라우저에서 (IE9 이하) ---------------
|
|
||||||
/**
|
|
||||||
* 이미지를 첨부 후 활성화된 버튼 상태
|
|
||||||
*/
|
|
||||||
function goStartMode(){
|
|
||||||
var sSrc = welBtnConfirm.attr("src")|| "";
|
|
||||||
if(sSrc.indexOf("btn_confirm2.png") < 0 ){
|
|
||||||
welBtnConfirm.attr("src","../../img/photoQuickPopup/btn_confirm2.png");
|
|
||||||
fnUploadImage.attach(welBtnConfirm.$value(), "click");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 이미지를 첨부 전 비활성화된 버튼 상태
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
function goReadyMode(){
|
|
||||||
var sSrc = welBtnConfirm.attr("src")|| "";
|
|
||||||
if(sSrc.indexOf("btn_confirm2.png") >= 0 ){
|
|
||||||
fnUploadImage.detach(welBtnConfirm.$value(), "click");
|
|
||||||
welBtnConfirm.attr("src","../../img/photoQuickPopup/btn_confirm.png");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 일반 업로드
|
|
||||||
* @desc oFileUploader의 upload함수를 호출함.
|
|
||||||
*/
|
|
||||||
function generalUpload(){
|
|
||||||
oFileUploader.upload();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 이미지 첨부 전 안내 텍스트가 나오는 배경으로 '설정'하는 함수.
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
function readyModeBG (){
|
|
||||||
var sClass = welTextGuide.className();
|
|
||||||
if(sClass.indexOf('nobg') >= 0){
|
|
||||||
welTextGuide.removeClass('nobg');
|
|
||||||
welTextGuide.className('bg');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 이미지 첨부 전 안내 텍스트가 나오는 배경을 '제거'하는 함수.
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
function startModeBG (){
|
|
||||||
var sClass = welTextGuide.className();
|
|
||||||
if(sClass.indexOf('nobg') < 0){
|
|
||||||
welTextGuide.removeClass('bg');
|
|
||||||
welTextGuide.className('nobg');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------- html5 지원되는 브라우저에서 사용하는 함수 --------------------------
|
|
||||||
/**
|
|
||||||
* 팝업에 노출될 업로드 예정 사진의 수.
|
|
||||||
* @param {Object} nCount 현재 업로드 예정인 사진 장수
|
|
||||||
* @param {Object} nVariable 삭제되는 수
|
|
||||||
*/
|
|
||||||
function updateViewCount (nCount, nVariable){
|
|
||||||
var nCnt = nCount + nVariable;
|
|
||||||
elCountTxtTxt.innerHTML = nCnt +"장";
|
|
||||||
nImageFileCount = nCnt;
|
|
||||||
return nCnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 팝업에 노출될 업로드될 사진 총 용량
|
|
||||||
*/
|
|
||||||
function updateViewTotalSize(){
|
|
||||||
var nViewTotalSize = Number(parseInt((nTotalSize || 0), 10) / (1024*1024));
|
|
||||||
elTotalSizeTxt.innerHTML = nViewTotalSize.toFixed(2) +"MB";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 이미지 전체 용량 재계산.
|
|
||||||
* @param {Object} sParentId
|
|
||||||
*/
|
|
||||||
function refreshTotalImageSize(sParentId){
|
|
||||||
var nDelImgSize = htImageInfo[sParentId].size;
|
|
||||||
if(nTotalSize - nDelImgSize > -1 ){
|
|
||||||
nTotalSize = nTotalSize - nDelImgSize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* hash table에서 이미지 정보 초기화.
|
|
||||||
* @param {Object} sParentId
|
|
||||||
*/
|
|
||||||
function removeImageInfo (sParentId){
|
|
||||||
//삭제된 이미지의 공간을 초기화 한다.
|
|
||||||
htImageInfo[sParentId] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* byte로 받은 이미지 용량을 화면에 표시를 위해 포맷팅
|
|
||||||
* @param {Object} nByte
|
|
||||||
*/
|
|
||||||
function setUnitString (nByte) {
|
|
||||||
var nImageSize;
|
|
||||||
var sUnit;
|
|
||||||
|
|
||||||
if(nByte < 0 ){
|
|
||||||
nByte = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( nByte < 1024) {
|
|
||||||
nImageSize = Number(nByte);
|
|
||||||
sUnit = 'B';
|
|
||||||
return nImageSize + sUnit;
|
|
||||||
} else if( nByte > (1024*1024)) {
|
|
||||||
nImageSize = Number(parseInt((nByte || 0), 10) / (1024*1024));
|
|
||||||
sUnit = 'MB';
|
|
||||||
return nImageSize.toFixed(2) + sUnit;
|
|
||||||
} else {
|
|
||||||
nImageSize = Number(parseInt((nByte || 0), 10) / 1024);
|
|
||||||
sUnit = 'KB';
|
|
||||||
return nImageSize.toFixed(0) + sUnit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 화면 목록에 적당하게 이름을 잘라서 표시.
|
|
||||||
* @param {Object} sName 파일명
|
|
||||||
* @param {Object} nMaxLng 최대 길이
|
|
||||||
*/
|
|
||||||
function cuttingNameByLength (sName, nMaxLng) {
|
|
||||||
var sTemp, nIndex;
|
|
||||||
if(sName.length > nMaxLng){
|
|
||||||
nIndex = sName.indexOf(".");
|
|
||||||
sTemp = sName.substring(0,nMaxLng) + "..." + sName.substring(nIndex,sName.length) ;
|
|
||||||
} else {
|
|
||||||
sTemp = sName;
|
|
||||||
}
|
|
||||||
return sTemp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Total Image Size를 체크해서 추가로 이미지를 넣을지 말지를 결정함.
|
|
||||||
* @param {Object} nByte
|
|
||||||
*/
|
|
||||||
function checkTotalImageSize(nByte){
|
|
||||||
if( nTotalSize + nByte < nMaxTotalImageSize){
|
|
||||||
nTotalSize = nTotalSize + nByte;
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 이벤트 핸들러 할당
|
|
||||||
function dragEnter(ev) {
|
|
||||||
ev.stopPropagation();
|
|
||||||
ev.preventDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
function dragExit(ev) {
|
|
||||||
ev.stopPropagation();
|
|
||||||
ev.preventDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
function dragOver(ev) {
|
|
||||||
ev.stopPropagation();
|
|
||||||
ev.preventDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 드랍 영역에 사진을 떨구는 순간 발생하는 이벤트
|
|
||||||
* @param {Object} ev
|
|
||||||
*/
|
|
||||||
function drop(ev) {
|
|
||||||
ev.stopPropagation();
|
|
||||||
ev.preventDefault();
|
|
||||||
|
|
||||||
if (nImageFileCount >= 10){
|
|
||||||
alert("최대 10장까지만 등록할 수 있습니다.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(typeof ev.dataTransfer.files == 'undefined'){
|
|
||||||
alert("HTML5를 지원하지 않는 브라우저입니다.");
|
|
||||||
}else{
|
|
||||||
//변수 선언
|
|
||||||
var wel,
|
|
||||||
files,
|
|
||||||
nCount,
|
|
||||||
sListTag = '';
|
|
||||||
|
|
||||||
//초기화
|
|
||||||
files = ev.dataTransfer.files;
|
|
||||||
nCount = files.length;
|
|
||||||
|
|
||||||
if (!!files && nCount === 0){
|
|
||||||
//파일이 아닌, 웹페이지에서 이미지를 드래서 놓는 경우.
|
|
||||||
alert("정상적인 첨부방식이 아닙니다.");
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0, j = nImageFileCount ; i < nCount ; i++){
|
|
||||||
if (!rFilter.test(files[i].type)) {
|
|
||||||
alert("이미지파일 (jpg,gif,png,bmp)만 업로드 가능합니다.");
|
|
||||||
} else if(files[i].size > nMaxImageSize){
|
|
||||||
alert("이미지 용량이 10MB를 초과하여 등록할 수 없습니다.");
|
|
||||||
} else {
|
|
||||||
//제한된 수만 업로드 가능.
|
|
||||||
if ( j < nMaxImageCount ){
|
|
||||||
sListTag += addImage(files[i]);
|
|
||||||
|
|
||||||
//다음 사진을위한 셋팅
|
|
||||||
j = j+1;
|
|
||||||
nImageInfoCnt = nImageInfoCnt+1;
|
|
||||||
} else {
|
|
||||||
alert("최대 10장까지만 등록할 수 있습니다.");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(j > 0){
|
|
||||||
//배경 이미지 변경
|
|
||||||
startModeBG();
|
|
||||||
if ( sListTag.length > 1){
|
|
||||||
welDropAreaUL.prependHTML(sListTag);
|
|
||||||
}
|
|
||||||
//이미지 총사이즈 view update
|
|
||||||
updateViewTotalSize();
|
|
||||||
//이미치 총 수 view update
|
|
||||||
nImageFileCount = j;
|
|
||||||
updateViewCount(nImageFileCount, 0);
|
|
||||||
// 저장 버튼 활성화
|
|
||||||
goStartMode();
|
|
||||||
}else{
|
|
||||||
readyModeBG();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 이미지를 추가하기 위해서 file을 저장하고, 목록에 보여주기 위해서 string을 만드는 함수.
|
|
||||||
* @param ofile 한개의 이미지 파일
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
function addImage(ofile){
|
|
||||||
//파일 사이즈
|
|
||||||
var ofile = ofile,
|
|
||||||
sFileSize = 0,
|
|
||||||
sFileName = "",
|
|
||||||
sLiTag = "",
|
|
||||||
bExceedLimitTotalSize = false,
|
|
||||||
aFileList = [];
|
|
||||||
|
|
||||||
sFileSize = setUnitString(ofile.size);
|
|
||||||
sFileName = cuttingNameByLength(ofile.name, 15);
|
|
||||||
bExceedLimitTotalSize = checkTotalImageSize(ofile.size);
|
|
||||||
|
|
||||||
if( !!bExceedLimitTotalSize ){
|
|
||||||
alert("전체 이미지 용량이 50MB를 초과하여 등록할 수 없습니다. \n\n (파일명 : "+sFileName+", 사이즈 : "+sFileSize+")");
|
|
||||||
} else {
|
|
||||||
//이미지 정보 저장
|
|
||||||
htImageInfo['img'+nImageInfoCnt] = ofile;
|
|
||||||
|
|
||||||
//List 마크업 생성하기
|
|
||||||
aFileList.push(' <li id="img'+nImageInfoCnt+'" class="imgLi"><span>'+ sFileName +'</span>');
|
|
||||||
aFileList.push(' <em>'+ sFileSize +'</em>');
|
|
||||||
aFileList.push(' <a onclick="delImage(\'img'+nImageInfoCnt+'\')"><img class="del_button" src="../../img/photoQuickPopup/btn_del.png" width="14" height="13" alt="첨부 사진 삭제"></a>');
|
|
||||||
aFileList.push(' </li> ');
|
|
||||||
|
|
||||||
sLiTag = aFileList.join(" ");
|
|
||||||
aFileList = [];
|
|
||||||
}
|
|
||||||
return sLiTag;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* HTML5 DragAndDrop으로 사진을 추가하고, 확인버튼을 누른 경우에 동작한다.
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
function html5Upload() {
|
|
||||||
var tempFile,
|
|
||||||
sUploadURL;
|
|
||||||
|
|
||||||
sUploadURL= 'file_uploader_html5.php'; //upload URL
|
|
||||||
|
|
||||||
//파일을 하나씩 보내고, 결과를 받음.
|
|
||||||
for(var j=0, k=0; j < nImageInfoCnt; j++) {
|
|
||||||
tempFile = htImageInfo['img'+j];
|
|
||||||
try{
|
|
||||||
if(!!tempFile){
|
|
||||||
//Ajax통신하는 부분. 파일과 업로더할 url을 전달한다.
|
|
||||||
callAjaxForHTML5(tempFile,sUploadURL);
|
|
||||||
k += 1;
|
|
||||||
}
|
|
||||||
}catch(e){}
|
|
||||||
tempFile = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function callAjaxForHTML5 (tempFile, sUploadURL){
|
|
||||||
var oAjax = jindo.$Ajax(sUploadURL, {
|
|
||||||
type: 'xhr',
|
|
||||||
method : "post",
|
|
||||||
onload : function(res){ // 요청이 완료되면 실행될 콜백 함수
|
|
||||||
var sResString = res._response.responseText;
|
|
||||||
if (res.readyState() == 4) {
|
|
||||||
if(sResString.indexOf("NOTALLOW_") > -1){
|
|
||||||
var sFileName = sResString.replace("NOTALLOW_", "");
|
|
||||||
alert("이미지 파일(jpg,gif,png,bmp)만 업로드 하실 수 있습니다. ("+sFileName+")");
|
|
||||||
}else{
|
|
||||||
//성공 시에 responseText를 가지고 array로 만드는 부분.
|
|
||||||
makeArrayFromString(res._response.responseText);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
timeout : 3,
|
|
||||||
onerror : jindo.$Fn(onAjaxError, this).bind()
|
|
||||||
});
|
|
||||||
oAjax.header("contentType","multipart/form-data");
|
|
||||||
oAjax.header("file-name",encodeURIComponent(tempFile.name));
|
|
||||||
oAjax.header("file-size",tempFile.size);
|
|
||||||
oAjax.header("file-Type",tempFile.type);
|
|
||||||
oAjax.request(tempFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeArrayFromString(sResString){
|
|
||||||
var aTemp = [],
|
|
||||||
aSubTemp = [],
|
|
||||||
htTemp = {}
|
|
||||||
aResultleng = 0;
|
|
||||||
|
|
||||||
try{
|
|
||||||
if(!sResString || sResString.indexOf("sFileURL") < 0){
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
aTemp = sResString.split("&");
|
|
||||||
for (var i = 0; i < aTemp.length ; i++){
|
|
||||||
if( !!aTemp[i] && aTemp[i] != "" && aTemp[i].indexOf("=") > 0){
|
|
||||||
aSubTemp = aTemp[i].split("=");
|
|
||||||
htTemp[aSubTemp[0]] = aSubTemp[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}catch(e){}
|
|
||||||
|
|
||||||
aResultleng = aResult.length;
|
|
||||||
aResult[aResultleng] = htTemp;
|
|
||||||
|
|
||||||
if(aResult.length == nImageFileCount){
|
|
||||||
setPhotoToEditor(aResult);
|
|
||||||
aResult = null;
|
|
||||||
window.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 사진 삭제 시에 호출되는 함수
|
|
||||||
* @param {Object} sParentId
|
|
||||||
*/
|
|
||||||
function delImage (sParentId){
|
|
||||||
var elLi = jindo.$$.getSingle("#"+sParentId);
|
|
||||||
|
|
||||||
refreshTotalImageSize(sParentId);
|
|
||||||
|
|
||||||
updateViewTotalSize();
|
|
||||||
updateViewCount(nImageFileCount,-1);
|
|
||||||
//사진 file array에서 정보 삭제.
|
|
||||||
removeImageInfo(sParentId);
|
|
||||||
//해당 li삭제
|
|
||||||
$Element(elLi).leave();
|
|
||||||
|
|
||||||
//마지막 이미지인경우.
|
|
||||||
if(nImageFileCount === 0){
|
|
||||||
readyModeBG();
|
|
||||||
//사진 추가 버튼 비활성화
|
|
||||||
goReadyMode();
|
|
||||||
}
|
|
||||||
|
|
||||||
// drop 영역 이벤트 다시 활성화.
|
|
||||||
if(!bAttachEvent){
|
|
||||||
addEvent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 이벤트 할당
|
|
||||||
*/
|
|
||||||
function addEvent() {
|
|
||||||
bAttachEvent = true;
|
|
||||||
elDropArea.addEventListener("dragenter", dragEnter, false);
|
|
||||||
elDropArea.addEventListener("dragexit", dragExit, false);
|
|
||||||
elDropArea.addEventListener("dragover", dragOver, false);
|
|
||||||
elDropArea.addEventListener("drop", drop, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeEvent(){
|
|
||||||
bAttachEvent = false;
|
|
||||||
elDropArea.removeEventListener("dragenter", dragEnter, false);
|
|
||||||
elDropArea.removeEventListener("dragexit", dragExit, false);
|
|
||||||
elDropArea.removeEventListener("dragover", dragOver, false);
|
|
||||||
elDropArea.removeEventListener("drop", drop, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ajax 통신 시 error가 발생할 때 처리하는 함수입니다.
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
function onAjaxError (){
|
|
||||||
alert("[가이드]사진 업로더할 서버URL셋팅이 필요합니다.-onAjaxError");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 이미지 업로드 시작
|
|
||||||
* 확인 버튼 클릭하면 호출되는 msg
|
|
||||||
*/
|
|
||||||
function uploadImage (e){
|
|
||||||
if(!bSupportDragAndDropAPI){
|
|
||||||
generalUpload();
|
|
||||||
}else{
|
|
||||||
html5Upload();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* jindo에 파일 업로드 사용.(iframe에 Form을 Submit하여 리프레시없이 파일을 업로드하는 컴포넌트)
|
|
||||||
*/
|
|
||||||
function callFileUploader (){
|
|
||||||
oFileUploader = new jindo.FileUploader(jindo.$("uploadInputBox"),{
|
|
||||||
sUrl : location.href.replace(/\/[^\/]*$/, '') + '/file_uploader.php', //샘플 URL입니다.
|
|
||||||
sCallback : location.href.replace(/\/[^\/]*$/, '') + '/callback.html', //업로드 이후에 iframe이 redirect될 콜백페이지의 주소
|
|
||||||
sFiletype : "*.jpg;*.png;*.bmp;*.gif", //허용할 파일의 형식. ex) "*", "*.*", "*.jpg", 구분자(;)
|
|
||||||
sMsgNotAllowedExt : 'JPG, GIF, PNG, BMP 확장자만 가능합니다', //허용할 파일의 형식이 아닌경우에 띄워주는 경고창의 문구
|
|
||||||
bAutoUpload : false, //파일이 선택됨과 동시에 자동으로 업로드를 수행할지 여부 (upload 메소드 수행)
|
|
||||||
bAutoReset : true // 업로드한 직후에 파일폼을 리셋 시킬지 여부 (reset 메소드 수행)
|
|
||||||
}).attach({
|
|
||||||
select : function(oCustomEvent) {
|
|
||||||
//파일 선택이 완료되었을 때 발생
|
|
||||||
// oCustomEvent (이벤트 객체) = {
|
|
||||||
// sValue (String) 선택된 File Input의 값
|
|
||||||
// bAllowed (Boolean) 선택된 파일의 형식이 허용되는 형식인지 여부
|
|
||||||
// sMsgNotAllowedExt (String) 허용되지 않는 파일 형식인 경우 띄워줄 경고메세지
|
|
||||||
// }
|
|
||||||
// 선택된 파일의 형식이 허용되는 경우만 처리
|
|
||||||
if(oCustomEvent.bAllowed === true){
|
|
||||||
goStartMode();
|
|
||||||
}else{
|
|
||||||
goReadyMode();
|
|
||||||
oFileUploader.reset();
|
|
||||||
}
|
|
||||||
// bAllowed 값이 false인 경우 경고문구와 함께 alert 수행
|
|
||||||
// oCustomEvent.stop(); 수행시 bAllowed 가 false이더라도 alert이 수행되지 않음
|
|
||||||
},
|
|
||||||
success : function(oCustomEvent) {
|
|
||||||
// alert("success");
|
|
||||||
// 업로드가 성공적으로 완료되었을 때 발생
|
|
||||||
// oCustomEvent(이벤트 객체) = {
|
|
||||||
// htResult (Object) 서버에서 전달해주는 결과 객체 (서버 설정에 따라 유동적으로 선택가능)
|
|
||||||
// }
|
|
||||||
var aResult = [];
|
|
||||||
aResult[0] = oCustomEvent.htResult;
|
|
||||||
setPhotoToEditor(aResult);
|
|
||||||
//버튼 비활성화
|
|
||||||
goReadyMode();
|
|
||||||
oFileUploader.reset();
|
|
||||||
window.close();
|
|
||||||
},
|
|
||||||
error : function(oCustomEvent) {
|
|
||||||
//업로드가 실패했을 때 발생
|
|
||||||
//oCustomEvent(이벤트 객체) = {
|
|
||||||
// htResult : { (Object) 서버에서 전달해주는 결과 객체. 에러발생시 errstr 프로퍼티를 반드시 포함하도록 서버 응답을 설정하여야한다.
|
|
||||||
// errstr : (String) 에러메시지
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//var wel = jindo.$Element("info");
|
|
||||||
//wel.html(oCustomEvent.htResult.errstr);
|
|
||||||
alert(oCustomEvent.htResult.errstr);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 페이지 닫기 버튼 클릭
|
|
||||||
*/
|
|
||||||
function closeWindow(){
|
|
||||||
if(bSupportDragAndDropAPI){
|
|
||||||
removeEvent();
|
|
||||||
}
|
|
||||||
window.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
window.onload = function(){
|
|
||||||
checkDragAndDropAPI();
|
|
||||||
|
|
||||||
if(bSupportDragAndDropAPI){
|
|
||||||
$Element("pop_container2").hide();
|
|
||||||
$Element("pop_container").show();
|
|
||||||
|
|
||||||
welTextGuide.removeClass("nobg");
|
|
||||||
welTextGuide.className("bg");
|
|
||||||
|
|
||||||
addEvent();
|
|
||||||
} else {
|
|
||||||
$Element("pop_container").hide();
|
|
||||||
$Element("pop_container2").show();
|
|
||||||
callFileUploader();
|
|
||||||
}
|
|
||||||
fnUploadImage = $Fn(uploadImage,this);
|
|
||||||
$Fn(closeWindow,this).attach(welBtnCancel.$value(), "click");
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 서버로부터 받은 데이타를 에디터에 전달하고 창을 닫음.
|
|
||||||
* @parameter aFileInfo [{},{},...]
|
|
||||||
* @ex aFileInfo = [
|
|
||||||
* {
|
|
||||||
sFileName : "nmms_215646753.gif",
|
|
||||||
sFileURL :"http://static.naver.net/www/u/2010/0611/nmms_215646753.gif",
|
|
||||||
bNewLine : true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
sFileName : "btn_sch_over.gif",
|
|
||||||
sFileURL :"http://static1.naver.net/w9/btn_sch_over.gif",
|
|
||||||
bNewLine : true
|
|
||||||
}
|
|
||||||
* ]
|
|
||||||
*/
|
|
||||||
function setPhotoToEditor(oFileInfo){
|
|
||||||
if (!!opener && !!opener.nhn && !!opener.nhn.husky && !!opener.nhn.husky.PopUpManager) {
|
|
||||||
//스마트 에디터 플러그인을 통해서 넣는 방법 (oFileInfo는 Array)
|
|
||||||
opener.nhn.husky.PopUpManager.setCallback(window, 'SET_PHOTO', [oFileInfo]);
|
|
||||||
//본문에 바로 tag를 넣는 방법 (oFileInfo는 String으로 <img src=....> )
|
|
||||||
//opener.nhn.husky.PopUpManager.setCallback(window, 'PASTE_HTML', [oFileInfo]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2012.05 현재] jindo.$Ajax.prototype.request에서 file과 form을 지원하지 안함.
|
|
||||||
jindo.$Ajax.prototype.request = function(oData) {
|
|
||||||
this._status++;
|
|
||||||
var t = this;
|
|
||||||
var req = this._request;
|
|
||||||
var opt = this._options;
|
|
||||||
var data, v,a = [], data = "";
|
|
||||||
var _timer = null;
|
|
||||||
var url = this._url;
|
|
||||||
this._is_abort = false;
|
|
||||||
|
|
||||||
if( opt.postBody && opt.type.toUpperCase()=="XHR" && opt.method.toUpperCase()!="GET"){
|
|
||||||
if(typeof oData == 'string'){
|
|
||||||
data = oData;
|
|
||||||
}else{
|
|
||||||
data = jindo.$Json(oData).toString();
|
|
||||||
}
|
|
||||||
}else if (typeof oData == "undefined" || !oData) {
|
|
||||||
data = null;
|
|
||||||
} else {
|
|
||||||
data = oData;
|
|
||||||
}
|
|
||||||
|
|
||||||
req.open(opt.method.toUpperCase(), url, opt.async);
|
|
||||||
if (opt.sendheader) {
|
|
||||||
if(!this._headers["Content-Type"]){
|
|
||||||
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
|
|
||||||
}
|
|
||||||
req.setRequestHeader("charset", "utf-8");
|
|
||||||
for (var x in this._headers) {
|
|
||||||
if(this._headers.hasOwnProperty(x)){
|
|
||||||
if (typeof this._headers[x] == "function")
|
|
||||||
continue;
|
|
||||||
req.setRequestHeader(x, String(this._headers[x]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var navi = navigator.userAgent;
|
|
||||||
if(req.addEventListener&&!(navi.indexOf("Opera") > -1)&&!(navi.indexOf("MSIE") > -1)){
|
|
||||||
/*
|
|
||||||
* opera 10.60에서 XMLHttpRequest에 addEventListener기 추가되었지만 정상적으로 동작하지 않아 opera는 무조건 dom1방식으로 지원함.
|
|
||||||
* IE9에서도 opera와 같은 문제가 있음.
|
|
||||||
*/
|
|
||||||
if(this._loadFunc){ req.removeEventListener("load", this._loadFunc, false); }
|
|
||||||
this._loadFunc = function(rq){
|
|
||||||
clearTimeout(_timer);
|
|
||||||
_timer = undefined;
|
|
||||||
t._onload(rq);
|
|
||||||
}
|
|
||||||
req.addEventListener("load", this._loadFunc, false);
|
|
||||||
}else{
|
|
||||||
if (typeof req.onload != "undefined") {
|
|
||||||
req.onload = function(rq){
|
|
||||||
if(req.readyState == 4 && !t._is_abort){
|
|
||||||
clearTimeout(_timer);
|
|
||||||
_timer = undefined;
|
|
||||||
t._onload(rq);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* IE6에서는 onreadystatechange가 동기적으로 실행되어 timeout이벤트가 발생안됨.
|
|
||||||
* 그래서 interval로 체크하여 timeout이벤트가 정상적으로 발생되도록 수정. 비동기 방식일때만
|
|
||||||
|
|
||||||
*/
|
|
||||||
if(window.navigator.userAgent.match(/(?:MSIE) ([0-9.]+)/)[1]==6&&opt.async){
|
|
||||||
var onreadystatechange = function(rq){
|
|
||||||
if(req.readyState == 4 && !t._is_abort){
|
|
||||||
if(_timer){
|
|
||||||
clearTimeout(_timer);
|
|
||||||
_timer = undefined;
|
|
||||||
}
|
|
||||||
t._onload(rq);
|
|
||||||
clearInterval(t._interval);
|
|
||||||
t._interval = undefined;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
this._interval = setInterval(onreadystatechange,300);
|
|
||||||
|
|
||||||
}else{
|
|
||||||
req.onreadystatechange = function(rq){
|
|
||||||
if(req.readyState == 4){
|
|
||||||
clearTimeout(_timer);
|
|
||||||
_timer = undefined;
|
|
||||||
t._onload(rq);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
req.send(data);
|
|
||||||
return this;
|
|
||||||
};
|
|
||||||
Loaded 100 of 143 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user