* @copyright Copyright(c) 2010 C-UNIT SQUARE Co.,Ltd. All Rights Reserved. * @license C-UNIT SQUARE Co.,Ltd. ------------------------------------------------------------------------*/ /** * ブロック基本クラスを呼び出す */ require_once('BlockCls.php'); class MenuCls extends BlockCls { /** * @var object モデル項目の各名前を格納した連想配列 */ protected $_arrParamName = array( 'name' => 'メニュー名', ); /** * @var string ブロック展開時に使用するテンプレート */ protected $_block_template = ''; /**---------------------------------------------------------------------- * コンストラクタ * * @param none * @return none ----------------------------------------------------------------------*/ public function __construct() { parent::init(); $this->_arrParamName = array( 'name' => $this->_objTranslation->_('MenuCls_msg0') ); } /**---------------------------------------------------------------------- * 初期化 ------------------------------------------------------------------------*/ public function init() { parent::init(); $userSession = new Zend_Session_Namespace('userinfo'); if ($userSession->user_id != '') { $strRootDir = $this->_config['saas']['root_dir']; $strTplPath = $this->_config['saas']['tpl_path']; $this->_block_template = $strRootDir . $strTplPath . '/block/menu.tpl'; } else { $this->_block_template = 'block/menu.tpl'; } } /**---------------------------------------------------------------------- * ブロック展開時に使用するテンプレートを設定する * @param string $strBlockTemplate ブロック展開時に使用するテンプレート ------------------------------------------------------------------------*/ public function set_template($strBlockTemplate) { $this->_block_template = $strBlockTemplate; } /**---------------------------------------------------------------------- * ブロックテキスト取得メイン * @param object $model Smartyテンプレート展開用オブジェクト * @return string ブロックテキスト ------------------------------------------------------------------------*/ protected function _create_main($model) { // If empty menu status then return NULL if(!isset($model['model']['status'])){ return ''; } $this->_log->start('_create_main'); // 公開中でも承認中でも無ければ空を返す switch ($model['model']['status']) { case CMS_STATUS_PUBLIC: case CMS_STATUS_APPROVAL: case CMS_STATUS_EDITING: break; default: $this->_log->end(); return ''; } // header on Menu page to use the template_header.tpl file. $model['model']['menu'] = $this->get_menu($model['model']); foreach ($model['model']['menu'] as $i => $objData) { $model['model']['menu'][$i]['link'] = $this->parse($objData['link']); } $view = new ViewMgr($this->_config); $strBlock = $view->view($this->_block_template, $model); $this->_log->end(); return $strBlock; } /**---------------------------------------------------------------------- * メニューをボタン毎に展開する * @param array $data 展開前メニューデータ * @return object メニューデータ ------------------------------------------------------------------------*/ public function get_menu($data) { $key_list = array( 'label', 'public', 'image_on', 'image_out', 'link', 'link_target', ); // 個別データを割り当てる $objDataList = array(); foreach ($key_list as $j => $key) { if (!isset($data[$key])) { $data[$key] = ''; } $valList = explode("\t", $data[$key]); foreach ($valList as $i => $val) { if (!isset($objDataList[$i])) { $objDataList[$i] = array(); } $objDataList[$i][$key] = $val; } } // 共通メニューデータをボタンに割り当てる foreach ($data as $key => $val) { foreach ($objDataList as $i => $objData) { if (!isset($objDataList[$i][$key])) { $objDataList[$i][$key] = $val; } } } // 画像取得 $objMedia = $this->createObject('media'); foreach ($objDataList as $i => $objData) { if ('' != $objData['image_on']) { $objData['image_on'] = $objMedia->get($objData['image_on']); } if ('' != $objData['image_out']) { $objData['image_out'] = $objMedia->get($objData['image_out']); } $objDataList[$i] = $objData; } return $objDataList; } }