* 전제사항: 이 글의 내용은

(1) "ACT 허용 애드온"이나 부운영자 기능이 없는 현재 상황에서

(2) "ACT 금지 애드온"을 활용하여 최고 관리 권한을 부여한 회원들의 일부 ACT를 제한하는 방법을 이용해서 우회적으로 부운영자 기능을 구현한 상황일 때

(3) 부운영자가 관리자 페이지에서 게시물을 삭제하는 행위를 제한하고자 하는 것이 목적입니다.

 

 

 

문서 탭을 클릭하면 나오는, 체크박스를 쭉 체크하고 우상단이나 우하단에 "휴지통", "삭제", "이동", "복사" 이 버튼을 눌렀을때 동작하는 act를 차단하고 싶은데

 

act 제한 애드온에 등록하려고 해당 module.xml 파일을 살펴보니까

 

procDocumentAdminDeleteChecked << 요런 값이 있어서 제한을 걸어 봤는데 전혀 동작하지 않고...

 

이게 아니라 procDocumentManageCheckedDocument 요걸 제한을 걸어야 동작하더군요.

 

그 외에 procDocumentAdminMoveToTrash 뭐 이런 것들도 있는데 역시 제한해봤자 아무런 역할도 안 하는거 같고 이상하네요

 

원래 저런 것들은 전혀 필요없는 값들인가요?

 

저런걸 아무리 제한해도 어드민 페이지에서 문서를 삭제하거나 이동하거나 하는 것에는 전혀 지장을 주지 않고 멀쩡하게 작동하는데

 

procDocumentManageCheckedDocument 이걸 제한하면 비로소 막히네요

 

근데 문제가 뭐냐면, 저걸 제한하면 게시판 페이지에서 우측에 체크박스를 누르고 하단에 "게시물 관리" 를 클릭해서 휴지통으로 보내는 등의 행위도 차단된다는 겁니다.

 

현재 휴지통 애드온을 사용해서, 관리자가 게시판에서 삭제하는 게시물은 완전히 삭제되지 않고 전부 휴지통으로 이동시키도록 해 놓은 상태인데요

 

정작 어드민 페이지로 들어와서 삭제하면 실제로 삭제가 되어 버려서..

 

procDocumentManageCheckedDocument 이걸 제한하게 되어 버리면 어그로들이 게시판을 도배해 버리거나 할 때 관리가 매우 불편해지므로 안됩니다.

 

참고로 comment 모듈의 경우에는 procCommentAdminDeleteChecked 이걸 제한하면 정상적으로 제한이 되더군요.

 

이거 어떻게 방법이 없을까요?

 

 

 

 

수정: document.admin.controller.php를 보니까

 

/**
 * Remove the selected docs from admin page
 * @return void
 */
function procDocumentAdminDeleteChecked()
{
// error appears if no doc is selected
$cart = Context::get('cart');
if(!$cart) return $this->stop('msg_cart_is_null');
$document_srl_list= explode('|@|', $cart);
$document_count = count($document_srl_list);
if(!$document_count) return $this->stop('msg_cart_is_null');
// Delete a doc
$oDocumentController = getController('document');
for($i=0;$i<$document_count;$i++)
{
$document_srl = trim($document_srl_list[$i]);
if(!$document_srl) continue;

$oDocumentController->deleteDocument($document_srl, true);
}

$this->setMessage(sprintf(lang('msg_checked_document_is_deleted'), $document_count) );
}

 

 

 

이런 부분이 있는데... 여기 보면 분명히 procDocumentAdminDeleteChecked 이런 값이 명시되어 있는데

 

정작 저걸 제한해도 게시글을 삭제하는 데에는 아무런 지장이 없더군요.

 

제대로 동작하지 않는 것이 아닌지...

  • ?

    일단, 부운영자 삭제권한과 관련된 실질적인 문제점은 "삭제" 버튼을 모두 제거하는 식으로 해결했습니다.

    1. 게시판 페이지에서 게시판 관리를 누르면 나타나는 팝업창 -> checked_list.html 파일 수정
    2. 관리자 페이지의 문서 탭에서 삭제 버튼 제거 -> document_list.html, declared_list.html 파일 2개 수정

    (declared_list.html 파일을 수정하지 않으면 부운영자가 지우고 싶은 게시물을 일일히 신고처리한 다음 신고 게시물 보기 페이지에 들어와서 삭제하는 행위가 가능해짐)

    그런데 앞서 본문에서 말씀드렸다시피 procDocumentManageCheckedDocument를 차단하면 관리자 페이지에서의 삭제행위가 정상적으로 차단되는 코멘트 모듈에 비해 불편하고 코어를 수정해야 한다는 문제점이 있네요. procDocumentAdminDeleteChecked를 차단하는 게 왜 아무 소용이 없는건지 의문이긴 합니다.