OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / admin_main / include / container / admin_mainTopWidgetContainer.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_mainTopWidgetContainer.php 5796 2013-03-05 13:04:29Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 require_once($gEnvManager->getCurrentWidgetContainerPath() .    '/admin_mainBaseWidgetContainer.php');
17 require_once($gEnvManager->getCurrentWidgetDbPath() . '/admin_mainDb.php');
18
19 class admin_mainTopWidgetContainer extends admin_mainBaseWidgetContainer
20 {
21         private $db;    // DB接続オブジェクト
22         private $outputHtml;                    // HTML出力
23         private $addScript = array();
24         const DEFAULT_NAV_ID = 'admin_menu';            // メニューID
25         const TOPPAGE_IMAGE_PATH = 'toppage_image_path';                                // トップページ画像
26         const CONTEXTMENU_SCRIPT_FILE = '/cotextmenu1.0.js';                                    // コンテキストメニュー用スクリプト
27         
28         /**
29          * コンストラクタ
30          */
31         function __construct()
32         {
33                 // 親クラスを呼び出す
34                 parent::__construct();
35                 
36                 // DB接続オブジェクト作成
37                 $this->db = new admin_mainDb();
38         }
39         /**
40          * テンプレートファイルを設定
41          *
42          * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
43          * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
44          *
45          * @param RequestManager $request               HTTPリクエスト処理クラス
46          * @param object         $param                 任意使用パラメータ。そのまま_assign()に渡る
47          * @return string                                               テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
48          */
49         function _setTemplate($request, &$param)
50         {       
51                 return 'top.tmpl.html';
52         }
53         /**
54          * テンプレートにデータ埋め込む
55          *
56          * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
57          *
58          * @param RequestManager $request               HTTPリクエスト処理クラス
59          * @param object         $param                 任意使用パラメータ。_setTemplate()と共有。
60          * @param                                                               なし
61          */
62         function _assign($request, &$param)
63         {
64                 // ページがダッシュボードタイプのときはメニューを表示せずにメッセージのみ表示する
65                 if ($this->gPage->getContentType() == M3_VIEW_TYPE_DASHBOARD){
66                         // コンテキストメニューを作成(現在はダッシュボード画面のみ対応)
67                         $this->addScript = array($this->getUrl($this->gEnv->getCurrentWidgetScriptsUrl() . self::CONTEXTMENU_SCRIPT_FILE));
68                         return;
69                 }
70                 
71                 // トップレベル項目を取得
72                 $navId = self::DEFAULT_NAV_ID . '.' . $this->gEnv->getCurrentLanguage();
73                 if (!$this->db->getNavItems($navId, 0, $rows)){                 // 現在の言語で取得できないときはデフォルト言語で取得
74                         $navId = self::DEFAULT_NAV_ID . '.' . $this->gEnv->getDefaultLanguage();
75                         if (!$this->db->getNavItems($navId, 0, $rows)){         // デフォルト言語で取得できないときは拡張子なしで取得
76                                 $navId = self::DEFAULT_NAV_ID;
77                                 $this->db->getNavItems($navId, 0, $rows);
78                         }
79                 }
80                         
81                 $menuInner = '';
82                 $menuInner .= '<tr valign="top"><td>';
83                 $topMenuCount = count($rows);
84                 for ($i = 0; $i < $topMenuCount; $i++){
85                         if ($rows[$i]['ni_view_control'] == 0){         // 改行以外のとき
86                                 $topId = $rows[$i]['ni_id'];
87                         
88                                 // サブレベル取得
89                                 $this->db->getNavItems($navId, $topId, $subRows);
90                                 // 初期表示画面
91                                 if (count($subRows) > 0) $firstTask = $this->gEnv->getDefaultAdminUrl() . '?task=' . $subRows[0]['ni_task_id'];
92                                 
93                                 // メニュー外枠
94                                 $menuInner .= '<div class="ui-widget m3toppage_menu">'. M3_NL;
95                                 
96                                 // ### タイトル部 ###
97                                 // 「a」タグ
98                                 // リンク先を作成。「_」で始まるタスクはリンクを作成しない
99                                 $topLink = '#';
100                                 $linkTask = $rows[$i]['ni_task_id'];
101                                 if (strncmp($linkTask, '_', strlen('_')) != 0) $topLink = $this->gEnv->getDefaultAdminUrl() . '?task=' . $linkTask;     // 起動タスクパラメータを設定
102                         
103                                 // ヘルプの作成
104                                 $helpText = '';
105                                 $title = $rows[$i]['ni_help_title'];
106                                 if (!empty($title)){
107                                         $helpText = $this->gInstance->getHelpManager()->createHelpText($title, $rows[$i]['ni_help_body']);
108                                 }
109                         
110                                 $menuInner .= str_repeat(' ', 4);
111                                 //$menuInner .= '<a href="' . $topLink . '">' . '<span ' . $helpText . '>' . $this->convertToDispString($rows[$i]['ni_name']) . '</span></a>' . M3_NL;
112                                 $menuInner .= '<div class="ui-state-default ui-priority-primary ui-corner-tl ui-corner-tr"><span ' . $helpText . '>' . 
113                                                                 $this->convertToDispString($rows[$i]['ni_name']) . '</span></div>'. M3_NL;
114                                 
115                                 // 「ul」タグ
116                                 $menuInner .= str_repeat(' ', 4);
117                                 $menuInner .= '<ul class="ui-widget-content ui-corner-bl ui-corner-br">' . M3_NL;
118                         
119                                 // 「li」タグ
120                                 if (count($subRows) > 0){
121                                         for ($l = 0; $l < count($subRows); $l++){
122                                                 // ヘルプの作成
123                                                 $helpText = '';
124                                                 $title = $subRows[$l]['ni_help_title'];
125                                                 if (!empty($title)){
126                                                         $helpText = $this->gInstance->getHelpManager()->createHelpText($title, $subRows[$l]['ni_help_body']);
127                                                 }
128                         
129                                                 $menuInner .= str_repeat(' ', 8);
130                                                 $menuInner .= '<li ';
131                                                 $menuInner .= '><a href="';
132                                                 $menuInner .= $this->gEnv->getDefaultAdminUrl() . '?task=' . $subRows[$l]['ni_task_id'];        // 起動タスクパラメータを設定
133                                                 if (!empty($subRows[$l]['ni_param'])){          // パラメータが存在するときはパラメータを追加
134                                                         $menuInner .= '&' . M3_REQUEST_PARAM_OPERATION_TODO . '=' . urlencode($subRows[$l]['ni_param']);
135                                                 }
136                                                 $menuInner .= '" ><span ' . $helpText . '>' . $this->convertToDispString($subRows[$l]['ni_name']) . '</span></a></li>' . M3_NL;
137                                         }
138                                 }
139                                 $menuInner .= str_repeat(' ', 4);
140                                 $menuInner .= '</ul>' . M3_NL;
141                                 $menuInner .= '</div>' . M3_NL;         // メニュー外枠
142                         } else {                // 改行のとき
143                                 $menuInner .= '</td><td>';
144                         }
145                 }
146
147                 $menuInner .= '</td></tr>';
148                 $this->tmpl->addVar("_widget", "items", $menuInner);
149                 
150                 // トップページ用画像
151 /*              $imageUrl = $this->db->getSystemConfig(self::TOPPAGE_IMAGE_PATH);
152                 if (!empty($imageUrl)){
153                         if (strStartsWith($imageUrl, '/')){             // 相対パス表記のとき
154                                 $relativePath = $this->gEnv->getRelativePathToSystemRootUrl($this->gEnv->getDocumentRootUrl() . $imageUrl);
155                                 $imagePath = $this->gEnv->getSystemRootPath() . $relativePath;
156                                 $imageUrl = $this->gEnv->getRootUrl() . $relativePath;
157                         } else {                // マクロ表記のとき
158                                 $imagePath = str_replace(M3_TAG_START . M3_TAG_MACRO_ROOT_URL . M3_TAG_END, $this->gEnv->getSystemRootPath(), $imageUrl);
159                                 $imageUrl = str_replace(M3_TAG_START . M3_TAG_MACRO_ROOT_URL . M3_TAG_END, $this->gEnv->getRootUrl(), $imageUrl);
160                         }
161                         if (file_exists($imagePath)){           // 画像ファイルが存在するとき
162                                 $this->tmpl->addVar("showimage", "toppage_img", $imageUrl);
163                                 $this->tmpl->setAttribute('showimage', 'visibility', 'visible');
164                         }
165                 }*/
166                 
167                 // 管理用URL設定
168                 $this->tmpl->addVar("_widget", "admin_url", $this->gEnv->getDefaultAdminUrl());
169                 
170                 // テキストをローカライズ
171                 $localeText = array();
172                 $localeText['msg_logout'] = $this->_('Logout from system?');            // ログアウトしますか?
173                 $this->setLocaleText($localeText);
174         }
175         /**
176          * CSSファイルをHTMLヘッダ部に設定
177          *
178          * CSSファイルをHTMLのheadタグ内に追加出力する。
179          * _assign()よりも後に実行される。
180          *
181          * @param RequestManager $request               HTTPリクエスト処理クラス
182          * @param object         $param                 任意使用パラメータ。
183          * @return string                                               CSS文字列。出力しない場合は空文字列を設定。
184          */
185         function _addCssFileToHead($request, &$param)
186         {
187                 return array($this->getUrl($this->gEnv->getAdminDefaultThemeUrl()));
188         }
189         /**
190          * JavascriptファイルをHTMLヘッダ部に設定
191          *
192          * JavascriptファイルをHTMLのheadタグ内に追加出力する。
193          * _assign()よりも後に実行される。
194          *
195          * @param RequestManager $request               HTTPリクエスト処理クラス
196          * @param object         $param                 任意使用パラメータ。
197          * @return string                                               Javascriptファイル。出力しない場合は空文字列を設定。
198          */
199         function _addScriptFileToHead($request, &$param)
200         {
201                 return $this->addScript;
202         }
203 }
204 ?>