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-2012 Magic3 Project.
12 * @license http://www.gnu.org/copyleft/gpl.html GPL License
13 * @version SVN: $Id: ec_mainWidgetContainer.php 5440 2012-12-08 09:37:39Z fishbone $
14 * @link http://www.magic3.org
16 require_once($gEnvManager->getCurrentWidgetContainerPath() . '/ec_mainBaseWidgetContainer.php');
18 class ec_mainWidgetContainer extends ec_mainBaseWidgetContainer
23 function __construct()
26 parent::__construct();
29 * ディスパッチ処理(メインコンテナのみ実行)
31 * HTTPリクエストの内容を見て処理をコンテナに振り分ける
33 * @param RequestManager $request HTTPリクエスト処理クラス
34 * @param object $param 任意使用パラメータ。そのまま_assign()に渡る
35 * @return bool このクラスの_setTemplate(), _assign()へ処理を継続するかどうかを返す。
36 * true=処理を継続、false=処理を終了
38 function _dispatch($request, &$param)
41 $cmd = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_COMMAND);
42 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
43 if (empty($task)) $task = self::DEFAULT_TOP_TASK;
44 $forward = $request->trimValueOf(M3_REQUEST_PARAM_FORWARD); // 画面遷移用パラメータ
47 $canNonMemberOrder = $this->_getConfig(photo_shopCommonDef::CF_PERMIT_NON_MEMBER_ORDER);
49 // ログインが必要な処理の場合は、ログイン状況をチェックする
51 case 'membermenu': // 会員向けメニュー
52 case 'membernotice': // 会員向けお知らせ
53 case 'memberinfo': // 会員情報変更
54 case 'changepwd': // パスワード変更
55 case 'purchasehistory': // 購入履歴
57 if (!$this->gEnv->isCurrentUserLogined()){ // ログインされていない場合
59 $this->gPage->redirect($this->gEnv->createCurrentPageUrl());
65 if (in_array($task, self::$_orderProcessAllTasks)){
66 if (empty($canNonMemberOrder)){ // 会員のみ注文が可能なとき
68 if (!$this->gEnv->isCurrentUserLogined()){ // ログインされていない場合
70 $this->gPage->redirect($this->gEnv->createCurrentPageUrl());
74 // 注文受付停止中はトップ画面へ遷移(システム管理者以外)
75 if (!$this->gEnv->isSystemAdmin() && !$this->_getConfig(photo_shopCommonDef::CF_ACCEPT_ORDER)){
76 $this->gPage->redirect($this->gEnv->createCurrentPageUrl());
82 if ($task == 'login'){
83 if ($this->gEnv->isCurrentUserLogined()){
85 // 既にログイン中のときは、会員向けメニューへ
86 $orderPage = $this->gEnv->createCurrentPageUrl() . '&task=' . self::DEFAULT_MEMBER_TASK;
87 $this->gPage->redirect($orderPage);
89 $forwardPage = $this->gEnv->createCurrentPageUrl() . '&' . $forward;
90 $this->gPage->redirect($forwardPage);
94 } else if ($task == 'order'){ // 注文処理
95 if ($this->gEnv->isCurrentUserLogined()){ // ユーザがログインしている場合(会員の場合)
96 // 注文の画面遷移(配送先入力→配送方法選択→支払い方法入力→確認)
97 //$orderPage = $this->gEnv->createCurrentPageUrl() . '&task=' . self::DEFAULT_ORDER_START_TASK;
98 $orderPage = $this->gEnv->createCurrentPageUrl() . '&task=' . self::$_orderProcessTasks[0];
99 $this->gPage->redirect($orderPage);
101 } else { // ログイン画面を表示した後、注文画面へ遷移
102 //$loginPage = $this->gEnv->createCurrentPageUrl() . '&task=login&' . M3_REQUEST_PARAM_FORWARD . '=' . urlencode('task=' . self::DEFAULT_ORDER_START_TASK);
103 $loginPage = $this->gEnv->createCurrentPageUrl() . '&task=login&' . M3_REQUEST_PARAM_FORWARD . '=' . urlencode('task=' . self::$_orderProcessTasks[0]);
104 $this->gPage->redirect($loginPage);
107 } else if ($task == 'logout'){// ログアウト処理
108 $this->gAccess->userLogout();// ログイン状態を削除
111 $this->gPage->redirect($this->gEnv->createCurrentPageUrl());
113 } else if (in_array($task, self::$_orderProcessTasks) && $task != self::$_orderProcessTasks[0]){ // 注文処理の最初のタスク以外の場合
114 // システム運用権限ありで、プレビュー指定の場合は遷移しない
115 if (!($this->gEnv->isSystemManageUser() && $cmd == M3_REQUEST_CMD_PREVIEW)){
116 // 注文書が初期化されていなければカート画面へ遷移
117 $ret = $this->_getOrderSheet($row);
119 $orderPage = $this->gEnv->createCurrentPageUrl() . '&task=cart';
120 $this->gPage->redirect($orderPage);
126 // ##### 起動タスクを変更 #####
132 // 会員規約を承認していない場合は、規約ページを表示
133 if ($task == 'regmember' && $this->getWidgetSession(photo_shopCommonDef::SK_AGREE_MEMBER, '0') == '0'){
134 $task = 'agreemember'; // 会員規約
137 // ##### タスク初期処理 #####
138 if ($task == self::$_orderProcessTasks[0]){ // 注文処理の最初のタスクの場合
139 // 注文書を初期化。戻るボタンで来た時は注文書を初期化しない。
140 $act = $request->trimValueOf('act');
141 if ($act != 'goback') $this->_initOrderSheet();
144 // ##### コンテナを起動 #####
146 case 'cart': // カート機能
147 case 'login': // 会員ログイン
148 case 'regmember': // 会員登録
149 case 'regcustomer': // 購入者情報入力
150 case 'delivery': // 配送先入力
151 case 'delivmethod': // 配送方法選択
152 case 'payment': // 支払い
153 case 'confirm': // 確認
154 case 'complete': // 手続き完了
155 case 'sendpwd': // パスワード送信
156 case 'membermenu': // 会員向けメニュー
157 case 'membernotice': // 会員向けお知らせ
158 case 'memberinfo': // 会員情報変更
159 case 'agreemember': // 会員規約表示
160 case 'changepwd': // パスワード変更
161 case 'purchasehistory': // 購入履歴
162 self::$_task = $task; // 現在のタスク
163 $this->gLaunch->goSubWidget($task);
166 //$this->SetMsg(self::MSG_APP_ERR, "画面が見つかりません");
173 * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
174 * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
176 * @param RequestManager $request HTTPリクエスト処理クラス
177 * @param object $param 任意使用パラメータ。そのまま_assign()に渡る
178 * @return string テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
180 function _setTemplate($request, &$param)
182 return 'message.tmpl.html';
187 * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
189 * @param RequestManager $request HTTPリクエスト処理クラス
190 * @param object $param 任意使用パラメータ。_setTemplate()と共有。
193 function _assign($request, &$param)
195 $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
199 case 'error': // エラー画面
201 $message = 'エラーが発生しました。もう一度最初からやり直してください。';
205 $message = 'アクセスできません';
208 $this->tmpl->addVar("_widget", "title", $title);
209 $this->tmpl->addVar("_widget", "message", $message);