7 * LICENSE: This source file is licensed under the terms of the GNU General Public License.
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
16 require_once($gEnvManager->getCurrentWidgetContainerPath() . '/admin_mainBaseWidgetContainer.php');
17 require_once($gEnvManager->getCurrentWidgetDbPath() . '/admin_mainDb.php');
19 class admin_mainTopWidgetContainer extends admin_mainBaseWidgetContainer
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'; // コンテキストメニュー用スクリプト
31 function __construct()
34 parent::__construct();
37 $this->db = new admin_mainDb();
42 * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
43 * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
45 * @param RequestManager $request HTTPリクエスト処理クラス
46 * @param object $param 任意使用パラメータ。そのまま_assign()に渡る
47 * @return string テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
49 function _setTemplate($request, &$param)
51 return 'top.tmpl.html';
56 * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
58 * @param RequestManager $request HTTPリクエスト処理クラス
59 * @param object $param 任意使用パラメータ。_setTemplate()と共有。
62 function _assign($request, &$param)
64 // ページがダッシュボードタイプのときはメニューを表示せずにメッセージのみ表示する
65 if ($this->gPage->getContentType() == M3_VIEW_TYPE_DASHBOARD){
66 // コンテキストメニューを作成(現在はダッシュボード画面のみ対応)
67 $this->addScript = array($this->getUrl($this->gEnv->getCurrentWidgetScriptsUrl() . self::CONTEXTMENU_SCRIPT_FILE));
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);
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'];
89 $this->db->getNavItems($navId, $topId, $subRows);
91 if (count($subRows) > 0) $firstTask = $this->gEnv->getDefaultAdminUrl() . '?task=' . $subRows[0]['ni_task_id'];
94 $menuInner .= '<div class="ui-widget m3toppage_menu">'. M3_NL;
98 // リンク先を作成。「_」で始まるタスクはリンクを作成しない
100 $linkTask = $rows[$i]['ni_task_id'];
101 if (strncmp($linkTask, '_', strlen('_')) != 0) $topLink = $this->gEnv->getDefaultAdminUrl() . '?task=' . $linkTask; // 起動タスクパラメータを設定
105 $title = $rows[$i]['ni_help_title'];
107 $helpText = $this->gInstance->getHelpManager()->createHelpText($title, $rows[$i]['ni_help_body']);
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;
116 $menuInner .= str_repeat(' ', 4);
117 $menuInner .= '<ul class="ui-widget-content ui-corner-bl ui-corner-br">' . M3_NL;
120 if (count($subRows) > 0){
121 for ($l = 0; $l < count($subRows); $l++){
124 $title = $subRows[$l]['ni_help_title'];
126 $helpText = $this->gInstance->getHelpManager()->createHelpText($title, $subRows[$l]['ni_help_body']);
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']);
136 $menuInner .= '" ><span ' . $helpText . '>' . $this->convertToDispString($subRows[$l]['ni_name']) . '</span></a></li>' . M3_NL;
139 $menuInner .= str_repeat(' ', 4);
140 $menuInner .= '</ul>' . M3_NL;
141 $menuInner .= '</div>' . M3_NL; // メニュー外枠
143 $menuInner .= '</td><td>';
147 $menuInner .= '</td></tr>';
148 $this->tmpl->addVar("_widget", "items", $menuInner);
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;
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);
161 if (file_exists($imagePath)){ // 画像ファイルが存在するとき
162 $this->tmpl->addVar("showimage", "toppage_img", $imageUrl);
163 $this->tmpl->setAttribute('showimage', 'visibility', 'visible');
168 $this->tmpl->addVar("_widget", "admin_url", $this->gEnv->getDefaultAdminUrl());
171 $localeText = array();
172 $localeText['msg_logout'] = $this->_('Logout from system?'); // ログアウトしますか?
173 $this->setLocaleText($localeText);
176 * CSSファイルをHTMLヘッダ部に設定
178 * CSSファイルをHTMLのheadタグ内に追加出力する。
179 * _assign()よりも後に実行される。
181 * @param RequestManager $request HTTPリクエスト処理クラス
182 * @param object $param 任意使用パラメータ。
183 * @return string CSS文字列。出力しない場合は空文字列を設定。
185 function _addCssFileToHead($request, &$param)
187 return array($this->getUrl($this->gEnv->getAdminDefaultThemeUrl()));
190 * JavascriptファイルをHTMLヘッダ部に設定
192 * JavascriptファイルをHTMLのheadタグ内に追加出力する。
193 * _assign()よりも後に実行される。
195 * @param RequestManager $request HTTPリクエスト処理クラス
196 * @param object $param 任意使用パラメータ。
197 * @return string Javascriptファイル。出力しない場合は空文字列を設定。
199 function _addScriptFileToHead($request, &$param)
201 return $this->addScript;