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-2011 Magic3 Project.
12 * @license http://www.gnu.org/copyleft/gpl.html GPL License
13 * @version SVN: $Id: s_jquery_headerWidgetContainer.php 4559 2012-01-03 16:26:59Z fishbone $
14 * @link http://www.magic3.org
16 require_once($gEnvManager->getContainerPath() . '/baseWidgetContainer.php');
18 class s_jquery_headerWidgetContainer extends BaseWidgetContainer
20 private $langId; // 現在の言語
21 private $initScript; // 初期化用スクリプト
22 private $autoBackButton; // 自動的に戻るボタンを表示するかどうか
23 private $headPreMobileScript; // jQueryMobileの前に読み込む必要のあるスクリプト
24 const DEFAULT_CONFIG_ID = 0;
25 const DEFAULT_TITLE = 'jQueryページ専用ヘッダ'; // デフォルトのウィジェットタイトル
26 const INIT_SCRIPT_FILE = '/init.js'; // メニュー初期化ファイル
31 function __construct()
34 parent::__construct();
39 * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
40 * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
42 * @param RequestManager $request HTTPリクエスト処理クラス
43 * @param object $param 任意使用パラメータ。そのまま_assign()に渡る
44 * @return string テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
46 function _setTemplate($request, &$param)
48 return 'index.tmpl.html';
53 * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
55 * @param RequestManager $request HTTPリクエスト処理クラス
56 * @param object $param 任意使用パラメータ。_setTemplate()と共有。
59 function _assign($request, &$param)
61 $this->langId = $this->gEnv->getCurrentLanguage();
64 $configId = $this->gEnv->getCurrentWidgetConfigId();
65 if (empty($configId)) $configId = self::DEFAULT_CONFIG_ID;
68 $targetObj = $this->getWidgetParamObjByConfigId($configId);
69 if (!empty($targetObj)){ // 定義データが取得できたとき
70 $name = $targetObj->name;// 定義名
71 $content = $targetObj->content; // タグ内容
72 $this->autoBackButton = $targetObj->autoBackButton; // 自動的に戻るボタンを表示するかどうか
74 $act = $request->trimValueOf('act');
75 if ($act == 'initscript'){ // 初期化スクリプト取得のとき
77 $initTemplate = $this->getParsedTemplateData('init.tmpl.js', array($this, 'makeInitScript'));// 初期化スクリプト
79 // 標準のテンプレート変換をキャンセルし、直接出力
81 $this->gPage->setOutputByHtml(false); // HTML出力をキャンセル
86 $titleArray = $this->gPage->getHeadSubTitle();
87 if (count($titleArray) > 0){
88 $title = $titleArray[count($titleArray) -1]['title']; // 最後に追加されたタイトルを取得
90 // タイトルが設定されていないときはページ名を取得
92 $line = $this->gPage->getPageInfo($this->gEnv->getCurrentPageId(), $this->gEnv->getCurrentPageSubId());
93 if (!empty($line) && !empty($line['pn_name'])) $title = $line['pn_name'];
96 $keyTag = M3_TAG_START . M3_TAG_MACRO_TITLE . M3_TAG_END;
97 $content = str_replace($keyTag, $this->convertToDispString($title), $content);
100 $this->initScript = $this->getUrl($this->createCmdUrlToCurrentWidget('act=initscript'));
101 // $this->headPreMobileScript = $this->getParsedTemplateData('add_head.tmpl.js', array($this, 'makeAddScript')); // jQueryMobileの前に読み込む必要のあるスクリプト
104 $this->tmpl->addVar("_widget", "content", $content);
111 * @param RequestManager $request HTTPリクエスト処理クラス
112 * @param object $param 任意使用パラメータ。そのまま_assign()に渡る
113 * @return string ウィジェットのタイトル名
115 function _setTitle($request, &$param)
117 return self::DEFAULT_TITLE;
120 * JavascriptファイルをHTMLヘッダ部に設定
122 * JavascriptファイルをHTMLのheadタグ内に追加出力する。
123 * _assign()よりも後に実行される。
125 * @param RequestManager $request HTTPリクエスト処理クラス
126 * @param object $param 任意使用パラメータ。
127 * @return string Javascriptファイル。出力しない場合は空文字列を設定。
129 function _addPreMobileScriptFileToHead($request, &$param)
131 return $this->initScript;
134 * テンプレートデータ作成処理コールバック
136 * @param object $tmpl テンプレートオブジェクト
139 function makeInitScript($tmpl)
142 if (!empty($this->autoBackButton)) $valueStr = 'true'; // 自動的に戻るボタンを表示するかどうか
143 $tmpl->addVar("_tmpl", "auto_back_button", $valueStr);
146 * JavascriptをHTMLヘッダ部に設定
148 * CSSデータをHTMLのheadタグ内に追加出力する。
149 * _assign()よりも後に実行される。
151 * @param RequestManager $request HTTPリクエスト処理クラス
152 * @param object $param 任意使用パラメータ。
153 * @return string CSS文字列。出力しない場合は空文字列を設定。
155 function _addPreMobileScriptToHead($request, &$param)
157 return $this->headPreMobileScript;
160 * テンプレートデータ作成処理コールバック
162 * @param object $tmpl テンプレートオブジェクト
165 function makeAddScript($tmpl)
167 /* $valueStr = 'false';
168 if (!empty($this->autoBackButton)) $valueStr = 'true'; // 自動的に戻るボタンを表示するかどうか
169 $tmpl->addVar("_tmpl", "auto_back_button", $valueStr);*/