게시글의 상태지정
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
커뮤니티 중 일부 게시글은 관리자의 승인을 받고 게시하고자
게시글의 상태를 public이 아닌 private나 embargo 형태로 지정하고자 하는데요.
일전에는 게시판 설정에 체크하는 목록이 공개/비밀 말고 더 나왔던것 같은데.. 지금은 별도로 나오지 않는데 사용 방법을 알 수 있을까요?
+++ 12:06 추가
게시판설정에서 임의로 EMBARGO값과 PRIVATE를 추가하여
<!--@if(is_array($status_list))-->
<!--@foreach($status_list AS $key=>$value)-->
<input type="radio" name="status" value="{$key}" id="{$key}" <!--@if($oDocument->get('status') == $key || ($key == 'PUBLIC' && !$document_srl))-->checked="checked"<!--@end--> />
<label for="{$key}">{$value}</label>
<!--@end-->
<!--@end-->
의 코드에서 나오게 까진 되었습니다.
헌데.. 게시글 작성을 하면 계속 PUBLIC으로 고정되네요 checked를 빼봐도 동일한듯 합니다.
별도로 수정해야하거나 추가해야하는 부분이 있을지요?
procBoardInsertDocument에도 아래와 같이 status값이 넘어가고 있습니다.
댓글 5
일단 먼저.. 비슷한 기능이 구현되어 있는 윤삼님의 예약 발행 모듈을 사용하기로 했습니다.
https://rhymix.org/pds/1721679
헌데 원래 게시판에서는 공개/비밀글 만 지원하는 것이고 private도 별도 서드파티에서 구현하는게 맞는것인지 확인 하고 싶습니다.
게시판에서는 단 한 번도 public, secret 이외의 상태값을 지원한 적이 없습니다. 만약 보셨다면 다른 모듈일 거예요.
public, secret 이외의 상태값은 모듈이나 애드온에서 강제 지정해야 합니다. 게시판에서는 지원하지 않기 때문에, 스킨에 선택지를 추가하더라도 인식하지 않습니다. (만약 그게 가능했다면 회원들이 임의로 자기 글에 엉뚱한 상태값을 집어넣어서 글은 보이지 않도록 하고 포인트만 챙기는 등... 더 큰 문제가 되었겠지요. ㅎㅎ)
제가 너무 급하게 생각해서 그랬던 것 같습니다.
이제와서 생각해보면, triggerAfterInsertDocument 나 triggerAfterUpdateDocument 를 트리거로 잡아서 별도로 모듈에서 status를 업데이트 해주면 되겠군요.
감사합니다
document 모듈의 insertDocument 를 직접 쓰는 경우는 status 를 직접 전달할 수 있지만
게시판의 글등록 기능을 이용할때는 secret 관련을 제외한 status 는 어떤값을 넣어도 강제로 public 이 됩니다
이걸 고치시려면 board.controller.php 에서 procBoardInsertDocument 함수에서
$obj->status = DocumentModel::getConfigStatus('public');
이 부분을 고치시면 됩니다.
if(!$obj->status) $obj->status = DocumentModel::getConfigStatus('public'); 이런형태로 하면
status 값이 따로 전달된게 없는 경우만 public 이 되겠죠. 전달한게 있으면 그 값으로 하고
( 기진곰님 말씀처럼 조작시 문제가 될 수 있으면 관리자만 사용가능한다든지, 특정게시판만 된다든지 제한을 더 걸면 되겠죠? )
별도 모듈에서 trigger로 새글 작성 또는 업데이트시에 체크하는 형태로 하면 될것 같아 이를 좀 손보려고 합니다 ㅎㅎ
감사합니다!