protected $_taskTitleArray; // 管理下のタスク名
protected $_prevTask;
protected $_nextTask;
- const TASK_SITE = 'initwizard_site'; // サイト情報
+ const TASK_START = 'initwizard';
+ const TASK_SITE = 'initwizard_site'; // サイト情報
const TASK_ADMIN = 'initwizard_admin'; // システム管理者
+ const TASK_END = 'initwizard_end'; // 処理終了
const TASK_TITLE_SITE = 'サイト情報'; // サイト情報
const TASK_TITLE_ADMIN = '管理者'; // 管理者
+ const TASK_TITLE_END = '完了'; // 完了
/**
* コンストラクタ
$this->_mainDb = new admin_mainDb();
- $this->_taskArray = array(self::TASK_SITE, self::TASK_ADMIN); // 管理下のタスク
- $this->_taskTitleArray = array(self::TASK_TITLE_SITE, self::TASK_TITLE_ADMIN);
+ $this->_taskArray = array(self::TASK_SITE, self::TASK_ADMIN, self::TASK_END); // 管理下のタスク
+ $this->_taskTitleArray = array(self::TASK_TITLE_SITE, self::TASK_TITLE_ADMIN, self::TASK_TITLE_END);
}
/**
- * テンプレートに前処理
+ * テンプレート前処理
*
* _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
*
{
// 表示画面を決定
$task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
- if (!in_array($task, $this->_taskArray)) $task = $this->_taskArray[0];
+// if (!in_array($task, $this->_taskArray)) $task = $this->_taskArray[0];
// 前後のタスクを取得
$this->_prevTask = '';
$this->_nextTask = '';
- $taskCount = count($this->_taskArray);
- for ($i = 0; $i < $taskCount; $i++){
- if ($task == $this->_taskArray[$i]){
- if ($i > 0) $this->_prevTask = $this->_taskArray[$i -1];
- if ($i < $taskCount -1) $this->_nextTask = $this->_taskArray[$i +1];
- break;
+ if ($task == self::TASK_END){ // 初期化終了
+ // 前後タスクなし
+ } else {
+ $taskCount = count($this->_taskArray);
+ for ($i = 0; $i < $taskCount; $i++){
+ if ($task == $this->_taskArray[$i]){
+ if ($i > 0) $this->_prevTask = $this->_taskArray[$i -1];
+ if ($i < $taskCount -1) $this->_nextTask = $this->_taskArray[$i +1];
+ break;
+ }
}
}
}
// 表示画面を決定
$task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
- if (!in_array($task, $this->_taskArray)) $task = $this->_taskArray[0];
+// if (!in_array($task, $this->_taskArray)) $task = $this->_taskArray[0];
// メニュー作成
$menuHtml = '';
- $prevTask = '';
for ($i = 0; $i < count($this->_taskArray); $i++){
$url = $baseUrl . '?task=' . $this->_taskArray[$i];
$attr = '';
- if ($task == $this->_taskArray[$i]){
- $attr = ' class="active"';
- if ($i > 0) $prevTask = $this->_taskArray[$i -1];
- }
+ if ($task == $this->_taskArray[$i]) $attr = ' class="active"';
$menuHtml .= '<li' . $attr . '><a href="' . $url . '">' . $this->convertToDispString($this->_taskTitleArray[$i]) . '</a></li>';
}
$menuHtml = '<ul class="nav nav-pills">' . $menuHtml . '</ul>';
$this->tmpl->addVar("_widget", "menu_items", $menuHtml);
// 前後エントリー移動ボタン
- if (!empty($prevTask)){
+ if (!empty($this->_prevTask)){
$this->tmpl->setAttribute('show_prev_button', 'visibility', 'visible');
- $this->tmpl->addVar('show_prev_button', 'task', $prevTask);
+ $this->tmpl->addVar('show_prev_button', 'task', $this->_prevTask);
+ }
+ if (!empty($this->_nextTask)){
+ $this->tmpl->setAttribute('show_next_button', 'visibility', 'visible');
+ $this->tmpl->addVar('show_next_button', 'task', '');
}
- $this->tmpl->setAttribute('show_next_button', 'visibility', 'visible');
- $this->tmpl->addVar('show_next_button', 'task', '');
}
}
?>
*/
function _dispatch($request, &$param)
{
+ // 「initwizard」タスクはディスパッチ処理のみ行う。「initwizard_xxx」タスクではbootstrapライブラリが読み込まれる。
+
// 最初の画面へ遷移
- $startPage = $this->gEnv->getDefaultAdminUrl() . '?task=' . $this->_taskArray[0];
- $this->gPage->redirect($startPage);
+ $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
+ if ($task == self::TASK_END){ // 初期化終了
+ // このクラスで処理を行う
+ } else if (in_array($task, $this->_taskArray)){
+ $this->gLaunch->goSubWidget($task);
+ return false;
+ } else {
+ $startPage = $this->gEnv->getDefaultAdminUrl() . '?task=' . $this->_taskArray[0];
+ $this->gPage->redirect($startPage);
+ }
+ return true;
+ }
+ /**
+ * テンプレートファイルを設定
+ *
+ * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
+ * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
+ *
+ * @param RequestManager $request HTTPリクエスト処理クラス
+ * @param object $param 任意使用パラメータ。そのまま_assign()に渡る
+ * @return string テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
+ */
+ function _setTemplate($request, &$param)
+ {
+ return 'initwizard.tmpl.html';
+ }
+ /**
+ * テンプレートにデータ埋め込む
+ *
+ * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
+ *
+ * @param RequestManager $request HTTPリクエスト処理クラス
+ * @param object $param 任意使用パラメータ。_setTemplate()と共有。
+ * @return なし
+ */
+ function _assign($request, &$param)
+ {
+ $task = $request->trimValueOf(M3_REQUEST_PARAM_OPERATION_TASK);
+ if ($task == self::TASK_END){ // 初期化終了
+// $title = '完了';
+ $message = '初期化完了しました';
+// $this->tmpl->addVar('_widget', 'title', $title);
+ $this->tmpl->addVar('_widget', 'message', $message);
+ }
}
}
?>
class admin_mainInitwizard_adminWidgetContainer extends admin_mainInitwizardBaseWidgetContainer
{
-
+ const DEFAULT_ADMIN_USER_ID = 1; // デフォルトの管理者ユーザID
+ const DEFAULT_PASSWORD = '********'; // 設定済みを示すパスワード
+
/**
* コンストラクタ
*/
*/
function _assign($request, &$param)
{
+ // 入力値を取得
+ $act = $request->trimValueOf('act');
+ $this->serialNo = intval($request->trimValueOf('serial')); // 選択項目のシリアル番号
+ $name = $request->trimValueOf('item_name');
+ $account = $request->trimValueOf('item_account');
+ $password = $request->trimValueOf('password');
+ $email = $request->trimValueOf('item_email'); // Eメール
+
+ $reloadData = false; // データの再読み込み
+ if ($act == 'update'){ // 行更新のとき
+ // 入力チェック
+ $this->checkInput($name, '管理者名'); // 名前
+ $this->checkLoginAccount($account, 'アカウント', true);// アカウント
+ $this->checkMailAddress($email, 'Eメール', true); // Eメール
+
+ // アカウント重複チェック
+ // 設定データを取得
+ $ret = $this->db->getUserBySerial($this->serialNo, $row, $groupRows);
+ if ($ret){
+ if ($row['lu_account'] != $account && $this->_db->isExistsAccount($account)) $this->setMsg(self::MSG_USER_ERR, 'アカウントが重複しています');
+ } else {
+ $this->setMsg(self::MSG_APP_ERR, 'データ取得に失敗しました');
+ }
+
+ // エラーなしの場合は、データを更新
+ if ($this->getMsgCount() == 0){
+ // 追加項目
+ $otherParams = array();
+ $otherParams['lu_email'] = $email; // Eメール
+ $ret = $this->_db->updateLoginUser($this->serialNo, $name, $account, $password, $this->userType, $canLogin, $startDt, $endDt, $newSerial,
+ null, null, $this->userGroupArray, $otherParams);
+ if ($ret){ // データ追加成功のとき
+ $this->setMsg(self::MSG_GUIDANCE, 'データを更新しました');
+
+ // 運用ログ出力
+ $ret = $this->db->getUserBySerial($newSerial, $row, $groupRows);
+ if ($ret) $loginUserId = $row['lu_id'];
+ $this->gOpeLog->writeUserInfo(__METHOD__, 'ユーザを更新しました。アカウント: ' . $account, 2100, 'userid=' . $loginUserId . ', username=' . $name);
+
+ $this->serialNo = $newSerial;
+ $reloadData = true; // データの再読み込み
+ } else {
+ $this->setMsg(self::MSG_APP_ERR, 'データ更新に失敗しました');
+ }
+ }
+ } else {
+ $reloadData = true;
+ }
+ if ($reloadData){ // データの再読み込み
+ // 管理者の情報取得
+ $ret = $this->_db->getLoginUserRecordById(self::DEFAULT_ADMIN_USER_ID, $row);
+ if ($ret){
+ $this->serialNo = $row['lu_serial'];
+ $name = $row['lu_name'];
+ $account = $row['lu_account'];
+ $email = $row['lu_email']; // Eメール
+ }
+ }
+ $this->tmpl->addVar("_widget", "serial", $this->serialNo);
+ $this->tmpl->addVar("_widget", "admin_name", $this->convertToDispString($name));
+ $this->tmpl->addVar("_widget", "admin_account", $this->convertToDispString($account));
+ $this->tmpl->addVar("_widget", "admin_email", $this->convertToDispString($email)); // Eメール
+ $this->tmpl->addVar("_widget", "admin_password", self::DEFAULT_PASSWORD);// 入力済みを示すパスワードの設定
+ $this->tmpl->addVar("_widget", "admin_password2", self::DEFAULT_PASSWORD);// 入力済みを示すパスワードの設定
}
}
?>
// 親クラスを呼び出す
parent::__construct();
- $this->permitTask = array('test_', 'initwizard_'); // 実行許可タスク
+ $this->permitTask = array('test', 'initwizard'); // 実行許可タスク
}
/**
* ディスパッチ処理(メインコンテナのみ実行)
break;
default:
foreach ($this->permitTask as $taskStart){
- if (strStartsWith($task, $taskStart)){ // 「taskA_」パターン
- $this->gLaunch->goSubWidget($task);
- return false;
- } else if (strncmp($task, $taskStart, strlen($taskStart) -1)){ // 「taskA」パターン
- $this->gLaunch->goSubWidget($task);
+ if (strStartsWith($task, $taskStart)){ // 「taskA」「taskA_」パターン
+ $this->gLaunch->goSubWidget($taskStart);
return false;
}
}
--- /dev/null
+/**
+ * 表示データ作成用テンプレート(patTemplate)
+ *
+ * LICENSE: This source file is licensed under the terms of the GNU General Public License.
+ *
+ * @package Magic3 Framework
+ * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
+ * @copyright Copyright 2006-2013 Magic3 Project.
+ * @license http://www.gnu.org/copyleft/gpl.html GPL License
+ * @version SVN: $Id$
+ * @link http://www.magic3.org
+ */
+<patTemplate:tmpl name="_widget">
+<div id="main-content">
+{MENU_ITEMS}
+<!-- m3:ErrorMessage -->
+<div class="page-header">
+<h2>{TITLE}</h2>
+</div>
+{MESSAGE}
+</div>
+</patTemplate:tmpl>
* @link http://www.magic3.org
*/
<patTemplate:tmpl name="_widget">
+<script type="text/javascript" src="{SCRIPT_URL}/md5.js"></script>
<script type="text/javascript">
//<![CDATA[
-$(function(){
- // 前後エントリー移動ボタン
- <patTemplate:tmpl name="show_prev_button" visibility="hidden">m3SetPrevButtonEvent(goPrev, '{TASK}');</patTemplate:tmpl>
- <patTemplate:tmpl name="show_next_button" visibility="hidden">m3SetNextButtonEvent(goNext);</patTemplate:tmpl>
-});
+// 前の画面へ遷移
function goPrev(task){
- document.main.entryid.value = ''; // 値キャンセル
document.main.task.value = task;
- document.main.act.value = 'edit';
document.main.submit();
}
+// 次の画面へ遷移
function goNext(){
- document.main.entryid.value = ''; // 値キャンセル
-// document.main.task.value = 'entry_detail';
+ // 入力データ編集中のページ離脱を許可
+ m3CancelSafeContentEdit();
+
document.main.act.value = 'update';
+ if (document.main.item_password.value != '********') document.main.password.value = hex_md5(document.main.item_password.value);
document.main.submit();
}
+$(function(){
+ // 編集中の離脱を防止
+ m3SetSafeContentEdit();
+
+ // 前後エントリー移動ボタン
+ <patTemplate:tmpl name="show_prev_button" visibility="hidden">m3SetPrevButtonEvent(goPrev, '{TASK}');</patTemplate:tmpl>
+ <patTemplate:tmpl name="show_next_button" visibility="hidden">m3SetNextButtonEvent(goNext);</patTemplate:tmpl>
+});
//]]>
</script>
<div id="main-content">
{MENU_ITEMS}
<!-- m3:ErrorMessage -->
<div class="page-header">
-<!--<h1>サイト情報</h1>-->
+<!--<h1>管理者</h1>-->
</div>
-<form method="post" name="main" role="form" class="form-horizontal">
-<input type="hidden" name="task" value="entry_detail" />
+<form method="post" name="main" role="form" class="form-horizontal" autocomplete="off">
+<input type="hidden" name="task" value="initwizard_admin" />
<input type="hidden" name="act" />
-<input type="hidden" name="entryid" value="{ENTRYID}" />
+<input type="hidden" name="serial" value="{SERIAL}" />
+<input type="hidden" name="password" />
+<div class="form-group">
+<label for="admin_name" class="col-lg-3 control-label">管理者名</label>
+<div class="col-lg-4"><input id="admin_name" name="admin_name" type="text" class="form-control textbox-imeoff" size="30" maxlength="30" value="{ADMIN_NAME}" /></div>
+</div>
<div class="form-group">
-<label for="site_name" class="col-lg-2 control-label">サイト名</label>
-<div class="col-lg-4"><input id="site_name" name="site_name" type="text" class="form-control textbox-imeoff" size="30" maxlength="30" value="{SITE_NAME}" /></div>
+<label for="admin_account" class="col-lg-3 control-label">アカウント</label>
+<div class="col-lg-4"><input id="admin_account" name="admin_account" type="text" class="form-control textbox-imeoff" size="30" maxlength="30" value="{ADMIN_ACCOUNT}" /></div>
</div>
<div class="form-group">
-<label for="site_email" class="col-lg-2 control-label">Eメール</label>
-<div class="col-lg-4"><input id="site_email" name="site_email" type="text" class="form-control textbox-imeoff" size="30" maxlength="30" value="{SITE_EMAIL}" /></div>
+<label for="admin_password" class="col-lg-3 control-label">パスワード</label>
+<div class="col-lg-4"><input id="admin_password" name="admin_password" type="password" class="form-control textbox-imeoff" size="30" maxlength="30" value="{ADMIN_PASSWORD}" /></div>
</div>
<div class="form-group">
-<label for="site_description" class="col-lg-2 control-label">サイト説明</label>
-<div class="col-lg-6"><textarea id="site_description" name="site_description" class="form-control" />{SITE_DESCRIPTION}</textarea></div>
+<label for="admin_password2" class="col-lg-3 control-label">パスワード(確認)</label>
+<div class="col-lg-4"><input id="admin_password2" name="admin_password2" type="password" class="form-control textbox-imeoff" size="30" maxlength="30" value="{ADMIN_PASSWORD2}" /></div>
</div>
<div class="form-group">
-<label for="site_keyword" class="col-lg-2 control-label">検索キーワード</label>
-<div class="col-lg-6"><textarea id="site_keyword" name="site_keyword" class="form-control" />{SITE_KEYWORD}</textarea></div>
+<label for="admin_email" class="col-lg-3 control-label">Eメール</label>
+<div class="col-lg-4"><input id="admin_email" name="admin_email" type="text" class="form-control textbox-imeoff" size="30" maxlength="30" value="{ADMIN_EMAIL}" /></div>
</div>
</form>
</div>
}
// 次の画面へ遷移
function goNext(){
+ // 入力データ編集中のページ離脱を許可
+ m3CancelSafeContentEdit();
+
document.main.act.value = 'update';
document.main.submit();
}
$(function(){
+ // 編集中の離脱を防止
+ m3SetSafeContentEdit();
+
// 前後エントリー移動ボタン
<patTemplate:tmpl name="show_prev_button" visibility="hidden">m3SetPrevButtonEvent(goPrev, '{TASK}');</patTemplate:tmpl>
<patTemplate:tmpl name="show_next_button" visibility="hidden">m3SetNextButtonEvent(goNext);</patTemplate:tmpl>
<input type="hidden" name="task" value="initwizard_site" />
<input type="hidden" name="act" />
<div class="form-group">
-<label for="site_name" class="col-lg-2 control-label">サイト名</label>
+<label for="site_name" class="col-lg-3 control-label">サイト名</label>
<div class="col-lg-4"><input id="site_name" name="site_name" type="text" class="form-control textbox-imeoff" size="30" maxlength="30" value="{SITE_NAME}" /></div>
</div>
<div class="form-group">
-<label for="site_email" class="col-lg-2 control-label">Eメール</label>
+<label for="site_email" class="col-lg-3 control-label">Eメール</label>
<div class="col-lg-4"><input id="site_email" name="site_email" type="text" class="form-control textbox-imeoff" size="30" maxlength="30" value="{SITE_EMAIL}" /></div>
</div>
<div class="form-group">
-<label for="site_description" class="col-lg-2 control-label">サイト説明</label>
+<label for="site_description" class="col-lg-3 control-label">サイト説明</label>
<div class="col-lg-6"><textarea id="site_description" name="site_description" class="form-control" />{SITE_DESCRIPTION}</textarea></div>
</div>
<div class="form-group">
-<label for="site_keyword" class="col-lg-2 control-label">検索キーワード</label>
+<label for="site_keyword" class="col-lg-3 control-label">検索キーワード</label>
<div class="col-lg-6"><textarea id="site_keyword" name="site_keyword" class="form-control" />{SITE_KEYWORD}</textarea></div>
</div>
</form>