메뉴 건너뛰기

xe 게시판별 추가설정값 ModulePartConfig

Average Rating:
 0명 참여
Rate this page:
평점 한줄평 글쓴이 작성날짜

각 게시판의 설정 화면을 열어보면 '추가설정' 항목이 있습니다.

게시판과 연관되는 모듈의 설정값을 '추가설정'에서 지정해 줄 수 있습니다.



추가설정에 썸네일 마법사 모듈의 설정 UI 삽입하기


* 작동원리


트리거로 작동합니다.


xe/modules/board/board.admin.view.php


 /**
  * @brief display the additional setup panel
  * additonal setup panel is for connecting the service modules with other modules
  **/
 function dispBoardAdminBoardAdditionSetup() {
  // sice content is obtained from other modules via call by reference, declare it first
  $content = '';

  // get the addtional setup trigger
  // the additional setup triggers can be used in many modules
  $output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'before', $content);
  $output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'after', $content);
  Context::set('setup_content', $content);

  // setup the template file
  $this->setTemplateFile('addition_setup');
 }



위의 트리거에 의해서 개별 모듈들의 설정 UI 가 삽입됩니다. 따라서 썸네일 마법사 모듈에 트리거를 추가해야 합니다.


1. 트리거 정의

2. 설정값 정의

3. html 표현

4. 설정값 저장





1. 썸네일 마법사에 '추가 설정'에 대한 트리거를 정의해 줍니다.

xe/modules/thumbnail_wizard/thumbnail_wizard.class.php


 /**
  * Implement if additional tasks are necessary when installing
  * @return Object
  */
 function moduleInstall()
 {
  $oModuleController = getController('module');

  $oModuleController->insertTrigger('module.dispAdditionSetup', 'thumbnail_wizard', 'view', 'triggerDispThumbnail_wizardAdditionSetup', 'after');
  return new Object();
 }


 /**
  * method if successfully installed
  *
  * @return bool
  */
 function checkUpdate()
 {
  $oModuleModel = getModel('module');
  if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'thumbnail_wizard', 'view', 'triggerDispThumbnail_wizardAdditionSetup', 'after')) return true;
  return FALSE;
 }


 /**
  * Module update
  * @return Object
  */
 function moduleUpdate()
 {
  $oModuleModel = getModel('module');
  $oModuleController = &getController('module');
  if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'thumbnail_wizard', 'view', 'triggerDispThumbnail_wizardAdditionSetup', 'after'))
   $oModuleController->insertTrigger('module.dispAdditionSetup', 'thumbnail_wizard', 'view', 'triggerDispThumbnail_wizardAdditionSetup', 'after');

  return new Object(0, 'success_updated');
 }




2. 썸네일 마법사의 설정값을 정의하고 DB에서 템플릿에 필요한 설정값을 가지고 옵니다.

xe/modules/thumbnail_wizard/thumbnail_wizard.view.php


 /** 설정값을 불러옴
  * @brief Additional configurations for a service module
  * Receive the form for the form used by thumbnail_wizard
  */
 function triggerDispThumbnail_wizardAdditionSetup(&$obj)
 {
  $current_module_srl = Context::get('module_srl');
  $current_module_srls = Context::get('module_srls');

  if(!$current_module_srl && !$current_module_srls)
  {
   $current_module_info = Context::get('current_module_info');
   $current_module_srl = $current_module_info->module_srl;
   if(!$current_module_srl) return new Object();
  }
  // Get the configuration information
  $oModuleModel = getModel('module');


  if($current_module_srl)
  {
   $thumbnail_wizard_config = $oModuleModel->getModulePartConfig('thumbnail_wizard', $current_module_srl);
  }


  /*// 모듈설정에서 공통으로 저장한 설정값
  $config = $oModuleModel->getModuleConfig('thumbnail_wizard');


  // 개별 mid에 설정값이 없을 경우, 공통 설정값을 대입
  if(!$thumbnail_wizard_config->use) $thumbnail_wizard_config->use = $config->use;
  if(!$thumbnail_wizard_config->priority) $thumbnail_wizard_config->priority = $config->priority;
  if(!$thumbnail_wizard_config->is_save) $thumbnail_wizard_config->is_save = $config->is_save;
  if(!$thumbnail_wizard_config->ratio_val) $thumbnail_wizard_config->ratio_val = $config->ratio_val;*/


  Context::set('thumbnail_wizard_config', $thumbnail_wizard_config);


  // Set the template file
  $oTemplate = &TemplateHandler::getInstance();
  $tpl = $oTemplate->compile($this->module_path.'tpl', 'thumbnail_wizard_module_config');
  $obj .= $tpl;

  return new Object();
 }




3. 위에서 받아온 설정값을 html로 표시합니다. 아래의 내용은 각 게시판의 '추가 설정' 페이지에 다른 모듈의 설정값과 함께 표시됩니다.


xe/modules/thumbnail_wizard/tpl/thumbnail_wizard_module_config.html


<section class="section">
        <h1>{$lang->thumbnail_wizard} {$lang->cmd_management}</h1>

 <form action="./" method="post" id="fo_thumbnail_wizard" class="x_form-horizontal">
  <input type="hidden" name="module" value="thumbnail_wizard" />
  <input type="hidden" name="act" value="procThumbnail_wizardAdminInsertThumbnail_wizardModuleConfig" />
  <input type="hidden" name="target_module_srl" value="{$module_info->module_srl?$module_info->module_srl:$module_srls}" />
  <input type="hidden" name="success_return_url" value="{getRequestUriByServerEnviroment()}" />
   
        <div class="x_control-group">
            <label class="x_control-label">* 활성화</label>
            <div class="x_controls">
                <label class="x_inline" for="use_Y">
                    <input type="radio" name="use" value="Y"  id="use_Y" checked="checked"|cond="'Y'==$thumbnail_wizard_config->use||$thumbnail_wizard_config->use==''"> {$lang->thumbnail_wizard} 활성화
                </label>
                <label class="x_inline" for="use_N">
                    <input type="radio" name="use" value="N"  id="use_N" checked="checked"|cond="'N'==$thumbnail_wizard_config->use"> {$lang->thumbnail_wizard} 끄기
                </label>
                <br><p class="x_help-inline">{$lang->thumbnail_wizard}의 기능을 사용할 것인지 선택하세요.</p>
            </div>
        </div>


       /* 중략*/


        <div class="x_clearfix btnArea">
            <div class="x_pull-right">
                <button class="x_btn x_btn-primary" type="submit"  accesskey="s" >{$lang->cmd_save}</button>
            </div>
        </div>
    </form>

</section>




4. 설정값 저장 함수


xe/modules/thumbnail_wizard/thumbnail_wizard.admin.controller.php


 /**
  * @brief Save individual points per module
  */
 function procThumbnail_wizardAdminInsertThumbnail_wizardModuleConfig()
 {
  $module_srl = Context::get('target_module_srl');
  if(preg_match('/^([0-9,]+)$/', $module_srl)) $module_srl = explode(',', $module_srl);
  else $module_srl = array($module_srl);

  $thumbnail_wizard_config = new stdClass();
  $thumbnail_wizard_config->use = Context::get('use');

  // 기본값 지정
  if(!$thumbnail_wizard_config->use) $thumbnail_wizard_config->use = N;

  $thumbnail_wizard_config->priority = Context::get('priority');
 // if(!$thumbnail_wizard_config->priority) $thumbnail_wizard_config->priority = 'N';

  $thumbnail_wizard_config->ratio_val = Context::get('ratio_val');
  if(!$thumbnail_wizard_config->ratio_val) $thumbnail_wizard_config->ratio_val = 'N';

  $thumbnail_wizard_config->is_save = Context::get('is_save');
  if(!$thumbnail_wizard_config->is_save) $thumbnail_wizard_config->is_save = 'N';

  for($i = 0; $i < count($module_srl); $i++)
  {
   $srl = trim($module_srl[$i]);
   if(!$srl) continue;

   $output = $this->setThumbnail_wizardModuleConfig($srl, $thumbnail_wizard_config);
  }

  /*$myFile = "testFile.txt";
  $fh = fopen($myFile, 'w') or die("can't open file");
  $stringData = print_r($thumbnail_wizard_config, true);
  fwrite($fh, $stringData);
  fclose($fh);*/


  $this->setError(-1);
  $this->setMessage('success_updated', 'info');

  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispBoardAdminContent');
  $this->setRedirectUrl($returnUrl);

 }

 /**
  * Thumbnail_wizard module config setting
  * @param int $srl
  * @param object $thumbnail_wizard_config
  * @return Object
  */
 function setThumbnail_wizardModuleConfig($srl, $thumbnail_wizard_config)
 {
  $oModuleController = getController('module');
  $oModuleController->insertModulePartConfig('thumbnail_wizard', $srl, $thumbnail_wizard_config);
  return new Object();
 }



procThumbnail_wizardAdminInsertThumbnail_wizardModuleConfig() 함수는 아래의 파엘에서 액션을 정의해 주어야 html의 submit 버튼으로 실행 가능합니다.


xe/modules/thumbnail_wizard/conf/module.xml


<?xml version="1.0" encoding="utf-8"?>
<module>
    <grants />
    <permissions>
          <permission action="procThumbnail_wizardAdminInsertThumbnail_wizardModuleConfig" target="manager" />
    </permissions>
    <actions>
        <action name="procThumbnail_wizardAdminInsertThumbnail_wizardModuleConfig" type="controller" />

    </actions>
</module>



* 입력값의 유효성을 검사하기 위해 아래의 내용을 추가하여 html에 필터로 추가할 수 있습니다.

 xe/modules/thumbnail_wizard/ruleset/



2015-03-14_040944.png



제목 날짜
Star Rating 별점 위젯 업데이트 정보   2014.03.09
xe 사용자정의 정렬 활용법   file
    9
xe Thumbnail wizard 모듈 참고 자료  
zend picasa ssl conection error   file
masonry 예제  
태그 목록