엉뚱한 곳에서 (보통 xe/files/config/config.user.inc.php 에서 실수함) 빈 줄이 추가됨
실제로 날라오는 XML자료의 첫 번째 줄에 <response>가 나타나지 않고 빈 줄이 추가됨
xml을 처리한 javascript상에서 xml이 아닌 일반 메시지로 판단
(정규식에 의해 첫 번째에 <response>가 나타나면 xml로 파싱해서 처리하고 그렇지 않으면 일반 메시지로 판단
앞에 새 줄(\n)이 있으므로 /^<response>/에 해당하지 않으므로 일반 메시지로 판단됨)
해당 경고 메시지가 뜬다
추가 : 이런 경우는 보통 __OB_GZHANDLER_ENABLE__ 을 활성화 하면 에러남
메시지 내용은 header상에서는 압축되었다고 했으나, 정작 메시지 내용은 압축된 자료 앞에 \n이 추가되어됨
브라우저상에서 정상적인 압축 자료로 인식하지 못하고 지원하지 않는 인코딩이라는 창이 뜸
해결 방법 : 엉뚱한 빈 줄을 찾아야 된다. (output buffering 기능을 끄면 header전에 출력되는곳을 알 수 있으나 정작 어디서 꺼야될지는 정확하게 모르겠다.) 일단 xe/files/config/config.user.inc.php에 빈 줄이 있는 지 (특히 <? 앞이나 ?> 뒤에 확인할 것) 확인한다.
가운데 Context::set('grants', $this->module_info->grants); 를 추가하시는겁니다. 3. 지금은 board모듈에서 수정합니다. 다른 모듈도 비슷하게 시도해보세요..
modules/board/board.view.php 약 58줄 부터
/** * @brief 목록 및 선택된 글 출력 **/ function dispBoardContent() { /** * 목록보기 권한 체크 (모든 권한은 ModuleObject에서 xml 정보와 module_info의 grant 값을 비교하여 미리 설정하여 놓음) **/
$grants = Context::get('grants');
if(!$this->grant->list)
/** * module_info에서 권한을 검사하여 해당하는 메시지 출력 **/ { if (in_array('2',$grants['view'])) // 그룹2에게 보기 권한이 있을 때 return $this->dispBoardMessage('msg_not_permitted_member2'); elseif (in_array('3',$grants['view'])) // 그룹3에게 보기 권한이 있을 때 return $this->dispBoardMessage('msg_not_permitted_member3'); elseif (in_array('4',$grants['view'])) // 그룹4에게 보기 권한이 있을 때 return $this->dispBoardMessage('msg_not_permitted_member4'); else return $this->dispBoardMessage('msg_not_permitted');
}
위 파일 경우는, 사실 원래는 목록보기 권한이 없을 때 나올 메시지입니다만,
그냥 들어왔는데, 로그인해라길래 들어오니까 등급이안된다고 안보여주면 짜증나니까 모든 권한을 가진 그룹을 알려주는 것 입니다. 논리적인 순서에 맞게 배치하세요.
modules/board/board.view.php 약 151줄 부터
// 글 보기 권한을 체크해서 권한이 없으면 오류 메세지 출력하도록 처리 if(!$this->grant->view && !$oDocument->isGranted()) { $oDocument = null; $oDocument = $oDocumentModel->getDocument(0);
Context::set('document_srl','',true); if (in_array('2',$grants['view'])) //그룹2에게 보기 권한이 있을 때 return $this->alertMessage('msg_not_permitted_member1'); elseif (in_array('3',$grants['view'])) //그룹3에게 보기 권한이 있을 때 return $this->alertMessage('msg_not_permitted_member2'); elseif (in_array('4',$grants['view'])) // 그룹4에게 보기 권한이 있을 때 return $this->alertMessage('msg_not_permitted_member3'); else return $this->alertMessage('msg_not_permitted');
} else {
소스 건드실 분들은 아시겠지만, 저기 2,3,4들은 group_srl입니다. 직접 값을 모르시면 잘 찾아보세요...
추
가) 관리자로 로그인하셔서 관리 -> 회원 -> 그룹관리 -> 해당 그룹의 수정 링크의 속성에서 링크 주소를
보시면 group_srl=숫자 가 나옵니다. 이 숫자가 해당 그룹의 시리얼넘버이구요, 저기 '2', '3'등과 같이 있는 곳에
해당 숫자를 넣으시면 됩니다 :)