02. 위젯 개발하기

조회 수 894 추천 수 0 2009.08.18 11:22:52
sol *.13.13.164
제목 작성자 날짜
02. 위젯 개발하기 (current) sol 2009.08.18 11:22:52
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250557964701">위젯의 동작이해</a></li><li class="toc3"><a href="#h1250557997152">관리자에게 값을 받기 위한 extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc4"><a href="#h1250500467226">select</a></li><li class="toc4"><a href="#h1250500471874">select-multi-order</a></li><li class="toc4"><a href="#h1250500484571">mid</a></li><li class="toc4"><a href="#h1250500492627">module_srl_list</a></li><li class="toc4"><a href="#h1250557730731">menu</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250557964701">위젯의 동작이해</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 페이지 모듈이나 관리자가 직접 입력한 레이아웃에 &lt;img /&gt; 저장됩니다. 위젯코드가 웹페이지 호출시에 Display Class 의 display.before 부분에서 trigger를 이용하여 widgetController::triggerWidgetCompile() 이 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행 됩니다. 이때 &lt;img /&gt;의 attribute 값들이 해당 위젯의 Class의 member method <span style="font-weight: bold;">proc()</span>의 arguments로 전달되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250557997152">관리자에게 값을 받기 위한 extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 이런 부분들에 대해 Widget의 conf/info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>html의 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/text.png" class="xe_file_srl_18237030" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500467226">select</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500471874">select-multi-order</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. <br>&lt;options&gt;에 init atturibute 값이 true이면 초기값으로, default atturibute 값이 true이면 그 항목은 꼭 선택되어야 하는 항목입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500484571">mid</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid.png" class="xe_file_srl_18235977" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>특정 mid 하나를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;mid&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500492627">module_srl_list</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid_list.png" class="xe_file_srl_18235978" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>content 위젯과 같이 어려 게시판 등을 선택할때 사용합니다. 특정 여러개의 module_srl를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;module_srl_list&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250557730731">menu</h4></div><div class="eArea xe_content xe_dr_txt"><p>navigation 위젯과 같이 menu를 선택하기 위한 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;menu&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;</p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.18 10:13:33
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc4"><a href="#h1250500467226">select</a></li><li class="toc4"><a href="#h1250500471874">select-multi-order</a></li><li class="toc4"><a href="#h1250500484571">mid</a></li><li class="toc4"><a href="#h1250500492627">module_srl_list</a></li><li class="toc4"><a href="#h1250557730731">menu</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 페이지 모듈이나 관리자가 직접 입력한 레이아웃에 &lt;img /&gt; 저장됩니다. 위젯코드가 웹페이지 호출시에 Display Class 의 display.before 부분에서 trigger를 이용하여 widgetController::triggerWidgetCompile() 이 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행 됩니다. 이때 &lt;img /&gt;의 attribute 값들이 해당 위젯의 Class의 member method <span style="font-weight: bold;">proc()</span>의 arguments로 전달되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 이런 부분들에 대해 Widget의 conf/info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>html의 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/text.png" class="xe_file_srl_18237030" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500467226">select</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500471874">select-multi-order</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. <br>&lt;options&gt;에 init atturibute 값이 true이면 초기값으로, default atturibute 값이 true이면 그 항목은 꼭 선택되어야 하는 항목입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500484571">mid</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid.png" class="xe_file_srl_18235977" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>특정 mid 하나를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;mid&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500492627">module_srl_list</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid_list.png" class="xe_file_srl_18235978" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>content 위젯과 같이 어려 게시판 등을 선택할때 사용합니다. 특정 여러개의 module_srl를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;module_srl_list&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250557730731">menu</h4></div><div class="eArea xe_content xe_dr_txt"><p>navigation 위젯과 같이 menu를 선택하기 위한 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;menu&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;</p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.18 10:11:51
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc4"><a href="#h1250500467226">select</a></li><li class="toc4"><a href="#h1250500471874">select-multi-order</a></li><li class="toc4"><a href="#h1250500484571">mid</a></li><li class="toc4"><a href="#h1250500492627">module_srl_list</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 페이지 모듈이나 관리자가 직접 입력한 레이아웃에 &lt;img /&gt; 저장됩니다. 위젯코드가 웹페이지 호출시에 Display Class 의 display.before 부분에서 trigger를 이용하여 widgetController::triggerWidgetCompile() 이 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행 됩니다. 이때 &lt;img /&gt;의 attribute 값들이 해당 위젯의 Class의 member method <span style="font-weight: bold;">proc()</span>의 arguments로 전달되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 이런 부분들에 대해 Widget의 conf/info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>file_box</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>html의 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/text.png" class="xe_file_srl_18237030" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500467226">select</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500471874">select-multi-order</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. <br>&lt;options&gt;에 init atturibute 값이 true이면 초기값으로, default atturibute 값이 true이면 그 항목은 꼭 선택되어야 하는 항목입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500484571">mid</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid.png" class="xe_file_srl_18235977" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>특정 mid 하나를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;mid&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500492627">module_srl_list</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid_list.png" class="xe_file_srl_18235978" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>content 위젯과 같이 어려 게시판 등을 선택할때 사용합니다. 특정 여러개의 module_srl를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;module_srl_list&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.18 10:05:24
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc4"><a href="#h1250500467226">select</a></li><li class="toc4"><a href="#h1250500471874">select-multi-order</a></li><li class="toc4"><a href="#h1250500484571">mid</a></li><li class="toc4"><a href="#h1250500492627">module_srl_list</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 페이지 모듈이나 관리자가 직접 입력한 레이아웃에 &lt;img /&gt; 저장됩니다. 위젯코드가 웹페이지 호출시에 Display Class 의 display.before 부분에서 trigger를 이용하여 widgetController::triggerWidgetCompile() 이 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행 됩니다. 이때 &lt;img /&gt;의 attribute 값들이 해당 위젯의 Class의 member method <span style="font-weight: bold;">proc()</span>의 arguments로 전달되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 이런 부분들에 대해 Widget의 conf/info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>file_box</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>html의 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/text.png" class="xe_file_srl_18237030" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500467226">select</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500471874">select-multi-order</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. <br>&lt;options&gt;에 init atturibute 값이 true이면 초기값으로, default atturibute 값이 true이면 그 항목은 꼭 선택되어야 하는 항목입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500484571">mid</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid.png" class="xe_file_srl_18235977" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>특정 mid를 받는 타입입니다. 실제 위젯::proc() member method의 argument로는 mid 값이 아닌 module_srl 값으로 받게됩니다.</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500492627">module_srl_list</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid_list.png" class="xe_file_srl_18235978" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>content 위젯과 같이 어려 게시판 등을 선택할때 사용합니다. 특정 여러개의 module_srl를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.18 10:00:14
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc4"><a href="#h1250500467226">select</a></li><li class="toc4"><a href="#h1250500471874">select-multi-order</a></li><li class="toc4"><a href="#h1250500484571">mid</a></li><li class="toc4"><a href="#h1250500492627">module_srl_list</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 페이지 모듈이나 관리자가 직접 입력한 레이아웃에 &lt;img /&gt; 저장됩니다.&nbsp; 위젯코드가 웹페이지 호출시에 Display Class 의 display.before 부분에서 trigger를 이용하여 widgetController::triggerWidgetCompile() 이 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행 됩니다. 이때 &lt;img /&gt;의 attribute 값들이 proc()의 arguments로 전달되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 이런 부분들에 대해 Widget의 conf/info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>file_box</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>&lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/input.png" class="xe_file_srl_18235962" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500467226">select</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500471874">select-multi-order</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. <br>&lt;options&gt;에 init atturibute 값이 true이면 초기값으로, default atturibute 값이 true이면 그 항목은 꼭 선택되어야 하는 항목입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500484571">mid</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid.png" class="xe_file_srl_18235977" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>특정 mid를 받는 타입입니다. 실제 위젯::proc() member method의 argument로는 mid 값이 아닌 module_srl 값으로 받게됩니다.</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500492627">module_srl_list</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid_list.png" class="xe_file_srl_18235978" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>content 위젯과 같이 어려 게시판 등을 선택할때 사용합니다. 특정 여러개의 module_srl를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('+
'+
'%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]'+
';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.18 09:47:21
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc4"><a href="#h1250500467226">select</a></li><li class="toc4"><a href="#h1250500471874">select-multi-order</a></li><li class="toc4"><a href="#h1250500484571">mid</a></li><li class="toc4"><a href="#h1250500492627">module_srl_list</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 페이지 모듈이나 관리자가 직접 입력한 레이아웃에 &lt;img /&gt; 저장됩니다.&nbsp; 위젯코드가 웹페이지 호출시에 Display Class 의 display.before 부분에서 trigger를 이용하여 widgetController::triggerWidgetCompile() 이 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행 됩니다. 이때 &lt;img /&gt;의 attribute 값들이 proc()의 arguments로 전달되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 그런부분들에 대해 Widget에서는 info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다. <br>그리고 아래와 같은 항목의 타입들이 있습니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>file_box</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>일반 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/input.png" class="xe_file_srl_18235962" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500467226">select</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500471874">select-multi-order</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. &lt;options&gt;에 init atturibute 값이 true이면 초기값에 추가합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500484571">mid</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid.png" class="xe_file_srl_18235977" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>특정 mid를 받는 타입입니다. 실제 위젯::proc() member method의 argument로는 mid 값이 아닌 module_srl 값으로 받게됩니다.</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500492627">module_srl_list</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid_list.png" class="xe_file_srl_18235978" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>content 위젯과 같이 어려 게시판 등을 선택할때 사용합니다. 특정 여러개의 module_srl를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.18 09:41:37
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc4"><a href="#h1250500467226">select</a></li><li class="toc4"><a href="#h1250500471874">select-multi-order</a></li><li class="toc4"><a href="#h1250500484571">mid</a></li><li class="toc4"><a href="#h1250500492627">module_srl_list</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 widgetController::triggerWidgetCompile()이 trigger를 이용하여 display.before에서 &lt;img /&gt;로 저장된 코드가&nbsp; 해당 위젯의 proc()가 attribute 값들을 참조하여 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 그런부분들에 대해 Widget에서는 info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다. <br>그리고 아래와 같은 항목의 타입들이 있습니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>file_box</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>일반 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/input.png" class="xe_file_srl_18235962" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500467226">select</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500471874">select-multi-order</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. &lt;options&gt;에 init atturibute 값이 true이면 초기값에 추가합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500484571">mid</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid.png" class="xe_file_srl_18235977" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>특정 mid를 받는 타입입니다. 실제 위젯::proc() member method의 argument로는 mid 값이 아닌 module_srl 값으로 받게됩니다.</p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500492627">module_srl_list</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid_list.png" class="xe_file_srl_18235978" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>content 위젯과 같이 어려 게시판 등을 선택할때 사용합니다. 특정 여러개의 module_srl를 받는 타입입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s'+
'+
', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.17 18:16:36
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc3"><a href="#h1250498649893">select</a></li><li class="toc3"><a href="#h1250498758799">select-multi-order</a></li><li class="toc4"><a href="#h1250500106607">mid/module_srl_list</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 widgetController::triggerWidgetCompile()이 trigger를 이용하여 display.before에서 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 그런부분들에 대해 Widget에서는 info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다. <br>그리고 아래와 같은 항목의 타입들이 있습니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>file_box</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>일반 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/input.png" class="xe_file_srl_18235962" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250498649893">select</h3></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250498758799">select-multi-order</h3></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. &lt;options&gt;에 init atturibute 값이 true이면 초기값에 추가합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250500106607">mid/module_srl_list</h4></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid.png" class="xe_file_srl_18235977" alt="">
</p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/mid_list.png" class="xe_file_srl_18235978" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>특정 mid 하나 또는 여러개를 받는 타입입니다. 실제 위젯::proc() member method의 argument로는 mid 값이 아닌 module_srl 값으로 받게됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.17 18:08:41
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc3"><a href="#h1250498649893">select</a></li><li class="toc3"><a href="#h1250498758799">select-multi-order</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 widgetController::triggerWidgetCompile()이 trigger를 이용하여 display.before에서 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 그런부분들에 대해 Widget에서는 info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다. <br>그리고 아래와 같은 항목의 타입들이 있습니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>file_box</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>일반 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/input.png" class="xe_file_srl_18235962" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250498649893">select</h3></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/select.png" class="xe_file_srl_18235963" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250498758799">select-multi-order</h3></div><div class="eArea xe_content xe_dr_img"><p>
<img src="./files/attach/images/18093223/645/180/018/multi.png" class="xe_file_srl_18235964" alt="">
</p></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. &lt;options&gt;에 init atturibute 값이 true이면 초기값에 추가합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.17 18:00:52
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250477888455">위젯의 동작</a></li><li class="toc3"><a href="#h1250492930624">extra_vars</a></li><li class="toc4"><a href="#h1250498452303">text/textarea</a></li><li class="toc3"><a href="#h1250498649893">select</a></li><li class="toc3"><a href="#h1250498758799">select-multi-order</a></li><li class="toc3"><a href="#h1250494484445">위젯 class 규칙</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250477888455">위젯의 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯은 widgetController::triggerWidgetCompile()이 trigger를 이용하여 display.before에서 &lt;img /&gt;로 저장된 코드가 해당 위젯의 proc()가 실행되어 템플릿 코드가 html으로 변환되어 보여 지게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250492930624">extra_vars</h3></div><div class="eArea xe_content xe_dr_txt"><p>위젯에도 관리자가 동적으로 추가하는 부분이 생기게 됩니다. 예를 들어 위젯 스킨은 white로 또는 black으로 타이틀의 색은 파란색으로, 또는 어떤 게시판, 이미지 출력시에는 가로 넓이가 몇 사이즈 등 입력해야할 항목이 있습니다. 그런부분들에 대해 Widget에서는 info.xml에서 &lt;extra_vars&gt;에 추가하면 자동으로 입력폼을 만들어 줍니다. <br>그리고 아래와 같은 항목의 타입들이 있습니다.<br></p></div><div class="eArea xe_content xe_dr_list"><ul><li><span>text</span></li><li><span>textarea</span></li><li><span>select</span></li><li><span>select-multi-order</span></li><li><span>mid</span></li><li><span>mid_list</span></li><li><span>file_box</span></li><li><span>menu</span></li></ul></div><div class="eArea xe_content xe_dr_hx"><h4 id="h1250498452303">text/textarea</h4></div><div class="eArea xe_content xe_dr_txt"><p>일반 &lt;input="text"&gt; 와 &lt;textarea&gt;로 생각하면 되는 타입니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;text&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250498649893">select</h3></div><div class="eArea xe_content xe_dr_txt"><p>selectbox의 option을 위한 &lt;options&gt;가 추가 되어 있습니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;description xml:lang="ko"&gt;<span style="font-weight: bold;">해당확장변수 설명</span>&lt;/description&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/options&gt;</p><p>&lt;/var&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250498758799">select-multi-order</h3></div><div class="eArea xe_content xe_dr_txt"><p>mutli select방식으로 다중 선택 및 순서를 받을 때 사용합니다. &lt;options&gt;에 init atturibute 값이 true이면 초기값에 추가합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;var id="<span style="font-weight: bold;">확장변수의 변수명</span>"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;type&gt;select-multi-order&lt;/type&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">타이틀 이름</span>&lt;/name&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">default="false"</span></span><span style="color: rgb(255, 0, 0);"> </span><span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택1의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택1의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택2의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택2의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&nbsp;&nbsp;&nbsp; &lt;options <span style="background-color: rgb(225, 225, 225); font-weight: bold;"><span style="background-color: rgb(225, 225, 225); color: rgb(255, 0, 0);">init="true"</span></span>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;<span style="font-weight: bold;">선택3의 값</span>&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name xml:lang="ko"&gt;<span style="font-weight: bold;">선택3의 출력될 이름</span>&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/options&gt;<br>&lt;/vars&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494484445">위젯 class 규칙</h3></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?<br>class <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">[위젯명]</span></span> extends <span style="font-weight: bold;">WidgetHandler</span>{<br>&nbsp;&nbsp;&nbsp; function <span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(225, 225, 225);">proc</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">($args){</span></span></p><p><br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .. 위젯 구현 ..</p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">$tpl_file = '[html확장자를 제외한 템플릿 파일명]';</span></span></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br><br>&nbsp;&nbsp;&nbsp; }<br>}<br>?&gt;</div><div class="eArea xe_content xe_dr_txt"><p>위 모습이 위젯의 class 파일의 템플릿 입니다.<br>member method proc의 argument는
extra_vars로 설정된 값들이 stdClass로 들어오게 됩니다. 앞에서 지정한 값인 selected_module_srl와
extra_vars_list 는 각각 $args-&gt;selected_module_srl과
$args-&gt;extra_vars_list로 들어옵니다. 그리고 스킨(skin)값도 들어오게 됩니다.</p><p>또 proc 함수의 return은 template 핸들러로 템플릿을 컴파일하여 html를 string으로 리턴하면 됩니다.</p></div>
sol 2009.08.17 17:56:30