본문

그누 여분필드에 임시 저장 기능 넣기
0 0 10,183

그누보드에 임시 저장 기능이 있어요.

그런데, 기본 기능이 제목과 컨텐츠(글작성)에만 적용이 됩니다. 해당 기능을 다른 필드에 적용하는 방법에 대해 알아볼께요.


임시 저장 기능 아래와 같은 기능인거죠..

https://mstoria.com/faq/글-작성하다-저장이-안되었다구요-그-때는/ 


임시 저장기능은 로그인한 상태에서 적용이 되는 기능입니다. ^^


여분필드 wr_1에 임시 저장 기능을 적용하기 위해 아래와 같이 적용을 합니다. 

여분필드에 smarteditor2를 적용해서 임시 저장 기능을 사용해 보겠습니다.

총 6개의 파일 수정을 해야합니다.


953782581e068eb6511f8a176a83e02d_1711282090_7717.png
 


1) 

임시저장 테이블인 g5_autosave 에 as_wr_1 필드를 추가합니다. 최소한 text로 지정을 해야겠죠.

 

2)

에디터는 smarteditor2를 이용했습니다. 글쓰기 폼에는 아래와 같이 적용을 합니다.

write_skin.php 파일에서 여분필드 글쓰는 곳 적당한 곳에 아래와 같이 추가하세요.

C

opy

		<?php echo editor_html("wr_1", $wr_1, $is_dhtml_editor); ?>
		<?php if($is_dhtml_editor) { ?>
			<style> #wr_1 { display:none; } </style>
		<?php } else { ?>
			<script> $("#wr_1").hide().addClass("form-control").show(); </script>
		<?php } ?>


하단에 스크립트도 추가합니다.

function fwrite_submit(f) {


    <?php echo get_editor_js("wr_1"); ?> //해당 부분과
    <?php echo chk_editor_js("wr_1"); ?> //해당 부분이 추가된 내용이예요.
	<?php echo $editor_js; // 에디터 사용시 자바스크립트에서 내용을 폼필드로 넣어주며 내용이 입력되었는지 검사함   ?>


3)

bbs/ajax.autosave.php 파일 내용을 아래와 내용으로 변경하세요.

<?php
include_once('./_common.php');


if (!$is_member) die('0');


$uid     = isset($_REQUEST['uid']) ? preg_replace('/[^0-9]/', '', $_REQUEST['uid']) : 0;
$subject = isset($_REQUEST['subject']) ? trim($_REQUEST['subject']) : '';
$wr_1 = isset($_REQUEST['wr_1']) ? trim($_REQUEST['wr_1']) : '';
$content = isset($_REQUEST['content']) ? trim($_REQUEST['content']) : '';


if ($subject || $wr_1 || $content) {
	$sql = " select count(*) as cnt from {$g5['autosave_table']} where mb_id = '{$member['mb_id']}' and as_subject = '$subject' and as_content = '$content' and as_wr_1 = '$wr_1' ";
	$row = sql_fetch($sql);
	if (!$row['cnt']) {
		$sql = " insert into {$g5['autosave_table']} set mb_id = '{$member['mb_id']}', as_uid = '{$uid}', as_subject = '$subject', as_content = '$content', as_wr_1 = '$wr_1', as_datetime = '".G5_TIME_YMDHIS."' on duplicate key update as_subject = '$subject', as_content = '$content', as_wr_1 = '$wr_1', as_datetime = '".G5_TIME_YMDHIS."' ";
		$result = sql_query($sql, false);


		echo autosave_count($member['mb_id']);
	}
}


4)

bbs/ajax.autosavelist.php 내용을 아래 내용으로 변경하면 됩니다.

<?php
include_once('./_common.php');


if (!$is_member) die('');


$sql = " select as_id, as_uid, as_subject, as_datetime from {$g5['autosave_table']} where mb_id = '{$member['mb_id']}' order by as_id desc ";
$result = sql_query($sql);
echo "<?xml version="1.0" encoding="utf-8"?>n";
echo "<list>n";
for ($i=0; $row=sql_fetch_array($result); $i++) {
	if($row['as_subject']) {
		$subject  = htmlspecialchars(utf8_strcut($row['as_subject'], 25), ENT_QUOTES);
	} else {
		$subject  = "제목 없음";
	}
    $datetime = substr($row['as_datetime'],2,14);
    echo "<item>n";
    echo "<id>{$row['as_id']}</id>n";
    echo "<uid>{$row['as_uid']}</uid>n";
    echo "<subject><![CDATA[{$subject}]]></subject>n";
    echo "<datetime>{$datetime}</datetime>n";
    echo "</item>n";
}
echo "</list>";


5)

bbs/ajax.autosaveload.php 내용을 아래 내용으로 변경하세요.

<?php
include_once('./_common.php');


if (!$is_member) die('');


$as_id = isset($_REQUEST['as_id']) ? (int) $_REQUEST['as_id'] : 0;


$sql = " select as_subject, as_content, as_of_content from {$g5['autosave_table']} where mb_id = '{$member['mb_id']}' and as_id = {$as_id} ";
$row = sql_fetch($sql);
$subject = $row['as_subject'];
$wr_1 = $row['as_wr_1'];
$content = $row['as_content'];


echo "<?xml version="1.0" encoding="utf-8"?>n";
echo "<item>n";
echo "<subject><![CDATA[{$subject}]]></subject>n";
echo "<wr_1><![CDATA[{$wr_1}]]></wr_1>n";
echo "<content><![CDATA[{$content}]]></content>n";
echo "</item>n";


6)

이번엔 js/autosave.js 파일을 수정할꺼예요. 아래의 내용을 변경하시면 됩니다.

해당 콘텐츠는 엠스토리아 작가에 의해 공개 또는 유료로 제공되는 콘텐츠로 무단 갭쳐 및 불법 공유시 법적 제재를 받을 수 있습니다.
본 팜스토리는 유료로 제공중입니다.
구독을 통해 전체 내용을 확인할 수 있습니다.

관련자료

댓글 0
등록된 댓글이 없습니다.
알림 0