|
|
|
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1251274979372">애드온 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>member_join_extend 애드온은 가입폼인 <b>dispMemberSignUpForm </b>action이 실행된 뒤인 <b>after_module_proc </b>시점에서 세션을 유무를 체크해 세션이 없으면 템플릿을 애드온의 템플릿과 교체합니다.</p><p>애드온의 동의시 exec_xml()로 '<b>MemberJoinExtendAgree</b>' 를 호출하고 '<b>before_module_init</b>' 시점에서 애드온의 'MemberJoinExtendAgree' 액션을 받아 세션을 등록한 뒤 dispMemberSignUpForm 페이지를 자바스크립트로 리로드 합니다.<br></p><p>그리고 실제 회원 가입이 완료 되었을 경우에는 세션을 삭제합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p> if($called_position == '<b>before_module_init</b>'){<br><br> // 실제 가입시 체크<br> if(Context::get('act')=='<b>procMemberInsert</b>'){<br> // 세션확인후 세션이 없으면 에러 표시</p><p> // 동의시 action <br> }else if(Context::get('act') =='<b>MemberJoinExtendAgree</b>'){<br> // javascript의 exec_xml로 호출, 세션을 등록하고 XE의 출력인 XML_RPC로 success 출력<br> } <br><br> } else if($called_position == '<b>after_module_proc</b>') {<br><br> if(Context::get('act') == "<b>dispMemberSignUpForm</b>"){</p><p> // 세션체크하여 애드온 실행<br> if(!$_SESSION['member_join_extend_authed']){<br> // 애드온의 템플릿과 교체<br> } <br><br> // delete session<br> }else if(in_array(Context::get('act'),array('<b>procMemberInsert</b>'))){<br> } <br> } <br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1251275047665">extra_vars와 $addon_info</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml에서 설정한 extra_vars값은 애드온에서 $addon_info 의 stdClass member variable로 사용하면 됩니다. <br><span style="font-weight: bold;">// 애드온의 템플릿과 교체 </span>부분에서 아래와 같이 애드온 확장변수 값을 받아 정리한뒤 Context를 통해 템플릿에서 사용할 변수로 셋팅합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p> if(<span style="font-weight: bold;">$addon_info</span>->use_agreement=='Y' && <span style="font-weight: bold;">$addon_info</span>->agreement){<br> Context::set('agreement',<span style="font-weight: bold;">$addon_info-</span>>agreement);<br> }<br> if(<span style="font-weight: bold;">$addon_info</span>->use_private_agreement=='Y' && <span style="font-weight: bold;">$addon_info</span>->private_agreement){<br> Context::set('private_agreement',<span style="font-weight: bold;">$addon_info</span>->private_agreement);<br> Context::set('private_gathering_agreement',<span style="font-weight: bold;">$addon_info</span>->private_gathering_agreement);<br> }<br> if(<span style="font-weight: bold;">$addon_info</span>->use_junior_join=='Y'){<br> Context::set('use_junior_join',<span style="font-weight: bold;">$addon_info</span>->use_junior_join);<br> }<br><br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1251275671021">compile template 및 치환</h3></div><div class="eArea xe_content xe_dr_txt"><p>애드온 실행 시점인 after_module_proc 부분은 모듈이 실행된 뒤 바로 애드온이 실행됩니다. member 모듈의 dispMemberSignUpForm action으로 들어왔을 때 ModuleObject class에서 dispMemberSignUpForm action이 실제 실행되고 해당 템플릿과 템플릿 위치를 설정하고 after_module_proc 시점에서 애드온이 실행되고 DisplayHandler class에서 컴파일되어 보여지게 됩니다. after_module_proc 시점에서 ModuleObject::setTemplatePath() 와 ModuleObject::setTemplateFile() 로 애드온의 템플릿 파일로 over setting 하여 애드온의 템플릿이 DisplayHandler 에 넘겨지도록합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p> // load addon lang <br> Context::loadLang(_XE_PATH_.'addons/member_join_extend/lang');<br> Context::addHtmlHeader(sprintf('<script type="text/javascript"> var msg_junior_join ="%s"; var msg_check_agree ="%s";</script>',trim($addon_info->msg_junior_join),Context::getLang('msg_check_agree')));<br><br> // change module template<br> Context::addJsFile('./addons/member_join_extend/member_join_extend.js',false);<br> $addon_tpl_path = './addons/member_join_extend/tpl';<br> $addon_tpl_file = 'member_join_extend.html';<br><br><span style="font-weight: bold;"> $this->setTemplatePath($addon_tpl_path);</span><br style="font-weight: bold;"><span style="font-weight: bold;"> $this->setTemplateFile($addon_tpl_file);</span><br style="font-weight: bold;"><br></p></div>
|
sol |
2009.08.27 07:13:36 |
|
|
|
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1251274979372">애드온 동작</h3></div><div class="eArea xe_content xe_dr_txt"><p>member_join_extend 애드온은 가입폼인 dispMemberSignUpForm action이 실행된 뒤인 after_module_proc 시점에서 세션을 유무를 체크해 세션이 없으면 템플릿을 애드온의 템플릿과 교체합니다.</p><p>애드온의 동의시 exec_xml()로 'MemberJoinExtendAgree' 를 호출하고 'before_module_init' 시점에서 애드온의 'MemberJoinExtendAgree' 액션을 받아 세션을 등록한 뒤 dispMemberSignUpForm 페이지를 자바스크립트로 리로드 합니다.<br></p><p>그리고 실제 회원 가입이 완료 되었을 경우에는 세션을 삭제합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p> if($called_position == 'before_module_init'){<br><br> // 실제 가입시 체크<br> if(Context::get('act')=='procMemberInsert'){<br> // 세션확인후 세션이 없으면 에러 표시</p><p> // 동의시 action <br> }else if(Context::get('act') =='MemberJoinExtendAgree'){<br> // javascript의 exec_xml로 호출, 세션을 등록하고 XE의 출력인 XML_RPC로 success 출력<br> } <br><br> } else if($called_position == 'after_module_proc') {<br><br> if(Context::get('act') == "dispMemberSignUpForm"){</p><p> // 세션체크하여 애드온 실행<br> if(!$_SESSION['member_join_extend_authed']){<br> // 애드온의 템플릿과 교체<br> } <br><br> // delete session<br> }else if(in_array(Context::get('act'),array('procMemberInsert'))){<br> } <br> } <br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1251275047665">extra_vars와 $addon_info</h3></div><div class="eArea xe_content xe_dr_txt"><p>info.xml에서 설정한 extra_vars값은 애드온에서 $addon_info 의 stdClass member variable로 사용하면 됩니다. <br><span style="font-weight: bold;">// 애드온의 템플릿과 교체 </span>부분에서 아래와 같이 애드온 확장변수 값을 받아 정리한뒤 Context를 통해 템플릿에서 사용할 변수로 셋팅합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p> if(<span style="font-weight: bold;">$addon_info</span>->use_agreement=='Y' && <span style="font-weight: bold;">$addon_info</span>->agreement){<br> Context::set('agreement',<span style="font-weight: bold;">$addon_info-</span>>agreement);<br> }<br> if(<span style="font-weight: bold;">$addon_info</span>->use_private_agreement=='Y' && <span style="font-weight: bold;">$addon_info</span>->private_agreement){<br> Context::set('private_agreement',<span style="font-weight: bold;">$addon_info</span>->private_agreement);<br> Context::set('private_gathering_agreement',<span style="font-weight: bold;">$addon_info</span>->private_gathering_agreement);<br> }<br> if(<span style="font-weight: bold;">$addon_info</span>->use_junior_join=='Y'){<br> Context::set('use_junior_join',<span style="font-weight: bold;">$addon_info</span>->use_junior_join);<br> }<br><br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1251275671021">compile template 및 치환</h3></div><div class="eArea xe_content xe_dr_txt"><p>애드온 실행 시점인 after_module_proc 부분은 모듈이 실행된 뒤 바로 애드온이 실행됩니다. member 모듈의 dispMemberSignUpForm action으로 들어왔을 때 ModuleObject class에서 dispMemberSignUpForm action이 실제 실행되고 해당 템플릿과 템플릿 위치를 설정하고 after_module_proc 시점에서 애드온이 실행되고 DisplayHandler class에서 컴파일되어 보여지게 됩니다. after_module_proc 시점에서 ModuleObject::setTemplatePath() 와 ModuleObject::setTemplateFile() 로 애드온의 템플릿 파일로 over setting 하여 애드온의 템플릿이 DisplayHandler 에 넘겨지도록합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p> // load addon lang <br> Context::loadLang(_XE_PATH_.'addons/member_join_extend/lang');<br> Context::addHtmlHeader(sprintf('<script type="text/javascript"> var msg_junior_join ="%s"; var msg_check_agree ="%s";</script>',trim($addon_info->msg_junior_join),Context::getLang('msg_check_agree')));<br><br> // change module template<br> Context::addJsFile('./addons/member_join_extend/member_join_extend.js',false);<br> $addon_tpl_path = './addons/member_join_extend/tpl';<br> $addon_tpl_file = 'member_join_extend.html';<br><br><span style="font-weight: bold;"> $this->setTemplatePath($addon_tpl_path);</span><br style="font-weight: bold;"><span style="font-weight: bold;"> $this->setTemplateFile($addon_tpl_file);</span><br style="font-weight: bold;"><br></p></div>
|
sol |
2009.08.26 17:56:49 |