01. 견적서(form) 모듈 개발 준비하기

조회 수 759 추천 수 0 2009.08.21 07:20:03
sol *.130.111.148
제목 작성자 날짜
01. 견적서(form) 모듈 개발 준비하기 (current) sol 2009.08.21 07:20:03
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li>schemas<br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있는 디렉토리이지만 form 모듈에서는 별도의 테이블이 없습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>sample</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>form.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>form.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>form.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>form.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>form.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>form.admin.controller.php</strong><br>관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>form.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성 합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div>
sol 2009.08.20 22:42:37
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div>
sol 2009.08.20 13:56:35
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div>
sol 2009.08.14 14:04:34
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div>
sol 2009.08.13 18:35:27
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250154171927">개발에 앞서 디렉토리 및 파일 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div>
sol 2009.08.13 18:03:05
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250148983371">개발에 앞서 디렉토리 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li><li class="toc3"><a href="#h1250149175922">Action 구상하기</a></li><li class="toc3"><a href="#h1250149010723">Action 명세서 module.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148983371">개발에 앞서 디렉토리 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149175922">Action 구상하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml를 작성하기 앞서 "action"을 구상해야 합니다. XE에서 action이라 뜻 그래로의 행위 입니다. 회원가입, 회원등록, 게시판 글 작성, 게시판 목록 등 입니다. 여기서
구상하는 action은 module.xml에 등록되고, 앞으로 작성하게 될 form.view.php와 form.controller.php의 Class Member
Method로 실제 code로 구현하게 됩니다.</p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>view</span><ul><li><span>dispFormWrite : 견적서 등록 화면</span></li><li><span>dispFormView : 견적서 보기 화면</span></li><li><span>dispFormList : 견적소 목록 화면</span></li></ul></li><li><span>controller</span><ul><li><span>procFormInsert : 견적서 등록</span></li></ul></li><li><span>admin view</span><ul><li><span>dispFormAdminList : 견적서 폼 목록</span></li><li><span>dispFormAdminInsert : 견적서 폼 등록 화면</span></li></ul></li><li><span>admin controller</span><ul><li><span>procFormAdminInsert : 견적서 폼 등록</span></li></ul></li></ul></div><div class="eArea xe_content xe_dr_txt"><p>* XE 모듈은 MVC 패턴을 기반으로 개발합니다.<br>view는 Context을 통해 템플릿으로 출력을 담당합니다. action 명은 "disp{모듈명}{action명}" 이 됩니다. <br>controller는 DB입력/수정/삭제 등 어떠한 행위 처리를 담당합니다. action 명은 "proc{모듈명}{action명}" 이 됩니다. <br>model은 논리적인 데이터를 표현합니다. model은 module.xml에 특별히 등록하지는 않습니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149010723">Action 명세서 module.xml 작성하기</h3></div>
sol 2009.08.13 17:43:40
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250141450778">개발자의 눈으로 본 모듈이란?</a></li><li class="toc3"><a href="#h1250148983371">개발에 앞서 디렉토리 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li><li class="toc3"><a href="#h1250149175922">Action 구상하기</a></li><li class="toc3"><a href="#h1250149010723">Action 명세서 module.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250141450778">개발자의 눈으로 본 모듈이란?</h3></div><div class="eArea xe_content xe_dr_txt"><p>개발자 입장에서 모듈이란 XE의 정상적인 프로세스를 통하는 프로그램 입니다. 정상적인 프로세스는 Context Class를 통해 요청이 들어와 모듈에서의 처리 거처 Display Class 통해 출력이 되는 과정입니다.<br></p><p>XE에서는 install, session, rss, tag, editor, layout등 모듈의 조합으로 구성되어져 있고 나머지 라이브러리는 모듈의 동작을 도와주기 위해 있습니다. 대부분의 모듈은 모듈별 Database의 Table이 있고 게시판 모듈과 같이 Document 모듈을 이용하여 만든 모듈도 있습니다. 또 cafeXE, textyle hub와 같이 가상 사이트 기능을 이용한 사이트 분양형 모듈도 만들 수 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>우리가 앞으로 함께 만들 모듈은 견적서 폼 모듈입니다. 관리자가 항목을 등록하면 사용자가 견적 폼을 등록하는 모듈입니다. </p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148983371">개발에 앞서 디렉토리 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149175922">Action 구상하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml를 작성하기 앞서 "action"을 구상해야 합니다. XE에서 action이라 뜻 그래로의 행위 입니다. 회원가입, 회원등록, 게시판 글 작성, 게시판 목록 등 입니다. 여기서
구상하는 action은 module.xml에 등록되고, 앞으로 작성하게 될 form.view.php와 form.controller.php의 Class Member
Method로 실제 code로 구현하게 됩니다.</p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>view</span><ul><li><span>dispFormWrite : 견적서 등록 화면</span></li><li><span>dispFormView : 견적서 보기 화면</span></li><li><span>dispFormList : 견적소 목록 화면</span></li></ul></li><li><span>controller</span><ul><li><span>procFormInsert : 견적서 등록</span></li></ul></li><li><span>admin view</span><ul><li><span>dispFormAdminList : 견적서 폼 목록</span></li><li><span>dispFormAdminInsert : 견적서 폼 등록 화면</span></li></ul></li><li><span>admin controller</span><ul><li><span>procFormAdminInsert : 견적서 폼 등록</span></li></ul></li></ul></div><div class="eArea xe_content xe_dr_txt"><p>* XE 모듈은 MVC 패턴을 기반으로 개발합니다.<br>view는 Context을 통해 템플릿으로 출력을 담당합니다. action 명은 "disp{모듈명}{action명}" 이 됩니다. <br>controller는 DB입력/수정/삭제 등 어떠한 행위 처리를 담당합니다. action 명은 "proc{모듈명}{action명}" 이 됩니다. <br>model은 논리적인 데이터를 표현합니다. model은 module.xml에 특별히 등록하지는 않습니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149010723">Action 명세서 module.xml 작성하기</h3></div>
sol 2009.08.13 17:37:56
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250141450778">개발자의 눈으로 본 모듈이란?</a></li><li class="toc3"><a href="#h1250148983371">개발에 앞서 디렉토리 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li><li class="toc3"><a href="#h1250149175922">Action 구상하기</a></li><li class="toc3"><a href="#h1250149010723">Action 명세서 module.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250141450778">개발자의 눈으로 본 모듈이란?</h3></div><div class="eArea xe_content xe_dr_txt"><p>개발자 입장에서 모듈이란 XE의 정상적인 프로세스를 통하는 프로그램 입니다. 정상적인 프로세스는 Context Class를 통해 요청이 들어와 모듈에서의 처리 거처 Display Class 통해 출력이 되는 과정입니다.<br></p><p>XE에서는 install, session, rss, tag, editor, layout등 모듈의 조합으로 구성되어져 있고 나머지 라이브러리는 모듈의 동작을 도와주기 위해 있습니다. 대부분의 모듈은 모듈별 Database의 Table이 있고 게시판 모듈과 같이 Document 모듈을 이용하여 만든 모듈도 있습니다. 또 cafeXE, textyle hub와 같이 가상 사이트 기능을 이용한 사이트 분양형 모듈도 만들 수 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>우리가 앞으로 함께 만들 모듈은 견적서 폼 모듈입니다. 관리자가 항목을 등록하면 사용자가 견적 폼을 등록하는 모듈입니다. </p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148983371">개발에 앞서 디렉토리 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149175922">Action 구상하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml를 작성하기 앞서 "action"을 구상해야 합니다. XE에서 action이라 뜻 그래로의 행위 입니다. 회원가입, 회원등록, 게시판 글 작성, 게시판 목록 등 입니다. 여기서
구상하는 action은 module.xml에 등록되고, 앞으로 작성하게 될 form.view.php와 form.controller.php의 Class Member
Method로 실제 code로 구현하게 됩니다.</p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>view</span><ul><li><span>dispFormWrite : 견적서 등록 화면</span></li><li><span>dispFormView : 견적서 보기 화면</span></li><li><span>dispFormList : 견적소 목록 화면</span></li></ul></li><li><span>controller</span><ul><li><span>procFormInsert : 견적서 등록</span></li></ul></li><li><span>admin view</span><ul><li><span>dispFormAdminList : 견적서 폼 목록</span></li><li><span>dispFormAdminInsert : 견적서 폼 등록 화면</span></li></ul></li><li><span>admin controller</span><ul><li><span>procFormAdminInsert : 견적서 폼 등록</span></li></ul></li></ul></div><div class="eArea xe_content xe_dr_txt"><p>* XE 모듈은 MVC 패턴을 기반으로 개발합니다.<br>view는 Context을 통해 템플릿으로 출력을 담당합니다. action 명은 "disp{모듈명}{action명}" 이 됩니다. <br>controller는 DB입력/수정/삭제 등 어떠한 행위 처리를 담당합니다. action 명은 "proc{모듈명}{action명}" 이 됩니다. <br>model은 논리적인 데이터를 표현합니다. model은 module.xml에 특별히 등록하지는 않습니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149010723">Action 명세서 module.xml 작성하기</h3></div>
sol 2009.08.13 17:02:43
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250141450778">개발자의 눈으로 본 모듈이란?</a></li><li class="toc3"><a href="#h1250148983371">개발에 앞서 디렉토리 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li><li class="toc3"><a href="#h1250149175922">Action 구상하기</a></li><li class="toc3"><a href="#h1250149010723">Action 명세서 module.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250141450778">개발자의 눈으로 본 모듈이란?</h3></div><div class="eArea xe_content xe_dr_txt"><p>개발자 입장에서 모듈이란 XE의 정상적인 프로세스를 통하는 프로그램 입니다. 정상적인 프로세스는 Context Class를 통해 요청이 들어와 모듈에서의 처리 거처 Display Class 통해 출력이 되는 과정입니다.<br></p><p>XE에서는 install, session, rss, tag, editor, layout등 모듈의 조합으로 구성되어져 있고 나머지 라이브러리는 모듈의 동작을 도와주기 위해 있습니다. 대부분의 모듈은 모듈별 Database의 Table이 있고 게시판 모듈과 같이 Document 모듈을 이용하여 만든 모듈도 있습니다. 또 cafeXE, textyle hub와 같이 가상 사이트 기능을 이용한 사이트 분양형 모듈도 만들 수 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>우리가 앞으로 함께 만들 모듈은 견적서 폼 모듈입니다. 관리자가 항목을 등록하면 사용자가 견적 폼을 등록하는 모듈입니다. </p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148983371">개발에 앞서 디렉토리 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149175922">Action 구상하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml를 작성하기 앞서 "action"을 구상해야 합니다. XE에서 action이라 뜻 그래로의 행위 입니다. 회원가입, 회원등록, 게시판 글 작성, 게시판 목록 등 입니다. 여기서
구상하는 action은 module.xml에 등록되고, 앞으로 작성하게 될 form.view.php와 form.controller.php의 Class Member
Method로 실제 code로 구현하게 됩니다.</p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>view</span><ul><li><span>dispFormWrite : 견적서 등록 화면</span></li><li><span>dispFormView : 견적서 보기 화면</span></li><li><span>dispFormList : 견적소 목록 화면</span></li></ul></li><li><span>controller</span><ul><li><span>procFormInsert : 견적서 등록</span></li></ul></li><li><span>admin view</span><ul><li><span>dispFormAdminList : 견적서 폼 목록</span></li><li><span>dispFormAdminInsert : 견적서 폼 등록 화면</span></li></ul></li><li><span>admin controller</span><ul><li><span>procFormAdminInsert : 견적서 폼 등록</span></li></ul></li></ul></div><div class="eArea xe_content xe_dr_txt"><p>* XE 모듈은 MVC 패턴을 기반으로 개발합니다.<br>view는 Context을 통해 템플릿으로 출력을 담당합니다. action 명은 "disp모듈명~~" 이 됩니다. <br>controller는 DB입력/수정/삭제 등 어떠한 행위 처리를 담당합니다. action 명은 "proc모듈명~~" 이 됩니다. <br>model은 논리적인 데이터를 표현합니다. model은 module.xml에 특별히 등록하지는 않습니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149010723">Action 명세서 module.xml 작성하기</h3></div>
sol 2009.08.13 16:55:09
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250141450778">개발자의 눈으로 본 모듈이란?</a></li><li class="toc3"><a href="#h1250148983371">개발에 앞서 디렉토리 준비하기</a></li><li class="toc3"><a href="#h1250148997539">모듈의 정보 info.xml 작성하기</a></li><li class="toc3"><a href="#h1250149175922">Action 구상하기</a></li><li class="toc3"><a href="#h1250149010723">Action 명세서 module.xml 작성하기</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250141450778">개발자의 눈으로 본 모듈이란?</h3></div><div class="eArea xe_content xe_dr_txt"><p>개발자 입장에서 모듈이란 XE의 정상적인 프로세스를 통하는 프로그램 입니다. 정상적인 프로세스는 Context Class를 통해 요청이 들어와 모듈에서의 처리 거처 Display Class 통해 출력이 되는 과정입니다.<br></p><p>XE에서는 install, session, rss, tag, editor, layout등 모듈의 조합으로 구성되어져 있고 나머지 라이브러리는 모듈의 동작을 도와주기 위해 있습니다. 대부분의 모듈은 모듈별 Database의 Table이 있고 게시판 모듈과 같이 Document 모듈을 이용하여 만든 모듈도 있습니다. 또 cafeXE, textyle hub와 같이 가상 사이트 기능을 이용한 사이트 분양형 모듈도 만들 수 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>우리가 앞으로 함께 만들 모듈은 견적서 폼 모듈입니다. 관리자가 항목을 등록하면 사용자가 견적 폼을 등록하는 모듈입니다. </p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148983371">개발에 앞서 디렉토리 준비하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>모든 모듈은 XE_ROOT(XE 설치디렉토리)/modules/ 에 위치 합니다. form이라는 디렉토리를 만들고 하위 디렉토리를 아래와 같이 만듭니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;"><ul><li><p style="margin: 0px;"><strong>form</strong><br></p><ul><li><p style="margin: 0px;"><strong>conf</strong><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">모듈 설명과 act의 권한 등 설정을 위한 XML 파일이 있습니다.</span></p><ul class="pageListType"><li><strong>info.xml</strong><br>모듈의 소개와 제작자등의 정보가 있습니다.</li><li><strong>module.xml</strong><br>모듈의 act 정의와 권한 등 모듈의 동작과 관련된 정보가 있습니다.</li></ul></li><li><strong>lang</strong><br>ko.lang.php 와 같은 언어팩 파일들이 있습니다.</li><li><strong>queries</strong><br>XE의 XML Query 파일들이 있습니다.</li><li><strong>schemas</strong><br>모듈에서 쓸 Database Table schema 에 대한 XML 파일이 있습니다.</li><li><strong>tpl</strong><br>관리자 화면의 템플릿 파일들이 있습니다.<br></li><li><p style="margin: 0px;"><strong>skins</strong><br>사용자 스킨 템플릿 파일들이 있습니다.<br></p><ul><li><p style="margin: 0px;"><strong>스킨이름</strong></p><ul class="pageListType"><li><strong>skin.xml</strong><br>스킨의 제작자 정보 및 스킨 별 설정 변수에 대한 정보가 있습니다.</li></ul></li></ul></li></ul><ul class="pageListType"><li><strong>모듈이름.class.php</strong><br>모듈의 최상위 클래스이며 모듈의 설치/ 업데이트/ 캐시파일 삭제/ 특정 Action의 권한제어등 모듈의 대표적인 기능을 수행하는 클래스 파일입니다.</li><li><strong>모듈이름.view.php</strong><br>서비스를 위한 View Action이 구현되어 있는 파일입니다.</li><li><strong>모듈이름.controller.php</strong><br>서비스를 위한 Controller Action이 구현되어 있는 파일입니다.<br>XE에서는 일반적으로 Javascript AJAX등을 이용하여 이 controller를 직접 호출하고 있습니다.</li><li><strong>모듈이름.model.php</strong><br>모듈의 model 과 관련된 것들이 구현되어 있습니다.<br>일반적으로 XE에서 model은 view나 controller에서 사용하기 위한 method로서 존재하지만 UI(Javascript, Flash)등에서 직접 데이터를 요청하는 Action이 존재할 수도 있습니다.</li><li><strong>모듈이름.admin.view.php</strong><br>파일이름에 admin이 있을 경우 Admin이 포함된 Action이 요청되면 자동으로 불려지게 됩니다.<br>관리자 기능을 위한 View Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.controller.php</strong><br>보통 관리자 기능을 위한 Controller Action이 구현되어 있습니다.</li><li><strong>모듈이름.admin.model.php</strong><br>일반적으로 model의 경우 굳이 admin model class를 만들지 않아도 되지만 효율성이나 일반적으로 요청되면 안되는 Model Action들이 구현되어 있습니다.</li><li><strong>모듈이름.api.php</strong><br>controller, model의 경우는 XE에서는 AJAX나 Flash를 통한 XMLRPC 혹은 JSON 방식으로 요청을 받고 결과를 출력하지만 view class의 경우 기본적으로 HTML로 출력하게 되어 있습니다.<br>하지만 XMLRPC/ JSON 으로 view class를 요청받았을 경우 api.php 에 해당 Action이 정의되어 있으면 결과물이 HTML 이 아닌 api.php 에서 정리한 결과를 XMLRPC나 JSON 으로 출력하도록 할 수 있습니다.<br>(<a href="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" title="http://svn.zeroboard.com/zeroboard_xe/sandbox/modules/planet/planet.api.php" class="external newWindow" style="text-decoration: underline;">./modules/planet/planet.api.php</a>&nbsp;참고)</li><li><span style="font-weight: bold;">모듈이름.smartphone.php</span><br>IPhone과 스마트 폰과 같은 장치에서 접속했을 경우 다른 출력을 하도록 할 수 있습니다.<br></li><li><span style="font-weight: bold;">모듈이름.wap.php</span><br><span class="Apple-style-span" style="line-height: 19px; font-family: Tahoma;">핸드폰에서 wap으로 접속했을 경우 다른 출력을 하도록 할 수 있습니다.</span><br></li></ul></li></ul></span></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250148997539">모듈의 정보 info.xml 작성하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml 에는 모듈의 버전과 제작자 이름, 이메일, 홈페이지 등을 작성할 수 있습니다.<br>아래는 작성 예제 입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp; 1 &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>
&nbsp; 2 &lt;module version="0.2"&gt;<br>
&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; &lt;title xml:lang="ko"&gt;견적폼&lt;/title&gt;<br>
&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;사용자에게 견적을 위한 모듈&lt;/description&gt;<br>
&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;0.1&lt;/version&gt;<br>
&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; &lt;date&gt;2009-08-13&lt;/date&gt;<br>
&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; &lt;category&gt;service&lt;/category&gt;<br>
&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; &lt;author email_address="sol@ngleader.com" link="http://ngleader.com"&gt;<br>
&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;sol&lt;/name&gt;<br>
&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp; &lt;/author&gt;<br>
&nbsp;11 &lt;/module&gt;</p></div><div class="eArea xe_content xe_dr_txt"><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;title&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈으 이름을 작성합니다.</span></p><p><span style="background-color: rgb(225, 225, 225);"> </span><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;description&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 모듈 설명을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;version&gt;</span><span style="background-color: rgb(225, 225, 225);"> 에는 해당 버전을 기술 합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;date&gt;</span><span style="background-color: rgb(225, 225, 225);">에는 제작일을 기술합니다.</span></p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;category&gt;</span><span style="background-color: rgb(225, 225, 225);">는 관리자 모드에서의 왼쪽 메뉴에서 표시될 모듈 분류입니다.</span><br>serivce | member | content | statistics | contsrtuction | utility | interlock | accessory | migration | system | package 를 입력할 수 있습니다.</p><p>serivce : 서비스 관리<br>member : 회원 관리<br>content : 정보 관리<br>statistics : 통계 열람<br>contsrtuction : 가이트 설정<br>utility : 기능 설정<br>interlock : 연동설정<br>accessory : 부가 기능 설정&nbsp; <br>migration : 데이타 관리/복원<br>system : 시스템 관리<br>package : textyle. cafeXE와 같은 Package 모듈</p><p><span style="font-weight: bold; background-color: rgb(225, 225, 225);">&lt;author&gt;</span><span style="background-color: rgb(225, 225, 225);">&nbsp; 에는 제작자 정보를 입력합니다</span><br></p></div><div class="eArea xe_content xe_dr_txt"><span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(255, 255, 255);"></span></span><span style="color: rgb(255, 0, 0);">*</span> <span style="font-weight: bold;">&lt;title&gt;, </span><span style="font-weight: bold;">&lt;description&gt;, &lt;name&gt; </span>과 같은 경우 다국어를 위한 <span style="background-color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"></span></span><span style="color: rgb(255, 0, 0); font-weight: bold;"> xml:lang</span> 속성을 지원합니다.<br><p>ko : 한국어<br>en : 영어<br>jp : 일본어<br>zh-CN : 중국어<br>zh-TW : 중국어 간체<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149175922">Action 구상하기</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml를 작성하기 앞서 "action"을 구상해야 합니다. XE에서 action이라 뜻 그래로의 행위 입니다. 회원가입, 회원등록, 게시판 글 작성, 게시판 목록 등 입니다. 여기서
구상하는 action은 module.xml에 등록되고, 앞으로 작성하게 될 form.view.php와 form.controller.php의 Class Member
Method로 실제 code로 구현하게 됩니다.</p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>view</span><ul><li><span>dispFormWrite : 견적서 등록하기 화면</span></li><li><span>dispFormView : 견적서 보기 화면</span></li><li><span>dispFormList : 견적소 목록 화면</span></li></ul></li><li><span>controller</span><ul><li><span>procFormInsert : 견적서 등록</span></li></ul></li><li><span>admin view</span><ul><li><span>dispFormAdminList : 견적서 폼 목록</span></li></ul></li><li><span>admin controller</span><ul><li><span>procFormAdminInsert : 견적서 폼 등록</span></li></ul></li></ul></div><div class="eArea xe_content xe_dr_txt"><p>* XE 모듈은 MVC 패턴을 기반으로 개발합니다.<br>view는 Context을 통해 템플릿으로 출력을 담당합니다. action 명은 "disp모듈명~~" 이 됩니다. <br>controller는 DB입력/수정/삭제 등 어떠한 행위 처리를 담당합니다. action 명은 "proc모듈명~~" 이 됩니다. <br>model은 논리적인 데이터를 표현합니다. model은 module.xml에 특별히 등록하지는 않습니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250149010723">Action 명세서 module.xml 작성하기</h3></div>
sol 2009.08.13 16:52:06