본문 열람시 해당글을 스크랩할 수 있는 스크랩 버튼이 없는 경우도 있고 있어도 스크랩만 지원하고 스크랩 취소를 지원하지 않는 경우가 많습니다. 지금 이 글을 보여주는 스케치북 스킨에는 스크랩 버튼 자체가 없어서 추가가 필요한데요. 제가 추가한 코드를 팁으로 제공해 드립니다.
로그인한 회원의 스크랩한 문서를 쿼리해서 해당 데이터에 있는 글이면 스크립했음으로 표시하고 스크랩취소 버튼을 제공하고 스크립한 데이터에 없는 게시글이라면 스크랩 버튼을 제공하게 했습니다. 즉시 반영과 토글을 위해 새로고침이 발생하도록 했습니다.
그리고 비로그인에게는 작동하지 않도록 했고 버튼이 보이지도 않습니다.
스케치북 _read.html 파일의 게시글 추천,비추천,신고 버튼을 보여주는 코드 아래에 스크랩 버튼 제공코드를 추가해 줍니다.
<!--// Vote --> 를 찾으시면 빨리 찾으실 수 있을 겁니다.
{@ // 스크랩 }
<!--@if($is_logged)-->
{@
$args = new stdClass();
$args->document_srl = $oDocument->document_srl;
$args->member_srl = $logged_info->member_srl;
$scrapdocs = executeQuery('member.getScrapDocument', $args);
$scrapdocs_count = 0;
$scrapdocs_count = $scrapdocs->data->count;
}
<!--@if($scrapdocs_count > 0)-->
<a cond="$is_logged" href="#" onclick="doDeleteScrap({$document_srl});return false;" class="bd_login" style="border:2px solid #d3447f;color:#ffffff;background-color:#f189a9;">
<b><i class="fa fa-bookmark" aria-hidden="true"></i></b>
<span>스크랩함</span>
</a>
<!--@else-->
<a cond="$is_logged" href="#" onclick="doAddScrap({$document_srl});return false;" class="bd_login" style="border:2px solid #{$mi->color};color:#{$mi->color};">
<b><i class="fa fa-bookmark-o" aria-hidden="true"></i></b>
<span>스크랩</span>
</a>
<!--@end-->
<script>
function doDeleteScrap(document_srl) {
var params = new Array();
params['document_srl'] = document_srl;
exec_json('member.procMemberDeleteScrap', params, function() { alert('스크랩을 취소했습니다.');location.reload(); });
}
function doAddScrap(document_srl) {
var params = new Array();
params['document_srl'] = document_srl;
exec_json('member.procMemberScrapDocument', params, function() { alert('스크랩 등록했습니다.');location.reload(); });
}
</script>
<!--@end-->
* 이글을 쓰고 있는 현재 시점에서 코어에 버그가 있어 스크랩을 등록한 후 함수가 작동하지 않는 문제가 있습니다. 스크랩 등록했습니다. 라는 커스텀된 문구와 새로고침이 일어나야 하는데 되지 않습니다. 이는 코어가 고쳐지기 전까지는 코어에서 한줄을 주석해주세요.
https://github.com/rhymix/rhymix/blob/master/modules/member/member.controller.php#L402
버전에 따라 라인수가 바뀔 수 있고 버그가 수정될 수 도 있으니 이후 이부분 참고해주세요.
//$this->setError(-1);
주석처리
* 위 주석처리 해야 하는 부분이 라이믹스 2.0.17 에서 반영되어 주석처리할 부분이 없어져서 조치가 필요하지 않습니다.