귀하는 로그인되어 있지 않습니다. 이대로 편집하면 귀하의 IP 주소가 편집 기록에 남게 됩니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!== 개발자를 위한 새 기능과 변경 사항 == * 알림센터에서 FCM을 사용하여 푸시 알림을 발송할 때, 알림 데이터를 "notification" 필드에 넣을지 선택하는 옵션을 제공합니다. ([https://github.com/rhymix/rhymix/issues/1933 #1933]) ** "notification" 필드 없이 "data" 필드에만 넣으면 어플리케이션이나 프론트엔드에서 표시되는 알림을 좀더 유연하게 컨트롤할 수 있습니다. * <code>MemberController->insertGroup()</code> 메소드와 <code>procMemberAdminInsertGroup()</code> 액션의 결과값에 group_srl 값이 추가되었습니다. * 문서 분류(category) 편집 화면에서 카테고리 tree 구조를 불러올 때 ./files/cache/document_category/ 경로의 캐시파일을 직접 호출하지 않고 문서 모듈의 POST 액션을 사용하도록 변경되었습니다. ** 라이믹스 2.1.3부터 '''./files/cache/ 폴더 아래에 있는 .php 파일을 직접 호출하는 것은 금지됩니다.''' 아파치 사용시 .htaccess에 의해 자동으로 차단되며, nginx 사용시 rewrite 규칙을 업데이트하여야 차단됩니다. ** files/ 폴더 아래에 .php 파일을 생성하고 호출하는 기능을 전반적으로 축소할 예정이며, 미래에는 files 폴더 아래에 있는 모든 .php 파일을 직접 호출하는 것이 금지될 수도 있으니 참고하시기 바랍니다. 쓰기 가능한 경로에 실행 가능한 파일을 두는 것은 안전하지 않습니다(W^X). * 쪽지 보내기, 친구 추가 등 팝업창에서 열던 화면을 현재 창에서 열도록 스킨을 수정할 경우, 폼을 표시하는 <code>disp 액션</code>과 폼을 제출하는 <code>proc 액션</code> 양쪽 모두 <code>window_type=self</code> 파라미터를 추가해 주어야 합니다. 이 파라미터를 추가하지 않을 경우 팝업창에서 열던 기존 방식의 스킨이라고 간주하고, 팝업창에 맞는 레이아웃을 표시하게 됩니다. * 트랜잭션 안에서 실행되던 <code>document.insertDocument (before)</code> 트리거가 트랜잭션 바깥으로 이동했습니다. 예전에는 이 트리거에서 오류를 반환하면 트랜잭션을 중단시키고 다른 자료가 실행한 쿼리까지 롤백할 수 있었으나, 이제는 다른 쿼리에 영향을 주지 않습니다. * <code>module.xml</code>에서 사용하는 <code>check_csrf</code>, <code>meta_noindex</code>, <code>admin_index</code> 등의 속성에서 하이픈(-), 언더바(_), camelCase 표현을 구분하지 않고 모두 허용하도록 변경되었습니다. ** <code>check-csrf="true"</code>, <code>check_csrf="Y"</code>, <code>checkCsrf="on"</code> 모두 동일한 의미입니다. * '''module.xml에서 이벤트 핸들러(트리거)를 선언할 수 있도록 지원합니다.''' ** 더이상 트리거 등록 여부를 PHP에서 확인하고 일일이 등록해 줄 필요가 없습니다. ** 이벤트를 받을 클래스는 <code>controller</code>, <code>model</code> 등 XE 방식의 명칭을 입력해도 되고, 해당 모듈의 <code>네임스페이스(Rhymix\Modules\모듈명)</code> 아래에 있는 클래스명을 입력해도 됩니다. 신규 개발하는 모듈이라면 네임스페이스를 사용하는 것을 권장합니다. ** 이벤트 핸들러 삭제시에도 <code>module.xml</code>을 수정하면 "모듈 설정 완료" 클릭시 자동으로 삭제됩니다. ** 단, <code>module.xml</code>에 이벤트 핸들러가 하나라도 선언되어 있는 경우, 다른 방법으로 등록한 트리거는 삭제 대상으로 인식합니다. ** 예를 들어 아래의 예제에서 <code>beforeInsertDocument()</code> 메소드는 <code>Rhymix\Modules\모듈명\Controllers\EventHandlers</code> 클래스에 있고, 이 클래스는 <code>./modules/모듈명/controllers/EventHandlers.php</code> 파일에 선언되어 있다고 가정합니다. <code><eventHandlers> <eventHandler before="document.insertDocument" class="Controllers\EventHandlers" method="beforeInsertDocument" /> <eventHandler after="document.updateDocument" class="Controllers\EventHandlers" method="afterUpdateDocument" /> </eventHandlers></code> * '''특정 액션 직전이나 직후에만 호출되는 이벤트 핸들러(트리거)를 선언할 수 있도록 지원합니다.''' ** 기존의 <code>moduleObject.proc (before, after)</code> 이벤트와 거의 동일한 시점에 호출되지만, 해당 액션일 때만 호출됩니다. ** 모듈을 로딩한 후 <code>$act</code> 값을 확인하는 불필요한 과정과 자원 낭비를 피할 수 있습니다. ** <code>module.xml</code>에서 선언할 수도 있고, <code>PHP</code>에서 등록할 수도 있습니다. PHP에서는 트리거명을 "<code>act:모듈명.액션명</code>"으로 지정하면 됩니다. <code><eventHandlers> <eventHandler beforeAction="module.dispHelloWorld" class="Controllers\EventHandlers" method="beforeHelloWorld" /> <eventHandler afterAction="module.dispHelloWorld" class="Controllers\EventHandlers" method="afterHelloWorld" /> </eventHandlers></code> <code>ModuleController::getInstance()->insertTrigger( 'act:member.dispMemberInfo', $this->module, 'controller', 'triggerAfterMemberInfo', 'after' );</code> * 모듈에서 "<code>Rhymix\Modules\모듈명</code>"이 아닌 커스텀 네임스페이스를 선언할 수 있도록 지원합니다. * 모듈에서 "<code>모듈명.class.php</code>" 대신 사용할 기본 클래스와 설치/업데이트 담당 클래스를 별도로 선언할 수 있도록 지원합니다. 편집 요약 가온 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 가온 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요! 취소 편집 도움말 (새 창에서 열림)