OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / admin_menu3 / include / container / admin_admin_menu3WidgetContainer.php
1 <?php
2 /**
3  * コンテナクラス
4  *
5  * PHP versions 5
6  *
7  * LICENSE: This source file is licensed under the terms of the GNU General Public License.
8  *
9  * @package    Magic3 Framework
10  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11  * @copyright  Copyright 2006-2013 Magic3 Project.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: admin_admin_menu3WidgetContainer.php 5793 2013-03-05 06:38:23Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 require_once($gEnvManager->getContainerPath() . '/baseAdminWidgetContainer.php');
17 require_once($gEnvManager->getCurrentWidgetDbPath() . '/admin_menuDb.php');
18
19 class admin_admin_menu3WidgetContainer extends BaseAdminWidgetContainer
20 {
21         protected $db;  // DB接続オブジェクト
22         const SEL_MENU_ID = 'admin_menu';               // メニュー変換対象メニューバーID
23         const TREE_MENU_TASK    = 'menudef';    // メニュー管理画面(多階層)
24         const SINGLE_MENU_TASK  = 'smenudef';   // メニュー管理画面(単一階層)
25
26         /**
27          * コンストラクタ
28          */
29         function __construct()
30         {
31                 // 親クラスを呼び出す
32                 parent::__construct();
33                 
34                 // DBオブジェクト作成
35                 $this->db = new admin_menuDB();
36         }
37         /**
38          * テンプレートファイルを設定
39          *
40          * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
41          * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
42          *
43          * @param RequestManager $request               HTTPリクエスト処理クラス
44          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
45          * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
46          */
47         function _setTemplate($request, &$param)
48         {       
49                 return 'admin.tmpl.html';
50         }
51         /**
52          * テンプレートにデータ埋め込む
53          *
54          * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
55          *
56          * @param RequestManager $request               HTTPリクエスト処理クラス
57          * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
58          * @param                                                               なし
59          */
60         function _assign($request, &$param)
61         {
62                 $act = $request->trimValueOf('act');
63                 
64                 if ($act == 'togglemenu'){              // メニュー管理画面を変更
65                         // メニュー情報を取得
66                         $ret = $this->getMenuInfo($isHier, $itemId, $row);
67                         if ($ret){
68                                 // メニュー管理画面を変更
69                                 if ($isHier){
70                                         $ret = $this->db->updateNavItemMenuType($itemId, self::SINGLE_MENU_TASK);
71                                 } else {
72                                         $ret = $this->db->updateNavItemMenuType($itemId, self::TREE_MENU_TASK);
73                                 }
74                         }
75                         if ($ret){
76                                 $this->setMsg(self::MSG_GUIDANCE, 'データを更新しました');
77                                 $replaceNew = true;                     // データ再取得
78                         } else {
79                                 $this->setMsg(self::MSG_APP_ERR, 'データ更新に失敗しました');
80                         }
81                         $this->gPage->updateParentWindow();// 親ウィンドウを更新
82                 } else {                // 初期表示の場合
83
84                 }
85                 // メニュー情報を取得
86                 $ret = $this->getMenuInfo($isHier, $itemId, $row);
87                 if ($ret){
88                         // 値を埋め込む
89                         if ($isHier){           // 階層化メニューのとき
90                                 $this->tmpl->addVar("_widget", "menu_type_tree", 'checked');            // 多階層メニュー
91                         } else {
92                                 $this->tmpl->addVar("_widget", "menu_type_single", 'checked');          // 単一階層メニュー
93                         }
94                 }
95         }
96         /**
97          * メニュー管理画面の情報を取得
98          *
99          * @param bool  $isHier         階層化メニューかどうか
100          * @param int   $itemId         メニュー項目ID
101          * @param array  $row           取得レコード
102          * @return bool                         取得できたかどうか
103          */
104         function getMenuInfo(&$isHier, &$itemId, &$row)
105         {
106                 $isHier = false;        // 多階層メニューかどうか
107                 $ret = $this->db->getNavItemsByTask(self::SEL_MENU_ID, self::TREE_MENU_TASK, $row);
108                 if ($ret){
109                         $isHier = true;
110                 } else {
111                         $ret = $this->db->getNavItemsByTask(self::SEL_MENU_ID, self::SINGLE_MENU_TASK, $row);
112                 }
113                 if ($ret) $itemId = $row['ni_id'];
114                 return $ret;
115         }
116 }
117 ?>