OSDN Git Service

ランディングページ管理画面更新。
authornaoki hirata <naoki@magic3.org>
Sat, 11 Aug 2018 07:07:09 +0000 (16:07 +0900)
committernaoki hirata <naoki@magic3.org>
Sat, 11 Aug 2018 07:07:09 +0000 (16:07 +0900)
widgets/admin_main/include/container/admin_mainLandingpageWidgetContainer.php
widgets/admin_main/include/db/admin_mainDb.php
widgets/admin_main/include/template/landingpage.tmpl.html

index 3533a92..4109654 100644 (file)
@@ -127,7 +127,7 @@ class admin_mainLandingpageWidgetContainer extends admin_mainMainteBaseWidgetCon
                $pageLink = $this->createPageLink($pageNo, self::LINK_PAGE_COUNT, $currentBaseUrl, 'selpage($1);return false;');
                
                $this->db->getLandingPageList(self::DEFAULT_LIST_COUNT, $pageNo, array($this, 'itemListLoop'));
-               if (!$this->isExistsContent) $this->tmpl->setAttribute('itemlist', 'visibility', 'hidden');// コンテンツ項目がないときは、一覧を表示しない
+               if (count($this->serialArray) == 0) $this->tmpl->setAttribute('itemlist', 'visibility', 'hidden');// コンテンツ項目がないときは、一覧を表示しない
                
                $this->tmpl->addVar("_widget", "serial_list", implode($this->serialArray, ','));// 表示項目のシリアル番号を設定
        }
@@ -145,6 +145,7 @@ class admin_mainLandingpageWidgetContainer extends admin_mainMainteBaseWidgetCon
                $newId = $request->trimValueOf('item_id');              // 新規ランディングページID
                $name = $request->trimValueOf('item_name');             // ランディングページ名
                $password = $request->trimValueOf('password');  // ページ運用者用初期パスワード
+               $visible = $request->trimCheckedValueOf('item_visible');                // 公開制御
 
                $replaceNew = false;            // データを再取得するかどうか
                if ($act == 'add'){             // 新規追加のとき
@@ -164,16 +165,23 @@ class admin_mainLandingpageWidgetContainer extends admin_mainMainteBaseWidgetCon
                        if ($this->getMsgCount() == 0){
                                $userName = $newId . self::DEFAULT_USER_NAME_SUFFIX;
                                
+                               // ランディングページのページ運用ユーザを追加
                                $ret = $this->_db->addNewLoginUser($userName, $newId, $password, UserInfo::USER_TYPE_MANAGER/*システム運用者*/, 1/*ログイン可能*/, null/*有効期間開始*/, null/*有効期間終了*/, $newSerial, 
                                                                                                                        ''/*制限ウィジェットなし*/, self::USER_TYPE_OPTION/*ページ運営者*/);
+                               if ($ret){
+                                       // ユーザ情報取得
+                                       $ret = $this->_db->getLoginUserRecordBySerial($newSerial, $row);
+                                       
+                                       // ランディングページ情報を新規追加
+                                       $ownerId = $row['lu_id'];
+                                       $ret= $this->db->updateLandingPage(0/*新規*/, $newId, $name, $visible, $ownerId, $newSerial);
+                               }
                                                                                                                                                
                                if ($ret){              // データ追加成功のとき
                                        $this->setMsg(self::MSG_GUIDANCE, $this->_('Item added.'));     // データを追加しました
                                        
                                        // 運用ログ出力
-                                       $ret = $this->_mainDb->getUserBySerial($newSerial, $row, $groupRows);
-                                       if ($ret) $loginUserId = $row['lu_id'];
-                                       $this->gOpeLog->writeUserInfo(__METHOD__, 'ユーザ情報を追加しました。アカウント: ' . $account, 2100, 'userid=' . $loginUserId . ', username=' . $name);
+                                       $this->gOpeLog->writeUserInfo(__METHOD__, 'ユーザ情報を追加しました。アカウント: ' . $account, 2100, 'userid=' . $ownerId . ', username=' . $userName);
                                        
                                        $this->serialNo = $newSerial;
                                        $reloadData = true;             // データの再読み込み
@@ -213,6 +221,7 @@ class admin_mainLandingpageWidgetContainer extends admin_mainMainteBaseWidgetCon
                        }
                } else {                // 初期状態
                        $replaceNew = true;                     // データを再取得
+                       $visible = 1;                   // 公開制御
                }
                // 表示データ再取得
                if ($replaceNew){
@@ -235,6 +244,7 @@ class admin_mainLandingpageWidgetContainer extends admin_mainMainteBaseWidgetCon
                }
                
                $this->tmpl->addVar("_widget", "name", $this->convertToDispString($name));              // ページ名
+               $this->tmpl->addVar("_widget", "visible", $this->convertToCheckedString($visible));             // 公開制御
        }
        /**
         * ランディングページIDをテンプレートに設定する
@@ -246,22 +256,17 @@ class admin_mainLandingpageWidgetContainer extends admin_mainMainteBaseWidgetCon
         */
        function itemListLoop($index, $fetchedRow, $param)
        {
-               $value = $this->convertToDispString($fetchedRow['mn_id']);
-               
-               $accessPointName = str_replace('用アクセスポイント', '', $fetchedRow['pg_name']);              // アクセスポイント名
                $row = array(
                        'index'         => $index,                      // インデックス番号
-                       'value'         => $value,                      // ランディングページID
-                       'name'          => $this->convertToDispString($fetchedRow['mn_name']),                  // ランディングページID名
-                       'access_point_name'     => $this->convertToDispString($accessPointName),
-                       'sort_order'    => $this->convertToDispString($fetchedRow['mn_sort_order']),    // ソート順
-                       'ref_count' => $this->_db->getMenuIdRefCount($value)            // ランディングページID使用数
+                       'id'            => $this->convertToDispString($fetchedRow['lp_id']),                    // ランディングページID
+                       'name'          => $this->convertToDispString($fetchedRow['lp_name']),                  // ランディングページID名
+                       'date'          => $this->convertToDispDateTime($fetchedRow['lp_regist_dt'], 0/*ロングフォーマット*/, 10/*時分*/)            // 作成日時
                );
-               $this->tmpl->addVars('id_list', $row);
-               $this->tmpl->parseTemplate('id_list', 'a');
+               $this->tmpl->addVars('itemlist', $row);
+               $this->tmpl->parseTemplate('itemlist', 'a');
                
                // 表示中項目のページサブIDを保存
-               $this->serialArray[] = $value;
+               $this->serialArray[] = $fetchedRow['lp_serial'];
                return true;
        }
 }
index 33d745c..b288466 100644 (file)
@@ -3521,5 +3521,130 @@ class admin_mainDb extends BaseDb
                $queryStr .=    'AND lp_id = ? ';
                return $this->isRecordExists($queryStr, array($id));
        }
+       /**
+        * ランディングページ情報を更新
+        *
+        * @param string $serial                シリアル番号(0のときは新規登録)
+        * @param string $id                    ランディングページID
+        * @param string $name                  名前
+        * @param bool   $visible               表示制御
+        * @param int    $ownerId               所有者ID
+        * @param int $newSerial                新規シリアル番号
+        * @return                                              true = 正常、false=異常
+        */
+       function updateLandingPage($serial, $id, $name, $visible, $ownerId, &$newSerial)
+       {
+               $now = date("Y/m/d H:i:s");     // 現在日時
+               $userId = $this->gEnv->getCurrentUserId();      // 現在のユーザ
+               $regDt = $now;          // 作成日時
+               
+               // トランザクション開始
+               $this->startTransaction();
+               
+               // 前レコードの削除状態チェック
+               $historyIndex = 0;
+               if (empty($serial)){            // 新規登録のとき
+                       $queryStr = 'SELECT * FROM _landing_page ';
+                       $queryStr .=  'WHERE lp_id = ? ';
+                       $queryStr .=  'ORDER BY lp_history_index DESC ';
+                       $ret = $this->selectRecord($queryStr, array($id), $row);
+                       if ($ret){
+                               if (!$row['lp_deleted']){               // レコード存在していれば終了
+                                       $this->endTransaction();
+                                       return false;
+                               }
+                               $historyIndex = $row['lp_history_index'] + 1;
+                       }
+               } else {                // 更新のとき
+                       // 指定のシリアルNoのレコードが削除状態でないかチェック
+                       $queryStr  = 'SELECT * FROM _landing_page ';
+                       $queryStr .=   'WHERE lp_serial = ? ';
+                       $ret = $this->selectRecord($queryStr, array(intval($serial)), $row);
+                       if ($ret){              // 既に登録レコードがあるとき
+                               if ($row['lp_deleted']){                // レコードが削除されていれば終了
+                                       $this->endTransaction();
+                                       return false;
+                               }
+                               $historyIndex = $row['lp_history_index'] + 1;
+                               
+                               // 識別ID,ページ所有者,作成日時は変更不可
+                               $id = $row['lp_id'];
+                               $ownerId = $row['lp_owner_id'];
+                               $regDt = $row['lp_regist_dt'];          // 作成日時
+                       } else {                // 存在しない場合は終了
+                               $this->endTransaction();
+                               return false;
+                       }
+                       
+                       // 古いレコードを削除
+                       $queryStr  = 'UPDATE _landing_page ';
+                       $queryStr .=   'SET lp_deleted = true, ';       // 削除
+                       $queryStr .=     'lp_update_user_id = ?, ';
+                       $queryStr .=     'lp_update_dt = ? ';
+                       $queryStr .=   'WHERE lp_serial = ?';
+                       $ret = $this->execStatement($queryStr, array($userId, $now, intval($serial)));
+                       if (!$ret){
+                               $this->endTransaction();
+                               return false;
+                       }
+               }
+               
+               // データを追加
+               $queryStr = 'INSERT INTO _landing_page ';
+               $queryStr .=  '(lp_id, lp_history_index, lp_name, lp_visible, lp_owner_id, lp_regist_dt, lp_create_user_id, lp_create_dt) ';
+               $queryStr .=  'VALUES ';
+               $queryStr .=  '(?, ?, ?, ?, ?, ?, ?, ?)';
+               $this->execStatement($queryStr, array($id, $historyIndex, $name, intval($visible), intval($ownerId), $regDt, $userId, $now));
+               
+               // 新規のシリアル番号取得
+               $queryStr = 'SELECT MAX(lp_serial) AS ns FROM _landing_page ';
+               $ret = $this->selectRecord($queryStr, array(), $row);
+               if ($ret) $newSerial = $row['ns'];
+               
+               // トランザクション確定
+               $ret = $this->endTransaction();
+               return $ret;
+       }
+       /**
+        * ランディングページ情報の削除
+        *
+        * @param array $serial                 シリアルNo
+        * @return                                              true=成功、false=失敗
+        */
+       function delLandingPage($serial)
+       {
+               $now = date("Y/m/d H:i:s");     // 現在日時
+               $user = $this->gEnv->getCurrentUserId();        // 現在のユーザ
+               
+               if (!is_array($serial) || count($serial) <= 0) return true;
+               
+               // トランザクション開始
+               $this->startTransaction();
+               
+               // 指定のシリアルNoのレコードが削除状態でないかチェック
+               for ($i = 0; $i < count($serial); $i++){
+                       $queryStr  = 'SELECT * FROM _landing_page ';
+                       $queryStr .=   'WHERE lp_deleted = false ';             // 未削除
+                       $queryStr .=     'AND lp_serial = ? ';
+                       $ret = $this->isRecordExists($queryStr, array($serial[$i]));
+                       // 存在しない場合は、既に削除されたとして終了
+                       if (!$ret){
+                               $this->endTransaction();
+                               return false;
+                       }
+               }
+               
+               // レコードを削除
+               $queryStr  = 'UPDATE _landing_page ';
+               $queryStr .=   'SET lp_deleted = true, ';       // 削除
+               $queryStr .=     'lp_update_user_id = ?, ';
+               $queryStr .=     'lp_update_dt = ? ';
+               $queryStr .=   'WHERE lp_serial in (' . implode($serial, ',') . ') ';
+               $this->execStatement($queryStr, array($user, $now));
+               
+               // トランザクション確定
+               $ret = $this->endTransaction();
+               return $ret;
+       }
 }
 ?>
index fc7767d..8f27bca 100644 (file)
@@ -99,8 +99,8 @@ $(function() {
         <td><input type="checkbox" name="item{INDEX}_selected" /></td>
            <td><div class="form-control-static m3config_item"><a href="#" onclick="editItemByMenuId('{ID}');">{ID}</a></div></td>
            <td>{NAME}</td>
+           <td>{STATUS}</td>
            <td>{DATE}</td>
-           <td>{LINK}</td>
                <td>{ADMIN_LINK}</td>
        </tr>
        </patTemplate:tmpl>