참고사이트 - http://www.slideshare.net/flyskykr/xe-34832050http://www.xeschool.com/xe/xenote_module_book_about


모듈명 : myboard (다국어지원과 관련한 내용은 기술하지 않습니다.)


모듈 설정 파일


1. 정보파일 (XE설치폴더/modules/myboard/conf/info.xml)


모듈의 정보파일을 작성하여 XE core가 인식할 수 있도록 합니다.


<?xml version="1.0" encoding="UTF-8"?>

<module version="0.2">

    <title xml:lang="ko">나만의 게시판</title>

    <description xml:lang="ko">문서 모듈을 사용한 나만의 게시판 모듈입니다.</description>

    <version>1.0</version>

    <date>2017-02-10</date>

    <category>service</category>

    <author email_address="" link="opencocktail@tistory.com">

        <name xml:lang="ko">블렌더</name>

    </author>

</module>


2. 모듈파일 (XE설치폴더/modules/myboard/conf/module.xml)


<grant> 요소는 모듈에 대한 사용 허가 권한에 대한 내용으로 생성된 각 모듈별 [권한관리 > 권한설정] 에서 확인할 수 있고 <grant> 요소 내 default, target 속성에 들어갈 수 있는  값은 guest/member/manager/root 입니다. 


<action> 요소는 type 속성을 지정하여 해당 파일별로 호출할 수 있는 함수명을 정의하였습니다. standalone 속성은 반드시 mid 파라미터를 가지고 실행을 해야 하는 경우에 false로 세팅을 해야 하며, 이 속성을 사용을 하지 않으면 보안에 문제가 생길 수 있습니다. 


<?xml version="1.0" encoding="utf-8"?>

<module>

    <grants>

        <grant name="list" default="guest">

            <title xml:lang="ko">목록</title>

        </grant>

        <grant name="view" default="guest">

            <title xml:lang="ko">열람</title>

        </grant>

        <grant name="write" default="guest">

            <title xml:lang="ko">작성</title>

        </grant>

        <grant name="delete" default="guest">

            <title xml:lang="ko">삭제</title>

        </grant>

    </grants>


    <permissions>

        <permission action="dispMyboardAdminContentList" target="manager" />

        <permission action="dispMyboardAdminInsertContent" target="manager" />

        <permission action="dispMyboardAdminDeleteContent" target="manager" />

        <permission action="dispMyboardAdminGrantInfo" target="manager" />

        <permission action="dispMyboardAdminSkinInfo" target="manager" />

 

        <permission action="procMyboardAdminInsertContent" target="manager" />

        <permission action="procMyboardAdminDeleteContent" target="manager" />

    </permissions>

    

    <actions>

        <action name="dispMyboardDocumentList" type="view" index="true" />

        <action name="dispMyboardViewDocument" type="view" />

        <action name="dispMyboardInsertDocument" type="view" />

        <action name="dispMyboardDeleteDocument" type="view" />

 

        <action name="procMyBoardInsertDocument" type="controller" />

        <action name="procMyBoardDeleteDocument" type="controller" />

 

        <action name="dispMyboardAdminContentList" type="view" standalone="true" admin_index="true" />

        <action name="dispMyboardAdminInsertContent" type="view" standalone="true" />

        <action name="dispMyboardAdminDeleteContent" type="view" standalone="true" />

        <action name="dispMyboardAdminGrantInfo" type="view" standalone="true" />

        <action name="dispMyboardAdminSkinInfo" type="view" standalone="true" />

 

        <action name="procMyboardAdminInsertContent" type="controller" standalone="true" />

        <action name="procMyboardAdminDeleteContent" type="controller" standalone="true" />

    </actions>

</module>


3. 기본클래스 (XE설치폴더/modules/myboard/myboard.class.php)


모듈의 설치/업데이트/삭제 기능이 구현된 기본 클래스입니다. 클래스 선언 후 필요에 따라 추가적으로 구현을 해 주시면 됩니다.


<?php

    class myboard extends ModuleObject {

 

 

        /**

         * @brief 설치시 추가 작업이 필요할시 구현

         **/

        function moduleInstall() {

 

            return new Object();

        }

 

        /**

         * @brief 설치가 이상이 없는지 체크하는 method

         **/

        function checkUpdate() {

 

            return false;

        }

 

        /**

         * @brief 업데이트 실행

         **/

        function moduleUpdate() {

 

            return new Object(0, 'success_updated');

        }

 

        function moduleUninstall() {

 

            return new Object();

        }

 

        /**

         * @brief 캐시 파일 재생성

         **/

        function recompileCache() {

        }

 

    }

?> 


파일의 마지막에서 PHP 블록의 닫기 태그를 생략할 수 있으며, 때로는 유용합니다. include나 require를 사용할 경우, 원하지 않은 공백이 파일 마지막에 들어가지 않게 함으로써, 나중에 추가 응답 헤더를 추가할 수 있습니다. 또한 출력 버퍼링을 사용할 경우에도 포함한 파일들에 의해서 각 파트의 마지막에 원하지 않은 공백을 피할 수 있으므로 도움이 됩니다.


위의 파일 3개를 경로에 맞추어 올리면 관리자 페이지 내의 설치된 모듈에서 확인이 가능해집니다. 




'XE 1.11.x' 카테고리의 다른 글

XML쿼리 사용할 때 유의할 점  (0) 2017.02.28
XE url 요청 프로세스  (0) 2017.02.28
CafeXE 모듈 수정해 보기  (0) 2017.02.22
XE 디버깅 설정  (0) 2017.02.17
XE 템플릿 문법  (0) 2017.02.09

+ Recent posts